Based on Immich v2.7.5
Changes
- feat(manifest): admin library-manifest export endpoint (#700)
- fix(ci): deploy docs to Bunny instead of S3/CloudFront (#698)
- feat(i18n): add German and French translations for fork-only strings (#697)
- fix(pet-detection): clear existing detections when the queue is reset (#695)
- fix(ci): build iOS Flutter plugins with CocoaPods so background_downloader (iOS 14) resolves (#693)
- fix(mobile): drain in-flight HTTP before gentle sync isolate teardown (#692)
- fix(web): make timeline grouping bar transparent in spaces and albums (#691)
- fix(person): resolve identity birthday/name for the owner's single-person view (#690)
- fix(ci): adapt rebase-smoke to #688 path visibility; free disk for SM-E2E (#689)
- fix(face-identity): resolve shared-space person birthday from any identity profile (#686)
- fix(server): stop endless FaceIdentityBackfill loop and shared_space_person updatedAt churn (#687)
- fix(web): let non-owners reveal asset file path in info panel (#688)
- feat(mobile): timeline grouping pill on the map bottom sheet (#684)
- fix(web): route shared-space people edits to space endpoints; gate viewers
- chore(web): prettier format person.service.spec
- test(e2e): cover shared-space person edits from the main People view
- fix(web): route name/representative-face edits for shared-space people, gate writes for viewers
- fix(web): route hide/unhide for shared-space people, gate favorite
- fix(web): route birthday edits for shared-space people to the space endpoint
- feat: user-controlled People view sort on web and mobile (#683)
- feat(mobile): always-visible grouping bottom pill on detail timelines (#681)
- fix(mobile): timeline grouping works with active filters (Months/Years no longer empty) (#679)
- fix(mobile): timeline overview cover flicker + grouping round-trip scroll jump (#680)
- fix(mobile): trim timeline app bar — drop redundant filter icon, slim grouping chip (#677)
- fix(mobile): timeline grouping labels match web (Years/Months/All) + bounce returns to Years (#674)
- ci(release): publish version endpoint to Bunny instead of S3/CloudFront (#673)
- fix(timeline): drill-up bounce on mobile + move slow year/month covers off the hot path (#670)
- fix(mobile): pin multi_json so fastlane release bundle resolves (#669)
- fix(server): keep shared-space person dedup to one chain per space (#665)
- feat: add timeline grouping display modes (#625)
- fix(web): send shared-link expiresAt as UTC datetime (#667) (#668)
- fix(mobile): reconnect iOS foreground HTTP session on resume (#663)
- fix(server): guard automatic identity merges against embedding-distinct clusters (#652)
- feat: propagate people merges across scopes (#614)
- fix(server): unstick shared-space face-recognition jobs (#648)
- fix(mobile): continue iOS background backup past the first 100-item batch (#658)
- fix(mobile): drain in-flight HTTP before iOS background-worker teardown (#657)
- feat(mobile): infinite scroll + sort for live search (#654)
- fix(server): scope tag view to shared-space access for non-admins (#647) (#651)
- fix(branding): repoint App download links modal off Immich apps (#649) (#653)
- fix(server): scope Folder Explorer to shared-space access for non-admins (#637) (#646)
- fix(branding): rebrand notification/email templates to Noodle Gallery (#636) (#644)
- fix(mobile): reliably scroll to a photo's date from memories (#643)
- fix(mobile): pin glance-appwidget to stable 1.1.1 to unblock Android release (#640)
- fix(mobile): reliable & honest background backup (#639)
- fix(server): require all selected people in search filters (#630)
- fix(mobile): stabilize search filters and iOS backup notification (#627)
- chore: add certificates and mobile signing files to .gitignore (#638)
- fix(web): stop broken space person face thumbnail for non-owner viewers (#615)
- fix(server): stop per-asset websocket flood for external library scans (#618)
- ci: drop unreachable comment action from disabled docs-deploy (#617)