diff --git a/packages/tui/src/config/keybind.ts b/packages/tui/src/config/keybind.ts index 0028b610f..bab39083d 100644 --- a/packages/tui/src/config/keybind.ts +++ b/packages/tui/src/config/keybind.ts @@ -83,6 +83,7 @@ export const Definitions = { session_export: keybind("x", "Export session to editor"), session_copy: keybind("none", "Copy session transcript"), + session_move: keybind("none", "Move session"), session_new: keybind("n", "Create a new session"), session_list: keybind("l", "List all sessions"), session_timeline: keybind("g", "Show session timeline"), @@ -287,6 +288,7 @@ export const CommandMap = { status_view: "opencode.status", session_export: "session.export", session_copy: "session.copy", + session_move: "session.move", session_new: "session.new", session_list: "session.list", session_timeline: "session.timeline", diff --git a/packages/tui/test/config.test.tsx b/packages/tui/test/config.test.tsx index 1ccb0986d..82d7cf933 100644 --- a/packages/tui/test/config.test.tsx +++ b/packages/tui/test/config.test.tsx @@ -80,6 +80,12 @@ test("resolves overrides without mutating input", () => { expect(input.keybinds).toEqual({ session_list: "ctrl+l" }) }) +test("resolves a session move keybind", () => { + const config = resolve({ keybinds: { session_move: "ctrl+o" } }, { terminalSuspend: true }) + + expect(config.keybinds.get("session.move")).toMatchObject([{ key: "ctrl+o" }]) +}) + test("disables suspend and assigns ctrl+z to undo when unsupported", () => { const config = resolve({}, { terminalSuspend: false }) diff --git a/packages/web/src/content/docs/keybinds.mdx b/packages/web/src/content/docs/keybinds.mdx index 85a323d61..86f67dfd7 100644 --- a/packages/web/src/content/docs/keybinds.mdx +++ b/packages/web/src/content/docs/keybinds.mdx @@ -34,6 +34,7 @@ OpenCode has a list of keybinds that you can customize through `tui.json`. "session_export": "x", "session_copy": "none", + "session_move": "none", "session_new": "n", "session_list": "l", "session_timeline": "g",