mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-09 01:16:15 -08:00
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>