From e8d6cd14ae22adbf0e99ee6a9bfb0b6d0bcaf2ed Mon Sep 17 00:00:00 2001 From: Shpetim Date: Thu, 25 Dec 2025 15:44:01 +0100 Subject: [PATCH 1/2] feat(session): set model to last used on session change --- .../src/cli/cmd/tui/routes/session/index.tsx | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx index 818b96da43b..a47387e7d6a 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -168,6 +168,7 @@ export function Session() { const toast = useToast() const sdk = useSDK() + const local = useLocal() // Handle initial prompt from fork createEffect(() => { @@ -176,6 +177,19 @@ export function Session() { } }) + // On session change, set model to last used model + createEffect( + on( + () => session()?.id, + (sessionId) => { + const lastUserMessage = sync.data.message[sessionId]?.findLast((x) => x.role === "user") + if (!lastUserMessage) return + + local.model.set(lastUserMessage.model) + }, + ), + ) + // Auto-navigate to whichever session currently needs permission input createEffect(() => { const currentSession = session() @@ -277,8 +291,6 @@ export function Session() { }, 50) } - const local = useLocal() - function moveChild(direction: number) { const parentID = session()?.parentID ?? session()?.id let children = sync.data.session From 27f85df714806fe01780b22fe47a9a97cbc2d1ef Mon Sep 17 00:00:00 2001 From: Shpetim Date: Thu, 25 Dec 2025 21:33:18 +0100 Subject: [PATCH 2/2] add agent auto selection on session change --- packages/opencode/src/cli/cmd/tui/routes/session/index.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx index a47387e7d6a..c24ac6b257e 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -177,15 +177,18 @@ export function Session() { } }) - // On session change, set model to last used model + // On session change, set model/agent to last used createEffect( on( () => session()?.id, (sessionId) => { const lastUserMessage = sync.data.message[sessionId]?.findLast((x) => x.role === "user") if (!lastUserMessage) return - local.model.set(lastUserMessage.model) + + const agent = sync.data.agent.find((x) => x.name === lastUserMessage.agent) + if (agent?.mode === "subagent" || agent?.hidden) return + local.agent.set(lastUserMessage.agent) }, ), )