- Story layout filename caption setting and editable footer
3.174.0-beta.0 (2026-10-15)
Features
Bug Fixes
- activity: attribute activity-log entries to the right admin and gallery (#2034) (cb5db7d)
- activity: log quote, invoice and billing actions under their admin (#2009) (39c7327)
- admin: leave Escape and Enter of an IME composition to the field (#2051) (f43059d)
- archive: remove restored-from zips after a portable import and at the old shared key (#2039) (381bf78)
- archive: run one archive job per gallery at a time (#2014) (3f4848a)
- backup: harden manifest key creation, directory trust and old-key verification (#2021) (ae66259)
- backup: self-heal a writable manifest key and fail before the copy (#2015) (1c5f793)
- crm: check the gallery slug a quote or contract conversion draws (#2044) (fc69695)
- crm: return the gallery on a repeated conversion, create one on concurrent ones (#2053) (60de77a)
- customers: attribute resent mail by its original time and bound legacy accounts by creation (#2049) (6e26aa3)
- customers: bound erasure of mail to the current address by the customer's tenure (#2031) (be1c587)
- customers: erase mail queued or sent to a former address (#1997) (a736ba1)
- customers: keep a moved account's password out of reach of its old address (#2041) (15206e3)
- delivery: end a promised delivery day in the instance time zone (#2050) (919d173)
- delivery: one calendar-day rule for promised delivery, document due dates and email dates (#2032) (b8938b0)
- events: end a date-only gallery expiry at the end of that day in the instance zone (#2011) (0d24861)
- events: read stored expiry and due dates in UTC for the settings date fields (#2001) (2ba2529)
- expiry: retry failed expiry archives, re-check expiry under the claim, hold the claim on extend (#2035) (b080176)
- external: refresh a reference photo whose file was edited in place (#2052) (8e1076b)
- faces: log face-recognition activity with its gallery and actor (#2003) (91a8e7f)
- feedback: accept accented and non-Latin guest names (#2020) (f3d9859)
- gallery, customer: keyboard focus in phone drawers, wrapping sort buttons (#2023) (7f2c9ab)
- gallery: ask for name and email before a hand-over when the gallery requires them (#2006) (2d68648)
- gallery: bulk downloads hold what the gallery shows, and never cut a selection (#2033) (d40025c)
- gallery: close upload, like and search gaps in the Premium and Story layouts (#2036) (ea08c26)
- gallery: download the whole selection, not just what the filter shows (#1998) (b2d6d76)
- gallery: keep a visitor's session across a gallery rename (#2037) (1a186cc)
- gallery: keep lightbox keys out of fields and dialogs on top (#1999) (a67a2b3)
- gallery: keep renamed galleries' old links working (#2029) (4f5c401)
- gallery: keep unfinished photos off the by-id routes, charge streams only for bytes sent (#2054) (0bc5ead)
- gallery: leave an Escape that cancels an IME composition to the field (#2024) (d3d6145)
- gallery: make Premium's Download All download and keep selections priced whole (#2028) (4d3f7ac)
- gallery: make the closed sidebar inert (#2002) (ea43390)
- gallery: make the Premium and Story nav heart filter to my likes (#2017) (125c946)
- gallery: offer guest upload in the Premium and Story layouts (#2016) (7f74d8f)
- gallery: offer the client hide/show toggle in every gallery layout (#2007) (d188670)
- gallery: people-filter downloads past 500, keep the selection when the size picker delivers nothing (#2046) (d52cc70)
- gallery: use a live gallery session over a dead token for the same gallery (#2047) (3425738)
- keep short links and old gallery links working after a rename (#2019) (0980fb4)
- media: guard lazy renditions of ordinary images against a replaced source (#2000) (fb5b638)
- media: version external renditions by the source's size (#2056) (edffb4b)
- names, exports: store names in one Unicode form, neutralise formulas behind leading whitespace (#2045) (b6de1dd)
- photos: replacing a photo regenerates its preview, hero and watermark, and never loses the old one (#2025) (cb5a3aa)
- transfers: hand out only finished photos (#2048) (7f519b5)
- upload: clean up failed chunked uploads, read capture dates on direct imports, import RAW from S3 (#2027) (6cf75fc)
- upload: read the capture date on chunked uploads, hold no transaction through their media work (#2008) (1a62fd7)
- uploads: delete an unfinished upload's file before dropping its ledger record (#2030) (f7aafad)
- uploads: delete an upload object again when a late S3 write lands after cleanup (#2040) (560da75)
- uploads: keep the watch folder off files an upload is still promoting (#1996) (e672e28)
- users: lock gallery assignments in id order on admin delete and team save (#2004) (e79e2b3)
- users: take event and inviter rows first so admin delete cannot deadlock (#2022) (1a1079e)
- watcher: give same-named watch-folder photos their own thumbnails, previews and heroes (#2038) (b49beb1)