Skip to content

Stash v0.5.3

Choose a tag to compare

@github-actions github-actions released this 22 Apr 22:59
· 1602 commits to master since this release

feat: 0.5.3 — Album art for Stash Discover downloads

Fixes the "20 tracks at the bottom of Stash Discover have no album art"
bug. Every track downloaded by the Discovery pipeline since the feature
shipped was at risk of landing without art, and the failure rate spiked
for niche genres (ambient, modern-classical, small-label electronic)
whose YouTube uploads often surface as plain video renderers instead of
music renderers — so YouTube Music's search response returns no
thumbnail, and the existing persistMatchMetadata pass writes null into
album_art_url.

Three changes:

Primary path — DownloadManager.persistMatchMetadata now falls through
a three-tier chain when a match has no YouTube thumbnail: (1) Last.fm
track.getInfo for canonical album art keyed on (artist, title), often
higher quality than a YouTube still anyway; (2) deterministic
https://i.ytimg.com/vi//hqdefault.jpg when we at least have a
video id; (3) null as before. Last.fm's "no image" placeholder (the
star-logo hash) is filtered so we never write a visibly-broken URL.

Error-handling upgrade — fillMissingMetadata failures are logged with
the exception class + message instead of a silent warning. When the
failure was caused by the UNIQUE constraint on youtube_id (two
Discovery candidates resolving to the same compilation video), we now
fall back to a new art-only DAO method so the album cover still lands
even if youtube_id can't be claimed.

Backfill — new ArtBackfillWorker repairs already-downloaded tracks
whose art was missed by the original match. Runs once per install on
launch (WorkManager KEEP policy, idempotent on re-launch), queries for
every is_downloaded=1 track with null album_art_url and a real
(artist, title), tries Last.fm first and falls back to the YouTube
thumbnail when a youtube_id is present. Verified: 18 of 20 broken
tracks backfilled in ~9 seconds on the test device. The 2 remaining
tracks legitimately aren't in Last.fm's catalog AND have null
youtube_id (Discovery stub path), so neither fallback can resolve them
— they stay null until they're re-matched.

Scope does not include the 306-entry Discovery backlog analysis or
the 100%-Last.fm Stash Discover redesign — both follow in a separate
release to keep this verify-in-the-field small.


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.5.2...v0.5.3