soulsync 2.8.9 — dev → main
bug-fix + quality-of-life release.
fixes
- multi-disc downloads fixed (#1009) — downloading a box set was collapsing every disc into one folder (the album-folder reuse logic funneled all discs into whichever disc folder landed first). multi-disc albums now always follow your template, so
$cdnum/$discfolders and the auto "Disc N" folders actually stick. - track number repair is disc-aware (#1009) — the repair job was mangling
$disc$trackfilenames (0213 became 133), flagging perfectly-formatted box sets as broken, and rewriting correct tags. it now understands discs: repairs keep your naming convention (0213 for disc 2 track 13, plain 01 for single disc), correct files are left alone, and approving a finding applies exactly the change it shows. - server playlists page is fast now (#1005) — opening a big synced playlist took 15+ seconds; it's a few seconds now. the missing/matched filter actually filters after a reload, and syncing a single song updates just that row instead of reloading the whole 2k-track playlist.
- /status could 500 with multiple tabs open — concurrent status polls raced on a shared deque; found by @bluejorts's new e2e sweep, fixed with a proper lock.
- mobile: album modal buttons were untappable (#1007) — the floating bell/help buttons sat on top of the modal's close/wishlist buttons on phones. thanks @bluejorts.
new
- prefer explicit versions (#923) — new sub-setting under "Allow explicit content": when picking between soulseek results, explicit-marked files rank up and clean/censored/radio-edit files rank down. nothing is ever skipped — if only a clean version exists it still downloads. also fixes bare "(Clean)"/"(Censored)" markers being invisible to version matching for everyone.
internal
- react pages got a shared header component (#1008) and the webui is now gated in CI (lint, build, 96 vitest tests) plus a new e2e route sweep at desktop+mobile (#1010, #1012) — all @bluejorts.