Commit Graph

  • 29a1df5d9c test(transcription): listener no-op when no block references the renamed person Marcel 2026-04-28 20:27:07 +02:00
  • 4d288589fa feat(transcription): PersonMentionPropagationListener rewrites blocks on rename Marcel 2026-04-28 20:25:16 +02:00
  • a2c633c5de feat(transcription): findByMentionedPersons_PersonId derived query Marcel 2026-04-28 20:21:23 +02:00
  • 28112e1d7b test(person): alias-only and notes-only updates do not publish display-name event Marcel 2026-04-28 20:18:35 +02:00
  • 08e7987033 feat(person): updatePerson publishes PersonDisplayNameChangedEvent on display-name change Marcel 2026-04-28 20:17:17 +02:00
  • 1db0f38f62 test(transcription): 400 + VALIDATION_ERROR when mention personId is null Marcel 2026-04-28 20:14:14 +02:00
  • 4e8df66a79 test(transcription): 400 + VALIDATION_ERROR when mention displayName exceeds 200 chars Marcel 2026-04-28 20:12:53 +02:00
  • 80ddfb47ac feat(transcription): DTOs accept mentionedPersons sidecar with @Valid cascade Marcel 2026-04-28 20:11:01 +02:00
  • 7805da52e6 test(transcription): round-trip TranscriptionBlock.mentionedPersons Marcel 2026-04-28 20:07:56 +02:00
  • 0f3e000379 feat(transcription): TranscriptionBlock.mentionedPersons sidecar field Marcel 2026-04-28 20:06:58 +02:00
  • b435fd69f7 feat(person): PersonDisplayNameChangedEvent record Marcel 2026-04-28 20:05:39 +02:00
  • a6c8db226d feat(transcription): PersonMention @Embeddable for sidecar entries Marcel 2026-04-28 20:04:41 +02:00
  • e833d1f71a feat(transcription): V56 migration adds transcription_block_mentioned_persons sidecar Marcel 2026-04-28 20:03:36 +02:00
  • 5d82a3e471 refactor(relationship): use typed RelationType enum in CreateRelationshipRequest Marcel 2026-04-28 19:56:55 +02:00
  • cb93f55396 refactor(stammbaum): StammbaumSidePanel composes AddRelationshipForm — removes inline form duplication Marcel 2026-04-28 19:25:02 +02:00
  • 3cfaae06da feat(stammbaum): AddRelationshipForm accepts onSubmit callback prop for fetch-based submission Marcel 2026-04-28 19:22:10 +02:00
  • a81323a7a1 fix(stammbaum): handle HttpMessageNotReadableException → 400 for invalid enum values Marcel 2026-04-28 18:27:25 +02:00
  • 10b1bab57b fix(stammbaum): state-aware aria-label on family-member toggle — WCAG accessible name Marcel 2026-04-28 18:21:55 +02:00
  • 000333d540 fix(stammbaum): WCAG text-[10px] → text-xs in PersonRelationshipsCard chip labels Marcel 2026-04-28 18:19:20 +02:00
  • 5817a79151 test(stammbaum): year-range validation test for AddRelationshipForm — toYear before fromYear shows alert Marcel 2026-04-28 18:17:27 +02:00
  • 3b430828b7 test(stammbaum): component tests for StammbaumCard — heading, empty state, toggle, error display Marcel 2026-04-28 17:37:21 +02:00
  • f8aa8c6574 test(stammbaum): component tests for StammbaumSidePanel — displayName, empty state, loading indicator Marcel 2026-04-28 17:36:01 +02:00
  • ce005622f2 fix(stammbaum): i18n inline add-form in StammbaumSidePanel — replace 5 hardcoded German strings with m.relation_form_*() keys Marcel 2026-04-28 17:34:40 +02:00
  • 0e9fa157e5 fix(stammbaum): add × dismiss button with aria-label to StammbaumSidePanel Marcel 2026-04-28 17:33:31 +02:00
  • fa1dfbc99d fix(stammbaum): guard inferred-relationship badge to single-receiver documents only Marcel 2026-04-28 17:09:46 +02:00
  • eb91639a5e fix(stammbaum): responsive /stammbaum layout — hidden md:block aside + fixed bottom sheet on mobile Marcel 2026-04-28 17:06:05 +02:00
  • 43fb51305e fix(stammbaum): i18n AddRelationshipForm — wire Paraglide for type/year labels and optgroup captions Marcel 2026-04-28 17:03:24 +02:00
  • 6babcc7f17 fix(stammbaum): V55 adds unique_spouse_pair index — symmetric SPOUSE_OF enforced at DB level Marcel 2026-04-28 17:00:50 +02:00
  • 1754b96b18 test(stammbaum): happy-path controller tests for GET /api/network, GET inferred-rels, POST+DELETE relationships Marcel 2026-04-28 16:58:26 +02:00
  • d230156651 test(stammbaum): getFamilyNetwork excludes edges with non-family endpoints Marcel 2026-04-28 13:03:20 +02:00
  • 93f4a00032 fix(stammbaum): SVG node font 14→16px and reliable keyboard focus ring Marcel 2026-04-28 13:01:58 +02:00
  • ea97bdd869 refactor(stammbaum): initialise selectedId directly from focusId, drop $effect Marcel 2026-04-28 13:00:01 +02:00
  • cbaff016d0 docs(stammbaum): explain MAX_DEPTH=8 rationale on RelationshipInferenceService Marcel 2026-04-28 12:59:19 +02:00
  • 0b3455dbb2 test(stammbaum): skip E2E spec until CI Playwright job exists (#363) Marcel 2026-04-28 12:58:03 +02:00
  • 499d0a3ca8 fix(stammbaum): derived relationship names link to person page in StammbaumCard Marcel 2026-04-28 12:56:58 +02:00
  • bd3feda182 fix(stammbaum): WCAG 2.2 SC 2.5.8 — delete button 32px → 44px in RelationshipChip Marcel 2026-04-28 12:56:23 +02:00
  • f2127e2814 fix(stammbaum): i18n the StammbaumCard heading (de/en/es) Marcel 2026-04-28 12:30:44 +02:00
  • 13bb3b451e fix(stammbaum): import chipLabel/otherName from shared relationshipLabels in PersonRelationshipsCard Marcel 2026-04-28 12:25:34 +02:00
  • 6074ac396f docs(stammbaum): document intentional auth design on RelationshipController GET endpoints Marcel 2026-04-28 11:38:28 +02:00
  • b6253cb023 fix(stammbaum): add focus-visible ring to zoom buttons — WCAG 2.4.7 Marcel 2026-04-28 11:37:24 +02:00
  • e94e9a3573 test(stammbaum): prove DELETE and PATCH /family-member return 403 for READ_ALL-only users Marcel 2026-04-28 11:36:40 +02:00
  • 06ecad5e74 test(stammbaum): prove GET /api/network and GET /api/persons/{id}/relationships reject unauthenticated requests (401) Marcel 2026-04-28 11:35:39 +02:00
  • fcfae8fb78 refactor(stammbaum): use shared chipLabel/otherName from relationshipLabels in both components Marcel 2026-04-28 11:34:24 +02:00
  • 83de7ff673 refactor(stammbaum): extract chipLabel/otherName to shared relationshipLabels helper Marcel 2026-04-28 11:31:37 +02:00
  • 48649e67f9 refactor(stammbaum): extract RelationshipChip and AddRelationshipForm Marcel 2026-04-28 10:41:51 +02:00
  • 1d14c32c23 fix(stammbaum): WCAG min font-size and 44px touch targets Marcel 2026-04-28 10:26:56 +02:00
  • d27fed3c35 fix(stammbaum): i18n for year-range labels in StammbaumCard Marcel 2026-04-28 10:23:49 +02:00
  • 22752ac1ae fix(stammbaum): structured error codes in RelationshipController Marcel 2026-04-28 10:19:09 +02:00
  • 7a3d919c2d fix(stammbaum): resolve persons via PersonService in RelationshipInferenceService Marcel 2026-04-28 10:14:41 +02:00
  • b969bcd877 style(stammbaum): widen side panel to 320px so longer names don't clip Marcel 2026-04-28 08:36:01 +02:00
  • cd26057ea5 fix(stammbaum): iterative generation + spouse-adjacent block layout Marcel 2026-04-28 08:35:32 +02:00
  • ccbcbca0e8 feat(stammbaum): inline add-relationship form in side panel Marcel 2026-04-27 21:44:51 +02:00
  • c40cc05f68 feat(stammbaum): tree visual polish + parent-midpoint layout Marcel 2026-04-27 21:44:19 +02:00
  • a021355072 feat(documents): inline relationship pills next to person names Marcel 2026-04-27 21:43:20 +02:00
  • 8971fee75e style(stammbaum): tighten vertical rhythm around relationship cards Marcel 2026-04-27 19:48:19 +02:00
  • 48a704f002 fix(stammbaum): drop inferred relationships that are already direct Marcel 2026-04-27 19:47:49 +02:00
  • a7b1dcb5e1 fix(stammbaum): JOIN FETCH persons in relationship queries Marcel 2026-04-27 19:47:19 +02:00
  • f382bd9974 test(stammbaum): E2E spec + extend person load mock Marcel 2026-04-27 15:07:37 +02:00
  • d7f4f6f163 feat(stammbaum): person detail Beziehungen card Marcel 2026-04-27 14:58:43 +02:00
  • 242e10179d feat(stammbaum): /stammbaum page — SVG tree + side panel + empty state Marcel 2026-04-27 14:56:41 +02:00
  • aaf885cafd feat(stammbaum): person edit Stammbaum & Beziehungen card Marcel 2026-04-27 14:51:54 +02:00
  • b658a13247 feat(stammbaum): show inferred relationship in the document drawer Marcel 2026-04-27 14:45:38 +02:00
  • 6bed617959 feat(stammbaum): swap nav slot from /briefwechsel to /stammbaum Marcel 2026-04-27 14:41:25 +02:00
  • 51db976348 feat(stammbaum): add i18n keys (de/en/es) + mirror error codes Marcel 2026-04-27 14:40:25 +02:00
  • fc46704144 chore(stammbaum): regenerate TS API types for relationship endpoints Marcel 2026-04-27 14:36:11 +02:00
  • 050f2bc929 test(stammbaum): integration tests for relationship constraints Marcel 2026-04-27 14:28:48 +02:00
  • f29f4d3f5b feat(stammbaum): RelationshipController for the Stammbaum API Marcel 2026-04-27 14:22:34 +02:00
  • 790c6f5b02 feat(stammbaum): RelationshipService + family_member toggle (TDD) Marcel 2026-04-27 14:20:15 +02:00
  • acea4a60f2 feat(stammbaum): inference service with BFS + LABEL_MAP (TDD) Marcel 2026-04-27 14:12:51 +02:00
  • 25f62ce93b feat(stammbaum): add backend data layer for family network Marcel 2026-04-27 14:05:49 +02:00
  • df6175ed2c feat(stammbaum): add V54 migration for family network Marcel 2026-04-27 14:02:27 +02:00
  • f6cf2e0e42 feat(transcription): add "Alle als fertig markieren" bulk action (#345) (#352) marcel 2026-04-28 08:34:26 +02:00
  • 33ca2df45b docs(specs): add Stammbaum UI specs — tree, document badge, person edit Marcel 2026-04-27 13:09:47 +02:00
  • 0979302205 Revert "docs: add Stammbaum feature design spec" Marcel 2026-04-27 09:58:35 +02:00
  • 9fb2c025cf docs: add Stammbaum feature design spec Marcel 2026-04-27 09:57:15 +02:00
  • ee2de8135b fix(persons): align PersonMergePanel padding with other edit page cards Marcel 2026-04-27 09:06:25 +02:00
  • fe13df574a test(persons): fix E2E flakiness — replace waitForTimeout with waitForListbox, remove conditional assertions, fix data-hydrated selector Marcel 2026-04-26 21:51:47 +02:00
  • a9080e9dab test(persons): add ArrowDown forward-wrap unit test for keyboard navigation Marcel 2026-04-26 21:51:17 +02:00
  • e8a1cc82ff fix(persons): fix PersonTypeahead dropdown clipping with fixed positioning Marcel 2026-04-26 20:59:54 +02:00
  • c641d704a8 merge: resolve conflict with origin/main + fix WCAG AA contrast + add API test feat/issue-345-bulk-mark-reviewed Marcel 2026-04-27 08:11:58 +02:00
  • 5b18b87450 test(security): add 403 permission test for annotation DELETE endpoint Marcel 2026-04-26 21:37:41 +02:00
  • bfa8b9c147 fix(viewer): move delete button inside annotation bounds to prevent edge clipping Marcel 2026-04-26 21:37:17 +02:00
  • 3a94d62c74 test(viewer): verify delete button click does not bubble to onclick Marcel 2026-04-26 21:36:51 +02:00
  • 163e99016a fix(viewer): check res.ok on orphaned annotation DELETE to surface errors Marcel 2026-04-26 21:36:27 +02:00
  • d6f3ca5c43 feat(viewer): show delete icon on annotation for direct block deletion (#339) Marcel 2026-04-26 21:00:50 +02:00
  • 108edff8d2 feat(persons): show merge panel inline on edit page, remove Gefahrenzone accordion Marcel 2026-04-26 21:49:38 +02:00
  • 3d3fe8d626 fix(pagination): add sr-only span to preserve aria-current on mobile AT Marcel 2026-04-26 21:42:16 +02:00
  • 31e5573eab fix(pagination): hide mobile page label from AT tree with aria-hidden Marcel 2026-04-26 21:37:50 +02:00
  • 934a00feb3 fix(pagination): use stable key in {#each} and fix duplicate page number bug Marcel 2026-04-26 21:36:44 +02:00
  • be27489618 test(pagination): fix test name typo and add totalPages===2 boundary test Marcel 2026-04-26 21:35:42 +02:00
  • 4e486a31cf feat(pagination): add numbered page-jump buttons to document search Marcel 2026-04-26 20:58:44 +02:00
  • 2c5877ea9e fix(a11y): fix ProgressRing text label contrast and add no-restricted-syntax lint rule for text-accent Marcel 2026-04-26 21:03:12 +02:00
  • cfbe33140c fix(viewer): replace text-accent with text-primary on annotation toggle inactive state Marcel 2026-04-26 21:02:39 +02:00
  • e8d1835ae1 feat(nav): add tooltip and cursor:pointer to notification bell, fix ThemeToggle i18n (#344) (#351) marcel 2026-04-26 21:45:40 +02:00
  • 35c2c83996 test(nav): add ThemeToggle spec covering label derivation in both modes feat/issue-344-bell-tooltip Marcel 2026-04-26 21:27:03 +02:00
  • 379bc84e11 fix(a11y): fix ProgressRing text label contrast and add no-restricted-syntax lint rule for text-accent feat/issue-341-annotieren-contrast Marcel 2026-04-26 21:03:12 +02:00
  • 110da9b8b0 fix(viewer): replace text-accent with text-primary on annotation toggle inactive state Marcel 2026-04-26 21:02:39 +02:00
  • 69ac183fe8 feat(transcription): add bulk "Alle als fertig markieren" action to transcription panel Marcel 2026-04-26 20:53:47 +02:00
  • c317c085aa fix(nav): replace hardcoded ThemeToggle title with Paraglide i18n keys Marcel 2026-04-26 20:53:10 +02:00
  • bc805cb178 feat(nav): add cursor-pointer and tooltip to notification bell Marcel 2026-04-26 20:46:12 +02:00