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