2026-02-14 - 2026-05-14

Overview

194 Active Pull Requests
370 Active Issues
Excluding merges, 2 authors have pushed 2215 commits to main and 2450 commits to all branches. On main, 4241 files have changed and there have been 764582 additions and 54268 deletions.

192 Pull requests merged by 1 user

Merged #568 fix(ci): run svelte-kit sync before lint to fix cache-hit tsconfig miss 2026-05-14 12:09:04 +02:00

Merged #565 ci: restrict push trigger to main — eliminate duplicate CI runs 2026-05-14 11:12:25 +02:00

Merged #564 fix(ci): run client coverage even when server coverage fails 2026-05-14 11:07:35 +02:00

Merged #563 fix(tests): use native element clicks in layout dropdown spec 2026-05-14 11:07:23 +02:00

Merged #561 fix(ci): add IMPORT_HOST_DIR stub to compose-idempotency job 2026-05-14 10:58:40 +02:00

Merged #558 ci(devops): downgrade upload-artifact v4 → v3 + ADR-014 + grep guard 2026-05-14 10:58:20 +02:00

Merged #559 chore(coverage): drop client branches threshold 80→75 to unblock CI 2026-05-14 10:16:52 +02:00

Merged #555 fix(#553): close [birpc] rpc is closed race — sync-factory invariant + duplicate-ID guard + PR #10267 backport 2026-05-13 12:55:49 +02:00

Merged #552 fix(notification): replace view-all anchor with button to prevent iframe navigation 2026-05-12 18:56:14 +02:00

Merged #550 fix(pdf-viewer): eliminate real pdfjs-dist loading from browser tests — stop birpc teardown race 2026-05-12 16:20:29 +02:00

Merged #549 fix(pdf-viewer): remove banned vi.mock('pdfjs-dist') — ADR 012 enforcement (issue #546) 2026-05-12 12:32:24 +02:00

Merged #548 fix(test): NotificationDropdown iframe navigation crash + Tailwind CI noise 2026-05-12 11:35:41 +02:00

Merged #547 test: fix flaky browser-mode tests in AnnotationShape and OcrTrainingCard specs 2026-05-12 11:14:22 +02:00

Merged #536 fix(#535): eliminate vi.mock(pdfjs-dist) birpc teardown race via libLoader injection 2026-05-12 09:57:30 +02:00

Merged #544 fix(ci): replace iproute2 ip with /proc/net/route for gateway detection 2026-05-12 09:57:03 +02:00

Merged #540 fix(ci): resolve smoke test host via bridge gateway, not 127.0.0.1 2026-05-12 09:28:45 +02:00

Merged #537 ci(nightly): reload Caddy before smoke test 2026-05-12 07:51:13 +02:00

Merged #505 test(coverage): drive browser tests to 80% on all metrics (#496) 2026-05-11 21:50:39 +02:00

Merged #526 feat(infra): bind-mount /import for backend mass-import endpoint 2026-05-11 20:55:43 +02:00

Merged #525 fix(infra): frontend healthcheck on 127.0.0.1, not localhost 2026-05-11 18:52:31 +02:00

Merged #521 fix(security): promote auth_token cookie to Authorization header (#520) 2026-05-11 18:20:10 +02:00

Merged #519 fix(user): findOrCreate Administrators group instead of blind-INSERT (#518) 2026-05-11 18:19:50 +02:00

Merged #517 fix(caddy): wrap actuator block in handle so it takes precedence over catch-all (#512) 2026-05-11 17:15:03 +02:00

Merged #516 fix(user): rename yaml key username→email so admin seed reads APP_ADMIN_USERNAME (#513) 2026-05-11 17:12:37 +02:00

Merged #515 fix(frontend): disable prerender crawl so protected routes aren't baked to login-bounces (#514) 2026-05-11 17:12:03 +02:00

Merged #511 fix(compose): mark create-buckets as one-shot for up --wait (#510) 2026-05-11 17:00:00 +02:00

Merged #509 fix(workflows): match runner label — runs-on ubuntu-latest (#508) 2026-05-11 16:18:40 +02:00

Merged #507 fix(minio): bake bootstrap.sh into image instead of bind-mounting (#506) 2026-05-11 15:56:06 +02:00

Merged #504 fix(fail2ban): pin polling backend so jail actually reads Caddy access log (#503) 2026-05-11 15:08:59 +02:00

Merged #499 feat(infra): production deployment pipeline — Caddy, staging, Gitea Actions (#497) 2026-05-11 14:29:33 +02:00

Merged #495 fix(test): make browser-project tests contribute to coverage measurement 2026-05-09 19:04:28 +02:00

Merged #488 fix(fts): paginate FTS match-set in SQL instead of loading all matching IDs 2026-05-09 16:35:15 +02:00

Merged #491 fix(db): add indexes on documents.sender_id and document_comments.author_id (#470) 2026-05-09 16:34:26 +02:00

Merged #493 fix(a11y): increase PdfControls touch targets to 44×44px (#354) 2026-05-09 16:09:18 +02:00

Merged #494 fix(ci): resolve date-buckets timezone + Testcontainers Docker failures (#476) 2026-05-09 16:08:49 +02:00

Merged #490 fix(user): replace Math.abs(hashCode()) with Math.floorMod in computeColor 2026-05-09 15:49:01 +02:00

Merged #489 fix(comment): declare missing @PathVariable params on block comment endpoints 2026-05-09 15:46:09 +02:00

Merged #492 fix(db): add PRIMARY KEY to group_permissions and promote tbmp UNIQUE to PK (#469) 2026-05-09 15:44:35 +02:00

Merged #487 fix(documents): filter inputs don't sync with URL on navigation (#482) 2026-05-09 14:27:25 +02:00

Merged #486 fix(build): unbreak production build — /hilfe/transkription prerender unreachable behind /login 2026-05-09 14:25:55 +02:00

Merged #484 feat(dashboard): reader dashboard spec alignment #483 2026-05-09 14:24:24 +02:00

Merged #477 feat(#447): permission-gated reader dashboard 2026-05-08 15:56:54 +02:00

Merged #478 feat(documents): timeline date-range filter with density bars (#385) 2026-05-08 12:27:17 +02:00

Merged #475 feat(chronik): add commentPreview to ActivityFeedItemDTO (#454) 2026-05-07 20:07:46 +02:00

Merged #456 cleanup(legibility): repo hygiene, TODO cleanup, and test flakiness fixes 2026-05-07 13:42:14 +02:00

Merged #455 cleanup(legibility): polish — CLEANUP-2, CLEANUP-3, CLEANUP-4 2026-05-07 13:22:18 +02:00

Merged #452 docs(db): add ER and ORM diagrams (PlantUML) 2026-05-07 07:12:31 +02:00

Merged #450 docs(c4): add C4-PlantUML diagram files for all architecture views 2026-05-06 22:52:39 +02:00

Merged #448 docs(c4): accuracy audit — split L3 diagrams, add 6 new sub-diagrams, fix all stale content 2026-05-06 20:00:16 +02:00

Merged #449 docs(spec): reader dashboard design exploration and final spec 2026-05-06 12:51:45 +02:00

Merged #446 docs: fix stale CLAUDE.md content after design-system refactoring 2026-05-06 09:18:08 +02:00

Merged #445 docs(legibility): migrate CLAUDE.md rules into human docs — DOC-7 2026-05-06 07:41:05 +02:00

Merged #444 docs(legibility): DOC-6 — add 18 per-domain README.md files 2026-05-06 07:36:41 +02:00

Merged #443 docs(legibility): DOC-5 — write docs/DEPLOYMENT.md 2026-05-06 07:35:25 +02:00

Merged #442 docs(legibility): DOC-4 — write CONTRIBUTING.md with three concrete walkthroughs 2026-05-06 07:31:56 +02:00

Merged #441 docs(legibility): DOC-2 — write docs/ARCHITECTURE.md 2026-05-06 07:31:02 +02:00

Merged #440 docs(legibility): write human-targeted README.md at repo root — DOC-1 2026-05-06 07:01:17 +02:00

Merged #439 docs(legibility): write docs/GLOSSARY.md — DOC-3 2026-05-05 22:37:11 +02:00

Merged #430 epic(legibility): pre-flight — make tests trustworthy (#402) 2026-05-05 20:36:15 +02:00

Merged #429 feat(eslint): add boundaries/dependencies rule for frontend domain imports 2026-05-05 18:09:26 +02:00

Merged #428 test(backend): add ArchUnit domain boundary enforcement (Rules 1–4) 2026-05-05 18:08:40 +02:00

Merged #426 fix: break Spring Framework 7 circular bean dependency cycles 2026-05-05 16:39:38 +02:00

Merged #422 refactor(frontend): restructure lib/ from flat-by-type to domain-based (#408) 2026-05-05 15:32:09 +02:00

Merged #421 refactor: domain-based package layout (#407) 2026-05-05 13:32:44 +02:00

Merged #420 fix(backend): resolve cross-domain repo + controller→repo violations (#417) 2026-05-05 10:50:04 +02:00

Merged #419 fix(backend): rename users table to app_users (closes #418) 2026-05-04 21:57:33 +02:00

Merged #379 feat(person-mention): add @mention discoverability hint to transcription block placeholder 2026-05-04 15:35:08 +02:00

Merged #378 fix(training): use KURRENT_RECOGNITION label for sender-based block queries 2026-05-04 15:26:05 +02:00

Merged #382 feat(geschichten): blog-like family memory stories (closes #381) 2026-05-04 15:02:45 +02:00

Merged #377 feat: auto-open transcription panel when navigating from mission-control cards 2026-04-29 21:38:14 +02:00

Merged #375 fix: hover card maiden name false positive, editor placeholder on non-empty content, mention persistence 2026-04-29 21:33:18 +02:00

Merged #373 feat: decouple person-mention display text from person name (#372) 2026-04-29 16:55:53 +02:00

Merged #371 feat(person-mention): PR-B2 — read-mode rendering + hover card (issue #362) 2026-04-29 13:37:06 +02:00

Merged #369 feat: person @mentions edit-mode infrastructure (PR-B1, #362) 2026-04-29 08:05:49 +02:00

Merged #366 feat(transcription): person @mention sidecar + rename propagation (PR-A backend, #362) 2026-04-28 23:54:40 +02:00

Merged #365 refactor(relationship): use typed RelationType enum in CreateRelationshipRequest 2026-04-28 19:59:45 +02:00

Merged #360 feat(stammbaum): family network — graph, badge, edit card, /stammbaum page (#358) 2026-04-28 19:33:33 +02:00

Merged #352 feat(transcription): add "Alle als fertig markieren" bulk action (#345) 2026-04-28 08:34:27 +02:00

Merged #350 fix(persons): fix person dropdown clipping with fixed positioning and ARIA (#343) 2026-04-27 09:01:48 +02:00

Merged #348 feat(viewer): show delete icon directly on transcription annotation (#339) 2026-04-26 21:56:38 +02:00

Merged #347 feat(persons): show merge action inline with danger hint, remove Gefahrenzone collapsible (#342) 2026-04-26 21:54:46 +02:00

Merged #346 feat(search): add direct page-jump control to document search pagination (#340) 2026-04-26 21:53:18 +02:00

Merged #349 fix(viewer): fix "Annotieren anzeigen" contrast and add lint rule (#341) 2026-04-26 21:46:44 +02:00

Merged #351 feat(nav): add tooltip and cursor:pointer to notification bell, fix ThemeToggle i18n (#344) 2026-04-26 21:45:49 +02:00

Merged #337 feat(audit): track user management events in audit log (#336) 2026-04-26 19:42:00 +02:00

Merged #333 feat(persons): surface personType + title in forms and detail card 2026-04-26 13:37:40 +02:00

Merged #331 feat: bulk metadata edit for existing documents 2026-04-25 19:27:53 +02:00

Merged #329 feat(documents): bulk upload — split-panel with file switcher 2026-04-25 12:24:25 +02:00

Merged #330 feat(#320): guided empty state + Kurrent primer for first-time transcribers 2026-04-25 12:24:04 +02:00

Merged #316 feat(documents): paginate /documents search so first paint isn't 1500 rows 2026-04-24 13:20:26 +02:00

Merged #314 As a user I want the dashboard resume strip to show the actual document thumbnail so I recognize what I was working on at a glance 2026-04-24 07:37:59 +02:00

Merged #311 feat(briefwechsel): thumbnail rows with summary quote and bilateral distribution bar (#305) 2026-04-23 21:38:57 +02:00

Merged #304 fix(transcription): replace sendBeacon with fetch keepalive; add catch-all API proxy 2026-04-23 07:12:23 +02:00

Merged #308 feature: PDF-Thumbnails für Dokumente (Upload + Admin-Backfill) 2026-04-23 07:11:23 +02:00

Merged #303 fix(nav): replace static back-link hrefs with history.back() + fallback 2026-04-22 12:32:57 +02:00

Merged #302 feat(dashboard): add kinds CSV query param to /api/dashboard/activity 2026-04-21 22:48:09 +02:00

Merged #301 feat(chronik): deep-link mentions and comments to the specific comment 2026-04-21 19:06:19 +02:00

Merged #299 bug: notification deep-link does not scroll to comment on document detail page 2026-04-21 15:06:02 +02:00

