summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-10-28 07:21:20 +0000
committerPeter Stone <thepeterstone@gmail.com>2026-10-28 07:21:20 +0000
commitb6112749708cced3c9f0d1dd7fb782214cc42e41 (patch)
treed642861c862dfe025f14624de8ca376c5d062314 /server
parent114c15b27b01c47de212e280923bc6d35b8dfa4f (diff)
Library rows offer the newest waiting episode, and the car sorts like the phone
Three things Peter reported about the podcast list. **A slow-drip show sorted on episodes it was hiding.** The library's count and its sort key were computed from every unplayed, unqueued episode, released or not, so New Yorker Fiction ranked near the top on a brand-new episode drip had not handed out yet -- a show with nothing visible sitting above shows with something to hear. Both halves now apply the same released-set the show screen shows. The count was wrong in the same way and for the same reason, so it moves with it. **The row now names the one episode you would actually play**, under the show's name and in a quieter style, with the same Play, Queue and Download controls the episode list offers. The show stays the focus: this is a list of shows, and an episode offering different actions depending on which screen you found it on would be two features wearing one name. `observeNewestWaiting` sits beside `observeAll` because the two must agree on what "waiting" means -- a row that offered an episode the count excludes would be offering something the show claims not to have. **Android Auto lists shows in the library's order now.** It was sorted, but alphabetically, which is a different order from the phone's and so reads as no order at all. `getBrowsable` is gone rather than reordered: the callback reads `observeAll` directly, so there is one definition of what the library contains and what order it is in, and the car cannot drift from the phone again. Alphabetical was also wrong on its own merits -- the car hides played episodes, so a show you are caught up on browses as an empty list, and burying the ones with something to hear among them is exactly what a driver can do nothing about at a traffic light. Pinned by `MediaBrowseTest.theCarListsShowsNewestWaitingFirst`, which walks the real session protocol and failed on alphabetical order before the change, five new drip cases and five newest-waiting cases in `LibraryOrderTest` against a real database, and `LibraryRowTest`, which drives the row as a composable because a row offering the wrong episode's controls looks exactly like one offering the right episode's. `LibraryScreen.kt` split rather than relaxing detekt again, same call as `Screens.kt`: the row and its parts are now `SubscriptionRow.kt`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018AwnALZL6bD4VBtATDVv3B
Diffstat (limited to 'server')
0 files changed, 0 insertions, 0 deletions