-
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