Merged #297 fix(chronik): surface REPLY events in Für-dich feed via youParticipated 2026-04-21 09:00:25 +02:00

Merged #298 feat: dashboard enrichment-list-block after batch upload (#296) 2026-04-21 08:59:32 +02:00

Merged #288 feat: unify /notifications and dashboard activity feed into a /chronik page 2026-04-20 20:38:12 +02:00

Merged #284 feat/issue-283-sender-receiver-grouping 2026-04-20 11:29:34 +02:00

Merged #282 feat: dedicated /documents search & browse page 2026-04-20 09:11:08 +02:00

Merged #279 fix(admin): delete user button now works reliably 2026-04-20 08:43:16 +02:00

Merged #278 feat(dashboard): redesign home as action-led family archive hub (#271) 2026-04-20 07:45:17 +02:00

Merged #275 feat(audit): domain-level audit log for archive activity 2026-04-19 16:10:42 +02:00

Merged #273 feat: invite-based self-service registration 2026-04-19 09:34:33 +02:00

Merged #272 feat: migrate from username to email-only authentication 2026-04-18 23:36:56 +02:00

Merged #267 feat(enrich): field reordering, required-fields progress bar, and no-PDF upload state 2026-04-18 23:36:33 +02:00

Merged #265 feat(admin): OCR admin pages — overview & model detail 2026-04-18 12:38:42 +02:00

Merged #263 feat(ocr): per-sender specialized Kurrent models with automatic active-learning retraining 2026-04-18 12:30:57 +02:00

Merged #260 feat(ocr): German spell-check post-processing to reduce handwriting gibberish 2026-04-17 17:28:41 +02:00

Merged #255 feat(ocr): add image preprocessing pipeline to improve transcription quality on aged documents 2026-04-17 15:50:37 +02:00

Merged #251 feat(tag-typeahead): tree-aware results — expand children & surface ancestor path 2026-04-17 12:25:55 +02:00

Merged #249 feat(#248): admin tag page complete overhaul — tree panel, merge, subtree delete, new edit components 2026-04-17 10:24:10 +02:00

Merged #245 feat(#240): Mission Control Strip — backend + frontend implementation 2026-04-16 13:41:34 +02:00

Merged #242 feat(search): show search result snippets with match highlighting (#219) 2026-04-16 09:10:11 +02:00

Merged #243 fix(fileloader): prevent infinite reload loop via untrack 2026-04-16 09:09:41 +02:00

Merged #241 refactor(frontend): utility dedup, component splits, dead code removal (#193–#200) 2026-04-15 15:23:16 +02:00

Merged #237 feat(search): upgrade to PostgreSQL full-text search with German stemming 2026-04-15 12:40:21 +02:00

Merged #238 devops(backend): switch to multi-stage Docker build 2026-04-15 11:33:04 +02:00

Merged #236 feat(search): add year/group headers in document list when sorted by date, sender, or receiver 2026-04-15 10:48:16 +02:00

Merged #234 fix(ocr): fix segmentation training for ketos 7 and low-memory hosts 2026-04-14 21:17:54 +02:00

Merged #235 feat(annotations): resize and move annotations in document view 2026-04-14 14:55:28 +02:00

Merged #232 feat(ocr): full OCR pipeline with polygon annotations, training, and guided mode 2026-04-14 10:31:35 +02:00

Merged #229 feat: OCR pipeline with NDJSON streaming and real-time progress (#226, #227, #231) 2026-04-13 12:39:04 +02:00

Merged #228 refactor: replace native confirm() dialogs with shared ConfirmService modal 2026-04-12 14:42:20 +02:00

Merged #215 feat: PersonNameParser enhancements and Person model refactor (#209-#213) 2026-04-08 18:48:00 +02:00

Merged #208 feat(parser): support // separator and dot-compressed names 2026-04-08 18:46:53 +02:00

Merged #206 feat: Person name aliases — support name changes over time #181 2026-04-07 16:44:25 +02:00

Merged #205 feat: Transcription read mode (clean split) #177 2026-04-07 12:46:21 +02:00

Merged #186 feat: Briefwechsel hero redesign — discovery framing + padding 2026-04-07 09:07:23 +02:00

Merged #183 feat(search): extended search, sort options, live tag filter, result count 2026-04-06 19:18:12 +02:00

Merged #178 feat: Expandable metadata drawer + transcription system (#175, #176) 2026-04-06 11:31:11 +02:00

Merged #174 feat(topbar): responsive DocumentTopBar — issue #173 2026-04-02 16:13:49 +02:00

Merged #172 feat(dashboard): Classic Split — remove notification widget, restructure into 2-col layout 2026-03-31 20:56:52 +02:00

Merged #170 feat(focus-rings): branded focus ring tokens (#167) 2026-03-31 17:05:10 +02:00

Merged #169 fix(a11y): UserMenu avatar bg-white/text-brand-navy — WCAG AA contrast 2026-03-31 14:14:39 +02:00

Merged #168 feat(dark-mode): replace neutral-black tokens with navy-tinted palette + fix WCAG AA 2026-03-31 13:53:41 +02:00

Merged #165 feat(header): replace white header with brand-navy header per design spec 2026-03-31 10:41:41 +02:00

Merged #164 feat(ui): Korrespondenz redesign — compact strip, log cards, single-person mode 2026-03-30 21:38:23 +02:00

Merged #160 feat: Admin section redesign (Concept C) + Persons redesign (Concept A) 2026-03-30 18:30:25 +02:00

Merged #159 feat: Persons section redesign — Concept A (Enriched Directory) 2026-03-29 21:36:30 +02:00

Merged #155 feat(#153): notification history page (/notifications) 2026-03-29 19:12:16 +02:00

Merged #154 fix(#145): split DashboardMentions link from muted label 2026-03-29 12:55:37 +02:00

Merged #151 feat(#145): transform home page into user dashboard 2026-03-29 12:39:39 +02:00

Merged #150 test(#148): service unit tests — 90.2% branch coverage 2026-03-28 23:42:32 +01:00

Merged #149 fix(#147): WCAG AA color-contrast failures in brand palette 2026-03-28 19:57:33 +01:00

Merged #146 test: complete test suite (#118, #119, #120, #121, #123, #125) 2026-03-28 19:46:44 +01:00

Merged #127 feat: notifications, @mentions, and comment deep-links (#71 #72 #73) 2026-03-28 16:06:59 +01:00

Merged #109 fix(#94): replace text-white with text-primary-fg on all primary buttons 2026-03-27 16:07:40 +01:00

Merged #108 fix(#93): migrate hardcoded text-gray-400/500 to semantic ink tokens in enrich pages 2026-03-27 16:06:58 +01:00

Merged #107 fix(#92): fix ink-2 and ink-3 contrast to meet WCAG AA across all modes 2026-03-27 16:05:03 +01:00

Merged #106 fix(#91): add px-4 base padding and fix admin tab overflow at 320px 2026-03-27 15:50:19 +01:00

Merged #105 fix(#96): remove off-brand lavender accent bar from all pages 2026-03-27 15:49:27 +01:00

Merged #104 feat(#90): add hamburger menu and mobile nav drawer below 640px 2026-03-27 15:48:18 +01:00

Merged #89 fix(e2e): fix 4 failing e2e tests — strict mode locator and nested form 2026-03-27 10:07:16 +01:00

Merged #88 feat: page-by-page streaming OCR with real-time progress 2026-03-27 10:04:33 +01:00

Merged #82 feat(#81): improve discussion discoverability with count badge and empty state 2026-03-26 21:15:30 +01:00

Merged #80 feat(dropzone): replace upload icon with multi-file icon and clearer hint text 2026-03-26 21:10:37 +01:00

Merged #78 feat: suggest date, sender and title from structured filename (#69) 2026-03-26 16:48:45 +01:00

Merged #77 feat: metadata enrichment queue (#67) 2026-03-26 14:50:35 +01:00

Merged #76 refactor(frontend): split large page components into focused sub-components (#75) 2026-03-26 13:01:37 +01:00

Merged #74 feat(upload): bulk drag-and-drop upload on home page (#66) 2026-03-26 12:00:09 +01:00

Merged #65 feat(#64): dark mode — semantic tokens, ThemeToggle, and UI fixes 2026-03-25 13:50:17 +01:00

Merged #63 feat: discussion sub-tab navigation for annotation threads (#60) 2026-03-25 12:38:45 +01:00

Merged #59 feat: backfill file hashes for existing documents (#56) 2026-03-24 22:09:37 +01:00

Merged #58 feat: annotations linked to file version (#55) 2026-03-24 22:09:13 +01:00

Merged #57 feat(#50): document & annotation comments 2026-03-24 12:57:53 +01:00

Merged #54 feat: PDF annotations for documents (#40) 2026-03-24 10:00:28 +01:00

Merged #52 feat(#38): document edit history with diff and compare mode 2026-03-23 17:27:57 +01:00

Merged #49 feat: password reset via email (#36) 2026-03-23 10:13:56 +01:00

Merged #47 feat(admin): dedicated routes for user management (#37) 2026-03-23 07:55:18 +01:00

Merged #46 fix: Svelte 5 test event delegation + login auth regression 2026-03-22 14:56:14 +01:00

Merged #45 feat: user profile page and nav avatar dropdown (#35) 2026-03-22 14:52:08 +01:00

Merged #44 fix(persons): prevent stale navigation from clobbering focused search input 2026-03-20 22:00:27 +01:00

Merged #43 feat(conversations): swap button, year dividers, summary bar, new-doc link 2026-03-20 21:35:23 +01:00

Merged #42 feat(conversations): filter person typeahead to correspondents of selected person 2026-03-20 21:26:35 +01:00

Merged #41 fix(search): prevent stale navigation from clobbering focused search input 2026-03-20 21:06:28 +01:00

Merged #28 feat(persons): add birth/death year fields (issue #18) 2026-03-19 22:05:12 +01:00

Merged #27 feat(persons): add notes field to person profile (issue #23) 2026-03-19 21:57:07 +01:00

Merged #26 feat(persons): add sort toggle to person document list (issue #24) 2026-03-19 21:51:48 +01:00

Merged #25 feat(person): add conversations quick-link (#20) 2026-03-19 21:38:57 +01:00

Merged #16 feat(i18n): fix remaining hardcoded strings + login page language switcher 2026-03-19 21:04:06 +01:00

Merged #15 devops: fix CI — Playwright Docker image + upload-artifact v3 2026-03-19 20:34:10 +01:00

Merged #9 feat: implement i18n — extract all UI strings, add EN + ES-MX translations, add language selector 2026-03-19 15:13:57 +01:00

Merged #11 fix(auth): resolve login redirect loop in Docker 2026-03-19 15:13:20 +01:00

Merged #10 fix(test): fix 16 pre-existing type errors in page spec fixtures 2026-03-19 13:18:45 +01:00

Merged #7 feat: add frontend dev container to docker-compose 2026-03-19 12:07:20 +01:00

Merged #8 devops/backend-tests 2026-03-17 22:23:13 +01:00

Merged #6 devops/backend-tests 2026-03-17 21:45:42 +01:00

Merged #5 test(backend): add service unit tests and controller slice tests 2026-03-17 21:39:07 +01:00

2 Pull requests proposed by 1 user

252 Issues closed from 1 user

Closed #531 ci(nightly): post-deploy smoke test for /api/admin/import-status 2026-05-14 11:53:21 +02:00

Closed #557 ci(devops): downgrade actions/upload-artifact v4 → v3 (re-regression — needs ADR to prevent future re-upgrade) 2026-05-14 10:58:20 +02:00

Closed #554 audit: factory mocks → prop injection migration (sveltest pattern) 2026-05-14 10:37:38 +02:00

Closed #556 ci(coverage): drop client-project branches threshold 80 → 70 to unblock CI 2026-05-14 10:16:53 +02:00

Closed #553 Unit & Component Tests job exits 1 — birpc teardown race resurfaces from async vi.mock factory with dynamic import 2026-05-13 12:55:50 +02:00

Closed #551 fix(test): NotificationDropdown view-all click navigates iframe — breaks vitest coverage 2026-05-12 16:38:41 +02:00

Closed #546 test: PdfViewer.svelte.test.ts re-introduces banned vi.mock('pdfjs-dist') factory — restores birpc teardown race 2026-05-12 12:32:25 +02:00

Closed #545 fix(test): NotificationDropdown "view-all link" test causes iframe navigation crash in CI 2026-05-12 11:35:41 +02:00

Closed #541 test: fix flaky browser-mode tests in AnnotationShape and OcrTrainingCard specs 2026-05-12 11:14:22 +02:00

Closed #535 Unit & Component Tests job exits 1 from vitest-browser teardown race — every test green but CI red 2026-05-12 09:57:30 +02:00

Closed #496 Increase browser component test coverage to ≥ 80% on all metrics (statements, lines, branches, functions) 2026-05-11 21:50:39 +02:00

Closed #522 tech-debt(auth): replace cookie-promotion glue with a proper session-based auth model 2026-05-11 18:50:50 +02:00

Closed #520 bug(security): browser-side /api/* requests miss Authorization in production → browser shows Basic-auth popup 2026-05-11 18:20:11 +02:00

