github Nezreka/SoulSync 3.1.4
Version 3.1.4

11 hours ago

soulsync 3.1.4 — devmain

a tools-page double feature (comma artist splitter + replaygain targets), the video requests page grown up, seed limits your torrent client can enforce itself, every logo now ships with the app, and a big stack of reported fixes.


comma artist splitter (thanks @jadux)

requested: tracks tagged with one artist field like "Camellia, Toby Fox" make your server invent a fake combined artist — no artist image, wrong scrobbles, clutters the artist grid.

  • new tools-page job that finds comma-joined artist names and verifies them exactly how jadux suggested: the full string is checked against the metadata apis first (so real comma artists like "Tyler, The Creator" get recognized and left alone), and every part has to be a known artist — your own library counts — before anything is flagged.
  • each finding shows exactly how it will split, with clickable chips to the real artists' pages. approving retags the files with a proper multi-artist tag (the picard convention), and your server dissolves the fake artist on its next scan.
  • fail-safe everywhere: no api reachable, or one unverifiable part, means no finding. report-only, nothing changes until you approve.

replaygain target loudness (#1060)

  • new target loudness setting on the replaygain job (default -18 LUFS, the foobar2000 standard). every replaygain write in the app honors it — the repair job, imports, and the manual analyze buttons.
  • optional "re-analyze existing tags" toggle: turn it on and the job re-runs tracks whose stored gain was computed against a different target, so your whole library converges on one loudness reference.

genre tag cleanup (#1057)

  • strict genre filtering only ever applied to NEW metadata — genres stored before you enabled it kept polluting server sync and write tags. new tools-page job re-checks every stored genre list against your whitelist and shows exactly what would be kept vs removed per artist/album. removal-only, never invents genres.

fix all actually fixes all (tools page)

  • found while building the splitter: the bulk "Fix All" / select-all path kept its own list of fixable finding types and it had drifted — genre cleanup and replaygain findings counted in the "Fix All N" button but were silently skipped ("fixed 0 of N"). the list is now derived from the fix handlers so it can never drift again.
  • artist pictures on findings are clickable now and take you to that artist's library page.

video requests page

  • approved requests used to just sit there looking identical forever. now the page keeps telling the story: approved shows an "Acquiring…" chip until the title actually exists in your library, then flips to a green "In library" chip.
  • status tabs (all / pending / approved / denied) with counts, resolved rows removable one-by-one or with a "Clear resolved" sweep (approved titles stay in acquisition — it only clears history).
  • and an honest-approve fix: one seam could toast success while the request stayed pending with the Approve button still showing. surfaced properly now.

seed limits your torrent client enforces itself (thanks @TheHomeGuy)

  • new "Enforced by" toggle next to the seed goals (music + video): SoulSync's periodic sweep (default, unchanged) or the torrent client itself — soulsync writes your ratio/time goals into the torrent as native share limits at grab time, so qbittorrent/transmission/deluge stop seeding on their own even if soulsync is down.
  • also fixed: the torrent stall action now actually pauses on qBittorrent 5.x (they renamed the pause api; we try the new name and fall back to the old).

the wishlist failing hub (thanks @liveleak)

  • video wishlist gets a "⚠ Failing" filter chip — one click shows only the items that keep failing, each with Search Now and a manual release picker on every movie/season/episode.
  • music side: "Search manually" on a failing wishlist track now lands you on the actual soulseek search with the query prefilled (it used to dump you on metadata search), and the jump no longer races the page load.

every logo ships with the app

  • the ui hotlinked ~86 logo images from 10+ external sites (svgrepo, wikimedia, brandfetch, plex.tv...). any cdn hiccup or rate limit broke images, and lan-only installs never saw them at all. all 24 service/brand logos now live in the app and load from your own server, offline included.

reported fixes

  • downloads freezing mid-batch (thanks @jadux): wishlist auto-cleanup could pile up and starve the worker pool that moves finished downloads to Completed — cleanup runs on its own thread now and never stacks. plus a metadata identity guard: a finished file can no longer receive another track's tags in a rare context-collision.
  • re-releases wouldn't download (thanks @5BILLION): the artist page correctly showed a remaster as missing, but Begin Analysis matched it against the original album ("8/8 FOUND") so nothing ever downloaded. the analysis now respects release years on both the album match and the per-track fallback.
  • deep scan on an empty navidrome (thanks @5BILLION): navidrome reports an empty library as a hard error, which the scan treated as "server down" and refused to remove departed artists. a verified-empty library is a real answer now.
  • leaving the chat room (thanks @popwaffle9000): unchecking auto-join actually leaves the room now (the room poll was silently re-joining you), and the chat page shows a join button instead of rejoining behind your back.
  • $year in tv rename templates (thanks @musicagine): series renames rendered an empty $year because some servers send a premiere date but no year field — the year derives from the premiere date now.
  • search timeout setting (#1056): one knob under settings → soulseek that lets slower setups extend how long source searches wait before giving up. soulseek's own search behavior is untouched.
  • airing shows can't skip a day anymore: the auto-wishlist-airing automation only ever looked at "today", so a day the server was off (or a missed sunday) was simply never wishlisted. it now keeps a bookmark of the last day it covered and catches up the gap (up to a week) on the next run.

community prs

  • worker idle backoff (#1054, thanks @thegabriele97): the five heaviest enrichment workers poll lazily when there's nothing to do — big idle-cpu drop, instant wake on new work.
  • discography provider fallback (#1032, thanks @ragnarlotus): artist discographies no longer error out when the primary metadata provider is down — the request falls through the provider chain like everything else.

Don't miss a new SoulSync release

NewReleases is sending notifications on new releases.