Based on Immich v2.7.5
Changes
- fix(web): stop space person merge from reloading the deleted person (#603)
- fix(ci): guard mobile builds against missing libsqlite3.so (#611)
- ci: decouple mobile and server release workflows (#612)
- test: combine face recognition safety slices
- fix(server): recover timezone from uploaded instant for zone-less EXIF (#608)
- test: cover face identity backfill metadata safety (#606)
- fix(server): keep force recognition scoped to ML faces (#600)
- test: cover face detection identity safety (#601)
- Merge pull request #599 from open-noodle/codex/face-queues-test-plan
- test: format face trigger specs
- docs: format face trigger coverage plan
- test: tighten face queue regression coverage
- test: refine bootstrap backfill status assertion
- test: cover person bootstrap face trigger contracts
- test: harden face queue negative assertions
- test: isolate pet detection error paths
- test: address face trigger contract review
- test: cover duplicate and pet face trigger contracts
- test: align shared space add-assets face fixture
- test: clean up shared space face trigger fixtures
- test: tighten shared space face trigger assertions
- test: cover shared space face trigger contracts
- test: tighten metadata face trigger specs
- test: cover metadata face trigger contracts
- test: avoid no-asset empty queue assertion
- test: tighten library face trigger contracts
- test: cover library face trigger contracts
- test: clean up manual face trigger specs
- test: tighten manual face trigger specs
- test: cover manual face trigger contracts
- test: guard face root batch enqueue
- test: tighten face queue trigger contracts
- test: cover active face root start rejection
- test: harden face queue trigger assertions
- test: cover scheduled face queue triggers
- docs: harden face trigger coverage plan
- docs: add face trigger coverage implementation plan
- docs: cover overnight face identity regression
- docs: add face identity queue testing plan
- Merge pull request #593 from open-noodle/fix/exif-space-people
- fix(server): skip motion photo extraction on negative read position
- fix(server): run tag upsert on the transaction connection to avoid pool deadlock
- Merge pull request #594 from open-noodle/readme-update
- test(server): update medium test for SharedSpaceFaceMatchFromBackfill job name
- chore: update readme
- Merge pull request #591 from open-noodle/investigate-people-sort
- chore(generated): regenerate OpenAPI clients for SharedSpaceFaceMatchFromBackfill
- fix(server): include trimmed sort index in revert cleanup
- test(server): cover handleSharedSpaceFaceMatchFromBackfill with dedicated test suite
- fix(server): route EXIF and backfill space face matching through PeopleBackfill queue
- fix(web): load space people thumbnails eagerly
- fix(server): migrate trimmed space people sort index
- fix: align people sort formatting and index
- test(e2e): cover people sort order
- fix(server): sort space people by canonical order
- fix(server): sort identity people by canonical order
- fix(server): sort non-shared people by canonical order
- fix(web): sort unnamed people by photo count
- test: cover people management sorting
- docs: plan people sort order implementation
- fix(server): removeOnComplete for FaceIdentityBackfill root job to allow re-trigger (#590)
- docs: design people sort order
- feat(server): auto-queue People Identity Maintenance after Facial Recognition drains (#589)
- fix(server): fetch queue job types in parallel, drop per-job getState calls (#585)
- fix(mobile): preserve birth date when serializing date fields (#584)
- docs: remove personal instance references from CLAUDE.md and plans (#588)
- fix(release): attach docker-compose.yml and example.env to every release (#587)
- docs: add AI and Immich acknowledgements to README (#586)