Skip to content

Stash v0.3.7

Choose a tag to compare

@github-actions github-actions released this 19 Apr 11:34
· 1574 commits to master since this release

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.

  1. 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.

  2. 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.

  3. 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