Closed #518 bug(user): UserDataInitializer blind-INSERTs Administrators group; fails on retry (HIGH, prod-blocking) 2026-05-11 18:19:50 +02:00

Closed #512 bug(caddy): respond @actuator 404 swallowed by catch-all handle; /actuator/health returns 302 2026-05-11 17:15:04 +02:00

Closed #513 bug(user): admin seed ignores APP_ADMIN_USERNAME / PASSWORD — falls back to defaults (HIGH, prod-blocking) 2026-05-11 17:12:37 +02:00

Closed #514 bug(frontend): SvelteKit prerender-crawl bakes redirect-to-login into static HTML for protected routes (HIGH, prod-blocking) 2026-05-11 17:12:03 +02:00

Closed #510 bug(compose): up -d --wait treats create-buckets exit(0) as failure 2026-05-11 17:00:00 +02:00

Closed #508 bug(workflows): deploy workflows use runs-on: self-hosted but runner advertises ubuntu-latest — jobs never picked up 2026-05-11 16:18:41 +02:00

Closed #506 bug(infra/minio): create-buckets bootstrap.sh bind-mount fails on DooD runner (Is a directory) 2026-05-11 15:56:06 +02:00

Closed #503 bug(infra/fail2ban): jail defaults to systemd backend on Debian, never inspects Caddy access log 2026-05-11 15:08:59 +02:00

Closed #497 devops: production deployment — Caddy, staging env, and Gitea Actions CI/CD 2026-05-11 14:29:33 +02:00

Closed #367 security(transcription): CWE-79 — escapeHtml required for @mention rendering in PR-B 2026-05-09 22:03:13 +02:00

Closed #425 fix(test): make browser-project tests contribute to coverage measurement 2026-05-09 19:04:28 +02:00

Closed #468 fix(documents): paginate FTS match-set in SQL instead of loading all matching IDs 2026-05-09 16:35:17 +02:00

Closed #470 fix(db): add indexes on documents.sender_id and document_comments.author_id 2026-05-09 16:34:27 +02:00

Closed #423 fix(test): resolve pre-existing TranscriptionEditView and Richtlinien test failures 2026-05-09 16:20:45 +02:00

Closed #115 fix(ui): replace localStorage panel state restore with SvelteKit snapshot API to eliminate flash on load 2026-05-09 16:11:20 +02:00

Closed #354 fix(a11y): increase annotation toggle touch target to 44×44px minimum 2026-05-09 16:09:21 +02:00

Closed #476 fix(ci): two persistent CI failures — date-buckets timezone + Testcontainers Docker 2026-05-09 16:08:51 +02:00

Closed #471 fix(user): replace Math.abs(hashCode()) in AppUser.computeColor (negative on Integer.MIN_VALUE) 2026-05-09 15:49:02 +02:00

Closed #473 fix(api): add explicit @PathVariable name on transcription-block comment endpoints 2026-05-09 15:46:10 +02:00

Closed #469 fix(db): add primary key to group_permissions to prevent duplicate grants 2026-05-09 15:44:36 +02:00

Closed #482 fix(documents): filter inputs don't sync with URL — Sender/Receiver blank on load, fields don't clear on reset 2026-05-09 14:27:26 +02:00

Closed #472 fix(build): unbreak production build — /hilfe/transkription prerender unreachable behind /login 2026-05-09 14:25:56 +02:00

Closed #483 fix(dashboard): align reader dashboard with reader-dashboard-final spec 2026-05-09 14:24:25 +02:00

Closed #447 feat(dashboard): permission-gated reader dashboard for READ_ALL / BLOG_WRITE users 2026-05-08 15:56:55 +02:00

Closed #385 feat(documents): timeline date-range filter with density bars 2026-05-08 12:27:17 +02:00

Closed #454 feat(chronik): add commentPreview field to ActivityFeedItemDTO 2026-05-07 20:07:49 +02:00

Closed #416 audit(legibility): re-run readiness scorecard; ratify "ready for evaluation" 2026-05-07 15:22:38 +02:00

Closed #411 epic(legibility): polish — remove smells surfaced by audits 2026-05-07 15:22:26 +02:00

Closed #415 cleanup(legibility): repo hygiene — proofshot retention, ignore .agent/.worktrees 2026-05-07 09:35:47 +02:00

Closed #414 cleanup(legibility): rename Helper/Utils/Manager violators to express intent 2026-05-07 09:35:45 +02:00

Closed #413 cleanup(legibility): rewrite vague comments; remove "ask Marcel" markers 2026-05-07 09:35:44 +02:00

Closed #412 cleanup(legibility): remove dead code identified by audits 2026-05-07 09:35:43 +02:00

Closed #451 Add database ER and ORM diagrams (PlantUML) 2026-05-07 07:12:31 +02:00

Closed #394 epic(legibility): documentation — make the codebase self-explaining 2026-05-06 08:50:00 +02:00

Closed #401 docs(legibility): migrate CLAUDE.md rules into human docs; mark migrated content 2026-05-06 07:41:06 +02:00

Closed #400 docs(legibility): add per-domain README.md inside every domain package 2026-05-06 07:36:44 +02:00

Closed #399 docs(legibility): write docs/DEPLOYMENT.md (production runtime + env vars) 2026-05-06 07:35:26 +02:00

Closed #398 docs(legibility): write CONTRIBUTING.md with three concrete walkthroughs 2026-05-06 07:31:57 +02:00

Closed #396 docs(legibility): write docs/ARCHITECTURE.md with diagram and domain list 2026-05-06 07:31:03 +02:00

Closed #395 docs(legibility): write human-targeted README.md at repo root 2026-05-06 07:01:19 +02:00

Closed #397 docs(legibility): write docs/GLOSSARY.md disambiguating overloaded terms 2026-05-05 22:37:13 +02:00

Closed #438 docs(legibility): migrate CLAUDE.md rules to human docs via pointer comments (DOC-7) 2026-05-05 21:14:45 +02:00

Closed #437 docs(legibility): write 18 README.md files for canonical domain packages (DOC-6) 2026-05-05 21:14:44 +02:00

Closed #436 docs(legibility): write docs/DEPLOYMENT.md as Day-1 production checklist (DOC-5) 2026-05-05 21:14:42 +02:00

Closed #435 docs(legibility): write CONTRIBUTING.md with three walkthroughs and Testing section (DOC-4) 2026-05-05 21:14:40 +02:00

Closed #434 docs(legibility): write docs/GLOSSARY.md disambiguating overloaded terms (DOC-3) 2026-05-05 21:14:39 +02:00

Closed #433 docs(legibility): write docs/ARCHITECTURE.md with diagram, domains, security model (DOC-2) 2026-05-05 21:14:38 +02:00

Closed #432 docs(legibility): write human-targeted root README.md (DOC-1) 2026-05-05 21:14:37 +02:00

Closed #405 test(legibility): verify e2e suite covers every critical user journey 2026-05-05 20:37:35 +02:00

Closed #404 test(legibility): rewrite tautological tests revealed by TEST-1 2026-05-05 20:37:13 +02:00

Closed #403 test(legibility): mutation-test critical backend service tests; flag tautologies 2026-05-05 20:36:56 +02:00

Closed #402 epic(legibility): pre-flight — make tests trustworthy before big-bang refactor 2026-05-05 20:36:34 +02:00

Closed #390 audit(ocr-service): score ocr-service/ against legibility rubric C1–C10 2026-05-05 19:29:46 +02:00

Closed #389 audit(backend): score backend/ against legibility rubric C1–C10 2026-05-05 19:29:33 +02:00

Closed #388 audit(frontend): score frontend/ against legibility rubric C1–C10 2026-05-05 19:29:24 +02:00

Closed #387 epic(legibility): audit — assess current state of every subsystem 2026-05-05 19:29:13 +02:00

Closed #391 audit(db): score Flyway migrations + DB schema against legibility rubric 2026-05-05 19:28:29 +02:00

Closed #392 audit(rest): score infra/, scripts/, root, docs/ against legibility rubric 2026-05-05 19:28:13 +02:00

Closed #393 audit(rollup): produce global readiness scorecard from subsystem audits 2026-05-05 19:27:52 +02:00

Closed #406 epic(legibility): big-bang restructure — backend layer→domain, frontend lib→domain 2026-05-05 19:27:17 +02:00

Closed #410 refactor(frontend): add ESLint rule preventing cross-domain imports 2026-05-05 18:09:26 +02:00

Closed #409 refactor(backend): add ArchUnit test enforcing domain boundaries 2026-05-05 18:08:41 +02:00

Closed #408 refactor(frontend): restructure lib/ from flat-by-type to domain-based 2026-05-05 15:32:10 +02:00

Closed #407 refactor(backend): restructure from layer-based to domain-based packaging 2026-05-05 13:32:47 +02:00

Closed #417 fix(backend): resolve cross-domain repo + controller→repo violations before REFACTOR-1 2026-05-05 10:50:06 +02:00

Closed #418 decide(backend): resolve users-table / AppUser-entity naming mismatch before REFACTOR-1 2026-05-04 21:57:34 +02:00

Closed #370 feat(person-mention): discoverability hint for the @ trigger in the editor 2026-05-04 15:35:09 +02:00

Closed #381 feat: Geschichten — blog-like family memory stories linked to persons and documents 2026-05-04 15:02:46 +02:00

Closed #362 feat: Person @mentions in transcription blocks with hover card 2026-04-30 10:21:25 +02:00

Closed #376 feat: auto-open transcription panel when navigating from mission-control cards 2026-04-29 21:38:16 +02:00

Closed #374 GET /api/persons leaks PersonSummaryDTO.notes to typeahead clients (CWE-200) 2026-04-29 16:56:59 +02:00

Closed #372 Person mention: decouple display text from person name to preserve original wording 2026-04-29 16:55:54 +02:00

Closed #358 feat: Stammbaum — family relationship graph replaces Briefwechsel in nav 2026-04-28 19:33:34 +02:00

Closed #313 test(briefwechsel): capture visual-regression baselines for the row layout 2026-04-28 11:19:03 +02:00

Closed #266 fix(ocr): regenerate TypeScript types so TriggerSenderTrainingDTO.personId is non-optional 2026-04-28 11:19:02 +02:00

Closed #224 feat: show top conversation pairs on briefwechsel entry state 2026-04-28 11:19:01 +02:00

Closed #338 feat(briefwechsel): discovery landing grid + gap markers 2026-04-28 11:18:28 +02:00

Closed #345 feat(transcription): add "Alle als fertig markieren" bulk action to transcription panel 2026-04-28 08:34:27 +02:00

Closed #343 bug(persons): person selection dropdown is visually clipped / cut off 2026-04-27 09:01:48 +02:00

Closed #339 feat(viewer): show delete icon directly on transcription annotation 2026-04-26 21:56:38 +02:00

Closed #342 feat(persons): show merge action inline with danger hint, remove Gefahrenzone collapsible 2026-04-26 21:54:46 +02:00

Closed #340 feat(search): add direct page-jump control to document search pagination 2026-04-26 21:53:19 +02:00

Closed #341 bug(viewer): "Annotieren anzeigen" text has insufficient contrast in light mode 2026-04-26 21:46:46 +02:00

Closed #344 feat(nav): add tooltip and cursor:pointer to notification bell icon 2026-04-26 21:45:51 +02:00

Closed #336 feat(audit): track user management events in audit log (USER_CREATED, USER_DELETED, GROUP_MEMBERSHIP_CHANGED) 2026-04-26 19:42:00 +02:00

Closed #218 feat(ui): surface title & personType fields in person forms and detail card 2026-04-26 13:37:40 +02:00

Closed #325 feat(tags): split flat tag taxonomy into documentType + event + freeform dimensions 2026-04-25 20:31:40 +02:00

Closed #225 feat: bulk metadata edit for existing documents (select → panel → PATCH) 2026-04-25 19:27:54 +02:00

Closed #317 feat(documents): bulk upload — split-panel with file switcher 2026-04-25 12:24:26 +02:00

Closed #320 feat(transcribe): guided empty state + Kurrent primer for first-time transcribers 2026-04-25 12:24:05 +02:00

Closed #315 feat(documents): paginate /documents search so first paint isn't 1500 rows 2026-04-24 13:20:27 +02:00

Closed #294 As a user creating a new document I want the same split-panel edit view as on existing documents, so I can enter metadata next to the file preview 2026-04-24 10:48:57 +02:00

Closed #309 As a user I want the dashboard resume strip to show the actual document thumbnail so I recognize what I was working on at a glance 2026-04-24 07:37:59 +02:00

Closed #305 feature(briefwechsel): thumbnail rows with summary quote and bilateral distribution bar 2026-04-23 21:38:58 +02:00

Closed #204 Transcription block saves silently lost when navigating away in production 2026-04-23 07:12:24 +02:00

Closed #307 feature: PDF-Thumbnails für Dokumente (Upload + Admin-Backfill) 2026-04-23 07:11:24 +02:00

Closed #203 Notification SSE stream retries infinitely when session expires 2026-04-22 15:42:29 +02:00

Closed #152 bug: HikariCP connection pool exhaustion causes backend outages 2026-04-22 15:25:54 +02:00

