Files
iptvnator/apps
4grayandClaude Opus 5 104c6e01c8 fix(dashboard): keep each live card in its own XMLTV scope before the any-source retry
Review follow-ups on the any-source EPG fallback.

The rails asked one flat, source-less question for every live card, so with
two imported guides reusing an XMLTV id — `ard.de` is unique inside a guide,
not across imports — a card could be handed the programme the other
playlist's guide resolved. The lookup is now grouped by the source scope its
playlist declares (the channel list's rule: only an M3U playlist carries its
own guide) and the answers are namespaced by that scope, so a card only ever
reads its own. Playlists on the same guide still share one lookup, and each
group keeps the any-source retry that fixes the original bug (Greptile P1).

On a preload without the batch endpoint the retry now uses the unscoped
per-channel lookup; `getCurrentProgramForChannel` re-applies the Settings
scope, so the retry was asking the question the scoped pass had already
answered. Every other caller keeps that historical behaviour (Codex P2).

The regression E2E was rewritten around the reported case: the favourite's
own playlist declares no guide, Settings hold a global XMLTV that does not
know the channel, and the programme exists only in the guide another playlist
imported. The old fixture let the card resolve in its own playlist scope, so
it would have passed without the fallback.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-20 13:37:51 +02:00
..