Commit Graph

  • 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