Commit Graph

  • 273bf5e5fa test(person): add PersonChip browser tests Marcel 2026-05-09 20:00:15 +02:00
  • 2d18de57c9 test(document): cover all five DocumentStatusChip status branches Marcel 2026-05-09 19:58:35 +02:00
  • 4483413abf test(upload-zone): backfill afterEach(cleanup) for consistent test isolation Marcel 2026-05-09 19:56:03 +02:00
  • 9572b062f1 refactor(test): use getByRole instead of data-testid in TranscriptionPanelHeader test Marcel 2026-05-09 19:55:05 +02:00
  • 92da39ed84 chore(routes): delete dev-only demo route Marcel 2026-05-09 19:51:51 +02:00
  • 3775f4cb52 ci(nightly): regression guard for backend /import:ro mount Marcel 2026-05-11 20:08:30 +02:00
  • c2c42706c7 ci(release): wire IMPORT_HOST_DIR=/srv/familienarchiv-production/import Marcel 2026-05-11 20:06:33 +02:00
  • 9703a72e6c ci(nightly): wire IMPORT_HOST_DIR=/srv/familienarchiv-staging/import Marcel 2026-05-11 20:05:55 +02:00
  • a40267e490 docs(deployment): document IMPORT_HOST_DIR and mass-import workflow Marcel 2026-05-11 20:05:14 +02:00
  • cdb5db6c68 fix(compose): require IMPORT_HOST_DIR, no default Marcel 2026-05-11 20:03:57 +02:00
  • ff20721dee refactor(import): make import directory @Value-configurable Marcel 2026-05-11 20:02:45 +02:00
  • 4a537d6b19 feat(infra): bind-mount /import for backend mass-import endpoint Marcel 2026-05-11 18:57:47 +02:00
  • 5f3529439a fix(infra): frontend healthcheck on 127.0.0.1, not localhost Marcel 2026-05-11 18:49:32 +02:00
  • 48c8bb8a5f fixup: address Nora's review on #520 (security blockers) Marcel 2026-05-11 17:49:27 +02:00
  • 023810df1e fix(security): promote auth_token cookie to Authorization header for browser /api/* calls Marcel 2026-05-11 17:41:26 +02:00
  • ad3b571bba fix(user): findOrCreate Administrators group instead of blind-INSERT (#518) Marcel 2026-05-11 17:29:11 +02:00
  • 9686e304c2 fix(caddy): wrap actuator block in handle so it takes precedence over catch-all Marcel 2026-05-11 17:12:09 +02:00
  • ea0b3050e4 fix(user): fail-closed when admin seed would use dev defaults outside dev/test/e2e Marcel 2026-05-11 17:09:36 +02:00
  • 21343cdf23 fix(user): rename yaml key username→email so admin seed reads APP_ADMIN_USERNAME Marcel 2026-05-11 16:36:57 +02:00
  • 6ba7254344 test(ci): assert prerender output is only /hilfe/transkription fix/issue-514-prerender-crawl-bakes-redirects Marcel 2026-05-11 17:00:54 +02:00
  • b2955fb695 fix(frontend): disable prerender crawl so /, /documents, /persons aren't baked Marcel 2026-05-11 16:52:42 +02:00
  • 5d2888e038 Merge pull request 'fix(compose): mark create-buckets as one-shot for up --wait (#510)' (#511) from fix/issue-510-compose-wait-oneshot-create-buckets into main marcel 2026-05-11 16:59:59 +02:00
  • 3668555421 fix(compose): mark create-buckets as one-shot for up --wait Marcel 2026-05-11 16:33:04 +02:00
  • 54a8f7f8e9 fix(workflows): match runner label — runs-on ubuntu-latest, not self-hosted Marcel 2026-05-11 16:15:53 +02:00
  • f8f0951bd5 fix(minio): bake bootstrap.sh into image instead of bind-mounting Marcel 2026-05-11 15:32:36 +02:00
  • c3c1efe5f1 Merge pull request 'fix(fail2ban): pin polling backend so jail actually reads Caddy access log (#503)' (#504) from fix/issue-503-fail2ban-polling-backend into main marcel 2026-05-11 15:08:58 +02:00
  • e5363913ec fix(fail2ban): pin polling backend so jail actually reads Caddy access log Marcel 2026-05-11 14:59:40 +02:00
  • 4d4d5793bb docs(glossary): add archiv-app service account entry Marcel 2026-05-11 14:11:46 +02:00
  • 9adde3cd89 refactor(compose): rename docker network archive-net to archiv-net Marcel 2026-05-11 14:10:39 +02:00
  • 440a191138 infra(workflows): annotate env-file cleanup as load-bearing Marcel 2026-05-11 14:09:12 +02:00
  • 1873f50f7f infra(mailpit): use nc -z healthcheck instead of wget Marcel 2026-05-11 14:08:23 +02:00
  • a4f2047bcc security(ocr): pin ALLOWED_PDF_HOSTS=minio in prod ocr-service env Marcel 2026-05-11 14:07:16 +02:00
  • 09680557ef security(caddy): add Permissions-Policy header Marcel 2026-05-11 14:06:13 +02:00
  • 8fcf653cb0 ci(smoke): pin HSTS to preload-list-eligible value Marcel 2026-05-11 14:05:02 +02:00
  • a7a80f8c16 docs(deployment): route SSE through Caddy in topology mermaid Marcel 2026-05-11 13:18:11 +02:00
  • 03d478840b docs(arch): show Caddy + X-Forwarded-Proto in auth-flow diagram Marcel 2026-05-11 13:17:12 +02:00
  • 6a6a1c4353 docs(adr): ADR-011 single-tenant Gitea runner with on-disk env-files Marcel 2026-05-11 13:16:20 +02:00
  • b57afb9ad2 docs(adr): ADR-010 MinIO stays self-hosted, Hetzner OBS deferred Marcel 2026-05-11 13:15:38 +02:00
  • 59bc81d353 docs(adr): ADR-009 standalone docker-compose.prod.yml, not overlay Marcel 2026-05-11 13:14:58 +02:00
  • 33300e4ad9 chore(infra): drop aspirational Renovate comments from compose Marcel 2026-05-11 13:12:55 +02:00
  • fe1451f570 ci(smoke): pin curl to 127.0.0.1 via --resolve Marcel 2026-05-11 13:12:05 +02:00
  • f2ec81547b ci(deploy): add --pull to docker compose build for CVE pickup Marcel 2026-05-11 13:10:59 +02:00
  • 7e430998b8 security(fail2ban): widen jail to /forgot-password and rate-limit 429 Marcel 2026-05-11 13:10:08 +02:00
  • 156afa14a2 test(ci): add compose bucket-bootstrap idempotency job Marcel 2026-05-11 13:08:51 +02:00
  • 91f70e652d security(minio): scope archiv-app to bucket-only IAM policy Marcel 2026-05-11 13:07:56 +02:00
  • 9652894aa4 test(ci): add fail2ban-regex regression job Marcel 2026-05-11 13:03:04 +02:00
  • e5d953dee8 test(config): rewrite ForwardHeadersConfigurationTest as context-less binder test Marcel 2026-05-11 13:01:06 +02:00
  • ba5bd9cb11 docs(deployment): document fail2ban symlink, OCR_MEM_LIMIT, smoke test Marcel 2026-05-11 12:07:59 +02:00
  • 83565c6bb5 docs(ci): document workflow operational assumptions Marcel 2026-05-11 12:06:48 +02:00
  • a91a3e1f61 feat(ci): smoke test production deploy after up --wait Marcel 2026-05-11 12:05:41 +02:00
  • c523721ce8 feat(ci): smoke test staging deploy after up --wait Marcel 2026-05-11 12:05:00 +02:00
  • ad69d7cb83 feat(infra): commit fail2ban jail for /api/auth/login Marcel 2026-05-11 12:04:06 +02:00
  • 8d27c82e6d feat(infra): write Caddy JSON access logs for fail2ban Marcel 2026-05-11 12:02:28 +02:00
  • 4eb5eba347 feat(infra): parameterize OCR mem_limit via OCR_MEM_LIMIT Marcel 2026-05-11 12:01:23 +02:00
  • 47c5f77c81 fix(infra): fail loud when archiv-app is missing the readwrite policy Marcel 2026-05-11 12:00:34 +02:00
  • a36f25cfc3 fix(infra): pin minio/mc client tag Marcel 2026-05-11 11:59:18 +02:00
  • c9ac83b2ba fix(infra): pin axllent/mailpit tag Marcel 2026-05-11 11:58:34 +02:00
  • e4df17f308 docs: retire overlay narrative; add Caddy to C4 L2 diagram Marcel 2026-05-10 22:00:21 +02:00
  • 2eade2b78f docs(deployment): rewrite for Gitea Actions / Caddy / prod compose Marcel 2026-05-10 21:58:51 +02:00
  • 334b507476 feat(ci): add release production deploy workflow Marcel 2026-05-10 21:56:37 +02:00
  • 59349dfe93 feat(ci): add nightly staging deploy workflow Marcel 2026-05-10 21:55:41 +02:00
  • 56e55ff488 feat(infra): add production Caddyfile Marcel 2026-05-10 21:54:38 +02:00
  • ecb930e5f9 feat(infra): add docker-compose.prod.yml for production/staging Marcel 2026-05-10 21:53:19 +02:00
  • 8b109349c2 feat(frontend): add production stage to Dockerfile Marcel 2026-05-10 21:51:32 +02:00
  • ebd0f671f9 fix(auth): mark /hilfe/transkription as public for prerender Marcel 2026-05-10 21:50:53 +02:00
  • 83f022ff4b feat(security): trust X-Forwarded-Proto behind reverse proxy Marcel 2026-05-10 21:33:39 +02:00
  • 80ccc0f3c6 fix(test): extend coverage thresholds to all four dimensions Marcel 2026-05-09 18:56:44 +02:00
  • eccecf35e3 ci: add combined coverage gate to unit-tests job Marcel 2026-05-09 17:51:10 +02:00
  • 16f69fff33 feat(test): update test:coverage to run both server and client projects Marcel 2026-05-09 17:50:13 +02:00
  • bb374bf2cd feat(test): add Istanbul browser coverage via standalone client config Marcel 2026-05-09 17:49:41 +02:00
  • 1a28e3114d build(deps): add @vitest/coverage-istanbul for browser-project coverage Marcel 2026-05-09 17:21:00 +02:00
  • 915ad9f5c6 test(fts): add overflow guard and UUID-as-String regression tests Marcel 2026-05-09 14:42:26 +02:00
  • 143622bf27 refactor(fts): address PR #488 review concerns Marcel 2026-05-09 14:35:54 +02:00
  • a3906976e8 test(fts): add integration tests and update unit tests for SQL-paginated relevance Marcel 2026-05-09 14:21:05 +02:00
  • b017da22c3 feat(fts): push FTS pagination into SQL via CTE window function Marcel 2026-05-09 14:20:25 +02:00
  • fea837b345 refactor(fts): add FtsHit/FtsPage records; rename findRankedIdsByFts -> findAllMatchingIdsByFts Marcel 2026-05-09 14:06:24 +02:00
  • a364e3f69b docs(adr): ADR-008 SQL-level FTS pagination via window-function CTE Marcel 2026-05-09 14:04:02 +02:00
  • 7ca44d7df1 fix(db): add indexes on documents.sender_id and document_comments.author_id Marcel 2026-05-09 15:08:16 +02:00
  • e975642a4c fix(pdf-controls): add focus-visible ring to all PdfControls buttons (WCAG 2.1 §2.4.7) Marcel 2026-05-09 15:54:27 +02:00
  • 72f422afe2 fix(a11y): increase all PdfControls buttons to 44×44px touch targets Marcel 2026-05-09 15:49:18 +02:00
  • 6074480482 ci: document Docker socket security trade-off in runner config Marcel 2026-05-09 16:05:19 +02:00
  • 5512790d5a ci: track act_runner config with Docker socket mount Marcel 2026-05-09 16:01:24 +02:00
  • a158048f45 fix(ci): expose Docker socket env vars for Testcontainers in backend job Marcel 2026-05-09 16:00:43 +02:00
  • ac999066dd fix(ci): add TZ=Europe/Berlin to frontend test step Marcel 2026-05-09 16:00:03 +02:00
  • 8b25a5b940 fix(user): replace Math.abs(hashCode()) with Math.floorMod in computeColor Marcel 2026-05-09 15:00:40 +02:00
  • 265b4f1484 fix(comment): declare missing @PathVariable params on block comment endpoints Marcel 2026-05-09 14:51:50 +02:00
  • bfc3a17676 test(migration): guard cleanup in try-finally to ensure isolation Marcel 2026-05-09 15:25:26 +02:00
  • eb54a98ea2 fix(user): use builder in createGroup and guard against null permissions Marcel 2026-05-09 15:19:20 +02:00
  • 3fcdfa85f1 fix(db): add PRIMARY KEY to group_permissions; promote tbmp UNIQUE to PK Marcel 2026-05-09 15:18:46 +02:00
  • cd1c0b210e test(typeahead): note resetKey smoke-test limitation in spec comment Marcel 2026-05-09 10:36:18 +02:00
  • a239c16c31 fix(documents): sync filter display state with URL on navigation Marcel 2026-05-09 10:29:19 +02:00
  • 8a8205ad8d fix(person-typeahead): add resetKey prop to clear term on navigation reset Marcel 2026-05-09 10:27:30 +02:00
  • 0430383e1c fix(date-input): re-derive display when value prop changes externally Marcel 2026-05-09 09:11:29 +02:00
  • e2d74ff880 ci: add npm run build step to unit-tests job Marcel 2026-05-09 08:52:20 +02:00
  • 586eea009b fix(build): add prerender entry for /hilfe/transkription Marcel 2026-05-09 08:51:45 +02:00
  • 1ec4815e24 ci: add npm run build step to unit-tests job fix/issue-472-prerender-entries Marcel 2026-05-09 08:52:20 +02:00
  • a7bbf2424f fix(build): add prerender entry for /hilfe/transkription Marcel 2026-05-09 08:51:45 +02:00
  • 7c2c4741ab refactor(dashboard): replace new CSS tokens with existing equivalents Marcel 2026-05-08 23:12:36 +02:00
  • d464bca9f3 style(dashboard): increase doc row padding py-1.5 → py-3 in ReaderRecentDocs Marcel 2026-05-08 18:22:55 +02:00
  • 2283f733cc refactor(dashboard): align ReaderPersonChips cards with /persons overview style Marcel 2026-05-08 18:21:24 +02:00