From ff38328c570e5a858f743c115284dd4b73944713 Mon Sep 17 00:00:00 2001 From: Daniel Riccio Date: Thu, 17 Jul 2025 10:28:14 -0500 Subject: [PATCH 1/2] feat: update Ollama UI to use text inputs for model and dimensions - Replace dropdown with text input for model selection in Ollama provider - Add model dimension text input field for Ollama provider - Update validation schema to include optional dimension validation - Reuse existing codebaseIndexEmbedderModelDimension property - Make Ollama configuration consistent with OpenAI-compatible provider --- .../src/components/chat/CodeIndexPopover.tsx | 60 ++++++++++++------- 1 file changed, 37 insertions(+), 23 deletions(-) diff --git a/webview-ui/src/components/chat/CodeIndexPopover.tsx b/webview-ui/src/components/chat/CodeIndexPopover.tsx index b5742cc623a..726ff03d442 100644 --- a/webview-ui/src/components/chat/CodeIndexPopover.tsx +++ b/webview-ui/src/components/chat/CodeIndexPopover.tsx @@ -97,6 +97,10 @@ const createValidationSchema = (provider: EmbedderProvider, t: any) => { .min(1, t("settings:codeIndex.validation.ollamaBaseUrlRequired")) .url(t("settings:codeIndex.validation.invalidOllamaUrl")), codebaseIndexEmbedderModelId: z.string().min(1, t("settings:codeIndex.validation.modelIdRequired")), + codebaseIndexEmbedderModelDimension: z + .number() + .min(1, t("settings:codeIndex.validation.modelDimensionRequired")) + .optional(), }) case "openai-compatible": @@ -709,40 +713,50 @@ export const CodeIndexPopover: React.FC = ({ - + updateSetting("codebaseIndexEmbedderModelId", e.target.value) } + placeholder={t("settings:codeIndex.modelPlaceholder")} className={cn("w-full", { "border-red-500": formErrors.codebaseIndexEmbedderModelId, - })}> - - {t("settings:codeIndex.selectModel")} - - {getAvailableModels().map((modelId) => { - const model = - codebaseIndexModels?.[ - currentSettings.codebaseIndexEmbedderProvider - ]?.[modelId] - return ( - - {modelId}{" "} - {model - ? t("settings:codeIndex.modelDimensions", { - dimension: model.dimension, - }) - : ""} - - ) })} - + /> {formErrors.codebaseIndexEmbedderModelId && (

{formErrors.codebaseIndexEmbedderModelId}

)} + +
+ + { + const value = e.target.value + ? parseInt(e.target.value) + : undefined + updateSetting("codebaseIndexEmbedderModelDimension", value) + }} + placeholder={t("settings:codeIndex.modelDimensionPlaceholder")} + className={cn("w-full", { + "border-red-500": + formErrors.codebaseIndexEmbedderModelDimension, + })} + /> + {formErrors.codebaseIndexEmbedderModelDimension && ( +

+ {formErrors.codebaseIndexEmbedderModelDimension} +

+ )} +
)} From c306e78e5c003a8de896eabd28aa9accf0cefe8a Mon Sep 17 00:00:00 2001 From: Daniel Riccio Date: Thu, 17 Jul 2025 10:38:53 -0500 Subject: [PATCH 2/2] fix: add radix to parseInt and handle NaN cases - Add radix parameter (10) to parseInt calls for dimension fields - Handle NaN cases by using || undefined pattern - Fix both Ollama and OpenAI-compatible provider dimension parsing --- webview-ui/src/components/chat/CodeIndexPopover.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webview-ui/src/components/chat/CodeIndexPopover.tsx b/webview-ui/src/components/chat/CodeIndexPopover.tsx index 726ff03d442..4385e2e8446 100644 --- a/webview-ui/src/components/chat/CodeIndexPopover.tsx +++ b/webview-ui/src/components/chat/CodeIndexPopover.tsx @@ -741,7 +741,7 @@ export const CodeIndexPopover: React.FC = ({ } onInput={(e: any) => { const value = e.target.value - ? parseInt(e.target.value) + ? parseInt(e.target.value, 10) || undefined : undefined updateSetting("codebaseIndexEmbedderModelDimension", value) }} @@ -849,7 +849,7 @@ export const CodeIndexPopover: React.FC = ({ } onInput={(e: any) => { const value = e.target.value - ? parseInt(e.target.value) + ? parseInt(e.target.value, 10) || undefined : undefined updateSetting("codebaseIndexEmbedderModelDimension", value) }}