Closed #202 Memory leaks when navigating between documents -- blob URLs never revoked 2026-04-22 15:17:06 +02:00

Closed #185 fix(nav): replace static back-link hrefs with history.back() + fallback 2026-04-22 12:32:57 +02:00

Closed #293 feat(dashboard): add kinds CSV query param to /api/dashboard/activity 2026-04-21 22:48:10 +02:00

Closed #291 observability: add /api/dashboard/activity p95 latency panel to Grafana 2026-04-21 19:06:33 +02:00

Closed #300 feat: chronik mentions should deep-link to the comment, matching the bell dropdown 2026-04-21 19:06:20 +02:00

Closed #276 bug: notification deep-link does not scroll to comment on document detail page 2026-04-21 15:06:02 +02:00

Closed #295 bug: REPLY notifications not surfaced in Chronik "Für dich" feed 2026-04-21 09:00:26 +02:00

Closed #296 As a user I want to see uploaded documents needing metadata on the dashboard so I can continue enriching after a batch upload 2026-04-21 08:59:32 +02:00

Closed #285 feat: unify /notifications and dashboard activity feed into a /chronik page 2026-04-20 20:38:12 +02:00

Closed #280 fix(dashboard): audit_log never written + hero blind to annotation-only work 2026-04-20 13:04:27 +02:00

Closed #283 feat: restore sender/receiver grouping on /documents when sorting by SENDER or RECEIVER 2026-04-20 13:04:15 +02:00

Closed #281 feat: dedicated /documents search & browse page 2026-04-20 09:11:09 +02:00

Closed #277 bug: deleting a user in the admin panel does nothing 2026-04-20 08:43:17 +02:00

Closed #271 feat(dashboard): redesign Dokumente dashboard as a document hub (Variant A) 2026-04-20 07:45:18 +02:00

Closed #247 feat: Mission Control Strip — "offen" total count per column 2026-04-19 16:16:20 +02:00

Closed #246 feat: Mission Control Strip — contributor avatars per queue item 2026-04-19 16:16:19 +02:00

Closed #274 feat(audit): domain-level audit log for archive activity 2026-04-19 16:10:42 +02:00

Closed #269 feat: invite-based self-service registration 2026-04-19 09:34:34 +02:00

Closed #270 feat: migrate from username to email-only authentication 2026-04-18 23:36:58 +02:00

Closed #261 feat(enrich): field reordering, required-fields progress bar, and no-PDF upload state 2026-04-18 23:36:34 +02:00

Closed #264 feat(admin): OCR admin pages — overview & model detail 2026-04-18 12:38:44 +02:00

Closed #253 feat(ocr): per-sender specialized Kurrent models with automatic active-learning retraining 2026-04-18 12:30:58 +02:00

Closed #254 feat(ocr): German spell-check post-processing to reduce handwriting gibberish 2026-04-17 17:28:42 +02:00

Closed #256 feat(ocr): two-phase progress indicator distinguishing preprocessing from OCR analysis 2026-04-17 15:51:36 +02:00

Closed #252 feat(ocr): add image preprocessing pipeline to improve transcription quality on aged documents 2026-04-17 15:50:38 +02:00

Closed #250 feat(tag-typeahead): tree-aware results — expand children & surface ancestor path 2026-04-17 12:25:56 +02:00

Closed #248 feat: Admin tag page complete overhaul — hierarchy tree, parent picker, merge, delete guard 2026-04-17 10:29:08 +02:00

Closed #221 feat: improved tag system — AND/OR filtering and tag hierarchy 2026-04-17 07:38:21 +02:00

Closed #240 As a family member I want to see which documents need transcription and which are ready to read so I know where to contribute 2026-04-16 13:41:35 +02:00

Closed #219 feat: show search result snippets with match highlighting 2026-04-16 09:10:12 +02:00

Closed #195 Unify click-outside handling to use existing clickOutside action 2026-04-15 21:02:36 +02:00

Closed #193 Delete dead conversations/ route (old Korrespondenz page) 2026-04-15 21:02:35 +02:00

Closed #194 Extract shared utility functions to eliminate duplication 2026-04-15 21:02:35 +02:00

Closed #199 Split TranscriptionEditView.svelte (332 lines) — extract auto-save + drag-drop modules 2026-04-15 21:02:12 +02:00

Closed #200 Split NotificationBell.svelte (316 lines) — extract dropdown + SSE stream module 2026-04-15 21:02:12 +02:00

Closed #201 Minor structural improvements — notification rows, admin list panels, search filters, icons 2026-04-15 21:02:12 +02:00

Closed #197 Split EntityNav.svelte (516 lines) into section + item subcomponents 2026-04-15 21:02:11 +02:00

Closed #198 Split CommentThread.svelte (310 lines) — extract CommentMessage component 2026-04-15 21:02:11 +02:00

Closed #196 Split PdfViewer.svelte (469 lines) into renderer module + controls component 2026-04-15 21:02:10 +02:00

Closed #222 feat: upgrade search from ILIKE to PostgreSQL full-text search 2026-04-15 12:40:22 +02:00

Closed #220 feat: add year/group headers in search results when sorted by date 2026-04-15 10:48:18 +02:00

Closed #233 feat(annotations): allow user to resize and move annotation boxes after drawing 2026-04-14 14:55:29 +02:00

Closed #230 feat: Kraken fine-tuning pipeline (block origin tracking + training export + admin UI) 2026-04-14 10:31:45 +02:00

Closed #231 perf: page-by-page streaming OCR with real-time progress 2026-04-13 12:39:06 +02:00

Closed #227 feat: extend annotations to support polygon shapes (4-point quadrilateral) 2026-04-13 12:39:05 +02:00

Closed #226 feat: local OCR pipeline (batch + per-document) with Surya and Kraken 2026-04-13 12:39:04 +02:00

Closed #207 refactor: Replace native confirm() dialogs with a shared confirmation modal service 2026-04-12 14:42:21 +02:00

Closed #212 feat(model): add title/salutation field to Person and make firstName optional 2026-04-08 20:55:40 +02:00

Closed #213 refactor: preparatory infrastructure for PersonNameParser enhancements (#209-#212) 2026-04-08 20:55:40 +02:00

Closed #211 feat(model): add PersonType enum to distinguish persons from institutions/groups 2026-04-08 20:55:39 +02:00

Closed #210 feat(parser): strip parenthesized annotations in split() and preserve content 2026-04-08 20:55:39 +02:00

Closed #209 feat(parser): improve GEB_PATTERN and store maiden name as alias 2026-04-08 18:48:01 +02:00

Closed #190 feat(massimport): support // separator and dot-compressed names in PersonNameParser 2026-04-08 18:46:55 +02:00

Closed #181 feat: Person name aliases — support name changes over time (marriage, widowhood) 2026-04-07 16:44:25 +02:00

Closed #177 feat: Transcription read mode (clean split) 2026-04-07 12:46:21 +02:00

Closed #184 feat(massimport): handle dot-compressed names and titles in PersonNameParser.split() 2026-04-07 09:23:00 +02:00

Closed #182 feat(massimport): support // as multi-person separator in PersonNameParser 2026-04-07 09:22:59 +02:00

Closed #179 ui: Korrespondenz view — unclear empty state, misplaced search header, focus misdirection, small text 2026-04-07 09:07:24 +02:00

Closed #180 feat: Document list — extended sort options, broader search scope, eager tag filter, search feedback 2026-04-06 19:18:12 +02:00

Closed #175 feat: Expandable metadata header with labeled "Details" toggle 2026-04-06 11:31:13 +02:00

Closed #176 feat: Annotation-backed collaborative transcription system 2026-04-06 11:31:13 +02:00

Closed #173 feat(ui): implement responsive DocumentTopBar — final spec 2026-04-02 16:13:51 +02:00

Closed #171 feat(dashboard): Classic Split — remove notification widget, restructure into 2-col layout 2026-03-31 20:56:53 +02:00

Closed #161 feat(ui): responsive DocumentTopBar — TopBar B1 spec implementation 2026-03-31 20:27:04 +02:00

Closed #167 feat(focus-rings): branded focus ring tokens for light and dark mode 2026-03-31 17:05:11 +02:00

Closed #166 feat(dark-mode): replace neutral-black tokens with navy-tinted palette + fix WCAG AA failure 2026-03-31 13:53:42 +02:00

Closed #163 feat(header): replace white header with brand-navy header per design spec 2026-03-31 10:41:42 +02:00

Closed #68 As a user I want the new document form to lead with file upload and treat all metadata fields as optional so I can save a document quickly without filling everything out upfront 2026-03-31 09:40:47 +02:00

Closed #162 feat(ui): Korrespondenz redesign — compact strip, log cards, single-person mode 2026-03-30 21:38:24 +02:00

Closed #156 feat: Admin section redesign — Concept C (Master-Detail Command Center) 2026-03-30 18:30:25 +02:00

Closed #148 test: improve backend branch coverage (currently 46%) 2026-03-29 21:36:53 +02:00

Closed #157 feat: Persons section redesign — Concept A (Enriched Directory) 2026-03-29 21:36:31 +02:00

Closed #153 feat: notification history page (/notifications) 2026-03-29 19:12:17 +02:00

Closed #118 devops(testing): add axe-core accessibility checks to Playwright E2E suite 2026-03-29 13:40:31 +02:00

Closed #119 Add Testcontainers + @DataJpaTest against real PostgreSQL 16 2026-03-29 13:40:29 +02:00

Closed #125 Remove demo.spec.ts scaffold leftover from frontend test suite 2026-03-29 13:40:28 +02:00

Closed #123 Add Vitest integration tests for SvelteKit load functions 2026-03-29 13:40:27 +02:00

Closed #121 Add @vitest/coverage-v8 with 80% branch coverage threshold to frontend build 2026-03-29 13:40:26 +02:00

Closed #120 Add JaCoCo branch coverage gate (80% minimum) to Maven build 2026-03-29 13:40:25 +02:00

Closed #145 feat: transform home page into user dashboard 2026-03-29 12:39:39 +02:00

Closed #147 fix(ui): WCAG AA color-contrast failures in brand palette 2026-03-28 19:57:48 +01:00

Closed #144 feat: dashboard home — "resume last viewed document" strip 2026-03-28 17:09:24 +01:00

Closed #72 As a user I want to @mention other users in comments so they are notified and linked to their profile 2026-03-28 16:08:39 +01:00

Closed #71 As a user I want to receive notifications for archive activity so I stay informed when family members annotate, comment, or start conversations 2026-03-28 16:08:38 +01:00

Closed #70 As a user I want a help page on the site so I can learn how to use the archive and share the guidance with family members before a scanning session 2026-03-28 16:08:37 +01:00

Closed #73 As a user I want to open a document directly at a specific comment so I can jump into a discussion from an email or notification 2026-03-28 16:08:36 +01:00

Closed #122 Add axe-playwright accessibility checks to E2E suite 2026-03-27 18:54:43 +01:00

Closed #103 improvement(mobile): move language switcher out of mobile header into navigation drawer 2026-03-27 16:44:13 +01:00

Closed #102 bug(ui): native "Choose File" input in edit form is inconsistent with design system 2026-03-27 16:44:08 +01:00

Closed #101 bug(mobile): document detail viewer takes full height — no space for document title on mobile 2026-03-27 16:44:01 +01:00

Closed #100 bug(mobile): document detail toolbar overflows at 320px — back button clipped 2026-03-27 16:43:56 +01:00

Closed #99 bug(mobile): document detail tab bar overflows at ≤375px — "History" tab hidden 2026-03-27 16:43:49 +01:00

Closed #98 bug(dark-mode): file upload drop zone border invisible in dark mode 2026-03-27 16:43:44 +01:00

Closed #97 bug(mobile): Person directory content has no horizontal padding at 320px 2026-03-27 16:43:38 +01:00

Closed #94 bug(dark-mode): primary save button blends into dark page background 2026-03-27 16:07:47 +01:00

Closed #93 bug(a11y): section labels and helper text ("optional", "FILE", "MORE DETAILS") fail contrast 2026-03-27 16:05:07 +01:00

Closed #92 bug(a11y): low-contrast secondary text fails WCAG AA across the app 2026-03-27 16:05:04 +01:00

Closed #91 bug(mobile): horizontal scroll overflow at 320px on Home and Admin 2026-03-27 15:50:20 +01:00

Closed #96 bug(ui): off-brand thin lavender bar appears at the top of every page 2026-03-27 15:49:28 +01:00

Closed #90 bug(mobile): no navigation below 768px — hamburger menu missing 2026-03-27 15:48:21 +01:00

Closed #81 feat: improve discussion discoverability with count badge and empty state hint 2026-03-26 21:15:31 +01:00

Closed #79 feat(dropzone): replace upload icon with multi-file icon and clearer hint text 2026-03-26 18:03:42 +01:00

Closed #69 As a user I want the system to suggest date and sender from the filename so I have less to type when uploading scanned documents 2026-03-26 16:48:46 +01:00

Closed #67 As a user I want to see a queue of documents that are missing metadata so I can enrich them efficiently after a scanning session 2026-03-26 14:50:37 +01:00

Closed #75 refactor(frontend): split large page components into focused sub-components 2026-03-26 12:59:05 +01:00

