-
ef6d3a077a
fix: close what nine adversarial reviews found, most of it mine
main
MechaCat02
2026-08-09 14:51:58 +02:00
-
214f9e3062
fix: close four confirmed defects an adversarial review found
MechaCat02
2026-08-09 14:39:27 +02:00
-
253878e027
fix(export): give the keepsake viewer the two-phase preflight it was meant to get
MechaCat02
2026-08-08 22:48:22 +02:00
-
5b705317ef
fix: close the last three guest-facing dead ends (items 7-9)
MechaCat02
2026-08-08 22:38:07 +02:00
-
05063694d2
fix: close eight regressions the audit pass found, five of them mine
MechaCat02
2026-08-08 22:33:43 +02:00
-
23e2f485dd
fix(upload): correct two errors in the keepsake headroom gate
MechaCat02
2026-08-08 22:10:40 +02:00
-
eb0e405562
fix: gate uploads on keepsake headroom, and close five unattended-event gaps
MechaCat02
2026-08-08 22:07:56 +02:00
-
1d9fb11c7b
fix: close the nine ways an unattended event loses photos or dies
MechaCat02
2026-08-08 21:32:52 +02:00
-
61119be817
Merge branch 'fix/deploy-unattended-blockers' into main
MechaCat02
2026-08-08 21:16:31 +02:00
-
-
e1c689d1a7
chore(migrations): renumber 021-023 to 023-025 to clear the collision with main
MechaCat02
2026-08-08 21:04:58 +02:00
-
d5b4bf0ac1
fix(camera): get the upload sheet out from in front of the shutter button
Fabian Hamm (Privat)
2026-08-04 19:38:49 +02:00
-
0ae5a64e77
Merge branch 'chore/production-readiness'
Fabian Hamm (Privat)
2026-08-03 18:37:31 +02:00
-
-
edc5f1f62c
chore(export-viewer): rebuild the embedded bundle, and fix the lint ignores
Fabian Hamm (Privat)
2026-08-03 18:37:09 +02:00
-
46bb2e5174
docs: correct the claims that no longer match the code
Fabian Hamm (Privat)
2026-08-03 18:37:09 +02:00
-
2b1500e624
fix(ui): make the dashboards agree with each other and with what the code does
Fabian Hamm (Privat)
2026-08-03 18:36:57 +02:00
-
89ca819529
fix(diashow): never project a video, however its poster turned out
Fabian Hamm (Privat)
2026-08-03 18:36:57 +02:00
-
fffa2d556c
fix(upload): stop the queue from wedging, and tell the guest when it fails
Fabian Hamm (Privat)
2026-08-03 18:36:30 +02:00
-
51e55b1ace
fix(feed): survive a bad network, and let the lightbox actually browse
Fabian Hamm (Privat)
2026-08-03 18:36:05 +02:00
-
87d01a8a26
fix(export): charge the download limit where the client can see the answer
Fabian Hamm (Privat)
2026-08-03 18:35:39 +02:00
-
496dba5a1f
fix(feed): filter on the server, exactly, and keep banned uploads out of the chips
Fabian Hamm (Privat)
2026-08-03 18:35:23 +02:00
-
1d0df3ebf6
feat(upload): make uploads idempotent so a lost response cannot duplicate a photo
Fabian Hamm (Privat)
2026-08-03 18:35:05 +02:00
-
faea555967
fix(ops): make /health a readiness probe, and bound how long the pool waits
Fabian Hamm (Privat)
2026-08-03 18:34:46 +02:00
-
157499d493
fix(ops): reclaim abandoned upload temp files, and supervise the task that does
Fabian Hamm (Privat)
2026-08-03 18:34:46 +02:00
-
2f952494c2
fix(media): stop a poster-frame failure from deleting the guest's video
Fabian Hamm (Privat)
2026-08-03 18:34:23 +02:00
-
43d37269b6
deploy: pull prebuilt images instead of building on the event server
Fabian Hamm (Privat)
2026-08-03 18:34:07 +02:00
-
-
9b90929269
test(e2e): re-point the PIN lockout specs at the property that matters
fix/deploy-unattended-blockers
MechaCat02
2026-07-31 23:58:17 +02:00
-
117e67fa80
fix(auth,upload): close the admin lockout and four unbounded-input paths
MechaCat02
2026-07-31 23:09:20 +02:00
-
f275de5c8f
perf(feed): stop every feed page from aggregating the whole event
MechaCat02
2026-07-31 23:01:42 +02:00
-
3f0f9c098b
fix(upload-queue): rehydrate the persisted queue app-wide, not only on /upload
MechaCat02
2026-07-31 22:58:26 +02:00
-
e52b2f1cd1
fix(upload): reclaim the bytes of uploads that never finish
MechaCat02
2026-07-31 22:56:26 +02:00
-
5969ec74ea
fix(compression): bound derivative retries so one bad upload can't loop forever
MechaCat02
2026-07-31 22:52:48 +02:00
-
a4bac03628
fix(compression): stop a single large PNG from OOM-killing the container
MechaCat02
2026-07-31 22:42:03 +02:00
-
6fd75adb27
fix(ops): bound logs, drain ffmpeg's stderr, and stop three silent hangs
MechaCat02
2026-07-31 22:25:23 +02:00
-
-
7d0334bf22
Merge branch 'fix/video-thumbnail-seek'
fabi
2026-07-30 19:40:27 +02:00
-
-
402215d405
fix(video): extract a real poster frame, and stop claiming one that isn't there
fabi
2026-07-30 19:40:27 +02:00
-
-
2b313e67e0
Merge branch 'fix/track-e2e-fixtures'
fabi
2026-07-30 19:39:59 +02:00
-
-
2551c25436
fix(e2e): track the test fixtures the suite reads
fabi
2026-07-30 19:39:59 +02:00
-
-
d51c6b8c4b
Merge branch 'fix/postgres-password-deploy-trap'
fabi
2026-07-30 19:28:34 +02:00
-
-
3bcb7c6a76
fix(deploy): close the POSTGRES_PASSWORD trap that broke a fresh deploy either way
fabi
2026-07-30 19:28:34 +02:00
-
-
08d92b7531
fix(audit-7): keepsake viewer integrity, readable archives, quota_tolerance floor
fabi
2026-07-29 21:37:39 +02:00
-
06bc9ddcb3
refactor(export): share the visibility filter between the row query and the estimate
fabi
2026-07-29 20:50:04 +02:00
-
5f702f2b40
fix(audit-5): export disk preflight, media reclaim, low-disk warning, restore docs
fabi
2026-07-29 20:10:54 +02:00
-
31faccfdf8
fix(audit-4): refuse undecodable images at admission, stop retrying permanent failures
fabi
2026-07-29 07:55:56 +02:00
-
06ade4e158
fix(audit-3): restore the decode allocation guard, route /health in production
fabi
2026-07-29 07:18:08 +02:00
-
b601c062bd
fix(audit-2): video playback, role identity, keepsake EXIF, recover ceiling, WebKit CI
fabi
2026-07-28 21:28:11 +02:00
-
0c0eed885a
fix(audit-1): media gating, per-user limits, moderation UI, upload integrity
fabi
2026-07-28 19:14:37 +02:00
-
a77c2ddc00
Merge branch 'fix/prod-readiness-healthcheck-domain'
MechaCat02
2026-07-19 18:42:36 +02:00
-
-
40c6fd2ccb
fix(deploy): unblock production bring-up (healthchecks + Caddy DOMAIN)
MechaCat02
2026-07-19 18:42:32 +02:00
-
-
e69ec4d736
Merge branch 'feat/hide-comments-when-disabled'
MechaCat02
2026-07-19 18:27:05 +02:00
-
-
3fb1b5d80d
feat(comments): hide every comment mention when COMMENTS_ENABLED=false
MechaCat02
2026-07-19 18:26:59 +02:00
-
-
e1ca9d192f
Merge branch 'feat/diashow-completeness-display'
MechaCat02
2026-07-19 17:53:57 +02:00
-
-
5009590882
feat(diashow): guarantee all eligible photos shown + 2048px display derivative
MechaCat02
2026-07-19 17:53:53 +02:00
-
-
d9738a4cb9
Merge branch 'fix/prod-env-hardening'
MechaCat02
2026-07-19 16:46:55 +02:00
-
-
669a191968
fix(deploy): harden prod env for bcrypt hash and media path
MechaCat02
2026-07-19 16:46:38 +02:00
-
-
a1733b03d5
Merge branch 'feature/diashow-theming-config'
MechaCat02
2026-07-19 15:23:04 +02:00
-
-
4026648f98
fix(diashow): working transitions + slide/push, fullscreen, activity controls
MechaCat02
2026-07-19 15:22:15 +02:00
-
44641473ea
fix(quota): stop /me/quota leaking raw disk to guests
MechaCat02
2026-07-19 15:22:03 +02:00
-
57a907eca5
feat(theme+comments): runtime colour theme and COMMENTS_ENABLED switch
MechaCat02
2026-07-19 15:21:55 +02:00
-
6e0a760271
chore(dev): correct container env in docker-compose.dev.yml
MechaCat02
2026-07-19 15:21:44 +02:00
-
-
0abf413693
Merge branch 'test/burst-queue'
MechaCat02
2026-07-18 19:54:44 +02:00
-
-
002355ba40
test(e2e): client upload-queue under a realistic burst
MechaCat02
2026-07-18 19:54:36 +02:00
-
-
6155b4123d
Merge branch 'release/v0.16.0'
MechaCat02
2026-07-18 17:29:30 +02:00
-
-
7758270cac
chore: shared permission allowlist, screenshot script, gitignore
MechaCat02
2026-07-18 17:29:20 +02:00
-
9b8698f86b
test(loadtest): 100-guest / 1000-image stress harness
MechaCat02
2026-07-18 17:29:20 +02:00
-
3c3a7d0082
fix(diashow): open SSE on mount; raise upload rate 10→100/hour
MechaCat02
2026-07-18 17:29:08 +02:00
-
3654aca18b
feat(export): single-file offline keepsake viewer + guest download
MechaCat02
2026-07-18 17:28:54 +02:00
-
f243bfe89a
feat(ui): elegant wedding white/silver/gold redesign
MechaCat02
2026-07-18 17:28:42 +02:00
-
-
5546fb82e6
Merge branch 'fix/mobile-flake-ssr-2026-07-16'
fabi
2026-07-16 22:02:43 +02:00
-
-
e2b7e54af9
test(e2e): fix load-induced mobile flakes (gesture timing + hydration)
fabi
2026-07-16 21:15:26 +02:00
-
15d338eeb8
fix(frontend): render client-side (ssr=false) to close pre-hydration interaction races
fabi
2026-07-16 21:15:14 +02:00
-
-
461b1eaf65
Merge branch 'chore/lint-and-format-2026-07-15'
fabi
2026-07-15 20:46:00 +02:00
-
-
460258c451
ci: gate ESLint + Prettier for frontend and e2e
fabi
2026-07-15 20:45:59 +02:00
-
bbdfae09a0
chore(e2e): add ESLint + Prettier; fix real findings; dedupe BASE
fabi
2026-07-15 20:45:59 +02:00
-
f8cba95e49
chore(frontend): add ESLint + Prettier; fix real findings; format the tree
fabi
2026-07-15 20:45:42 +02:00
-
-
4d14df18d0
Merge branch 'chore/rustfmt-2026-07-15'
fabi
2026-07-15 19:52:17 +02:00
-
-
ee554e7f38
style(backend): rustfmt the whole tree; gate cargo fmt --check in CI
fabi
2026-07-15 19:52:17 +02:00
-
-
0fa40ddf80
Merge branch 'fix/edit-upload-keepsake-and-coverage-2026-07-15'
fabi
2026-07-15 19:48:31 +02:00
-
-
c48d43f5b3
test(e2e): cover the untested security lifecycles (PIN reset, logout-all, ban gating, caption)
fabi
2026-07-15 19:48:31 +02:00
-
db7c4459d7
fix(upload): editing a caption after release now regenerates the keepsake
fabi
2026-07-15 19:48:15 +02:00
-
-
dd7b05415e
Merge branch 'test/admin-login-rate-limit-2026-07-15'
fabi
2026-07-15 19:10:41 +02:00
-
-
d2ad560df2
test(security): prove admin-login rate limit; make its toggle settable
fabi
2026-07-15 19:10:41 +02:00
-
-
d452afb00e
Merge branch 'test/suite-audit-2026-07-15'
fabi
2026-07-15 07:27:02 +02:00
-
-
3f74c65787
ci: run the checks that only ran on a laptop; mobile in CI; retries 0
fabi
2026-07-15 07:26:54 +02:00
-
02971f3186
test(e2e): de-vacuum security tests; add quota, authz-sweep, keepsake-regen coverage
fabi
2026-07-15 07:26:40 +02:00
-
e5201a9889
test(backend): DB-backed tests for the risky SQL; test isolation; clippy cleanup
fabi
2026-07-15 07:26:08 +02:00
-
c229b560d8
fix(feed,host): two mis-tap bugs where a live re-render destroys the click target
fabi
2026-07-15 07:25:19 +02:00
-
-
af997a84dd
Merge branch 'fix/export-zip-strand-2026-07-14'
fabi
2026-07-14 22:50:17 +02:00
-
-
2bef6e19ef
fix(export): deleting a comment mid-build no longer strands the ZIP forever
fabi
2026-07-14 22:50:17 +02:00
-
-
db88230221
Merge branch 'fix/feed-suggestion-mousedown-2026-07-14'
fabi
2026-07-14 22:06:56 +02:00
-
-
bf68bc08f4
fix(feed): commit filter suggestions on click, not mousedown
fabi
2026-07-14 22:06:56 +02:00
-
-
38e34fddf1
Merge branch 'chore/deploy-readiness-2026-07-14'
fabi
2026-07-14 21:09:53 +02:00
-
-
3c683247c0
chore(deploy): expose the export rebuild hatch in the UI; rehearse migration 014
fabi
2026-07-14 21:09:53 +02:00
-
-
0447a6ad0e
Merge branch 'fix/export-hardening-2026-07-14'
fabi
2026-07-14 20:35:47 +02:00
-
-
9666d74a46
fix(export): close all 13 findings from the multi-agent review
fabi
2026-07-14 20:35:47 +02:00
-
-
5affef47cf
Merge branch 'refactor/export-epoch-2026-07-14'
fabi
2026-07-14 19:48:38 +02:00
-
-
8e906d7866
refactor(export): single epoch authority; fix upload-path TOCTOU losing photos
fabi
2026-07-14 19:48:38 +02:00
-
-
1148c2e906
Merge branch 'fix/export-epoch-2026-07-14'
fabi
2026-07-14 07:35:25 +02:00
-
-
9f3712894d
fix(export): pin export workers to a live release epoch; make reopen atomic
fabi
2026-07-14 07:35:25 +02:00
-
-
c197b2c025
Merge branch 'fix/rereview-export-race-2026-07-13'
fabi
2026-07-13 22:05:07 +02:00
-
-
d643256f36
fix(rereview): close residual export finalize↔flip double-race at reopen
fabi
2026-07-13 22:05:06 +02:00
-