Skip to content

feat(catchup): launch past Guide programmes through service-owned playback intent - #314

Merged
MrFr3di merged 23 commits into
mainfrom
catchup/305-guide-service-owned-intent
Sep 2, 2026
Merged

feat(catchup): launch past Guide programmes through service-owned playback intent#314
MrFr3di merged 23 commits into
mainfrom
catchup/305-guide-service-owned-intent

Conversation

@MrFr3di

@MrFr3di MrFr3di commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator

Refs #305, parent #184. Follows merged #304. Supersedes draft #306 only because the connector cannot perform GitHub's draft→ready GraphQL transition (fullDatabaseId wrapper bug); code/head are unchanged.

Implements the bounded Guide → service-owned catch-up launch slice while preserving the existing player/recovery/seek authorities.

Implemented through TDD Tasks 1–6:

  • PlaybackStartRequest carries provider-neutral PlaybackIntent with legacy Live source compatibility;
  • Media3 session Bundle codec preserves semantic Live/CatchupProgram/CatchupPosition fields only;
  • service recovery resolves intent for the exact candidate selected by the existing bounded recovery loop;
  • RoomPlaybackCatalog supplies persisted M3U archive resolution without a Room schema change;
  • Guide keeps original EPG bounds separate from clipped viewport geometry and maps status/current → Live, completed → CatchupProgram, future → no launch;
  • navigation stores only a bounded programme identity/start/end tuple and reconstructs PlaybackIntent at Player entry;
  • Player forwards the semantic intent into the existing service command; favorite, LAN permission and exact-origin cleartext approval remain channel/final-transport behavior.

Exact head: f7d9a3d3e4386add722362225db83fbb41e9acba.

TDD evidence: Task 6 clean RED was observed at 513e296ff4f40da902ee564c049db5a81bfb6b00, with Hosted validation failing specifically at :feature:player:compileDebugUnitTestKotlin because playerPlaybackStartRequest was intentionally absent. The GREEN exact head above passed the complete #306 exact-head gate set: Hosted validation #2079, Hosted CI contract #348, App TV lint #283, Media3 lint #104, focused API36 #453, Android TV product matrix #538, and Database migration matrix #664 (API26 + API36; first API36 attempt had an ADB boot race, rerun on the same SHA succeeded).

Because this is a fresh non-draft PR, merge remains blocked until the new PR-triggered checks on this same exact head are terminal GREEN.

No Xtream catch-up, local timeshift/DVR/VOD, new provider framework, Room migration, new player/retry/seek owner, buffer tuning, or third persistent AVD is included.

@MrFr3di
MrFr3di merged commit 2201108 into main Sep 2, 2026
23 of 25 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant