tocmo
356f922940
feat: replace Cancel with Pause/Resume — survives server restarts
...
- scanner.py: replace cancel_requested with pause_requested throughout;
pause during walk drains in-flight futures gracefully then saves state;
phash phase processes in 500-image chunks with pause check between each;
_save_pause_state() persists files_indexed/phashes_done/last_phase to DB;
init_db() already detects killed-mid-scan (running→paused) on startup
- main.py: add POST /api/scan/pause and POST /api/scan/resume endpoints;
/api/scan/cancel kept as alias; scan_status now returns folder_path,
files_indexed, phashes_done; scan_reset clears all new fields
- index.html: "Cancel" → "⏸ Pause" button; new #paused-area banner shows
folder, files indexed, phashes done with "▶ Resume" and "Full reset"
buttons; updateScanUI handles paused status; pauseScan()/resumeScan()
JS functions added; chip gains .paused amber style
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-05 02:11:00 -04:00
tocmo
c19825c523
Add server-side folder picker
...
New GET /api/browse endpoint lists subdirectories at any path.
UI gets a folder icon button next to each path input that opens
a browsable directory tree modal. Escape or Cancel closes it,
clicking a folder navigates into it, Select confirms the choice.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-04 23:55:42 -04:00
tocmo
868da9016d
Initial implementation of duplicate finder
...
Full project per spec: FastAPI backend, 4-method duplicate detection
(SHA-256, phash, EXIF, filesize), Google Takeout pre-processor,
4 scan modes, and dark-theme vanilla JS gallery frontend.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-04 23:42:58 -04:00