feat(torrents): safely remove unselected files

This commit is contained in:
NimBold
2026-08-02 09:49:57 +03:30
parent 67023d3f0d
commit b4da68655a
19 changed files with 695 additions and 49 deletions
+10 -7
View File
@@ -37,6 +37,12 @@ belong in the download UI. The Aria2 reference is the [1.37.0 manual](https://ar
- Optional `bt-prioritize-piece` preview policy for the head, tail, or both
ends of every selected file. The constrained policy is validated, persisted,
normalized, and reapplied when a Torrent starts or retries.
- Optional `bt-remove-unselected-file` cleanup after completion when a
selected-file subset is configured. Firelink requires explicit confirmation,
reserves the unselected paths against competing downloads, keeps those
paths separate from removable download ownership, and clears the reservation
after observing Aria2's completion cleanup (or on terminal failure,
cancellation, or reconfiguration).
- Deterministic local Aria2 smoke coverage for metadata resolution, selected
output, piece priority, pause/resume, ownership, cancellation/removal,
unavailable trackers, daemon failure, and `bt-stop-timeout` terminal behavior;
@@ -55,14 +61,10 @@ No remaining Tier 0 items.
per-file priority option. Firelink therefore does not pretend that
`select-file` is file priority; this remains pending an engine capability or
a safe product-level model.
2. **Safe removal of unselected files** — expose
`bt-remove-unselected-file` only as an explicit destructive choice, with
ownership-aware confirmation and tests for cancellation, retry, and
reconfiguration.
3. **Encryption policy** — expose `bt-force-encryption`,
2. **Encryption policy** — expose `bt-force-encryption`,
`bt-require-crypto`, and `bt-min-crypto-level` as one validated policy so
users cannot accidentally select contradictory combinations.
4. **Tracker timing controls** — expose tracker connect timeout, request
3. **Tracker timing controls** — expose tracker connect timeout, request
timeout, and interval only when their effect on battery/network behavior is
explained and persisted.
@@ -77,4 +79,5 @@ No remaining Tier 0 items.
The first implementation in this task was remote `.torrent` metadata intake;
follow-up implementations add stall-timeout control, bounded peer diagnostics,
persisted tracker exclusion, and piece-preview priority.
persisted tracker exclusion, piece-preview priority, and safe unselected-file
removal.