diff --git a/ui/homepage/components/AskAIButton.tsx b/ui/homepage/components/AskAIButton.tsx
index a27f7c3..2a7ca72 100644
--- a/ui/homepage/components/AskAIButton.tsx
+++ b/ui/homepage/components/AskAIButton.tsx
@@ -6,18 +6,33 @@ import { AskAIDialog } from './AskAIDialog'
export function AskAIButton() {
const [open, setOpen] = useState(false)
+ const [minimized, setMinimized] = useState(false)
return (
<>
-
+ {!open && (
+
+ )}
- setOpen(false)} />
+ {
+ setOpen(false)
+ setMinimized(true)
+ }}
+ onEnd={() => {
+ setOpen(false)
+ setMinimized(false)
+ }}
+ />
>
)
}
diff --git a/ui/homepage/components/AskAIDialog.tsx b/ui/homepage/components/AskAIDialog.tsx
index 3d7d298..a0f2b1b 100644
--- a/ui/homepage/components/AskAIDialog.tsx
+++ b/ui/homepage/components/AskAIDialog.tsx
@@ -4,7 +4,9 @@ import { useState } from 'react'
import { ChatBubble } from './ChatBubble'
import { SourceHint } from './SourceHint'
-export function AskAIDialog({ open, onClose }: { open: boolean; onClose: () => void }) {
+const MAX_MESSAGES = 20
+
+export function AskAIDialog({ open, onMinimize, onEnd }: { open: boolean; onMinimize: () => void; onEnd: () => void }) {
const [question, setQuestion] = useState('')
const [messages, setMessages] = useState<{ sender: 'user' | 'ai'; text: string }[]>([])
@@ -12,27 +14,39 @@ export function AskAIDialog({ open, onClose }: { open: boolean; onClose: () => v
if (!question) return
const userMessage = { sender: 'user' as const, text: question }
const apiBase = process.env.NEXT_PUBLIC_API_BASE_URL || ''
+ const trimmedHistory = messages.slice(-MAX_MESSAGES)
const res = await fetch(`${apiBase}/api/askai`, {
method: 'POST',
- body: JSON.stringify({ question, history: messages }),
+ body: JSON.stringify({ question, history: trimmedHistory })
})
const data = await res.json()
const aiMessage = { sender: 'ai' as const, text: data.answer as string }
- setMessages((prev) => [...prev, userMessage, aiMessage])
+ setMessages(prev => {
+ const newMessages = [...prev, userMessage, aiMessage]
+ return newMessages.slice(-MAX_MESSAGES)
+ })
setQuestion('')
}
+ function handleEnd() {
+ setMessages([])
+ setQuestion('')
+ onEnd()
+ }
+
if (!open) return null
return (
-
+
+
+
+
Ask anything about your docs