Commit Graph

  • d6db7a07bd refactor: move shared utilities to lib/shared/ sub-packages Marcel 2026-05-05 14:35:15 +02:00
  • 7cb922e90f refactor: move user domain components to lib/user/ Marcel 2026-05-05 14:28:17 +02:00
  • 7dd05af867 refactor: move tag domain components to lib/tag/ Marcel 2026-05-05 14:27:25 +02:00
  • d5d36e661a refactor: move person domain components and utils to lib/person/ Marcel 2026-05-05 14:26:21 +02:00
  • 920742ba1c refactor: move ocr domain components to lib/ocr/ Marcel 2026-05-05 14:23:55 +02:00
  • 051d2f246e refactor: move notification domain to lib/notification/ Marcel 2026-05-05 14:22:02 +02:00
  • 8ff5d6f842 refactor: move geschichte domain to lib/geschichte/ Marcel 2026-05-05 14:20:07 +02:00
  • 1e656d2db4 refactor: move document transcription, annotation, viewer sub-packages Marcel 2026-05-05 14:01:39 +02:00
  • e7f8aa5894 refactor: move document domain core to lib/document/ Marcel 2026-05-05 13:56:36 +02:00
  • 422e86fbf1 refactor: move conversation domain to lib/conversation/ Marcel 2026-05-05 13:48:50 +02:00
  • c7fda6a027 chore: remove accidentally nested generated/generated/ artifact Marcel 2026-05-05 13:47:45 +02:00
  • a843d27663 refactor: move activity domain components to lib/activity/ Marcel 2026-05-05 13:47:09 +02:00
  • 22165c234e chore: gitignore .agent/, .claude/worktrees/, scheduled_tasks.lock Marcel 2026-05-05 13:27:52 +02:00
  • cab9f1db16 chore: remove runtime agent artifacts from branch Marcel 2026-05-05 13:27:12 +02:00
  • 823735b09a chore: remove .agent planning docs from branch Marcel 2026-05-05 13:26:14 +02:00
  • c0d8704d6d docs: remove stale ExcelService from CLAUDE.md Marcel 2026-05-05 13:25:40 +02:00
  • 5f1c539fad docs: update package structure docs to reflect domain-based layout Marcel 2026-05-05 13:02:14 +02:00
  • 27e7fa9170 refactor(cleanup): delete empty legacy packages, move remaining test files to domain packages Marcel 2026-05-05 12:59:02 +02:00
  • 5e53a261fc refactor(shared): move remaining services to domain packages (stats→dashboard, filestorage, importing, notification, exception) Marcel 2026-05-05 12:55:51 +02:00
  • 930b1d23ce refactor(security): move SecurityConfig to security/ package Marcel 2026-05-05 12:48:29 +02:00
  • af2c983fe2 refactor(user): move user domain to user/ package, rename DataInitializer to UserDataInitializer Marcel 2026-05-05 12:45:30 +02:00
  • e85057bed2 refactor(document): move document domain core to document/ package Marcel 2026-05-05 12:39:20 +02:00
  • bb7d872a61 refactor(document): move document sub-packages transcription/annotation/comment Marcel 2026-05-05 12:23:28 +02:00
  • c0a1c9ff5f refactor(ocr): move ocr domain to package org.raddatz.familienarchiv.ocr Marcel 2026-05-05 11:41:19 +02:00
  • b41e1335d2 refactor(person/relationship): move relationship sub-package under person domain Marcel 2026-05-05 11:35:09 +02:00
  • b466dfcec6 refactor(person): move person domain to package org.raddatz.familienarchiv.person Marcel 2026-05-05 11:32:06 +02:00
  • a39fd9928c refactor(notification): move notification domain to package org.raddatz.familienarchiv.notification Marcel 2026-05-05 11:24:20 +02:00
  • 0ad3f3e58d refactor(geschichte): move geschichte domain to package org.raddatz.familienarchiv.geschichte Marcel 2026-05-05 11:19:56 +02:00
  • 3643fa357c refactor(tag): move tag domain to package org.raddatz.familienarchiv.tag Marcel 2026-05-05 11:13:55 +02:00
  • 89e9a2452e refactor(test): remove issue reference from makeService javadoc Marcel 2026-05-05 10:37:06 +02:00
  • 2506523f3b refactor(transcription/annotation): break mutual repo dependency Marcel 2026-05-05 07:48:26 +02:00
  • f5151f3949 refactor(ocr-training): route SenderModelService and OcrTrainingService through TranscriptionBlockQueryService Marcel 2026-05-05 07:40:34 +02:00
  • 310bb5b2d5 refactor(training-export): route export services through owning services Marcel 2026-05-05 07:36:20 +02:00
  • 0ca95d5ad7 refactor(import): route MassImportService through DocumentService Marcel 2026-05-05 07:27:30 +02:00
  • 8b177b9430 refactor(transcription-queue): route through DocumentService projections Marcel 2026-05-05 07:23:25 +02:00
  • e2e7b79067 refactor(thumbnail): route document access through DocumentService Marcel 2026-05-05 07:20:01 +02:00
  • 5c1332cb0e refactor(auth): route password reset through service layer + e2e helper Marcel 2026-05-04 22:26:11 +02:00
  • d5e0e969ef refactor(stats): introduce StatsService and require READ_ALL Marcel 2026-05-04 22:20:14 +02:00
  • eedf5e3ac1 fix(backend): rename users table to app_users Marcel 2026-05-04 21:44:21 +02:00
  • d4f666e981 test(person-mention): move i18n test to its own describe block Marcel 2026-05-04 15:16:01 +02:00
  • 678d9dab38 refactor(training): extract kurrentLabels helper + clarify query comments Marcel 2026-05-04 15:15:33 +02:00
  • 42cf078bb6 feat(person-mention): update transcription placeholder with @mention discoverability hint Marcel 2026-04-30 10:35:04 +02:00
  • 32e4e30e40 test(training): strengthen TrainingBlockQueryTest assertions Marcel 2026-05-04 15:12:38 +02:00
  • dd9c4d57ee fix(training): use KURRENT_RECOGNITION label for sender-based block queries Marcel 2026-04-30 10:15:25 +02:00
  • aae005d5e6 test(geschichten): decouple multi-person e2e from seed names Marcel 2026-05-03 09:09:29 +02:00
  • 9b6d8fbef1 fix(geschichten): bump filter pills to 44px touch target Marcel 2026-05-03 09:03:55 +02:00
  • 4f3020ffab feat(geschichten): make Geschichte panel rows fully clickable Marcel 2026-05-03 08:45:04 +02:00
  • 34ab8a0a2c test(geschichten): cover multi-person AND filter end-to-end Marcel 2026-05-03 08:41:11 +02:00
  • 96d023a7cb feat(geschichten): chip-row UI for multi-person AND filter Marcel 2026-05-03 08:37:28 +02:00
  • 0802889ea9 feat(geschichten): filter by multiple persons with AND semantics Marcel 2026-05-02 19:17:39 +02:00
  • 2ae830a3c8 test(e2e): add minimal Geschichten writer + reader Playwright spec Marcel 2026-05-02 18:53:09 +02:00
  • c23fad7dc8 test(geschichten): cover GeschichteEditor title guard, status mode, pre-fill, payload Marcel 2026-05-02 18:51:40 +02:00
  • 11c0d49907 test(geschichten): cover GeschichtenCard render, threshold, write-action gate Marcel 2026-05-02 18:49:26 +02:00
  • da249369ee test(geschichten): cover DocumentMultiSelect search, chip add/remove Marcel 2026-05-02 18:47:54 +02:00
  • 74b13abf53 fix(geschichten): widen story body and lift section-header contrast Marcel 2026-05-02 18:46:31 +02:00
  • ad535e314b refactor(extract-text): rename stripHtml → extractText and document non-sanitiser status Marcel 2026-05-02 18:44:40 +02:00
  • 18e5d18cc7 feat(geschichte): V59 grants BLOG_WRITE to existing WRITE_ALL groups Marcel 2026-05-02 18:42:46 +02:00
  • 35ec7e799f feat(admin): add BLOG_WRITE to group permission checkbox UI Marcel 2026-05-02 18:41:09 +02:00
  • 77ac9a01b5 chore(deps): drop frontend/yarn.lock — repo uses npm everywhere Marcel 2026-05-02 18:39:32 +02:00
  • b698f9f223 test(persons): add seventh GET mock for the geschichten API call Marcel 2026-05-02 18:12:50 +02:00
  • ed270f68e1 feat(geschichten): wire discovery integrations on Person and Document pages Marcel 2026-05-02 18:01:19 +02:00
  • fe1014a08a feat(geschichten): add /geschichten routes (index, detail, new, edit) Marcel 2026-05-02 17:54:31 +02:00
  • 9e6efacbcb feat(geschichten): add stripHtml util and GeschichtenCard component Marcel 2026-05-02 17:50:58 +02:00
  • ab3e633a0c feat(geschichten): add GeschichteEditor with Tiptap toolbar Marcel 2026-05-02 17:49:10 +02:00
  • b381b2078a feat(geschichten): add DocumentMultiSelect chip + typeahead component Marcel 2026-05-02 17:46:02 +02:00
  • 9e7861fa03 feat(geschichten): frontend foundation — canBlogWrite, sanitize util, nav, i18n Marcel 2026-05-02 17:43:29 +02:00
  • afd6d0b20d chore(api): regenerate types with Geschichte endpoints Marcel 2026-05-02 17:36:13 +02:00
  • e5024fc804 test(geschichte): add Testcontainers integration test and fix V58 author FK Marcel 2026-05-02 17:33:52 +02:00
  • 9fc96a15cf feat(geschichte): add REST controller with BLOG_WRITE permission gates Marcel 2026-05-02 17:31:43 +02:00
  • 08d96e5b0f feat(geschichte): add GeschichteService with HTML sanitization and DRAFT visibility rules Marcel 2026-05-02 17:29:11 +02:00
  • b7a2f6c2fe feat(geschichte): add repository and update DTO Marcel 2026-05-02 17:25:34 +02:00
  • b944ae9510 feat(geschichte): add entity, status enum, and V58 schema migration Marcel 2026-05-02 17:24:31 +02:00
  • 71b249bf31 feat(security): add BLOG_WRITE permission and GESCHICHTE_NOT_FOUND error code Marcel 2026-05-02 17:23:03 +02:00
  • f662bd870e chore(deps): add HTML sanitizers for Geschichten rich-text body Marcel 2026-05-02 17:21:58 +02:00
  • db66d0cc61 fix(document-page): add .catch() to task deep-link tick promise Marcel 2026-04-29 21:34:41 +02:00
  • 7dc5dc6f71 feat(document-page): auto-open transcription panel when ?task=transcribe is present Marcel 2026-04-29 21:30:23 +02:00
  • d974d39d17 feat(TranscriptionColumn): deep-link to transcription panel via ?task=transcribe Marcel 2026-04-29 21:27:28 +02:00
  • 5e4e487d5f feat(SegmentationColumn): deep-link to transcription panel via ?task=transcribe Marcel 2026-04-29 21:25:35 +02:00
  • b3fe9b1171 refactor(PersonMentionEditor): use data-editor-inner attribute for stable querySelector Marcel 2026-04-29 21:29:49 +02:00
  • 3c7c7a9aa4 refactor(TranscriptionReadView): rename handleMentionLeave, closeTimer to \$state, add 150ms comment Marcel 2026-04-29 21:27:43 +02:00
  • 9908f7afdc test(TranscriptionReadView): cover hover card timer and keyboard focus behavior Marcel 2026-04-29 21:23:44 +02:00
  • 96d9ff5db1 fix(PersonHoverCard): move chip colon into DOM for consistent screen reader announcement Marcel 2026-04-29 20:32:21 +02:00
  • 0113367d05 refactor(TranscriptionReadView): remove dead else branch in handleMentionLeave Marcel 2026-04-29 20:29:26 +02:00
  • fb6bffd7ee test(TranscriptionService): verify clear() removes prior mentions before applying DTO Marcel 2026-04-29 20:27:26 +02:00
  • b087de84c4 test(PersonMentionEditor): add placeholder show/hide behavior coverage Marcel 2026-04-29 19:56:12 +02:00
  • 3e07f6798c refactor(PersonHoverCard): extract showMaidenName derived, verify chip-type contrast, fix stale position test Marcel 2026-04-29 19:55:45 +02:00
  • bc0824b934 refactor(TranscriptionBlock): document EAGER fetch rationale Marcel 2026-04-29 19:55:16 +02:00
  • 7ccd541d40 fix(hover-card): use orientation-aware relationship labels; allow spaces in mention Marcel 2026-04-29 19:22:37 +02:00
  • 835dc77382 fix(transcription): persist mentionedPersons on block update; eager-load collection Marcel 2026-04-29 18:27:18 +02:00
  • 37edac4da6 fix(hover-card): maiden name false positive, placeholder on non-empty editor, card persistence Marcel 2026-04-29 18:26:44 +02:00
  • 49443ad16a docs(PersonMentionEditor): document client-side fetch exception inline Marcel 2026-04-29 16:21:33 +02:00
  • e6844c403c feat(MentionDropdown): restore "Neue Person anlegen" empty-state link Marcel 2026-04-29 16:20:42 +02:00
  • f1932fd5f6 fix(person-mention): WCAG 1.4.11 contrast for mention pill and dropdown ring Marcel 2026-04-29 16:19:34 +02:00
  • ba88febc77 fix(PersonMentionEditor): guard setEditable effect against re-entry loop Marcel 2026-04-29 16:18:40 +02:00
  • fa7b97acdc test(PersonMentionEditor): assert no HTML injection via mention displayName Marcel 2026-04-29 16:14:19 +02:00
  • 6ef888a128 fix(PersonMentionEditor): enforce disabled state on the contenteditable Marcel 2026-04-29 16:13:32 +02:00
  • 94d0733412 chore(i18n): remove orphaned error_person_rename_conflict translation key Marcel 2026-04-29 16:10:36 +02:00
  • 4ac94b2feb refactor(frontend): delete orphaned personMention.ts after Tiptap migration Marcel 2026-04-29 16:09:53 +02:00
  • 392af640c4 chore(frontend): add Tiptap placeholder CSS and lock Tiptap deps Marcel 2026-04-29 15:54:26 +02:00
  • 7a25feb04e refactor(TranscriptionBlock): migrate quote selection to Tiptap selectionUpdate (AC-7) Marcel 2026-04-29 15:53:54 +02:00