-
e1ddd66704
fix(auth): add @Email validation and @Valid to enforce email format on user creation
Marcel
2026-04-18 21:52:11 +02:00
-
d816e94a90
feat(auth): migrate frontend from username to email-only authentication
Marcel
2026-04-18 21:34:46 +02:00
-
5e01db1c74
feat(auth): remove username field, migrate identity to email
Marcel
2026-04-18 20:49:15 +02:00
-
c4444a07d1
feat(users): reject blank email in updateProfile and adminUpdateUser
Marcel
2026-04-18 20:35:03 +02:00
-
79259aa348
feat(auth): configure form login to use 'email' as username parameter
Marcel
2026-04-18 20:32:52 +02:00
-
0b0559cbe9
feat(auth): switch CustomUserDetailsService to email-based lookup
Marcel
2026-04-18 20:31:32 +02:00
-
fced33e033
fix(forms): correct required/optional field markers and divider placement
Marcel
2026-04-18 20:12:41 +02:00
-
208c1adc3e
test(edit): add tests for handleDelete on the edit page
Marcel
2026-04-18 16:30:10 +02:00
-
a7a5123839
refactor(types): use generated Document type for doc prop in DocumentEditLayout
Marcel
2026-04-18 16:18:24 +02:00
-
d31ea12086
feat(upload): validate MIME type and size on file replace in DocumentEditLayout
Marcel
2026-04-18 16:15:22 +02:00
-
b0ea5f5552
feat(i18n): extract hardcoded strings in DocumentEditLayout to i18n keys
Marcel
2026-04-18 16:12:01 +02:00
-
8225bd660b
feat(upload): replace Unicode arrow with SVG icon in UploadZone
Marcel
2026-04-18 16:08:59 +02:00
-
fcc4c4665c
feat(edit): unify edit page with enrich split-panel layout
Marcel
2026-04-18 15:50:21 +02:00
-
9bad9e807b
fix(i18n): replace hardcoded strings with Paraglide message keys
Marcel
2026-04-18 14:54:06 +02:00
-
91500c4cf1
fix(a11y): bump Optional divider label to text-xs minimum (WCAG 1.4.4)
Marcel
2026-04-18 14:38:29 +02:00
-
f7ed154e4d
fix(a11y): bump progress bar text to text-xs minimum, add motion-safe to upload animation
Marcel
2026-04-18 14:31:05 +02:00
-
3c3680b1e6
fix(backend): move IOException into service, add content-type whitelist to attachFile
Marcel
2026-04-18 14:27:22 +02:00
-
c4e1f1e599
feat(frontend): wire progress bar, upload zone, and file replace into enrich page
Marcel
2026-04-18 14:07:23 +02:00
-
8ed66ae82f
feat(frontend): add countRequiredFilled utility with all 8 field-combination tests
Marcel
2026-04-18 14:05:09 +02:00
-
f0bdcf334b
feat(frontend): add UploadZone component for PLACEHOLDER document file upload
Marcel
2026-04-18 14:03:28 +02:00
-
fa14a11244
feat(frontend): add @keyframes slide for indeterminate upload progress animation
Marcel
2026-04-18 13:57:44 +02:00
-
0c2435e0a8
feat(frontend): add depends('app:document') to enrich load for targeted invalidation after file upload
Marcel
2026-04-18 13:56:32 +02:00
-
c62bf9085c
feat(frontend): reorder DescriptionSection fields, expose currentTitle bindable, add Optional divider
Marcel
2026-04-18 13:55:38 +02:00
-
047b7c71ff
feat(frontend): reorder WhoWhenSection grid, expose dateIso bindable, add autofocus
Marcel
2026-04-18 13:54:26 +02:00
-
1d9990715d
feat(frontend): add autofocus prop to PersonTypeahead forwarded to text input
Marcel
2026-04-18 13:53:10 +02:00
-
96f8bfd822
feat(backend): add POST /api/documents/{id}/file endpoint to attach file to existing document
Marcel
2026-04-18 13:46:25 +02:00
-
40db46945f
docs(spec): add Dokumente dashboard design spec (Variant A)
Marcel
2026-04-18 20:07:01 +02:00
-
f7747ba352
docs(spec): add register page design spec
Marcel
2026-04-18 19:24:06 +02:00
-
88f3f3e7eb
merge(feat/issue-264): resolve conflicts with main after PR #263 merge
Marcel
2026-04-18 12:37:08 +02:00
-
-
10eefc48c7
test(db): verify V42 partial unique index for QUEUED training runs per person
Marcel
2026-04-17 21:54:34 +02:00
-
af5918b5e8
fix(frontend): increase dismiss button touch target to 44×44px (WCAG 2.5.5)
Marcel
2026-04-17 21:50:05 +02:00
-
a3a40ed179
refactor(ocr): use stream .toList() instead of FQCN Collectors.toList()
Marcel
2026-04-17 21:47:36 +02:00
-
38a9719bdb
fix(frontend): QUEUED badge test, touch target on dismiss button, focus ring on expand toggle
Marcel
2026-04-17 21:36:26 +02:00
-
699d5e5759
refactor(ocr): mark _SenderModelRegistry.contains as private (_contains)
Marcel
2026-04-17 21:26:46 +02:00
-
afe84a6af7
fix(ocr): add partial unique index and align SenderModelServiceTest with suite style
Marcel
2026-04-17 21:25:18 +02:00
-
3ee4424556
perf(ocr): resolve person names in single batch query in getTrainingInfo
Marcel
2026-04-17 21:21:12 +02:00
-
b23118268b
refactor(ocr): return TrainingInfoResponse directly from getTrainingInfo endpoint
Marcel
2026-04-17 21:18:27 +02:00
-
4ddb095cb1
test(ocr): add /train-sender auth tests and run sender registry tests in CI
Marcel
2026-04-17 21:14:27 +02:00
-
af49bf5e7a
docs(ocr): document tail-recursive queue drain design in promoteNextQueuedRun
Marcel
2026-04-17 20:54:53 +02:00
-
3bbc64cfc6
refactor(ocr): rename _contains to contains in SenderModelRegistry
Marcel
2026-04-17 20:53:16 +02:00
-
8860f17129
fix(frontend): show person name inline in mobile status cell in TrainingHistory
Marcel
2026-04-17 20:52:08 +02:00
-
5e4f031537
fix(frontend): show error on training start failure, add aria-live and dismiss to success message
Marcel
2026-04-17 20:46:06 +02:00
-
8acae8ea4d
refactor(frontend): extract shared TrainingRun type to $lib/types/training.ts
Marcel
2026-04-17 20:42:06 +02:00
-
7a500644a9
test(ocr): add failure path and DONE status assertions to SenderModelServiceTest
Marcel
2026-04-17 20:38:43 +02:00
-
3b3f960a30
refactor(ocr): extract exportSenderData helper in triggerSenderTraining
Marcel
2026-04-17 20:24:38 +02:00
-
8e844dd16e
style(ocr): add Image type hints to extract_page_blocks and extract_region_text
Marcel
2026-04-17 20:22:34 +02:00
-
12c4d433ba
chore(ocr): lower OCR_MAX_CACHED_MODELS to 2 with memory budget comment
Marcel
2026-04-17 20:20:53 +02:00
-
16787f2771
test(ocr): verify load failure does not cache broken entry in SenderModelRegistry
Marcel
2026-04-17 20:19:40 +02:00
-
c3939e0f13
refactor(ocr): move person-name enrichment from OcrController into OcrTrainingService
Marcel
2026-04-17 20:18:21 +02:00
-
4f86011ffb
test(ocr): verify triggerSenderTraining upserts SenderModel with correct path and cer
Marcel
2026-04-17 20:13:21 +02:00
-
3ecda655c5
fix(ocr): eliminate race window in runOrQueueSenderTraining by creating RUNNING row atomically
Marcel
2026-04-17 20:11:56 +02:00
-
68ec66002a
fix(ocr): correct trainSenderModel URI from /train to /train-sender
Marcel
2026-04-17 20:08:18 +02:00
-
a296ad527e
feat(ocr): wire SenderModelService into OcrAsyncRunner; stage missing foundational files
Marcel
2026-04-17 19:27:02 +02:00
-
a8bd2606a0
refactor(ocr): move sender training methods from OcrTrainingService to SenderModelService
Marcel
2026-04-17 19:08:10 +02:00
-
607a3567e6
refactor(ocr): delete buildTrainingInfoMap() dead code
Marcel
2026-04-17 18:52:51 +02:00
-
7cc90b8a90
fix(ocr): log debug instead of silently swallowing person name resolution errors
Marcel
2026-04-17 18:51:15 +02:00
-
cd31bf63c1
feat(frontend): wire personNames to TrainingHistory in OcrTrainingCard
Marcel
2026-04-17 18:25:59 +02:00
-
add799c57f
chore: regenerate API types for per-sender model additions
Marcel
2026-04-17 18:10:04 +02:00
-
a146a2ec3c
feat(ocr): per-sender model registry and /train-sender endpoint
Marcel
2026-04-17 18:05:39 +02:00
-
548ad0fa68
test: add unit tests for SenderModelService, runOrQueueSenderTraining, and updateBlock hook
Marcel
2026-04-17 18:00:59 +02:00
-
e3c8e1a067
test: fix broken tests after per-sender model integration
Marcel
2026-04-17 17:56:51 +02:00
-
1279753ddb
fix(ocr): clarify stat card labels to distinguish available vs total blocks
Marcel
2026-04-18 11:06:43 +02:00
-
6c2e7078ba
fix(ocr): widen OCR overview page to max-w-5xl for two-column training cards
Marcel
2026-04-18 10:54:09 +02:00
-
cea1234400
feat(ocr): move training cards from system page to OCR overview page
Marcel
2026-04-18 10:52:23 +02:00
-
9ff498a194
feat(training-history): hide person/type columns for segmentation context
Marcel
2026-04-18 10:39:18 +02:00
-
8128769feb
style(admin/ocr): center content with max-w-4xl, wrap history tables in cards
Marcel
2026-04-18 10:33:39 +02:00
-
16bcd0f73c
fix(ocr): replace IllegalStateException with DomainException in triggerSenderTraining
Marcel
2026-04-18 09:55:22 +02:00
-
fc892f0f59
fix(admin): pass personId through load fn instead of params prop; widen touch targets in table rows
Marcel
2026-04-18 09:46:47 +02:00
-
2466553216
fix(ocr): replace IllegalStateException with DomainException.internal in triggerManualSenderTraining
Marcel
2026-04-18 09:46:00 +02:00
-
794000cbd1
fix(admin): locale-agnostic OcrHealthBar tests, focus rings on all OCR links
Marcel
2026-04-18 09:23:39 +02:00
-
269894a47a
refactor(ocr): move async training dispatch out of controller into SenderModelService
Marcel
2026-04-18 09:18:43 +02:00
-
a00617194c
fix(admin): i18n all hardcoded OCR strings, fix personName lookup, add empty state
Marcel
2026-04-18 08:59:49 +02:00
-
b879d28761
fix(ocr): validate personId in TriggerSenderTrainingDTO — returns 400 not 500 on null
Marcel
2026-04-18 08:49:17 +02:00
-
8acb830649
feat(admin): add OCR admin routes — overview, global history, sender detail
Marcel
2026-04-18 01:05:08 +02:00
-
0d8ac46639
feat(admin): add OcrHealthBar, OcrStatCards, OcrModelsTable components
Marcel
2026-04-18 00:30:24 +02:00
-
5f4e60a14c
feat(admin): add OCR entry to EntityNav sidebar and flyout
Marcel
2026-04-18 00:25:42 +02:00
-
f533817c7b
feat(api): regenerate TypeScript types with new OCR admin endpoints
Marcel
2026-04-18 00:20:46 +02:00
-
99e7176eac
test(ocr): add service-level tests for triggerManualSenderTraining
Marcel
2026-04-18 00:17:54 +02:00
-
c3fa09d12e
feat(ocr): add POST /api/ocr/train-sender endpoint for manual sender training
Marcel
2026-04-18 00:16:02 +02:00
-
178afcd496
feat(ocr): add per-model history endpoints via path segments
Marcel
2026-04-18 00:08:38 +02:00
-
b1b7418404
feat(ocr): promote TrainingInfoResponse to dto, add senderModels field
Marcel
2026-04-18 00:04:29 +02:00
-
a52c8bf079
test(db): verify V42 partial unique index for QUEUED training runs per person
Marcel
2026-04-17 21:54:34 +02:00
-
da0a7e9194
fix(frontend): increase dismiss button touch target to 44×44px (WCAG 2.5.5)
Marcel
2026-04-17 21:50:05 +02:00
-
bbfd234746
refactor(ocr): use stream .toList() instead of FQCN Collectors.toList()
Marcel
2026-04-17 21:47:36 +02:00
-
b396fccd52
fix(frontend): QUEUED badge test, touch target on dismiss button, focus ring on expand toggle
Marcel
2026-04-17 21:36:26 +02:00
-
64a854aad6
refactor(ocr): mark _SenderModelRegistry.contains as private (_contains)
Marcel
2026-04-17 21:26:46 +02:00
-
92f3c04d54
fix(ocr): add partial unique index and align SenderModelServiceTest with suite style
Marcel
2026-04-17 21:25:18 +02:00
-
0d5f3f38d0
perf(ocr): resolve person names in single batch query in getTrainingInfo
Marcel
2026-04-17 21:21:12 +02:00
-
4aa477555d
refactor(ocr): return TrainingInfoResponse directly from getTrainingInfo endpoint
Marcel
2026-04-17 21:18:27 +02:00
-
84c09e41ef
test(ocr): add /train-sender auth tests and run sender registry tests in CI
Marcel
2026-04-17 21:14:27 +02:00
-
e16dcdb7dc
docs(ocr): document tail-recursive queue drain design in promoteNextQueuedRun
Marcel
2026-04-17 20:54:53 +02:00
-
000079fd50
refactor(ocr): rename _contains to contains in SenderModelRegistry
Marcel
2026-04-17 20:53:16 +02:00
-
a09a9e6043
fix(frontend): show person name inline in mobile status cell in TrainingHistory
Marcel
2026-04-17 20:52:08 +02:00
-
1e289100a1
fix(frontend): show error on training start failure, add aria-live and dismiss to success message
Marcel
2026-04-17 20:46:06 +02:00
-
0c2175aa07
refactor(frontend): extract shared TrainingRun type to $lib/types/training.ts
Marcel
2026-04-17 20:42:06 +02:00
-
f76a9cce1f
test(ocr): add failure path and DONE status assertions to SenderModelServiceTest
Marcel
2026-04-17 20:38:43 +02:00
-
e2081b57e7
refactor(ocr): extract exportSenderData helper in triggerSenderTraining
Marcel
2026-04-17 20:24:38 +02:00
-
07035b9fa9
style(ocr): add Image type hints to extract_page_blocks and extract_region_text
Marcel
2026-04-17 20:22:34 +02:00
-
57ffb7d751
chore(ocr): lower OCR_MAX_CACHED_MODELS to 2 with memory budget comment
Marcel
2026-04-17 20:20:53 +02:00
-
eab37b9ac9
test(ocr): verify load failure does not cache broken entry in SenderModelRegistry
Marcel
2026-04-17 20:19:40 +02:00