diff --git a/packages/app/src/keyboard/keyboard-shortcuts.test.ts b/packages/app/src/keyboard/keyboard-shortcuts.test.ts index 9da92dab5..5e1c905ec 100644 --- a/packages/app/src/keyboard/keyboard-shortcuts.test.ts +++ b/packages/app/src/keyboard/keyboard-shortcuts.test.ts @@ -124,8 +124,8 @@ interface HelpSectionCase { describe("keyboard-shortcuts", () => { const matchingCases: MatchingShortcutCase[] = [ { - name: "matches Mod+Shift+O to create new agent", - event: { key: "O", code: "KeyO", metaKey: true, shiftKey: true }, + name: "matches Cmd+O to open project", + event: { key: "o", code: "KeyO", metaKey: true }, context: { isMac: true }, action: "agent.new", }, @@ -227,8 +227,8 @@ describe("keyboard-shortcuts", () => { action: "workspace.tab.close.current", }, { - name: "matches Ctrl+Shift+O to create new agent on non-mac", - event: { key: "O", code: "KeyO", ctrlKey: true, shiftKey: true }, + name: "matches Ctrl+O to open project on non-mac", + event: { key: "o", code: "KeyO", ctrlKey: true }, context: { isMac: false }, action: "agent.new", }, @@ -394,6 +394,16 @@ describe("keyboard-shortcuts", () => { name: "does not keep old Alt+Shift+T binding", event: { key: "T", code: "KeyT", altKey: true, shiftKey: true }, }, + { + name: "does not keep old Cmd+Shift+O open-project binding after rebind to Cmd+O", + event: { key: "O", code: "KeyO", metaKey: true, shiftKey: true }, + context: { isMac: true }, + }, + { + name: "does not keep old Ctrl+Shift+O open-project binding after rebind to Ctrl+O", + event: { key: "O", code: "KeyO", ctrlKey: true, shiftKey: true }, + context: { isMac: false }, + }, { name: "does not match question-mark shortcut inside editable scopes", event: { key: "?", code: "Slash", shiftKey: true }, @@ -580,7 +590,7 @@ describe("keyboard-shortcut help sections", () => { name: "uses web defaults for workspace and tab jump", context: { isMac: true, isDesktop: false }, expectedKeys: { - "new-agent": ["mod", "shift", "O"], + "new-agent": ["mod", "O"], "workspace-tab-new": ["mod", "T"], "workspace-jump-index": ["alt", "1-9"], "workspace-tab-jump-index": ["alt", "shift", "1-9"], @@ -594,7 +604,7 @@ describe("keyboard-shortcut help sections", () => { name: "uses desktop defaults for workspace and tab jump", context: { isMac: true, isDesktop: true }, expectedKeys: { - "new-agent": ["mod", "shift", "O"], + "new-agent": ["mod", "O"], "new-workspace": ["mod", "N"], "workspace-tab-new": ["mod", "T"], "workspace-jump-index": ["mod", "1-9"], diff --git a/packages/app/src/keyboard/keyboard-shortcuts.ts b/packages/app/src/keyboard/keyboard-shortcuts.ts index d7b10f7fc..d865f3ca7 100644 --- a/packages/app/src/keyboard/keyboard-shortcuts.ts +++ b/packages/app/src/keyboard/keyboard-shortcuts.ts @@ -121,7 +121,6 @@ const SHORTCUT_HELP_SECTION_LABEL_KEYS: Record = { const SHORTCUT_HELP_LABEL_KEYS: Record = { "new-agent": "settings.shortcuts.help.openProject", "new-workspace": "settings.shortcuts.help.newWorkspace", - "new-worktree": "settings.shortcuts.help.newWorktree", "archive-worktree": "settings.shortcuts.help.archiveWorktree", "workspace-tab-new": "settings.shortcuts.help.newTab", "workspace-tab-close-current": "settings.shortcuts.help.closeCurrentTab", @@ -166,29 +165,33 @@ const SHORTCUT_HELP_NOTE_KEYS: Record = { // --- Binding definitions --- const SHORTCUT_BINDINGS: readonly ShortcutBinding[] = [ - // --- New agent --- + // --- Open project --- + // Open project moved from Cmd+Shift+O to Cmd+O. The binding ids intentionally + // keep their original "cmd-shift-o" / "ctrl-shift-o" names: user shortcut + // overrides are keyed by binding id, so renaming them would silently drop a + // user's customized Open project shortcut on upgrade. { id: "agent-new-cmd-shift-o-mac", action: "agent.new", - combo: "Cmd+Shift+O", + combo: "Cmd+O", when: { mac: true }, help: { id: "new-agent", section: "projects", label: "Open project", - keys: ["mod", "shift", "O"], + keys: ["mod", "O"], }, }, { id: "agent-new-ctrl-shift-o-non-mac", action: "agent.new", - combo: "Ctrl+Shift+O", + combo: "Ctrl+O", when: { mac: false, terminal: false }, help: { id: "new-agent", section: "projects", label: "Open project", - keys: ["mod", "shift", "O"], + keys: ["mod", "O"], }, }, @@ -218,32 +221,6 @@ const SHORTCUT_BINDINGS: readonly ShortcutBinding[] = [ }, }, - // --- New worktree --- - { - id: "worktree-new-cmd-o-mac", - action: "worktree.new", - combo: "Cmd+O", - when: { mac: true, commandCenter: false }, - help: { - id: "new-worktree", - section: "projects", - label: "New worktree", - keys: ["mod", "O"], - }, - }, - { - id: "worktree-new-ctrl-o-non-mac", - action: "worktree.new", - combo: "Ctrl+O", - when: { mac: false, commandCenter: false, terminal: false }, - help: { - id: "new-worktree", - section: "projects", - label: "New worktree", - keys: ["mod", "O"], - }, - }, - // --- Archive worktree --- { id: "worktree-archive-cmd-shift-backspace-mac", diff --git a/packages/desktop/src/main.ts b/packages/desktop/src/main.ts index f6a779000..1109ef564 100644 --- a/packages/desktop/src/main.ts +++ b/packages/desktop/src/main.ts @@ -90,6 +90,7 @@ const FORWARDED_PASEO_SHORTCUT_KEYS = new Set([ "w", "t", "k", + "o", "/", "\\", ",",