v0.3.0: cancelable device sync
A "✕" button sits left of the sync progress group and expands to "cancel transfer" on hover; clicking asks Cancel Transfer / Keep Copying (the copy keeps running under the dialog). Cancel stops the worker at the next chunk boundary, removes the in-flight partial file, and rewrites the m3u to list only tracks actually on the device — so a cancelled sync always leaves a coherent partial playlist. That last bit also closes a pre-existing gap: stale files are deleted before copying, so an interruption could previously leave the old m3u pointing at deleted files. Recoverability proven both ways: a test asserts cancel-then-resync ends byte-identical to an uninterrupted sync, and a live run against the real Rabbit (cancel mid-file-2 of 3) recovered with kept=1/copies=2. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -24,6 +24,20 @@ When a round closes, move its finished items to `tasks-done.md`.
|
||||
|
||||
# old
|
||||
|
||||
## Round 28 — cancelable device sync (v0.3.0)
|
||||
|
||||
- [x] "✕" button left of the sync progress group; expands to "cancel transfer"
|
||||
on hover; confirm dialog (Cancel Transfer / Keep Copying) before cancelling.
|
||||
- [x] `DeviceSyncWorker.cancel()`: stops at the next chunk boundary, removes
|
||||
the in-flight partial file, emits `cancelled` with copied/total counts.
|
||||
- [x] Cancelled syncs always leave a coherent device folder: the m3u is
|
||||
rewritten to list only tracks actually present (fixes the pre-existing gap
|
||||
where stale files deleted before a cancel could leave dangling m3u refs).
|
||||
- [x] Recoverability verified: cancel-then-resync produces byte-identical
|
||||
results to an uninterrupted sync (test + live run against the real Rabbit).
|
||||
|
||||
Tests in `tests/test_round28.py`. Feature round → minor bump **0.3.0**.
|
||||
|
||||
## Round 27 — device-sync guards (v0.2.2)
|
||||
|
||||
- [x] Quit warning while a transfer is copying (closeEvent; covers X button,
|
||||
|
||||
Reference in New Issue
Block a user