Skip to content

Commit c417f43

Browse files
authored
feat: Update Ollama UI to use text inputs (#5818)
1 parent fb374b3 commit c417f43

File tree

1 file changed

+38
-24
lines changed

1 file changed

+38
-24
lines changed

webview-ui/src/components/chat/CodeIndexPopover.tsx

Lines changed: 38 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,10 @@ const createValidationSchema = (provider: EmbedderProvider, t: any) => {
9797
.min(1, t("settings:codeIndex.validation.ollamaBaseUrlRequired"))
9898
.url(t("settings:codeIndex.validation.invalidOllamaUrl")),
9999
codebaseIndexEmbedderModelId: z.string().min(1, t("settings:codeIndex.validation.modelIdRequired")),
100+
codebaseIndexEmbedderModelDimension: z
101+
.number()
102+
.min(1, t("settings:codeIndex.validation.modelDimensionRequired"))
103+
.optional(),
100104
})
101105

102106
case "openai-compatible":
@@ -709,40 +713,50 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
709713
<label className="text-sm font-medium">
710714
{t("settings:codeIndex.modelLabel")}
711715
</label>
712-
<VSCodeDropdown
713-
value={currentSettings.codebaseIndexEmbedderModelId}
714-
onChange={(e: any) =>
716+
<VSCodeTextField
717+
value={currentSettings.codebaseIndexEmbedderModelId || ""}
718+
onInput={(e: any) =>
715719
updateSetting("codebaseIndexEmbedderModelId", e.target.value)
716720
}
721+
placeholder={t("settings:codeIndex.modelPlaceholder")}
717722
className={cn("w-full", {
718723
"border-red-500": formErrors.codebaseIndexEmbedderModelId,
719-
})}>
720-
<VSCodeOption value="" className="p-2">
721-
{t("settings:codeIndex.selectModel")}
722-
</VSCodeOption>
723-
{getAvailableModels().map((modelId) => {
724-
const model =
725-
codebaseIndexModels?.[
726-
currentSettings.codebaseIndexEmbedderProvider
727-
]?.[modelId]
728-
return (
729-
<VSCodeOption key={modelId} value={modelId} className="p-2">
730-
{modelId}{" "}
731-
{model
732-
? t("settings:codeIndex.modelDimensions", {
733-
dimension: model.dimension,
734-
})
735-
: ""}
736-
</VSCodeOption>
737-
)
738724
})}
739-
</VSCodeDropdown>
725+
/>
740726
{formErrors.codebaseIndexEmbedderModelId && (
741727
<p className="text-xs text-vscode-errorForeground mt-1 mb-0">
742728
{formErrors.codebaseIndexEmbedderModelId}
743729
</p>
744730
)}
745731
</div>
732+
733+
<div className="space-y-2">
734+
<label className="text-sm font-medium">
735+
{t("settings:codeIndex.modelDimensionLabel")}
736+
</label>
737+
<VSCodeTextField
738+
value={
739+
currentSettings.codebaseIndexEmbedderModelDimension?.toString() ||
740+
""
741+
}
742+
onInput={(e: any) => {
743+
const value = e.target.value
744+
? parseInt(e.target.value, 10) || undefined
745+
: undefined
746+
updateSetting("codebaseIndexEmbedderModelDimension", value)
747+
}}
748+
placeholder={t("settings:codeIndex.modelDimensionPlaceholder")}
749+
className={cn("w-full", {
750+
"border-red-500":
751+
formErrors.codebaseIndexEmbedderModelDimension,
752+
})}
753+
/>
754+
{formErrors.codebaseIndexEmbedderModelDimension && (
755+
<p className="text-xs text-vscode-errorForeground mt-1 mb-0">
756+
{formErrors.codebaseIndexEmbedderModelDimension}
757+
</p>
758+
)}
759+
</div>
746760
</>
747761
)}
748762

@@ -835,7 +849,7 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
835849
}
836850
onInput={(e: any) => {
837851
const value = e.target.value
838-
? parseInt(e.target.value)
852+
? parseInt(e.target.value, 10) || undefined
839853
: undefined
840854
updateSetting("codebaseIndexEmbedderModelDimension", value)
841855
}}

0 commit comments

Comments
 (0)