github rawnaldclark/Stash v0.9.36
Stash v0.9.36

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

Stash v0.9.36 — Lyrics integration

The missing surface
Stash had no lyrics. Now Playing showed the art, the title, the artist,
the album, the quality line, and the playback controls — but nothing
to read along with. Every FOSS reference player in the same space
(InnerTune, ViMusic, RiMusic, Symfonium) has lyrics; Stash's omission
was felt. v0.9.36 fixes that.

How it works
Every successful download — yt-dlp or lossless — now triggers a
LRCLIB fetch in the background. LRCLIB (lrclib.net) is a free,
no-auth, community-maintained synced-lyrics database that mirrors
Musixmatch coverage for popular catalog. If LRCLIB doesn't have the
track, Stash falls back to YouTube Music's lyrics (via the existing
InnerTube wiring Stash already uses for queue building) — plain text,
no timing, but usable when LRCLIB misses.

Online streaming works too. Tap Lyrics on a track you're streaming
without downloading and Stash hits LRCLIB directly in real time, no
persistent row needed. Streaming-track lyrics aren't cached (re-open
re-fetches), but LRCLIB responds in ~200ms so it's effectively
instant.

The sheet
A new Lyrics icon in the Now Playing top bar — Dismiss · Flag ·
Like · Download · Save · Lyrics · Queue — opens a Spotify-style
bottom sheet over the player. For tracks with synced LRC the sheet
auto-scrolls as the song plays, with the current line rendered bold

  • bright and surrounding lines progressively dimmed. Tap any line
    to jump playback to that timestamp. Drag the list to look ahead or
    back — auto-scroll pauses for 5 seconds then resumes centering on
    the current line. The sheet auto-follows the playing track, so when
    the song advances the lyrics swap without you closing and
    reopening.

Backfill on first launch
The new pipeline only runs on new downloads, but your existing
library shouldn't be left behind. On your first launch after this
update, Stash queues every previously-downloaded track for a
one-time lyrics fetch. A small "Fetching lyrics — N / M" banner
appears on Home alongside the (still-completing for some users)
metadata banner from v0.9.35; both run concurrently and clear
themselves when done.

Sidecar .lrc files
For every successful synced fetch, Stash writes a <basename>.lrc
file next to the audio. Plex, Symfonium, Poweramp, VLC, Musicolet,
and most car USB players auto-read the sidecar by convention, so
your lyrics travel with your files into any tag-aware player — same
"your music, yours forever" promise that v0.9.35 made with
embedded tags. Sidecars include canonical [ti:][ar:][al:][length:]
headers so the player has the metadata to display alongside.

Instrumental detection
LRCLIB flags instrumental tracks explicitly; Stash respects that.
Tracks like Vince Guaraldi Trio's "Linus and Lucy" or Booker T.'s
"Green Onions" show a clean "♪ Instrumental" placard instead of
the empty "no lyrics" state — and skip the sidecar write.

Known gap
Word-level highlighting (Spotify-style karaoke timing within a
line) is deferred. LRCLIB returns line-level timestamps; per-word
data exists in the Enhanced LRC format (A2) but is rarely
populated in LRCLIB's catalog. Phase 2 will explore heuristic
interpolation or alternative sources for users who want
syllable-accurate highlighting.

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.

Full Changelog: v0.9.35...v0.9.36

Don't miss a new Stash release

NewReleases is sending notifications on new releases.