Stash v0.9.37 — Mixes streaming + Now Playing fixes + YT scrobbler restored
Mixes go stream-only
Every new Stash Mix discovery from Last.fm now lands as a stream-only
TrackEntity instead of an automatic download. Existing downloaded
Mix tracks are untouched and keep playing from local file — only new
discoveries change. Tap a stream-only Mix track while offline and a
Snackbar reads "Online only — connect to play this track"; the queue
auto-skips stream-only tracks silently when offline mid-playback, then
pauses with "End of offline Mix" when nothing playable remains. The
v0.9.30 streaming engine handles the actual playback; this just diverts
the discovery worker from the download pipeline.
Now Playing favorites + download finally work on streaming tracks (#105)
The v0.9.30 streaming engine had been synthesising a track id as
videoId.hashCode().toLong() for stream-only tracks, and every Now
Playing action that wrote to the DB (heart, download, notification
heart) was FK-violating against the synthetic id. Symptoms: "Couldn't
add to Liked Songs" toast, notification heart crashing the service,
download button lying with "Queued for download" while never downloading.
Now Playing actions now resolve the synthetic id to a real Room PK via
a new ensureTrackPersisted upsert, mirroring SearchDownloadCoordinator.
The notification heart is wrapped in try/catch so a future regression
can't kill the process. queueDownload returns Boolean so the toast tells
the truth. Liked Songs card count + duration display also fixed for
stream-only tracks.
YT Music play history sync restored
The "Send plays to YouTube Music" feature had silently stopped writing
to play history. Two layered InnerTube regressions: (1) YouTube migrated
the unfiltered /search response shape — searchCanonical now sends a
Songs filter param to get the legacy musicShelfRenderer shape back;
(2) YouTube's anti-bot RELOAD_PAGE challenge rejected bare WEB_REMIX
/player requests — getPlaybackTracking now includes
playbackContext.contentPlaybackContext.signatureTimestamp to pass the
freshness check. Pending plays are scrobbling end-to-end again.
SyncStatusCard relocated from Home to Sync tab (#103)
At-a-glance library stats now live at the top of the Sync tab where
library-status info naturally belongs, freeing vertical space on Home.
Pure relocation — no new fields, no removed counts.
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
- v0.9.36 — Lyrics integration (LRCLIB + sidecar + sheet) by @rawnaldclark in #100
- Relocate SyncStatusCard from Home to top of Sync tab by @rawnaldclark in #103
- Stash Mixes: stream-only for new discoveries (v0.9.37) by @rawnaldclark in #109
Full Changelog: v0.9.36...v0.9.37