diff options
Diffstat (limited to 'CLAUDE.md')
| -rw-r--r-- | CLAUDE.md | 15 |
1 files changed, 12 insertions, 3 deletions
@@ -123,7 +123,7 @@ downloaded at once, Facebook videos are supported, the library ranks shows by th `FeedArchiveWalker` following RFC 5005 `prev-archive` pages to fetch a back catalogue. A drip release always enqueues and deliberately bypasses the rule engine. - **Track 3, simple skip — done.** Manual per-show intro/outro offsets through - `PlaybackProgress`, and Podcasting 2.0 chapters: `ChapterParser`, a chapter list in the player, + `PlaybackProgress`, and Podcasting 2.0 chapters: `ChapterParser`, a chapter list in the episode screen's overflow menu, and opt-in skipping of breaks the publisher marked `toc: false`. Nothing is guessed from chapter titles. @@ -412,7 +412,7 @@ by default and correct; it is simply waiting for a publisher who marks breaks. - **A timestamped link shared in starts playing there.** `WatchLink` parses the `t`, the repository stores it as the position, and the share activity hands the episode to - `MainActivity.playIntent` so the app opens on the player already playing -- the point being + `MainActivity.playIntent` so the app opens on that episode's screen already playing -- the point being to move between YouTube and Listen without hunting for your place. Re-sharing a video already in the library updates its position and unplays it, which is the case that was broken: the insert ignores a clashing guid, so every share after the first silently did @@ -467,6 +467,15 @@ by default and correct; it is simply waiting for a publisher who marks breaks. ## Things a future session should know +- **The episode screen is the player; there is no separate player screen** (merged 2026-10-19). + Opening an episode puts you in its transport at the stored position, and pressing play changes + nothing about the layout. Playback state still has one owner, `PlayerViewModel`; the screen + only reads `nowPlaying` and asks it to start, pause or seek. The now-playing bar opens the + playing episode's screen, and steps aside on that screen. Speed is a chip (`SpeedChoices.OFFERED` + is 1.0/1.1/1.25/2.0); a show stored at 1.5 or 1.75 keeps playing at it, the chip just names it. + Secondary actions and chapters are in the `⋮` menu, whose contents `EpisodeMenu` decides, and + the description shows ~two lines (`DescriptionPreview`) with the rest on tap. + - **Framework adapters are excluded from coverage, as of 2026-09-26.** The gate had been overridden eight times, every one a class whose whole body is a call into ExoPlayer, Media3, Room, WorkManager or Chaquopy. The last few overrides were perverse: pulling decisions *out* @@ -544,7 +553,7 @@ by default and correct; it is simply waiting for a publisher who marks breaks. - **A video episode can be handed off to its own site at the current position**, and a link shared *in* with a timestamp starts there. `WatchLink` does both, and is pure so every URL shape is pinned -- an unrecognised one fails silently, as a link that starts from the - beginning. The button lives on the episode screen as well as the player, deliberately: an + beginning. The action lives in the episode screen's overflow menu, deliberately: an episode that cannot be fetched never starts playing, and that is exactly when watching it elsewhere is the point. |
