| Age | Commit message (Expand) | Author |
| 2026-09-25 | Add single videos, make the whole episode row tappable, stamp the build | Claude |
| 2026-09-25 | Mark-older-as-played, episode details, unplayed-first sorting | Claude |
| 2026-09-25 | Sign debug builds with a shared, checked-in keystore | Claude |
| 2026-09-24 | Fix YouTube subscriptions, headphone skip, and NPR show names | Claude |
| 2026-09-23 | Add artwork, a real player screen, and queue drag-reorder | Peter Stone |
| 2026-09-24 | Ignore Kotlin's build session directory | Claude |
| 2026-09-21 | Make unsubscribe reachable, and guard view models for reachability | Claude |
| 2026-09-21 | Android Auto support, and give the car its skip-forward button | Claude |
| 2026-09-21 | Notification seek buttons, and resolve redirects to the real feed URL | Claude |
| 2026-09-21 | Fix a queue bug that deleted episodes, and delete dead DAO methods | Claude |
| 2026-09-21 | Icon actions, dark-only theme, real media metadata | Claude |
| 2026-09-21 | Pin the reported NPR page shape with a regression test | Claude |
| 2026-09-21 | Actually resolve shared links, and guard against dead code | Claude |
| 2026-09-21 | Record phase 1 state and the gate overrides in CLAUDE.md | Claude |
| 2026-09-21 | Playback controls, background workers, settings | Claude |
| 2026-09-21 | UI, wiring, and an end-to-end test against a real feed | Claude |
| 2026-09-21 | Episode downloads, with the YouTube path kept separate | Claude |
| 2026-09-21 | Playback: position persistence, completion rules, sleep timer | Claude |
| 2026-09-21 | Subscription resolution, OPML, queue ordering, retention | Claude |
| 2026-09-21 | Data layer: schema, episode matching, conditional-GET refresh | Claude |
| 2026-09-21 | Merge in-app yt-dlp: verified working end to end, Termux no longer needed | Peter Stone |
| 2026-09-21 | Embed yt-dlp via Chaquopy instead of shelling out to Termux | Claude |
| 2026-09-21 | Scaffold Listen, with a podcast-native feed parser | Claude |