Skip to content

SoulSync

v2.6.5 Breaking

This release includes 2 breaking changes for platform teams planning a safe upgrade.

Published 2d Media Servers
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Summary

AI summary

Updates Other UI upgrades, ✨ Highlights, and Stability & internals across a mixed release.

Changes in this release

Feature Medium

Adds per-listener stream sessions to web player.

Adds per-listener stream sessions to web player.

Source: llm_adapter@2026-06-02

Confidence: high

Feature Medium

Redesigns Now Playing UI with album‑art extraction, visualizer, sleep timer, and up‑next queue.

Redesigns Now Playing UI with album‑art extraction, visualizer, sleep timer, and up‑next queue.

Source: llm_adapter@2026-06-02

Confidence: high

Feature Medium

Introduces real crossfade for library tracks (experimental) with improved race‑condition handling.

Introduces real crossfade for library tracks (experimental) with improved race‑condition handling.

Source: llm_adapter@2026-06-02

Confidence: high

Feature Medium

Adds synced lyrics with click‑to‑seek and full Media Session lock‑screen/OS control support.

Adds synced lyrics with click‑to‑seek and full Media Session lock‑screen/OS control support.

Source: llm_adapter@2026-06-02

Confidence: high

Feature Medium

Implements mini‑player parity for shuffle, repeat, navigation keys, global mute, and persisted volume.

Implements mini‑player parity for shuffle, repeat, navigation keys, global mute, and persisted volume.

Source: llm_adapter@2026-06-02

Confidence: high

Feature Medium

Logs web‑player plays for recently‑played and smart‑radio recency tracking.

Logs web‑player plays for recently‑played and smart‑radio recency tracking.

Source: llm_adapter@2026-06-02

Confidence: high

Feature Medium

Adds preferred album‑art source selection with ordering, fallback, and minimum‑resolution guard.

Adds preferred album‑art source selection with ordering, fallback, and minimum‑resolution guard.

Source: llm_adapter@2026-06-02

Confidence: high

Performance Medium

Imposes a hard LRU row cap on metadata cache to prevent unbounded growth.

Imposes a hard LRU row cap on metadata cache to prevent unbounded growth.

Source: granite4.1:30b@2026-06-02-audit

Confidence: low

Bugfix Medium

Resolves "Permission denied" errors when staging album bundles by chowning storage on start.

Resolves "Permission denied" errors when staging album bundles by chowning storage on start.

Source: llm_adapter@2026-06-02

Confidence: high

Bugfix Medium

Prevents valid FLAC files from being wrongly quarantined as zero‑length.

Prevents valid FLAC files from being wrongly quarantined as zero‑length.

Source: llm_adapter@2026-06-02

Confidence: high

Bugfix Medium

Fixes Amazon enrichment flooding logs/CPU by adding a circuit‑breaker and making it opt‑in.

Fixes Amazon enrichment flooding logs/CPU by adding a circuit‑breaker and making it opt‑in.

Source: llm_adapter@2026-06-02

Confidence: low

Bugfix Low

Fixes Artist Radio queue never populating and adds "Playing from" context header.

Fixes Artist Radio queue never populating and adds "Playing from" context header.

Source: granite4.1:30b@2026-06-02-audit

Confidence: low

Bugfix Low

Adds per‑track fallback for Soulseek album‑bundle staging misses to prevent hard failures.

Adds per‑track fallback for Soulseek album‑bundle staging misses to prevent hard failures.

Source: granite4.1:30b@2026-06-02-audit

Confidence: low

Bugfix Low

Improves album‑bundle release picker relevance by gating on album‑title phrase matching, ignoring edition suffixes.

Improves album‑bundle release picker relevance by gating on album‑title phrase matching, ignoring edition suffixes.

Source: granite4.1:30b@2026-06-02-audit

Confidence: low

Bugfix Low

Increases live‑search debounce from 300 ms to 600 ms.

Increases live‑search debounce from 300 ms to 600 ms.

Source: granite4.1:30b@2026-06-02-audit

Confidence: low

Bugfix Low

Rejects truncated image downloads in the cache to avoid broken covers.

Rejects truncated image downloads in the cache to avoid broken covers.

Source: granite4.1:30b@2026-06-02-audit

Confidence: low

Bugfix Low

Handles quarantined files directly from download modal with Listen / Accept & Import / Search actions.

Handles quarantined files directly from download modal with Listen / Accept & Import / Search actions.

Source: granite4.1:30b@2026-06-02-audit

Confidence: low

Bugfix Low

Fixes duplicate detector to keep lossless formats over lossy when bitrates are missing.

Fixes duplicate detector to keep lossless formats over lossy when bitrates are missing.

Source: granite4.1:30b@2026-06-02-audit

Confidence: low

Bugfix Low

Prevents mirrored playlist action buttons from breaking when playlist name contains an apostrophe.

Prevents mirrored playlist action buttons from breaking when playlist name contains an apostrophe.

Source: granite4.1:30b@2026-06-02-audit

Confidence: low

Bugfix Low

Falls back to per‑track mode for torrent/usenet album bundles when no results are found.

Falls back to per‑track mode for torrent/usenet album bundles when no results are found.

Source: granite4.1:30b@2026-06-02-audit

Confidence: low

Bugfix Low

Reports AcoustID errors honestly instead of masking them as "Skipped" (e.g., invalid API key).

Reports AcoustID errors honestly instead of masking them as "Skipped" (e.g., invalid API key).

Source: granite4.1:30b@2026-06-02-audit

Confidence: low

Bugfix Low

Fixes Spotify sync crash caused by unexpected keyword argument 'candidate_pool'.

Fixes Spotify sync crash caused by unexpected keyword argument 'candidate_pool'.

Source: granite4.1:30b@2026-06-02-audit

Confidence: low

Bugfix Low

Fixes missing metadata‑cache tables after DB recovery due to stale migration marker.

Fixes missing metadata‑cache tables after DB recovery due to stale migration marker.

Source: granite4.1:30b@2026-06-02-audit

Confidence: low

Refactor Low

Isolates test suite database usage so tests never touch the real library DB.

Isolates test suite database usage so tests never touch the real library DB.

Source: granite4.1:30b@2026-06-02-audit

Confidence: low

Full changelog

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.

Breaking Changes

  • Amazon enrichment is now opt‑in (paused by default) – users must enable it in Settings.
  • Preferred album‑art source selection is off by default; existing behavior unchanged unless configured.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track SoulSync

Get notified when new releases ship.

Sign up free

About SoulSync

Automated Music Discovery and Collection Manager

All releases →

Beta — feedback welcome: [email protected]