This release rewrites how Stash syncs YouTube Music libraries and overhauls the Sync tab UI.
YouTube Music sync — now actually complete
Previously the YT Music sync stopped at the first page of results, so users with large libraries got partial data. The most reported case: "24 of 156" liked songs synced, with the tail just missing.
This release adds proper pagination to all three YT Music endpoints (getLikedSongs, getPlaylistTracks, getUserPlaylists) and verifies completion against the expected track count.
- Per-sync auth caching reduces redundant InnerTube calls
- Radio / home-mix playlists are correctly capped at one page (was up to ~9K phantom tracks per mix because radio is infinite)
- Mixes and playlists fetch in parallel (capped at 3 concurrent)
- Schema bump v15 → v16 records partial-snapshot state and expected counts
Studio recordings only — Liked Songs filter
New toggle in the YT Music sync card filters out UGC, podcasts, and user uploads from your Liked Songs sync.
Sync tab — redesigned in place
- SyncHeroCard with last-sync stats and a Sync Now button
- SourcePreferencesCard with brand bars and per-source status pills
- Natural-language ScheduleCard with day-of-week picker + bottom-sheet TimePicker
- Recent syncs consolidated into a single card
- Auto-sync now defaults to OFF
Polish & bug fixes
- Album art now higher resolution across NowPlaying, album cards, artist avatars, and search hero — no more pixelated YT thumbnails
- Synced playlists stay on Home/Library when toggled off in Sync prefs; sync prefs only control future syncs
- Saved and personal playlist artwork is now sticky — only Daily Mixes refresh
- Refresh/Accumulate chip row restored inside expanded source cards
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com