fix(dashboard): hold the hero skeleton for a live candidate's first programme

A live hero slide exists only once its channel has a programme on air.
With a live favorite as the only candidate, the skeleton went away when
history, favorites and recently added had loaded, and the live slide was
inserted when the portal or XMLTV answer arrived, shifting the rails.

DashboardLiveEpgPresenter now reports while a hero candidate awaits its
first portal or XMLTV answer, and the hero keeps its skeleton for that,
at most 2 s from its creation. Once the skeleton has gone it does not
come back.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
4grayandClaude Opus 5.5 committed 2026-10-01 21:48:01 +02:00
1 parent 9128a90cfd
commit cea85f50f0
9 files changed
+229 -13

No files matched your search

+6 -3
View File
@@ -76,9 +76,12 @@ Render rules:
3. The hero (`lib-dashboard-hero`) renders when it has at least one slide;
see [Cinematic Hero](#cinematic-hero). It shows its own skeleton while
it has no slide and any of its sources (history, favorites, Xtream
recently added) is still on its first load; dropping it earlier removed
the hero and inserted it again when a later source featured a title,
moving every rail below twice. An item enters recent history only after
recently added) is still on its first load, or a live candidate still
waits for its first programme answer (portal or XMLTV, for at most
`DASHBOARD_HERO_LIVE_ANSWER_WAIT_MS`, 2 s, from the hero's creation).
Dropping it earlier removed the hero and inserted it again when a later
source featured a title, moving every rail below twice. Once the
skeleton has gone it does not come back. An item enters recent history only after
its stream has really played (see "Recently Viewed Confirmation" in
`embedded-inline-playback.md`), so a channel that failed at once never
becomes a hero slide.