github rawnaldclark/Stash v0.9.21
Stash v0.9.21

latest releases: v0.9.99, v0.9.98, v0.9.97...
3 months ago

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

Don't miss a new Stash release

NewReleases is sending notifications on new releases.