Symptom
When a scan finishes (either a full scan or a per-creator rescan), nothing tells the user it's done — no toast, no banner. The grid silently refreshes.
Likely cause
ScanButton (frontend/src/components/ScanButton.tsx) detects completion via the wasRunningRef transition and calls onScanComplete?.() (refetch) but never surfaces a notification. The backend already produces a completion summary string (done — N models, M files[, P removed], set in services/scanner.py per #223) in the scan state, so the message is available to display.
Proposed
On the running→idle transition in ScanButton, show a success toast with the backend's completion summary (status.message / equivalent). Confirm the per-creator Rescan path (Creators page) also routes through something that fires the toast.
Acceptance
- Completing a full scan shows a toast like "Scan complete — N models, M files".
- Completing a per-creator rescan shows an equivalent toast.
- Zero-change scans still notify (don't swallow the "0 added" case).
Symptom
When a scan finishes (either a full scan or a per-creator rescan), nothing tells the user it's done — no toast, no banner. The grid silently refreshes.
Likely cause
ScanButton(frontend/src/components/ScanButton.tsx) detects completion via thewasRunningReftransition and callsonScanComplete?.()(refetch) but never surfaces a notification. The backend already produces a completion summary string (done — N models, M files[, P removed], set inservices/scanner.pyper #223) in the scan state, so the message is available to display.Proposed
On the running→idle transition in ScanButton, show a success toast with the backend's completion summary (
status.message/ equivalent). Confirm the per-creator Rescan path (Creators page) also routes through something that fires the toast.Acceptance