-
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
-