webui: fix --webui-config-file settings not applied on load (#20823)
* webui: fix --webui-config-file settings not applied on load * chore: update webui build output
This commit is contained in:
Binary file not shown.
@@ -159,6 +159,74 @@ export const SYNCABLE_PARAMETERS: SyncableParameter[] = [
|
|||||||
serverKey: 'fullHeightCodeBlocks',
|
serverKey: 'fullHeightCodeBlocks',
|
||||||
type: SyncableParameterType.BOOLEAN,
|
type: SyncableParameterType.BOOLEAN,
|
||||||
canSync: true
|
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
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -287,8 +287,12 @@ class SettingsStore {
|
|||||||
*/
|
*/
|
||||||
resetParameterToServerDefault(key: string): void {
|
resetParameterToServerDefault(key: string): void {
|
||||||
const serverDefaults = this.getServerDefaults();
|
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
|
// sampling param known by server: clear it, let server decide
|
||||||
setConfigValue(this.config, key, '');
|
setConfigValue(this.config, key, '');
|
||||||
} else if (key in SETTING_CONFIG_DEFAULT) {
|
} 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();
|
this.saveConfig();
|
||||||
console.log('User overrides after sync:', Array.from(this.userOverrides));
|
console.log('User overrides after sync:', Array.from(this.userOverrides));
|
||||||
}
|
}
|
||||||
@@ -338,8 +353,14 @@ class SettingsStore {
|
|||||||
*/
|
*/
|
||||||
forceSyncWithServerDefaults(): void {
|
forceSyncWithServerDefaults(): void {
|
||||||
const propsDefaults = this.getServerDefaults();
|
const propsDefaults = this.getServerDefaults();
|
||||||
|
const webuiSettings = serverStore.webuiSettings;
|
||||||
|
|
||||||
for (const key of ParameterSyncService.getSyncableParameterKeys()) {
|
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, '');
|
setConfigValue(this.config, key, '');
|
||||||
} else if (key in SETTING_CONFIG_DEFAULT) {
|
} else if (key in SETTING_CONFIG_DEFAULT) {
|
||||||
setConfigValue(this.config, key, getConfigValue(SETTING_CONFIG_DEFAULT, key));
|
setConfigValue(this.config, key, getConfigValue(SETTING_CONFIG_DEFAULT, key));
|
||||||
|
|||||||
Reference in New Issue
Block a user