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) {
)}
-
+
);
}