]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
webui: fix --webui-config-file settings not applied on load (#20823)
authorPascal <redacted>
Mon, 23 Mar 2026 10:25:35 +0000 (11:25 +0100)
committerGitHub <redacted>
Mon, 23 Mar 2026 10:25:35 +0000 (11:25 +0100)
* webui: fix --webui-config-file settings not applied on load

* chore: update webui build output

tools/server/public/index.html.gz
tools/server/webui/src/lib/services/parameter-sync.service.ts
tools/server/webui/src/lib/stores/settings.svelte.ts

index 11d31b0f658e399636009e6bad310f848e76f4f4..c4410bf248c0670de81b29e0cd0982bde5c69e5c 100644 (file)
Binary files a/tools/server/public/index.html.gz and b/tools/server/public/index.html.gz differ
index 1acb5ce453d6abc828baa3ea842e33792f2df72b..9a290129eb01e0c59052c41cd963b8be495f3629 100644 (file)
@@ -159,6 +159,74 @@ export const SYNCABLE_PARAMETERS: SyncableParameter[] = [
                serverKey: 'fullHeightCodeBlocks',
                type: SyncableParameterType.BOOLEAN,
                canSync: true
+       },
+       {
+               key: 'systemMessage',
+               serverKey: 'systemMessage',
+               type: SyncableParameterType.STRING,
+               canSync: true
+       },
+       {
+               key: 'showSystemMessage',
+               serverKey: 'showSystemMessage',
+               type: SyncableParameterType.BOOLEAN,
+               canSync: true
+       },
+       { key: 'theme', serverKey: 'theme', type: SyncableParameterType.STRING, canSync: true },
+       {
+               key: 'copyTextAttachmentsAsPlainText',
+               serverKey: 'copyTextAttachmentsAsPlainText',
+               type: SyncableParameterType.BOOLEAN,
+               canSync: true
+       },
+       {
+               key: 'showRawOutputSwitch',
+               serverKey: 'showRawOutputSwitch',
+               type: SyncableParameterType.BOOLEAN,
+               canSync: true
+       },
+       {
+               key: 'alwaysShowSidebarOnDesktop',
+               serverKey: 'alwaysShowSidebarOnDesktop',
+               type: SyncableParameterType.BOOLEAN,
+               canSync: true
+       },
+       {
+               key: 'autoShowSidebarOnNewChat',
+               serverKey: 'autoShowSidebarOnNewChat',
+               type: SyncableParameterType.BOOLEAN,
+               canSync: true
+       },
+       {
+               key: 'showRawModelNames',
+               serverKey: 'showRawModelNames',
+               type: SyncableParameterType.BOOLEAN,
+               canSync: true
+       },
+       { key: 'mcpServers', serverKey: 'mcpServers', type: SyncableParameterType.STRING, canSync: true },
+       {
+               key: 'agenticMaxTurns',
+               serverKey: 'agenticMaxTurns',
+               type: SyncableParameterType.NUMBER,
+               canSync: true
+       },
+       {
+               key: 'agenticMaxToolPreviewLines',
+               serverKey: 'agenticMaxToolPreviewLines',
+               type: SyncableParameterType.NUMBER,
+               canSync: true
+       },
+       {
+               key: 'showToolCallInProgress',
+               serverKey: 'showToolCallInProgress',
+               type: SyncableParameterType.BOOLEAN,
+               canSync: true
+       },
+       {
+               key: 'alwaysShowAgenticTurns',
+               serverKey: 'alwaysShowAgenticTurns',
+               type: SyncableParameterType.BOOLEAN,
+               canSync: true
        }
 ];
 
index 2fbff8312f4d601dafe7d1bd4a305eab79ae68df..9d5e77adf2c084a1600e2c144cb5cb848555e0f4 100644 (file)
@@ -287,8 +287,12 @@ class SettingsStore {
         */
        resetParameterToServerDefault(key: string): void {
                const serverDefaults = this.getServerDefaults();
+               const webuiSettings = serverStore.webuiSettings;
 
-               if (serverDefaults[key] !== undefined) {
+               if (webuiSettings && key in webuiSettings) {
+                       // UI setting from admin config: write actual value
+                       setConfigValue(this.config, key, webuiSettings[key]);
+               } else if (serverDefaults[key] !== undefined) {
                        // sampling param known by server: clear it, let server decide
                        setConfigValue(this.config, key, '');
                } else if (key in SETTING_CONFIG_DEFAULT) {
@@ -327,6 +331,17 @@ class SettingsStore {
                        }
                }
 
+               // webui settings need actual values in config (no placeholder mechanism),
+               // so write them for non-overridden keys
+               const webuiSettings = serverStore.webuiSettings;
+               if (webuiSettings) {
+                       for (const [key, value] of Object.entries(webuiSettings)) {
+                               if (!this.userOverrides.has(key) && value !== undefined) {
+                                       setConfigValue(this.config, key, value);
+                               }
+                       }
+               }
+
                this.saveConfig();
                console.log('User overrides after sync:', Array.from(this.userOverrides));
        }
@@ -338,8 +353,14 @@ class SettingsStore {
         */
        forceSyncWithServerDefaults(): void {
                const propsDefaults = this.getServerDefaults();
+               const webuiSettings = serverStore.webuiSettings;
+
                for (const key of ParameterSyncService.getSyncableParameterKeys()) {
-                       if (propsDefaults[key] !== undefined) {
+                       if (webuiSettings && key in webuiSettings) {
+                               // UI setting from admin config: write actual value
+                               setConfigValue(this.config, key, webuiSettings[key]);
+                       } else if (propsDefaults[key] !== undefined) {
+                               // sampling param: clear it, let server decide
                                setConfigValue(this.config, key, '');
                        } else if (key in SETTING_CONFIG_DEFAULT) {
                                setConfigValue(this.config, key, getConfigValue(SETTING_CONFIG_DEFAULT, key));