summaryrefslogtreecommitdiff
path: root/CLAUDE.md
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-10-19 09:31:21 +0000
committerPeter Stone <thepeterstone@gmail.com>2026-10-19 09:31:21 +0000
commit2329c92fb989b12224a9d1b5fb22e7e0a51f1b45 (patch)
tree4cbbdca4458f448b88c0ab9ddcaf4ef73739171f /CLAUDE.md
parent10abc31e8220b39231cac31ee96109071c56c950 (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.md15
1 files changed, 12 insertions, 3 deletions
diff --git a/CLAUDE.md b/CLAUDE.md
index d3ecf9c..44189b4 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -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.