diff --git a/packages/app/src/context/local.tsx b/packages/app/src/context/local.tsx index 9a16b4edf6c8..66f69f2e6238 100644 --- a/packages/app/src/context/local.tsx +++ b/packages/app/src/context/local.tsx @@ -1,7 +1,7 @@ import { createSimpleContext } from "@opencode-ai/ui/context" import { base64Encode } from "@opencode-ai/core/util/encode" import { useParams } from "@solidjs/router" -import { batch, createEffect, createMemo } from "solid-js" +import { batch, createEffect, createMemo, startTransition } from "solid-js" import { createStore } from "solid-js/store" import { useModels } from "@/context/models" import { useProviders } from "@/hooks/use-providers" @@ -294,19 +294,21 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ model.set({ providerID: entry.provider.id, modelID: entry.id }) }, set(item: ModelKey | undefined, options?: { recent?: boolean }) { - batch(() => { - setStore("last", { - type: "model", - agent: agent.current()?.name, - model: item ?? null, - variant: selected(), + startTransition(() => + batch(() => { + setStore("last", { + type: "model", + agent: agent.current()?.name, + model: item ?? null, + variant: selected(), + }) + write({ model: item }) + if (!item) return + models.setVisibility(item, true) + if (!options?.recent) return + models.recent.push(item) }) - write({ model: item }) - if (!item) return - models.setVisibility(item, true) - if (!options?.recent) return - models.recent.push(item) - }) + ) }, visible(item: ModelKey) { return models.visible(item) @@ -335,19 +337,21 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ return Object.keys(item.variants) }, set(value: string | undefined) { - batch(() => { - const model = current() - setStore("last", { - type: "variant", - agent: agent.current()?.name, - model: model ? { providerID: model.provider.id, modelID: model.id } : null, - variant: value ?? null, + startTransition(() => + batch(() => { + const model = current() + setStore("last", { + type: "variant", + agent: agent.current()?.name, + model: model ? { providerID: model.provider.id, modelID: model.id } : null, + variant: value ?? null, + }) + write({ variant: value ?? null }) + if (model) { + models.variant.set({ providerID: model.provider.id, modelID: model.id }, value ?? undefined) + } }) - write({ variant: value ?? null }) - if (model) { - models.variant.set({ providerID: model.provider.id, modelID: model.id }, value ?? undefined) - } - }) + ) }, cycle() { const items = this.list() diff --git a/packages/app/src/context/tabs.tsx b/packages/app/src/context/tabs.tsx index 9f7fa49ddccc..02a5ac7fd694 100644 --- a/packages/app/src/context/tabs.tsx +++ b/packages/app/src/context/tabs.tsx @@ -138,12 +138,14 @@ export const { use: useTabs, provider: TabsProvider } = createSimpleContext({ const next = { type: "session" as const, ...tab } const existing = store.find((item) => tabKey(item) === tabKey(next)) if (existing) return existing - setStore( - produce((tabs) => { - if (tabs.some((item) => tabKey(item) === tabKey(next))) return - tabs.push(next) - }), - ) + void startTransition(() => { + setStore( + produce((tabs) => { + if (tabs.some((item) => tabKey(item) === tabKey(next))) return + tabs.push(next) + }), + ) + }) return next }, reorder(keys: string[]) {