Commit 4f92965a7 for llama.cpp

commit 4f92965a7bfa9e8eb6519908ff962e23c2cb7b93
Author: Simon Sudarushkin <68971770+simonether@users.noreply.github.com>
Date:   Thu Oct 8 18:08:22 2026 +0500

    ui: apply ui_settings on first visit in router mode (#29668)

diff --git a/tools/ui/src/lib/stores/settings/index.svelte.ts b/tools/ui/src/lib/stores/settings/index.svelte.ts
index a583a1423..90e2ea2c3 100644
--- a/tools/ui/src/lib/stores/settings/index.svelte.ts
+++ b/tools/ui/src/lib/stores/settings/index.svelte.ts
@@ -283,10 +283,12 @@ class SettingsStore {
 	 */
 	syncWithServerDefaults(): void {
 		const propsDefaults = this.getServerDefaults();
+		const uiSettings = serverStore.uiSettings;

-		if (Object.keys(propsDefaults).length === 0) return;
+		// a router main instance reports no sampling defaults, but its
+		// ui_settings still need the first visit pass below
+		if (Object.keys(propsDefaults).length === 0 && !(uiSettings && this.isFirstVisit)) return;

-		const uiSettings = serverStore.uiSettings;
 		const uiSettingsKeys = new Set(uiSettings ? Object.keys(uiSettings) : []);

 		for (const [key, propsValue] of Object.entries(propsDefaults)) {
diff --git a/tools/ui/tests/client/ui-settings-sync.svelte.test.ts b/tools/ui/tests/client/ui-settings-sync.svelte.test.ts
index ca9268e2e..46144499e 100644
--- a/tools/ui/tests/client/ui-settings-sync.svelte.test.ts
+++ b/tools/ui/tests/client/ui-settings-sync.svelte.test.ts
@@ -3,12 +3,15 @@ import { serverStore } from '$lib/stores/server.svelte';
 import { settingsStore } from '$lib/stores/settings/index.svelte';
 import { beforeEach, describe, expect, it } from 'vitest';

-function mockProps(uiSettings: Record<string, string | number | boolean>) {
+function mockProps(
+	uiSettings: Record<string, string | number | boolean>,
+	params: Record<string, number> = { temperature: 0.8 }
+) {
 	Object.defineProperty(serverStore, 'props', {
 		configurable: true,
 		get: () =>
 			({
-				default_generation_settings: { params: { temperature: 0.8 } },
+				default_generation_settings: { params },
 				ui_settings: uiSettings
 			}) as unknown as typeof serverStore.props
 	});
@@ -28,6 +31,16 @@ describe('server ui_settings application semantics', () => {
 		expect(settingsStore.config.theme).toBe('dark');
 	});

+	it('applies the admin defaults when /props carries no sampling defaults', () => {
+		settingsStore.initialize();
+		// router mode: the main instance answers /props with empty params
+		mockProps({ theme: 'dark' }, {});
+
+		settingsStore.syncWithServerDefaults();
+
+		expect(settingsStore.config.theme).toBe('dark');
+	});
+
 	it('never reapplies on later loads: the user config diverges freely', () => {
 		settingsStore.initialize();
 		settingsStore.updateConfig('theme', 'light');