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}