diff --git a/packages/opencode/src/cli/cmd/tui/context/local.tsx b/packages/opencode/src/cli/cmd/tui/context/local.tsx index 998739f1..c2db8544 100644 --- a/packages/opencode/src/cli/cmd/tui/context/local.tsx +++ b/packages/opencode/src/cli/cmd/tui/context/local.tsx @@ -158,10 +158,10 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ } } const provider = sync.data.provider[0] - const model = Object.values(provider.models)[0] + const model = sync.data.provider_default[provider.id] ?? Object.values(provider.models)[0].id return { providerID: provider.id, - modelID: model.id, + modelID: model, } }) diff --git a/packages/opencode/src/cli/cmd/tui/context/sync.tsx b/packages/opencode/src/cli/cmd/tui/context/sync.tsx index 2c994a4a..74fea2fd 100644 --- a/packages/opencode/src/cli/cmd/tui/context/sync.tsx +++ b/packages/opencode/src/cli/cmd/tui/context/sync.tsx @@ -19,7 +19,7 @@ import { Binary } from "@/util/binary" import { createSimpleContext } from "./helper" import type { Snapshot } from "@/snapshot" import { useExit } from "./exit" -import { onMount } from "solid-js" +import { batch, onMount } from "solid-js" export const { use: useSync, provider: SyncProvider } = createSimpleContext({ name: "Sync", @@ -27,6 +27,7 @@ export const { use: useSync, provider: SyncProvider } = createSimpleContext({ const [store, setStore] = createStore<{ status: "loading" | "partial" | "complete" provider: Provider[] + provider_default: Record agent: Agent[] command: Command[] permission: { @@ -61,6 +62,7 @@ export const { use: useSync, provider: SyncProvider } = createSimpleContext({ permission: {}, command: [], provider: [], + provider_default: {}, session: [], session_status: {}, session_diff: {}, @@ -233,7 +235,12 @@ export const { use: useSync, provider: SyncProvider } = createSimpleContext({ onMount(() => { // blocking Promise.all([ - sdk.client.config.providers({ throwOnError: true }).then((x) => setStore("provider", x.data!.providers)), + sdk.client.config.providers({ throwOnError: true }).then((x) => { + batch(() => { + setStore("provider", x.data!.providers) + setStore("provider_default", x.data!.default) + }) + }), sdk.client.app.agents({ throwOnError: true }).then((x) => setStore("agent", x.data ?? [])), sdk.client.config.get({ throwOnError: true }).then((x) => setStore("config", x.data!)), ]) diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index b15df8b9..62b08d95 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -627,7 +627,7 @@ export namespace Provider { } } - const priority = ["gemini-2.5-pro-preview", "gpt-5", "claude-sonnet-4"] + const priority = ["gemini-2.5-pro-preview", "gpt-5", "claude-sonnet-4", "big-pickle"] export function sort(models: ModelsDev.Model[]) { return sortBy( models,