diff --git a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx index 5288a819b3c9..aac5a31f4770 100644 --- a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx @@ -238,6 +238,9 @@ export function Prompt(props: PromptProps) { syncedSessionID = sessionID + const shouldSync = kv.get("sync_prompt_context_on_session_switch", true) + if (!shouldSync) return + // Only set agent if it's a primary agent (not a subagent) const isPrimaryAgent = local.agent.list().some((x) => x.name === msg.agent) if (msg.agent && isPrimaryAgent) { 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 516f406aea07..7971c0fb77af 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -165,6 +165,7 @@ export function Session() { const [diffWrapMode] = kv.signal<"word" | "none">("diff_wrap_mode", "word") const [_animationsEnabled, _setAnimationsEnabled] = kv.signal("animations_enabled", true) const [showGenericToolOutput, setShowGenericToolOutput] = kv.signal("generic_tool_output_visibility", false) + const [syncPromptContext, setSyncPromptContext] = kv.signal("sync_prompt_context_on_session_switch", true) const wide = createMemo(() => dimensions().width > 120) const sidebarVisible = createMemo(() => { @@ -682,6 +683,15 @@ export function Session() { dialog.clear() }, }, + { + title: syncPromptContext() ? "Keep model/agent when switching sessions" : "Restore model/agent per session", + value: "session.toggle.sync_prompt_context", + category: "Session", + onSelect: (dialog) => { + setSyncPromptContext((prev) => !prev) + dialog.clear() + }, + }, { title: "Page up", value: "session.page.up", @@ -1064,8 +1074,8 @@ export function Session() { paddingLeft: 1, visible: showScrollbar(), trackOptions: { - backgroundColor: theme.backgroundElement, - foregroundColor: theme.border, + backgroundColor: theme.background, + foregroundColor: theme.borderActive, }, }} stickyScroll={true} diff --git a/packages/sdk/js/openapi.json b/packages/sdk/js/openapi.json new file mode 100644 index 000000000000..e69de29bb2d1