diff options
| -rw-r--r-- | CLAUDE.md | 25 |
1 files changed, 25 insertions, 0 deletions
@@ -76,6 +76,14 @@ claims three separate times across these repos. touched in the same diff. Room tracks by version; a wrong migration corrupts a real, non-reproducible library. +## State + +Phase 1 is built: subscribe (share sheet, pasted URL, OPML import), refresh, download, queue, +play, variable speed, sleep timer, retention. 182 unit tests plus instrumented tests. + +**Not built yet:** everything in phase 2 — the rule engine, slow-drip subscriptions, and +intro/outro skipping. Schema fields for manual skip offsets exist but nothing reads them. + ## Domain notes worth keeping - **Playback position is the crown jewel of the data model.** It must survive process death. Save @@ -105,3 +113,20 @@ claims three separate times across these repos. - **Gradle is pinned to 8.14.3, not 9.x**, because Chaquopy 16.1.0 calls `org.gradle.util. VersionNumber`, removed in Gradle 9. Chaquopy 17 moved to AGP 9.x; going there means bumping AGP, Gradle and Chaquopy together. This is the one deliberate divergence from FeeDreader. + +## Things a future session should know + +- **The coverage gate has been overridden four times**, each recorded in the commit message. All + four are Android-framework glue that cannot execute off-device: the Chaquopy bridge, + PlaybackService, ChaquopyYouTubeSource, PlayerConnection and the two Workers. Each time the + gate fired it was a useful prompt — it drove PositionWriter onto a narrow Playhead interface + and pulled RetentionSweeper out of its Worker, both of which found or prevented real bugs. + If the exceptions keep accumulating, the honest fix is a jacoco exclusion for framework + adapters, which is a decision for Peter rather than something to slip in. + +- **Detekt config has been relaxed five times**, all documented inline in `config/detekt/detekt.yml`. + Twice the better answer was restructuring instead: `Screens.kt` was split per screen and + `ListenViewModel` was split into library and player halves rather than raising a limit again. + +- **Feeds are big.** A real subscription in testing produced 2753 episodes in one refresh. Any + per-episode work — a query in a loop, an O(n²) match — needs to be considered at that scale. |
