This website requires JavaScript.
82dd21b205
Merge pull request 'feature/duplicate-detection' (#73 ) from feature/duplicate-detection into master
master
cameron
2026-05-03 22:34:49 +00:00
57b7bad086
duplicates: library-aware visibility — only hide a demoted row when its survivor is reachable
Cameron Cordes
2026-05-03 18:24:07 -04:00
98057c98a1
duplicates: tighten perceptual cluster — entropy band, asymmetric dHash, medoid prune
Cameron Cordes
2026-05-03 18:19:48 -04:00
7ca888e95d
duplicates: filter low-entropy hashes + dHash double-check, fix backfill loop
Cameron Cordes
2026-05-03 18:08:05 -04:00
7584cd8792
duplicates: perceptual hash + soft-mark resolution + upload 409
Cameron Cordes
2026-05-03 17:36:01 -04:00
4340b164eb
Merge pull request 'perf/faces-embeddings-no-clone' (#72 ) from perf/faces-embeddings-no-clone into master
cameron
2026-05-01 23:09:22 +00:00
fb4df4b195
style: cargo fmt sweep
Cameron Cordes
2026-05-01 19:01:00 -04:00
1d9b9a0bc4
faces: avoid 40 MB row clone in /faces/embeddings
Cameron Cordes
2026-05-01 19:00:55 -04:00
7998a0c9b0
Merge pull request 'feature/per-library-excluded-dirs' (#71 ) from feature/per-library-excluded-dirs into master
cameron
2026-05-01 20:11:10 +00:00
58f010f302
docs(claude): pin excluded_dirs entry-form syntax
Cameron Cordes
2026-05-01 20:05:58 +00:00
814066551e
multi-library: per-library excluded_dirs
Cameron Cordes
2026-05-01 19:54:17 +00:00
4f17af688e
Merge pull request 'multi-library: operator kill switch via libraries.enabled' (#70 ) from feature/library-enabled-flag into master
cameron
2026-05-01 19:15:20 +00:00
3598bb2cfe
multi-library: operator kill switch via libraries.enabled
Cameron Cordes
2026-05-01 19:10:24 +00:00
23448cf5e6
Merge pull request 'feature/library-handoff-and-gc' (#69 ) from feature/library-handoff-and-gc into master
cameron
2026-05-01 18:27:40 +00:00
d809ddee44
library_maintenance: clarify orphan-gc log wording
Cameron Cordes
2026-05-01 18:01:01 +00:00
fa98d147be
library_maintenance: log orphan-gc decisions in stale-library path too
Cameron Cordes
2026-05-01 17:14:09 +00:00
5f247be1f1
docs(claude): note in-place edit gap as future Branch D
Cameron Cordes
2026-05-01 16:53:08 +00:00
263e27e108
multi-library: handoff + orphan GC with two-tick consensus
Cameron Cordes
2026-05-01 16:27:53 +00:00
a0283a6362
Merge pull request 'multi-library: hash-keyed tagged_photo + photo_insights with reconciliation' (#68 ) from feature/hash-keyed-derived-data into master
cameron
2026-05-01 16:16:38 +00:00
48cac8c285
multi-library: hash-keyed tagged_photo + photo_insights with reconciliation
Cameron Cordes
2026-05-01 14:52:16 +00:00
cce8f0c1b7
Merge pull request 'feature/multi-library-data-model' (#67 ) from feature/multi-library-data-model into master
cameron
2026-05-01 14:40:16 +00:00
48ed7be5d9
libraries: initial availability sweep before watcher's first sleep
Cameron Cordes
2026-05-01 14:33:45 +00:00
eea1bf3181
multi-library: availability probe + scoped EXIF queries + collision fixes
Cameron Cordes
2026-05-01 14:12:49 +00:00
2f91891459
docs(claude): pin multi-library data model + availability/safety policy
Cameron Cordes
2026-05-01 14:11:42 +00:00
3d162105f7
Merge pull request 'feature/edit-tag' (#66 ) from feature/edit-tag into master
cameron
2026-05-01 01:03:40 +00:00
98601973f7
faces: log at the three 503 paths in update_face_handler
Cameron
2026-04-30 20:57:51 -04:00
862917b0d1
gitignore: SQLite WAL runtime + local docs/specs dirs
Cameron
2026-04-30 20:31:19 -04:00
44d677528e
tags: add edit + delete endpoints, enable FK enforcement
Cameron
2026-04-30 20:26:35 -04:00
89b743ba54
Merge pull request 'faces: count distinct content_hash in stats total_photos' (#65 ) from face-stats-dedup-hash into master
cameron
2026-04-30 22:43:58 +00:00
323097c650
faces: count distinct content_hash in stats total_photos
Cameron Cordes
2026-04-30 22:41:20 +00:00
d0833177c7
Merge pull request 'feature/face-stats-exclude-videos' (#64 ) from feature/face-stats-exclude-videos into master
cameron
2026-04-30 21:17:19 +00:00
67abd8d8ff
style: cargo fmt
Cameron Cordes
2026-04-30 21:16:34 +00:00
0840d55c70
faces: exclude videos from backlog drain and SCANNED denominator
Cameron Cordes
2026-04-30 21:16:30 +00:00
dbb046dfa8
Merge pull request 'indexer: prune EXCLUDED_DIRS at WalkDir time, extract enumerate_indexable_files' (#63 ) from feature/exclude-dirs-at-index-time into master
cameron
2026-04-30 20:24:18 +00:00
f50655fb21
indexer: apply EXCLUDED_DIRS to remaining WalkDir callers
Cameron Cordes
2026-04-30 20:17:51 +00:00
5bf49568f1
indexer: prune EXCLUDED_DIRS at WalkDir time, extract enumerate_indexable_files
Cameron Cordes
2026-04-30 19:29:37 +00:00
f358e83050
Merge pull request 'sqlite: enable WAL + busy_timeout in connect(); 408/413/429 transient' (#62 ) from feature/sqlite-wal-and-413-transient into master
cameron
2026-04-30 18:16:38 +00:00
db9dc63e5e
sqlite: enable WAL + busy_timeout in connect(); 408/413/429 transient
Cameron Cordes
2026-04-30 18:10:59 +00:00
9443c91f88
Merge pull request 'Face Recognition / People Integration' (#61 ) from feature/face-recog-phase3-file-watch into master
cameron
2026-04-30 17:22:08 +00:00
96c539764c
docs: face detection system section + per-tick backlog drain env vars
Cameron Cordes
2026-04-30 14:06:42 +00:00
675b4a4849
faces: add .env.example template covering all documented env vars
Cameron Cordes
2026-04-30 13:51:45 +00:00
5e1bad3179
faces: filter videos out of detection candidate set
Cameron Cordes
2026-04-30 12:45:55 +00:00
1971eeccd6
faces: drain backfill + detection backlog every tick, not just full scans
Cameron Cordes
2026-04-30 01:46:49 +00:00
c2c1fe5b8b
faces: bbox crop respects EXIF orientation + pads enough for RetinaFace
Cameron Cordes
2026-04-30 01:06:08 +00:00
5a2f406429
faces: bbox edits survive when re-detection finds no face
Cameron Cordes
2026-04-30 01:01:07 +00:00
6a6a4a6a46
tags: batch lookup expands content-hash siblings cross-library
Cameron Cordes
2026-04-30 00:36:44 +00:00
3112260dc8
tags: batch lookup endpoint to collapse photo-match fan-out
Cameron Cordes
2026-04-30 00:28:33 +00:00
16abacf4c5
faces: backfill no longer stalls on chronic-error files at the front
Cameron Cordes
2026-04-30 00:03:26 +00:00
891a9982ef
faces: force-create path for regions the detector can't see
Cameron Cordes
2026-04-29 23:49:34 +00:00
0eaf27d2d3
faces: cover hydrate_face_with_person — assigned + unassigned branches
Cameron Cordes
2026-04-29 23:41:52 +00:00
0c2f421a1f
faces: PATCH/POST /image/faces returns person_name with the row
Cameron Cordes
2026-04-29 23:38:24 +00:00
43cb60d3ad
faces: re-embed on bbox edit instead of leaving the embedding stale
Cameron Cordes
2026-04-29 23:10:25 +00:00
7303fb8aa3
faces: ignore/junk bucket — DB schema + lazy-create endpoint
Cameron Cordes
2026-04-29 22:48:16 +00:00
0e160f5d22
faces: include bbox on /faces/embeddings response
Cameron Cordes
2026-04-29 21:01:58 +00:00
a24fac5511
faces: backfill missing content_hash from the file watcher
Cameron Cordes
2026-04-29 20:41:08 +00:00
23f4941471
faces: surface enabled/disabled state + per-tick candidate count
Cameron Cordes
2026-04-29 20:19:17 +00:00
41f93d70d1
faces: tighten bootstrap candidate filter, bump to 1.1.0
Cameron Cordes
2026-04-29 19:05:04 +00:00
1859399759
faces: phase 4 — people-tag bootstrap + auto-bind on detection
Cameron Cordes
2026-04-29 18:55:01 +00:00
f985a0d658
faces: surface UNIQUE constraint as 409, not 500
Cameron Cordes
2026-04-29 18:44:10 +00:00
4dee7b6f73
faces: phase 3 — file-watch hook drives auto detection
Cameron Cordes
2026-04-29 18:21:19 +00:00
f77e44b34d
faces: fix PathExcluder false-positive + cover face_client/crop in tests
Cameron Cordes
2026-04-29 18:09:44 +00:00
860169032b
faces: phase 2 — schema + manual face/person CRUD
Cameron Cordes
2026-04-29 18:03:42 +00:00
6642db3c8b
Merge pull request 'feat/apollo-places-tool and Geo Tagging Exif' (#60 ) from feat/apollo-places-tool into master
cameron
2026-04-28 23:09:33 +00:00
57fb0bcd3c
EXIF GPS write: POST /image/exif/gps via exiftool
Cameron Cordes
2026-04-28 22:25:40 +00:00
4ae7be35e9
Apollo Places: enrich insights with personal place name + notes
Cameron Cordes
2026-04-28 19:11:12 +00:00
9d58547ce3
Merge pull request 'feat/raw-thumb-embedded-preview' (#59 ) from feat/raw-thumb-embedded-preview into master
cameron
2026-04-28 17:21:27 +00:00
6521a328bf
RAW preview: exiftool fallback for MakerNote / SubIFD previews
Cameron Cordes
2026-04-28 17:13:36 +00:00
00b3c80141
RAW: try IFD0 + IFD1 for embedded preview, serve at full size
Cameron Cordes
2026-04-28 16:52:10 +00:00
a53c3ae514
Merge pull request 'feature/exif-batch-endpoint for Apollo' (#58 ) from feature/exif-batch-endpoint into master
cameron
2026-04-28 12:58:30 +00:00
7621282419
Thumb orientation + library filter on /photos/exif
Cameron Cordes
2026-04-27 17:29:36 -04:00
c6f82ebaba
Batch EXIF endpoint: GET /photos/exif
Cameron Cordes
2026-04-27 16:38:53 -04:00
9cf3af383d
Merge pull request '006-bin-cleanup-and-progress' (#57 ) from 006-bin-cleanup-and-progress into master
cameron
2026-04-27 20:28:32 +00:00
b9d5578653
feat(bins): multi-library populate_knowledge + progress UX
Cameron
2026-04-26 23:55:33 -04:00
d5f944c7b6
chore(bins): retire unused migrate_exif
Cameron
2026-04-26 23:55:06 -04:00
2db611e1c1
Merge pull request 'OpenRouter Support, Insight Chat and User injection' (#56 ) from 005-llm-client-trait into master
cameron
2026-04-26 23:01:33 +00:00
21e624da6b
fix(video): sentinel for failed HLS encodes to stop retry loop
Cameron
2026-04-26 01:06:13 -04:00
021d1bffc0
chore: ignore db backups and local .idea config files
Cameron
2026-04-24 19:13:28 -04:00
fa21b0d73d
chore(ai): disable default few-shot insight ids
Cameron
2026-04-24 19:12:25 -04:00
0e55a6b125
fix(ai): treat rewind at end of history as no-op success
Cameron
2026-04-24 19:12:17 -04:00
0ebc2e9003
feat(ai): rerank timing + think:false + OpenRouter error detail
Cameron
2026-04-24 16:19:45 -04:00
e5781325c6
fix(ai): render tool-call arguments as compact JSON in logs
Cameron
2026-04-24 14:25:53 -04:00
d43f5fc991
docs: document OLLAMA_REQUEST_TIMEOUT_SECONDS env var
Cameron
2026-04-24 13:54:23 -04:00
f0ae9f95dc
feat(ai): few-shot exemplars + sticky Ollama preference
Cameron
2026-04-24 13:54:06 -04:00
29f32b9d22
FFMPEG playlist improvements
Cameron
2026-04-24 10:08:03 -04:00
13b9d54861
fix(scan): quiet startup scans & thumbnail RAW/HEIC
Cameron
2026-04-23 20:47:13 -04:00
dc2a96162e
fix(dates): prefer earliest of fs created/modified as fallback
Cameron
2026-04-23 17:20:12 -04:00
d54419e779
style: cargo fmt drift
Cameron
2026-04-23 17:19:59 -04:00
aa651d1c7b
feat(ai): iteration budget in prompt + preserve photo-knowledge links
Cameron
2026-04-23 16:28:48 -04:00
6831f50993
feat(ai): USER_NAME env + shared summary prompt + test-bin knobs
Cameron
2026-04-22 23:39:37 -04:00
e4a3536f87
feat(ai): search_messages tool + RAG reranker
Cameron
2026-04-22 10:56:03 -04:00
e51cd564a3
docs: chat continuation endpoints + env vars
Cameron
2026-04-21 17:32:43 -04:00
079cd4c5b9
feat(ai): streaming chat endpoint with live tool events
Cameron
2026-04-21 16:57:41 -04:00
c2bd3c08e1
feat(ai): surface tool invocations in chat history
Cameron
2026-04-21 16:03:53 -04:00
65ab10e9a8
feat(ai): chat rewind + ollama metrics logging
Cameron
2026-04-21 15:16:32 -04:00
0b9528f61e
feat(ai): chat continuation for photo insights (server v1)
Cameron
2026-04-21 13:00:27 -04:00
e2eefbd156
feat(ai): curated OpenRouter model picker for hybrid backend
Cameron
2026-04-21 10:36:19 -04:00
3ac0cd62eb
feat(ai): hybrid backend mode for agentic insights
Cameron
2026-04-20 22:30:40 -04:00
e799ba716c
feat(ai): add OpenRouterClient implementing LlmClient
Cameron
2026-04-20 22:18:29 -04:00
0073409b3d
refactor: introduce LlmClient trait (no-op)
Cameron
2026-04-20 22:11:05 -04:00
702aa8078c
Merge pull request '004 Multi-library Support' (#54 ) from 004-multi-library into master
cameron
2026-04-21 01:55:22 +00:00