chore: bump versionCode 57->58, versionName 0.9.19->0.9.21
Stash 0.9.21 — Mix recommendation fixes + notification heart button.
Highlights
-
Deep Cuts unstuck. The Stash Mix discovery pipeline had a fairness
bug where one recipe's deferred-at-cap PENDING backlog could starve
other recipes' fresh candidates out of the BATCH_SIZE window. First
Listen was blocking Deep Cuts indefinitely. Fixed by pre-filtering the
PENDING fetch by under-cap recipes. -
Cap counts on-disk downloads, not stubs. Aligns the per-recipe
weekly cap with the playlist re-link path so the system can't trap
itself in a "100 intended but 0 downloaded" loop. -
Soft cross-mix dedup. When overlapping Last.fm pools left a mix
below its discovery cap, we now backfill from the shared pool rather
than ship an empty discovery section. No mix gets left empty when
pools naturally overlap. -
No more playlist flash. Removed StashDiscoveryWorker's
race-prone playlist insert; materializeMix is now the sole owner of
playlist contents. -
Discovery durations populate. New discovery downloads now write
duration_ms after the audio probe, matching the sync path's behavior.
No more 0:00 in playlist UI. -
File integrity sweep. Startup scan finds is_downloaded=1 rows
whose file vanished from disk (user delete, SAF revoke) and resets
them so the playlist UI stops surfacing ghosts. First-run cleaned 45
ghosts on the dev device. -
Notification heart button (#33). Tap the heart in the system
notification's expanded view to add/remove the currently-playing
track from Stash Liked Songs. Mirrors the in-app Now Playing heart.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
Install
Download the .apk below and open it on your Android device. If you've got a previous Stash release installed, this upgrades in place — your library, sync history, and settings are preserved.
Requires: Android 8.0 (API 26) or newer.
See the README for first-time setup.
What's Changed
- fix(mix): unstick Deep Cuts + 5 related discovery-pipeline fixes by @rawnaldclark in #45
- feat(player): heart button in notification toggles Stash Liked by @rawnaldclark in #46
Full Changelog: v0.9.18...v0.9.21