Repository navigation
Releases: elsbrock/plundrio
Releases · elsbrock/plundrio
Release list
v0.11.2
What's Changed
Transfer manifests, stall detection, and a guarded cleanup command for orphaned downloads, plus several data-safety fixes around transfer removal.
Features
- Transfer file manifests — plundrio now persists the exact file list Transmission clients see for each transfer, with restart-safe removal ownership and explicit review holds for legacy transfers it can't verify. Multi-ID
torrent-removecalls also now keep processing the rest of a batch after one ID fails, instead of aborting the whole request. by @alexg0 in #52 - Stalled transfer detection — reports Put.io-side downloads that stop making byte progress (default 6h timeout, 0 disables) so Sonarr/Radarr can act on them. by @alexg0 in #50
reconcilecommand — a new, explicit opt-in subcommand to report, and optionally delete, Put.io/local payloads left behind after their transfer record disappeared. Dry-run by default. by @alexg0 in #51
Bug Fixes
- Only report a completed transfer as removable once it's actually been processed locally, closing a window where a restart or pending cleanup could tell *arr to remove a transfer before it was downloaded by @alexg0 in #49
- Prevent a transfer with no associated file from targeting Put.io's account root for deletion by @alexg0 in #53
- Preserve the original cancellation cause for stalled downloads so retries are classified correctly instead of as shutdowns by @alexg0 in #54
- Encode Transmission's
errorfield as the correct integer enum instead of a boolean (part of #50) - Update
golang.org/x/oauth2to v0.37.0 by @app/renovate in #55
Improvements
- Run the Go race detector in CI on every pull request (#53)
- Correct README documentation describing plundrio's actual local state instead of claiming it's stateless
Full Changelog: v0.11.1...v0.11.2
v0.11.1
What's Changed
A hardening release: three verified runtime defects on the shutdown and polling paths, plus several correctness fixes in the download manager.
Bug Fixes
- Exit cleanly on SIGTERM —
http.ErrServerClosedwas treated as fatal, so every graceful shutdown logged an error and exited 1, which Docker and systemd read as a crash - Fix a data race between the transfer monitor and
torrent-gethandlers that could crash the process on a concurrent map access - Fix a
send on closed channelpanic when a transfer was queued while the manager was shutting down - Fix a shutdown deadlock when the download queue was full
- Retry transfers whose local download failed — a single permanent file failure previously stranded the transfer forever: never retried, put.io source never cleaned up, never reported complete to *arr
- Stop double-counting bytes across download retries, which could report progress above 100%
- Mark transfers that report no files as failed instead of re-examining them on every poll forever
Improvements
- Apply idle and response-header timeouts to downloads, and abandon stalled ones — previously a server that accepted a connection and went quiet pinned a worker until the process exited
- Drop per-transfer tracking on
torrent-removeso it no longer grows for the lifetime of the process - Regenerate
gomod2nix.toml, which had drifted fromgo.mod(zerolog v1.34.0 vs v1.35.1), so released binaries now match what tests run against - Remove dead code and check previously-ignored errors;
golangci-lintis clean
Full Changelog: v0.11.0...v0.11.1
v0.11.0
Features
- *Honor arr category for local and put.io subfolders (#40, @ttrushin) — transfers for a category are now placed in a matching subfolder both locally and on put.io, gated by the new
UseCategoriesTarget/UseCategoriesPutiooptions. Also corrects thetorrent-addargument fromdownloadDirtodownload-dir, which is what Transmission clients actually send.
Fixes
- Return torrent tracking identifiers (#44, @alexg0) —
torrent-addnow returns the realid,hashStringandnameinstead of an empty object, so *arr can track the grab. - Retry transient local download failures (#43, @alexg0) — transient errors are recognised through the error chain and retried with bounded backoff instead of leaving a transfer stuck. Also closes a send-on-closed-channel race during shutdown.
- Recognize wrapped put.io not-found errors (#45, @alexg0) —
errors.Asthrough the wrapping chain, so a vanished source file cleans up correctly. - Update nixpkgs to provide Go 1.26.5 —
go.mod's toolchain directive had outrun the pinned nixpkgs, breakingnix buildfor all targets.
v0.10.6
What's Changed
Features
- Support category folders from arr
downloadDir(closes #22)
Bug Fixes
- Delete local files when arr app requests removal (closes #23)
- Fix startup race in
monitorTransfers(redundant processor overwrote field without sync) - Fix double-counting of downloaded bytes on file completion
- Update cobra v1.10.2, viper v1.21.0, oauth2 v0.35.0
Improvements
- Propagate
context.Contextthrough api.Client for proper cancellation - Encapsulate
TransferContextstate behind thread-safe accessor methods - Extract consumer-defined
PutioClientinterfaces for testability - Extract progress calculation into testable pure function
- Add tests for coordinator state machine, progress calculation, and transient errors
- Migrate from
vendorHashtogomod2nixfor reproducible Nix builds — eliminates vendorHash breakage on nixpkgs updates and Renovate PRs
Full Changelog: v0.10.5...v0.10.6
v0.10.5
What's Changed
Bug Fixes
Improvements
CI & Dependencies
New Contributors
Full Changelog: v0.10.4...v0.10.5
v0.10.4
v0.10.3
Full Changelog: v0.10.2...v0.10.3
v0.10.2
Full Changelog: v0.10.1...v0.10.2
v0.10.1
Full Changelog: v0.10.0...v0.10.1