Closed #66 As a user I want to drop or select multiple files on the home page so I can digitize a stack of documents without navigating to a form for each one 2026-03-26 12:00:11 +01:00

Closed #61 As a user I want the annotation toggle in the document header so I can easily find and activate annotation mode 2026-03-25 14:14:19 +01:00

Closed #64 As a user I want a dark mode so I can use the archive comfortably in low-light environments 2026-03-25 13:50:18 +01:00

Closed #62 As a user I want a focused document view with a resizable bottom panel so I can read documents, transcriptions, and discussions without sidebar clutter 2026-03-25 12:38:47 +01:00

Closed #60 As a user I want a unified comment drawer on the document detail page so discussion and annotation comments are in one place and the PDF always stays fully visible 2026-03-25 12:38:47 +01:00

Closed #56 As an admin I want to backfill file hashes for already-uploaded documents so existing files are covered by the annotation versioning feature 2026-03-24 22:09:38 +01:00

Closed #55 As an admin I want annotations to stay linked to their file version so they disappear when a different file is uploaded but reappear if the original file is re-uploaded 2026-03-24 22:09:13 +01:00

Closed #50 As a user I want to comment on documents and reply to others so we can discuss and annotate our findings 2026-03-24 12:57:54 +01:00

Closed #40 As a user I want to highlight rectangular sections of a PDF so we can mark passages for discussion 2026-03-24 10:09:18 +01:00

Closed #39 As a user I want a proper PDF viewer so documents render reliably and annotations can be added in a later step 2026-03-24 10:09:16 +01:00

Closed #38 As a user I want to see the full edit history of a document so I can track what changed and who changed it 2026-03-23 17:27:57 +01:00

Closed #36 As a user I want to reset my forgotten password via email so I can regain access without contacting the admin 2026-03-23 10:14:08 +01:00

Closed #48 test(e2e): close coverage gaps — mutation flows, profile, admin 2026-03-23 07:55:19 +01:00

Closed #37 As an admin I want to create and edit full user profiles so that users start with their information pre-filled 2026-03-22 19:36:40 +01:00

Closed #35 As a user I want a profile page so I can change my password and keep my personal information up to date 2026-03-22 14:56:33 +01:00

Closed #29 As a user I want the second person field to only show correspondents of the first person so I never see an empty conversation 2026-03-20 21:26:36 +01:00

Closed #34 bug: URL-synced inputs drop keystrokes and flicker during fast typing 2026-03-20 21:06:30 +01:00

Closed #33 As a user I want a "New document in this correspondence" link in the conversation view so I can add a document without losing my filter context 2026-03-20 18:33:35 +01:00

Closed #31 As a user I want to see a summary header above the conversation so I know the scope before reading 2026-03-20 18:33:34 +01:00

Closed #32 As a user I want a swap button between the two person fields so I can flip the conversation perspective without retyping 2026-03-20 18:33:34 +01:00

Closed #30 As a user I want to see year dividers in the conversation timeline so I can orient myself in long correspondences 2026-03-20 18:33:33 +01:00

Closed #17 feat: hide write UI from read-only users (no WRITE_ALL permission) 2026-03-20 10:06:14 +01:00

Closed #22 feat(person): show notable co-correspondents 2026-03-20 10:06:11 +01:00

Closed #21 feat(person): show sender/receiver badge on each document 2026-03-20 10:06:08 +01:00

Closed #19 feat(person): show document statistics bar 2026-03-20 10:06:07 +01:00

Closed #1 feat: show received documents on person detail page 2026-03-20 10:05:58 +01:00

Closed #24 feat(person): sort control on document list 2026-03-20 09:55:29 +01:00

Closed #23 feat(person): add notes / biography field 2026-03-19 22:28:06 +01:00

Closed #18 feat(person): add birth year and death year fields 2026-03-19 22:27:34 +01:00

Closed #20 feat(person): add quick link to conversations page 2026-03-19 22:27:15 +01:00

Closed #12 feat: i18n – extract all strings and add login page language switcher 2026-03-19 21:04:07 +01:00

Closed #14 devops: fix upload-artifact@v4 incompatibility and stabilise E2E CI 2026-03-19 20:34:15 +01:00

Closed #13 devops: use Playwright Docker image for unit test job 2026-03-19 20:34:12 +01:00

Closed #2 feat: implement i18n — extract static texts, add EN + ES-MX translations, add language selector 2026-03-19 15:13:59 +01:00

Closed #4 Add backend test suite: service unit tests, repository tests, controller slice tests 2026-03-17 21:39:08 +01:00

Closed #3 fix: replace docker-compose v1 with docker compose v2 in e2e workflow 2026-03-17 20:39:12 +01:00

370 Issues created by 1 user

Opened #1 feat: show received documents on person detail page 2026-03-17 19:37:45 +01:00

Opened #2 feat: implement i18n — extract static texts, add EN + ES-MX translations, add language selector 2026-03-17 19:39:54 +01:00

Opened #3 fix: replace docker-compose v1 with docker compose v2 in e2e workflow 2026-03-17 19:54:47 +01:00

Opened #4 Add backend test suite: service unit tests, repository tests, controller slice tests 2026-03-17 21:03:28 +01:00

Opened #12 feat: i18n – extract all strings and add login page language switcher 2026-03-19 16:34:56 +01:00

Opened #13 devops: use Playwright Docker image for unit test job 2026-03-19 17:10:32 +01:00

Opened #14 devops: fix upload-artifact@v4 incompatibility and stabilise E2E CI 2026-03-19 17:11:29 +01:00

Opened #17 feat: hide write UI from read-only users (no WRITE_ALL permission) 2026-03-19 20:32:04 +01:00

Opened #18 feat(person): add birth year and death year fields 2026-03-19 21:13:15 +01:00

Opened #19 feat(person): show document statistics bar 2026-03-19 21:13:29 +01:00

Opened #20 feat(person): add quick link to conversations page 2026-03-19 21:13:38 +01:00

Opened #21 feat(person): show sender/receiver badge on each document 2026-03-19 21:13:49 +01:00

Opened #22 feat(person): show notable co-correspondents 2026-03-19 21:14:05 +01:00

Opened #23 feat(person): add notes / biography field 2026-03-19 21:14:20 +01:00

Opened #24 feat(person): sort control on document list 2026-03-19 21:14:36 +01:00

Opened #29 As a user I want the second person field to only show correspondents of the first person so I never see an empty conversation 2026-03-20 12:30:02 +01:00

Opened #30 As a user I want to see year dividers in the conversation timeline so I can orient myself in long correspondences 2026-03-20 12:30:10 +01:00

Opened #31 As a user I want to see a summary header above the conversation so I know the scope before reading 2026-03-20 12:30:16 +01:00

Opened #32 As a user I want a swap button between the two person fields so I can flip the conversation perspective without retyping 2026-03-20 12:30:23 +01:00

Opened #33 As a user I want a "New document in this correspondence" link in the conversation view so I can add a document without losing my filter context 2026-03-20 12:30:30 +01:00

Opened #34 bug: URL-synced inputs drop keystrokes and flicker during fast typing 2026-03-20 16:54:01 +01:00

Opened #35 As a user I want a profile page so I can change my password and keep my personal information up to date 2026-03-20 19:01:18 +01:00

Opened #36 As a user I want to reset my forgotten password via email so I can regain access without contacting the admin 2026-03-20 19:01:47 +01:00

Opened #37 As an admin I want to create and edit full user profiles so that users start with their information pre-filled 2026-03-20 19:07:54 +01:00

Opened #38 As a user I want to see the full edit history of a document so I can track what changed and who changed it 2026-03-20 19:25:35 +01:00

Opened #39 As a user I want a proper PDF viewer so documents render reliably and annotations can be added in a later step 2026-03-20 19:25:59 +01:00

Opened #40 As a user I want to highlight rectangular sections of a PDF so we can mark passages for discussion 2026-03-20 19:26:30 +01:00

Opened #48 test(e2e): close coverage gaps — mutation flows, profile, admin 2026-03-22 19:34:31 +01:00

Opened #50 As a user I want to comment on documents and reply to others so we can discuss and annotate our findings 2026-03-23 08:52:03 +01:00

Opened #51 As a user I want to split a combined person entry into separate persons so I can clean up incorrectly merged import data 2026-03-23 10:58:55 +01:00

Opened #55 As an admin I want annotations to stay linked to their file version so they disappear when a different file is uploaded but reappear if the original file is re-uploaded 2026-03-24 08:47:02 +01:00

Opened #56 As an admin I want to backfill file hashes for already-uploaded documents so existing files are covered by the annotation versioning feature 2026-03-24 08:47:19 +01:00

Opened #60 As a user I want a unified comment drawer on the document detail page so discussion and annotation comments are in one place and the PDF always stays fully visible 2026-03-24 17:54:22 +01:00

Opened #61 As a user I want the annotation toggle in the document header so I can easily find and activate annotation mode 2026-03-24 18:01:56 +01:00

Opened #62 As a user I want a focused document view with a resizable bottom panel so I can read documents, transcriptions, and discussions without sidebar clutter 2026-03-24 22:04:07 +01:00

Opened #64 As a user I want a dark mode so I can use the archive comfortably in low-light environments 2026-03-25 11:34:06 +01:00

Opened #66 As a user I want to drop or select multiple files on the home page so I can digitize a stack of documents without navigating to a form for each one 2026-03-25 14:11:32 +01:00

Opened #67 As a user I want to see a queue of documents that are missing metadata so I can enrich them efficiently after a scanning session 2026-03-25 14:11:46 +01:00

Opened #68 As a user I want the new document form to lead with file upload and treat all metadata fields as optional so I can save a document quickly without filling everything out upfront 2026-03-25 14:11:58 +01:00

Opened #69 As a user I want the system to suggest date and sender from the filename so I have less to type when uploading scanned documents 2026-03-25 14:12:14 +01:00

Opened #70 As a user I want a help page on the site so I can learn how to use the archive and share the guidance with family members before a scanning session 2026-03-25 18:58:47 +01:00

Opened #71 As a user I want to receive notifications for archive activity so I stay informed when family members annotate, comment, or start conversations 2026-03-25 19:27:06 +01:00

Opened #72 As a user I want to @mention other users in comments so they are notified and linked to their profile 2026-03-25 19:27:36 +01:00

Opened #73 As a user I want to open a document directly at a specific comment so I can jump into a discussion from an email or notification 2026-03-25 20:23:57 +01:00

Opened #75 refactor(frontend): split large page components into focused sub-components 2026-03-26 11:53:42 +01:00

Opened #79 feat(dropzone): replace upload icon with multi-file icon and clearer hint text 2026-03-26 17:25:03 +01:00

Opened #81 feat: improve discussion discoverability with count badge and empty state hint 2026-03-26 17:56:24 +01:00

Opened #83 fix(security): remove hardcoded fallback admin credentials in application.yaml 2026-03-27 09:23:43 +01:00

Opened #84 fix(security): validate file upload MIME type from magic bytes, not client header 2026-03-27 09:24:00 +01:00

Opened #85 fix(security): sanitize filename in Content-Disposition response header 2026-03-27 09:24:19 +01:00

Opened #86 fix(security): set secure: true on auth cookie for production (HTTPS) 2026-03-27 09:24:33 +01:00

Opened #87 fix(security): explicitly restrict Spring Boot Actuator endpoints in production config 2026-03-27 09:24:54 +01:00

Opened #90 bug(mobile): no navigation below 768px — hamburger menu missing 2026-03-27 12:19:10 +01:00

Opened #91 bug(mobile): horizontal scroll overflow at 320px on Home and Admin 2026-03-27 12:19:21 +01:00

Opened #92 bug(a11y): low-contrast secondary text fails WCAG AA across the app 2026-03-27 12:19:35 +01:00

Opened #93 bug(a11y): section labels and helper text ("optional", "FILE", "MORE DETAILS") fail contrast 2026-03-27 12:19:52 +01:00

Opened #94 bug(dark-mode): primary save button blends into dark page background 2026-03-27 12:20:07 +01:00

Opened #95 bug(mobile): "SAVE & MARK AS REVIEWED" and "MARK FOR REVIEW" buttons wrap to 3 lines at narrow widths 2026-03-27 12:20:18 +01:00

Opened #96 bug(ui): off-brand thin lavender bar appears at the top of every page 2026-03-27 12:20:40 +01:00

Opened #97 bug(mobile): Person directory content has no horizontal padding at 320px 2026-03-27 12:20:45 +01:00

Opened #98 bug(dark-mode): file upload drop zone border invisible in dark mode 2026-03-27 12:20:52 +01:00

Opened #99 bug(mobile): document detail tab bar overflows at ≤375px — "History" tab hidden 2026-03-27 12:21:09 +01:00

Opened #100 bug(mobile): document detail toolbar overflows at 320px — back button clipped 2026-03-27 12:21:19 +01:00

Opened #101 bug(mobile): document detail viewer takes full height — no space for document title on mobile 2026-03-27 12:21:46 +01:00

Opened #102 bug(ui): native "Choose File" input in edit form is inconsistent with design system 2026-03-27 12:21:54 +01:00

Opened #103 improvement(mobile): move language switcher out of mobile header into navigation drawer 2026-03-27 12:22:01 +01:00

