From f9c911d0252994f51a656037b60786245727df5b Mon Sep 17 00:00:00 2001 From: Aleksander Grygier Date: Tue, 25 Nov 2025 10:55:08 +0100 Subject: [PATCH] refactor: Remove redundant settings --- .../chat/ChatMessages/ChatMessageAssistant.svelte | 4 +--- .../app/chat/ChatSettings/ChatSettings.svelte | 10 ---------- .../webui/src/lib/constants/settings-config.ts | 5 ----- tools/server/webui/src/lib/services/chat.ts | 7 ++++--- tools/server/webui/src/lib/stores/server.svelte.ts | 6 ------ .../webui/src/stories/ChatSidebar.stories.svelte | 13 +++++++------ 6 files changed, 12 insertions(+), 33 deletions(-) diff --git a/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessageAssistant.svelte b/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessageAssistant.svelte index 46f0f0084b..82100909ac 100644 --- a/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessageAssistant.svelte +++ b/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessageAssistant.svelte @@ -93,8 +93,6 @@ let currentConfig = $derived(config()); let isRouter = $derived(isRouterMode()); let displayedModel = $derived((): string | null => { - if (!currentConfig.showModelInfo) return null; - // Only show model from streaming data, no fallbacks to server props if (message.model) { return message.model; @@ -254,7 +252,7 @@
{#if displayedModel()} - {#if isRouter && currentConfig.modelSelectorEnabled} + {#if isRouter} = askForTitleConfirmation: false, pasteLongTextToFileLen: 2500, pdfAsImage: false, - showModelInfo: false, disableAutoScroll: false, renderUserContentAsMarkdown: false, - modelSelectorEnabled: false, autoMicOnEmpty: false, // make sure these default values are in sync with `common.h` samplers: 'top_k;typ_p;top_p;min_p;temperature', @@ -94,12 +92,9 @@ export const SETTING_CONFIG_INFO: Record = { askForTitleConfirmation: 'Ask for confirmation before automatically changing conversation title when editing the first message.', pdfAsImage: 'Parse PDF as image instead of text (requires vision-capable model).', - showModelInfo: 'Display the model name used to generate each message below the message content.', disableAutoScroll: 'Disable automatic scrolling while messages stream so you can control the viewport position manually.', renderUserContentAsMarkdown: 'Render user messages using markdown formatting in the chat.', - modelSelectorEnabled: - 'Enable the model selector in the chat input to choose the inference model. Sends the associated model field in API requests.', autoMicOnEmpty: 'Automatically show microphone button instead of send button when textarea is empty for models with audio modality support.', pyInterpreterEnabled: diff --git a/tools/server/webui/src/lib/services/chat.ts b/tools/server/webui/src/lib/services/chat.ts index 90b99cf66b..bdef0038c8 100644 --- a/tools/server/webui/src/lib/services/chat.ts +++ b/tools/server/webui/src/lib/services/chat.ts @@ -1,5 +1,6 @@ import { config } from '$lib/stores/settings.svelte'; import { selectedModelName } from '$lib/stores/models.svelte'; +import { isRouterMode } from '$lib/stores/server.svelte'; import { slotsService } from './slots'; import type { ApiChatCompletionRequest, @@ -149,10 +150,10 @@ export class ChatService { stream }; - const modelSelectorEnabled = Boolean(currentConfig.modelSelectorEnabled); - const activeModel = modelSelectorEnabled ? selectedModelName() : null; + const isRouter = isRouterMode(); + const activeModel = isRouter ? selectedModelName() : null; - if (modelSelectorEnabled && activeModel) { + if (isRouter && activeModel) { requestBody.model = activeModel; } diff --git a/tools/server/webui/src/lib/stores/server.svelte.ts b/tools/server/webui/src/lib/stores/server.svelte.ts index bd3a191094..73b29fa41c 100644 --- a/tools/server/webui/src/lib/stores/server.svelte.ts +++ b/tools/server/webui/src/lib/stores/server.svelte.ts @@ -3,7 +3,6 @@ import { SERVER_PROPS_LOCALSTORAGE_KEY } from '$lib/constants/localstorage-keys' import { PropsService } from '$lib/services/props'; import { config } from '$lib/stores/settings.svelte'; import { ServerMode, ModelModality } from '$lib/enums'; -import { updateConfig } from '$lib/stores/settings.svelte'; /** * ServerStore - Server state management and capability detection @@ -251,11 +250,6 @@ class ServerStore { if (props.model_path === 'none') { this._serverMode = ServerMode.ROUTER; console.info('Server running in ROUTER mode (multi-model management)'); - - // Auto-enable model selector in router mode - if (browser) { - updateConfig('modelSelectorEnabled', true); - } } else { this._serverMode = ServerMode.MODEL; console.info('Server running in MODEL mode (single model)'); diff --git a/tools/server/webui/src/stories/ChatSidebar.stories.svelte b/tools/server/webui/src/stories/ChatSidebar.stories.svelte index b74b246b1d..8fd19250fe 100644 --- a/tools/server/webui/src/stories/ChatSidebar.stories.svelte +++ b/tools/server/webui/src/stories/ChatSidebar.stories.svelte @@ -3,6 +3,7 @@ import ChatSidebar from '$lib/components/app/chat/ChatSidebar/ChatSidebar.svelte'; import { waitFor } from 'storybook/test'; import { screen } from 'storybook/test'; + import type { DatabaseConversation } from '$lib/types/database'; const { Story } = defineMeta({ title: 'Components/ChatSidebar', @@ -51,10 +52,10 @@ asChild name="Default" play={async () => { - const { chatStore } = await import('$lib/stores/chat.svelte'); + const { conversationsStore } = await import('$lib/stores/conversations.svelte'); waitFor(() => setTimeout(() => { - chatStore.conversations = mockConversations; + conversationsStore.conversations = mockConversations; }, 0)); }} > @@ -67,10 +68,10 @@ asChild name="SearchActive" play={async ({ userEvent }) => { - const { chatStore } = await import('$lib/stores/chat.svelte'); + const { conversationsStore } = await import('$lib/stores/conversations.svelte'); waitFor(() => setTimeout(() => { - chatStore.conversations = mockConversations; + conversationsStore.conversations = mockConversations; }, 0)); const searchTrigger = screen.getByText('Search conversations'); @@ -87,8 +88,8 @@ name="Empty" play={async () => { // Mock empty conversations store - const { chatStore } = await import('$lib/stores/chat.svelte'); - chatStore.conversations = []; + const { conversationsStore } = await import('$lib/stores/conversations.svelte'); + conversationsStore.conversations = []; }} >