soulsync 2.8.6 — dev → main
a focused fix batch on top of 2.8.5/2.8.51 — search, import, library, and playlists.
spotify search works without a connected account
picking "Spotify" as your search source returned only library results if you weren't authenticated to a real spotify account — even with the no-auth spotify free source installed. the search gate said "spotify unavailable" and bailed before searching anything.
fix: an explicit "Spotify" search pick now uses the no-creds spotify free source when you're not connected (the explicit pick is your consent — no silent background scraping changes). threaded as a per-request prefer_free flag, default off everywhere, so fan-out/background paths and every other source are untouched. separately, a connected account whose official search comes back empty now falls back to free instead of a blank page.
#986 — import & stats black screen on docker
a follow-up to the 2.8.5 fix. some docker setups still loaded import & stats blank because the JS module bundle was served with a non-JS content type and the browser refused to run it. we now force the correct text/javascript content-type at the HTTP layer (an after-request hook), so module scripts always run.
#990 — mirrored playlists could be silently wiped to empty rows
a wrong-shaped refresh payload (the GET endpoints return the spotify track shape, the POST expected the mirror shape) could overwrite a mirror with thousands of empty rows and still return success. it now coalesces the spotify shape into the mirror keys, and validates before touching the db — if every track maps to empty it rejects with a 400 before the delete, so your existing mirror is never wiped.
#988 — browsing an artist could show a different artist's tracks
a deezer name-search was accepting the first result even on a poor name match, so e.g. The Outfield could show Beatles tracks. it now requires a real name match (0.85 similarity) before using a result, and falls back cleanly otherwise. also hardened the worker path that could smear a stored deezer id onto the wrong artist.
#989 — itunes singles landing in "unknown artist"
when a single's album-artist came back empty, the track could file and tag under "Unknown Artist". it now falls back to the real track artist when the album-artist is empty/unknown, while a genuine album-artist still wins.
#985 — library reorganize left empty folders behind
after moving files, reorganize left the old, now-empty disc/album folders behind. it prunes them now — bounded and disc-aware, so it only removes the emptied file/album (and a disc subfolder), and never climbs up to the artist directory or library root.
all fixes have root-cause + regression tests; full suite green.