A release built around Timeline Grouping — now an always-visible Years / Months / All control on every timeline, working with active filters and consistent across web and mobile — plus a new People view sort, cross-scope people merge propagation, library data-export groundwork, identity birthday resolution, mobile live-search paging and sort, iOS background-backup reliability, and full Noodle branding of email and in-app store links.
June 16, 2026v4.56.7 to v4.57.032 selected highlights
6Feature highlights
26Important fixes
v4.56.7Previous release
v4.57.0Current release
What changed
The release at a glance
Timeline Grouping graduated from the Photos grid to every timeline: an always-visible Years / Months / All pill on album, space, favorites, and map timelines, correct grouping under active filters, and matching labels and behavior across web and mobile.
People View Sort lets you order the People view by most photos or by name on both web and mobile, with the preference remembered across sessions.
People merge propagation keeps personal and shared-space identities in sync, and space-set birthdays and names now resolve onto the owner's own person pages.
Mobile live search paginates to the full result set with Relevance / Newest / Oldest sort, and iOS background backup was hardened across five PRs including a gentle-sync isolate drain.
Email, notification, and in-app download links are now fully Noodle Gallery branded, closing the last places upstream branding leaked through.
Adds a Years / Months / All switcher to every timeline. Switching compresses the grid to full-width representative cards with a photo count badge. Tapping a card zooms into that period without restricting the query; switching granularity preserves scroll position on both web and mobile.
Propagates person identity merges across accessible scopes. A merge in your personal library propagates to all timeline-enabled Spaces where both profiles appear, and a Space merge carries back into the personal library, keeping the same real person unified everywhere you have access.
Fixes the mobile live-search page-1 cap with an infinite-scroll notifier and 800 ms debounce. Adds Relevance / Newest / Oldest sort matching web parity, moves the sort control to the app bar, and routes "view similar photos" into live search.
Adds a user-controlled sort to the People view on web and mobile — order faces by most photos (the new default) or alphabetically by name, with the preference persisted across sessions. The same control and tie-break rules apply to global people and shared-space people, and the picker keeps its own pinned order.
Adds an admin library-manifest export endpoint that enumerates every original asset in a library — the server-side foundation for one-click "download all your data" portability without making a server-side copy.
Brings the Years / Months / All grouping control to every timeline on mobile via an always-visible bottom pill — album, space, and favorites timelines, plus the map bottom sheet — not just the main Photos grid. Detail timelines open at All and keep their grouping choice scoped to that view.
Fixes grouped timelines rendering empty Months and Years overviews while a filter was active by building proper time buckets in the filtered stream. Relevance-sorted smart-search results correctly fall back to a flat grid instead of blank overview cards.
Aligns the mobile grouping labels with web (Years / Months / All), trims the redundant filter icon from the timeline app bar, and makes the grouping bar transparent on the spaces and albums pages so it matches the main timeline in dark mode.
Stops the year and month overview cover photos flickering to a gray placeholder during initial load by memoizing each bucket's representative for the route, and preserves day-level scroll position when round-tripping through a coarser grouping level.
Rewrites the iOS background backup loop as a bounded, honest worker — reports its actual completion state instead of always claiming success and recovers gracefully from partial runs.
Fixes iOS background backup stopping after the first 100-item batch by paginating the upload notifier so the full asset set drains across multiple background invocations.
Drains in-flight HTTP requests before the iOS background-worker tears down so assets in transit are not abandoned mid-upload when the OS reclaims the background time slot.
Extends the in-flight HTTP drain to the iOS gentle background-sync isolate so a streaming sync response can no longer fire into a torn-down isolate and abort the app, and rebuilds a live HTTP client when a pooled worker isolate is reused.
Scopes the tag view to the requesting member's shared-space access level so non-admin members can no longer enumerate tags outside their permitted assets.
Identity Merge Safety Against Embedding-Distinct Clusters
Guards automatic identity merges from consolidating face clusters whose embeddings are sufficiently distinct that the match is likely spurious, preventing incorrect automatic identity merges.
Keeps shared-space person deduplication chains scoped to individual Spaces so a merge in one Space cannot accidentally collapse identities in unrelated Spaces.
Resolves a person's birthday and name from any of their identity profiles, so a birthday set inside a Shared Space now shows on the owner's own person detail and single-person pages instead of appearing blank.
Stops the face-identity backfill re-queuing full-table passes forever by realigning stranded faces to their current identity, and skips the no-op recount and metadata rewrites that were churning tens of thousands of shared-space person rows on every pass.
Changes the people search filter to require all selected people to appear in a result asset, matching the AND semantics implied by Gallery's filter UI.
Timeline Drill-Up Bounce Fix and Year-Cover Performance
Removes the erratic position bounce when drilling up from Months to Years on mobile, and moves slow year- and month-cover image resolution off the rendering hot path.
Stabilize Mobile Search Filters and Backup Notification
Stabilizes mobile live-search filter interaction and iOS background-backup notification state so concurrent filter changes and upload events do not race each other.
Stop Per-Asset WebSocket Flood on External Library Scans
Batches external-library scan progress instead of emitting a WebSocket event per asset so large connected-library imports no longer flood client connections.
Replaces the racy scroll-to-date broadcast with a durable latch so "View in timeline" — from a memory, notification, deep link, or the asset viewer — reliably lands on the target photo instead of the top of a freshly mounted timeline.
Gates the "Show file location" toggle on the asset path rather than ownership, so members viewing external or shared-library assets can reveal the path the server already sends them. Sanitized shared-link views still omit it.
Resetting the Pet Detection queue now deletes the previous run's pet people and faces before requeuing — instead of leaving stale or duplicated pet labels on assets — and asks for confirmation before wiping detections.
Rewrites the default email and notification templates at build time to remove leftover upstream branding the config UI can't reach — logo, wordmark, store badges, project credit, and default subject lines all become Noodle Gallery.
Repoints the in-app "App download links" modal off the upstream apps so the Play Store, App Store, and releases links send users to Noodle Gallery, guarded by a CI gate that fails if a future rebase reintroduces the upstream links.