From 07aabcbb7ae4560a8b6cc0a8d970406e88baf913 Mon Sep 17 00:00:00 2001 From: Aleksander Grygier Date: Thu, 24 Sep 2026 06:42:21 +0200 Subject: [PATCH] ui : add the model grouping setting Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash --- .../src/lib/constants/settings-keys.constants.ts | 2 ++ tools/ui/src/lib/constants/settings.constants.ts | 15 ++++++++++++++- tools/ui/src/lib/enums/settings.enums.ts | 8 ++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/tools/ui/src/lib/constants/settings-keys.constants.ts b/tools/ui/src/lib/constants/settings-keys.constants.ts index 4d1b494dcd..955445d12e 100644 --- a/tools/ui/src/lib/constants/settings-keys.constants.ts +++ b/tools/ui/src/lib/constants/settings-keys.constants.ts @@ -41,6 +41,8 @@ export const SETTINGS_KEYS = { MCP_SERVERS: 'mcpServers', MENTION_SEARCH_MAX_DEPTH: 'mentionSearchMaxDepth', MIN_P: 'min_p', + // Display + MODEL_GROUPING: 'modelGrouping', PASTE_LONG_TEXT_TO_FILE_LEN: 'pasteLongTextToFileLen', PDF_AS_IMAGE: 'pdfAsImage', // Performance diff --git a/tools/ui/src/lib/constants/settings.constants.ts b/tools/ui/src/lib/constants/settings.constants.ts index cd816e7f28..a32a6d20db 100644 --- a/tools/ui/src/lib/constants/settings.constants.ts +++ b/tools/ui/src/lib/constants/settings.constants.ts @@ -4,9 +4,11 @@ import { SETTINGS_KEYS } from './settings-keys.constants'; import { TITLE_GENERATION } from './title-generation.constants'; import { FILE_GLOB_SEARCH_PICKERS } from './working-directory.constants'; import { + Boxes, Code, Database, Funnel, + Layers, ListRestart, Monitor, Moon, @@ -16,7 +18,7 @@ import { Sun } from '@lucide/svelte'; import { SyncableParameterType } from '$lib/enums'; -import { SettingsFieldType } from '$lib/enums/settings.enums'; +import { ModelGroupingMode, SettingsFieldType } from '$lib/enums/settings.enums'; import { ColorMode } from '$lib/enums/ui.enums'; import type { SettingsConfigValue, @@ -321,6 +323,17 @@ export const SETTINGS_REGISTRY: SettingsSectionEntry[] = [ label: 'Show full path in mentions', type: SettingsFieldType.CHECKBOX }, + { + defaultValue: ModelGroupingMode.PROVIDER, + help: 'How the models manager groups its sections. One section per provider keeps every backend separate. By capability merges them into a llama-compat block, whose models can load and unload, and an OAI-compat block, which is chat only.', + key: SETTINGS_KEYS.MODEL_GROUPING, + label: 'Model grouping', + options: [ + { icon: Layers, label: 'One section per provider', value: ModelGroupingMode.PROVIDER }, + { icon: Boxes, label: 'By capability', value: ModelGroupingMode.COMPAT } + ], + type: SettingsFieldType.SELECT + }, { defaultValue: true, help: 'Group models into families (e.g. "Qwen") in the model picker and the models manager. Turn it off to list every model on its own.', diff --git a/tools/ui/src/lib/enums/settings.enums.ts b/tools/ui/src/lib/enums/settings.enums.ts index 9911670b37..14d9fbe174 100644 --- a/tools/ui/src/lib/enums/settings.enums.ts +++ b/tools/ui/src/lib/enums/settings.enums.ts @@ -18,6 +18,14 @@ export enum SyncableParameterType { /** * Settings field type - defines the input type for settings fields */ +/** How the models manager builds its sections below Loaded and Favorites. */ +export enum ModelGroupingMode { + /** One llama-compat block and one OAI-compat block, families inside each. */ + COMPAT = 'compat', + /** One section per provider, families inside each. */ + PROVIDER = 'provider' +} + export enum SettingsFieldType { CHECKBOX = 'checkbox', INPUT = 'input',