This was generated by AI during triage.
Agent Brief
Category: bug
Summary: Link-tree adds with an explicit save path do not set useDownloadPath=false, so the qBittorrent incomplete folder breaks the links
Current behavior:
With "Keep incomplete torrents in" turned on in qBittorrent, a Dir Scan partial match is added unpaused with an explicit savepath but without useDownloadPath. qBittorrent applies the instance incomplete download path. It moves the linked files into the incomplete folder, downloads the missing files, and moves everything back on completion. When the incomplete folder is on another filesystem, each move is a copy: the torrent seeds a second full copy and the library file drops to link count 1.
The regular cross-seed add sets useDownloadPath=false whenever it sets an explicit save path (since #2432). Three other add paths build their own option maps with an explicit save path and do not set it:
- Dir Scan:
Injector.buildAddOptions(confirmed by the reporter in a live run). - Cross-seed link mode (hardlink/reflink add): sets
savepathto the link tree root. - Season-pack add: sets
savepathto the link tree root.
Desired behavior:
Every add that qui gives an explicit save path (link tree root, matched torrent path) also sends useDownloadPath=false. The torrent stays in the link tree, only missing files download into it, and linked files keep their links. Adds that leave the save path to qBittorrent (autoTMM) are unchanged.
Key interfaces:
Injector.buildAddOptions()(dirscan): must includeuseDownloadPath=false.- Cross-seed link-mode and season-pack add option maps: same.
SyncManager.AddTorrentcallers: qui sets the option instead of inheriting the instance preference.
Acceptance criteria:
- A Dir Scan add in hardlink mode with partial match and download-missing enabled sends
useDownloadPath=false. - A cross-seed link-mode add sends
useDownloadPath=false. - A season-pack add sends
useDownloadPath=false. - The regular cross-seed add keeps its current behavior.
- Tests assert the option on each add path and fail without the change.
Out of scope:
- How qui reads or edits the instance incomplete download path preference.
- Category download path handling (#3308).
Domain:
- Glossary terms: "incomplete download path" and "link tree" are not in
GLOSSARY.md; "download path" appears only inside Stop folder. Gap. - ADRs: 0006 (link modes are one body with a
LinkModevalue), 0005 (consumers declare narrow interfaces over the sync manager). - Owner: None. Four add paths build their own qBittorrent add options; no module owns "an add with an explicit save path".
Logs:
- None
Why a human: Design: should one shared helper own the add options for an explicit-save-path add (autoTMM off, savepath, contentLayout, useDownloadPath=false) for Dir Scan, link mode, season pack, and the regular cross-seed add, or should each caller set useDownloadPath=false itself? The reporter has a Dir Scan-only fix on a fork (branch fix/dirscan-disable-download-path on diblaze/qui), field-tested on v1.33.0 with 10 partial matches, and offered to open a PR.
From discussion #3354
Activity
0No activity yet.