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',