mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-10 18:36:15 -08:00
chore(coverage): move shared-portals to Tier C, fix stale doc references
The Tier A gate failed in CI because deleting the dead epg-view and live-epg-panel components removed the only specs in libs/ui/shared-portals. The lib now contains a single type-only interface (LiveEpgPanelSummary), so there is no runtime code to unit test; reclassify it to Tier C with a documented reason, matching the gate's own guidance. Also update remaining doc references to the deleted components in docs/architecture/stalker-epg.md, iptvnator-ui-guidelines.md and CLAUDE.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f704993f62
commit
ec0f9bc3d0
4 files changed
+17
-20
No files matched your search
@@ -251,7 +251,7 @@ This is an Nx monorepo with the following structure:
|
||||
- **ui/playback** - Player UI (video/audio players)
|
||||
- **ui/pipes** - Angular pipes
|
||||
- **ui/remote-control** - Remote-control UI pieces
|
||||
- **ui/shared-portals** - Portal-related UI components
|
||||
- **ui/shared-portals** - Shared portal types (`LiveEpgPanelSummary`)
|
||||
- **ui/styles** - Shared styles/theme
|
||||
- **workspace/{shell,dashboard}** - Workspace shell (layout/navigation) and dashboard
|
||||
|
||||
|
||||
@@ -28,10 +28,10 @@ Use it when changing existing views or introducing new list-based UI in the work
|
||||
`libs/ui/components/src/lib/channel-list-container/channel-list-item/channel-list-item.component.html`
|
||||
- Channel row styles:
|
||||
`libs/ui/components/src/lib/channel-list-container/channel-list-item/channel-list-item.component.scss`
|
||||
- Shared EPG pane:
|
||||
`libs/ui/shared-portals/src/lib/epg-view/epg-view.component.html`
|
||||
- Shared EPG pane styles:
|
||||
`libs/ui/shared-portals/src/lib/epg-view/epg-view.component.scss`
|
||||
- Shared EPG timeline:
|
||||
`libs/ui/epg/src/lib/epg-timeline/epg-timeline.component.html`
|
||||
- Shared EPG timeline styles:
|
||||
`libs/ui/epg/src/lib/epg-timeline/epg-timeline.component.scss`
|
||||
- Shared list selection style:
|
||||
`apps/web/src/nav-list.scss`
|
||||
- Theme tokens:
|
||||
|
||||
@@ -14,7 +14,7 @@ Stalker now uses two EPG paths with different purposes:
|
||||
|
||||
- The active channel EPG panel uses `get_epg_info` as a bulk endpoint, fetches a
|
||||
7-day window once per playlist session, caches programs by channel id, and
|
||||
renders the selected channel through the shared `app-epg-list` component.
|
||||
renders the selected channel through the shared `app-epg-timeline` component.
|
||||
- Channel rows no longer send preview EPG requests during initial category load.
|
||||
They stay empty until bulk EPG has been fetched once, then derive their
|
||||
current program and progress bar from the cached bulk map.
|
||||
@@ -39,7 +39,7 @@ date-navigator UI used in the M3U/Xtream flows.
|
||||
│ │ ensureBulkItvEpg(168) │
|
||||
│ │ selectedItvEpgPrograms() │
|
||||
│ ▼ │ │
|
||||
│ current program preview ├── bulk hit → app-epg-list │
|
||||
│ current program preview ├── bulk hit → app-epg-timeline │
|
||||
│ after first bulk load └── empty/unsupported → short fallback │
|
||||
└────────────────────────────────────────────────────────────────────────────┘
|
||||
│ │
|
||||
@@ -166,7 +166,7 @@ Key mapped fields:
|
||||
|
||||
### Active panel data (`get_epg_info` / fallback) → `EpgProgram`
|
||||
|
||||
The active panel uses controlled `EpgProgram[]` because `app-epg-list` filters
|
||||
The active panel uses controlled `EpgProgram[]` because `app-epg-timeline` filters
|
||||
and groups by day.
|
||||
|
||||
Normalization rules:
|
||||
@@ -183,10 +183,9 @@ Normalization rules:
|
||||
| File | Purpose |
|
||||
| -------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
|
||||
| `libs/portal/stalker/data-access/src/lib/stores/features/with-stalker-epg.feature.ts` | bulk cache and fallback handling |
|
||||
| `libs/portal/stalker/feature/src/lib/stalker-live-stream-layout/stalker-live-stream-layout.component.ts` | active-channel EPG loading and controlled `app-epg-list` wiring |
|
||||
| `libs/portal/stalker/feature/src/lib/stalker-live-stream-layout/stalker-live-stream-layout.component.ts` | active-channel EPG loading and controlled `app-epg-timeline` wiring |
|
||||
| `libs/portal/stalker/feature/src/lib/stalker-live-stream-layout/stalker-live-stream-layout.component.html` | active panel template |
|
||||
| `libs/portal/stalker/feature/src/lib/stalker-collection-channels-list/stalker-collection-channels-list.component.ts` | row preview loading |
|
||||
| `libs/ui/shared-portals/src/lib/epg-list/epg-list.component.ts` | shared controlled EPG list with date navigator |
|
||||
| `libs/ui/epg/src/lib/epg-timeline/epg-timeline.component.ts` | shared controlled EPG timeline with date navigator |
|
||||
|
||||
### Store API
|
||||
|
||||
@@ -210,7 +209,7 @@ playlists.
|
||||
1. User activates a live channel
|
||||
2. The component ensures playback link resolution as before
|
||||
3. The component calls `ensureBulkItvEpg(168)` on first use for the playlist
|
||||
4. `selectedItvEpgPrograms()` feeds `app-epg-list`
|
||||
4. `selectedItvEpgPrograms()` feeds `app-epg-timeline`
|
||||
5. If the selected channel has no bulk programs, the component falls back to
|
||||
`get_short_epg`
|
||||
|
||||
@@ -267,5 +266,5 @@ is available.
|
||||
## Future Enhancements
|
||||
|
||||
- add cache refresh / invalidation for long-running live sessions
|
||||
- add Stalker catch-up support to `app-epg-list` once the playback flow exists
|
||||
- add Stalker catch-up support to `app-epg-timeline` once the playback flow exists
|
||||
- optionally add category-level prefetch timing metrics for bulk EPG
|
||||
@@ -184,13 +184,6 @@
|
||||
"validationCommand": "pnpm nx test ui-playback",
|
||||
"e2eTags": ["@playback", "@m3u"]
|
||||
},
|
||||
{
|
||||
"name": "shared-portals",
|
||||
"root": "libs/ui/shared-portals",
|
||||
"sourceRoot": "libs/ui/shared-portals/src",
|
||||
"validationCommand": "pnpm nx test shared-portals",
|
||||
"e2eTags": ["@xtream", "@stalker"]
|
||||
},
|
||||
{
|
||||
"name": "workspace-dashboard-data-access",
|
||||
"root": "libs/workspace/dashboard/data-access",
|
||||
@@ -277,6 +270,11 @@
|
||||
"name": "remote-control",
|
||||
"root": "libs/ui/remote-control",
|
||||
"reason": "No unit specs yet; validate through remote-control flows or add focused tests when behavior changes directly."
|
||||
},
|
||||
{
|
||||
"name": "shared-portals",
|
||||
"root": "libs/ui/shared-portals",
|
||||
"reason": "Type-only library after the dead epg-view/live-epg-panel components were removed; only the LiveEpgPanelSummary interface remains, so there is no runtime code to unit test."
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
Reference in new issue
Block a user