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..c24ac6b257e 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,22 @@ export function Session() { } }) + // 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) + }, + ), + ) + // Auto-navigate to whichever session currently needs permission input createEffect(() => { const currentSession = session() @@ -277,8 +294,6 @@ export function Session() { }, 50) } - const local = useLocal() - function moveChild(direction: number) { const parentID = session()?.parentID ?? session()?.id let children = sync.data.session