-
f921284db6
feat(#248): add TagService.mergeTags() with validateNotSelf/validateNotDescendant/transferDocuments helpers
Marcel
2026-04-16 22:18:41 +02:00
-
b9b572436a
feat(#248): add merge/delete/count native queries to TagRepository
Marcel
2026-04-16 22:15:14 +02:00
-
a05d9c22ae
fix(#248): TagService.getById() throws DomainException(TAG_NOT_FOUND) instead of ResponseStatusException
Marcel
2026-04-16 22:13:45 +02:00
-
de7c48117b
feat(#248): add TAG_NOT_FOUND, TAG_MERGE_SELF, TAG_MERGE_INVALID_TARGET error codes
Marcel
2026-04-16 22:10:52 +02:00
-
06fd5ae2da
fix(#221): resolve inherited color on child tags in document responses
Marcel
2026-04-16 19:28:21 +02:00
-
171f06da22
fix(#221): reset parent/color/delete state when navigating between tag edit pages
Marcel
2026-04-16 19:14:28 +02:00
-
89949977c7
fix(#221): suppress tagQ when tags are already selected
Marcel
2026-04-16 18:18:25 +02:00
-
532692e0fb
fix(#221): bypass debounce on AND/OR operator toggle to prevent race condition
Marcel
2026-04-16 17:24:30 +02:00
-
39ed66c97f
feat(#221): add i18n keys and error codes for tag hierarchy errors
Marcel
2026-04-16 16:51:03 +02:00
-
7f53651f13
feat(#221): render tag list hierarchically with indentation and color dots
Marcel
2026-04-16 16:46:55 +02:00
-
d900480920
feat(#221): add parent selector and color picker to admin tag edit form
Marcel
2026-04-16 16:39:02 +02:00
-
abba85a451
feat(#221): wire tagOp URL param from server to SearchFilterBar
Marcel
2026-04-16 16:25:27 +02:00
-
b54d2b0125
feat(#221): add AND/OR pill toggle to SearchFilterBar tag filter
Marcel
2026-04-16 16:20:21 +02:00
-
e03fb38274
feat(#221): add color dot to tag chips in DocumentList
Marcel
2026-04-16 16:14:32 +02:00
-
e8e54cc282
feat(#221): change TagInput binding to Tag[], add color dots and hierarchy grouping
Marcel
2026-04-16 16:11:38 +02:00
-
e4f21bd896
feat(#221): add --c-tag-* CSS custom properties for 10 semantic tag color tokens
Marcel
2026-04-16 15:50:13 +02:00
-
c3e007d421
chore(#221): regenerate TypeScript API types with Tag hierarchy fields
Marcel
2026-04-16 15:48:37 +02:00
-
57dc72b51d
feat(#221): add AND/OR tag filtering with hierarchy expansion in document search
Marcel
2026-04-16 15:44:18 +02:00
-
3fba740469
feat(#221): tag entity hierarchy fields, service, repository, controller
Marcel
2026-04-16 15:26:23 +02:00
-
f9ac963b9f
feat(#221): add V39 migration for tag hierarchy and colors
Marcel
2026-04-16 15:15:17 +02:00
-
b0c6d15f99
fix(#240): rename transcription column heading to "Text transkribieren"
Marcel
2026-04-16 13:37:46 +02:00
-
e808525312
fix(#240): rename segmentation column heading to "Text markieren"
Marcel
2026-04-16 13:35:56 +02:00
-
da5c92fe39
fix(#240): remove readyCount from weekly stats DTO and SQL query
Marcel
2026-04-16 13:19:53 +02:00
-
6c2da648db
fix(#240): remove weekly pulse badge from ReadyColumn
Marcel
2026-04-16 13:12:46 +02:00
-
ca660f103d
test(#240): add component tests for all four Mission Control Strip components
Marcel
2026-04-16 12:36:33 +02:00
-
06eb1cada8
refactor(#240): deduplicate formatDate, use generated types, always-visible strip
Marcel
2026-04-16 12:28:20 +02:00
-
d78685c5a4
fix(#240): accessibility, color consistency, and reviewedPct denominator
Marcel
2026-04-16 12:25:36 +02:00
-
23410aa4b8
fix(#240): rename V37→V38 (V37 was already applied); regenerate api.ts
Marcel
2026-04-16 12:23:14 +02:00
-
e041c75793
test(#240): add Testcontainers integration tests for native SQL queue queries
Marcel
2026-04-16 12:15:21 +02:00
-
adea7d498f
fix(#240): add @Schema(requiredMode=REQUIRED) to both queue DTOs; add V37 indexes
Marcel
2026-04-16 12:09:09 +02:00
-
4cf01a0f1d
test(#240): add TranscriptionQueueControllerTest
Marcel
2026-04-16 12:07:14 +02:00
-
2e4d9a8375
refactor(#240): replace Object[] positional mapping with Spring Data projections
Marcel
2026-04-16 12:05:21 +02:00
-
ff1606f63d
fix(#240): update test fixtures broken by rebase changes
Marcel
2026-04-16 11:50:49 +02:00
-
8980d810d4
fix(#240): use annotationCount as denominator in queue thresholds
Marcel
2026-04-16 11:00:18 +02:00
-
ca0cf4903c
refactor(#240): remove needsExpert feature completely
Marcel
2026-04-16 10:52:14 +02:00
-
9fb1821db5
fix(#240): remove CTA buttons and dead i18n keys from Mission Control Strip
Marcel
2026-04-16 10:34:47 +02:00
-
86a216918f
fix(#240): make Mission Control Strip dark-mode compatible
Marcel
2026-04-16 10:31:20 +02:00
-
48152517aa
fix(#240): fix invisible hover on column 1 & 2 doc links
Marcel
2026-04-16 10:22:06 +02:00
-
4af2e4ad17
fix(#240): remove dead "Alle lesen" link and add hover shadow to ReadyColumn
Marcel
2026-04-16 10:19:39 +02:00
-
94b5d1a5a8
fix(#240): align Mission Control Strip UI with final spec
Marcel
2026-04-16 10:15:21 +02:00
-
aa8fb70d10
fix(#240): redirect Mission Control Strip links to document detail page
Marcel
2026-04-16 09:11:21 +02:00
-
9404ec34ce
fix(#240): add missing V36 index migration and rename needs_expert to V37
Marcel
2026-04-16 08:10:44 +02:00
-
78abc7f726
docs(#240): add Mission Control Strip spec and pattern alternatives
Marcel
2026-04-15 22:48:27 +02:00
-
f36bebd1a8
feat(#240): Mission Control Strip frontend — 5 components + dashboard wiring
Marcel
2026-04-15 23:14:43 +02:00
-
53c5d90340
feat(#240): update generated API types for Mission Control Strip
Marcel
2026-04-15 23:06:04 +02:00
-
2ea603a3bf
feat(#240): backend for Mission Control Strip — queue endpoints + expert flag
Marcel
2026-04-15 22:59:17 +02:00
-
d7b2357834
feat(search): surface summary snippet when summary matched the query
Marcel
2026-04-15 21:34:10 +02:00
-
eb18d4f568
feat(search): restyle highlights to navy underline and add snippet labels
Marcel
2026-04-15 21:33:23 +02:00
-
091f7e5d25
feat(search): partial-word matching via to_tsquery prefix queries
Marcel
2026-04-15 21:32:37 +02:00
-
32f151ff31
feat(search): add snippetOffsets to SearchMatchData and use ts_headline for highlighted snippets
Marcel
2026-04-15 20:14:20 +02:00
-
9ff8423da6
feat(search): highlight snippet terms and mark sender/receiver/tag matches in document list
Marcel
2026-04-15 20:03:04 +02:00
-
162397d4eb
fix(search): make ParsedHighlight and parseHighlight public for cross-package test access
Marcel
2026-04-15 19:47:23 +02:00
-
fabab6b502
fix(pdf): merge setElements and render effects so canvas remount triggers re-render
Marcel
2026-04-15 19:25:36 +02:00
-
bcb2898e5f
perf(search): add index on transcription_blocks.document_id for lateral join
Marcel
2026-04-15 19:12:46 +02:00
-
2c64a6d8a4
style(search): improve mark hover contrast, remove no-op class, italicize snippet
Marcel
2026-04-15 19:11:54 +02:00
-
b74ae27171
test(search): add applyOffsets coverage for negative start offsets
Marcel
2026-04-15 19:08:30 +02:00
-
2817410f94
test(search): assert matchData key and snippet in controller search response
Marcel
2026-04-15 19:06:47 +02:00
-
63d1a2e1ff
fix(search): mark documents and total as required in OpenAPI schema
Marcel
2026-04-15 19:04:59 +02:00
-
bb29cac496
feat(search): pass matchData from server load to DocumentList
Marcel
2026-04-15 18:34:54 +02:00
-
60dc73ba04
feat(search): render title highlights and transcription snippets in DocumentList
Marcel
2026-04-15 18:34:14 +02:00
-
6cffd36b22
feat(search): add applyOffsets utility and regenerate API types with MatchOffset/SearchMatchData
Marcel
2026-04-15 18:05:07 +02:00
-
f723a83011
feat(search): enrich searchDocuments with per-document match data
Marcel
2026-04-15 17:53:57 +02:00
-
c235151075
test(search): add DocumentSearchEnrichmentTest for findEnrichmentData native query
Marcel
2026-04-15 17:40:47 +02:00
-
741eebc276
feat(search): add DocumentSearchResult.withMatchData() factory with match overlay map
Marcel
2026-04-15 15:34:00 +02:00
-
8a5ca6868f
feat(search): add SearchMatchData record for per-document match signals
Marcel
2026-04-15 15:32:26 +02:00
-
a15b5ebf17
feat(search): add MatchOffset record for character-level highlight positions
Marcel
2026-04-15 15:30:53 +02:00
-
5bd7f0d486
docs(#240): add Mission Control Strip spec and pattern alternatives
docs/issue-240-mission-control-spec
Marcel
2026-04-15 22:48:27 +02:00
-
ed12a54339
fix(fileloader): use untrack to prevent infinite reload loop
Marcel
2026-04-15 22:26:04 +02:00
-
-
ca4861a90d
fix(pdf): merge setElements and render effects so canvas remount triggers re-render
refactor/issues-193-200
Marcel
2026-04-15 19:25:36 +02:00
-
4b8da0024f
Merge pull request 'refactor(frontend): utility dedup, component splits, dead code removal (#193–#200)' (#241) from refactor/issues-193-200 into main
marcel
2026-04-15 15:23:15 +02:00
-
-
ed2c0231db
test(drag-drop): add reorder logic tests for useBlockDragDrop
Marcel
2026-04-15 15:20:43 +02:00
-
45490ebaac
fix(a11y): increase nav label font size from 9px to 11px in EntityNavSection
Marcel
2026-04-15 15:16:37 +02:00
-
7fb6ec04ab
fix(i18n): replace hardcoded German edit hint in CommentMessage with Paraglide key
Marcel
2026-04-15 15:14:14 +02:00
-
8739511058
test(notifications): add SSE event handling tests for useNotificationStream
Marcel
2026-04-15 15:09:26 +02:00
-
2b93ccf92d
refactor(notifications): import relativeTime from canonical time.ts
Marcel
2026-04-15 15:06:26 +02:00
-
ff9ae198c4
refactor(notifications): extract useNotificationStream and NotificationDropdown from NotificationBell (#200)
Marcel
2026-04-15 14:54:55 +02:00
-
8898863a48
refactor(transcription): extract useBlockAutoSave and useBlockDragDrop from TranscriptionEditView (#199)
Marcel
2026-04-15 14:45:03 +02:00
-
eb8aa92cf0
refactor(pdf): extract usePdfRenderer and PdfControls from PdfViewer (#196)
Marcel
2026-04-15 14:34:26 +02:00
-
bc3fec11a9
refactor(comments): extract CommentMessage component from CommentThread (#198)
Marcel
2026-04-15 14:23:25 +02:00
-
fe6c247882
refactor(admin): extract EntityNavSection to eliminate nav markup repetition (#197)
Marcel
2026-04-15 13:54:42 +02:00
-
accfa5373e
refactor(unsaved): extract createUnsavedWarning hook and UnsavedWarningBanner
Marcel
2026-04-15 13:31:17 +02:00
-
34e7436fdc
refactor(fileloader): extract createFileLoader hook from document/enrich pages
Marcel
2026-04-15 13:20:32 +02:00
-
dbf7f0bc16
fix(fileloader): revoke blob URLs before re-assignment and on destroy
Marcel
2026-04-15 13:13:21 +02:00
-
8be876492c
refactor(date): consolidate formatDate in date.ts with optional format param
Marcel
2026-04-15 13:10:44 +02:00
-
76d6f234b4
refactor(personFormat): replace getInitials(Person) with getInitials(name: string)
Marcel
2026-04-15 13:07:23 +02:00
-
655a2003cb
refactor(time): extract relativeTime into shared time.ts utility
Marcel
2026-04-15 13:02:49 +02:00
-
c50845bcfc
refactor(bell): migrate attachClickOutside to use:clickOutside action (#195)
Marcel
2026-04-15 12:55:29 +02:00
-
4446e80875
test(actions): add defaultPrevented coverage for clickOutside (#195)
Marcel
2026-04-15 12:46:04 +02:00
-
731cdc75ab
refactor(frontend): delete dead conversations/ route (#193)
Marcel
2026-04-15 12:43:40 +02:00
-
-
4b8e0637ce
fix(ci): pin DOCKER_API_VERSION=1.43 for Testcontainers on NAS runner
Marcel
2026-04-15 12:28:57 +02:00
-
793e632889
fix(lint): exclude project.inlang/ from Prettier
Marcel
2026-04-15 12:16:16 +02:00
-
305f95a572
test(search): add sender name FTS coverage and combined filter test
Marcel
2026-04-15 11:03:37 +02:00
-
43595aeb8a
refactor(search): replace O(n²) indexOf with HashMap for rank ordering
Marcel
2026-04-15 10:59:05 +02:00
-
947d8aeb6c
fix(search): respect DATE sort when text is present — do not override with relevance
Marcel
2026-04-15 10:57:24 +02:00
-
7ec3e6170d
feat(fts): backfill search_vector for all existing documents (V35)
Marcel
2026-04-14 23:47:45 +02:00
-
7d456d8e8b
feat(fts): replace ILIKE hasText with FTS two-phase search and RELEVANCE sort
Marcel
2026-04-14 23:46:24 +02:00
-
24530cf85b
feat(fts): add search_vector column, GIN index, DB triggers, and FTS repository method (V34)
Marcel
2026-04-14 23:38:12 +02:00
-
57c44cf02f
devops(backend): reduce healthcheck start_period to 30s
Marcel
2026-04-15 11:30:04 +02:00
-
48223d5a3d
devops(backend): pin eclipse-temurin tags, skip test compilation, document jar glob
Marcel
2026-04-15 11:29:13 +02:00
-
04069c0286
devops(backend): add .dockerignore to exclude target/ from build context
Marcel
2026-04-15 11:28:25 +02:00