From 98f23b17a5755216e31c09ee938e36e46d139fee Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Sat, 24 Oct 2026 23:52:18 +0200 Subject: [PATCH] fix: model capability toggles show while their feature is off (#32963) * fix: model capability toggles show while their feature is off In the model editor and the admin model defaults, the Web Search, Image Generation, Code Interpreter and Memory capabilities and the matching Default Features showed even when the admin had turned that feature off for the whole instance, so switching them did nothing. They are now hidden while the feature is off. Values already saved on a model are kept, so turning the feature back on restores each model's settings. Refs #32830 * refac: use the codebase's name for instance feature switches Renames the new feature lookup to match how the rest of the frontend refers to instance features. * refac: keep each feature switch next to its capability Reads the instance feature switch from the existing capability list instead of a separate map, with no change in behaviour. --- .../workspace/Models/Capabilities.svelte | 18 ++++++++++++------ src/lib/stores/index.ts | 1 + 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/lib/components/workspace/Models/Capabilities.svelte b/src/lib/components/workspace/Models/Capabilities.svelte index e6491699d9..635ba726a2 100644 --- a/src/lib/components/workspace/Models/Capabilities.svelte +++ b/src/lib/components/workspace/Models/Capabilities.svelte @@ -25,15 +25,18 @@ }, web_search: { label: $i18n.t('settings.admin.models.capabilities.webSearch.label'), - description: $i18n.t('settings.admin.models.capabilities.webSearch.description') + description: $i18n.t('settings.admin.models.capabilities.webSearch.description'), + enabled: $config?.features?.enable_web_search }, image_generation: { label: $i18n.t('settings.admin.models.capabilities.imageGeneration.label'), - description: $i18n.t('settings.admin.models.capabilities.imageGeneration.description') + description: $i18n.t('settings.admin.models.capabilities.imageGeneration.description'), + enabled: $config?.features?.enable_image_generation }, code_interpreter: { label: $i18n.t('settings.admin.models.capabilities.codeInterpreter.label'), - description: $i18n.t('settings.admin.models.capabilities.codeInterpreter.description') + description: $i18n.t('settings.admin.models.capabilities.codeInterpreter.description'), + enabled: $config?.features?.enable_code_interpreter }, terminal: { label: $i18n.t('settings.admin.models.capabilities.terminal.label'), @@ -53,7 +56,8 @@ }, memory: { label: $i18n.t('settings.admin.models.capabilities.memory.label'), - description: $i18n.t('settings.admin.models.capabilities.memory.description') + description: $i18n.t('settings.admin.models.capabilities.memory.description'), + enabled: $config?.features?.enable_memories }, builtin_tools: { label: $i18n.t('settings.admin.models.capabilities.builtinTools.label'), @@ -73,10 +77,12 @@ $config?.features?.enable_terminal_servers || $config?.features?.enable_direct_integrations; $: visibleCapabilities = (Object.keys(capabilityLabels) as Capability[]).filter( (key) => - (key !== 'file_context' || capabilities.file_upload) && (key !== 'terminal' || hasTerminal) + (key !== 'file_context' || capabilities.file_upload) && + (key !== 'terminal' || hasTerminal) && + (capabilityLabels[key].enabled ?? true) ); $: enabledCapabilityIds = visibleCapabilities.filter((key) => capabilities[key]); - $: availableFeatures = featureKeys.filter((key) => capabilities[key]); + $: availableFeatures = featureKeys.filter((key) => enabledCapabilityIds.includes(key)); $: enabledDefaultIds = availableFeatures.filter((key) => defaultFeatureIds.includes(key)); const setDefault = (key: string, enabled: boolean) => { defaultFeatureIds = enabled diff --git a/src/lib/stores/index.ts b/src/lib/stores/index.ts index 1a6df7e331..33358f551d 100644 --- a/src/lib/stores/index.ts +++ b/src/lib/stores/index.ts @@ -381,6 +381,7 @@ type Config = { enable_google_drive_integration: boolean; enable_onedrive_integration: boolean; enable_image_generation: boolean; + enable_code_interpreter: boolean; enable_admin_export: boolean; enable_admin_chat_access: boolean; enable_admin_analytics: boolean;