Shows amber banner with up to 4 thumbnails, overflow count,
and favorite total — only visible when favorites exist.
Built with DOM methods (no innerHTML) to avoid XSS risk.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Detects QR codes (QR_), barcodes (BC_), faces (FACE_/GROUP_),
and panoramas (PANO_) per photo using OpenCV — no new dependencies.
Opt-in checkboxes in the rename tab; prefixes prepend to filename.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- swipe left/right to reject/keep, swipe up for favorite
- card tilts and overlays fade in proportionally during drag
- snap-back animation when swipe distance below threshold
- touchcancel handled identically to touchend
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- #10: filename dedup counter zero-padded (_001, _002 instead of _1, _2)
- #8: hint below auto-detect button clarifies it samples first photo only
- #9: note above export button that all output is JPEG (PNG alpha lost)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Fix absolute API paths in index.html (/analyze, /move, /preview → relative)
- Allow all CORS origins in server.py for reverse-proxy compatibility
- Add tech stack section to README.md
- Create .vch-description for VCH Showcase
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>