diff --git a/app/composables/useAgentChat.ts b/app/composables/useAgentChat.ts index 5d6cedd..25b17ce 100644 --- a/app/composables/useAgentChat.ts +++ b/app/composables/useAgentChat.ts @@ -78,7 +78,7 @@ export function useAgentChat(options: UseAgentChatOptions) { ); } - async function loadMessages(sid: string) { + async function loadMessages(sid: string, skipResume = false) { messages.value = []; errorMessage.value = ""; try { @@ -91,7 +91,9 @@ export function useAgentChat(options: UseAgentChatOptions) { parts: m.parts ? (typeof m.parts === "string" ? JSON.parse(m.parts) : m.parts) : undefined, })); - await tryResumeStream(sid); + if (!skipResume) { + await tryResumeStream(sid); + } } catch { messages.value = []; } @@ -119,7 +121,6 @@ export function useAgentChat(options: UseAgentChatOptions) { } if (!res.ok) { - await loadMessages(sid); return; } @@ -128,7 +129,7 @@ export function useAgentChat(options: UseAgentChatOptions) { try { const body = await res.json(); if (body?.reason === "already-done" || body?.reason === "no-buffer") { - await loadMessages(sid); + await loadMessages(sid, true); } } catch { /* not JSON */ } return; diff --git a/app/pages/index.vue b/app/pages/index.vue index d5f355f..52f48b0 100644 --- a/app/pages/index.vue +++ b/app/pages/index.vue @@ -179,6 +179,19 @@ async function handleSend(content: string) { } } +async function handleNewSession() { + const sid = sessions.currentSessionId.value; + if (sid) { + const inst = chat.getInstance(sid); + if (inst.messages.value.length === 0 && !inst.isLoading.value) { + if (isMobile) mobileSidebarOpen.value = false; + return; + } + } + await sessions.newSession(); + if (isMobile) mobileSidebarOpen.value = false; +} + function refreshTitleWithRetry(sid: string) { const delays = [3000, 6000, 10000, 15000, 22000]; delays.forEach((delay) => { @@ -232,7 +245,7 @@ onMounted(async () => { :user="auth.user.value" :collapsed="isMobile ? !mobileSidebarOpen : sidebarCollapsed" :mobile="isMobile" - @new-session="sessions.newSession(); if (isMobile) mobileSidebarOpen = false" + @new-session="handleNewSession" @select="sessions.selectSession($event); if (isMobile) mobileSidebarOpen = false" @rename="sessions.renameSession" @delete="handleDeleteSession" diff --git a/packages/drizzle-pkg/db.sqlite b/packages/drizzle-pkg/db.sqlite index 7f312a2..9231474 100644 Binary files a/packages/drizzle-pkg/db.sqlite and b/packages/drizzle-pkg/db.sqlite differ