Skip to content

Releases

v2.15.0

Choose a tag to compare

@shcizo shcizo released this 30 Sep 06:27

Features

  • feat: rank a chronically failing peer last (#508)

Fixes

  • fix: cool down a peer whose download failed (#507)

Chores

  • chore: record the startup share scan opt-out as out of scope (#498)

v2.14.1

Choose a tag to compare

@shcizo shcizo released this 13 Aug 14:13

Features

  • feat: tighten the stale share index copy (#497)
  • feat: persist the share index across restarts (#497)
  • feat: split the browse response's inbound and outbound size caps (#409)

Fixes

  • fix: do not blame the configuration while the index is being built (#505)

Chores

  • chore: name the share scan and the share index (#497)

v2.12.0

Choose a tag to compare

@shcizo shcizo released this 11 Aug 05:48

Features

  • feat: let a parked job state its own reason (#484)
  • feat: stop retrying after N identical candidate rejections (#472)
  • feat: add IMPORT_REFUSED for a permanent Lidarr refusal (#470)
  • feat: show restart progress after saving settings (#154)

Fixes

  • fix: read the park reason from a source the stream can't erase (#484)
  • fix: stop the parked copy pointing at events the row expansion lacks (#487)
  • fix: guard the store's filter allowlist and name the album-folder trap (#470)
  • fix: wire the importRefused facet through to the dashboard (#470)
  • fix: give one job at a time the right to a download folder (#471)
  • fix: register case-variant download folders as one row (#479)
  • fix: make dedup album-aware in multi-album folders (#280)
  • fix: guard InsertCandidates' job reset on WANTED (#294)
  • fix: keep live rows out of terminal job pages (#291)
  • fix: remember failed candidates across search cycles (#317)
  • fix: give job_failed a detail that says why the job gave up (#318)
  • fix: exclude the server's forbidden phrases from search responses (#324)

Refactoring

  • refactor: register the local download folder at write time (#314)

Documentation

  • docs: correct the controls-row width note against a measurement (#470)
  • docs: record that Lidarr sends the rejection type in lower case (#470)
  • docs: a compose example that brings Lidarr with it (#455)

Tests

  • test: pass the transfer deadline in the download-folder fixture (#314, #441)
  • test: close the review gaps on the excluded-phrase filter (#324)

Chores

  • chore: backlog triage report for 2026-08-10
  • chore: let backlog triage read the labels it already had (#489)
  • chore: don't let the new counts overstate what they know (#476)
  • chore: record the counts behind an incomplete-download rejection (#476)

v2.8.0

Choose a tag to compare

@shcizo shcizo released this 08 Aug 07:05

Features

  • feat: give NOT_IMPORTED its own facet and filter (#368)
  • feat(soulseek): re-fetch gluetun's forwarded port during operation (#395)
  • feat: offer the source in the top bar, as AGPL § 13 requires (#391)

Fixes

  • fix: order Remove's .part unlink after the stream goroutine (#386)

Refactoring

  • refactor(soulseek): fold the listener install into one ordered helper (#395)

v2.6.0

Choose a tag to compare

@shcizo shcizo released this 07 Aug 08:23

Features

  • feat: measure whether jobs are making progress, not just whether modules tick (#442)

Fixes

  • fix: keep the peer username readable at narrow widths (#433)
  • fix: stop the Setup subtitle claiming slusk never writes config (#414)
  • fix: give PENDING transfers a real future deadline (#441)

v2.5.4

Choose a tag to compare

@shcizo shcizo released this 06 Aug 20:09

Fixes

  • fix: bound the retry when a past-deadline cancel keeps failing (#443)
  • fix(pager): move the shortcut glyph to the caller that binds the key (#434)
  • fix(jobs): hide the pager when the whole set fits on one page (#432)
  • fix: derive every /status count from the dashboard status query (#417)

Tests

  • test: pin the silent wedge when a past-deadline cancel keeps failing (#443)

Chores

  • chore(triage): say which motivating case the heuristic misses (#298)
  • chore(triage): stale a judgement when a referenced issue has closed (#298)
  • chore(triage): keep the 2026-08-04 backlog report
  • chore(triage): recompute the backlog state against main

v2.5.1

Choose a tag to compare

@shcizo shcizo released this 05 Aug 18:57

Features

  • feat: collapse the peer expansion on a page change, drop the single-page pager (#427)

Fixes

  • fix(ui): let the main content area scroll horizontally (#215)

Documentation

  • docs: document the missing /v2 module suffix and the go install trap (#399)

Tests

  • test(cmd): cover the paged jobs query mapping (#293)

Chores

  • chore: exclude test-classified issues from browser verification (#300)
  • chore: compare contract sides, not names, when scheduling waves (#299)

v2.4.0

Choose a tag to compare

@shcizo shcizo released this 05 Aug 10:23

Features

  • feat: serve /api/peers one page at a time, ordered server-side (#426)
  • feat: fetch a peer's artist history on expand, and show artist names (#424)

Fixes

  • fix(store): don't widen album_jobs to satisfy a test stub (#424)

Refactoring

  • refactor: name the pager's strings after the pager (#425)
  • refactor: extract the jobs pager into a shared component (#425)

Tests

  • test(store): wait without re-querying so idle recycling is deterministic (#171)

v2.2.0

Choose a tag to compare

@shcizo shcizo released this 04 Aug 20:11

Breaking changes

  • ci: list every merged commit in the promotion release notes

Features

  • feat: retry every failed or parked job in the filtered set (#378)
  • feat: split the dashboard's queued status into four (#416)

Fixes

  • fix: report a failed bulk retry inside the dialog, not behind it (#378)
  • fix: put both filter axes back on one row (#416)

Documentation

  • docs: require a worktree for implementation work
  • docs: record that tea flattens head/base in its JSON output
  • docs: correct the byte-identical digest claim in the promote path

CI

  • ci: drop the boilerplate footer from promoted release notes

Chores

  • chore(docker): describe the image so the ghcr package page is not blank
  • chore: ignore the pre-rename slskdarr binary

v2.0.2

Choose a tag to compare

@shcizo shcizo released this 04 Aug 16:48

Fixes

  • fix(soulseek): stop retrying a share index that can never be published (#408)

Tests

  • test: cover the /status shares module and use the real serializer error (#408)

Promoted from the maintainer's instance, where this exact image has been running.
Builds from main land on ghcr.io/hyzr-dev/slusk:edge if you want them sooner.