From 0542df147a90565cfec224af46e589200ddd9553 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 21 Apr 2026 15:52:33 +0900 Subject: [PATCH] refac --- src/lib/components/chat/ChatControls.svelte | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/lib/components/chat/ChatControls.svelte b/src/lib/components/chat/ChatControls.svelte index 3cbcc7ed87..8ac5f06617 100644 --- a/src/lib/components/chat/ChatControls.svelte +++ b/src/lib/components/chat/ChatControls.svelte @@ -72,7 +72,10 @@ $: showControlsTab = $user?.role === 'admin' || ($user?.permissions?.chat?.controls ?? true); $: showFilesTab = - !!$selectedTerminalId || + ($selectedTerminalId && + (($terminalServers ?? []).some((t) => t.id && t.id === $selectedTerminalId) || + $user?.role === 'admin' || + ($user?.permissions?.features?.direct_tool_servers ?? true))) || (codeInterpreterEnabled && $config?.code?.interpreter_engine !== 'jupyter'); $: showOverviewTab = hasMessages; @@ -96,13 +99,22 @@ } // Auto-open Files tab when a terminal is selected (suppress panel open when full-screen) - $: if ($selectedTerminalId) { + $: if ($selectedTerminalId && showFilesTab) { activeTab = 'files'; if (largeScreen) { showControls.set(true); } } + // Clear selected direct terminal if user lost permission + $: if ( + $selectedTerminalId && + !($terminalServers ?? []).some((t) => t.id && t.id === $selectedTerminalId) && + !($user?.role === 'admin' || ($user?.permissions?.features?.direct_tool_servers ?? true)) + ) { + selectedTerminalId.set(null); + } + // Attach a terminal file to the chat input const handleTerminalAttach = async (blob: Blob, name: string, contentType: string) => { const tempItemId = uuidv4();