summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMichal Šlesár <[email protected]>2026-03-16 15:13:29 +0100
committerGitHub <[email protected]>2026-03-16 19:43:29 +0530
commit15b27e0d182b0b5db0eae45d2cc9ac1c670dd381 (patch)
treebb6bcb4f6df3bc17df1bff091033c2cd71870888
parentc523aac586b5b5d3d59143f19cad65c935090e4e (diff)
downloadopencode-15b27e0d182b0b5db0eae45d2cc9ac1c670dd381.tar.gz
opencode-15b27e0d182b0b5db0eae45d2cc9ac1c670dd381.zip
fix(app): agent switch should not reset thinking level (#17470)
-rw-r--r--packages/app/e2e/session/session-model-persistence.spec.ts22
-rw-r--r--packages/app/src/context/local.tsx5
2 files changed, 25 insertions, 2 deletions
diff --git a/packages/app/e2e/session/session-model-persistence.spec.ts b/packages/app/e2e/session/session-model-persistence.spec.ts
index 4b09a5287..933d5e6f9 100644
--- a/packages/app/e2e/session/session-model-persistence.spec.ts
+++ b/packages/app/e2e/session/session-model-persistence.spec.ts
@@ -349,3 +349,25 @@ test("session model restore across workspaces", async ({ page, withProject }) =>
await waitFooter(page, firstState)
})
})
+
+test("variant preserved when switching agent modes", async ({ page, withProject }) => {
+ await page.setViewportSize({ width: 1440, height: 900 })
+
+ await withProject(async ({ directory, gotoSession }) => {
+ await gotoSession()
+
+ await ensureVariant(page, directory)
+ const updated = await chooseDifferentVariant(page)
+
+ const available = await agents(page)
+ const other = available.find((name) => name !== updated.agent)
+ test.skip(!other, "only one agent available")
+ if (!other) return
+
+ await choose(page, promptAgentSelector, other)
+ await waitFooter(page, { agent: other, variant: updated.variant })
+
+ await choose(page, promptAgentSelector, updated.agent)
+ await waitFooter(page, { agent: updated.agent, variant: updated.variant })
+ })
+})
diff --git a/packages/app/src/context/local.tsx b/packages/app/src/context/local.tsx
index bed7ecd15..76d337c82 100644
--- a/packages/app/src/context/local.tsx
+++ b/packages/app/src/context/local.tsx
@@ -192,10 +192,11 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
model: item.model,
variant: item.variant ?? null,
})
+ const prev = scope()
const next = {
agent: item.name,
- model: item.model,
- variant: item.variant,
+ model: item.model ?? prev?.model,
+ variant: item.variant ?? prev?.variant,
} satisfies State
const session = id()
if (session) {