From c49f5939a2612273ac3900d7baf4a50faf748f3d Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Mon, 3 Nov 2025 19:52:38 -0500 Subject: [PATCH] tui: fix model selection for models with nested paths Users can now select models with multiple slashes like 'openrouter/google/gemini-2.5-pro' in the TUI. Previously the TUI would only parse the first two parts of the model path, showing 'Invalid model openrouter/google' for nested models. --- packages/opencode/src/cli/cmd/tui/context/local.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/opencode/src/cli/cmd/tui/context/local.tsx b/packages/opencode/src/cli/cmd/tui/context/local.tsx index 7156a331..69e73176 100644 --- a/packages/opencode/src/cli/cmd/tui/context/local.tsx +++ b/packages/opencode/src/cli/cmd/tui/context/local.tsx @@ -9,6 +9,7 @@ import { iife } from "@/util/iife" import { createSimpleContext } from "./helper" import { useToast } from "../ui/toast" import { createEventBus } from "@solid-primitives/event-bus" +import { Provider } from "@/provider/provider" export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ name: "Local", @@ -38,7 +39,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ agent.set(props.initialAgent) } if (props.initialModel) { - const [providerID, modelID] = props.initialModel.split("/") + const { providerID, modelID } = Provider.parseModel(props.initialModel) if (!providerID || !modelID) return toast.show({ variant: "warning", @@ -150,7 +151,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ const fallbackModel = createMemo(() => { if (sync.data.config.model) { - const [providerID, modelID] = sync.data.config.model.split("/") + const { providerID, modelID } = Provider.parseModel(sync.data.config.model) if (isModelValid({ providerID, modelID })) { return { providerID, @@ -243,8 +244,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ const setInitialPrompt = createEventBus() onMount(() => { - if (props.initialPrompt) - setInitialPrompt.emit(props.initialPrompt) + if (props.initialPrompt) setInitialPrompt.emit(props.initialPrompt) }) const result = {