From 910812ce8a3aa68f0b4ded49b544c400468670d6 Mon Sep 17 00:00:00 2001 From: daewoongoh Date: Thu, 3 Sep 2026 14:29:28 +0900 Subject: [PATCH 1/4] feat: add model selector UI to chat Add a model selector to the chat input area, letting users pick a model directly from chat instead of going through settings. Adds i18n translations for the selector across all supported locales. Co-Authored-By: JunyongParkDev Signed-off-by: daewoongoh Signed-off-by: JunyongParkDev --- .../src/components/chat/ChatTextArea.tsx | 8 + .../src/components/chat/ModelSelector.tsx | 246 ++++++++++++++++++ .../chat/__tests__/ModelSelector.spec.tsx | 168 ++++++++++++ webview-ui/src/i18n/locales/ca/chat.json | 2 + webview-ui/src/i18n/locales/de/chat.json | 2 + webview-ui/src/i18n/locales/en/chat.json | 2 + webview-ui/src/i18n/locales/es/chat.json | 2 + webview-ui/src/i18n/locales/fr/chat.json | 2 + webview-ui/src/i18n/locales/hi/chat.json | 2 + webview-ui/src/i18n/locales/id/chat.json | 2 + webview-ui/src/i18n/locales/it/chat.json | 2 + webview-ui/src/i18n/locales/ja/chat.json | 2 + webview-ui/src/i18n/locales/ko/chat.json | 2 + webview-ui/src/i18n/locales/nl/chat.json | 2 + webview-ui/src/i18n/locales/pl/chat.json | 2 + webview-ui/src/i18n/locales/pt-BR/chat.json | 2 + webview-ui/src/i18n/locales/ru/chat.json | 2 + webview-ui/src/i18n/locales/tr/chat.json | 2 + webview-ui/src/i18n/locales/vi/chat.json | 2 + webview-ui/src/i18n/locales/zh-CN/chat.json | 2 + webview-ui/src/i18n/locales/zh-TW/chat.json | 2 + 21 files changed, 458 insertions(+) create mode 100644 webview-ui/src/components/chat/ModelSelector.tsx create mode 100644 webview-ui/src/components/chat/__tests__/ModelSelector.spec.tsx diff --git a/webview-ui/src/components/chat/ChatTextArea.tsx b/webview-ui/src/components/chat/ChatTextArea.tsx index 3721021637..a74ecab246 100644 --- a/webview-ui/src/components/chat/ChatTextArea.tsx +++ b/webview-ui/src/components/chat/ChatTextArea.tsx @@ -27,6 +27,7 @@ import { StandardTooltip } from "@src/components/ui" import Thumbnails from "../common/Thumbnails" import { ModeSelector } from "./ModeSelector" import { ApiConfigSelector } from "./ApiConfigSelector" +import { ModelSelector } from "./ModelSelector" import { AutoApproveDropdown } from "./AutoApproveDropdown" import { MAX_IMAGES_PER_MESSAGE } from "./constants" import ContextMenu from "./ContextMenu" @@ -87,6 +88,7 @@ export const ChatTextArea = forwardRef( const { filePaths, openedTabs, + apiConfiguration, currentApiConfigName, listApiConfigMeta, customModes, @@ -1311,6 +1313,12 @@ export const ChatTextArea = forwardRef( lockApiConfigAcrossModes={!!lockApiConfigAcrossModes} onToggleLockApiConfig={handleToggleLockApiConfig} /> +
diff --git a/webview-ui/src/components/chat/ModelSelector.tsx b/webview-ui/src/components/chat/ModelSelector.tsx new file mode 100644 index 0000000000..0909bc79d5 --- /dev/null +++ b/webview-ui/src/components/chat/ModelSelector.tsx @@ -0,0 +1,246 @@ +import { useState, useMemo, useCallback } from "react" +import { Fzf } from "fzf" + +import { + type ModelInfo, + type ModelRecord, + type ProviderSettings, + isDynamicProvider, + isRetiredProvider, + providerIdentifiers, +} from "@roo-code/types" + +import { cn } from "@/lib/utils" +import { enabledSelectorTriggerClassName, selectorTriggerClassName } from "@/components/ui/selectorTriggerStyles" +import { useRooPortal } from "@/components/ui/hooks/useRooPortal" +import { useRouterModels } from "@/components/ui/hooks/useRouterModels" +import { useSelectedModel } from "@/components/ui/hooks/useSelectedModel" +import { Popover, PopoverContent, PopoverTrigger, StandardTooltip } from "@/components/ui" +import { useAppTranslation } from "@/i18n/TranslationContext" +import { vscode } from "@/utils/vscode" + +import { + getProviderModelConfig, + getStaticModelsForProvider, + isStaticModelProvider, +} from "../settings/utils/providerModelConfig" + +const SEARCH_THRESHOLD = 6 + +interface ModelSelectorProps { + apiConfiguration: ProviderSettings + currentApiConfigName?: string + disabled?: boolean + title: string + triggerClassName?: string +} + +export const ModelSelector = ({ + apiConfiguration, + currentApiConfigName, + disabled = false, + title, + triggerClassName = "", +}: ModelSelectorProps) => { + const { t } = useAppTranslation() + const [open, setOpen] = useState(false) + const [searchValue, setSearchValue] = useState("") + const portalContainer = useRooPortal("roo-portal") + + const rawProvider = apiConfiguration?.apiProvider || providerIdentifiers.openrouter + const retired = isRetiredProvider(rawProvider) + const provider = retired ? providerIdentifiers.openrouter : rawProvider + const dynamicProvider = !retired && isDynamicProvider(provider) ? provider : undefined + const modelConfig = retired ? undefined : getProviderModelConfig(provider, apiConfiguration) + + const routerModels = useRouterModels({ provider: dynamicProvider, enabled: !!dynamicProvider }) + const { id: selectedModelId, info: selectedModelInfo, isLoading } = useSelectedModel(apiConfiguration) + + const models: ModelRecord = useMemo(() => { + if (!modelConfig) { + return {} + } + + if (dynamicProvider) { + return routerModels.data?.[dynamicProvider] ?? {} + } + + if (isStaticModelProvider(provider)) { + const staticModels = getStaticModelsForProvider(provider, undefined, apiConfiguration) + const { "custom-arn": _customArn, ...rest } = staticModels + return rest + } + + return {} + }, [modelConfig, dynamicProvider, routerModels.data, provider, apiConfiguration]) + + const modelIds = useMemo(() => Object.keys(models), [models]) + + const isSupported = !!modelConfig && modelIds.length > 0 + const isDisabled = disabled || !isSupported + + // Label shown for a model — prefers `ModelInfo.displayName` when present, falling back to + // the raw model id (mirrors ModelPicker.tsx's trigger/list label logic). + const getModelLabel = useCallback((modelId: string, info?: ModelInfo) => info?.displayName ?? modelId, []) + + const selectedModelLabel = getModelLabel(selectedModelId, selectedModelInfo) + + // Create searchable items for fuzzy search. + const searchableItems = useMemo( + () => + modelIds.map((id) => { + const label = getModelLabel(id, models[id]) + return { original: id, searchStr: label === id ? id : `${label} ${id}` } + }), + [modelIds, models, getModelLabel], + ) + + const fzfInstance = useMemo( + () => new Fzf(searchableItems, { selector: (item) => item.searchStr }), + [searchableItems], + ) + + const filteredModelIds = useMemo(() => { + if (!searchValue) { + return modelIds + } + + return fzfInstance.find(searchValue).map((result) => result.item.original) + }, [modelIds, searchValue, fzfInstance]) + + const handleEditClick = useCallback(() => { + vscode.postMessage({ type: "switchTab", tab: "settings" }) + setOpen(false) + }, []) + + const handleSelect = useCallback( + (modelId: string) => { + if (!modelConfig) { + return + } + + const updated: ProviderSettings = { + ...apiConfiguration, + reasoningEffort: undefined, + modelMaxTokens: undefined, + modelMaxThinkingTokens: undefined, + } + ;(updated as Record)[modelConfig.field] = modelId + + vscode.postMessage({ + type: "upsertApiConfiguration", + text: currentApiConfigName, + apiConfiguration: updated, + }) + + setOpen(false) + setSearchValue("") + }, + [apiConfiguration, modelConfig, currentApiConfigName], + ) + + const renderModelItem = useCallback( + (modelId: string) => { + const isCurrentModel = modelId === selectedModelId + const label = getModelLabel(modelId, models[modelId]) + + return ( +
handleSelect(modelId)} + className={cn( + "px-3 py-1.5 text-sm cursor-pointer flex items-center group", + "hover:bg-vscode-list-hoverBackground", + isCurrentModel && + "bg-vscode-list-activeSelectionBackground text-vscode-list-activeSelectionForeground", + )}> +
{label}
+ {isCurrentModel && ( +
+ +
+ )} +
+ ) + }, + [selectedModelId, models, getModelLabel, handleSelect], + ) + + if (!isSupported) { + return ( + + + + ) + } + + return ( + + + + {isLoading ? t("common:ui.loading") : selectedModelLabel} + + + +
+ {modelIds.length > SEARCH_THRESHOLD && ( +
+ setSearchValue(e.target.value)} + placeholder={t("common:ui.search_placeholder")} + className="w-full h-8 px-2 py-1 text-xs bg-vscode-input-background text-vscode-input-foreground border border-vscode-input-border rounded focus:outline-0" + autoFocus + /> + {searchValue.length > 0 && ( +
+ setSearchValue("")} + /> +
+ )} +
+ )} + + {filteredModelIds.length === 0 ? ( +
{t("common:ui.no_results")}
+ ) : ( +
+ {filteredModelIds.map(renderModelItem)} +
+ )} + +
+

+ {t("chat:selectModel")} +

