2025-11-02 - 2026-11-02
Overview
129 Pull requests merged by 1 user
Merged
#214 e2e server: default port 8093
Merged
#213 List favorites newest first
Merged
#211 Enhance: list every photo's open jobs (jobs manager)
Merged
#210 Clip counts on listings, so clients find photos with only clips
Merged
#209 Derived clips: link MP4 versions, list them apart, video Enhance output
Merged
#205 Enhance: generate 32-bit seeds
Merged
#204 Every error response in the { error, code, details? } format (step 2)
Merged
#203 One error response format: { error, code, details? } (step 1)
Merged
#201 Tag writes: bulk endpoint, and fix remove/re-add/duplicate bugs
Merged
#199 Add GET /enhance/prompts (recent Enhance prompts)
Merged
#198 Photo versions follow-ups (#194)
Merged
#197 Enhance: expose ComfyUI run time as run_ms
Merged
#196 Enhance on demand: ComfyUI templates, jobs, approve as version (#192)
Merged
#195 link_versions: match ComfyUI outputs outside aiedits/; keep real names out of code
Merged
#193 Photo versions: link AI restorations/edits to their original (#191)
Merged
#190 Move LLM config to llm.toml; discover llama-swap models from metadata
Merged
#187 fix(db): stop 'set sqlite pragmas' lock flake on concurrent connects (#157)
Merged
#186 Persona chats from SMS threads (talk about / practice), date_info, photos never sent to OpenRouter
Merged
#185 fix(backfill): convert exiftool-legacy rows whose only dates are zero
Merged
#184 refactor: compile the crate once — main.rs uses the library
Merged
#179 feat(insights): read location context from Apollo (#177)
Merged
#183 fix(images): pick the decoder from the bytes, not the extension
Merged
#182 fix(clip): stop re-sending undecodable files every pass
Merged
#181 fix(dates): resolve IFD0 ModifyDate as a last-resort capture date
Merged
#180 fix(dates): also clear implausible true instants with a good legacy date (#160)
Merged
#178 feat(dates): calendar-day date filters in the owner's display zone (#152)
Merged
#176 fix(dates): year-gate the filename wall-clock patterns (#160)
Merged
#174 feat(image): add a 1024px size=medium preview tier
Merged
#173 fix(image): label thumbnails by their bytes, not the source's name
Merged
#172 chore(e2e): run the e2e dev server on native Linux
Merged
#171 feat(search): explicit filters on unified search; list camera bodies
Merged
#170 fix(chat): budget chat history against the model's served context window
Merged
#169 fix(video): keep signed stream tokens out of logs and traces
Merged
#168 feat(video): short-lived signed URLs for original-quality playback
Merged
#167 perf(video): decode HLS transcode sources on the GPU
Merged
#166 fix(video): stop stream-copying oversized sources into HLS
Merged
#165 fix(dates): read exiftool's word-form GPS hemisphere refs (#163)
Merged
#164 docs: stack architecture diagrams (Apollo / ImageApi / FVR)
Merged
#162 feat(dates): photo date filters on the true instant (#152)
Merged
#161 feat(dates): true_instant + wall_clock on /photos/exif (#113)
Merged
#159 feat(memories): optional reference_date to browse relative to another day
Merged
#158 Feature/no original fallback
Merged
#156 fix(memories): sort Month span by time within a day; test the real sorts
Merged
#155 feat(otel): export logs through the tracing pipeline, correlated with traces (#147)
Merged
#154 test(filename_audit): seed library 2 before its image_exif row (#151)
Merged
#153 docs(agents): the wayfinder:* labels exist now
Merged
#150 docs: LOCAL_BIND_URL in README (constitution IV) + tea label behavior in tracker docs
Merged
#149 docs: amend constitution to v1.1.0 — Observability after the tracing migration
Merged
#146 feat(dates): serve wall_clock + true_instant to clients (#113, #120)
Merged
#148 Tracing: migrate spans from raw OTel SDK to tracing + tracing-opentelemetry (#135)
Merged
#145 dev/e2e: disposable server for app e2e / agent UI testing
Merged
#129 Prefs: owner defaults (model, backend, persona_id, reel span/length)
Merged
#128 feat(prefs): user_ai_prefs surface — GET/PUT /prefs, GET /timezones (#126)
Merged
#125 feat(dates): read paths on the true-instant contract — /memories, reels, insights (#119)
Merged
#124 feat(dates): backfill drain converts mixed-convention rows to true instants (#118)
Merged
#123 feat(dates): pre-cutover audit utility for the filename date class (#117)
Merged
#122 feat(dates): filename date class — per-pattern conventions + filename-over-EXIF priority (#116)
Merged
#121 feat(dates): true-instant date contract — container dates, fs branch, manual edit (#114, #115)
Merged
#112 chore(agents): install mattpocock skills + per-repo agent config
Merged
#111 Feature/agentic loop fixes
Merged
#110 Feature/open chat with persona
Merged
#109 Feature/insight chat branching
Merged
#108 Retry insight persistence with exponential backoff to avoid SQLite lock contention
Merged
#106 Feature/unified nl search
Merged
#107 Feature/memory reels agentic job
Merged
#105 Feature/tts voice management
Merged
#104 Feature/insight history
Merged
#103 Feature/tts integration
Merged
#102 feature/insight-jobs
Merged
#101 feature/llamacpp-backend
Merged
#100 image: add on-demand size=large preview tier (~2048px JPEG q85)
Merged
#99 file_types: filter macOS AppleDouble + .DS_Store from media predicates
Merged
#98 feature/video-frame-rate
Merged
#97 clip-search: accept library_ids (multi-select whitelist) on /photos/search
Merged
#96 feature/clip-semantic-search
Merged
#95 feature/hls-content-hash
Merged
#94 feature/library-patch-endpoint
Merged
#93 feature/date-backfill-null-only
Merged
#92 feature/split-main-rs
Merged
#91 feature/knowledge-curation
Merged
#90 feature/persona-fk-and-guard
Merged
#89 faces: add person_id filter to /faces/embeddings; remove tag-bootstrap
Merged
#88 personas: elevate to server with per-persona fact scoping
Merged
#87 video: handle unknown/short durations in thumb + preview gen
Merged
#86 fix/manual-date-update
Merged
#85 feature/streaming-insights
Merged
#84 memories: restore early-era Snapchat unix-epoch filenames
Merged
#83 feature/insight-chat-improvements
Merged
#82 date_resolver: drop -fast2 so MP4 moov-at-end files resolve
Merged
#81 memories: deny Snapchat-prefixed filenames from timestamp parsing
Merged
#80 memories: reject implausible filename-derived timestamps
Merged
#79 feature/manual-date-override
Merged
#78 otel: revert HTTP transport, keep gRPC
Merged
#77 build: speed up debug compile loop
Merged
#76 feature/canonical-date-taken
Merged
#75 duplicates: folder-pair view of exact dups
Merged
#74 exif: preserve filesystem mtime on GPS write
Merged
#73 feature/duplicate-detection
Merged
#72 perf/faces-embeddings-no-clone
Merged
#71 feature/per-library-excluded-dirs
Merged
#70 multi-library: operator kill switch via libraries.enabled
Merged
#69 feature/library-handoff-and-gc
Merged
#68 multi-library: hash-keyed tagged_photo + photo_insights with reconciliation
Merged
#67 feature/multi-library-data-model
Merged
#66 feature/edit-tag
Merged
#65 faces: count distinct content_hash in stats total_photos
Merged
#64 feature/face-stats-exclude-videos
Merged
#63 indexer: prune EXCLUDED_DIRS at WalkDir time, extract enumerate_indexable_files
Merged
#62 sqlite: enable WAL + busy_timeout in connect(); 408/413/429 transient
Merged
#61 Face Recognition / People Integration
Merged
#60 feat/apollo-places-tool and Geo Tagging Exif
Merged
#59 feat/raw-thumb-embedded-preview
Merged
#58 feature/exif-batch-endpoint for Apollo
Merged
#57 006-bin-cleanup-and-progress
Merged
#56 OpenRouter Support, Insight Chat and User injection
Merged
#54 004 Multi-library Support
Merged
#55 003-knowledge-memory
Merged
#53 002-agentic-insights
Merged
#52 001-video-wall
Merged
#51 Build insight title from generated summary
Merged
#50 Fix video rotation
Merged
#49 Expand temporal context window for SMS retrieval from ±2 days to ±4 days
Merged
#48 feature/gps-map-support
Merged
#47 feature/search-performance
Merged
#46 feature/insights
Merged
#45 Implement critical security improvements for authentication
Merged
#44 feature/exif-endpoint
Merged
#43 Added file date format for memories
Merged
#42 feature/improve-memories-exclude
37 Issues closed from 1 user
Closed
#191 Photo versions: link AI restorations/edits to their original, one photo with a global display choice
Closed
#208 Enhance: Animate a photo (video output), built to support video Enhance next
Closed
#202 One error response format: { error, code, details? }
Closed
#200 Tag writes: bulk endpoint, and fix remove/re-add/duplicate bugs
Closed
#194 Photo versions follow-ups: name-link starvation, stranded annotations, empty aiedits dirs, minor gaps
Closed
#192 Enhance on demand: run a ComfyUI restore template from the apps, approve in-app, lands as a version
Closed
#157 Test: prefs::tests::put_prefs_* flake with "set sqlite pragmas" (database is locked) under the parallel suite
Closed
#177 Insights: read location context from Apollo instead of the stale local location_history
Closed
#113 SPEC: true-instant date contract — one clock for the system
Closed
#120 Dates: big-bang cutover — drain to zero, coordinated flip, verification
Closed
#152 Dates: /photos date_from/date_to filters on the true-instant contract
Closed
#160 Dates: wall-clock filename patterns skip the year plausibility gate (VID_22290524 → year 2229)
Closed
#163 Dates: exiftool GPS hemisphere refs ignored ("West" != "W") — western photos resolve to UTC+8
Closed
#147 Confirm tracing-macro logs reach SigNoz with trace correlation (and keep dev console logs)
Closed
#151 Test: filename_audit run_audit_skips_disabled_and_offline_libraries fails (FK violation seeding rows)
Closed
#133 Spike: validate tracing-opentelemetry context propagation across tokio::spawn
Closed
#134 Migrate spans from raw OTel SDK to tracing + tracing-opentelemetry
Closed
#135 Wayfinder: migrate spans from raw OTel SDK to tracing + tracing-opentelemetry
Closed
#143 Verify parity against the baseline
Closed
#142 Give background jobs a root span
Closed
#141 Migrate the DAO-layer context threading to tracing
Closed
#140 Migrate the LLM client + streaming spans to tracing
Closed
#144 Confirm post-migration span-shape and propagation parity against the baseline
Closed
#137 Capture the pre-migration span baseline
Closed
#139 Add the per-request root span (middleware) and drop per-handler boilerplate
Closed
#138 Wire the tracing subscriber (unify dev console + release OTLP)
Closed
#136 Confirm the per-request root-span middleware works on actix-web 4 + otel 0.31
Closed
#132 Otel: replace remaining ambient Context::current() with threaded context
Closed
#127 Prefs: owner defaults — model, backend, persona_id, reel span/length (new columns)
Closed
#130 Observability: span per LLM call (local + OpenRouter) and traceparent to llama-swap
Closed
#126 Prefs: expose user_ai_prefs — GET/PUT /prefs + GET /timezones (existing columns, no migration)
Closed
#119 Dates: reads + insight context on the new contract (mixed-row safe)
Closed
#118 Dates: the backfill drain — convert mixed-convention rows, progress surface, day-boundary invalidation
Closed
#117 Dates: pre-cutover audit utility for the filename date class
Closed
#116 Dates: filename date class — per-pattern conventions + filename-over-EXIF priority
Closed
#115 Dates: container (video) dates, filesystem branch, manual edit — true instants
Closed
#114 Dates: foundation — schema, EXIF branch re-base, offset cascade, display zone
45 Issues created by 1 user
Opened
#113 SPEC: true-instant date contract — one clock for the system
Opened
#114 Dates: foundation — schema, EXIF branch re-base, offset cascade, display zone
Opened
#115 Dates: container (video) dates, filesystem branch, manual edit — true instants
Opened
#116 Dates: filename date class — per-pattern conventions + filename-over-EXIF priority
Opened
#117 Dates: pre-cutover audit utility for the filename date class
Opened
#118 Dates: the backfill drain — convert mixed-convention rows, progress surface, day-boundary invalidation
Opened
#119 Dates: reads + insight context on the new contract (mixed-row safe)
Opened
#120 Dates: big-bang cutover — drain to zero, coordinated flip, verification
Opened
#126 Prefs: expose user_ai_prefs — GET/PUT /prefs + GET /timezones (existing columns, no migration)
Opened
#127 Prefs: owner defaults — model, backend, persona_id, reel span/length (new columns)
Opened
#130 Observability: span per LLM call (local + OpenRouter) and traceparent to llama-swap
Opened
#131 AI: surface OpenRouter per-request cost to clients (usage.cost)
Opened
#132 Otel: replace remaining ambient Context::current() with threaded context
Opened
#133 Spike: validate tracing-opentelemetry context propagation across tokio::spawn
Opened
#134 Migrate spans from raw OTel SDK to tracing + tracing-opentelemetry
Opened
#135 Wayfinder: migrate spans from raw OTel SDK to tracing + tracing-opentelemetry
Opened
#136 Confirm the per-request root-span middleware works on actix-web 4 + otel 0.31
Opened
#137 Capture the pre-migration span baseline
Opened
#138 Wire the tracing subscriber (unify dev console + release OTLP)
Opened
#139 Add the per-request root span (middleware) and drop per-handler boilerplate
Opened
#140 Migrate the LLM client + streaming spans to tracing
Opened
#141 Migrate the DAO-layer context threading to tracing
Opened
#142 Give background jobs a root span
Opened
#143 Verify parity against the baseline
Opened
#144 Confirm post-migration span-shape and propagation parity against the baseline
Opened
#147 Confirm tracing-macro logs reach SigNoz with trace correlation (and keep dev console logs)
Opened
#151 Test: filename_audit run_audit_skips_disabled_and_offline_libraries fails (FK violation seeding rows)
Opened
#152 Dates: /photos date_from/date_to filters on the true-instant contract
Opened
#157 Test: prefs::tests::put_prefs_* flake with "set sqlite pragmas" (database is locked) under the parallel suite
Opened
#160 Dates: wall-clock filename patterns skip the year plausibility gate (VID_22290524 → year 2229)
Opened
#163 Dates: exiftool GPS hemisphere refs ignored ("West" != "W") — western photos resolve to UTC+8
Opened
#175 Memories: event/burst stacks (time gap + pHash, maybe CLIP)
Opened
#177 Insights: read location context from Apollo instead of the stale local location_history
Opened
#188 TTS: re-evaluate Chatterbox-inside-llama-swap setup
Opened
#189 Embeddings: store the embed-model fingerprint and refuse a mismatched config
Opened
#191 Photo versions: link AI restorations/edits to their original, one photo with a global display choice
Opened
#192 Enhance on demand: run a ComfyUI restore template from the apps, approve in-app, lands as a version
Opened
#194 Photo versions follow-ups: name-link starvation, stranded annotations, empty aiedits dirs, minor gaps
Opened
#200 Tag writes: bulk endpoint, and fix remove/re-add/duplicate bugs
Opened
#202 One error response format: { error, code, details? }
Opened
#206 Enhance: run ComfyUI behind llama-swap on the server
Opened
#207 Enhance: try SageAttention for the SeedVR2 templates
Opened
#208 Enhance: Animate a photo (video output), built to support video Enhance next
Opened
#212 Enhance on videos: Sharpen a video with SeedVR2
Opened
#215 HLS: a transient CUDA out-of-memory marks a video permanently unsupported