* docs(performance): inventory the zoneless change-detection migration Plan item C6 step 2. docs/architecture/zoneless-migration.md lists the 66 production files (67 components) that still set ChangeDetectionStrategy.Eager, the ten places where a template-read plain field is written outside an Angular event, the NgZone and ChangeDetectorRef calls to remove at the flip, and the IPC, player, observer, timer and dialog paths checked as signal-safe. On Angular 22 an unset changeDetection already means OnPush, so only the explicit Eager components re-render on every tick. zoneless-migration.spec.ts in the performance harness compares the checklist with the code: a new Eager component, or a converted one left unticked, fails it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * perf(ui): make the libs/ui Eager components OnPush Plan item C6 step 3 for libs/ui/components and libs/ui/epg: eleven components (twelve with the EPG trust dialog) set ChangeDetectionStrategy.Eager and were checked on every tick, among them the always-mounted EPG progress panel the idle audit found re-rendering on every idle tick. Their template state is already signals, signal inputs, immutable dialog data or fields written from template events, so they switch to OnPush without other changes. The epg-item-description spec mutated dialog data after creation and marked only the fixture's host view; it now marks the component's own view, which OnPush requires. The libs/ui playback and remote-control components stay Eager for their own PRs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: 4gray <fourgray@proton.me> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
8.3 KiB
Agent context map
Read the row for your task before editing. For a cross-domain change, read each affected contract. This is navigation, not a request to load every linked file. Common constraints remain in AGENTS.md; Claude imports it. Repository skill frontmatter defines triggers. If your client does not discover a listed skill automatically, read its SKILL.md directly. Optional global tools are not prerequisites for reading repository contracts.
Development and maintenance
| Area / code ownership | Canonical documents | Repository skill |
|---|---|---|
| Bootstrap, project placement, dependencies, aliases and lint configuration; root Nx config and project-local project.json files | Nx boundaries, security overrides | Nx architecture |
| Angular conventions; docs and skills maintenance; local review before a pull request | Agent workflow | Use the area's skill below |
Unit, E2E, lint and coverage; tools/coverage, tools/typecheck |
Validation map | Use the area's validation section |
Performance journeys, counters, benchmark probes and the CI ratchet; apps/electron-backend-e2e/src/journeys, apps/electron-backend-e2e/src/performance, tools/performance |
Performance journeys | Read the contract directly |
Zoneless change detection, ChangeDetectionStrategy.Eager components, NgZone usage |
Zoneless migration | Read the checklist directly |
Electron entry/events/preload and CDP; apps/electron-backend |
Debugging and trace flags, Electron security | Use the available global electron skill for automation |
Releases, notes, screenshots, native assets, Linux manager metadata; tools/release |
Release pipeline, note format | Release notes, release cut |
Data, sources and networking
| Area / code ownership | Required contracts | Repository skill |
|---|---|---|
SQLite schema/startup; libs/shared/database; Electron DB events/workers/operations |
DB worker, migration ownership and tests | SQLite worker |
M3U import/state/player, XMLTV, source lifecycle, startup readiness and OS file opening; libs/m3u-state, libs/playlist, libs/epg |
M3U module, adding sources across layers | Read both contracts when adding a source |
Xtream API/store/data sources and routed views; libs/portal/xtream |
Xtream compatibility, category management, detail navigation | Xtream |
Stalker/Ministra protocol, identity, sessions and routed views; libs/portal/stalker |
Stalker portal, Stalker EPG for EPG work, store API baseline for store API changes | Stalker |
Browser runtime, HTTP proxies, redirects and backend networking; apps/web-backend, libs/shared/host-health |
PWA/self-hosting, connectivity guard, Electron security for desktop boundary changes | Read the affected runtime contract |
| Source health and selective cleanup; portal shared data access | Desktop source health, subscription expiry | Read the affected provider skill |
| Backup and restore; playlist persistence | Backup/restore, database migrations | Read the affected persistence skill |
Playback, navigation and UI
| Area / code ownership | Required contracts | Repository skill |
|---|---|---|
Web engines, controls, tracks, PiP, radio and display sleep; libs/ui/playback |
Player controls, inline playback/diagnostics/recovery | Read the contract directly |
Embedded MPV, platform engines, addon, pinned runtime and packaging; Electron native services, tools/embedded-mpv |
Native MPV, runtime build and licensing | Read the contract directly |
| Live panels, keyboard focus, grid/layout conventions; shared UI and portal views | UI guidelines, detail navigation | UI design, theme/style |
Workspace routes, title bar, switcher, collections and dashboard; libs/workspace |
Workspace shell, dashboard, collection/detail navigation | UI/theme skills for visible changes |
Remote control, playback queue, channel return and shortcuts; libs/ui/remote-control, apps/remote-control-web |
Remote control | Provider skill when queue ownership changes |
Parental lock: PIN, per-category locks, worker-side filtering; libs/services/src/lib/parental-lock, category/group dialogs, apps/electron-backend/src/app/database/parental-lock-state.ts |
Parental lock, affected provider contract | Read the affected provider skill |
Downloads, offline details, catch-up and file availability; libs/portal/downloads |
Download manager, provider contract for URL resolution | Read the affected provider skill |
VOD source discovery, factual metadata and failover; libs/portal/shared/data-access |
VOD multi-source | Xtream |
TMDB enrichment, artwork, actors and recommendations; libs/services/src/lib/tmdb |
TMDB contracts, dashboard | UI skill for rendering changes |
| Timezones, catch-up formatting and EPG display offsets | Date handling, Xtream compatibility, M3U EPG | Affected provider skill |
Website, blog and download pages; apps/website |
Website README | Use an available website skill |
Mock servers and fictional release fixtures; apps/stalker-mock-server, apps/xtream-mock-server |
Stalker mock, Xtream mock, release screenshot contract | Release-cut for release captures |
Maintenance rules
Keep unique behavior contracts in the authoritative document, procedures in a
skill or development guide, and universal constraints in AGENTS.md. Update this
map when ownership or a canonical destination changes. Preserve release skill
mirrors; do not create extra copies of other contracts for individual agents.
Use normal Markdown links for document destinations so pnpm run agents:validate
can check them. Do not add root imports for the linked documents.
The migration ledger explains how the original root instructions were accounted for. It is historical audit evidence, not another source of current runtime policy or required task context.