Opened #110 fix(security): annotate AppUser.password with @JsonIgnore to prevent accidental hash leakage 2026-03-27 17:32:47 +01:00

Opened #111 fix(security): add rate limiting to login and password-reset endpoints 2026-03-27 17:32:59 +01:00

Opened #112 fix(security): enforce maximum file upload size limit 2026-03-27 17:33:13 +01:00

Opened #113 refactor(frontend): extract extractErrorCode() helper to eliminate repeated as-unknown-as type assertions 2026-03-27 17:53:17 +01:00

Opened #114 fix(a11y): replace clickable divs with button elements in PdfViewer and AnnotationLayer 2026-03-27 17:53:23 +01:00

Opened #115 fix(ui): replace localStorage panel state restore with SvelteKit snapshot API to eliminate flash on load 2026-03-27 17:53:32 +01:00

Opened #116 fix(security): add Content-Security-Policy headers to SvelteKit responses 2026-03-27 17:53:44 +01:00

Opened #117 fix(a11y): add skip-to-main-content link in layout for keyboard navigation 2026-03-27 17:53:51 +01:00

Opened #118 devops(testing): add axe-core accessibility checks to Playwright E2E suite 2026-03-27 17:54:01 +01:00

Opened #119 Add Testcontainers + @DataJpaTest against real PostgreSQL 16 2026-03-27 18:35:35 +01:00

Opened #120 Add JaCoCo branch coverage gate (80% minimum) to Maven build 2026-03-27 18:35:46 +01:00

Opened #121 Add @vitest/coverage-v8 with 80% branch coverage threshold to frontend build 2026-03-27 18:35:53 +01:00

Opened #122 Add axe-playwright accessibility checks to E2E suite 2026-03-27 18:36:06 +01:00

Opened #123 Add Vitest integration tests for SvelteKit load functions 2026-03-27 18:36:19 +01:00

Opened #124 Add Playwright visual regression tests at 320px, 768px, and 1440px breakpoints 2026-03-27 18:36:30 +01:00

Opened #125 Remove demo.spec.ts scaffold leftover from frontend test suite 2026-03-27 18:36:35 +01:00

Opened #126 Add k6 smoke test triggered on every deployment 2026-03-27 18:36:47 +01:00

Opened #128 Move hardcoded E2E admin password to Gitea secret 2026-03-28 08:40:09 +01:00

Opened #129 Upgrade actions/upload-artifact from v3 to v4 in CI workflow 2026-03-28 08:40:12 +01:00

Opened #130 Pin minio/minio image to a specific release tag 2026-03-28 08:40:16 +01:00

Opened #131 Switch PostgreSQL and MinIO from bind mounts to named volumes for production 2026-03-28 08:40:20 +01:00

Opened #132 Remove PostgreSQL host port exposure for production 2026-03-28 08:40:25 +01:00

Opened #133 Replace MinIO root credentials with scoped service account for production S3 access 2026-03-28 08:40:30 +01:00

Opened #134 Build production-ready multi-stage Dockerfile for the backend 2026-03-28 08:51:38 +01:00

Opened #135 Build production-ready multi-stage Dockerfile for the frontend 2026-03-28 08:51:51 +01:00

Opened #136 Create docker-compose.prod.yml with Caddy reverse proxy and TLS 2026-03-28 08:52:14 +01:00

Opened #137 Add application-prod.yaml with secure Spring Boot production defaults 2026-03-28 08:52:29 +01:00

Opened #138 Add automated PostgreSQL backup script with offsite upload 2026-03-28 08:52:49 +01:00

Opened #139 Create .env.example and DEPLOYMENT.md for production onboarding 2026-03-28 08:53:06 +01:00

Opened #140 Add Prometheus + Loki + Grafana monitoring stack 2026-03-28 08:53:23 +01:00

Opened #141 Add Hetzner VPS to Tailscale tailnet for private deployment access 2026-03-28 10:31:17 +01:00

Opened #142 Add build-and-push and deploy jobs to CI workflow 2026-03-28 10:31:43 +01:00

Opened #143 Switch CI deploy trigger to semver tags and document the release workflow 2026-03-28 10:32:06 +01:00

Opened #144 feat: dashboard home — "resume last viewed document" strip 2026-03-28 11:39:52 +01:00

Opened #145 feat: transform home page into user dashboard 2026-03-28 11:44:28 +01:00

Opened #147 fix(ui): WCAG AA color-contrast failures in brand palette 2026-03-28 18:04:58 +01:00

Opened #148 test: improve backend branch coverage (currently 46%) 2026-03-28 18:05:08 +01:00

Opened #152 bug: HikariCP connection pool exhaustion causes backend outages 2026-03-29 10:34:43 +02:00

Opened #153 feat: notification history page (/notifications) 2026-03-29 12:44:52 +02:00

Opened #156 feat: Admin section redesign — Concept C (Master-Detail Command Center) 2026-03-29 15:06:55 +02:00

Opened #157 feat: Persons section redesign — Concept A (Enriched Directory) 2026-03-29 16:48:58 +02:00

Opened #161 feat(ui): responsive DocumentTopBar — TopBar B1 spec implementation 2026-03-30 10:37:49 +02:00

Opened #162 feat(ui): Korrespondenz redesign — compact strip, log cards, single-person mode 2026-03-30 10:54:57 +02:00

Opened #163 feat(header): replace white header with brand-navy header per design spec 2026-03-30 17:34:38 +02:00

Opened #166 feat(dark-mode): replace neutral-black tokens with navy-tinted palette + fix WCAG AA failure 2026-03-31 09:47:34 +02:00

Opened #167 feat(focus-rings): branded focus ring tokens for light and dark mode 2026-03-31 10:19:57 +02:00

Opened #171 feat(dashboard): Classic Split — remove notification widget, restructure into 2-col layout 2026-03-31 16:34:18 +02:00

Opened #173 feat(ui): implement responsive DocumentTopBar — final spec 2026-03-31 20:23:05 +02:00

Opened #175 feat: Expandable metadata header with labeled "Details" toggle 2026-04-05 09:28:59 +02:00

Opened #176 feat: Annotation-backed collaborative transcription system 2026-04-05 09:29:30 +02:00

Opened #177 feat: Transcription read mode (clean split) 2026-04-05 09:30:00 +02:00

Opened #179 ui: Korrespondenz view — unclear empty state, misplaced search header, focus misdirection, small text 2026-04-06 00:22:41 +02:00

Opened #180 feat: Document list — extended sort options, broader search scope, eager tag filter, search feedback 2026-04-06 00:23:00 +02:00

Opened #181 feat: Person name aliases — support name changes over time (marriage, widowhood) 2026-04-06 00:25:22 +02:00

Opened #182 feat(massimport): support // as multi-person separator in PersonNameParser 2026-04-06 13:52:40 +02:00

Opened #184 feat(massimport): handle dot-compressed names and titles in PersonNameParser.split() 2026-04-06 14:22:45 +02:00

Opened #185 fix(nav): replace static back-link hrefs with history.back() + fallback 2026-04-06 19:41:58 +02:00

Opened #187 refactor: PersonTypeahead — replace compact/large boolean props with size enum 2026-04-07 09:06:46 +02:00

Opened #188 refactor: extract sort/filter/count row from CorrespondenzPersonBar 2026-04-07 09:06:52 +02:00

Opened #189 test: add auto-focus test for Briefwechsel hero typeahead 2026-04-07 09:06:58 +02:00

Opened #190 feat(massimport): support // separator and dot-compressed names in PersonNameParser 2026-04-07 09:22:53 +02:00

Opened #191 Refactor: Replace img-based De Gruyter icons with Svelte icon components 2026-04-07 09:27:23 +02:00

Opened #192 feat: Show editor name in transcription read mode status bar 2026-04-07 10:32:46 +02:00

Opened #193 Delete dead conversations/ route (old Korrespondenz page) 2026-04-07 10:47:31 +02:00

Opened #194 Extract shared utility functions to eliminate duplication 2026-04-07 10:47:45 +02:00

Opened #195 Unify click-outside handling to use existing clickOutside action 2026-04-07 10:47:53 +02:00

Opened #196 Split PdfViewer.svelte (469 lines) into renderer module + controls component 2026-04-07 10:48:04 +02:00

Opened #197 Split EntityNav.svelte (516 lines) into section + item subcomponents 2026-04-07 10:48:09 +02:00

Opened #198 Split CommentThread.svelte (310 lines) — extract CommentMessage component 2026-04-07 10:48:17 +02:00

Opened #199 Split TranscriptionEditView.svelte (332 lines) — extract auto-save + drag-drop modules 2026-04-07 10:48:26 +02:00

Opened #200 Split NotificationBell.svelte (316 lines) — extract dropdown + SSE stream module 2026-04-07 10:48:36 +02:00

Opened #201 Minor structural improvements — notification rows, admin list panels, search filters, icons 2026-04-07 10:48:45 +02:00

Opened #202 Memory leaks when navigating between documents -- blob URLs never revoked 2026-04-07 11:08:35 +02:00

Opened #203 Notification SSE stream retries infinitely when session expires 2026-04-07 11:08:56 +02:00

Opened #204 Transcription block saves silently lost when navigating away in production 2026-04-07 11:09:01 +02:00

Opened #207 refactor: Replace native confirm() dialogs with a shared confirmation modal service 2026-04-07 16:34:47 +02:00

Opened #209 feat(parser): improve GEB_PATTERN and store maiden name as alias 2026-04-07 18:27:47 +02:00

Opened #210 feat(parser): strip parenthesized annotations in split() and preserve content 2026-04-07 18:27:57 +02:00

Opened #211 feat(model): add PersonType enum to distinguish persons from institutions/groups 2026-04-07 18:28:12 +02:00

Opened #212 feat(model): add title/salutation field to Person and make firstName optional 2026-04-07 18:28:32 +02:00

Opened #213 refactor: preparatory infrastructure for PersonNameParser enhancements (#209-#212) 2026-04-07 18:50:13 +02:00

Opened #214 feat(parser): support multi-person splitting for Von-column entries 2026-04-07 19:13:13 +02:00

Opened #216 feat: support multiple senders per document 2026-04-08 21:14:42 +02:00

Opened #217 feat(import): store SKIP entries in document notes 2026-04-08 21:14:52 +02:00

Opened #218 feat(ui): surface title & personType fields in person forms and detail card 2026-04-08 22:25:01 +02:00

Opened #219 feat: show search result snippets with match highlighting 2026-04-12 08:26:09 +02:00

Opened #220 feat: add year/group headers in search results when sorted by date 2026-04-12 08:28:55 +02:00

Opened #221 feat: improved tag system — AND/OR filtering and tag hierarchy 2026-04-12 08:31:02 +02:00

Opened #222 feat: upgrade search from ILIKE to PostgreSQL full-text search 2026-04-12 08:36:18 +02:00

Opened #223 feat: add sorting options to person list page 2026-04-12 08:38:20 +02:00

Opened #224 feat: show top conversation pairs on briefwechsel entry state 2026-04-12 08:43:48 +02:00

Opened #225 feat: bulk metadata edit for existing documents (select → panel → PATCH) 2026-04-12 08:49:35 +02:00

Opened #226 feat: local OCR pipeline (batch + per-document) with Surya and Kraken 2026-04-12 10:43:16 +02:00

Opened #227 feat: extend annotations to support polygon shapes (4-point quadrilateral) 2026-04-12 11:43:44 +02:00

Opened #230 feat: Kraken fine-tuning pipeline (block origin tracking + training export + admin UI) 2026-04-12 21:51:54 +02:00

Opened #231 perf: page-by-page streaming OCR with real-time progress 2026-04-12 23:57:51 +02:00

Opened #233 feat(annotations): allow user to resize and move annotation boxes after drawing 2026-04-13 22:42:58 +02:00

Opened #239 devops: add docker-compose.prod.yml overlay for production deployment 2026-04-15 11:26:34 +02:00

Opened #240 As a family member I want to see which documents need transcription and which are ready to read so I know where to contribute 2026-04-15 14:20:02 +02:00

Opened #246 feat: Mission Control Strip — contributor avatars per queue item 2026-04-16 10:04:37 +02:00

Opened #247 feat: Mission Control Strip — "offen" total count per column 2026-04-16 10:04:51 +02:00

Opened #248 feat: Admin tag page complete overhaul — hierarchy tree, parent picker, merge, delete guard 2026-04-16 21:23:38 +02:00

Opened #250 feat(tag-typeahead): tree-aware results — expand children & surface ancestor path 2026-04-17 11:10:49 +02:00

Opened #252 feat(ocr): add image preprocessing pipeline to improve transcription quality on aged documents 2026-04-17 12:04:01 +02:00

Opened #253 feat(ocr): per-sender specialized Kurrent models with automatic active-learning retraining 2026-04-17 12:29:00 +02:00

Opened #254 feat(ocr): German spell-check post-processing to reduce handwriting gibberish 2026-04-17 12:44:53 +02:00

Opened #256 feat(ocr): two-phase progress indicator distinguishing preprocessing from OCR analysis 2026-04-17 15:20:02 +02:00

Opened #257 devops(ocr): improve startup error clarity for invalid CLAHE env vars 2026-04-17 15:20:10 +02:00

