diff options
Diffstat (limited to 'CLAUDE.md')
| -rw-r--r-- | CLAUDE.md | 15 |
1 files changed, 15 insertions, 0 deletions
@@ -210,6 +210,21 @@ by default and correct; it is simply waiting for a publisher who marks breaks. ## Domain notes worth keeping +- **A feed's declared duration is often wrong, and not by rounding.** Radiolab publishes Grass + Apes as `00:22:05`; the file ExoPlayer opens is 29:34. The seven and a half minutes between + them are dynamically inserted ads -- the feed states the ad-free content length and the CDN + stitches in the rest -- so the error is large, systematic, and worst on exactly the shows the + midroll detector cares about. `PositionWriter` replaces the stored value with the player's + once per episode, on the position tick, via the narrow `PlaybackStateDao`. Once per episode, + not once per tick: a lookup on every tick for the length of an episode is the per-episode + work the feed-scale note below warns about. + +- **The media notification opens the app**, via `setSessionActivity` on the session. Without it + the transport buttons work and tapping the body does nothing, which reads as breakage rather + than omission. Worth knowing for diagnosis: `dumpsys notification --noredact` shows this app's + notification as `importance=2`, `sound=null`, `vibrate=null`, `category=transport` -- it is a + control surface, and it is silent. + - **Playback position is the crown jewel of the data model.** It must survive process death. Save on a timer, on pause, and on lifecycle transitions — not just on stop. - **Never assume audio.** An enclosure carries a MIME type. Video was cut from scope, but the model |
