From 8d9611d137a06b2e99556dfcea290cd69bc4a56d Mon Sep 17 00:00:00 2001 From: Marius Date: Wed, 4 Mar 2026 14:28:52 +0100 Subject: [PATCH] feat: add discoverable keyboard shortcuts help in Agent Manager (#6605) * feat: add discoverable keyboard shortcuts help in Agent Manager * fix: reorder Agent Manager worktree header actions --- packages/kilo-vscode/package.json | 12 ++++ .../src/agent-manager/AgentManagerProvider.ts | 3 + packages/kilo-vscode/src/extension.ts | 3 + .../agent-manager/AgentManagerApp.tsx | 56 ++++++++++++------- .../webview-ui/agent-manager/i18n/ar.ts | 1 + .../webview-ui/agent-manager/i18n/br.ts | 1 + .../webview-ui/agent-manager/i18n/bs.ts | 1 + .../webview-ui/agent-manager/i18n/da.ts | 1 + .../webview-ui/agent-manager/i18n/de.ts | 1 + .../webview-ui/agent-manager/i18n/en.ts | 1 + .../webview-ui/agent-manager/i18n/es.ts | 1 + .../webview-ui/agent-manager/i18n/fr.ts | 1 + .../webview-ui/agent-manager/i18n/ja.ts | 1 + .../webview-ui/agent-manager/i18n/ko.ts | 1 + .../webview-ui/agent-manager/i18n/no.ts | 1 + .../webview-ui/agent-manager/i18n/pl.ts | 1 + .../webview-ui/agent-manager/i18n/ru.ts | 1 + .../webview-ui/agent-manager/i18n/th.ts | 1 + .../webview-ui/agent-manager/i18n/zh.ts | 1 + .../webview-ui/agent-manager/i18n/zht.ts | 1 + 20 files changed, 70 insertions(+), 20 deletions(-) diff --git a/packages/kilo-vscode/package.json b/packages/kilo-vscode/package.json index 29f42f8a2e5..3cd74670ff0 100644 --- a/packages/kilo-vscode/package.json +++ b/packages/kilo-vscode/package.json @@ -152,6 +152,12 @@ "category": "Kilo Code", "icon": "$(diff)" }, + { + "command": "kilo-code.new.agentManager.showShortcuts", + "title": "Agent Manager: Show Keyboard Shortcuts", + "category": "Kilo Code", + "icon": "$(keyboard)" + }, { "command": "kilo-code.new.agentManager.focusPanel", "title": "Agent Manager: Focus Panel", @@ -443,6 +449,12 @@ "mac": "cmd+d", "when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'" }, + { + "command": "kilo-code.new.agentManager.showShortcuts", + "key": "ctrl+shift+/", + "mac": "cmd+shift+/", + "when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'" + }, { "command": "kilo-code.new.agentManager.focusPanel", "key": "ctrl+.", diff --git a/packages/kilo-vscode/src/agent-manager/AgentManagerProvider.ts b/packages/kilo-vscode/src/agent-manager/AgentManagerProvider.ts index b20558cc2fd..952a4fe5877 100644 --- a/packages/kilo-vscode/src/agent-manager/AgentManagerProvider.ts +++ b/packages/kilo-vscode/src/agent-manager/AgentManagerProvider.ts @@ -1243,6 +1243,9 @@ export class AgentManagerProvider implements vscode.Disposable { if (!bindings.toggleDiff) { bindings.toggleDiff = formatKeybinding(mac ? "cmd+d" : "ctrl+d", mac) } + if (!bindings.showShortcuts) { + bindings.showShortcuts = formatKeybinding(mac ? "cmd+shift+/" : "ctrl+shift+/", mac) + } this.postToWebview({ type: "agentManager.keybindings", bindings }) } diff --git a/packages/kilo-vscode/src/extension.ts b/packages/kilo-vscode/src/extension.ts index 2a055ba8d97..eb0eb8702ef 100644 --- a/packages/kilo-vscode/src/extension.ts +++ b/packages/kilo-vscode/src/extension.ts @@ -96,6 +96,9 @@ export function activate(context: vscode.ExtensionContext) { vscode.commands.registerCommand("kilo-code.new.agentManager.toggleDiff", () => { agentManagerProvider.postMessage({ type: "action", action: "toggleDiff" }) }), + vscode.commands.registerCommand("kilo-code.new.agentManager.showShortcuts", () => { + agentManagerProvider.postMessage({ type: "action", action: "showShortcuts" }) + }), vscode.commands.registerCommand("kilo-code.new.agentManager.focusPanel", () => { agentManagerProvider.focusPanel() }), diff --git a/packages/kilo-vscode/webview-ui/agent-manager/AgentManagerApp.tsx b/packages/kilo-vscode/webview-ui/agent-manager/AgentManagerApp.tsx index aef16055f83..bcf4a052052 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/AgentManagerApp.tsx +++ b/packages/kilo-vscode/webview-ui/agent-manager/AgentManagerApp.tsx @@ -123,6 +123,7 @@ const defaultBindings: Record = { previousTab: isMac ? "⌘⌥←" : "Ctrl+Alt+←", nextTab: isMac ? "⌘⌥→" : "Ctrl+Alt+→", showTerminal: isMac ? "⌘/" : "Ctrl+/", + showShortcuts: isMac ? "⌘⇧/" : "Ctrl+Shift+/", newTab: isMac ? "⌘T" : "Ctrl+T", closeTab: isMac ? "⌘W" : "Ctrl+W", newWorktree: isMac ? "⌘N" : "Ctrl+N", @@ -263,6 +264,7 @@ function buildShortcutCategories( title: t("agentManager.shortcuts.category.global"), shortcuts: [ { label: t("agentManager.shortcuts.openAgentManager"), binding: bindings.agentManagerOpen ?? "" }, + { label: t("agentManager.shortcuts.showShortcuts"), binding: bindings.showShortcuts ?? "" }, ].filter((s) => s.binding), }, ].filter((c) => c.shortcuts.length > 0) @@ -945,6 +947,7 @@ const AgentManagerContent: Component = () => { else if (msg.action === "openWorktree") openWorktreeDirectory() else if (msg.action === "advancedWorktree") showAdvancedWorktreeDialog() else if (msg.action === "closeWorktree") closeSelectedWorktree() + else if (msg.action === "showShortcuts") handleShowKeyboardShortcuts() else if (msg.action === "focusInput") window.dispatchEvent(new Event("focusPrompt")) else { // Handle jumpTo1 through jumpTo9 @@ -969,6 +972,10 @@ const AgentManagerContent: Component = () => { if (["w", "n", "o"].includes(e.key.toLowerCase()) && e.shiftKey) { e.preventDefault() } + // Prevent browser defaults for shortcuts help (Cmd/Ctrl+Shift+/) + if (["/", "?"].includes(e.key) && e.shiftKey) { + e.preventDefault() + } // Prevent defaults for jump-to shortcuts (Cmd/Ctrl+1-9) if (/^[1-9]$/.test(e.key)) { e.preventDefault() @@ -1748,26 +1755,6 @@ const AgentManagerContent: Component = () => {
- - - - - - {t("agentManager.shortcuts.title")} - - - - {t("agentManager.worktree.setupScript")} - - - -
{
+ + + + + + + + + {t("agentManager.worktree.setupScript")} + + + +
diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/ar.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/ar.ts index 0758676cad4..e0f955d6eff 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/ar.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/ar.ts @@ -49,6 +49,7 @@ export const dict = { "agentManager.shortcuts.toggleTerminal": "تبديل الطرفية", "agentManager.shortcuts.focusPanel": "تركيز اللوحة", "agentManager.shortcuts.openAgentManager": "فتح Agent Manager", + "agentManager.shortcuts.showShortcuts": "إظهار اختصارات لوحة المفاتيح", "agentManager.dialog.deleteWorktree.title": "حذف Worktree", "agentManager.dialog.deleteWorktree.messagePre": "حذف Worktree ", "agentManager.dialog.deleteWorktree.messagePost": "؟ سيؤدي هذا إلى إزالة Worktree من القرص وفصل جميع الجلسات.", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/br.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/br.ts index 54130b1192c..63a0ae7ef0c 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/br.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/br.ts @@ -49,6 +49,7 @@ export const dict = { "agentManager.shortcuts.toggleTerminal": "Alternar terminal", "agentManager.shortcuts.focusPanel": "Focar painel", "agentManager.shortcuts.openAgentManager": "Abrir Agent Manager", + "agentManager.shortcuts.showShortcuts": "Mostrar atalhos de teclado", "agentManager.dialog.deleteWorktree.title": "Excluir Worktree", "agentManager.dialog.deleteWorktree.messagePre": "Excluir Worktree ", "agentManager.dialog.deleteWorktree.messagePost": "? Isso remove o Worktree do disco e desassocia todas as sessões.", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/bs.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/bs.ts index 35d03225796..55be84d8b15 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/bs.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/bs.ts @@ -49,6 +49,7 @@ export const dict = { "agentManager.shortcuts.toggleTerminal": "Prebaci terminal", "agentManager.shortcuts.focusPanel": "Fokusiraj panel", "agentManager.shortcuts.openAgentManager": "Otvori Agent Manager", + "agentManager.shortcuts.showShortcuts": "Prikaži prečice na tastaturi", "agentManager.dialog.deleteWorktree.title": "Obriši Worktree", "agentManager.dialog.deleteWorktree.messagePre": "Obriši Worktree ", "agentManager.dialog.deleteWorktree.messagePost": "? Ovo uklanja Worktree sa diska i odvezuje sve sesije.", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/da.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/da.ts index 463f729b2d2..3908a05b7a4 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/da.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/da.ts @@ -49,6 +49,7 @@ export const dict = { "agentManager.shortcuts.toggleTerminal": "Skift terminal", "agentManager.shortcuts.focusPanel": "Fokuser panel", "agentManager.shortcuts.openAgentManager": "Åbn Agent Manager", + "agentManager.shortcuts.showShortcuts": "Vis tastaturgenveje", "agentManager.dialog.deleteWorktree.title": "Slet Worktree", "agentManager.dialog.deleteWorktree.messagePre": "Slet Worktree ", "agentManager.dialog.deleteWorktree.messagePost": "? Dette fjerner Worktree fra disken og afkobler alle sessioner.", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/de.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/de.ts index 7ef69a05bba..941738cf845 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/de.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/de.ts @@ -49,6 +49,7 @@ export const dict = { "agentManager.shortcuts.toggleTerminal": "Terminal umschalten", "agentManager.shortcuts.focusPanel": "Panel fokussieren", "agentManager.shortcuts.openAgentManager": "Agent Manager öffnen", + "agentManager.shortcuts.showShortcuts": "Tastenkürzel anzeigen", "agentManager.dialog.deleteWorktree.title": "Worktree löschen", "agentManager.dialog.deleteWorktree.messagePre": "Worktree löschen ", "agentManager.dialog.deleteWorktree.messagePost": diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/en.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/en.ts index 799732a33f2..5c8bed4d6cd 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/en.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/en.ts @@ -55,6 +55,7 @@ export const dict = { "agentManager.shortcuts.toggleTerminal": "Toggle terminal", "agentManager.shortcuts.focusPanel": "Focus panel", "agentManager.shortcuts.openAgentManager": "Open Agent Manager", + "agentManager.shortcuts.showShortcuts": "Show keyboard shortcuts", "agentManager.dialog.deleteWorktree.title": "Delete Worktree", "agentManager.dialog.deleteWorktree.messagePre": "Delete worktree ", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/es.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/es.ts index 4cd10416b45..66e812107e8 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/es.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/es.ts @@ -49,6 +49,7 @@ export const dict = { "agentManager.shortcuts.toggleTerminal": "Alternar terminal", "agentManager.shortcuts.focusPanel": "Enfocar panel", "agentManager.shortcuts.openAgentManager": "Abrir Agent Manager", + "agentManager.shortcuts.showShortcuts": "Mostrar atajos de teclado", "agentManager.dialog.deleteWorktree.title": "Eliminar Worktree", "agentManager.dialog.deleteWorktree.messagePre": "¿Eliminar Worktree ", "agentManager.dialog.deleteWorktree.messagePost": diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/fr.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/fr.ts index 602c85d0ddf..7ffdf72ba99 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/fr.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/fr.ts @@ -49,6 +49,7 @@ export const dict = { "agentManager.shortcuts.toggleTerminal": "Basculer le terminal", "agentManager.shortcuts.focusPanel": "Focaliser le panneau", "agentManager.shortcuts.openAgentManager": "Ouvrir Agent Manager", + "agentManager.shortcuts.showShortcuts": "Afficher les raccourcis clavier", "agentManager.dialog.deleteWorktree.title": "Supprimer le Worktree", "agentManager.dialog.deleteWorktree.messagePre": "Supprimer le Worktree ", "agentManager.dialog.deleteWorktree.messagePost": diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/ja.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/ja.ts index 32d68552414..39131586fbb 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/ja.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/ja.ts @@ -49,6 +49,7 @@ export const dict = { "agentManager.shortcuts.toggleTerminal": "ターミナルの切り替え", "agentManager.shortcuts.focusPanel": "パネルにフォーカス", "agentManager.shortcuts.openAgentManager": "Agent Managerを開く", + "agentManager.shortcuts.showShortcuts": "キーボードショートカットを表示", "agentManager.dialog.deleteWorktree.title": "Worktreeを削除", "agentManager.dialog.deleteWorktree.messagePre": "Worktreeを削除 ", "agentManager.dialog.deleteWorktree.messagePost": diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/ko.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/ko.ts index 0b18603e31b..eebd6b006b3 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/ko.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/ko.ts @@ -49,6 +49,7 @@ export const dict = { "agentManager.shortcuts.toggleTerminal": "터미널 전환", "agentManager.shortcuts.focusPanel": "패널 포커스", "agentManager.shortcuts.openAgentManager": "Agent Manager 열기", + "agentManager.shortcuts.showShortcuts": "키보드 단축키 표시", "agentManager.dialog.deleteWorktree.title": "Worktree 삭제", "agentManager.dialog.deleteWorktree.messagePre": "Worktree 삭제 ", "agentManager.dialog.deleteWorktree.messagePost": "? 디스크에서 Worktree를 제거하고 모든 세션의 연결을 해제합니다.", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/no.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/no.ts index 533d886c13b..7e3e4e106cf 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/no.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/no.ts @@ -49,6 +49,7 @@ export const dict = { "agentManager.shortcuts.toggleTerminal": "Veksle terminal", "agentManager.shortcuts.focusPanel": "Fokuser panel", "agentManager.shortcuts.openAgentManager": "Åpne Agent Manager", + "agentManager.shortcuts.showShortcuts": "Vis tastatursnarveier", "agentManager.dialog.deleteWorktree.title": "Slett Worktree", "agentManager.dialog.deleteWorktree.messagePre": "Slett Worktree ", "agentManager.dialog.deleteWorktree.messagePost": "? Dette fjerner Worktree fra disken og kobler fra alle økter.", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/pl.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/pl.ts index 5142f445b74..e89969792ba 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/pl.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/pl.ts @@ -49,6 +49,7 @@ export const dict = { "agentManager.shortcuts.toggleTerminal": "Przełącz terminal", "agentManager.shortcuts.focusPanel": "Fokus na panelu", "agentManager.shortcuts.openAgentManager": "Otwórz Agent Manager", + "agentManager.shortcuts.showShortcuts": "Pokaż skróty klawiszowe", "agentManager.dialog.deleteWorktree.title": "Usuń Worktree", "agentManager.dialog.deleteWorktree.messagePre": "Usunąć Worktree ", "agentManager.dialog.deleteWorktree.messagePost": diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/ru.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/ru.ts index 0eb9356b5e6..a295f4ff4ef 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/ru.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/ru.ts @@ -49,6 +49,7 @@ export const dict = { "agentManager.shortcuts.toggleTerminal": "Переключить терминал", "agentManager.shortcuts.focusPanel": "Фокус на панели", "agentManager.shortcuts.openAgentManager": "Открыть Agent Manager", + "agentManager.shortcuts.showShortcuts": "Показать сочетания клавиш", "agentManager.dialog.deleteWorktree.title": "Удалить Worktree", "agentManager.dialog.deleteWorktree.messagePre": "Удалить Worktree ", "agentManager.dialog.deleteWorktree.messagePost": "? Это удалит Worktree с диска и отключит все сессии.", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/th.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/th.ts index e3804846067..c42e42b6a42 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/th.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/th.ts @@ -49,6 +49,7 @@ export const dict = { "agentManager.shortcuts.toggleTerminal": "สลับเทอร์มินัล", "agentManager.shortcuts.focusPanel": "โฟกัสแผง", "agentManager.shortcuts.openAgentManager": "เปิด Agent Manager", + "agentManager.shortcuts.showShortcuts": "แสดงปุ่มลัดแป้นพิมพ์", "agentManager.dialog.deleteWorktree.title": "ลบ Worktree", "agentManager.dialog.deleteWorktree.messagePre": "ลบ Worktree ", "agentManager.dialog.deleteWorktree.messagePost": diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/zh.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/zh.ts index d4090013ec7..9731ccd1f96 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/zh.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/zh.ts @@ -49,6 +49,7 @@ export const dict = { "agentManager.shortcuts.toggleTerminal": "切换终端", "agentManager.shortcuts.focusPanel": "聚焦面板", "agentManager.shortcuts.openAgentManager": "打开 Agent Manager", + "agentManager.shortcuts.showShortcuts": "显示键盘快捷键", "agentManager.dialog.deleteWorktree.title": "删除 Worktree", "agentManager.dialog.deleteWorktree.messagePre": "删除 Worktree ", "agentManager.dialog.deleteWorktree.messagePost": "?这将从磁盘中移除 Worktree 并取消所有会话的关联。", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/zht.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/zht.ts index 4087af19c08..6751d9232b7 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/zht.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/zht.ts @@ -49,6 +49,7 @@ export const dict = { "agentManager.shortcuts.toggleTerminal": "切換終端機", "agentManager.shortcuts.focusPanel": "聚焦面板", "agentManager.shortcuts.openAgentManager": "開啟 Agent Manager", + "agentManager.shortcuts.showShortcuts": "顯示鍵盤快捷鍵", "agentManager.dialog.deleteWorktree.title": "刪除 Worktree", "agentManager.dialog.deleteWorktree.messagePre": "刪除 Worktree ", "agentManager.dialog.deleteWorktree.messagePost": "?這將從磁碟中移除 Worktree 並取消所有工作階段的關聯。",