Commit Graph

  • 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