Right now if a user starts the Duplicates scan and it's taking too long, they have to force-quit. We should let them cancel cleanly.
Task
- In
ScanCoordinator.swift, the cancel() method exists but isn't exposed in views.
- Add a small "Cancel" button next to the
ScanProgressRing in:
SmartScanView.swift (scanning state)
DuplicatesView.swift (scanning state)
- The button should call
appState.scanCoordinator.cancel() and transition back to .idle.
Acceptance criteria
- Clicking Cancel during a scan returns to the idle view within 1 second
- No crashes or orphan tasks
Files to change
Sources/MacClean/Views/SmartScan/SmartScanView.swift
Sources/MacClean/Views/Files/DuplicatesView.swift
Right now if a user starts the Duplicates scan and it's taking too long, they have to force-quit. We should let them cancel cleanly.
Task
ScanCoordinator.swift, thecancel()method exists but isn't exposed in views.ScanProgressRingin:SmartScanView.swift(scanning state)DuplicatesView.swift(scanning state)appState.scanCoordinator.cancel()and transition back to.idle.Acceptance criteria
Files to change
Sources/MacClean/Views/SmartScan/SmartScanView.swiftSources/MacClean/Views/Files/DuplicatesView.swift