fix(native-worker): keep batches and retries intact across seam races

- Verification challenge no longer abandons the batch: batch mates the
  worker cancel would mark skipped are requeued and fenced from later
  snapshot applications, and the adoption loop restarts the queue for
  requeued items when the run ends
- Pause vs cancel race: a cancelled result with no pause flag set waits
  up to 1.5s for the pause intent to land on the main looper before
  being classified as a permanent skip
- Stale Go cancel flag: new ResetDownloadCancel export (wired through
  Android and iOS bridges) drops a pre-registered cancel with no active
  download; retryItem/retryAllFailed call it so the first retry of a
  cancelled-before-start item no longer aborts instantly
- Reconcile-loop errors now cancel the native worker and clear the run
  id before marking items failed, instead of leaving the service
  downloading a batch the UI already wrote off
This commit is contained in:
zarzet committed 2026-07-10 10:18:03 +07:00
1 parent d819878ec7
commit 9b7f1631f0
8 files changed
+151 -1

No files matched your search

+7 -1
View File
@@ -431,7 +431,13 @@ import Gobackend
let itemId = args["item_id"] as! String
GobackendCancelDownload(itemId)
return nil
case "resetDownloadCancel":
let args = call.arguments as! [String: Any]
let itemId = args["item_id"] as! String
GobackendResetDownloadCancel(itemId)
return nil
case "setDownloadDirectory":
let args = call.arguments as! [String: Any]
let path = args["path"] as! String