Commit Graph

  • 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