Opened #258 test(ocr): add integration test for full streaming pipeline with a real image 2026-04-17 15:20:18 +02:00

Opened #259 feat(ocr): feedback loop to improve spell-check dictionary from user corrections 2026-04-17 16:28:04 +02:00

Opened #261 feat(enrich): field reordering, required-fields progress bar, and no-PDF upload state 2026-04-17 17:19:17 +02:00

Opened #262 test(ocr): add integration tests for spell-check routing in main.py 2026-04-17 17:24:01 +02:00

Opened #264 feat(admin): OCR admin pages — overview & model detail 2026-04-17 19:12:22 +02:00

Opened #266 fix(ocr): regenerate TypeScript types so TriggerSenderTrainingDTO.personId is non-optional 2026-04-18 09:26:11 +02:00

Opened #268 test(enrich): E2E coverage for WhoWhenSection autofocus and upload cancel flow 2026-04-18 14:53:41 +02:00

Opened #269 feat: invite-based self-service registration 2026-04-18 15:22:35 +02:00

Opened #270 feat: migrate from username to email-only authentication 2026-04-18 15:29:36 +02:00

Opened #271 feat(dashboard): redesign Dokumente dashboard as a document hub (Variant A) 2026-04-18 19:26:50 +02:00

Opened #274 feat(audit): domain-level audit log for archive activity 2026-04-19 11:44:00 +02:00

Opened #276 bug: notification deep-link does not scroll to comment on document detail page 2026-04-19 15:59:19 +02:00

Opened #277 bug: deleting a user in the admin panel does nothing 2026-04-19 16:34:22 +02:00

Opened #280 fix(dashboard): audit_log never written + hero blind to annotation-only work 2026-04-19 19:10:47 +02:00

Opened #281 feat: dedicated /documents search & browse page 2026-04-19 21:43:15 +02:00

Opened #283 feat: restore sender/receiver grouping on /documents when sorting by SENDER or RECEIVER 2026-04-20 09:26:11 +02:00

Opened #285 feat: unify /notifications and dashboard activity feed into a /chronik page 2026-04-20 11:02:12 +02:00

Opened #286 refactor(notification-bell): use SvelteKit form actions instead of raw fetch 2026-04-20 12:28:53 +02:00

Opened #287 As a user I want count-based messages to be grammatically correct so the UI reads naturally in every supported language 2026-04-20 12:42:32 +02:00

Opened #289 As a user I want a navigation progress bar so I can see that the app is loading after I click a link 2026-04-20 18:13:22 +02:00

Opened #290 feat(chronik): add cursor/offset pagination to /api/dashboard/activity + wire "Mehr laden" 2026-04-20 18:13:26 +02:00

Opened #291 observability: add /api/dashboard/activity p95 latency panel to Grafana 2026-04-20 18:13:33 +02:00

Opened #292 As a user I want route-specific skeleton loaders so I see the page layout while data is still being fetched 2026-04-20 18:13:41 +02:00

Opened #293 feat(dashboard): add kinds CSV query param to /api/dashboard/activity 2026-04-20 18:13:43 +02:00

Opened #294 As a user creating a new document I want the same split-panel edit view as on existing documents, so I can enter metadata next to the file preview 2026-04-20 19:08:54 +02:00

Opened #295 bug: REPLY notifications not surfaced in Chronik "Für dich" feed 2026-04-20 19:45:37 +02:00

Opened #296 As a user I want to see uploaded documents needing metadata on the dashboard so I can continue enriching after a batch upload 2026-04-20 20:02:27 +02:00

Opened #300 feat: chronik mentions should deep-link to the comment, matching the bell dropdown 2026-04-21 15:49:36 +02:00

Opened #305 feature(briefwechsel): thumbnail rows with summary quote and bilateral distribution bar 2026-04-22 20:18:51 +02:00

Opened #306 feature(persons): Korrespondenz-Überblick dashboard on /persons/[id] 2026-04-22 20:19:27 +02:00

Opened #307 feature: PDF-Thumbnails für Dokumente (Upload + Admin-Backfill) 2026-04-22 20:40:40 +02:00

Opened #309 As a user I want the dashboard resume strip to show the actual document thumbnail so I recognize what I was working on at a glance 2026-04-23 07:50:10 +02:00

Opened #310 As a user I want to generate a summary and suggest tags from the transcription so I don't have to do both by hand 2026-04-23 11:11:05 +02:00

Opened #312 refactor(ui): use bg-surface token instead of bg-white on thumbnail tiles 2026-04-23 20:31:36 +02:00

Opened #313 test(briefwechsel): capture visual-regression baselines for the row layout 2026-04-23 21:10:02 +02:00

Opened #315 feat(documents): paginate /documents search so first paint isn't 1500 rows 2026-04-23 22:40:42 +02:00

Opened #317 feat(documents): bulk upload — split-panel with file switcher 2026-04-24 10:33:29 +02:00

Opened #318 feat(mobile): reader surfaces (Home · /documents · /briefwechsel · /persons) pass mobile-first bar at 375 px 2026-04-24 13:22:03 +02:00

Opened #319 fix(i18n): translate viewer + Transcribe panel controls so EN/ES locales do not show German labels 2026-04-24 13:22:31 +02:00

Opened #320 feat(transcribe): guided empty state + Kurrent primer for first-time transcribers 2026-04-24 13:23:11 +02:00

Opened #321 feat(transcribe): show visible per-document transcription progress in the panel header 2026-04-24 13:23:47 +02:00

Opened #322 fix(document-viewer): surface error + retry when file load stalls instead of spinning forever 2026-04-24 13:24:20 +02:00

Opened #323 feat(persons): visually distinguish incomplete placeholder persons + filter by completeness on /persons 2026-04-24 13:24:54 +02:00

Opened #324 feat(admin): /admin lands on a real dashboard instead of redirecting to /admin/users 2026-04-24 13:25:25 +02:00

Opened #325 feat(tags): split flat tag taxonomy into documentType + event + freeform dimensions 2026-04-24 13:26:09 +02:00

Opened #326 feat(admin): informative empty states on master-detail pages (Users · Groups · Tags · Invites) 2026-04-24 13:26:41 +02:00

Opened #327 feat(transcribe): keyboard shortcuts for the transcribe power path + cheatsheet overlay 2026-04-24 13:27:13 +02:00

Opened #328 feat(login): add show/hide password toggle on the sign-in form 2026-04-24 13:27:27 +02:00

Opened #332 refactor: bulk-edit follow-ups deferred from PR #331 2026-04-25 17:00:44 +02:00

Opened #334 feat(admin): Storage panel on admin dashboard — MinIO admin API integration 2026-04-26 13:03:54 +02:00

Opened #335 feat(admin): activity panel on admin dashboard — system-wide weekly contribution counts 2026-04-26 14:14:50 +02:00

Opened #336 feat(audit): track user management events in audit log (USER_CREATED, USER_DELETED, GROUP_MEMBERSHIP_CHANGED) 2026-04-26 14:17:33 +02:00

Opened #338 feat(briefwechsel): discovery landing grid + gap markers 2026-04-26 18:39:29 +02:00

Opened #339 feat(viewer): show delete icon directly on transcription annotation 2026-04-26 19:56:16 +02:00

Opened #340 feat(search): add direct page-jump control to document search pagination 2026-04-26 19:56:24 +02:00

Opened #341 bug(viewer): "Annotieren anzeigen" text has insufficient contrast in light mode 2026-04-26 19:56:30 +02:00

Opened #342 feat(persons): show merge action inline with danger hint, remove Gefahrenzone collapsible 2026-04-26 19:56:35 +02:00

Opened #343 bug(persons): person selection dropdown is visually clipped / cut off 2026-04-26 19:56:36 +02:00

Opened #344 feat(nav): add tooltip and cursor:pointer to notification bell icon 2026-04-26 19:56:39 +02:00

Opened #345 feat(transcription): add "Alle als fertig markieren" bulk action to transcription panel 2026-04-26 19:56:41 +02:00

Opened #353 test(a11y): add axe-playwright E2E gate for PDF viewer WCAG 2.1 AA compliance 2026-04-26 21:26:43 +02:00

Opened #354 fix(a11y): increase annotation toggle touch target to 44×44px minimum 2026-04-26 21:26:51 +02:00

Opened #355 feat(transcription): E2E test for bulk "Alle als fertig markieren" action 2026-04-27 08:12:37 +02:00

Opened #356 ux(transcription): show error toast when bulk "Alle als fertig markieren" fails 2026-04-27 08:12:43 +02:00

Opened #357 chore(transcription): track handleAnnotationDeleteRequest wiring from PR #352 2026-04-27 08:12:52 +02:00

Opened #358 feat: Stammbaum — family relationship graph replaces Briefwechsel in nav 2026-04-27 10:01:07 +02:00

Opened #359 feat: Stammbaum — Mode B social network view (D3-Force, all persons) 2026-04-27 10:16:57 +02:00

Opened #361 tech-debt: replace Stammbaum DIY layout with a graph-layout dep (dagre) when it stops scaling 2026-04-27 22:45:26 +02:00

Opened #362 feat: Person @mentions in transcription blocks with hover card 2026-04-28 12:16:14 +02:00

Opened #363 devops: add Playwright E2E job to CI for stammbaum spec 2026-04-28 12:57:45 +02:00

Opened #364 feat(stammbaum): show maiden name (geb. Schmidt) below person name in tree and side panel 2026-04-28 18:34:39 +02:00

Opened #367 security(transcription): CWE-79 — escapeHtml required for @mention rendering in PR-B 2026-04-28 23:46:21 +02:00

Opened #368 feat(persons): audit + complete person-merge flow for all data domains 2026-04-28 23:50:33 +02:00

Opened #370 feat(person-mention): discoverability hint for the @ trigger in the editor 2026-04-29 01:26:59 +02:00

Opened #372 Person mention: decouple display text from person name to preserve original wording 2026-04-29 08:59:33 +02:00

Opened #374 GET /api/persons leaks PersonSummaryDTO.notes to typeahead clients (CWE-200) 2026-04-29 16:22:31 +02:00

Opened #376 feat: auto-open transcription panel when navigating from mission-control cards 2026-04-29 21:12:27 +02:00

Opened #380 feat(transcription): decouple @mention display text from person search 2026-04-30 10:54:43 +02:00

Opened #381 feat: Geschichten — blog-like family memory stories linked to persons and documents 2026-05-02 09:33:24 +02:00

Opened #383 refactor(geschichte): switch entity to LAZY fetch and add GeschichteSummary projection DTO 2026-05-02 18:54:13 +02:00

Opened #384 test(e2e): expand Geschichten Playwright suite with full a11y + visual regression coverage 2026-05-02 18:54:22 +02:00

Opened #385 feat(documents): timeline date-range filter with density bars 2026-05-03 09:02:40 +02:00

Opened #386 feat(documents): calendar view with appointment-style document rows 2026-05-03 09:02:53 +02:00

Opened #387 epic(legibility): audit — assess current state of every subsystem 2026-05-04 16:01:17 +02:00

Opened #388 audit(frontend): score frontend/ against legibility rubric C1–C10 2026-05-04 16:03:30 +02:00

Opened #389 audit(backend): score backend/ against legibility rubric C1–C10 2026-05-04 16:03:53 +02:00

Opened #390 audit(ocr-service): score ocr-service/ against legibility rubric C1–C10 2026-05-04 16:04:10 +02:00

Opened #391 audit(db): score Flyway migrations + DB schema against legibility rubric 2026-05-04 16:04:29 +02:00

Opened #392 audit(rest): score infra/, scripts/, root, docs/ against legibility rubric 2026-05-04 16:04:53 +02:00

Opened #393 audit(rollup): produce global readiness scorecard from subsystem audits 2026-05-04 16:05:09 +02:00

Opened #394 epic(legibility): documentation — make the codebase self-explaining 2026-05-04 16:06:37 +02:00

Opened #395 docs(legibility): write human-targeted README.md at repo root 2026-05-04 16:07:22 +02:00

Opened #396 docs(legibility): write docs/ARCHITECTURE.md with diagram and domain list 2026-05-04 16:07:41 +02:00

Opened #397 docs(legibility): write docs/GLOSSARY.md disambiguating overloaded terms 2026-05-04 16:08:08 +02:00

Opened #398 docs(legibility): write CONTRIBUTING.md with three concrete walkthroughs 2026-05-04 16:08:41 +02:00

Opened #399 docs(legibility): write docs/DEPLOYMENT.md (production runtime + env vars) 2026-05-04 16:08:47 +02:00

Opened #400 docs(legibility): add per-domain README.md inside every domain package 2026-05-04 16:09:08 +02:00

Opened #401 docs(legibility): migrate CLAUDE.md rules into human docs; mark migrated content 2026-05-04 16:09:28 +02:00

Opened #402 epic(legibility): pre-flight — make tests trustworthy before big-bang refactor 2026-05-04 16:10:25 +02:00

Opened #403 test(legibility): mutation-test critical backend service tests; flag tautologies 2026-05-04 16:10:55 +02:00

Opened #404 test(legibility): rewrite tautological tests revealed by TEST-1 2026-05-04 16:11:09 +02:00

Opened #405 test(legibility): verify e2e suite covers every critical user journey 2026-05-04 16:11:26 +02:00

