Metrolist v0.6.0 — Spotify Deep Integration
This release brings full two-way Spotify integration: edit playlists, reorder tracks, and sync your likes — all from within the app.
New Features
Bidirectional Like Sync with Spotify
- New "Sync Likes with Spotify" toggle in Spotify integration settings
- When enabled, every like/unlike action in the app (player, context menu, multi-select) is automatically synced to your Spotify Liked Songs
- On first activation, all your Spotify liked songs are imported and matched to their YouTube equivalents
- The local "Liked" playlist is replaced by your Spotify library — one source of truth
Edit Spotify Playlists from the App
- Add tracks to any of your Spotify playlists directly from song menus
- Works with both Spotify tracks (direct add) and YouTube tracks (automatic reverse lookup finds the Spotify match)
- Remove tracks from Spotify playlists with swipe-to-remove
- New playlist picker dialog for quick playlist selection
Sort & Refresh for Spotify Playlists
- Sort by: original order, name, artist, or duration
- Pull-to-refresh to reload playlists in real time
- Available in both Spotify playlists and liked songs screens
Drag-to-Reorder in Spotify Playlists
- Reorder tracks in your Spotify playlists via drag-and-drop
- Changes are synced to Spotify in real time via GraphQL
- Lock mechanism prevents accidental reordering
- Optimistic UI updates with server-side confirmation
Under the Hood
Spotify GraphQL Hash Audit
- Verified all 15 hardcoded GQL hashes against the current Spotify web player bundle
- Updated 5 rotated hashes:
libraryV3,fetchPlaylist,queryArtistOverview,addToLibrary,removeFromLibrary - Identified 2 at-risk hashes (
searchDesktop,editPlaylistAttributes) not present in the current web player — functional for now but may require future attention
Architecture
- All like sync logic (YouTube, Spotify, Last.fm) is now centralized in
SyncUtilsand runs independently of YouTube login state SongEntity.toggleLike()handles local state only — remote sync is fully delegated toSyncUtils