feat(coding-agent): add keybinding actions for /tree, /fork, and /new

Add newSession, tree, and fork as configurable keybinding actions.
All unbound by default. Users can configure in keybindings.json.

Closes #1088
This commit is contained in:
Juan Ibiapina 2026-01-31 13:22:31 +01:00 committed by Mario Zechner
parent d075291b08
commit 6f2d066342
4 changed files with 25 additions and 1 deletions

View file

@ -28,7 +28,10 @@ export type AppAction =
| "externalEditor"
| "followUp"
| "dequeue"
| "pasteImage";
| "pasteImage"
| "newSession"
| "tree"
| "fork";
/**
* All configurable actions.
@ -60,6 +63,9 @@ export const DEFAULT_APP_KEYBINDINGS: Record<AppAction, KeyId | KeyId[]> = {
followUp: "alt+enter",
dequeue: "alt+up",
pasteImage: "ctrl+v",
newSession: [],
tree: [],
fork: [],
};
/**
@ -86,6 +92,9 @@ const APP_ACTIONS: AppAction[] = [
"followUp",
"dequeue",
"pasteImage",
"newSession",
"tree",
"fork",
];
function isAppAction(action: string): action is AppAction {

View file

@ -1776,6 +1776,9 @@ export class InteractiveMode {
this.defaultEditor.onAction("externalEditor", () => this.openExternalEditor());
this.defaultEditor.onAction("followUp", () => this.handleFollowUp());
this.defaultEditor.onAction("dequeue", () => this.handleDequeue());
this.defaultEditor.onAction("newSession", () => this.handleClearCommand());
this.defaultEditor.onAction("tree", () => this.showTreeSelector());
this.defaultEditor.onAction("fork", () => this.showUserMessageSelector());
this.defaultEditor.onChange = (text: string) => {
const wasBashMode = this.isBashMode;