diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 4d29f09924..787bc85f2c 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -643,11 +643,14 @@ const audioQueueInstance = new AudioQueue(document.getElementById('audioElement')); audioQueue.set(audioQueueInstance); - // Reset direct terminal enabled states — selectedTerminalId starts null on every page load - if ($settings?.terminalServers?.some((s) => s.enabled)) { + // Restore direct terminal enabled states based on persisted selectedTerminalId + if ($settings?.terminalServers?.length) { settings.set({ ...$settings, - terminalServers: ($settings.terminalServers ?? []).map((s) => ({ ...s, enabled: false })) + terminalServers: ($settings.terminalServers ?? []).map((s) => ({ + ...s, + enabled: $selectedTerminalId !== null && s.url === $selectedTerminalId + })) }); } diff --git a/src/routes/(app)/+layout.svelte b/src/routes/(app)/+layout.svelte index 87e2a25b97..772ae6fe2d 100644 --- a/src/routes/(app)/+layout.svelte +++ b/src/routes/(app)/+layout.svelte @@ -34,6 +34,7 @@ temporaryChatEnabled, toolServers, terminalServers, + selectedTerminalId, showSearch, showSidebar, showControls, @@ -350,6 +351,16 @@ localStorage.showControls = value ? 'true' : 'false'; }); + // Persist selectedTerminalId across page loads + selectedTerminalId.set(localStorage.selectedTerminalId ?? null); + selectedTerminalId.subscribe((value) => { + if (value === null) { + delete localStorage.selectedTerminalId; + } else { + localStorage.selectedTerminalId = value; + } + }); + await tick(); loaded = true;