diff options
| author | Claude <noreply@anthropic.com> | 2026-09-21 19:18:56 +0000 |
|---|---|---|
| committer | Claude <noreply@anthropic.com> | 2026-09-21 19:18:56 +0000 |
| commit | 4c99649d4fdc77334f749c68b81c33a2fcb6d36f (patch) | |
| tree | 4c9b2432f1ea1b70b625ba0ba0e93192490bcc6a /.gitignore | |
| parent | 42fce8b0293f78e8cf9f60a0bf2c4cd1bd010a5a (diff) | |
Fix a queue bug that deleted episodes, and delete dead DAO methods
Review found a data-losing bug. advance() drops the head of the queue, but
play() never put the played episode there. Play something from a show list,
let it finish, and advance dropped whatever was actually at the head -- a
different episode, removed from the queue having never been played.
The fix is an invariant rather than a special case: anything played becomes
the head, so advance always drops the episode that just finished. playNow()
does that, play() calls it, and the tests name the scenario.
Two DAO methods had no caller -- getQueue, superseded by observeQueue, and
observeUnplayed, written for a screen that was never built. Deleted. Room
generates an implementation for each, so they were not free.
The reachability guard now covers DAO methods too, which is the shape that
bit FeeDreader: three superseded methods sat undetected until a manual audit.
Interfaces need looser matching than objects, since a call's receiver varies
by site and a @Transaction default method calls its siblings unqualified, so
it matches both forms and errs toward "called" -- a false alarm costs more
attention than a missed one.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018AwnALZL6bD4VBtATDVv3B
Diffstat (limited to '.gitignore')
0 files changed, 0 insertions, 0 deletions
