Stash v0.3.7
feat(sync): fetch YT library playlists + opt-in by default
Closes #9 (library playlists not syncing) and #10 (sync auto-
downloads unselected playlists).
Two fixes, one release, one root cause: the sync pipeline trusted
discovery too early. It only fetched Home Mixes + Liked Songs and
auto-downloaded everything it found.
-
PlaylistFetchWorker now runs a third YouTube step calling
ytMusicApiClient.getUserPlaylists() against FEmusic_liked_playlists.
parseUserPlaylists handles both gridRenderer and musicShelfRenderer
shapes and filters out the Liked Music / Episodes for Later built-
ins so they don't collide with the Liked Songs path. User-created +
user-saved playlists land as PlaylistType.CUSTOM snapshots and show
in the existing "Other Playlists" toggle group. -
DiffWorker.findOrCreatePlaylist drops the v0.3.5 YOUTUBE carve-out
and creates every new playlist with sync_enabled = false. First
Sync Now is now effectively a discovery pass — it populates the
Sync Preferences card but downloads nothing until the user picks.
Tapping Sync Now again with selections in place runs the full
download pipeline. Matches Spotify's long-standing pattern. -
SyncScreen's YouTube card switches between two copy states and an
amber action color when discovery is complete but nothing's enabled,
so the "first Sync did nothing" experience reads as intentional
staging rather than a broken button.
Cleanup for users caught by v0.3.5/6 auto-download deferred to a
follow-up — a destructive bulk-delete needs a careful UX story.
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.3.6...v0.3.7