You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(ui,tauri): prevent navigation from killing in-progress tasks, add deep scan coordination
The root bug: useStartupRecovery used useRef(false) as a run-once guard,
but navigating to /settings unmounts AppShell. Navigating back remounts a
fresh instance, resetting the ref — so recoverStaleTasks() ran again and
reset the legitimately in-progress task to "failed". Combined with a
missing "failed" case in TaskRow's icon switch, both the spinner and
state icon disappeared completely.
Navigation fix:
- Replace useRef guards in useStartupRecovery and useStartupScan with
module-level flags that survive unmount/remount cycles
- Add "failed" state to TaskRow (red AlertCircle icon + [Failed] prefix)
Deep scan / concurrency fixes:
- Add deep_scanning_repos set to EngineState for scan-task coordination
- engine_start_task waits for active deep scan before starting work,
preventing concurrent Claude CLI instances in the same repo
- engine_scan_now marks/unmarks repos in deep_scanning_repos
- Add busy_timeout(10s) to Rust SQLite connections to avoid SQLITE_BUSY
- Add dbUpdateTaskWithRetry helper for resilient DB writes
- TaskStatusBanner shows amber "Waiting for scan" state
- useStartTask awaits DB write before long-running invoke
- useDeepScanListener re-invalidates active task query after list refetch
0 commit comments