bo0tzz and Codex
7df744b684
fix(cli): only act on files that were sent in the bulk upload check ( #32564 )
...
(cherry picked from commit 9e20805e21c72b95f8c23f4985c8a20b4c3da12a)
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
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
bo0tzz and Codex
8b288f9ee0
fix(ci): docs deploy and destroy terragrunt arguments ( #32557 )
2026-10-19 20:27:19 +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
bo0tzz and Codex
c7a5ac3d11
perf(server): check shared link asset access without scanning the album ( #32411 )
...
* perf(server): check shared link asset access without scanning the album
checkSharedLinkAccess runs on every thumbnail, preview, playback and asset
info request made through a shared link. It joined every asset of the
link's album and only then filtered on an array overlap across four
outer-joined columns, so each request cost O(album size).
Split it into two branches (link assets, album assets) that find the
requested ids through the asset pkey / livePhotoVideoId index and then
probe the album_asset pkey.
Median per request, PG 14, 1.36M-asset instance:
| album behind the link | before | after |
|-----------------------|--------|---------|
| 290 assets | 2.1 ms | 0.17 ms |
| 150k assets | 296 ms | 0.19 ms |
* chore: clean up
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
(cherry picked from commit bb024c862609c9e2baffc08fef795cfa3418df16)
2026-10-14 21:24:13 +03:00
bo0tzz and Codex
49cf2fdff2
chore: add compose textarea description to issue template ( #32402 )
...
Hopefully this stops people from just dropping "n/a" when they're using an unsupported deployment
(cherry picked from commit 5380498debd853191d46a8cf5322778d0c0d1b5c)
2026-10-13 21:49:29 +03:00
8ede1d54d8
fix(server): exclude hidden assets from large files search ( #31479 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-09-28 18:21:44 +02:00
bo0tzz and GitHub
6b978d0c0d
chore: clean up hwaccel device_cgroup_rules ( #31812 )
2026-09-26 18:12:26 -04:00
bo0tzz and GitHub
9566fb7c74
fix: page path in better face clusters guide ( #31671 )
2026-09-22 16:31:32 -04:00
bo0tzz and GitHub
f30488596c
docs: link to the docker compose builder ( #31610 )
2026-09-16 09:22:15 -04:00
bo0tzz and GitHub
72f1034c58
fix: only run version check in production env ( #31443 )
2026-09-11 10:19:45 -04:00
bo0tzz and GitHub
86ae0dd06c
fix: backport PRs requested review team ( #31377 )
2026-09-09 11:27:16 +00:00
743770c8ab
feat: new FAQ entries ( #31227 )
...
* feat: new FAQ entries
* chore: fix formatting
* add suggestion
* nit: wording
---------
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-03 12:08:36 -05:00
bo0tzz and GitHub
b48266c3bb
fix: don't force builds on release-base PRs ( #31225 )
2026-09-02 20:41:06 +02:00
bo0tzz and GitHub
9e1e595939
fix: add discussions perm to release publish token ( #31167 )
2026-09-01 15:41:42 +02:00
bo0tzz and GitHub
935c32e54a
fix: workflows write perm on backport job ( #31191 )
2026-09-01 14:58:01 +02:00
bo0tzz and GitHub
5666d57f15
fix: open an announcement discussion for each release line ( #31101 )
2026-08-31 20:32:11 +02:00
bo0tzz and GitHub
469a870a22
fix: generate release notes from the previous release on the line ( #31080 )
2026-08-28 16:56:12 +02:00
bo0tzz and GitHub
6b478924b2
fix(e2e): wait out the duplicate #asset-grid during navigation ( #31088 )
2026-08-28 12:45:13 +02:00
bo0tzz and GitHub
1a8fcf1b9f
fix(web): face editor coordinates on a not-yet-loaded video ( #31083 )
2026-08-28 09:20:54 +00:00
bo0tzz and GitHub
762f93798d
chore: drop backport description header ( #31067 )
2026-08-27 22:53:14 +02:00
bo0tzz and GitHub
8a00ecda43
chore: drop backport label description ( #31062 )
2026-08-27 22:52:41 +02:00
bo0tzz and GitHub
b912dcfab8
fix: avoid a concurrency deadlock when drafting a release ( #31069 )
2026-08-27 20:31:02 +00:00
bo0tzz and GitHub
bbf201d16b
fix: run codeql and weblate checks on release branches ( #31065 )
2026-08-27 20:17:42 +00:00
bo0tzz and GitHub
5baf181409
fix: build release branch images instead of re-tagging main ( #31063 )
2026-08-27 22:01:31 +02:00
bo0tzz and GitHub
b8400dfe30
fix: check out the branch tip when preparing a release ( #31061 )
2026-08-27 21:40:55 +02:00
bo0tzz and GitHub
2ba343e138
fix: only run backport for labelled pull requests ( #31052 )
2026-08-27 14:39:55 +00:00
bo0tzz and GitHub
b22483de33
feat: backport pull requests to release branches ( #31035 )
2026-08-27 15:10:07 +02:00
bo0tzz and GitHub
a366db1494
feat: cut releases from release branches ( #31033 )
2026-08-27 15:10:07 +02:00
bo0tzz and GitHub
3be6b12292
feat: gate release publishing behind an approval ( #31025 )
2026-08-27 15:10:07 +02:00
bo0tzz and GitHub
0179e612a1
feat: split release preparation from drafting ( #31024 )
2026-08-27 15:10:06 +02:00
bo0tzz and GitHub
2c0f415a56
feat: only move floating docker tags for the newest release ( #31030 )
2026-08-27 12:30:39 +02:00
bo0tzz and GitHub
291ccdae95
feat: verify migration ORDER on every PR ( #30998 )
2026-08-26 15:25:00 +02:00
bo0tzz and GitHub
a8c79469e5
feat(server): document and guard migration ORDER maintenance ( #30997 )
...
feat(server): add a migrations ORDER manifest
2026-08-26 15:24:59 +02:00
bo0tzz and GitHub
f264573847
fix(server): point the migrations mise task at sql-tools ( #30996 )
2026-08-26 15:24:59 +02:00
bo0tzz and GitHub
6221e29c70
fix: throw a typed error on malformed api responses ( #31006 )
...
* fix: throw a typed error on malformed api responses
* fix: drop response body parse check
* fix(web): keep json response validation when overriding fetch (#31008 )
* fix(cli): report malformed api responses (#31007 )
2026-08-26 00:38:39 +00:00
bo0tzz and GitHub
fbd5dc2c61
fix: don't swallow fetch errors ( #30496 )
2026-08-25 17:47:25 +02:00
bo0tzz and GitHub
821c933c51
fix(cli): enforce node engine version on start ( #30437 )
2026-08-18 16:17:43 -04:00
bo0tzz and GitHub
0344c61e4c
feat: use version service for docs archive switcher ( #30675 )
2026-08-12 13:36:33 +02:00
bo0tzz and GitHub
c7d7889ed0
fix: pass secrets to build-mobile ( #29031 )
2026-08-11 14:41:40 -04:00
bo0tzz and GitHub
9773d72428
chore: use gh release create instead of softprops action ( #30577 )
2026-08-11 14:55:27 +02:00
bo0tzz and GitHub
cf17dcbfee
feat: derive mobile build number from semver ( #30569 )
2026-08-11 12:45:32 +00:00
bo0tzz and GitHub
9273a4ca2a
chore: rework docker build workflow ( #30626 )
2026-08-11 14:40:12 +02:00
bo0tzz and GitHub
8d086d61c4
chore: add good-first-issue llm rule to contributing.md ( #30645 )
2026-08-08 10:54:48 -05:00
bo0tzz and GitHub
f361dbbb77
chore: clean up last mergify remnant ( #30600 )
2026-08-06 12:42:12 +02:00
bo0tzz and GitHub
46c42e0935
chore: delete mergify config ( #30521 )
2026-08-03 16:50:28 +02:00
bo0tzz and GitHub
f1a90b7f36
feat: log hint about downgrades when migration is missing ( #30493 )
2026-08-03 11:06:38 +02:00
bo0tzz and GitHub
56fbca910e
chore: skip e2e tests when the stack fails to start ( #30414 )
2026-07-30 15:17:57 -04:00
bo0tzz and GitHub
4a68a87531
fix: use trixie-slim base image for cli and e2e-auth-server ( #30411 )
...
The alpine suffix part wasn't getting updated by renovate, and the 3.20
chain stopped getting node updates too. This also just aligns the base
image distro with what we use elsewere.
2026-07-30 15:14:18 -04:00
bo0tzz and GitHub
7c44c29a8f
chore: deflake album to asset backfill sync test ( #30417 )
2026-07-30 15:13:44 -04:00
bo0tzz and GitHub
6e1e79585e
chore: install mise tools from the lockfile in the server image ( #30416 )
2026-07-30 15:13:12 -04:00
bo0tzz and GitHub
6afcc39fb2
chore: sequence pnpm installs in mise tasks ( #30412 )
2026-07-30 15:12:42 -04:00
bo0tzz and GitHub
a316ba35ca
fix: shared check for server setup availability ( #30311 )
...
* fix: shared check for server setup availability
* chore: add medium test
* feat: require @Authenticated decorator everywhere
* fix: lints
2026-07-30 15:12:25 -04:00
bo0tzz and GitHub
1f16fe16c2
chore: enable merge queue batching ( #30410 )
...
This waits for up to 2 min to group up to 3 PRs into the same draft. That should cut down on the amount of draft PRs that get created. The main downsides are the 2 minute wait when only queueing one PR, and less failure isolation: on an error, mergify has to do bisect runs to figure out which PR failed the batch, which takes more time than purely sequential operation. All of this can be tuned further of course.
2026-07-30 15:58:08 +00:00
bo0tzz and GitHub
4988c0a4c2
chore: update merge queue configuration ( #30381 )
...
Signed-off-by: null <null>
2026-07-29 20:39:37 +00:00
bo0tzz and GitHub
af5ff4983a
chore: skip release label validation on merge queue PRs ( #30361 )
2026-07-29 15:08:35 +00:00
bo0tzz and GitHub
3ab09352eb
feat: add spam rule to CONTRIBUTING.md genAI section ( #30355 )
2026-07-29 14:17:49 +00:00
bo0tzz and GitHub
b468459b1a
chore: add test for admin controller permissions ( #30316 )
2026-07-28 15:44:51 +02:00
bo0tzz and GitHub
3606144190
chore: clarify MediaRepository extract logging ( #30249 )
2026-07-26 13:02:57 -04:00
bo0tzz and GitHub
4a5f13d0e5
fix: don't skip person thumbnail generation if ML is disabled ( #30194 )
2026-07-24 10:06:32 -04:00
bo0tzz and GitHub
457da17c5d
fix: always set extension from provided file ( #29839 )
...
* fix: always set extension from provided file
The livephoto case can also happen with other files; for example, we
receive a DNG file as JPEG but then still call it .dng
Fixes #29805 , partially addresses #28602
* chore: test cases for file extension naming
2026-07-22 18:29:54 +05:30
bo0tzz and GitHub
26e07548a7
chore: add GHSA as contact in security.txt ( #29940 )
2026-07-16 12:30:44 +02:00
bo0tzz and GitHub
2237078bd5
chore: bump create-workflow-token action to v3 ( #29571 )
2026-07-15 14:33:23 +02:00
bo0tzz and GitHub
89d31aaba1
feat: publish app releases to FUTO F-Droid repo ( #29804 )
...
* feat: publish app releases to FUTO F-Droid repo
* chore: separate parse step
2026-07-13 14:57:40 -05:00
f6d6dbc3c7
chore: remove pgvecto.rs from docs footnote ( #29729 )
...
* chore: remove pgvecto.rs from docs footnote
* Update docs/docs/install/environment-variables.md
Co-authored-by: Matthew Momjian <50788000+mmomjian@users.noreply.github.com >
---------
Co-authored-by: Matthew Momjian <50788000+mmomjian@users.noreply.github.com >
2026-07-09 11:36:26 -05:00
bo0tzz and GitHub
d2a46ade78
chore: webhook headers ordering ( #29695 )
2026-07-07 12:09:57 +00:00
bo0tzz and GitHub
13d17b3a11
fix: re-add gCastEnabled negation ( #29499 )
2026-07-03 11:05:22 +02:00
bo0tzz and GitHub
d3680871ef
feat: warn if microservices worker is missing ( #28869 )
...
* feat: warn if microservices worker is missing
* fix: ci
2026-06-10 09:31:32 -04:00
bo0tzz and GitHub
70bb7e4b7e
fix: step name reference in fix-format.yml ( #28912 )
2026-06-08 14:32:34 -04:00
bo0tzz and GitHub
98961a1d36
fix: filter close-duplicates for org members ( #28856 )
2026-06-05 10:34:29 -05:00
bo0tzz and GitHub
7155bb1e80
chore: fix up docs placeholders ( #28814 )
2026-06-04 08:19:40 -04:00
bo0tzz and GitHub
69b1946484
feat: handle prereleases in publish workflows ( #28701 )
2026-06-01 17:11:45 +02:00
bo0tzz and GitHub
61cd69a286
fix: strip rc suffix from iOS marketing version ( #28741 )
2026-06-01 09:56:43 -05:00
bo0tzz and GitHub
a5a7380a26
feat: use lockfile for mise tools ( #28503 )
2026-05-20 11:37:33 +00:00
bo0tzz and GitHub
915d865ce2
chore: use custom sticky-comment action ( #28505 )
2026-05-19 20:25:46 +00:00
bo0tzz and GitHub
e323e778cd
fix: update server-commands subcommand list ( #28402 )
2026-05-13 09:27:25 -04:00
bo0tzz and GitHub
4791313def
fix: manage oazapfts through mise ( #28380 )
2026-05-12 08:12:27 -04:00
bo0tzz and GitHub
b4f719653f
fix: indentation and typo ( #28349 )
...
* fix: indentation and typo
* neline
2026-05-11 09:17:39 -05:00
bo0tzz and GitHub
f370b4bac6
chore: fold apk comment qr in <details> ( #28348 )
2026-05-11 09:40:19 -04:00
bo0tzz and GitHub
bfdff12ee0
chore: use app token for mise in workflows ( #28270 )
2026-05-06 14:51:25 -04:00
bo0tzz and GitHub
eb6dca6a31
chore: switch push-o-matic auth from app-id to client-id ( #28269 )
2026-05-06 17:01:14 +00:00
bo0tzz and GitHub
a46e46452c
fix: run profile picture through thumbnail pipeline ( #27890 )
...
* fix: run profile picture through thumbnail pipeline
* fix: format
2026-04-17 16:15:59 -04:00
bo0tzz and GitHub
8afca348ff
fix: sanitize filenames before adding to zip ( #27893 )
...
* fix: sanitize filenames before adding to zip
* fix: lints
* chore: drop split()
2026-04-17 13:05:53 -04:00
bo0tzz and GitHub
a456a05052
chore: make filesystem backup docs even more explicit ( #27013 )
2026-04-17 15:42:40 +02:00
bo0tzz and GitHub
3356e81c85
fix!: do not allow insecure oauth requests by default ( #27844 )
...
* fix!: do not allow insecure oauth requests by default
* fix: format
* fix: make open-api
* fix: tests
* nit: casing
* chore: migration to allow insecure if current oauth uses http
2026-04-16 10:11:58 -04:00
bo0tzz and GitHub
9da0cb3cf4
chore: link to PR template in auto-close message ( #27756 )
2026-04-16 09:14:36 -04:00
bo0tzz and GitHub
facd3bd331
fix: oauth issuerUrl validation ( #27848 )
2026-04-16 09:06:55 -04:00
bo0tzz and GitHub
5334a6254a
fix: make web build stage deterministic ( #27823 )
2026-04-15 19:31:23 +02:00
bo0tzz and GitHub
f1882c2926
fix: csp quotes ( #27592 )
2026-04-07 15:54:30 -04:00
bo0tzz and GitHub
ecba4e2a62
chore: tee GITHUB_OUTPUT for debugging ( #27378 )
2026-04-01 08:15:43 -04:00
bo0tzz and GitHub
eb20b715e4
fix: don't auto-close manually reopened PRs ( #27347 )
2026-03-28 12:50:09 +00:00
bo0tzz and GitHub
dbaf4b548b
fix: pin success-check-action to correct tag ( #27230 )
2026-03-26 17:37:23 +00:00
bo0tzz and GitHub
78bb6cf926
chore: log id of existing asset on duplicate upload ( #27266 )
2026-03-26 11:50:53 +01:00
bo0tzz and GitHub
c862163204
fix: explicitly specify repo in auto-close job ( #27291 )
2026-03-26 10:43:51 +00:00
bo0tzz and GitHub
95280edd6c
fix: let renovate update base images ( #27272 )
2026-03-25 18:00:40 +00:00