✨ Added
- "Move to..." feature — standalone file move action in context menus (Downloads & Shared views) with category quick links, manual path input, permission pre-check, and batch support. Works with all clients via
MoveOperationManager - Per-instance download tracking — search results track which client instances have each download, allowing re-download to different clients.
- Magnet name resolution — rTorrent magnet downloads show the real name from history DB instead of
HASH.meta, with(resolving)indicator that clears automatically when metadata resolves - SCGI connection info — Settings client cards show
SCGI TCP: host:portorSCGI Socket: /pathinstead of "Not configured"
♻️ Improved
- rTorrent post-load property setting — label, directory, and priority are now set via separate
system.multicallafterload.raw_startinstead of inline arguments, avoiding rTorrent's 4KB execute arg buffer overflow (exec_file.cc buffer_size = 4096) - Tooltip component — Improved dark mode contrast with lighter background and border
- aMule EC timeout — increased from 30s to 60s for large shared file lists
- Reconnection resilience — requests are skipped during EC reconnection to prevent "Invalid request" spam on the aMule side
🐛 Fixed
- aMule segment bar corruption — qBittorrent compatibility API was calling
getDownloadQueue()/getSharedFiles()directly on the EC connection, interfering with aMule's server-side incremental diff state forgetUpdate(). Now reads from cached data instead - aMule EC XOR reconstruction — fixed buffer resize logic to match aMule's
Realloc+ XOR algorithm. Clears client-side XOR state on reconnection to prevent stale diff corruption - rTorrent completed status — stopped torrents at 100% now correctly show "Stopped" instead of "Seeding" in Shared Files view (
completedstatus no longer mapped toseeding) - Client disconnect detection — all client managers now trigger reconnect on any fetch error, not just specific error codes (fixes SCGI socket
ENOENTnot being detected) - Search result delete tracking — deletion from one client only removes that instance from the per-instance download map, preserving other instances' status. Alias lookup handles Prowlarr GUID → real hash mapping
Full Changelog: v3.4.3...v3.4.4