diff --git a/tools/server/webui/src/lib/components/app/misc/SelectorModel.svelte b/tools/server/webui/src/lib/components/app/misc/SelectorModel.svelte index 22d487c9e5..2aebb40d9c 100644 --- a/tools/server/webui/src/lib/components/app/misc/SelectorModel.svelte +++ b/tools/server/webui/src/lib/components/app/misc/SelectorModel.svelte @@ -20,13 +20,15 @@ currentModel?: string | null; onModelChange?: (modelId: string, modelName: string) => void; disabled?: boolean; + forceForegroundText?: boolean; } let { class: className = '', currentModel = null, onModelChange, - disabled = false + disabled = false, + forceForegroundText = false }: Props = $props(); let options = $derived(modelOptions()); @@ -36,6 +38,22 @@ let isRouter = $derived(isRouterMode()); let serverModel = $derived(serverStore.modelName); + let isHighlightedCurrentModelActive = $derived( + !isRouter || !currentModel + ? false + : (() => { + const currentOption = options.find((option) => option.model === currentModel); + + return currentOption ? currentOption.id === activeId : false; + })() + ); + + let isCurrentModelInCache = $derived(() => { + if (!isRouter || !currentModel) return true; + + return options.some((option) => option.model === currentModel); + }); + let isOpen = $state(false); let showModelDialog = $state(false); let container: HTMLDivElement | null = null; @@ -221,7 +239,6 @@ function getDisplayOption(): ModelOption | undefined { if (!isRouter) { - // Single model mode: create fake option from server model if (serverModel) { return { id: 'current', @@ -230,16 +247,27 @@ capabilities: [] // Empty array for single model mode }; } + return undefined; } - // Router mode: use existing logic if (currentModel) { + if (!isCurrentModelInCache()) { + return { + id: 'not-in-cache', + model: currentModel, + name: currentModel.split('/').pop() || currentModel, + capabilities: [] + }; + } + return options.find((option) => option.model === currentModel); } + if (activeId) { return options.find((option) => option.id === activeId); } + return options[0]; } @@ -262,7 +290,14 @@ +
+ {/if} {#each options as option (option.id)}