github Nezreka/SoulSync 2.6.5
Version 2.6.5

5 hours ago

SoulSync v2.6.5

Merges dev into main. This release is a major web-player overhaul, a new cover-art source feature, and a broad round of download/metadata/library bug fixes (issues #730, #743, #750, #751, #754, #756, #759, #760).

✨ Highlights

Web player / "Now Playing" revamp

A near-complete rework of the in-app player:

  • Per-listener stream sessions — multiple users/tabs no longer collide on shared playback; stream state extracted into a testable per-session store.
  • Now Playing redesign — full visual refresh, vibrant album-art color extraction, click-art visualizer, sleep timer, up-next, drag-to-reorder queue.
  • Real crossfade for library tracks (experimental), with hardened race-condition handling.
  • Synced lyrics with click-to-seek, and complete Media Session lock-screen/OS controls.
  • Smart radio ranking (play-count + popularity), fixed Artist Radio never populating the queue, and a "Playing from" context header.
  • Mini-player parity — shuffle/repeat/play-next, N/P prev-next keys, global mute, volume persisted across reloads, seek-hover tooltip.
  • Web-player plays are now logged (recently-played + smart-radio recency).

New: preferred album-art source selection

Pick which providers' cover art to use and in what order (CAA, Deezer, iTunes, Spotify, AudioDB), with graceful fallback. Fully opt-in — default behavior is unchanged. Applies to both embedded art and cover.jpg. Includes a minimum-resolution guard so a low-res source (e.g. a small Cover Art Archive upload) is skipped in favor of a bigger one, and iTunes art is requested at max resolution.

Other UI upgrades

  • Mirrored playlist modal redesign (real artwork, per-track thumbnails) + fixed header clipping on long playlists.
  • Batches panel visual upgrade (summary, segmented progress, ETA, live track) + cleaner expanded track rows.
  • Track-detail modal — click any download row for a rich, status-aware view.
  • Quarantine management — handle a quarantined file directly from the download modal (Listen / Accept & Import / Search).

Bug fixes

Issue Fix
#759 Amazon enrichment floods logs/CPU and could make the UI unreachable when its public proxy is down — added an outage circuit-breaker + made enrichment opt-in by default
#760 Album-bundle staging Permission denied: storage/album_bundle_staging — entrypoint now chowns /app/storage to the runtime PUID on every start; plus a per-track fallback so an I/O/staging error no longer hard-fails a batch
#756 Validly-streamed FLAC no longer wrongly quarantined as "zero-length"
#754 Manual Library Match now accepts non-numeric (Navidrome/Jellyfin GUID) track ids; MusicBrainz manual search field-scopes the artist in non-strict mode (fewer karaoke/cover mismatches)
#743 Soulseek album-bundle staging-misses fall through to per-track / cross-source fallback instead of failing
#730 Album-bundle release picker is gated by album-title relevance (with word-boundary full-phrase bonus); no longer rejects the right album over an edition suffix
#751 Live-search debounce raised 300ms → 600ms
#750 Image cache rejects truncated downloads instead of caching broken covers

Plus:

  • Duplicate detector now keeps lossless over lossy (ranks by format first), so a FLAC with a missing bitrate is no longer deleted in favor of a 282 kbps MP3.
  • Mirrored playlist action buttons (delete/auto-sync/etc.) no longer break when the playlist name contains an apostrophe.
  • Torrent/usenet album bundle falls back to per-track on "no results" instead of hard-failing.
  • AcoustID reports errors honestly instead of masking them as "Skipped" (an invalid API key is now visible).
  • Spotify sync crash (unexpected keyword argument 'candidate_pool') fixed.

Stability & internals

  • Metadata cache hard LRU row cap to stop unbounded growth (root-causes the 7.6 GB DB incident).
  • Fixed metadata-cache tables silently missing after a DB recovery (stale migration marker).
  • Test suite is now database-isolated — tests can never touch the real library DB.

Behavior changes to note

  • Amazon enrichment is now opt-in (paused by default). Anyone who relied on the old auto-on default must enable it in Settings.
  • The new album-art source list is off by default; existing art behavior is unchanged unless you configure it.

Don't miss a new SoulSync release

NewReleases is sending notifications on new releases.