Skip to content

Releases: elsbrock/plundrio

v0.11.2

Choose a tag to compare

@elsbrock elsbrock released this 12 Sep 10:57

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-remove calls 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
  • reconcile command — 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 error field as the correct integer enum instead of a boolean (part of #50)
  • Update golang.org/x/oauth2 to 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

Choose a tag to compare

@elsbrock elsbrock released this 30 Jul 21:02

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.ErrServerClosed was 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-get handlers that could crash the process on a concurrent map access
  • Fix a send on closed channel panic 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-remove so it no longer grows for the lifetime of the process
  • Regenerate gomod2nix.toml, which had drifted from go.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-lint is clean

Full Changelog: v0.11.0...v0.11.1

v0.11.0

Choose a tag to compare

@elsbrock elsbrock released this 30 Jul 17:20
0d95a67

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 / UseCategoriesPutio options. Also corrects the torrent-add argument from downloadDir to download-dir, which is what Transmission clients actually send.

Fixes

  • Return torrent tracking identifiers (#44, @alexg0) — torrent-add now returns the real id, hashString and name instead 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.As through 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, breaking nix build for all targets.

v0.10.6

Choose a tag to compare

@elsbrock elsbrock released this 04 Mar 22:11

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.Context through api.Client for proper cancellation
  • Encapsulate TransferContext state behind thread-safe accessor methods
  • Extract consumer-defined PutioClient interfaces for testability
  • Extract progress calculation into testable pure function
  • Add tests for coordinator state machine, progress calculation, and transient errors
  • Migrate from vendorHash to gomod2nix for reproducible Nix builds — eliminates vendorHash breakage on nixpkgs updates and Renovate PRs

Full Changelog: v0.10.5...v0.10.6

v0.10.5

v0.10.5 Pre-release
Pre-release

Choose a tag to compare

@elsbrock elsbrock released this 28 Feb 14:53
677a13a

What's Changed

Bug Fixes

Improvements

  • Report speed and ETA in second download phase (local download) by @arrizer in #24

CI & Dependencies

  • Update actions/checkout action to v6 in #21
  • Update dependency Go to v1.26.0 in #15

New Contributors

Full Changelog: v0.10.4...v0.10.5

v0.10.4

v0.10.4 Pre-release
Pre-release

Choose a tag to compare

@elsbrock elsbrock released this 29 Mar 22:24
61814a2
chore: next version is v0.10.4

v0.10.3

v0.10.3 Pre-release
Pre-release

Choose a tag to compare

@elsbrock elsbrock released this 29 Mar 22:18
05bef00

Full Changelog: v0.10.2...v0.10.3

v0.10.2

v0.10.2 Pre-release
Pre-release

Choose a tag to compare

@elsbrock elsbrock released this 29 Mar 22:06
9e3bd31

Full Changelog: v0.10.1...v0.10.2

v0.10.1

v0.10.1 Pre-release
Pre-release

Choose a tag to compare

@elsbrock elsbrock released this 29 Mar 21:58
9504a03

Full Changelog: v0.10.0...v0.10.1

v0.10.0

v0.10.0 Pre-release
Pre-release

Choose a tag to compare

@elsbrock elsbrock released this 28 Mar 23:03
d9d1458

What's Changed

  • chore(deps): update docker/metadata-action action to v5 by @renovate in #14

Full Changelog: v0.9.7...v0.10.0