diff --git a/frontend/src/components/ChatWindow.jsx b/frontend/src/components/ChatWindow.jsx index ec97c2a..e24a53f 100644 --- a/frontend/src/components/ChatWindow.jsx +++ b/frontend/src/components/ChatWindow.jsx @@ -13,6 +13,7 @@ function safeParse(str) { } export default function ChatWindow({ conversation, loading, onConfirm }) { + if (!Array.isArray(conversation)) { console.error("ChatWindow expected conversation to be an array, got:", conversation); return null; diff --git a/frontend/src/pages/App.jsx b/frontend/src/pages/App.jsx index a0244f3..b8c3d83 100644 --- a/frontend/src/pages/App.jsx +++ b/frontend/src/pages/App.jsx @@ -1,10 +1,11 @@ -import React, { useEffect, useState } from "react"; +import React, { useEffect, useState, useRef } from "react"; import NavBar from "../components/NavBar"; import ChatWindow from "../components/ChatWindow"; const POLL_INTERVAL = 500; // 0.5 seconds export default function App() { + const containerRef = useRef(null); const [conversation, setConversation] = useState([]); const [userInput, setUserInput] = useState(""); const [loading, setLoading] = useState(false); @@ -80,6 +81,13 @@ export default function App() { } }; + useEffect(() => { + if (containerRef.current) { + containerRef.current.scrollTop = containerRef.current.scrollHeight; + } + }, [conversation, loading, done]); + + return (