summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRohan Godha <[email protected]>2025-12-22 15:50:45 -0500
committerGitHub <[email protected]>2025-12-22 14:50:45 -0600
commit25f1643e8e5481b82ee6e770e97877ff86369b95 (patch)
treeeb0f2432f198850bd390d388270c6078d19ee3af
parente015bea4627e401d646ebde89ea930befcc54164 (diff)
downloadopencode-25f1643e8e5481b82ee6e770e97877ff86369b95.tar.gz
opencode-25f1643e8e5481b82ee6e770e97877ff86369b95.zip
feat(tui): go to parent keybind for subagents (#5762)
-rw-r--r--packages/opencode/src/cli/cmd/tui/routes/session/header.tsx3
-rw-r--r--packages/opencode/src/cli/cmd/tui/routes/session/index.tsx17
-rw-r--r--packages/opencode/src/config/config.ts1
-rw-r--r--packages/sdk/js/src/v2/gen/types.gen.ts4
-rw-r--r--packages/sdk/openapi.json5
5 files changed, 30 insertions, 0 deletions
diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/header.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/header.tsx
index bfdbfa51b..098ee83cc 100644
--- a/packages/opencode/src/cli/cmd/tui/routes/session/header.tsx
+++ b/packages/opencode/src/cli/cmd/tui/routes/session/header.tsx
@@ -82,6 +82,9 @@ export function Header() {
<b>Subagent session</b>
</text>
<text fg={theme.text}>
+ Parent <span style={{ fg: theme.textMuted }}>{keybind.print("session_parent")}</span>
+ </text>
+ <text fg={theme.text}>
Prev <span style={{ fg: theme.textMuted }}>{keybind.print("session_child_cycle_reverse")}</span>
</text>
<text fg={theme.text}>
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 3b1c58966..029a012f8 100644
--- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
+++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
@@ -870,6 +870,23 @@ export function Session() {
dialog.clear()
},
},
+ {
+ title: "Go to parent session",
+ value: "session.parent",
+ keybind: "session_parent",
+ category: "Session",
+ disabled: true,
+ onSelect: (dialog) => {
+ const parentID = session()?.parentID
+ if (parentID) {
+ navigate({
+ type: "session",
+ sessionID: parentID,
+ })
+ }
+ dialog.clear()
+ },
+ },
])
const revertInfo = createMemo(() => session()?.revert)
diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts
index daf81f434..6520fb3ab 100644
--- a/packages/opencode/src/config/config.ts
+++ b/packages/opencode/src/config/config.ts
@@ -562,6 +562,7 @@ export namespace Config {
history_next: z.string().optional().default("down").describe("Next history item"),
session_child_cycle: z.string().optional().default("<leader>right").describe("Next child session"),
session_child_cycle_reverse: z.string().optional().default("<leader>left").describe("Previous child session"),
+ session_parent: z.string().optional().default("<leader>up").describe("Go to parent session"),
terminal_suspend: z.string().optional().default("ctrl+z").describe("Suspend terminal"),
terminal_title_toggle: z.string().optional().default("none").describe("Toggle terminal title"),
})
diff --git a/packages/sdk/js/src/v2/gen/types.gen.ts b/packages/sdk/js/src/v2/gen/types.gen.ts
index e3249848c..4eeeceb55 100644
--- a/packages/sdk/js/src/v2/gen/types.gen.ts
+++ b/packages/sdk/js/src/v2/gen/types.gen.ts
@@ -1123,6 +1123,10 @@ export type KeybindsConfig = {
*/
session_child_cycle_reverse?: string
/**
+ * Go to parent session
+ */
+ session_parent?: string
+ /**
* Suspend terminal
*/
terminal_suspend?: string
diff --git a/packages/sdk/openapi.json b/packages/sdk/openapi.json
index a1576668a..455bd51f8 100644
--- a/packages/sdk/openapi.json
+++ b/packages/sdk/openapi.json
@@ -7598,6 +7598,11 @@
"default": "<leader>left",
"type": "string"
},
+ "session_parent": {
+ "description": "Go to parent session",
+ "default": "<leader>up",
+ "type": "string"
+ },
"terminal_suspend": {
"description": "Suspend terminal",
"default": "ctrl+z",