From 9ff8423da692832e15db26426793ee5b334aed01 Mon Sep 17 00:00:00 2001 From: Marcel Date: Wed, 15 Apr 2026 20:03:04 +0200 Subject: [PATCH] feat(search): highlight snippet terms and mark sender/receiver/tag matches in document list Co-Authored-By: Claude Sonnet 4.6 --- frontend/src/lib/generated/api.ts | 1 + frontend/src/routes/DocumentList.svelte | 58 +++++- .../src/routes/DocumentList.svelte.spec.ts | 183 +++++++++++++++++- 3 files changed, 226 insertions(+), 16 deletions(-) diff --git a/frontend/src/lib/generated/api.ts b/frontend/src/lib/generated/api.ts index a111e919..e9e24790 100644 --- a/frontend/src/lib/generated/api.ts +++ b/frontend/src/lib/generated/api.ts @@ -1607,6 +1607,7 @@ export interface components { senderMatched: boolean; matchedReceiverIds: string[]; matchedTagIds: string[]; + snippetOffsets: components["schemas"]["MatchOffset"][]; }; IncompleteDocumentDTO: { /** Format: uuid */ diff --git a/frontend/src/routes/DocumentList.svelte b/frontend/src/routes/DocumentList.svelte index 02fe7467..03bd27dc 100644 --- a/frontend/src/routes/DocumentList.svelte +++ b/frontend/src/routes/DocumentList.svelte @@ -22,8 +22,13 @@ let { originalFilename: string; documentDate?: string | null; location?: string | null; - sender?: { firstName?: string | null; lastName: string; displayName: string } | null; - receivers?: { firstName?: string | null; lastName: string; displayName: string }[]; + sender?: { + id?: string; + firstName?: string | null; + lastName: string; + displayName: string; + } | null; + receivers?: { id?: string; firstName?: string | null; lastName: string; displayName: string }[]; tags?: { id: string; name: string }[]; }[]; canWrite: boolean; @@ -80,9 +85,14 @@ const showDividers = $derived(groupedDocuments.length >= 2);