diff --git a/src/app.html b/src/app.html
index f273cc5..51b5029 100644
--- a/src/app.html
+++ b/src/app.html
@@ -5,7 +5,7 @@
%sveltekit.head%
-
+
%sveltekit.body%
diff --git a/src/lib/services/orchestrator.ts b/src/lib/services/orchestrator.ts
index 3a05f3f..0198ae6 100644
--- a/src/lib/services/orchestrator.ts
+++ b/src/lib/services/orchestrator.ts
@@ -161,6 +161,11 @@ export async function* processRequest(
let lastError: OrchestratorError | null = null;
for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
+ // Skip retries if already known disconnected
+ if (connectionStore.status === 'disconnected' && attempt > 0) {
+ break;
+ }
+
if (attempt > 0) {
connectionStore.setReconnecting();
const delay = backoffDelay(attempt - 1);
diff --git a/src/lib/stores/sessions.svelte.ts b/src/lib/stores/sessions.svelte.ts
index df739bc..ee139d3 100644
--- a/src/lib/stores/sessions.svelte.ts
+++ b/src/lib/stores/sessions.svelte.ts
@@ -67,6 +67,10 @@ function createSessionStore() {
saveActiveSessionId(id);
return sessions.get(id)!;
}
+ // No specific ID — prefer existing active session
+ if (!id && activeSessionId && sessions.has(activeSessionId)) {
+ return sessions.get(activeSessionId)!;
+ }
return createSession(id);
}
diff --git a/src/routes/+page.ts b/src/routes/+page.ts
new file mode 100644
index 0000000..ae88a27
--- /dev/null
+++ b/src/routes/+page.ts
@@ -0,0 +1,2 @@
+export const prerender = false;
+export const ssr = false;
diff --git a/src/routes/chat/+page.svelte b/src/routes/chat/+page.svelte
index 2428616..4d9b815 100644
--- a/src/routes/chat/+page.svelte
+++ b/src/routes/chat/+page.svelte
@@ -16,11 +16,13 @@
import ConfigSidebar from '$lib/components/ConfigSidebar.svelte';
import ThemeToggle from '$lib/components/ThemeToggle.svelte';
import ConnectionStatus from '$lib/components/ConnectionStatus.svelte';
+ import { onMount, untrack } from 'svelte';
import { sessionStore } from '$lib/stores/sessions.svelte';
import { isNonDefaultConfig } from '$lib/utils/sessionConfig';
import { createOrchestration } from '$lib/composables/useOrchestration.svelte';
let messages: ChatMessage[] = $state([]);
+ let initialized = $state(false);
let sessionConfig: SessionConfig = $state(
create(SessionConfigSchema, { overrideLevel: OverrideLevel.NONE })
);
@@ -39,13 +41,26 @@
goto(url, { replaceState: replace });
}
- $effect(() => {
+ onMount(() => {
const sessionParam = $page.url.searchParams.get('session');
const session = sessionStore.getOrCreateSession(sessionParam ?? undefined);
messages = [...session.messages];
if (!sessionParam || sessionParam !== session.id) {
navigateToSession(session.id, true);
}
+ initialized = true;
+ });
+
+ // Sync messages when session changes via sidebar (after initial mount)
+ $effect(() => {
+ if (!initialized) return;
+ const sessionParam = $page.url.searchParams.get('session');
+ if (sessionParam) {
+ const session = untrack(() => sessionStore.activeSession);
+ if (session && session.id === sessionParam) {
+ messages = [...session.messages];
+ }
+ }
});
function handleNewChat() {
diff --git a/src/routes/chat/+page.ts b/src/routes/chat/+page.ts
new file mode 100644
index 0000000..ae88a27
--- /dev/null
+++ b/src/routes/chat/+page.ts
@@ -0,0 +1,2 @@
+export const prerender = false;
+export const ssr = false;