fix(m3u): stabilise guide row identity, seed the sidebar group and provide translations in every player fixture

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
4grayandClaude Fable 5.1 committed 2026-09-06 14:31:04 +02:00
1 parent 465c5dc5d1
commit cb599c7bb4
17 files changed
+295 -68

No files matched your search

+15
View File
@@ -1138,6 +1138,21 @@ in the main process (manual mappings first, then the metadata lookup shared
with the sidebar) and return programmes keyed by the requested key. Queries
are unscoped, like the timeline.
Row ids are not channel ids: `createChannel` falls back to the stream URL for
an entry without an explicit id, so one stream listed in two groups yields two
channels sharing an id. The adapter numbers repeats within the scope (`<id>`,
`<id>#1`, …) — the guide keys its programme, coverage and selection maps by
row id, so without that both copies lit up as playing and activating either
one played the first. The active channel marks the FIRST row carrying its id,
and `activate(rowId)` resolves the row back to its own channel. Opening the
guide mirrors the sidebar view (`applyInitialScope`): favorites stays
favorites, and the groups view opens on the group the sidebar's rail is
SHOWING — forwarded from `GroupsViewComponent.selectedGroupChange` through the
channel list container and `app-sidebar` into
`VideoPlayerComponent.selectedSidebarGroup` — because the user may have
browsed away from the playing channel's group before opening the guide. The
playing channel's group is the fallback, then `all`.
Guide mode is host layout, not an overlay: `VideoPlayerComponent.guideOpen`
hides the sidebar and the timeline, renders the guide, and CSS reflows the
untouched `app-web-player-view` into a 128 px docked strip