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 @@
+
+
+
+
+
+ {{ matchCount > 0 ? `${currentMatchIndex + 1}/${matchCount}` : 'No results' }}
+
+
+
+
+
+
+
+
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)