From 9ca8cf528af1c49da3f0a2bc3c6ca95c1dedbcf5 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 21 Jul 2026 14:16:51 -0400 Subject: [PATCH] refac --- .../components/admin/Settings/Models.svelte | 48 +-- .../Settings/Models/ModelDefaultsPanel.svelte | 242 ++++++++++++++ .../Settings/Models/ModelSettingsModal.svelte | 295 ------------------ 3 files changed, 271 insertions(+), 314 deletions(-) create mode 100644 src/lib/components/admin/Settings/Models/ModelDefaultsPanel.svelte delete mode 100644 src/lib/components/admin/Settings/Models/ModelSettingsModal.svelte diff --git a/src/lib/components/admin/Settings/Models.svelte b/src/lib/components/admin/Settings/Models.svelte index 7bd287e1ea..b3bc8b677a 100644 --- a/src/lib/components/admin/Settings/Models.svelte +++ b/src/lib/components/admin/Settings/Models.svelte @@ -33,8 +33,8 @@ import ModelEditor from '$lib/components/workspace/Models/ModelEditor.svelte'; import { toast } from 'svelte-sonner'; import ConfirmDialog from '$lib/components/common/ConfirmDialog.svelte'; - import ModelSettingsModal from './Models/ModelSettingsModal.svelte'; import ManageModelsModal from './Models/ManageModelsModal.svelte'; + import ModelDefaultsPanel from './Models/ModelDefaultsPanel.svelte'; import ModelMenu from '$lib/components/admin/Settings/Models/ModelMenu.svelte'; import EllipsisHorizontal from '$lib/components/icons/EllipsisHorizontal.svelte'; import EyeSlash from '$lib/components/icons/EyeSlash.svelte'; @@ -47,7 +47,6 @@ import Download from '$lib/components/icons/Download.svelte'; import EllipsisVertical from '$lib/components/icons/EllipsisVertical.svelte'; import Wrench from '$lib/components/icons/Wrench.svelte'; - import SettingsIcon from '$lib/components/icons/Settings.svelte'; import { WEBUI_API_BASE_URL } from '$lib/constants'; import { goto } from '$app/navigation'; @@ -83,11 +82,13 @@ let filteredModels = []; let selectedModelId = null; - let showConfigModal = false; let showManageModal = false; let showResetModal = false; let savingModelOrder = false; + let savingModelsSettings = false; let modelOrderDirty = false; + let modelDefaultsPanel = null; + let modelDefaultsDirty = false; let viewOption = ''; // '' = All, 'enabled', 'disabled', 'visible', 'hidden' let tags: string[] = []; @@ -322,6 +323,20 @@ savingModelOrder = false; }; + const saveModelsSettings = async () => { + savingModelsSettings = true; + + if (modelOrderDirty) { + await saveModelOrder(modelOrderList); + } + + if (modelDefaultsDirty) { + await modelDefaultsPanel?.save(); + } + + savingModelsSettings = false; + }; + const saveModelDefaults = async ( nextDefaultModelIds: string[], nextDefaultPinnedModelIds: string[], @@ -649,7 +664,6 @@ }} /> - {#if models !== null} @@ -662,18 +676,6 @@ {filteredModels.length} - - - - {#if $user?.role === 'admin'} @@ -714,6 +716,12 @@ {/if}
+ +
@@ -1105,13 +1113,15 @@ + + +
+ + {#if expanded} + {#if loading} +
{$i18n.t('Loading...')}
+ {:else} +
+
+ + + {#if showCapabilities} +
+ + + {#if availableFeatures.length > 0} +
+ +
+ {/if} + + {#if defaultCapabilities.builtin_tools} +
+ +
+ {/if} +
+ {/if} +
+ +
+ + + {#if showParameters} +
+ +
+ {/if} +
+ +
+ + + {#if showPromptSuggestions} +
+ +
+ {/if} +
+
+ {/if} + {/if} +
diff --git a/src/lib/components/admin/Settings/Models/ModelSettingsModal.svelte b/src/lib/components/admin/Settings/Models/ModelSettingsModal.svelte deleted file mode 100644 index df1caaeea0..0000000000 --- a/src/lib/components/admin/Settings/Models/ModelSettingsModal.svelte +++ /dev/null @@ -1,295 +0,0 @@ - - - -
-
-
- {$i18n.t('Settings')} -
- -
- -
-
- {#if config} -
{ - submitHandler(); - }} - > -
-
- -
- -
-
-
- - - {#if showDefaultPromptSuggestions} -
- - - {#if promptSuggestions.length > 0} -
- {$i18n.t( - 'Adjusting these settings will apply changes universally to all users.' - )} -
- {/if} -
- {/if} -
- -
- -
- - - {#if showDefaultCapabilities} -
- - - {#if Object.keys(defaultCapabilities).filter((key) => defaultCapabilities[key]).length > 0} - {@const availableFeatures = Object.entries(defaultCapabilities) - .filter( - ([key, value]) => - value && - ['web_search', 'code_interpreter', 'image_generation'].includes(key) - ) - .map(([key, value]) => key)} - - {#if availableFeatures.length > 0} -
- -
- {/if} - {/if} - - {#if defaultCapabilities.builtin_tools} -
- -
- {/if} -
- {/if} -
- -
- -
- - - {#if showDefaultParams} -
- -
- {/if} -
-
- -
- -
-
-
-
- {:else} -
- -
- {/if} -
-
-
-