From 5d3114b142f43dd4629a43ad29e2f512f8a82d58 Mon Sep 17 00:00:00 2001 From: Dorian Date: Tue, 3 Mar 2026 23:09:48 +0000 Subject: [PATCH] feat(chat): add conversation search with Cmd+F (M8.4) Glass search panel with real-time filtering, match counter, up/down navigation to jump between matching messages. Keyboard shortcuts: Cmd+F to open, Escape to close, Enter/arrows to navigate between matches. Co-Authored-By: Claude Opus 4.6 --- .../app/src/components/chat/ChatSearch.vue | 137 ++++++++++++++++++ .../app/src/components/chat/ChatWindow.vue | 12 ++ 2 files changed, 149 insertions(+) create mode 100644 packages/app/src/components/chat/ChatSearch.vue diff --git a/packages/app/src/components/chat/ChatSearch.vue b/packages/app/src/components/chat/ChatSearch.vue new file mode 100644 index 00000000..38fec7a4 --- /dev/null +++ b/packages/app/src/components/chat/ChatSearch.vue @@ -0,0 +1,137 @@ + + + diff --git a/packages/app/src/components/chat/ChatWindow.vue b/packages/app/src/components/chat/ChatWindow.vue index ce2ae7c2..ca98d053 100644 --- a/packages/app/src/components/chat/ChatWindow.vue +++ b/packages/app/src/components/chat/ChatWindow.vue @@ -12,6 +12,12 @@ + + (null) +const chatSearchRef = ref | null>(null) + +function scrollToMessageIndex(index: number) { + virtualizer.value.scrollToIndex(index, { align: 'center' }) +} // Reply-to threading state const replyTo = ref<{ messageId: string; excerpt: string } | null>(null)