Files
iptvnator/docs/architecture
4grayandClaude Opus 4.8 f8931f0ded refactor(epg): split the timeline into reusable modules
Address the file-size review finding and prepare for a future EPG list view by
extracting the view-agnostic pieces out of the 538-line timeline component and
411-line utils file; both are now well under the line ceiling and the shared
building blocks are re-exported from `@iptvnator/ui/epg`.

- `epg-timeline.utils.ts` (227) keeps axis/blocks/date helpers; the
  short-programme render strategy (tiers, grouping, zoom bounds) moves to
  `epg-timeline-render.util.ts` (re-exported for API compatibility).
- `epg-archive.util.ts` — pure catch-up gating (`isWithinArchiveWindow`,
  `canCatchUpProgramme`, `epgDialogActionFor`) off `when`/`startMs` primitives.
- `epg-summary.util.ts` — `EpgTimelineSummary` + collapsed-summary progress maths.
- `epg-programme-dialog.service.ts` — `EpgProgrammeDialogService`, opens the
  shared details dialog and returns the chosen action.
- `epg-timeline-scroll.controller.ts` — `TimelineScrollController` owns ribbon
  scrolling + channel-select auto-focus (with its migrated spec).

Behaviour unchanged. epg-timeline.component.ts 538→393, epg-timeline.utils.ts
411→227. Tests: ui-epg 78 (10 suites), portal-shared-ui 47, playlist-m3u 30;
lint + web build green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 16:54:24 +02:00
..