diff --git a/src/lib/components/common/InterfaceSettings.svelte b/src/lib/components/common/InterfaceSettings.svelte
index 6718819259..b3c9094668 100644
--- a/src/lib/components/common/InterfaceSettings.svelte
+++ b/src/lib/components/common/InterfaceSettings.svelte
@@ -6,7 +6,7 @@
canUseWebSearch,
isSettingsAdmin
} from '$lib/utils/settings-access';
- import { config, settings, user } from '$lib/stores';
+ import { config, settings, terminalServers, user } from '$lib/stores';
import { onMount, getContext } from 'svelte';
import { toast } from 'svelte-sonner';
import { updateUserInfo } from '$lib/apis/users';
@@ -28,6 +28,18 @@
$: currentSettings = (settingsValue ?? $settings ?? {}) as Record;
$: externalSettings = settingsValue !== null;
$: defaultSettings = ($config?.ui?.default_interface_settings ?? {}) as Record;
+ $: hasDirectToolServerAccess =
+ $user?.role === 'admin' || ($user?.permissions?.features?.direct_tool_servers ?? true);
+ $: hasDirectTerminal =
+ ($terminalServers ?? []).some((server) => !server.id) ||
+ (currentSettings?.terminalServers ?? []).some((server) => server.url);
+ // Defaults apply to every user, so they follow what the instance offers.
+ $: hasTerminal =
+ $config?.features?.enable_tool_servers &&
+ (($terminalServers ?? []).some((server) => server.id) ||
+ (externalSettings
+ ? $config?.features?.enable_direct_integrations
+ : hasDirectToolServerAccess && hasDirectTerminal));
let backgroundImageUrl: string | null = null;
let inputFiles: FileList | null = null;
@@ -1487,89 +1499,91 @@
-
-
-
+ {#if hasTerminal}
+
+
+
-
-
-
- {$i18n.t('settings.personal.interface.terminalFileDisplay.description')}
-
-
-
-
-
-
-
-
- {
- saveSettings({ showFilesOnTerminalSelect });
+
+
+ {$i18n.t('settings.personal.interface.terminalFileDisplay.description')}
+
-
- {$i18n.t('settings.personal.interface.showFilesOnTerminalSelect.description')}
-
-
-
-
-
+
+
+
-
-
{
- saveSettings({ terminalPreviewAllowSameOrigin });
- }}
- />
+
+ {
+ saveSettings({ showFilesOnTerminalSelect });
+ }}
+ />
+
+
+ {$i18n.t('settings.personal.interface.showFilesOnTerminalSelect.description')}
+
-
- {$i18n.t('settings.personal.interface.terminalPreviewAllowSameOrigin.description')}
-
-
+
+
+
+
+
+
+ {
+ saveSettings({ terminalPreviewAllowSameOrigin });
+ }}
+ />
+
+
+
+ {$i18n.t('settings.personal.interface.terminalPreviewAllowSameOrigin.description')}
+
+
+ {/if}