diff options
| author | Peter Stone <thepeterstone@gmail.com> | 2026-10-19 09:31:21 +0000 |
|---|---|---|
| committer | Peter Stone <thepeterstone@gmail.com> | 2026-10-19 09:31:21 +0000 |
| commit | 2329c92fb989b12224a9d1b5fb22e7e0a51f1b45 (patch) | |
| tree | 4cbbdca4458f448b88c0ab9ddcaf4ef73739171f /CLAUDE.md | |
| parent | 10abc31e8220b39231cac31ee96109071c56c950 (diff) | |
Make the episode screen the player and delete the separate player screen
Opening an episode now puts you in its transport at the stored position;
pressing play changes nothing about the layout. One primary control
(Play/Resume/Pause) with back/forward, a speed chip that opens the four
offered speeds (stored 1.5/1.75 still play and are named on the chip),
and everything secondary behind a top-bar overflow: queue, download,
played, watch, mark-older, chapters, and the publisher-copy action
(behind a dialog carrying its warning). Description shows about two
lines, the rest on tap.
The now-playing bar, library bar, queue, share receiver and nav graph
all open the playing episode's screen. PlayerViewModel stays the single
owner of playback state; no playback decision moved into the UI.
PlayerScreen.kt and WatchButton.kt are deleted. Coverage drop, if any,
is from removing covered dead code.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018AwnALZL6bD4VBtATDVv3B
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. |
