26 Commits

Author SHA1 Message Date
af433d7f7f merge_orphans --apply: 56 approved orphans moved to by_date (EXIF-routed), verified 43+ in place 2026-08-10 13:37:02 +10:00
eef243297f Add merge_orphans: dedup orphans vs by_date + EXIF-date routing (dry-run verified: 2,311 moves, 0 collisions) 2026-08-10 06:24:15 +10:00
1edafbfac8 Add 10s per-file timeout to scan_once (prevents hung file blocking large scans) 2026-08-10 06:01:51 +10:00
d2a58caca6 Fix wrong-picture bug: thumbs keyed by sha256 (was filename); single-item actions via fetch+remove (reliable) 2026-08-09 15:48:22 +10:00
73f6f291f1 Dashboard UX: auto-submit filter on dropdown change, clickable status cards, clearer status labels 2026-08-09 15:04:47 +10:00
2945b1c0f6 Quality scan v4: calibrated PIL verdicts (dark/blurry, 300px downscale, threshold 200); persist status+flag_reason; lazy thumbnails (11.5s→0.08s page load) 2026-08-09 14:11:54 +10:00
03f8af42c5 Single-pass scan_once (fixes O(n²) re-walk + engine busy-loop); gracefully skips corrupt files 2026-08-08 17:00:04 +10:00
5fb9358b5f Speed: dhash-only rows (0.21s→6ms/file); gate near-dup+phash behind flag; fix hx UnboundLocalError; loop in single task (engine deadlock fix); photo_watch uses ingest flow 2026-08-08 15:30:34 +10:00
32978030c3 Fix near-dup blocking registration: flag near-dups but always register (phone burst shots were falsely flagged); verified on phone_dumps (104 files, 0 missing) 2026-08-08 14:59:42 +10:00
a776722d53 Fix PIL import in check_and_register (real infinite-loop cause); known_paths table for dup-path tracking 2026-08-08 14:34:30 +10:00
39b5a39334 Fix infinite loop in find_unprocessed: check sha256 content (not just path), record dup paths; Optional[int] for max_batches 2026-08-08 13:55:40 +10:00
0d20c29f35 Pagination (200/page), batched+checkpointed ingest (batch_size, resume-safe), quality max_files slicing, upload page; Caddy routes for prefect/photo-filter 2026-08-08 13:36:00 +10:00
1814b5c5c4 Dashboard: pipeline status view (Prefect flow runs + recent review actions, 30s auto-refresh); reviewed_at column 2026-08-08 11:23:00 +10:00
a6d0ced949 Fix selection state: derive from DOM (single source of truth), clear browser-restored form state on load 2026-08-08 10:47:26 +10:00
a15ee5728d Fix dashboard review speed: DB-only decisions (0.03s vs 11.6s); add process-staging flow for moves 2026-08-08 10:39:10 +10:00
91972fe0ac Dashboard: select-all + bulk keep/reject/reset (htmx + bulk endpoint) 2026-08-08 09:53:58 +10:00
e7c0bfc584 Add system README/how-to (dashboard, prefect, paths, safety) 2026-08-08 09:52:41 +10:00
4209a1153e Add watch-folder trigger flow (auto-chain on incoming manifests/archives) 2026-08-08 09:19:58 +10:00
10b4b0b2f1 Dashboard: real file moves on approve/reject, full-image links, folder targets 2026-08-08 09:19:04 +10:00
b7d7ef38b4 Add Apprise notifications to quality-scan (self-hosted apprise server); dashboard ready 2026-08-08 09:05:25 +10:00
11e79b7066 Add FastAPI+htmx review dashboard (port 8092, systemd service) 2026-08-08 08:52:17 +10:00
5ca92fec7b Immich import via server-bundled CLI (v2.7.5); ssh key fix; verified dedup 2026-08-07 21:25:21 +10:00
5f8d6ce9ad Use --skip-hash with least-privilege API key (CLI dup-check bug #21456) 2026-08-07 21:09:36 +10:00
493dab0212 Add Immich import flow; ignore node_modules, secrets 2026-08-07 21:09:21 +10:00
6b3ab9f651 Add CleanVision quality-scan flow (photo-quality-scan) + README 2026-08-07 20:45:33 +10:00
16123d00f1 Initial: fingerprint DB + Takeout fetch + ingest flows 2026-08-07 20:41:32 +10:00