Yaros and Codex
eca952720a
fix: permission for admin notification endpoints ( #32567 )
...
(cherry picked from commit 045d295d2d0b506af6f2abe14d1ed2cb89c5235f)
2026-10-27 23:12:13 +03:00
Maximilian Rink and Codex
d8030f3d14
fix(server): index edited assets in smart search ( #32300 )
...
(cherry picked from commit adca900fe277bd6dff93b96b6a7841a8632ce62b)
2026-10-27 23:12:13 +03:00
Santo Shakil and Codex
6569aad605
feat(server): accept the iOS app origin for mobile passkeys ( #32733 )
...
(cherry picked from commit 1119e9c7a7c9f5ad657aa4e893b897772f75a124)
2026-10-27 23:11:30 +03:00
renovate[bot] and Codex
a2794f0986
chore(deps): update ghcr.io/jdx/mise docker tag to v2026.10.20 ( #32752 )
...
(cherry picked from commit 506c83e8265bba829505deb23ad05a62eca579fc)
2026-10-27 23:11:30 +03:00
renovate[bot] and Codex
6ffc365b75
fix(deps): update dependency chokidar to v6 ( #32760 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
(cherry picked from commit 4c33587fe88c52e50cb63dc8cea347fac6ef01ac)
2026-10-27 23:11:30 +03:00
renovate[bot] and Codex
dc19d3a259
fix(deps): update opentelemetry-js monorepo to v3 ( #32762 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
(cherry picked from commit 14977d6cc8c27e226334681ba878aa1243887055)
2026-10-27 23:11:29 +03:00
bo0tzz and Codex
9669f7cc6e
perf(server): use a createdAt range for "recently added" time buckets ( #32434 )
...
(cherry picked from commit cf719e733e6250e0fcd8f45d2e2c46f166d3557d)
2026-10-25 16:23:45 +03:00
Codex
d17640a283
Handle optional OAuth config in visibility regression assertion
2026-10-22 21:15:41 +03:00
Codex
9e889bd4dc
Adapt local regression tests to new configuration queries
2026-10-22 20:48:48 +03:00
Jason Rasmussen and Codex
9a66f16102
fix: account management url visibility ( #32645 )
...
(cherry picked from commit 22fe7b4179464c73d7e0487df90f2064fa30a5e0)
2026-10-22 20:43:14 +03:00
Codex
3efc91ff9a
Prepare localized 3.3.5-local.7 release with updated dependencies
2026-10-22 05:29:35 +03:00
renovate[bot] and Codex
f1f7f82e91
chore(deps): update base-image to v202610211607 ( #32644 )
...
Co-authored-by: bo0tzz <git@bo0tzz.me >
(cherry picked from commit b9269f873982c9b1c0f9267aefad8b8b9eacb7d9)
2026-10-22 05:25:45 +03:00
bo0tzz and Codex
b3bd5d1fd1
feat(server): remove deprecated password field from update-me ( #32623 )
...
* feat(server): remove deprecated password field from update-me
* fix: tests for removed password field
(cherry picked from commit 3f6a071203187681b6c06b977665dc624c431336)
2026-10-22 05:25:45 +03:00
bo0tzz and Codex
ad9b368cb8
fix(server): exclude partners' locked assets from legacy search ( #32604 )
...
(cherry picked from commit 8dab52c7491c79cba742315dea8d7f5212915875)
2026-10-22 05:25:45 +03:00
renovate[bot] and Codex
7c78b00df6
fix(deps): update dependency ioredis to v6 ( #32137 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
(cherry picked from commit 48474ecff56fe02cb84a8136d923863d4978a7e0)
2026-10-22 05:25:45 +03:00
renovate[bot] and Codex
689105c949
fix(deps): update dependency exiftool-vendored to v39 ( #31917 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
(cherry picked from commit bb9f18a1d007d530fcf477a0fa56528fdfa91dd0)
2026-10-22 05:25:45 +03:00
Jonathan Jogenfors and Codex
42dffaa0c8
fix(server): dont follow symlinks ( #32614 )
...
(cherry picked from commit 10e216b8385ac40e6aa150f75fc4730c4e8a7494)
2026-10-22 05:24:55 +03:00
renovate[bot] and Codex
ec3359f1cb
fix(deps): update typescript-projects ( #32132 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
(cherry picked from commit 767f47a8fb35e0605e49b0dd4f30587bb76085ad)
2026-10-22 05:23:59 +03:00
renovate[bot] and Codex
235e57bf77
fix(deps): update dependency cookie to v2 ( #31916 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
(cherry picked from commit e505e5113b43177ad215d075dca25dc056dd1a40)
2026-10-22 05:23:59 +03:00
renovate[bot] and Codex
1554f0d439
chore(deps): update dependency unplugin-swc to v2 ( #31909 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
(cherry picked from commit 493b40a7a6c34dac05533c3d3682a38f0eef6038)
2026-10-22 05:23:24 +03:00
renovate[bot] and Codex
3e250d7878
fix(deps): update dependency nodemailer to v10 [security] ( #31907 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
(cherry picked from commit 5d2cd0800efad0e396790782af25378c8cb345ab)
2026-10-22 05:23:24 +03:00
renovate[bot] and Codex
a6d63285b7
fix(deps): update dependency chokidar to v5 ( #31915 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
(cherry picked from commit d1e874fc1e16ab53c80f723dd1905cd7e106cac0)
2026-10-22 05:23:23 +03:00
renovate[bot] and Codex
238617e566
fix(deps): update dependency archiver to v8 ( #31913 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
(cherry picked from commit 51da695c62f3415a97c7b752ef62927e39ab086f)
2026-10-22 05:23:23 +03:00
bo0tzz and Codex
01ba579766
perf(server): index updateId on asset_face, stack and workflow ( #32432 )
...
asset_face, stack and workflow were the only tables with an updateId
column but no index on it. Face and stack sync (AssetFacesV1/V2,
StacksV1, PartnerStacksV1) filter and order on updateId, so every mobile
sync seq-scanned every face on the instance and walked all of the user's
(or partners') stacks, even when nothing had changed. workflow isn't
synced; it gets the index for consistency.
Incremental sync with nothing changed, PG 14:
| query | before | after |
| ---------------------------------- | -------- | -------- |
| assetFace.getUpserts (425k faces) | 33-37 ms | 0.15 ms |
| stack.getUpserts (6k stacks) | 0.8 ms | 0.004 ms |
| partnerStack.getUpserts (6k) | 0.6 ms | 0.007 ms |
The face scan grows with the instance's face count (~10x that at 4M
faces); the stack one with the user's stack count.
(cherry picked from commit 9df807ed4a9536a28dad463270082095ec1fe94d)
2026-10-22 05:23:22 +03:00
bo0tzz and Codex
e2864b6664
fix(server): do not expose album members to shared link viewers ( #32607 )
...
(cherry picked from commit 380f3e74e622938b6b6c450859df8655be4e21ba)
2026-10-22 05:23:22 +03:00
bo0tzz and Codex
1756d70fda
fix(server): only set OAuth cookies for server-generated state ( #32600 )
...
(cherry picked from commit d468c468867edcbafd4d934d3ba97bee2414050f)
2026-10-22 05:23:22 +03:00
Jason Rasmussen and Codex
b12be9119f
feat: passkeys ( #32194 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
(cherry picked from commit 6233a79bf7e4cec11e9ea1094908ff3b228fcbe0)
2026-10-22 05:23:22 +03:00
bo0tzz and Codex
59be6583b8
fix(server): only serve edited assets to shared links in archive downloads ( #32562 )
...
(cherry picked from commit cd47ee30676e8575a5048d12cde2ee86fc02b965)
2026-10-22 05:21:00 +03:00
bo0tzz and Codex
aeefb962d4
fix(server): sanitize EXIF template variables and tighten storage path check ( #32566 )
...
(cherry picked from commit 6141f8bdbf6d21a14558d9f7d7325918023d1037)
2026-10-22 05:21:00 +03:00
bo0tzz and Codex
f80be1030b
fix(server): restrict partner timeline requests to timeline assets ( #32565 )
...
* fix(server): restrict partner timeline requests to timeline assets
* test(server): update medium timeline tests for consolidated check
(cherry picked from commit e9fb180f466a687cebda9b7e17cef403de4b81fa)
2026-10-22 05:21:00 +03:00
bo0tzz and Codex
c66634fcfd
fix(server): escape template variables in custom email templates ( #32563 )
...
* fix(server): escape template variables in custom email templates
* fix(server): strip preview tags until stable
(cherry picked from commit 616839e8d43a9de21d0c9391847fba97ac41a759)
2026-10-22 05:21:00 +03:00
bo0tzz and Codex
d92248c664
fix(server): require upload access for checksum duplicate check ( #32559 )
...
* fix(server): require upload access for checksum duplicate check
* fix(server): use the upload access check for the checksum short circuit
(cherry picked from commit 5c02b17495947d7332cce13273226082bd8ae2a1)
2026-10-22 05:21:00 +03:00
bo0tzz and Codex
67152772d2
fix(server): anchor plugin allowedHosts matching ( #32560 )
...
(cherry picked from commit 4acf935ba3ee7b6171e3965cb3ce47b2ba9bad1a)
2026-10-22 05:21:00 +03:00
renovate[bot] and Codex
2d236024bc
fix(deps): update dependency kysely-postgres-js to v5 ( #31919 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
(cherry picked from commit 21fe4994a203da3876271bc290c47b69694fd42a)
2026-10-22 05:20:59 +03:00
Mert and Codex
4c89b0f7df
perf(server): more efficient person queries ( #32523 )
...
(cherry picked from commit 38a2ce4daa678615561d2b87a8f2bb30f70fdc53)
2026-10-22 05:20:19 +03:00
renovate[bot] and Codex
b020f12f41
chore(deps): update ghcr.io/jdx/mise docker tag to v2026.10.15 ( #32580 )
...
(cherry picked from commit a22480e3eb2c07535c126f7ac20f6e04f51c6200)
2026-10-22 05:19:50 +03:00
bo0tzz and Codex
43848a7d68
fix: locking around concurrency-1 jobs ( #28410 )
...
* fix: locking around concurrency-1 jobs
* fix: no lock on queue duplicates
(cherry picked from commit 477452b5c51ca71ecdf74205e0004eaec4e18874)
2026-10-22 05:19:10 +03:00
bo0tzz and Codex
c4c5b8ae3a
fix(server): apply shared link metadata visibility in asset mapper ( #32561 )
2026-10-19 20:31:26 +03:00
743e555a1b
fix(deps): update dependency bullmq to v6 ( #31914 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-10-19 20:31:26 +03:00
0207d48035
chore(deps): update vitest monorepo to v5 ( #31912 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-10-19 20:27:42 +03:00
Codex
ca7766fcd6
Show on-this-day memories from the last 20 years with automatic playback
2026-10-18 19:00:06 +03:00
Jason Rasmussen and Codex
36a6e033aa
fix: public config properties ( #32500 )
...
fix: public config visibility
2026-10-17 19:32:36 +03:00
Jason Rasmussen and Codex
4341a2f34c
fix: smpt email visibility ( #32492 )
2026-10-17 19:32:36 +03:00
renovate[bot] and Codex
3effae72a7
fix(deps): update dependency nestjs-cls to v7 ( #31920 )
...
* fix(deps): update dependency nestjs-cls to v7
* fix: pnpmfile checksum
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
(cherry picked from commit 93d376ac5119510b10f34945c0b04e4116266425)
2026-10-15 14:33:11 +03:00
renovate[bot] and Codex
cd6421be4b
chore(deps): update dependency @types/node to ^24.19.2 ( #32129 )
...
* chore(deps): update dependency @types/node to ^24.19.2
* fix: pnpmfile checksum
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
(cherry picked from commit 9bb78b30fbb374157146f3bede657d293cda508f)
2026-10-15 14:33:10 +03:00
renovate[bot] and Codex
c36be7692c
fix(deps): update dependency react-email to v6 ( #32143 )
...
* fix(deps): update dependency react-email to v6
* fix: move all react email imports to react-email
* fix: linting
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
(cherry picked from commit 9755f64684de63f1e9c5d14d31d00f599f8925b9)
2026-10-15 14:33:10 +03:00
Codex
d25c946c29
test(local): cover shared link access and video readiness; fix lint dependency
2026-10-14 21:37:42 +03:00
Jason Rasmussen and Codex
c318714fdc
feat: server feature level ( #32178 )
...
* feat: server feature level
* fix: correctly compute feature level
(cherry picked from commit cc1e2363651eaff63848baad2c7932923ca66554)
2026-10-14 21:24:14 +03:00
bo0tzz and Codex
4fe7d42cfc
perf(server): stop aggregating every album asset when loading a shared link ( #32412 )
...
SharedLinkRepository.get (shared link page load, /shared-links/me, and the
OpenGraph tags rendered for /share/:key) json_agg'd every asset of the
album, with its full exif row, ordered by fileCreatedAt. The only things
used from it are the asset count and the first/last localDateTime.
Load the album without assets and fill assetCount/startDate/endDate from
getMetadataForIds, which is what GET /albums/:id already uses. The counts
now also respect the default visibility filter, and the dates are
formatted the same as on /albums/:id.
150k-asset album link, PG 14:
| | before | after |
|------------------------|-----------------|--------|
| query | 4.2-6.5 s | ~0.26 s (metadata aggregate) |
| JSON built by postgres | 261 MB | - |
| GET /shared-links/me | - | 0.28 s, 961 B |
(cherry picked from commit ac453b5557e42ad45962d3079a4e4450671053e9)
2026-10-14 21:24:13 +03:00
bo0tzz and Codex
1978b77a40
perf(server): stop loading every album asset to build album responses ( #32413 )
...
* perf(server): stop loading every album asset to build album responses
Album create, update (rename, description, cover, sort order, activity
toggle) and add-users json_agg'd every asset of the album with its exif
row, only for mapAlbum to read the count and the first/last
localDateTime. Use getMetadataForIds for those fields, as GET /albums/:id
already does, and drop the now unused withAssets option from getById.
The responses now carry the same date format and lastModifiedAssetTimestamp
as GET /albums/:id.
PATCH /albums/:id on a 150k-asset album, PG 14 (response is ~900 B either
way): 3.4-3.6 s -> 0.13-0.16 s.
* refactor(server): share album metadata mapping
(cherry picked from commit 2a4e876ec990a4a8d5fdca00291cbeebd3d1bccf)
2026-10-14 21:24:13 +03:00