nmemmertandClaude Sonnet 4.6 4f7dd3b49b fix: dedupe scan 500 error, SQLite limit crash, add keep-best action
- Replace BigInt hammingDistance with 32-bit popcount — safer (no throw
  on malformed hashes) and ~10× faster
- Make scan() async with setImmediate chunking so the event loop stays
  responsive on large libraries
- Batch getGroups() photo lookup in slices of 900 to stay under SQLite's
  999-variable limit
- Add POST /api/duplicates/keep-best endpoint: scores by resolution then
  filesize, soft-deletes the losers, dismisses the pair
- DuplicateGroup: green "Keep" badge on the best photo, green "Keep best"
  button in footer

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-19 15:45:46 -04:00
2026-08-17 16:33:55 -04:00
2026-08-17 16:33:55 -04:00
2026-08-17 12:59:20 -04:00
S
Description
Self-Hosted Photo Manager
280 KiB
0 Stars 1 Watchers 0 Forks
Languages
JavaScript 97.2%
Python 1.7%
Dockerfile 0.6%
HTML 0.3%
CSS 0.2%