+
+
+
+
+ ) +} diff --git a/webview-ui/src/components/chat/__tests__/ModelSelector.spec.tsx b/webview-ui/src/components/chat/__tests__/ModelSelector.spec.tsx new file mode 100644 index 0000000000..a7f2809c69 --- /dev/null +++ b/webview-ui/src/components/chat/__tests__/ModelSelector.spec.tsx @@ -0,0 +1,168 @@ +import { providerIdentifiers } from "@roo-code/types" + +import { render, screen, fireEvent } from "@/utils/test-utils" +import { vscode } from "@/utils/vscode" + +import { ModelSelector } from "../ModelSelector" + +vi.mock("@/utils/vscode", () => ({ + vscode: { + postMessage: vi.fn(), + }, +})) + +vi.mock("@/i18n/TranslationContext", () => ({ + useAppTranslation: () => ({ + t: (key: string) => key, + }), +})) + +vi.mock("@/components/ui/hooks/useRooPortal", () => ({ + useRooPortal: () => document.body, +})) + +const { useRouterModelsMock, useSelectedModelMock } = vi.hoisted(() => ({ + useRouterModelsMock: vi.fn(() => ({ data: {} as Record, isLoading: false })), + useSelectedModelMock: vi.fn((): { id: string; info?: { displayName?: string }; isLoading: boolean } => ({ + id: "claude-sonnet-4-5", + isLoading: false, + })), +})) + +vi.mock("@/components/ui/hooks/useRouterModels", () => ({ + useRouterModels: useRouterModelsMock, +})) + +vi.mock("@/components/ui/hooks/useSelectedModel", () => ({ + useSelectedModel: useSelectedModelMock, +})) + +vi.mock("@/components/ui", () => ({ + Popover: ({ children, open }: any) => ( +
+ {children} +
+ ), + PopoverTrigger: ({ children, disabled, ...props }: any) => ( + + ), + PopoverContent: ({ children }: any) =>
{children}
, + StandardTooltip: ({ children }: any) => <>{children}, +})) + +describe("ModelSelector", () => { + beforeEach(() => { + vi.clearAllMocks() + useRouterModelsMock.mockReturnValue({ data: {}, isLoading: false }) + useSelectedModelMock.mockReturnValue({ id: "claude-sonnet-4-5", isLoading: false }) + }) + + it("renders the static model list for a static provider and sends upsertApiConfiguration on select", () => { + render( + , + ) + + expect(screen.getByTestId("model-selector-trigger")).not.toBeDisabled() + + const anotherModel = screen.getAllByText(/claude-3-5-haiku/i)[0] + fireEvent.click(anotherModel) + + expect(vscode.postMessage).toHaveBeenCalledWith( + expect.objectContaining({ + type: "upsertApiConfiguration", + text: "default", + apiConfiguration: expect.objectContaining({ apiModelId: expect.stringContaining("claude-3-5-haiku") }), + }), + ) + }) + + it("prefers a model's displayName over its raw id when present", () => { + useRouterModelsMock.mockReturnValue({ + data: { + openrouter: { + "openrouter/model-a": { displayName: "Model A (friendly)" }, + "openrouter/model-b": {}, + }, + }, + isLoading: false, + }) + useSelectedModelMock.mockReturnValue({ + id: "openrouter/model-a", + info: { displayName: "Model A (friendly)" }, + isLoading: false, + }) + + render( + , + ) + + // Trigger shows the displayName, not the raw id. + expect(screen.getByTestId("model-selector-trigger")).toHaveTextContent("Model A (friendly)") + expect(screen.queryByText("openrouter/model-a")).not.toBeInTheDocument() + + // List item for the model without a displayName still falls back to its raw id. + expect(screen.getByText("openrouter/model-b")).toBeInTheDocument() + }) + + it("renders the dynamic router model list for a dynamic provider", () => { + useRouterModelsMock.mockReturnValue({ + data: { openrouter: { "openrouter/model-a": {}, "openrouter/model-b": {} } }, + isLoading: false, + }) + useSelectedModelMock.mockReturnValue({ id: "openrouter/model-a", isLoading: false }) + + render( + , + ) + + expect(screen.getByText("openrouter/model-b")).toBeInTheDocument() + + fireEvent.click(screen.getByText("openrouter/model-b")) + + expect(vscode.postMessage).toHaveBeenCalledWith( + expect.objectContaining({ + type: "upsertApiConfiguration", + apiConfiguration: expect.objectContaining({ openRouterModelId: "openrouter/model-b" }), + }), + ) + }) + + it("disables the selector for a provider outside the supported scope", () => { + useSelectedModelMock.mockReturnValue({ id: "", isLoading: false }) + + render( + , + ) + + expect(screen.queryByTestId("model-selector-trigger")).not.toBeInTheDocument() + expect(screen.getByTestId("model-selector-disabled")).toBeInTheDocument() + + fireEvent.click(screen.getByTestId("model-selector-disabled")) + + expect(vscode.postMessage).toHaveBeenCalledWith(expect.objectContaining({ type: "switchTab", tab: "settings" })) + }) +}) diff --git a/webview-ui/src/i18n/locales/ca/chat.json b/webview-ui/src/i18n/locales/ca/chat.json index 87cec9f61f..e5447e1d21 100644 --- a/webview-ui/src/i18n/locales/ca/chat.json +++ b/webview-ui/src/i18n/locales/ca/chat.json @@ -113,6 +113,8 @@ }, "selectMode": "Selecciona el mode d'interacció", "selectApiConfig": "Seleccioneu la configuració de l'API", + "selectModel": "Seleccioneu el model", + "selectModelUnsupported": "La selecció de model no està disponible per a aquest proveïdor aquí. Feu clic per obrir la configuració.", "lockApiConfigAcrossModes": "Bloqueja la configuració de l'API a tots els modes en aquest espai de treball", "unlockApiConfigAcrossModes": "La configuració de l'API està bloquejada a tots els modes en aquest espai de treball (fes clic per desbloquejar)", "enhancePrompt": "Millora la sol·licitud amb context addicional", diff --git a/webview-ui/src/i18n/locales/de/chat.json b/webview-ui/src/i18n/locales/de/chat.json index b9591fe3aa..2e5705be01 100644 --- a/webview-ui/src/i18n/locales/de/chat.json +++ b/webview-ui/src/i18n/locales/de/chat.json @@ -113,6 +113,8 @@ }, "selectMode": "Interaktionsmodus auswählen", "selectApiConfig": "API-Konfiguration auswählen", + "selectModel": "Modell auswählen", + "selectModelUnsupported": "Die Modellauswahl ist für diesen Anbieter hier nicht verfügbar. Klicken Sie, um die Einstellungen zu öffnen.", "lockApiConfigAcrossModes": "API-Konfiguration für alle Modi in diesem Arbeitsbereich sperren", "unlockApiConfigAcrossModes": "API-Konfiguration ist für alle Modi in diesem Arbeitsbereich gesperrt (klicke zum Entsperren)", "enhancePrompt": "Prompt mit zusätzlichem Kontext verbessern", diff --git a/webview-ui/src/i18n/locales/en/chat.json b/webview-ui/src/i18n/locales/en/chat.json index fe241f6145..cb9de2f009 100644 --- a/webview-ui/src/i18n/locales/en/chat.json +++ b/webview-ui/src/i18n/locales/en/chat.json @@ -140,6 +140,8 @@ }, "selectMode": "Select mode for interaction", "selectApiConfig": "Select API configuration", + "selectModel": "Select model", + "selectModelUnsupported": "Model selection isn't available for this provider here. Click to open settings.", "lockApiConfigAcrossModes": "Lock API configuration across all modes in this workspace", "unlockApiConfigAcrossModes": "API configuration is locked across all modes in this workspace (click to unlock)", "enhancePrompt": "Enhance prompt with additional context", diff --git a/webview-ui/src/i18n/locales/es/chat.json b/webview-ui/src/i18n/locales/es/chat.json index 1cbeab08e4..cafbf7732d 100644 --- a/webview-ui/src/i18n/locales/es/chat.json +++ b/webview-ui/src/i18n/locales/es/chat.json @@ -113,6 +113,8 @@ }, "selectMode": "Seleccionar modo de interacción", "selectApiConfig": "Seleccionar configuración de API", + "selectModel": "Seleccionar modelo", + "selectModelUnsupported": "La selección de modelo no está disponible para este proveedor aquí. Haga clic para abrir la configuración.", "lockApiConfigAcrossModes": "Bloquear la configuración de API en todos los modos de este espacio de trabajo", "unlockApiConfigAcrossModes": "La configuración de API está bloqueada en todos los modos de este espacio de trabajo (clic para desbloquear)", "enhancePrompt": "Mejorar el mensaje con contexto adicional", diff --git a/webview-ui/src/i18n/locales/fr/chat.json b/webview-ui/src/i18n/locales/fr/chat.json index 7ab8213cd5..c70b2a1fc4 100644 --- a/webview-ui/src/i18n/locales/fr/chat.json +++ b/webview-ui/src/i18n/locales/fr/chat.json @@ -113,6 +113,8 @@ }, "selectMode": "Sélectionner le mode d'interaction", "selectApiConfig": "Sélectionner la configuration de l'API", + "selectModel": "Sélectionner le modèle", + "selectModelUnsupported": "La sélection du modèle n'est pas disponible pour ce fournisseur ici. Cliquez pour ouvrir les paramètres.", "lockApiConfigAcrossModes": "Verrouiller la configuration API pour tous les modes dans cet espace de travail", "unlockApiConfigAcrossModes": "La configuration API est verrouillée pour tous les modes dans cet espace de travail (cliquer pour déverrouiller)", "enhancePrompt": "Améliorer la requête avec un contexte supplémentaire", diff --git a/webview-ui/src/i18n/locales/hi/chat.json b/webview-ui/src/i18n/locales/hi/chat.json index 8b57cefc89..c4c2bfd8cd 100644 --- a/webview-ui/src/i18n/locales/hi/chat.json +++ b/webview-ui/src/i18n/locales/hi/chat.json @@ -113,6 +113,8 @@ }, "selectMode": "इंटरैक्शन मोड चुनें", "selectApiConfig": "एपीआई कॉन्फ़िगरेशन का चयन करें", + "selectModel": "मॉडल चुनें", + "selectModelUnsupported": "इस प्रदाता के लिए यहां मॉडल चयन उपलब्ध नहीं है। सेटिंग्स खोलने के लिए क्लिक करें।", "lockApiConfigAcrossModes": "इस कार्यक्षेत्र में सभी मोड के लिए API कॉन्फ़िगरेशन लॉक करें", "unlockApiConfigAcrossModes": "इस कार्यक्षेत्र में सभी मोड के लिए API कॉन्फ़िगरेशन लॉक है (अनलॉक करने के लिए क्लिक करें)", "enhancePrompt": "अतिरिक्त संदर्भ के साथ प्रॉम्प्ट बढ़ाएँ", diff --git a/webview-ui/src/i18n/locales/id/chat.json b/webview-ui/src/i18n/locales/id/chat.json index fe3d6808d8..5d8222ad7f 100644 --- a/webview-ui/src/i18n/locales/id/chat.json +++ b/webview-ui/src/i18n/locales/id/chat.json @@ -143,6 +143,8 @@ }, "selectMode": "Pilih mode untuk interaksi", "selectApiConfig": "Pilih konfigurasi API", + "selectModel": "Pilih model", + "selectModelUnsupported": "Pemilihan model tidak tersedia untuk penyedia ini di sini. Klik untuk membuka pengaturan.", "lockApiConfigAcrossModes": "Kunci konfigurasi API di semua mode dalam workspace ini", "unlockApiConfigAcrossModes": "Konfigurasi API terkunci di semua mode dalam workspace ini (klik untuk membuka kunci)", "enhancePrompt": "Tingkatkan prompt dengan konteks tambahan", diff --git a/webview-ui/src/i18n/locales/it/chat.json b/webview-ui/src/i18n/locales/it/chat.json index 9dcfd68997..fcbc121ec5 100644 --- a/webview-ui/src/i18n/locales/it/chat.json +++ b/webview-ui/src/i18n/locales/it/chat.json @@ -113,6 +113,8 @@ }, "selectMode": "Seleziona modalità di interazione", "selectApiConfig": "Seleziona la configurazione API", + "selectModel": "Seleziona modello", + "selectModelUnsupported": "La selezione del modello non è disponibile per questo provider qui. Fai clic per aprire le impostazioni.", "lockApiConfigAcrossModes": "Blocca la configurazione API per tutte le modalità in questo workspace", "unlockApiConfigAcrossModes": "La configurazione API è bloccata per tutte le modalità in questo workspace (clicca per sbloccare)", "enhancePrompt": "Migliora prompt con contesto aggiuntivo", diff --git a/webview-ui/src/i18n/locales/ja/chat.json b/webview-ui/src/i18n/locales/ja/chat.json index f098c68879..2ede184d60 100644 --- a/webview-ui/src/i18n/locales/ja/chat.json +++ b/webview-ui/src/i18n/locales/ja/chat.json @@ -113,6 +113,8 @@ }, "selectMode": "対話モードを選択", "selectApiConfig": "API構成を選択", + "selectModel": "モデルを選択", + "selectModelUnsupported": "このプロバイダーではここでモデルを選択できません。クリックして設定を開きます。", "lockApiConfigAcrossModes": "このワークスペースのすべてのモードでAPI構成をロック", "unlockApiConfigAcrossModes": "このワークスペースのすべてのモードでAPI構成がロックされています(クリックで解除)", "enhancePrompt": "追加コンテキストでプロンプトを強化", diff --git a/webview-ui/src/i18n/locales/ko/chat.json b/webview-ui/src/i18n/locales/ko/chat.json index 7c1b51f934..3beed9fa9d 100644 --- a/webview-ui/src/i18n/locales/ko/chat.json +++ b/webview-ui/src/i18n/locales/ko/chat.json @@ -113,6 +113,8 @@ }, "selectMode": "상호작용 모드 선택", "selectApiConfig": "API 구성 선택", + "selectModel": "모델 선택", + "selectModelUnsupported": "이 공급자는 여기서 모델을 선택할 수 없습니다. 클릭하면 설정으로 이동합니다.", "lockApiConfigAcrossModes": "이 워크스페이스의 모든 모드에서 API 구성 잠금", "unlockApiConfigAcrossModes": "이 워크스페이스의 모든 모드에서 API 구성이 잠겨 있습니다 (클릭하여 해제)", "enhancePrompt": "추가 컨텍스트로 프롬프트 향상", diff --git a/webview-ui/src/i18n/locales/nl/chat.json b/webview-ui/src/i18n/locales/nl/chat.json index d75e451b81..0e1f0a0d4c 100644 --- a/webview-ui/src/i18n/locales/nl/chat.json +++ b/webview-ui/src/i18n/locales/nl/chat.json @@ -113,6 +113,8 @@ }, "selectMode": "Selecteer modus voor interactie", "selectApiConfig": "Selecteer API-configuratie", + "selectModel": "Selecteer model", + "selectModelUnsupported": "Modelselectie is hier niet beschikbaar voor deze provider. Klik om instellingen te openen.", "lockApiConfigAcrossModes": "API-configuratie vergrendelen voor alle modi in deze werkruimte", "unlockApiConfigAcrossModes": "API-configuratie is vergrendeld voor alle modi in deze werkruimte (klik om te ontgrendelen)", "enhancePrompt": "Prompt verbeteren met extra context", diff --git a/webview-ui/src/i18n/locales/pl/chat.json b/webview-ui/src/i18n/locales/pl/chat.json index 9769c48201..49aa35ec05 100644 --- a/webview-ui/src/i18n/locales/pl/chat.json +++ b/webview-ui/src/i18n/locales/pl/chat.json @@ -113,6 +113,8 @@ }, "selectMode": "Wybierz tryb interakcji", "selectApiConfig": "Wybierz konfigurację API", + "selectModel": "Wybierz model", + "selectModelUnsupported": "Wybór modelu nie jest tutaj dostępny dla tego dostawcy. Kliknij, aby otworzyć ustawienia.", "lockApiConfigAcrossModes": "Zablokuj konfigurację API dla wszystkich trybów w tym obszarze roboczym", "unlockApiConfigAcrossModes": "Konfiguracja API jest zablokowana dla wszystkich trybów w tym obszarze roboczym (kliknij, aby odblokować)", "enhancePrompt": "Ulepsz podpowiedź dodatkowym kontekstem", diff --git a/webview-ui/src/i18n/locales/pt-BR/chat.json b/webview-ui/src/i18n/locales/pt-BR/chat.json index 1ce9610adc..0c9af12bb4 100644 --- a/webview-ui/src/i18n/locales/pt-BR/chat.json +++ b/webview-ui/src/i18n/locales/pt-BR/chat.json @@ -113,6 +113,8 @@ }, "selectMode": "Selecionar modo de interação", "selectApiConfig": "Selecionar configuração da API", + "selectModel": "Selecionar modelo", + "selectModelUnsupported": "A seleção de modelo não está disponível para este provedor aqui. Clique para abrir as configurações.", "lockApiConfigAcrossModes": "Bloquear configuração da API em todos os modos neste workspace", "unlockApiConfigAcrossModes": "A configuração da API está bloqueada em todos os modos neste workspace (clique para desbloquear)", "enhancePrompt": "Aprimorar prompt com contexto adicional", diff --git a/webview-ui/src/i18n/locales/ru/chat.json b/webview-ui/src/i18n/locales/ru/chat.json index 4195d4d705..450e7b2663 100644 --- a/webview-ui/src/i18n/locales/ru/chat.json +++ b/webview-ui/src/i18n/locales/ru/chat.json @@ -113,6 +113,8 @@ }, "selectMode": "Выберите режим взаимодействия", "selectApiConfig": "Выберите конфигурацию API", + "selectModel": "Выберите модель", + "selectModelUnsupported": "Выбор модели недоступен для этого провайдера здесь. Нажмите, чтобы открыть настройки.", "lockApiConfigAcrossModes": "Заблокировать конфигурацию API для всех режимов в этом рабочем пространстве", "unlockApiConfigAcrossModes": "Конфигурация API заблокирована для всех режимов в этом рабочем пространстве (нажми, чтобы разблокировать)", "enhancePrompt": "Улучшить запрос с дополнительным контекстом", diff --git a/webview-ui/src/i18n/locales/tr/chat.json b/webview-ui/src/i18n/locales/tr/chat.json index 9fdffcd14b..0d0f1b1bf9 100644 --- a/webview-ui/src/i18n/locales/tr/chat.json +++ b/webview-ui/src/i18n/locales/tr/chat.json @@ -113,6 +113,8 @@ }, "selectMode": "Etkileşim modunu seçin", "selectApiConfig": "API yapılandırmasını seçin", + "selectModel": "Model seçin", + "selectModelUnsupported": "Bu sağlayıcı için model seçimi burada kullanılamıyor. Ayarları açmak için tıklayın.", "lockApiConfigAcrossModes": "Bu çalışma alanındaki tüm modlarda API yapılandırmasını kilitle", "unlockApiConfigAcrossModes": "Bu çalışma alanındaki tüm modlarda API yapılandırması kilitli (kilidi açmak için tıkla)", "enhancePrompt": "Ek bağlamla istemi geliştir", diff --git a/webview-ui/src/i18n/locales/vi/chat.json b/webview-ui/src/i18n/locales/vi/chat.json index 2812fbdccf..9443fa3702 100644 --- a/webview-ui/src/i18n/locales/vi/chat.json +++ b/webview-ui/src/i18n/locales/vi/chat.json @@ -113,6 +113,8 @@ }, "selectMode": "Chọn chế độ tương tác", "selectApiConfig": "Chọn cấu hình API", + "selectModel": "Chọn mô hình", + "selectModelUnsupported": "Không thể chọn mô hình cho nhà cung cấp này ở đây. Nhấn để mở cài đặt.", "lockApiConfigAcrossModes": "Khóa cấu hình API cho tất cả chế độ trong workspace này", "unlockApiConfigAcrossModes": "Cấu hình API đã bị khóa cho tất cả chế độ trong workspace này (nhấn để mở khóa)", "enhancePrompt": "Nâng cao yêu cầu với ngữ cảnh bổ sung", diff --git a/webview-ui/src/i18n/locales/zh-CN/chat.json b/webview-ui/src/i18n/locales/zh-CN/chat.json index 5575dad5df..ed6fdce1db 100644 --- a/webview-ui/src/i18n/locales/zh-CN/chat.json +++ b/webview-ui/src/i18n/locales/zh-CN/chat.json @@ -113,6 +113,8 @@ }, "selectMode": "选择交互模式", "selectApiConfig": "选择 API 配置", + "selectModel": "选择模型", + "selectModelUnsupported": "此提供商在此处不支持模型选择。点击以打开设置。", "lockApiConfigAcrossModes": "锁定此工作区所有模式的 API 配置", "unlockApiConfigAcrossModes": "此工作区所有模式的 API 配置已锁定(点击解锁)", "enhancePrompt": "增强提示词", diff --git a/webview-ui/src/i18n/locales/zh-TW/chat.json b/webview-ui/src/i18n/locales/zh-TW/chat.json index 184728d6a5..901ac7b30f 100644 --- a/webview-ui/src/i18n/locales/zh-TW/chat.json +++ b/webview-ui/src/i18n/locales/zh-TW/chat.json @@ -140,6 +140,8 @@ }, "selectMode": "選擇互動模式", "selectApiConfig": "選取 API 設定", + "selectModel": "選擇模型", + "selectModelUnsupported": "此提供者在此處無法選取模型。按一下以開啟設定。", "lockApiConfigAcrossModes": "鎖定此工作區所有模式的 API 設定", "unlockApiConfigAcrossModes": "此工作區所有模式的 API 設定已鎖定(點擊解鎖)", "enhancePrompt": "使用額外內容強化提示詞", From b7581324ae74ce5943b04df291d50670e71071f1 Mon Sep 17 00:00:00 2001 From: daewoongoh Date: Thu, 3 Sep 2026 17:26:29 +0900 Subject: [PATCH 2/4] fix: apply organization allowlist to inline model selector Filter the chat model selector's model list through the organization allowlist so it matches ModelPicker in settings, and keep the trigger visible while a dynamic provider's models are still loading. Signed-off-by: daewoongoh --- .../src/components/chat/ChatTextArea.tsx | 2 + .../src/components/chat/ModelSelector.tsx | 46 ++- .../chat/__tests__/ChatTextArea.visual.tsx | 2 +- .../chat/__tests__/ModelSelector.spec.tsx | 379 ++++++++++++++++-- .../chat-composer-focus-dark.png | Bin 9166 -> 10698 bytes ...hat-composer-focus-high-contrast-light.png | Bin 9606 -> 11163 bytes .../chat-composer-focus-high-contrast.png | Bin 9624 -> 11143 bytes .../chat-composer-focus-light.png | Bin 9326 -> 10890 bytes .../chat-composer-resting-dark.png | Bin 9162 -> 10698 bytes ...t-composer-resting-high-contrast-light.png | Bin 9606 -> 11164 bytes .../chat-composer-resting-high-contrast.png | Bin 9624 -> 11143 bytes .../chat-composer-resting-light.png | Bin 9326 -> 10890 bytes 12 files changed, 376 insertions(+), 53 deletions(-) diff --git a/webview-ui/src/components/chat/ChatTextArea.tsx b/webview-ui/src/components/chat/ChatTextArea.tsx index a74ecab246..64e998c180 100644 --- a/webview-ui/src/components/chat/ChatTextArea.tsx +++ b/webview-ui/src/components/chat/ChatTextArea.tsx @@ -101,6 +101,7 @@ export const ChatTextArea = forwardRef( commands, enterBehavior, lockApiConfigAcrossModes, + organizationAllowList, } = useExtensionState() // Find the ID and display text for the currently selected API configuration. @@ -1318,6 +1319,7 @@ export const ChatTextArea = forwardRef( currentApiConfigName={currentApiConfigName} title={t("chat:selectModel")} triggerClassName="min-w-[28px] text-ellipsis overflow-hidden flex-shrink min-[310px]:overflow-visible min-[310px]:flex-shrink-0" + organizationAllowList={organizationAllowList} />
diff --git a/webview-ui/src/components/chat/ModelSelector.tsx b/webview-ui/src/components/chat/ModelSelector.tsx index 0909bc79d5..75faa92c00 100644 --- a/webview-ui/src/components/chat/ModelSelector.tsx +++ b/webview-ui/src/components/chat/ModelSelector.tsx @@ -4,6 +4,7 @@ import { Fzf } from "fzf" import { type ModelInfo, type ModelRecord, + type OrganizationAllowList, type ProviderSettings, isDynamicProvider, isRetiredProvider, @@ -19,6 +20,7 @@ import { Popover, PopoverContent, PopoverTrigger, StandardTooltip } from "@/comp import { useAppTranslation } from "@/i18n/TranslationContext" import { vscode } from "@/utils/vscode" +import { filterModels } from "../settings/utils/organizationFilters" import { getProviderModelConfig, getStaticModelsForProvider, @@ -33,6 +35,7 @@ interface ModelSelectorProps { disabled?: boolean title: string triggerClassName?: string + organizationAllowList?: OrganizationAllowList } export const ModelSelector = ({ @@ -41,6 +44,7 @@ export const ModelSelector = ({ disabled = false, title, triggerClassName = "", + organizationAllowList, }: ModelSelectorProps) => { const { t } = useAppTranslation() const [open, setOpen] = useState(false) @@ -61,18 +65,23 @@ export const ModelSelector = ({ return {} } - if (dynamicProvider) { - return routerModels.data?.[dynamicProvider] ?? {} - } + let resolved: ModelRecord - if (isStaticModelProvider(provider)) { + if (dynamicProvider) { + resolved = routerModels.data?.[dynamicProvider] ?? {} + } else if (isStaticModelProvider(provider)) { const staticModels = getStaticModelsForProvider(provider, undefined, apiConfiguration) const { "custom-arn": _customArn, ...rest } = staticModels - return rest + resolved = rest + } else { + resolved = {} } - return {} - }, [modelConfig, dynamicProvider, routerModels.data, provider, apiConfiguration]) + // Apply the organization allowlist so the inline selector never exposes + // or activates models the organization has not approved. Mirrors the + // filtering performed by ModelPicker in the settings view. + return filterModels(resolved, provider, organizationAllowList) ?? {} + }, [modelConfig, dynamicProvider, routerModels.data, provider, apiConfiguration, organizationAllowList]) const modelIds = useMemo(() => Object.keys(models), [models]) @@ -145,28 +154,35 @@ export const ModelSelector = ({ const label = getModelLabel(modelId, models[modelId]) return ( -
handleSelect(modelId)} className={cn( - "px-3 py-1.5 text-sm cursor-pointer flex items-center group", - "hover:bg-vscode-list-hoverBackground", + "w-full text-left px-3 py-1.5 text-sm cursor-pointer flex items-center group", + "hover:bg-vscode-list-hoverBackground focus-visible:outline-0 focus-visible:bg-vscode-list-hoverBackground", isCurrentModel && "bg-vscode-list-activeSelectionBackground text-vscode-list-activeSelectionForeground", )}> -
{label}
+ {label} {isCurrentModel && ( -
+ -
+ )} -
+ ) }, [selectedModelId, models, getModelLabel, handleSelect], ) - if (!isSupported) { + // While a dynamic provider's model list is still loading, keep the trigger + // visible (showing the loading label) instead of falling back to the + // unsupported-provider shortcut. Only show the unsupported fallback once we + // know the provider genuinely has no selectable models. + if (!isSupported && !isLoading) { return ( - ), - PopoverContent: ({ children }: any) =>
{children}
, - StandardTooltip: ({ children }: any) => <>{children}, -})) +vi.mock("@/components/ui", async () => { + const { createContext, useContext } = await import("react") + + type PopoverContextValue = { + open: boolean + onOpenChange: (open: boolean) => void + } + + const PopoverContext = createContext({ + open: false, + onOpenChange: () => {}, + }) + + type PopoverProps = { + children: ReactNode + open?: boolean + onOpenChange?: (open: boolean) => void + } + + type PopoverTriggerProps = { + children: ReactNode + disabled?: boolean + className?: string + "data-testid"?: string + } + + type PopoverContentProps = { + children: ReactNode + align?: string + sideOffset?: number + container?: HTMLElement | null + className?: string + } + + type StandardTooltipProps = { + children: ReactNode + content?: string + } + + return { + Popover: ({ children, open, onOpenChange }: PopoverProps) => ( + {}) }}> +
+ {children} +
+
+ ), + PopoverTrigger: ({ children, disabled, ...props }: PopoverTriggerProps) => { + const { open, onOpenChange } = useContext(PopoverContext) + return ( + + ) + }, + PopoverContent: ({ children }: PopoverContentProps) => { + const { open } = useContext(PopoverContext) + return open ?
{children}
: null + }, + StandardTooltip: ({ children }: StandardTooltipProps) => <>{children}, + } +}) + +const modelInfo = (overrides: Partial = {}): ModelInfo => ({ + contextWindow: 4096, + supportsPromptCache: false, + ...overrides, +}) + +const allowAllList: OrganizationAllowList = { allowAll: true, providers: {} } + +/** Opens the popover by clicking the trigger and returns the content container. */ +const openPopover = () => { + fireEvent.click(screen.getByTestId("model-selector-trigger")) + return within(screen.getByTestId("popover-content")) +} describe("ModelSelector", () => { beforeEach(() => { vi.clearAllMocks() - useRouterModelsMock.mockReturnValue({ data: {}, isLoading: false }) + useRouterModelsMock.mockReturnValue({ data: undefined, isLoading: false }) useSelectedModelMock.mockReturnValue({ id: "claude-sonnet-4-5", isLoading: false }) }) it("renders the static model list for a static provider and sends upsertApiConfiguration on select", () => { + const apiConfiguration: ProviderSettings = { + apiProvider: providerIdentifiers.anthropic, + apiModelId: "claude-sonnet-4-5", + reasoningEffort: "high", + modelMaxTokens: 8192, + modelMaxThinkingTokens: 4096, + } + render( , ) expect(screen.getByTestId("model-selector-trigger")).not.toBeDisabled() - const anotherModel = screen.getAllByText(/claude-3-5-haiku/i)[0] + const content = openPopover() + const anotherModel = content.getAllByText(/claude-3-5-haiku/i)[0] fireEvent.click(anotherModel) expect(vscode.postMessage).toHaveBeenCalledWith( expect.objectContaining({ type: "upsertApiConfiguration", text: "default", - apiConfiguration: expect.objectContaining({ apiModelId: expect.stringContaining("claude-3-5-haiku") }), + apiConfiguration: expect.objectContaining({ + apiModelId: expect.stringContaining("claude-3-5-haiku"), + reasoningEffort: undefined, + modelMaxTokens: undefined, + modelMaxThinkingTokens: undefined, + }), }), ) }) @@ -88,25 +179,29 @@ describe("ModelSelector", () => { useRouterModelsMock.mockReturnValue({ data: { openrouter: { - "openrouter/model-a": { displayName: "Model A (friendly)" }, - "openrouter/model-b": {}, + "openrouter/model-a": modelInfo({ displayName: "Model A (friendly)" }), + "openrouter/model-b": modelInfo(), }, }, isLoading: false, }) useSelectedModelMock.mockReturnValue({ id: "openrouter/model-a", - info: { displayName: "Model A (friendly)" }, + info: modelInfo({ displayName: "Model A (friendly)" }), isLoading: false, }) render( , ) @@ -115,34 +210,53 @@ describe("ModelSelector", () => { expect(screen.queryByText("openrouter/model-a")).not.toBeInTheDocument() // List item for the model without a displayName still falls back to its raw id. - expect(screen.getByText("openrouter/model-b")).toBeInTheDocument() + const content = openPopover() + expect(content.getByText("openrouter/model-b")).toBeInTheDocument() }) it("renders the dynamic router model list for a dynamic provider", () => { useRouterModelsMock.mockReturnValue({ - data: { openrouter: { "openrouter/model-a": {}, "openrouter/model-b": {} } }, + data: { + openrouter: { + "openrouter/model-a": modelInfo(), + "openrouter/model-b": modelInfo(), + }, + }, isLoading: false, }) useSelectedModelMock.mockReturnValue({ id: "openrouter/model-a", isLoading: false }) + const apiConfiguration: ProviderSettings = { + apiProvider: providerIdentifiers.openrouter, + openRouterModelId: "openrouter/model-a", + reasoningEffort: "medium", + modelMaxTokens: 4096, + modelMaxThinkingTokens: 2048, + } + render( , ) - expect(screen.getByText("openrouter/model-b")).toBeInTheDocument() + const content = openPopover() + expect(content.getByText("openrouter/model-b")).toBeInTheDocument() - fireEvent.click(screen.getByText("openrouter/model-b")) + fireEvent.click(content.getByText("openrouter/model-b")) expect(vscode.postMessage).toHaveBeenCalledWith( expect.objectContaining({ type: "upsertApiConfiguration", - apiConfiguration: expect.objectContaining({ openRouterModelId: "openrouter/model-b" }), + apiConfiguration: expect.objectContaining({ + openRouterModelId: "openrouter/model-b", + reasoningEffort: undefined, + modelMaxTokens: undefined, + modelMaxThinkingTokens: undefined, + }), }), ) }) @@ -152,7 +266,7 @@ describe("ModelSelector", () => { render( , @@ -165,4 +279,195 @@ describe("ModelSelector", () => { expect(vscode.postMessage).toHaveBeenCalledWith(expect.objectContaining({ type: "switchTab", tab: "settings" })) }) + + it("shows the loading trigger instead of the unsupported fallback while a dynamic provider's models are loading", () => { + useRouterModelsMock.mockReturnValue({ data: undefined, isLoading: true }) + useSelectedModelMock.mockReturnValue({ id: "", isLoading: true }) + + render( + , + ) + + // The unsupported fallback must not appear while loading. + expect(screen.queryByTestId("model-selector-disabled")).not.toBeInTheDocument() + + // The trigger is visible and shows the loading label. + const trigger = screen.getByTestId("model-selector-trigger") + expect(trigger).toBeInTheDocument() + expect(trigger).toHaveTextContent("common:ui.loading") + }) + + it("does not render model options until the trigger is activated", () => { + render( + , + ) + + // Before opening, model options are not rendered (PopoverContent is hidden). + expect(screen.queryByTestId("popover-content")).not.toBeInTheDocument() + expect(screen.queryAllByRole("option")).toHaveLength(0) + + // After clicking the trigger, the popover content and model options appear. + fireEvent.click(screen.getByTestId("model-selector-trigger")) + + expect(screen.getByTestId("popover-content")).toBeInTheDocument() + expect(screen.queryAllByRole("option")).not.toHaveLength(0) + }) + + it("filters models by search query, shows no-results, and restores the list when cleared", () => { + const models: Record = { + "openrouter/alpha": modelInfo(), + "openrouter/bravo": modelInfo(), + "openrouter/charlie": modelInfo(), + "openrouter/delta": modelInfo(), + "openrouter/echo": modelInfo(), + "openrouter/foxtrot": modelInfo(), + "openrouter/golf": modelInfo(), + "openrouter/hotel": modelInfo(), + } + + useRouterModelsMock.mockReturnValue({ + data: { openrouter: models }, + isLoading: false, + }) + useSelectedModelMock.mockReturnValue({ id: "openrouter/alpha", isLoading: false }) + + render( + , + ) + + // Open the popover to reveal the search input (> SEARCH_THRESHOLD models). + const content = openPopover() + + const searchInput = screen.getByLabelText("common:ui.search_placeholder") + + // All eight models are visible initially. + expect(content.getByText("openrouter/alpha")).toBeInTheDocument() + expect(content.getByText("openrouter/hotel")).toBeInTheDocument() + + // Type a query that matches only "alpha". + fireEvent.change(searchInput, { target: { value: "alpha" } }) + + expect(content.getByText("openrouter/alpha")).toBeInTheDocument() + expect(content.queryByText("openrouter/bravo")).not.toBeInTheDocument() + expect(content.queryByText("openrouter/hotel")).not.toBeInTheDocument() + + // Type a query that matches nothing. + fireEvent.change(searchInput, { target: { value: "zzz-no-match" } }) + + expect(screen.getByText("common:ui.no_results")).toBeInTheDocument() + expect(content.queryByText("openrouter/alpha")).not.toBeInTheDocument() + + // Clear the query to restore the full list. + fireEvent.change(searchInput, { target: { value: "" } }) + + expect(content.getByText("openrouter/alpha")).toBeInTheDocument() + expect(content.getByText("openrouter/hotel")).toBeInTheDocument() + }) + + it("selects a model via keyboard activation", async () => { + const user = userEvent.setup() + + render( + , + ) + + // Open the popover. + await user.click(screen.getByTestId("model-selector-trigger")) + + // The model option is a keyboard-accessible button (role="option"). + // user.click focuses the element first, then activates it — mirroring + // what happens when a keyboard user tabs to a button and presses Enter. + const option = screen.getAllByRole("option", { name: /claude-3-5-haiku/i })[0] + await user.click(option) + + expect(vscode.postMessage).toHaveBeenCalledWith( + expect.objectContaining({ + type: "upsertApiConfiguration", + apiConfiguration: expect.objectContaining({ + apiModelId: expect.stringContaining("claude-3-5-haiku"), + }), + }), + ) + }) + + it("filters models according to the organization allowlist", () => { + useRouterModelsMock.mockReturnValue({ + data: { + openrouter: { + "openrouter/allowed": modelInfo(), + "openrouter/blocked": modelInfo(), + }, + }, + isLoading: false, + }) + useSelectedModelMock.mockReturnValue({ id: "openrouter/allowed", isLoading: false }) + + const restrictiveList: OrganizationAllowList = { + allowAll: false, + providers: { + openrouter: { + allowAll: false, + models: ["openrouter/allowed"], + }, + }, + } + + render( + , + ) + + const content = openPopover() + expect(content.getByText("openrouter/allowed")).toBeInTheDocument() + expect(content.queryByText("openrouter/blocked")).not.toBeInTheDocument() + }) }) diff --git a/webview-ui/src/components/chat/__tests__/__screenshots__/chat-composer-focus-dark.png b/webview-ui/src/components/chat/__tests__/__screenshots__/chat-composer-focus-dark.png index 4de566f736bcf2ebeb288f4d8eaea9b509255c29..386cf5d6e50a3a741486a7265c871eb254b079d2 100644 GIT binary patch literal 10698 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 lhlk>R`5^EC=}~gQ!=>x!=b=$^_keHUIvxN3 literal 9166 zcmbW7WmHvBwC_QXjsr&pq@-244=o)Ml1j$`>268k&>hkZ64DJ)f^>&;cORsi^ETf1 z#<=g^PxpRdoUu21?Y-ulYp(hKtr_w`Q5qNPB^DAA60WR_gbET8@(%Dj8RH4?*HS<@ z3<(K@Br74R=9YGljvlWzdEaw1c%eI^+s|UH8G4rE_nJpdqB6^#npEA!iObON+lRtke^jtw_Lw)Qp_KmK#MJE!BRAecLcZXrT;w-%-Qh{8p; zo_k`vxSyjxOx5C&gbHTX^ymAQn#pC^aPPA4&G6kIUQw~>7cXaeED6a5%hRCSpSY#F zke!BEUQ#L;g#TAY{()A4wfsYZCTZkt5ii|he5w4RvN5%Sn$bc8`K_8O*^KGzZ{Ry3 zDM>mi?T zkQmvylfHoU@@TO_UP!aubp3vYp1K7Lv{uManv>V6O9VEjZiCE5&#~k-&tOn>Dl2`y z&JX;f12)h3s}{m5tMq_L1+&lKWS5P>x01L-fdJOaa%)*)(fw&`YU&}Fk%fNc*?Mwv zQdLzoHxi1<|7R`-Pld#eT4WiMz?qzMf#?`0=giHjg0 z`~0AKgh%>UOaTb@ZeTB7Rk88@Vt$Cq0dapRa=z@e_ot7H#UBm#ri<14cm^7!kj$|; z$T@;@%0yp^FLV|i@?-$&6BAbZfj+4Y>-fJNY9}uKA4PS}Z=55=o*HRTyd4x^} zIi<+Ho$ZXR|N4sJ@_SFII1Yv=EiL7afiC|&a?wV72}X&o`>5x>*?c;jD&phq?9A;k zEP}YxZE~4CoKOdADB+&K5LQ~K_Qf~{$5T_MOC#Cix=X4V%%L9 z8j1zqTnl5};%O|L>_0nmQluiU>Ul#p!NribrRO@B#QtCsa7&;0=FJ=0j>GDnEg1L> zSJ`k=u|}!Iu(Tak(fuZ?Pf>X}zE;K1q0=?owe9`)mDwVjz4+A43z7S?i7myv?jk<| z8Y#OM0V0-DC8Les-O%yK%&-wP6N<$@eykDJMX+zvy_UU6^SC?iQFW@}UrJ#!>^RvR zFvpaaZeW%BhKZ#v--YJU%OFL zQ`6%T&P~mp&3c-t5h^n^Nq$%Mnm;lkw4rTkp8`ysKJFdo5T?fygOVNWTnI~upe}cY z0HJ@V*!fhna-Jd0?nz4wZZom;_-_JxiJsQ?QB^Hp#&RUjev)v0MtwH>lt_oo^U7|J z0Da-he(3_$8?b@sS*F*8=AYA>{qpS!KffpZZx^r1eeM~b`+kU>yFF@)+K8cdUw>=L z?|Ct6O7;#5r%_4xdSk6C%;zkZ(vYvHqY3^qEK$B@x3YfGMf)ArLu1a`QR8;T_xFjy zC%rUhrEX0O)>1r4`dETE-Zx5#rIKLs2dp=>XY_wruR^X%cUKDyY zJL27q#vDg4N(#ll&Rd+DdhdPU@Iqk>FO+(0w$55R0fn?%v&ML(N4}=NDvxfeBjO|n zV)d62Wpcp~qH{(hnQLn>m|S?%HjpKaxt0flIE^BhVfb%0m|)?N1Z6@UEESL4#+vWGxgGZZn`qLD(E!jcWL{}usw0p=Zyu@-XwzxXZ z^8qlQRf-=rE2Y~C@}D&O+X&vJcNidroQu4^2m}0Ok0T+^H2XQ!qM=mYC}bpbAiR|v ztMz^E&-=eImfATT&OP_-(o@O&B2~q_=aq5C zQS+t^U5spO21_JtW?$1RN4{*QyIS#8$A!g0E;7*!(t4K?^}ToVqqtPLacF5z<}Awz z$e?@OAs1qWf@Ngo>B-5-adG}iywu0-$4ssj@KjCm(tw0+G@I@kw8}{Pc})?$SiMf` z^=iLix)_Fw`G#0~YKB$X$d_y3AdTDD2V1iHF6TL+cy4x(fa088kUcCMKFw7-KCZ&M z<*V@fW{kA&Id@S0D8sQCM8hJo^{3sc7;S4~IMsbGu234;+%4VHaeF1vqKN9yq31EA z>k!qNNoFz*|0ZLU)V@wKg>9Y~Wx)rk%}z*e@Z!5KB^y*K@uY#%a0V07)DsbGpRcy} zljYuu$8mQr#}6GKX2jgq;2%qEdLsv6B<8Lj72+Aj2_ z1p+SwM*WH_aB>#t6`nk0aOimbUU1`jJJVFy7(YwzVB=S-F;izSvt|`+R75!4auuxt zx>4~4yD9WqZT6k zgODBYJLnJTZ`YJc)P}$i8g2Wv2a84T&AjPGIp|H)eJN`w}sD;sYj! zLcy0q#HR`a*x~jADDs!}Y&Ebq6+Xt{y%OK6Nal|IZaj-&>yh|Xi`n&bB2dc-HP)9yt&SxB}AZ{m|J0(Z$L z;o!kaC|cy;aCzVSVg0gA?R>yRyU^S(mXD&B$76Zn##ts8t;E+e7%6df{ryi%Nw_WI z)ur+!+OCIepWqp={klf`)SLBm-pHKu*N5r4B|e(9~hLEJ9STe7EA zsr?RM!z~HrY|^SU3Lvn4YLWJ3d2gjH^I_>NBMH0n!kN5ZBm6y#v_3$I*0T>afhF_| zBvW-%Md&ubTn~z`iP`kc+krLY0b57rJLWi5SHyeP7A}+iXU36m39dLJ$$@CCtt((v z###lFakxI5m-{GOo*p@4ywH?u&8sx^JSA%$>Xc^}TzVozSU3DR%9?glw~std&~!Y2rOme>4*llS=gD z;emnT;^Kjk5$SfmUpF>j$H(asz^v!%N_CrFl(*QecJ%klsm(uNxhpFZSVX$y&Sm@1 zL%#g82juqRusSLR#3ouB78W+p-_N#KBAbwqP?umq%B%>eT1U_y`kDxf%e_geP?Ve>FBX&YJ7x`Y~idJ3mi;(A3$APX_t5M*BloTieno@}ITWg{vZrp=BsbbTigk zn2+8;6=Q?hxfmK!&42&?T|vFcIp$GzgM#DY6BEI`WhEtC_Wz>APgPmjaE(w%o%(+r zKmR@82w)jP9+Bh%JiNTqos>5&@2FrHVu0`rc7VrZoG?Ao6KCBE)Yr(K}tA|)kN*#Acn zUcDN^IE$td2f<76$oZX!xh?)Au|uVzC|ay$t2PG`a}V;lM;|?gYT6b0e0Fvgh{<}^ z%Y#`?K$G~~ty30%EbsPxEaigT0JkU%#;gOOwgMuaZSz4~9j{*=&J+EeD${M^;N%R# zC3QKd>={mCr|E9HVtI7X(Aw#BipRkE@eB$8SLCh!<7q$haJXgelD+Gw?@QqI!p*3iVdFA(KXz~Btb%%!cZ4|~Psa9|Oco9_-LbDkrU0U1Oe z3mf~|XU@F98n8HU^QN~62w4Gu0nlhwnT=6*(9jS6BQc;lNK%8u$YUh_UnujRQp5l6 z+MHJlxDn1pe2-}4%ig$yg1CPOR}2w+V{cJ?wk6^bd#KeNebc!w1ui3y6#H9;xRZ7N z;gCPZ&Ps2h?h4$fj~c4O^k$ci9B5!5X(75E`9Zyh*bpw+>+5S^{`3yC9}nfqXR94Y zpOeeAv58^W*HjsHrju(ZzMpR$m5BfI=TD)adTg_|%hd35(#WR8M|^_$BVDtO$^3T@ zKxvljQ~i&LGEFbhlq|MxRP(=(TJFbH$L|iXFBJLEDWvuupRJ z!(#j-XPoCb{rE~l?)jnbQsCa1x~+5BOts}o=S@c$ZV?~7>_|8^)f`tuge>=METgN_ z!(G&F>UMG=!D6}d&;m!42rwIJhu)|E)rwNjpbNXZyFmHfhewZGjz5AUA`!i()41^_7xkiqQgl(@Kw(b3V* z77Q0K)n00Eg9f3kBq+br&aVq#eNL6@N9ptBJv%u)Ejn|->$Vq6NEdKTnew%gctC*+ zwwq7gULNsUKkWyC4EJ}JJl_uTvEx9EOjW;>IOj6$>;*7v&8J@KGGaD^cR>D*C5slM zmv3@8#5&bcBoX$6Ad1d_l}1EF1msA-ZEVERYNDdZbL6*tmTJPj;u|%GjeI{ssp=b7 zKI<%UXwr$?;osP#mZZ;se@07Me(m7Mu4yH9?I;OuuT?EjeCR=K#u2r#fdfn>G&J-A zzPR6p&_?I6J1$6fnVZ)4X|Y`v25VEZE-<-}@5$3Xv^%MW4YiPdtS93yh6L1o6sTly zq6#CP09HG|Z_?dl^z`(8X+ze4eFjMS8ft1u;$Lq7Y;shP>HTtz_z5ep(gapvV2n1@ zV2_%RP`jWE0b|po`^k(>Eig?z&el-N{2Fsl?5O4@bEy;sUpBU8XDnDr@HoY?%>Ah4 za%&`0AMk{_dRJO3i+N_MUz{TUZo_({c9Tmft}OW2j9uX^Q8~F*t?mnEEw0al#AU;8 z6GNV}dp!#mJD6|z&9_)TGOtx*MBH8vIm*c#5~?1=-w`7SOz zhTJOo-=*vf-Fu^{7(bTbm==f-gSQGOz0Q;!(IqMbp;ExsSJr$YcXR!S=Zd$+q$#zoN=VAhfS7hij@V~Kcpj%lG0M3r$2tuAHlbE zBIP3>*KtKT5NH=r+f>;&3!>dt%57yj{uOHtX+WKIZ&e;Jt zP|x$YYoo0ZrGxeE>Z^uy>HW3{!oIjW*eyU$oH1S4i{GAb&l1Shyi0ED_}+j0t4D-W z6Jd1-pvEu#R7ssSY|_`?Z}AfC)rA9qK{?stzkOpbBlpkRLA3y&Chuh4STCV%-oQSS!e zMXJa^g|kjatyrn&y6BAa1wgquudhcIg0vyqX^zD3ncu{>0Fbq_19tHp@5=>8rRg%= zAbiSJi^;cGL{RTBNutV>_V?YG3-Cv{DRik5XqFcm?{T)n4xmfcwmXirTde!3nM$bX zP>STmRH=55pX1_F>=z*6(-9QxSIsq)Mhi9O6TLAsjho83Qe!KBF$UXY(vBA(gtBRo z)t|UT9D=BAbgyYiF=1D1<^;@kgRW8MIl6DupX&$kz zU)*{jEVO-hIwHNfh;_oS(yeKhLrt%k793b*OzDKLJ~HY&ss52*g7$cTr78SNo?G%V z=rT|6P)me{{~_1`DkBWQL0OTNV{NT?L}RXW)E42vw#$r5@m92)N@qBLH9`=60 zEJ1FE~U_HXtEdNoti1qm2ve8*sa)htW27j92gl_^%MPxmkGl5Byu%b80ccsDg zV8$>m^fWcbTSHFnG7 zIpX`=ncdAck-n$sNWI5S^jQla?II~|(~ms2fdDf=Zr{VUBp5WI@VT>pm|x$m#26LF z7lQc-{{4kQ>wH){J^nuP%ifzUQJ0zK)j-mn?nmzMCa#0AyxDI`1OSfo;~yrxZqBGg zklo)+RidD(1oLD`6r?%y12XgsC^Gbb8i_2ND;L5OP(92)pm4aEsK3cc&QB-hz^|DPX9Z{T+nGKYDlY}y*qBqlE^mR11#gTN}9`*u`Ar^nIQ|s-n*lqMQ7=)(?a}2me`E>LyJ54C`^23E! zkQ6JUsJa7*FRlXXPn@-jCj`49ma1-UrcH^gm#Ug_hP4}A3koczzrNIe{^Nd` z-6p}m?PibB6PG-s)!Nnj;d(p%Rf|0^<4$SvWHhU!3_TY{$NEeih5mV3{b58hm;s;(4$JK;sKxTHMs-+A<=3k=t7j@ZpxpQkcfSm5_NAtGyq94?r+Gx7^? z91Of8mXz(BY+dHAS;6W|1w!HPP!S|3*1>5fk};|IQbYE>UdBO)85gE((!naFKfGRe zTq+gbM&+c@=m_X2(Hhm2zy_v5y~*?Q{1yqjrcDkJL@zFhbmeV*2=OB<(N7N65>U% z=wuIf+al;ms$U>fR_mU!7^;h-)3su>+9lV$gf?Y!xTiJu`pLZ=`hU zE5*@LbBa5BC|qg%m&Y3Q;dT>7;cO-9G$@)q7ORrhjTp7F)_Rb(^B7fp$$gt#ThzAs z7|lERJE?Y3FXgeBM-sEAJXTe37tgRns3yTh@~^I@qgK+h?skfB%X~enAoHI+DmprY zn+H9kBqC;{-O0(T`y_0ICf#mTY8!0Ey&wdu1kRT-nO7ey@)wyNz`mbrr0gmQ4vhU1 zYbxKU=6@(%^?{d|kNO9S-gZLf%3mA$S7`h0ZpDk=hmXX7Cbk>!(X0h{hnF{Yr?0c* ziKbF*^f>Fhm8=!KGM}kx?P|uJAWjrU<7CSgKffIC4RLEcS{ud)B(xQqw%W!=o(!a5 z)@#1%BGPZ(FKa4Pe0EydL-BiX&0YC5Ap?#ac`gU73@zg?Y)T#pXd@O>_^ZK`(hL{~ z8UN%J@cCy7U#W=~V?=AEFdBH%kuc-s13K8-q(U_0gAy3?^^$J`51qfnT!^CTCq+-- zi0{rZQX;n4KTU@stKAIE*`;m8{_15feW2N*RMGwAsWj1P?3r+JbOq zCU$drxiZ2~KxQwH!oeS@%7%hFc$B$IE*D*whcGNCaqL*h&vat!8Ysm@9LzA0DZ{!P zXXspsQe1zD8-?FrQ2EV(u5HncB?&T#&q^1ZmNy7+0~$Y1Dt==V=s-e3v3%?cI4v)a zlS=Sl_~NNMKY1t=9h;(u82b80#8h%WS2~H?>LX+s3ueLg+~Ve$Xz(r8v4+~}&zf)f zBYa)j8oyaR6YbZ#*)MCV<`*)izSq9hMg4n!*H+#l8T&n5nr>@dbwt^>HFlF{8aq@ie3bU*wYR~u zWukmLwj$dfbH|t+1P>EMr7~9mM}F@3NrqgDG%$OuX`tHfj-p%!iez6&XFa11pcwpx z>_W#RpVS+8I!i!wtE)yI*vX|fzQajbs$?{|SFM0PP|r0>7Vdo8ytTqu9^z@GN&8lT z(lPwXKPt!i9a%UA>Ha*hhuM#!e5y3gsWWJQ0_K6qhfGviffb9_D@+Cwx~>>~fkGal zVKgghn_D=jt@fFa;5J&v@hGria|X;`-27ZbQ$a_Js4AF_YikxyVjN%sgnwD~NrEo< z-rN?luYdJYzQPZn*{N#vOwPHA2`Ec zEXHGR4_w(|{C5`au1__e4gy@MtgJ37o|vH%r$nl1Dq`98Iq5U^)w06E74NxE)mxEb zg8Sf)_40}--X#M8^#HW+`ZvtySD!m#X*wcQs_%9X6DAkRyc2RjYXHI1?wl-2QiTr( zymtYhrmIGiDmhi`81--zn@Z+M#RK!oXh~9Nfqw`CHG)pHn}CBU5)K^3-xsTQRGIo+U`FS4;xG`JsuE%LJa!tqW$oIj|4@p* zUjs@J8BP@%g)#+6$_+vNxtUwx0yE?6JbUaYpo%2>AArJoptEEB_+J+YzC(l=f;SG$dY5ol?_Ca~6^IgD~!sa?!0 zd_WwnfBq;bDe2(gASV|(-467bmj?A! diff --git a/webview-ui/src/components/chat/__tests__/__screenshots__/chat-composer-focus-high-contrast-light.png b/webview-ui/src/components/chat/__tests__/__screenshots__/chat-composer-focus-high-contrast-light.png index f5c759fad8546da967cdbb07f93b034d78d293be..ebe4263383afcdc83a1660a5fe7c116bdbcb1fe0 100644 GIT binary patch literal 11163 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 literal 9606 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 G2L3Of2;d|D diff --git a/webview-ui/src/components/chat/__tests__/__screenshots__/chat-composer-focus-high-contrast.png b/webview-ui/src/components/chat/__tests__/__screenshots__/chat-composer-focus-high-contrast.png index 465ffc0263d816e953f37275f9ceb514223f33bf..461e2fe7a6bb4b6aa3c2c018287656abb72ea24c 100644 GIT binary patch literal 11143 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 T#eRKo2jQi(vQ)XmtDye^FT7dI literal 9624 zcmbW7Wl&u~x28jaL(t$30fM``yK``YySux42oNAZaCf)h5Ind$1b27N-6Y?gnW~u| zx8~2OQ@wjj_g=l$`#!xR6y+t}!{frgdGqGIl%%Ngn>P@9!2eX(x4^Fz4}a8~Hz;qU zM1@q{(~mM>+*LsjUZ;-o_(ke@y%$_!jbQz{fmFaGcW%4^PLSF`7PeD%|Pr#zwQ#N%QUxuc6zY zr(U+Eyoor3Y*u3L@n*7YMD3#*_yfA6Q6PnixND}y(z)tRrvr4C+V6iB5w9hlm~z7t zaW<_DpW1w9+V{SgU*Mwif8BwvQy**;#Jsp@!1wsf`$9zy8%WGa9yUvRdUJP)pGQg2 zggW=KbU~2$-n3|SMv-*W0T(fJFB8JSjP;fLcQi<$CiYHV-K4YKa!ihboQNRVd;JdoI`s0Y!stkf+c-y>gE7U7jH+sU7jEdhzwd%IIHerLGb_HmB z2Rp#er^%l^BZB7V=Ydd;4LYo7J*o72F0G+qvz&I{2*H{L*|dE4evd+WJ-^?f;$CdVbvXM^_L` zVP4*+4XwcAmd#Cp#>4OIHlAsyNVFG>SVQo6s@kYtD+spwibTMjS6G?0Y%uL4JO?p6Wweeb`B}`{X*5NR=;B_;RiK$=tw4$Mx;)>)Q@+hFRf)2j�T)Xjeo%zI=0Jw}Nu$swu0L3TL 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 L@}d>O`houi$=aJZ diff --git a/webview-ui/src/components/chat/__tests__/__screenshots__/chat-composer-focus-light.png b/webview-ui/src/components/chat/__tests__/__screenshots__/chat-composer-focus-light.png index 1f238a4619657763f15f05e20656ec0f08a03eb9..c0c1ab169623d7a2b59d7e7ac3f2551b4acda032 100644 GIT binary patch literal 10890 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 diff --git a/webview-ui/src/components/chat/__tests__/__screenshots__/chat-composer-resting-dark.png b/webview-ui/src/components/chat/__tests__/__screenshots__/chat-composer-resting-dark.png index fad9aa30b923ada5cbd0e6c1f1a5df83319b1d39..386cf5d6e50a3a741486a7265c871eb254b079d2 100644 GIT binary patch literal 10698 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 lhlk>R`5^EC=}~gQ!=>x!=b=$^_keHUIvxN3 literal 9162 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 CivmCZ diff --git a/webview-ui/src/components/chat/__tests__/__screenshots__/chat-composer-resting-high-contrast-light.png b/webview-ui/src/components/chat/__tests__/__screenshots__/chat-composer-resting-high-contrast-light.png index f5c759fad8546da967cdbb07f93b034d78d293be..9a5e7177dd29b81191a106a1288923fa0b8dfdc4 100644 GIT binary patch literal 11164 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 literal 9606 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 G2L3Of2;d|D diff --git a/webview-ui/src/components/chat/__tests__/__screenshots__/chat-composer-resting-high-contrast.png b/webview-ui/src/components/chat/__tests__/__screenshots__/chat-composer-resting-high-contrast.png index 465ffc0263d816e953f37275f9ceb514223f33bf..461e2fe7a6bb4b6aa3c2c018287656abb72ea24c 100644 GIT binary patch literal 11143 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 T#eRKo2jQi(vQ)XmtDye^FT7dI literal 9624 zcmbW7Wl&u~x28jaL(t$30fM``yK``YySux42oNAZaCf)h5Ind$1b27N-6Y?gnW~u| zx8~2OQ@wjj_g=l$`#!xR6y+t}!{frgdGqGIl%%Ngn>P@9!2eX(x4^Fz4}a8~Hz;qU zM1@q{(~mM>+*LsjUZ;-o_(ke@y%$_!jbQz{fmFaGcW%4^PLSF`7PeD%|Pr#zwQ#N%QUxuc6zY zr(U+Eyoor3Y*u3L@n*7YMD3#*_yfA6Q6PnixND}y(z)tRrvr4C+V6iB5w9hlm~z7t zaW<_DpW1w9+V{SgU*Mwif8BwvQy**;#Jsp@!1wsf`$9zy8%WGa9yUvRdUJP)pGQg2 zggW=KbU~2$-n3|SMv-*W0T(fJFB8JSjP;fLcQi<$CiYHV-K4YKa!ihboQNRVd;JdoI`s0Y!stkf+c-y>gE7U7jH+sU7jEdhzwd%IIHerLGb_HmB z2Rp#er^%l^BZB7V=Ydd;4LYo7J*o72F0G+qvz&I{2*H{L*|dE4evd+WJ-^?f;$CdVbvXM^_L` zVP4*+4XwcAmd#Cp#>4OIHlAsyNVFG>SVQo6s@kYtD+spwibTMjS6G?0Y%uL4JO?p6Wweeb`B}`{X*5NR=;B_;RiK$=tw4$Mx;)>)Q@+hFRf)2j�T)Xjeo%zI=0Jw}Nu$swu0L3TL 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 L@}d>O`houi$=aJZ diff --git a/webview-ui/src/components/chat/__tests__/__screenshots__/chat-composer-resting-light.png b/webview-ui/src/components/chat/__tests__/__screenshots__/chat-composer-resting-light.png index 1f238a4619657763f15f05e20656ec0f08a03eb9..ead96e51abb0a128e45540e5ba086c7d055f3864 100644 GIT binary patch literal 10890 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 literal 9326 zcmb7qbySq$+a{^BGjvFobTf1d(jqOLL&MOG!q6=UA|;JTcOwl_3Q|LtfOI!}FaGxI zch2tFv%B-h%$#@TeV@4Nx~}_)e66N{i$#uwgoK2v_)6{#5)$$j@I4I!1$eg?m54?{ z0wF2NNo#p$>}F#6YfWBVj4{w+TE4Fg>#gLf4tZCaOY_PI8HW5)LnD8Z)s9WOXEm%0 zTgl*z$g3y!wVX6e+E6P0T`*nxE)58TFM}^bGj!uI+R-pEXo+uS&5PP`pl~%W?6%*u znYH1SwJ8koGLMRm9tnEE%KBq)POhimcalouCK4t%xl2gW@Gt*QM;(tuV<<(cpUU~O0)(sfQR`d*vpBAkv3%A z639eEAT`O?=EZ=3Z!%pRa1b~Q4m_I<2eSbrBS+d90CG8xI%SraX}>FKy_@Zi7F)Dt zgoBu=H8?dzh09?hm#|HN=2C+aO!7|r{rSAmiPZh8?sN(&s;S(Ub~637`M*nGz_Qeg z$7_yt_XZY|v;6jI4|rX%%lEV)5`r(rcAGp87L6*5#R*;$I}aOHo&D4`sIk5)&jZUu zXvXJg>SivK_!fl?2D~l&^sX8@mi48lae8m?&Mq3*1lV8R&5KNlg@pH{pJ_msuLp;% z{0=gjBsL##xn(e5SSRNPqP_9=FUsU^oe|Ug$c%@?7r*1Z#QbgD0IL;=C2`pwEsLhB ze!*<*ZL?iUOz}7?m!^etb7&IOQxEXHXFBZ4Omu6tc>CdTHd&*wA1-5B_rH|NZ@J-!={BlJKtZJE7r)nzq`2^tZ`ZCIz2trDSMmt^9?dF zWaL+i*TJ;0U)gPu*y&H%gZ3NFrw#M2L$_Ba!UMy@x2w@yDpD-$>=_W}EMa7|R=DZ% ztWGpB2f1Wm>s4qBxj@Oq!|{Z=WSYs4*HXa6+|vE|yxSNhpY?DsI`$7AVyd0x&Jb15 z7pB?S+4~d!lMzU&vF}%K5&p}UFVSR$X6ha1I_6!LKZfI2^3fKdz;9~CBkhF26J`x7gGk#3$T95i6ZrE9*Zzczt0e73EOc7dNoC0`PzB%v41DOxtVr_ zU}1cunFnSMnVNc!`qXaf_Uc)b^;p(Ig^460bS+-uIzn;05w=FJ5Xapx`+RG>Ali+S z&Dg(7LJ z)2&cbQd%{rr+<-x!v`Jh(XjiK+gmqnyrYfcweB;GLCol|*qVkgb{i3xEYarMM}8kV z$`bMf7g*bLl|_H!d>SPWp9_~sz?t?(R_!nxvhhMy3bnzZA-}UpU6yd? ziq_*FfRCk=VorLN->igF`__L{%}DUObhhY-mXb2t$)Kp-S57CJPa1!1EZ!i^{Aq$Z2k^nii4R=UFvS`ONi zlL>1V1BX~dJ$Fq7@kqImHq6JX@qJUq$Sd8q$Nl!3ikz3)Z-=yo2L>9q3)9~=I0YQE zUF3SHiygsX&Z1&xzcp3XI&L?(dLV@=Xf4jdL z3o4vx*>A=kBTsDGtDhSc*Z5>&^MzoWj|t&>D_YER*m3)n>psrTr6~O*ke&BNlalVCk5g zx{Z%Iro?83TjRyJ+I+JI8?`OnX{NNf`jN?8Pmi3R=Hcmt`W#RF6z)_1I{zzIM7GUX zPb9&`!IHCEb%qOOeukjjg{^jx-l-R0*BFBothKnXg}|G=Q(nr>gk_Vkejs~Q5nXy7 zt@bt=uCI_ny9ARX+=1E2IV8{`n%tmkf_Qo*JSLyI3WG7~Tr7sZ1U#qV56orMYxMV9 z@R&BM`64#VwFXMa7FJ&wK#Tko9xr+C zJ&6Cj(h-buGXvu75mRu~x8Ur!J+7^-4a21{51A{#o_I#t?;jl*+4)nJvFhuQaB&#! zQ+j{H;1(uJc(SQsYH8#{{b~xB#cwS_h$TiQ?&fq`)>@~fVJUEKQ%yuyO~JC==1pyGhMHd;w@vL9Y<{1Zh&n z&`R7)4R;1htbv6~b!1n^T!XVhXY8DgDVoTJ1@TV-ce>D@n(Wq}7EkfE{i8X?NWb%S zi9dQd@haL-AvCEq@o6G3E~cVu+vqU*eW;p*MR(%5i+ zX`dlu5RiZ>Lm#fEJ6vP>N2d73U%%~5c&kM^hpRd2yPpw?KJwR!@5}F7<*NvkX@UKp zSSaiKc&l-wuy^Q6#qdUM4RA0kPN9hwfeYekWPY#Ea-0ohS1En;haCU+ZzG8e!ANQe z`L$tZX*LG~UHCFZsihys2=x0Bbknzf7Y!q-8*`^?h3)s0x!QUf{4Evp6layH_v1pJ z)IP1v(IoFA3qzY`9PbKlcHK~#r;K4wN0#mnqT9EWtTrCE7xz17P?F!QW(S{}nb#yE zUPTL~eP5?@k0h}lA?d^Xu}p-6gG)=~q*G+n;;DZ^1|itKy*(L=TqJM!gAltsxV6U} z%nk}&q-^hz;84FRrivZ-U}~X0WB5sfu-Cnstn`_3&%27Xk(SNSPqbZ@BJ)}vsW{xxL=j~A)_tAECks}@25Fjy&5AnPBetnAX0xe4sqvjf968?<=ydSO! z3S~EV$hU-c-JLoklF;cGaNfo+j6oS==8$?9d1;yRi6NZp5n%d^coj^#4pLEu`=j_E z%cyZQL6o>!Gc|LuT*IxzSO#yIc|m68@YnQz)r%2|)DWk6T*&;pVV=5(*LmhPWPXMW zZ-fkP8Lq$5@@0U0ydY}kEuMQ3wRE80Xd0&GZnoy7h8t0A!_=C^WWAPb-h>519rkbG=^{G1P8W1kBK%0$ zLx_2zPmt|sl}&pTEJ}ANWySp}@;3q5;Vtn(ZQ^RfqVJGm&pP06R`r6pePLARqV}}y zU|eOXyjp@Q;-s|CHH1eMMw_?OQ;n#aTLQE!akkXSzauHDkiVC+heQb$J=dCP%p}dF zw&;&zEFO84*AnZ8#w#%x8M>h_^o@o-$s4;^_WeC ze$5jCWWKJr*blQR1DLn!sZH_$dbdA(I&NFD#liIlVg|@b;Z1Vh)6l^7UKxe1R%60< z4beusA4iYhdCv~+Qmc3nf?ggfDQHtlB9PZo$v-T)L8@!nvmdvAQ7pP?W+R+v( zVSD#M8cF!^Ru27t4?|VOxYldR#H7C@@-ZU})cge<(#l5O^l-9WY-m$wGvk+3zmFrR zC<`@(T<_Gif_vzDp*vTll6PG?+G)rTaFZ$jG9~XX7hJOU5*+q_D1-MOxR`_L7*d{u zDU&{OB>=rMYR;I=EHLhIYwoA2pvyLHj9>zwK4A^dN#!!90Tqi@4oJutmHVaFA7{&&i+O zXcFBD#h^G?&EMT9Kk>M~&Rv=&J2Y|S0D`mpgnOIDYsDF&5vJm2k zsC8Os25=zlNS*z3Tx=|(>G58}lIQ+>llC{Ap%f0;PN1MBefVH56a7dn{VP595Wp|6 zO4H8Zkf+aF-&sB!c0a?!#N3&#FsZi0B&%#OsI@VZiTn5Oclrw*K|!fQ0(QTPfyv|| z&=i}!4kRoGKsbl76p&oReGrq7H?U>wCkOvi3jlRNfVs9Dc45cPUDuZ^6so4cJF?%Tn3qMnd`VPRpoD)*r3Kw>Yz<_dxXV(kb7 zw}0k@6fKPC0+g#9H#nS1|KAR2-3)PcI4rdX6scv3?d_vJ#T!nCR1_BvU_q*#WTM#t zdmg^eLjW6J=LtEE1@0dl90aN@uhXE@Vrvtoa5Z4%uJqwy6|ENFPsQf|)Jo+vin0_< z5vV!<@O?e7tNJz8ii(O%>yIAM1vxr8nn4r`dP1b}E1dmKx6D{E9zD++*xTSY6?#>{ z7Qu*_1*VKg&w)RSi2Yq*($U!12yiH-;eXeh?WRg?yYR)e>Hb%q|NrTJa-{!#!%E1; zP^x;Cn9t^DCe!VI#+JBRPr6w2a|Q_CT7SGrn{OQ^^FPN5$rATNgfJ?n0L+yGvfw@e z%?{8pG<4`fdR)on7r=2NBO?K+L%y*{CGA5(0=HQgoUNkO74WA1I7&XEsDDlYA|P-B z5b;>HWcFIQQA_RuKpmYY3UQyxhT{cXZKT%J)Tp9A#u~;F4waaYxOf0Sxy~&BOwO#9 zAq3D?fIhY#^-=goMzSrw1Z{J)b{3^YLXg*9`4fs8u-sA zB5Vc^SGqMdHC1gAA8q42lO~r;Ik^ZB%bkjjcAHZ1-PBAo}Q5F`T&pt2(14z z_QL$9O1U6mmjAn(V6?g@D5Ra1`u~$t{GM&}%c0+MaiDU|pMC4CKxmjr;?TlDE8P%L zyy6v-yo>c)_gXQb!MI$a(ujR+D6GuE8#mVj9bFoqjKePQ=ff&4y9&e1++XEeu&bv zQk1>nx8s;9O3oef9_n28y~VZ`<2K(%5s#q~I!1N3k^iWn{dcH<&CrgDhVUpwlGDV9DdiEcpW{%up`;@qsyI{GgoV@aO0>R?1DQbV#5>>=^*UmUe#E$t<4KD^K&9`J_gXA6>XYAP z2Gj7A@7RzVBRMtT`CdH%AI}~27J%CK5wkbtd{1#!G^am^J{nYGJ5d;lP2x0DY4&h` zXKXTAZbY#sulEafqAXRXTdK$7y8cSi$ECWW>CfjTx6Le{KWVg6`@oa^gzf{vgXzi2 z8%yB&s_RlqH$K<7!v=Vazk7nTn@H%@a2{gWWd?zqcix4~g+nQF3P^Bet50IB34(?C zz!0}T!}>s!?@X2LwU62sW$IX`$-SzqyZct(4Ty6letUI5l7PQKlVOE4a^HA56sI=1 z=$ap_{;0#CSgC&)k42${yLewLcxenvhdl9N#q`V}_|U!*M$s2b(E!9e@G&-S9=BD^roKVw-#>P)G zR$p?zA9OrOfFXUa0U=LK^3EM4Pof6g{z=f0ys)#ZVe#!BUO;sdoazAL;?OyRf`A6l zh|)(hMg17d-`14?2{mx^dcWo1Q4aZ3QH!(Te0zut0g}8);WTI4>6VU z3jjhZ^B*+;1Y^k4PsKFk=F+u<4hSA2>g+Y*0SsUqa5lNY;sRh2mB|nB4xlJNit-X_ zTn@%Y)I0865$zyjqq-&4b;9AV?=~z0)g~!x$p2Inzxmqu!Vg+ds#^6_canR%sNdP% z;Kti^WpRz|LC4(%wRzivs-z7-Gk||4`-EPdY^I)1ieJoI{OAXE{87gvppm#elx?P_ zj{Q03*svhqk>dI5_SQcp_*jUVFj&X+u!lhXOC*!a7euO|Yvc(SN)UGwgwO` zJ^q@!4LgPeUVbmOUuwV8)-~F2j|Hz_)f56Ig$oEt{a; zVhGtx$_wawQUf&9R{W~+`@?Wae&@wj08mJT^B2v8qsz)husi9xt9VKm=-piHF-0 zK+4|qu?^12+6)BT6A;BazB1JHV#AvIB3wdk1MAbrdATK2o1~FR-y289h@&jYjSI^& z0&c&4rUDLo04lL+F-Bsq5uuS4bm3crj_{_Qe|PR}u0`4nU*0#8+7^lCzzcd+&IOaT z`K>-wi?PeH$g6B^FeH3?x&}H{(SH4dd@Y)U%bMzb->aj0CIgr$kZdtuiUV-0Z=o6} z{_;P)_UEqvcuszi{HOFOl{eC$_j;m&%NJwc?SkFiT_A!pb^6p8#w72Lp4GD_*eY4; zECCATfa({mxg;RL((z;D>QaI*RE%n$+0vkTK>&4gr@RI4+xy{sq4+PkqH4C5%W~|U zNG0{Xc3wVO6h9lYoKiTAekh3PFpLGh^s~0I@)5j`A>-SkcX}Qj);nI4@c}YwR5NPi z{_7>YgUWB0r>EHxtDJ2gOc$qq0x*NM=iF3!Lsd1e4N_#+7Gnx5%OgU9+aI%`R!G{m z;b-uwhZ9hyW;$|36TFM;V=#2LMtF_Jj@Mz|e^++G)VV>C;lOx*fChlNvNGEh!;6Vo zH$(Jv5T=)wyL%m?NZa`*|5Ytw&{32@&`GaiV>WWo!|+I3(_Twe)w5UY>)$BV!zdX2 z(;3(6S94XE~OYBjnu$Tp!5Qm(qb*}4+8!ifmYLCIsAiJ>yeK^Ghlr{ zPavLJa$k}UA^;E_a%8u38vF@V4(pEs1@l76MgT;u3~&)@f4KL{W+|<{;gs-CB#|y?0uj-S0Dm zN?{#C(CS|vnrb@|jK!dpgP$6mrkRobvB4t#>uk@*s;{nPDNKJhH^SZ(MW5}tN$ zEroMyBJDa{NdG{bx{2f8s;egE=M94s-jM2evv}g4jn~F9jJ8$(sMlBYd_3C*$?(XB~RI1`ySHr6) z&VIOS5j1`DPKS+cF`B#VF;;6jhl5GXHyx#W$~W(zWpC@aD-uZO-CCaLJ>3MFLG+9~ zJil0FOgmrD$ONaGRO4mMUPc(M=H!_G_>6C#`F0N(vZKutW^4NGFVXZl&et3Gv@Rvi#>uJv}4SY}qTgT}e*u@o0f?XWR%2WZQyRFx_h zmBFcey5SJZxfbRZI)g^YClUU0;8f$G{Vb%<_?8pQjCoqp+yi`rf=%TZ8rNzO?CT z2SQYEps05w?e6YyU(eASdB%EiSFxbVov)nAdHzWNq*1BlNXBjY9q1T}0*#HBc7Qq0 zKX|0Y?tWO2Sn}N|0}2P%y?}uwfLy4-_zuR+8KIv&p-D-ESoxOMgJ>w_Lq>Vza%yF- zd?q{j_|h%LBp<{Ak)nn_$>tREwRjRRshGYz^5r00nFer3A~*UG*fjAI5)vBrDlk&>hP>|K$7TWX`E2_S!}B_q@+T+{EQBb>)t7T~op|r_3M) zb0U!wqSiJ-KvlszajQlbD~HHWgdog&I^>zet0$j7O9@8~oC2LOr}#8m_S=i4AW1f? zC+$$>YcXB9=XDF8q`oU1=siq)fc}lTN8;95pzCzpK2T--Y$8dCu6wLwI!dqBYC4s@Vv6*Q`N@R1XFE@Aj_3l zVfM|j*H99q<3|;(f7cX$n6O|H z3pI{le$#D5Ed72zli`41RmkxN7D+-XgifX3%Ywd5s)wVY+`dg6;k*F5ztk2{$5>Go zMxhGPc?2pyzw2{C)kK6W)qiEvBpze+9YfktHQ1pyIkkkeF>?j0;34>y-mUJ_`&%pVTu(2A}Utk0n#I$_7_iIi2WXaO08lzv$sI z!D@AxyEwQ!jn2~)J<5)h(rdo+z7BK}KE15KG=XvXj{U~O*Qp>9?Um-?a!pE0Q^e`q zFrJmP-V; z)n&pH=m;~Xxwt6=_Q?SR15I1N^=N5eH6OVnibKJ3nrCx1ur?mg0390s6$R1_@Tv0( z((#E2_0J{(^DSP^T3X53*`k=)28AW14+U*uKQm(52z-AySi(LWv3X91sJ;$lpJ}Al z17tjNmo*Lf>xx!B<)M=kVj}M$u-4?jMyg;nNSf}2B=PQdP=AMMslt|X=ogzUaw^!B z?zr!chH8tS97pX(qKym~qCZHS8 z#Rz*Jnkp$_<=&lWGHRD-MaIWBNbb`Bzu-vcvbC(tXaf?F=E?CfFCQOI7hBWU1nM`y z(TkPWdU~&3r#rqvLChdVxiar{8{b=?yy#ybBqAaMR0pE)fWv3pUn3KQwjZdGkRBeM k#25qThmf8;rUg_aUf1@MjsE_>z!fCLmuhn5GN!@*1+qswe*gdg From cdd30a72fe00f09b8f9ac101dcc91412966a68bd Mon Sep 17 00:00:00 2001 From: daewoongoh Date: Thu, 3 Sep 2026 18:53:05 +0900 Subject: [PATCH 3/4] fix: gate model selector loading state on router models query The unsupported-provider fallback could flash briefly for a dynamic provider whose router-models query was still loading but whose selected-model resolution had already finished. Gate both the fallback and the loading label on routerModels.isLoading as well. --- .../src/components/chat/ModelSelector.tsx | 11 +- .../chat/__tests__/ModelSelector.spec.tsx | 122 ++++++++++++++++-- 2 files changed, 120 insertions(+), 13 deletions(-) diff --git a/webview-ui/src/components/chat/ModelSelector.tsx b/webview-ui/src/components/chat/ModelSelector.tsx index 75faa92c00..e8606340e5 100644 --- a/webview-ui/src/components/chat/ModelSelector.tsx +++ b/webview-ui/src/components/chat/ModelSelector.tsx @@ -181,8 +181,11 @@ export const ModelSelector = ({ // While a dynamic provider's model list is still loading, keep the trigger // visible (showing the loading label) instead of falling back to the // unsupported-provider shortcut. Only show the unsupported fallback once we - // know the provider genuinely has no selectable models. - if (!isSupported && !isLoading) { + // know the provider genuinely has no selectable models. The loading gate + // checks both the selected-model resolution (useSelectedModel) and the + // router-models query (useRouterModels) so a dynamic provider whose model + // list hasn't resolved yet never flashes the unsupported shortcut. + if (!isSupported && !isLoading && !routerModels.isLoading) { return (