-
1d3a3b3338
refactor(audit): extract groupChangePayload() from adminUpdateUser
Marcel
2026-04-26 15:33:30 +02:00
-
77affcfb4f
test(audit): integration test — create + delete user produces ordered audit entries
Marcel
2026-04-26 15:05:09 +02:00
-
36529f7e11
feat(audit): add findRecentUserManagementEvents query method
Marcel
2026-04-26 14:57:41 +02:00
-
eb8f9d4dc4
feat(audit): emit GROUP_MEMBERSHIP_CHANGED when admin updates user groups
Marcel
2026-04-26 14:54:42 +02:00
-
a736b7399a
feat(audit): emit USER_DELETED when admin removes a user
Marcel
2026-04-26 14:51:15 +02:00
-
e7c7f801c9
feat(audit): emit USER_CREATED when admin creates a new user
Marcel
2026-04-26 14:48:35 +02:00
-
5062513ae6
refactor(persons): extract inputCls/labelCls and PersonFormData type
Marcel
2026-04-26 12:34:49 +02:00
-
24d5381775
refactor(persons): rename page.server.test.ts to normalizePersonType.test.ts
Marcel
2026-04-26 12:30:07 +02:00
-
826283afcb
test(persons): replace fragile CSS class tests with aria-checked behavior tests
Marcel
2026-04-26 12:27:29 +02:00
-
1d5f99a2c8
a11y(persons): add aria-label to PersonTypeSelector radiogroup
Marcel
2026-04-26 12:25:03 +02:00
-
5961bfb916
test(persons): assert error code in createPerson_returns400_whenPersonTypeIsSkip
Marcel
2026-04-26 10:32:13 +02:00
-
4c300da65e
refactor(persons): remove what-comment from PersonCard title block
Marcel
2026-04-26 10:29:46 +02:00
-
bccff232fe
fix(persons): localize validation error messages via Paraglide i18n
Marcel
2026-04-26 10:28:28 +02:00
-
327fd89cb9
refactor(persons): centralise PersonType, PERSON_TYPES and normalizePersonType in person-validation
Marcel
2026-04-26 10:22:52 +02:00
-
23861055d1
fix(persons): keyboard navigation now updates PersonTypeSelector reactive state
Marcel
2026-04-26 10:17:47 +02:00
-
2ddeb485e3
test(persons): extract validatePersonFields and cover validation branches
Marcel
2026-04-26 00:52:45 +02:00
-
1f19fa3462
refactor(persons): export normalizePersonType from edit server module
Marcel
2026-04-26 00:39:21 +02:00
-
7ef1ab3b01
fix(persons): trim title server-side and add SKIP controller test
Marcel
2026-04-26 00:28:57 +02:00
-
45db75bdf2
fix(persons): use semantic color tokens in PersonTypeSelector for dark mode
Marcel
2026-04-26 00:16:26 +02:00
-
8870cbe2fe
feat(persons): show title in small-caps above display name in PersonCard
Marcel
2026-04-25 21:53:03 +02:00
-
b4cf7f1b21
feat(persons): add type selector + title + conditional fields to new-person form
Marcel
2026-04-25 21:50:39 +02:00
-
d5587d1b95
feat(persons): extract personType + title in edit action; relax firstName for non-PERSON
Marcel
2026-04-25 21:47:09 +02:00
-
7699a4e7e2
feat(persons): add type selector + title + conditional fields to edit form
Marcel
2026-04-25 21:45:09 +02:00
-
110416d68b
feat(persons): add PersonTypeSelector segmented control component
Marcel
2026-04-25 21:37:13 +02:00
-
64fdc5b57e
feat(i18n): add form_label_person_type, form_label_name, a11y_type_changed keys
Marcel
2026-04-25 21:31:11 +02:00
-
ac8d0d5796
feat(persons): normalize SKIP→UNKNOWN in edit-route load function
Marcel
2026-04-25 21:28:10 +02:00
-
b8dcb2d3f4
feat(persons): add radioGroupNav action for keyboard navigation in type selector
Marcel
2026-04-25 21:17:06 +02:00
-
ecd531601a
feat(persons): relax firstName requirement for non-PERSON types in controller
Marcel
2026-04-25 21:07:55 +02:00
-
fe1101f9d5
feat(persons): updatePerson rejects SKIP with INVALID_PERSON_TYPE
Marcel
2026-04-25 21:02:39 +02:00
-
928ebca056
feat(persons): updatePerson persists personType from DTO
Marcel
2026-04-25 20:59:58 +02:00
-
5dd4a01995
feat(persons): createPerson(DTO) rejects SKIP with INVALID_PERSON_TYPE
Marcel
2026-04-25 20:57:15 +02:00
-
f4132edc2b
feat(persons): add personType to PersonUpdateDTO and wire into createPerson
Marcel
2026-04-25 20:54:37 +02:00
-
d952fab4cd
feat(persons): add INVALID_PERSON_TYPE error code with i18n translations
Marcel
2026-04-25 20:51:00 +02:00
-
d45739cb76
fix(search): use to_tsquery('simple') for prefix transform to avoid German stop word collision
Marcel
2026-04-25 21:40:07 +02:00
-
18cad798fc
fix(documents): preserve archiveBox + archiveFolder in markForReview; drop documentLocation
Marcel
2026-04-25 20:25:08 +02:00
-
0ddf43947b
refactor(documents): drop documentLocation binding from edit layouts; wire archive fields
Marcel
2026-04-25 20:23:37 +02:00
-
45f7642f8d
feat(documents): replace documentLocation with archiveBox/archiveFolder in edit form
Marcel
2026-04-25 20:11:30 +02:00
-
5a13e61357
feat(documents): wire archiveBox + archiveFolder through DTO and service update
Marcel
2026-04-25 20:08:21 +02:00
-
a91ee1f26d
refactor(documents): unify count + action links into one row
Marcel
2026-04-25 19:41:24 +02:00
-
c59287fcfc
fix(bulk-edit): cycle-3 polish — Felix C2/C3/C4/C5 + Sara coverage gaps
feat/issue-225-bulk-metadata-edit
Marcel
2026-04-25 19:18:56 +02:00
-
8ce96294b0
fix(bulk-edit): cycle-2 blockers — restore initial-* props, missing import, scope Esc, edit-mode topbar
Marcel
2026-04-25 17:17:33 +02:00
-
1803db86b5
test(bulk-edit): plug Sara's identified coverage gaps
Marcel
2026-04-25 16:58:48 +02:00
-
46001bbf9d
refactor(documents): extract buildSearchSpec and resolveTags helpers
Marcel
2026-04-25 16:52:38 +02:00
-
af8303dbf8
fix(bulk-edit): auto-clear selection store when leaving /documents and /enrich
Marcel
2026-04-25 16:49:07 +02:00
-
7df00859c6
fix(bulk-edit): pluralization, edit-mode CTA, error UI, real loading state
Marcel
2026-04-25 16:46:58 +02:00
-
92d623e298
chore(bulk-edit): bean validation on DTO, readOnly tx, imports
Marcel
2026-04-25 16:41:06 +02:00
-
156efe8b31
fix(bulk-edit): a11y + i18n hardening (Leonie blockers 1–4 + quick concerns)
Marcel
2026-04-25 16:35:40 +02:00
-
499beca124
fix(bulk-edit): drop dead initial-* props and clear store on edit-mode discard
Marcel
2026-04-25 16:29:44 +02:00
-
5cbb14d4a3
fix(bulk-edit): backend hardening — audit, caps, dedupe, CRLF, WRITE_ALL on /ids
Marcel
2026-04-25 16:24:03 +02:00
-
2bb8fb8968
fix(bulk-edit): align BulkEditEntry shape with backend DocumentBatchSummary
Marcel
2026-04-25 16:14:53 +02:00
-
f13f635161
test(bulk-edit): e2e coverage for selection bar and Massenbearbeitung flow
Marcel
2026-04-25 15:30:18 +02:00
-
6d3489d035
feat(bulk-edit): add /documents/bulk-edit route
Marcel
2026-04-25 15:18:07 +02:00
-
fa5dc43864
feat(bulk-edit): extend BulkDocumentEditLayout with mode="edit"
Marcel
2026-04-25 15:16:06 +02:00
-
d4f32ed5d4
feat(bulk-edit): add BulkSelectionBar and Alle-X-editieren fast path
Marcel
2026-04-25 15:07:26 +02:00
-
27e3d290e7
feat(bulk-edit): add canWrite-gated row checkboxes on /documents and /enrich
Marcel
2026-04-25 15:03:59 +02:00
-
25446c9a5c
feat(bulk-edit): add bulkSelection store backed by SvelteSet
Marcel
2026-04-25 14:54:59 +02:00
-
660e34e016
feat(bulk-edit): add i18n keys, error mapping, and regenerate api types
Marcel
2026-04-25 14:52:10 +02:00
-
b662117e55
feat(bulk-edit): add GET /api/documents/ids endpoint
Marcel
2026-04-25 14:40:56 +02:00
-
d251806e72
feat(bulk-edit): add POST /api/documents/batch-metadata endpoint
Marcel
2026-04-25 14:38:08 +02:00
-
f0da033ec9
feat(bulk-edit): add PATCH /api/documents/bulk endpoint
Marcel
2026-04-25 14:34:52 +02:00
-
a59feec81a
feat(bulk-edit): add DocumentService.applyBulkEditToDocument
Marcel
2026-04-25 14:31:48 +02:00
-
779ffaab55
feat(bulk-edit): scaffold DTOs and BULK_EDIT_TOO_MANY_IDS error code
Marcel
2026-04-25 14:27:46 +02:00
-
b690c74ddf
fix(richtlinien): improve examples, copy, and Wikipedia link
Marcel
2026-04-25 13:10:56 +02:00
-
50621f9a15
test(bulk-upload): add cancel-path coverage for discard-all confirm dialog
feat/issue-317-bulk-upload
Marcel
2026-04-25 12:28:05 +02:00
-
0797406f02
docs(bulk-upload): explain chunkSize=10 and 50-file cap constants
Marcel
2026-04-25 11:31:59 +02:00
-
c94d2cec03
feat(bulk-upload): guard discard-all with confirm dialog
Marcel
2026-04-25 11:26:05 +02:00
-
4da0bf71a0
fix(bulk-upload): add gradient overflow indicators to chip strip
Marcel
2026-04-25 11:17:05 +02:00
-
da5d3c60b3
fix(bulk-upload): chip readability and focus management in FileSwitcherStrip
Marcel
2026-04-25 11:14:31 +02:00
-
ed0d0bf331
fix(bulk-upload): handle network errors and partial upload success
Marcel
2026-04-25 11:09:49 +02:00
-
899508f9ca
feat(bulk-upload): guard save() against concurrent invocations
Marcel
2026-04-25 11:03:58 +02:00
-
d32e671e9d
fix(bulk-upload): raise discard button touch target to 44px for WCAG compliance
Marcel
2026-04-25 09:13:55 +02:00
-
b61cfa081f
test(bulk-upload): add positive navigation assertion for successful save
Marcel
2026-04-25 09:12:21 +02:00
-
d914385afc
fix(bulk-upload): correct stale DocumentBatchMetadataDTO type in api.ts
Marcel
2026-04-25 09:10:29 +02:00
-
6cdfc1f6a3
fix(bulk-upload): announce error chip status to screen readers
Marcel
2026-04-25 09:08:10 +02:00
-
ed6a2fb56f
test(bulk-upload): fix ScopeCard spec assertions to match actual component classes
Marcel
2026-04-25 09:03:57 +02:00
-
58545876cd
fix(bulk-upload): accessibility improvements and fetch comment
Marcel
2026-04-25 01:25:03 +02:00
-
687ebf495d
fix(bulk-upload): match error chips by filename, not by chunk position
Marcel
2026-04-25 01:15:41 +02:00
-
bc10f2af06
fix(i18n): remove orphaned merge conflict markers from message files
Marcel
2026-04-25 01:07:44 +02:00
-
0bfd342190
test(bulk-upload): add unit tests for storeDocumentWithBatchMetadata
Marcel
2026-04-24 21:40:17 +02:00
-
1973f88e56
fix(bulk-upload): truncate long chip titles with tooltip in FileSwitcherStrip
Marcel
2026-04-24 21:30:38 +02:00
-
9f044f429c
fix(bulk-upload): enlarge scroll button touch targets to 44×44px
Marcel
2026-04-24 21:26:49 +02:00
-
7ad5e35fd6
fix(bulk-upload): populate aria-live region with active file title
Marcel
2026-04-24 21:25:06 +02:00
-
e7afed5ac3
fix(bulk-upload): add aria-label to progress bar in UploadSaveBar
Marcel
2026-04-24 21:22:49 +02:00
-
f48d1e3cd8
fix(bulk-upload): i18n topbar title; replace hardcoded German strings
Marcel
2026-04-24 21:21:07 +02:00
-
fc118f7032
fix(bulk-upload): skip navigation when any chunk fails to upload
Marcel
2026-04-24 21:18:17 +02:00
-
4229e952fb
fix(bulk-upload): include tagNames in quick-upload metadata payload
Marcel
2026-04-24 21:12:02 +02:00
-
e1259215ef
test(bulk-upload): add save-error and discard-all coverage to BulkDocumentEditLayout spec
Marcel
2026-04-24 20:41:14 +02:00
-
f06d034b36
fix(bulk-upload): i18n hardcoded strings in BulkDropZone and FileSwitcherStrip
Marcel
2026-04-24 20:38:39 +02:00
-
a6cd10f219
refactor(documents): extract applyBatchMetadata private helper in DocumentService
Marcel
2026-04-24 20:30:15 +02:00
-
b8e6fe9ec9
refactor(documents): change DocumentBatchMetadataDTO.tags from String to List<String> tagNames
Marcel
2026-04-24 20:28:12 +02:00
-
763f1990cd
refactor(documents): move batch validation from controller into DocumentService
Marcel
2026-04-24 20:25:17 +02:00
-
ca62f50921
fix(forms): remove autofocus from WhoWhenSection entirely
Marcel
2026-04-24 19:51:15 +02:00
-
61f84a86ac
fix(forms): apply py-3 to location input for consistent 44px height
Marcel
2026-04-24 19:48:47 +02:00
-
0eb5c95c6c
fix(forms): raise date and sender field height to match receiver (44px)
Marcel
2026-04-24 19:45:03 +02:00
-
d662635392
fix(PersonTypeahead): match height and border-radius of other form inputs
Marcel
2026-04-24 19:38:54 +02:00
-
b00be2548c
fix(PersonMultiSelect): align height and focus ring with other form inputs
Marcel
2026-04-24 19:36:20 +02:00
-
01a8654347
fix(bulk-upload): no layout shift, no autofocus on date field
Marcel
2026-04-24 19:32:23 +02:00
-
c1b221412f
fix(bulk-upload): PDF-only file acceptance
Marcel
2026-04-24 19:29:21 +02:00
-
76c14ea604
fix(bulk-upload): form layout polish and drop zone sizing
Marcel
2026-04-24 19:26:22 +02:00
-
539842e849
fix(bulk-upload): spec-compliant split-panel layout with local PDF preview
Marcel
2026-04-24 19:17:36 +02:00