Two things went wrong under us since v0.9.102, and both are fixed here. Spotify changed its web player, and a sync quietly stopped storing Daily Mixes, Discover Weekly and Release Radar. And the YouTube path, which resolved a track in twenty seconds on a bad day, now does it in about one. The rest of this release is the backlog we cleared along the way: Save Data doing what it says, KuGou lyrics, the Liked tab order, the shuffle queue, cold-start resume, Android Auto's Liked Songs, and black album art.
Spotify
- Daily Mixes and Release Radar are back (#471). Spotify rotated the home feed's query and its playlist cards stopped naming their owner, so a sync stored none of your mixes. Every Spotify query now re-reads its key from the live web player the moment Spotify retires one, so the next rotation heals itself without an app update. Run a sync from the Sync tab; the mixes appear in the Sync tab list, where you opt them in.
- The client version is read from the live web player again. Spotify moved it; we send the real one instead of a pinned fallback.
YouTube streaming
- About a second, not twenty. Stash mints its own proof-of-origin tokens on the device, so InnerTube URLs pass YouTube's streaming wall instead of dying after the first megabyte. Two Apple fallback clients join the walk, and the client that last served goes first.
- A gated URL moves on, not out. When a client hands back a URL that will not serve the whole track, the walk tries the next client instead of giving up.
- The slow fallback never holds up a win. When InnerTube answers, playback starts at once; yt-dlp joins late and is never waited for.
- The fast lane runs alongside lossless, not after it. YouTube and JioSaavn resolve in parallel with the lossless rungs and are used only when lossless misses.
- Search previews take the fast lane only, so browsing never spends a yt-dlp run.
Save Data and the Lossless switch
- Save Data means what it says. With it on, streaming takes the lowest lossless tier (CD quality) and, on the YouTube path, the lowest quality YouTube offers.
- The "Lossless" switch (formerly "Lossless downloads") governs streaming as well as downloads: with it off, streaming never touches Qobuz or ARCOD, and a connected Qobuz account is no longer mistaken for a dead one on a lossy reply.
Lyrics
- KuGou joins as a synced-lyrics source, between LRCLIB and YouTube Music, with KuGou's own recommendation preferred over third-party uploads.
- Credit lines are trimmed, never lyrics: a line that merely contains a colon stays on the sheet.
Player and library
- Save keeps an album or playlist in your library without downloading it (#304).
- The Liked tab sorts by when you liked a song (#455).
- The queue sheet shows the shuffle order while shuffle is on (#468).
- A cold start shows your last session paused, and a track played from Search can resume like any other (#462).
- Black album art is gone. YouTube thumbnails use the size YouTube always serves, stored URLs are migrated, and Now Playing shows a placeholder rather than a black tile when art is missing.
Android Auto
- One Liked Songs entry in the car, and tapping a row queues exactly the rows the car listed.
Lossless relay
- A preview reply retires the track, not the account. An account marked dead gets another chance after six hours, and the daily cap is 1000 per account.
Under the hood
The player controller reconnects when the app returns to the foreground. Qobuz search asks every term at once and reads answers in priority order. A warm-up that skips can no longer poison the next tap. The unit-test baseline is fully green again, and this release was the first to go through a multi-agent review before tagging; its one finding, a lyrics trim that could cut a song's opening, is fixed above.
Contributors
@ParaliyzedEvo: the update notification's download link opens in the browser as intended (#469), and album buttons in Library navigate to remote albums (#470). Thank you.
Known issues
- A YouTube track that no client will serve directly still takes the slower yt-dlp path.
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.
Full Changelog: v0.9.102...v0.9.103