Opened #406 epic(legibility): big-bang restructure — backend layer→domain, frontend lib→domain 2026-05-04 16:12:31 +02:00

Opened #407 refactor(backend): restructure from layer-based to domain-based packaging 2026-05-04 16:13:40 +02:00

Opened #408 refactor(frontend): restructure lib/ from flat-by-type to domain-based 2026-05-04 16:14:35 +02:00

Opened #409 refactor(backend): add ArchUnit test enforcing domain boundaries 2026-05-04 16:14:51 +02:00

Opened #410 refactor(frontend): add ESLint rule preventing cross-domain imports 2026-05-04 16:15:10 +02:00

Opened #411 epic(legibility): polish — remove smells surfaced by audits 2026-05-04 16:16:33 +02:00

Opened #412 cleanup(legibility): remove dead code identified by audits 2026-05-04 16:17:02 +02:00

Opened #413 cleanup(legibility): rewrite vague comments; remove "ask Marcel" markers 2026-05-04 16:17:17 +02:00

Opened #414 cleanup(legibility): rename Helper/Utils/Manager violators to express intent 2026-05-04 16:17:34 +02:00

Opened #415 cleanup(legibility): repo hygiene — proofshot retention, ignore .agent/.worktrees 2026-05-04 16:17:53 +02:00

Opened #416 audit(legibility): re-run readiness scorecard; ratify "ready for evaluation" 2026-05-04 16:18:18 +02:00

Opened #417 fix(backend): resolve cross-domain repo + controller→repo violations before REFACTOR-1 2026-05-04 16:41:08 +02:00

Opened #418 decide(backend): resolve users-table / AppUser-entity naming mismatch before REFACTOR-1 2026-05-04 16:41:59 +02:00

Opened #423 fix(test): resolve pre-existing TranscriptionEditView and Richtlinien test failures 2026-05-05 15:21:53 +02:00

Opened #424 refactor(frontend): move statusDotClass/statusLabel from person/ to document/ 2026-05-05 15:22:02 +02:00

Opened #425 fix(test): make browser-project tests contribute to coverage measurement 2026-05-05 15:29:57 +02:00

Opened #427 refactor(backend): ArchUnit Rule 5 — enforce controller @RequestMapping URL prefix per domain 2026-05-05 17:12:51 +02:00

Opened #431 test(e2e): follow-up gaps from legibility pre-flight (#402) 2026-05-05 19:11:57 +02:00

Opened #432 docs(legibility): write human-targeted root README.md (DOC-1) 2026-05-05 21:06:01 +02:00

Opened #433 docs(legibility): write docs/ARCHITECTURE.md with diagram, domains, security model (DOC-2) 2026-05-05 21:06:32 +02:00

Opened #434 docs(legibility): write docs/GLOSSARY.md disambiguating overloaded terms (DOC-3) 2026-05-05 21:07:03 +02:00

Opened #435 docs(legibility): write CONTRIBUTING.md with three walkthroughs and Testing section (DOC-4) 2026-05-05 21:07:42 +02:00

Opened #436 docs(legibility): write docs/DEPLOYMENT.md as Day-1 production checklist (DOC-5) 2026-05-05 21:08:15 +02:00

Opened #437 docs(legibility): write 18 README.md files for canonical domain packages (DOC-6) 2026-05-05 21:08:46 +02:00

Opened #438 docs(legibility): migrate CLAUDE.md rules to human docs via pointer comments (DOC-7) 2026-05-05 21:09:29 +02:00

Opened #447 feat(dashboard): permission-gated reader dashboard for READ_ALL / BLOG_WRITE users 2026-05-06 10:10:46 +02:00

Opened #451 Add database ER and ORM diagrams (PlantUML) 2026-05-06 23:34:33 +02:00

Opened #453 refactor(admin): dedicated /api/admin/stats endpoint returning counts only 2026-05-07 09:24:48 +02:00

Opened #454 feat(chronik): add commentPreview field to ActivityFeedItemDTO 2026-05-07 09:24:58 +02:00

Opened #457 security(deps): bump Spring Boot to 4.0.6 to clear 2 CRIT + 17 HIGH CVEs 2026-05-07 17:21:13 +02:00

Opened #458 security(deps): bump @sveltejs/kit + vite to clear BODY_SIZE_LIMIT bypass + 5 high devDep CVEs 2026-05-07 17:21:33 +02:00

Opened #459 security(ocr): run OCR container as non-root user (CIS Docker §4.1) 2026-05-07 17:21:55 +02:00

Opened #460 security(history): scrub admin:admin123 from .claude/skills/transcribe/SKILL.md git history 2026-05-07 17:22:18 +02:00

Opened #461 devops(ci): add SAST/SCA/secret-scan/container-scan gates to .gitea/workflows/ci.yml 2026-05-07 17:22:49 +02:00

Opened #462 feat(observability): add handleError hook with structured stdout sink 2026-05-07 17:23:16 +02:00

Opened #463 feat(resilience): wrap OCR client with Resilience4j retry + circuit-breaker + time-limiter 2026-05-07 17:24:25 +02:00

Opened #464 security(uploads): integrate ClamAV scan before persisting documents to MinIO 2026-05-07 17:24:57 +02:00

Opened #465 refactor(frontend): replace raw fetch with event.fetch in admin/enrich routes (handleFetch bypass) 2026-05-07 17:25:18 +02:00

Opened #466 refactor(api): migrate GlobalExceptionHandler to RFC 9457 ProblemDetail 2026-05-07 17:25:41 +02:00

Opened #467 refactor(document): switch Document.tags + receivers + trainingLabels to LAZY + @EntityGraph 2026-05-07 17:26:13 +02:00

Opened #468 fix(documents): paginate FTS match-set in SQL instead of loading all matching IDs 2026-05-07 17:26:47 +02:00

Opened #469 fix(db): add primary key to group_permissions to prevent duplicate grants 2026-05-07 17:27:46 +02:00

Opened #470 fix(db): add indexes on documents.sender_id and document_comments.author_id 2026-05-07 17:28:06 +02:00

Opened #471 fix(user): replace Math.abs(hashCode()) in AppUser.computeColor (negative on Integer.MIN_VALUE) 2026-05-07 17:28:25 +02:00

Opened #472 fix(build): unbreak production build — /hilfe/transkription prerender unreachable behind /login 2026-05-07 17:28:47 +02:00

Opened #473 fix(api): add explicit @PathVariable name on transcription-block comment endpoints 2026-05-07 17:29:14 +02:00

Opened #474 cleanup(ocr): use %n instead of \n in TrainingDataExportService format string 2026-05-07 17:29:29 +02:00

Opened #476 fix(ci): two persistent CI failures — date-buckets timezone + Testcontainers Docker 2026-05-07 20:26:28 +02:00

Opened #479 feat(documents): keyboard-accessible range zoom for timeline 2026-05-08 10:12:06 +02:00

Opened #480 test(documents): timeline density Playwright coverage 2026-05-08 10:12:20 +02:00

Opened #481 perf(documents): move density aggregation into SQL when documents > 50k 2026-05-08 11:39:30 +02:00

Opened #482 fix(documents): filter inputs don't sync with URL — Sender/Receiver blank on load, fields don't clear on reset 2026-05-08 12:14:41 +02:00

Opened #483 fix(dashboard): align reader dashboard with reader-dashboard-final spec 2026-05-08 16:15:43 +02:00

Opened #496 Increase browser component test coverage to ≥ 80% on all metrics (statements, lines, branches, functions) 2026-05-09 18:43:54 +02:00

Opened #497 devops: production deployment — Caddy, staging env, and Gitea Actions CI/CD 2026-05-10 19:52:35 +02:00

Opened #498 devops: production observability stack — Prometheus, Loki, Grafana, Alertmanager 2026-05-10 20:47:48 +02:00

Opened #500 devops: bootstrap Renovate config for production deps (MinIO, mc, Postgres, Node, Caddy, mailpit) 2026-05-11 13:19:22 +02:00

Opened #501 test(ci): production image smoke-test job — boot frontend + backend images, curl /login 2026-05-11 13:19:38 +02:00

Opened #502 devops: nightly backup pipeline — pg_dump + mc mirror over Tailscale to heim-nas 2026-05-11 13:20:00 +02:00

Opened #503 bug(infra/fail2ban): jail defaults to systemd backend on Debian, never inspects Caddy access log 2026-05-11 14:58:50 +02:00

Opened #506 bug(infra/minio): create-buckets bootstrap.sh bind-mount fails on DooD runner (Is a directory) 2026-05-11 15:31:42 +02:00

Opened #508 bug(workflows): deploy workflows use runs-on: self-hosted but runner advertises ubuntu-latest — jobs never picked up 2026-05-11 16:15:46 +02:00

Opened #510 bug(compose): up -d --wait treats create-buckets exit(0) as failure 2026-05-11 16:32:12 +02:00

Opened #512 bug(caddy): respond @actuator 404 swallowed by catch-all handle; /actuator/health returns 302 2026-05-11 16:34:15 +02:00

Opened #513 bug(user): admin seed ignores APP_ADMIN_USERNAME / PASSWORD — falls back to defaults (HIGH, prod-blocking) 2026-05-11 16:35:26 +02:00

Opened #514 bug(frontend): SvelteKit prerender-crawl bakes redirect-to-login into static HTML for protected routes (HIGH, prod-blocking) 2026-05-11 16:52:24 +02:00

Opened #518 bug(user): UserDataInitializer blind-INSERTs Administrators group; fails on retry (HIGH, prod-blocking) 2026-05-11 17:25:37 +02:00

Opened #520 bug(security): browser-side /api/* requests miss Authorization in production → browser shows Basic-auth popup 2026-05-11 17:31:58 +02:00

Opened #522 tech-debt(auth): replace cookie-promotion glue with a proper session-based auth model 2026-05-11 18:20:55 +02:00

Opened #523 feat(auth): server-side session model replacing Basic-auth cookie promotion 2026-05-11 18:49:05 +02:00

Opened #524 feat(auth): defense-in-depth — CSRF, session revocation, login rate limit 2026-05-11 18:50:20 +02:00

Opened #527 "Unsaved changes" banner appears after creating a group/user — users think save failed 2026-05-11 19:06:41 +02:00

Opened #528 security(import): harden DocumentBuilderFactory against XXE in MassImportService 2026-05-11 20:13:22 +02:00

Opened #529 security(import): validate PDF magic bytes in MassImportService before S3 upload 2026-05-11 20:13:32 +02:00

Opened #530 security(import): reject path-traversal filenames from ODS in MassImportService.processRows 2026-05-11 20:13:41 +02:00

Opened #531 ci(nightly): post-deploy smoke test for /api/admin/import-status 2026-05-11 20:13:52 +02:00

Opened #532 ci(nightly): assert backend container can read /import after deploy 2026-05-11 20:13:57 +02:00

Opened #533 ui(admin/system): improve mass-import status card (loading state, i18n, font size) 2026-05-11 20:14:08 +02:00

Opened #534 spec(import): decide and document mass-import operator policy (3 open questions) 2026-05-11 20:14:22 +02:00

Opened #535 Unit & Component Tests job exits 1 from vitest-browser teardown race — every test green but CI red 2026-05-11 20:54:40 +02:00

Opened #538 bug(test): flaky browser-mode test — admin edit-user unsaved-changes guard 2026-05-11 22:46:07 +02:00

Opened #539 ci: extract Reload Caddy step into a composite action 2026-05-11 22:54:55 +02:00

Opened #541 test: fix flaky browser-mode tests in AnnotationShape and OcrTrainingCard specs 2026-05-12 09:35:57 +02:00

Opened #542 test: share fakePdfjs fixture across viewer test files 2026-05-12 09:39:45 +02:00

Opened #543 UX: PDF viewer has no loading indicator or error state when pdfjs-dist fails to initialise 2026-05-12 09:39:53 +02:00

Opened #545 fix(test): NotificationDropdown "view-all link" test causes iframe navigation crash in CI 2026-05-12 10:20:20 +02:00

Opened #546 test: PdfViewer.svelte.test.ts re-introduces banned vi.mock('pdfjs-dist') factory — restores birpc teardown race 2026-05-12 10:31:13 +02:00

Opened #551 fix(test): NotificationDropdown view-all click navigates iframe — breaks vitest coverage 2026-05-12 16:16:25 +02:00

Opened #553 Unit & Component Tests job exits 1 — birpc teardown race resurfaces from async vi.mock factory with dynamic import 2026-05-12 18:07:05 +02:00

Opened #554 audit: factory mocks → prop injection migration (sveltest pattern) 2026-05-13 10:02:51 +02:00

Opened #556 ci(coverage): drop client-project branches threshold 80 → 70 to unblock CI 2026-05-13 12:57:12 +02:00

Opened #557 ci(devops): downgrade actions/upload-artifact v4 → v3 (re-regression — needs ADR to prevent future re-upgrade) 2026-05-13 12:57:25 +02:00

Opened #560 audit report: factory vi.mock → prop-injection / __mocks__ migration (87 call sites, 12 modules) 2026-05-14 10:37:24 +02:00

Opened #566 feat(admin): assign groups when creating an invite link 2026-05-14 11:41:11 +02:00