diff --git a/package.json b/package.json index e0120b3..fccf775 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "codepilot", - "version": "0.5.0", + "version": "0.5.1", "private": true, "main": "dist-electron/main.js", "scripts": { diff --git a/src/app/chat/[id]/page.tsx b/src/app/chat/[id]/page.tsx index d01a3dd..b455ff3 100644 --- a/src/app/chat/[id]/page.tsx +++ b/src/app/chat/[id]/page.tsx @@ -48,9 +48,17 @@ export default function ChatSessionPage({ params }: ChatSessionPageProps) { }, [id, setWorkingDirectory, setSessionId, setPanelSessionTitle, setPanelOpen]); useEffect(() => { + // Reset state when switching sessions + setLoading(true); + setError(null); + setMessages([]); + + let cancelled = false; + async function loadMessages() { try { const res = await fetch(`/api/chat/sessions/${id}/messages`); + if (cancelled) return; if (!res.ok) { if (res.status === 404) { setError('Session not found'); @@ -59,15 +67,19 @@ export default function ChatSessionPage({ params }: ChatSessionPageProps) { throw new Error('Failed to load messages'); } const data: MessagesResponse = await res.json(); + if (cancelled) return; setMessages(data.messages); } catch (err) { + if (cancelled) return; setError(err instanceof Error ? err.message : 'Failed to load messages'); } finally { - setLoading(false); + if (!cancelled) setLoading(false); } } loadMessages(); + + return () => { cancelled = true; }; }, [id]); if (loading) { @@ -104,7 +116,7 @@ export default function ChatSessionPage({ params }: ChatSessionPageProps) { )} - + ); }