soulsync 3.1.5 — dev → main
chat goes best-in-class, you choose which source paints your discographies — and can see what the other sources know — the wishlist learns artists and smarter retries, fix all runs in the background, and multi-user gets a real security pass.
chat
- join ANY public soulseek room: a rooms rail with a full room browser (search, sort by users, join/leave), not just the soulsync room
- the user list grew up: roles, sorting, and a local mute for users you don't want to hear from
- browse any user's shared files right from chat and download them in place
- search your whole message history, copy any message, and a redesigned composer (fused panel, ghost icon toolbar)
choose your discography source (thanks @ragnarlotus, #1068)
- a new Library Discography Source setting (Settings → Metadata): primary, automatic fallback, or pin a specific source — it decides what paints library artists' discography pages
- built on a typed provider-outcome rework, so an artist a source genuinely doesn't know shows as empty instead of an error, and fallback decisions are explicit
see what other sources know (#1067)
- an "Other sources" view option on artist pages: releases OTHER metadata sources know but your current view doesn't, slotted into the real albums/eps/singles sections with their source marked
- each gap release is downloadable from its own source, and Download Discography includes them
- conservative dedup (title + year) against what the page already shows, plus a final check against your library-merged view. off by default, purely additive
- plays with #1068: whatever source the setting picks as your base, gap-fill diffs against exactly that
wishlist: artist selection + smarter retries
- select, download, or remove a whole artist's wishlist entries at once (#1065)
- failed tracks carry real attempt counts now (they used to reset), back off progressively instead of retrying every cycle, and the auto-ignore TTL is configurable (thanks @javiavid)
search by musicbrainz id (thanks Jordan H)
- paste a bare musicbrainz release id into search and it resolves straight to the release — lidarr-style exact lookups
tools: fix all grew up
- fix all runs in the background with live progress and a stop button — a 5000-finding retag no longer times out the page while secretly still working (thanks pertti)
- album tag consistency says exactly which albums it excluded and why (single-track, no stored file paths, no artist link) and warns when files weren't readable from soulsync's filesystem (thanks clouddead89)
- findings page size is adjustable (30/60/100), and genre tag cleanup scans — and counts — the whole library (#1066)
multi-user hardening
- profile isolation audit: profile-scoped apis verify ownership (no more reading another profile's data by id), deleting a profile sweeps every table that references it (derived from the schema so new tables can't be forgotten), and socket rooms derive from the session — one profile can't see or touch another's
reported fixes
- singles and EPs no longer file as Albums when the metadata source carries no type signal (#1064)
- the artist photo picker works on navidrome/jellyfin — text ids were being forced into ints (#1069)
- enabling usenet in the download source priority survives a reload (thanks @fl3m)
- the music Manage Workers modal gets Retry All Failed (video parity)
- video's "block release and retry" actually retries with another release instead of stopping
community
- the whole library-discography-source feature is @ragnarlotus's PR #1068 — clean typed rework of the discography provider chain