mirror of
https://github.com/austinried/subtracks.git
synced 2026-11-10 15:11:58 +01:00
- Cancelling a list while its download loop was still enqueueing missed every song queued after the cancel looked. The loop now holds the lock for the whole queue, so a cancel waits for it to finish and then removes all of it. That needed the enqueue helper split into a locked entry point and a body the loop can call while already holding the lock — calling the locked one from inside the lock deadlocked, which is what hung the tests. - An empty resolved list now says so instead of doing nothing. - One song failing to enqueue no longer aborts the rest of the batch. - The artist actions resolve through the albums the artist page lists, matching what is on screen, rather than through songs.artistId, which for a guest on a compilation enqueued nothing. - Bulk actions are one `applyAction` on the repository, so the three view models and both screens stop repeating the same dispatch. - Tests: the playlist and artist resolve paths, a Running row counted as downloading, the action dispatch, and the action rule moved to a plain unit test.