Просмотр исходного кода

feat: Add keyboard shortcut for toggling auto-approve (Cmd/Ctrl+Alt+A) (#8214)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>
Bruno Bergher 3 месяцев назад
Родитель
Сommit
6c2aa63cfd
61 измененных файлов с 141 добавлено и 16 удалено
  1. 1 0
      packages/types/src/vscode.ts
  2. 12 0
      src/activate/registerCommands.ts
  3. 12 0
      src/core/webview/webviewMessageHandler.ts
  4. 12 0
      src/package.json
  5. 1 0
      src/package.nls.ca.json
  6. 1 0
      src/package.nls.de.json
  7. 1 0
      src/package.nls.es.json
  8. 1 0
      src/package.nls.fr.json
  9. 1 0
      src/package.nls.hi.json
  10. 1 0
      src/package.nls.id.json
  11. 1 0
      src/package.nls.it.json
  12. 1 0
      src/package.nls.ja.json
  13. 1 0
      src/package.nls.json
  14. 1 0
      src/package.nls.ko.json
  15. 1 0
      src/package.nls.nl.json
  16. 1 0
      src/package.nls.pl.json
  17. 1 0
      src/package.nls.pt-BR.json
  18. 1 0
      src/package.nls.ru.json
  19. 1 0
      src/package.nls.tr.json
  20. 1 0
      src/package.nls.vi.json
  21. 1 0
      src/package.nls.zh-CN.json
  22. 1 0
      src/package.nls.zh-TW.json
  23. 1 0
      src/shared/ExtensionMessage.ts
  24. 1 0
      src/shared/WebviewMessage.ts
  25. 35 14
      webview-ui/src/components/settings/AutoApproveSettings.tsx
  26. 12 0
      webview-ui/src/context/ExtensionStateContext.tsx
  27. 1 0
      webview-ui/src/i18n/locales/ca/chat.json
  28. 1 0
      webview-ui/src/i18n/locales/ca/settings.json
  29. 1 0
      webview-ui/src/i18n/locales/de/chat.json
  30. 1 0
      webview-ui/src/i18n/locales/de/settings.json
  31. 2 1
      webview-ui/src/i18n/locales/en/settings.json
  32. 1 0
      webview-ui/src/i18n/locales/es/chat.json
  33. 1 0
      webview-ui/src/i18n/locales/es/settings.json
  34. 1 0
      webview-ui/src/i18n/locales/fr/chat.json
  35. 1 0
      webview-ui/src/i18n/locales/fr/settings.json
  36. 1 0
      webview-ui/src/i18n/locales/hi/chat.json
  37. 1 0
      webview-ui/src/i18n/locales/hi/settings.json
  38. 1 0
      webview-ui/src/i18n/locales/id/chat.json
  39. 1 0
      webview-ui/src/i18n/locales/id/settings.json
  40. 1 0
      webview-ui/src/i18n/locales/it/chat.json
  41. 1 0
      webview-ui/src/i18n/locales/it/settings.json
  42. 1 0
      webview-ui/src/i18n/locales/ja/chat.json
  43. 1 0
      webview-ui/src/i18n/locales/ja/settings.json
  44. 1 0
      webview-ui/src/i18n/locales/ko/chat.json
  45. 1 0
      webview-ui/src/i18n/locales/ko/settings.json
  46. 1 0
      webview-ui/src/i18n/locales/nl/chat.json
  47. 1 0
      webview-ui/src/i18n/locales/nl/settings.json
  48. 1 0
      webview-ui/src/i18n/locales/pl/chat.json
  49. 1 0
      webview-ui/src/i18n/locales/pl/settings.json
  50. 1 0
      webview-ui/src/i18n/locales/pt-BR/chat.json
  51. 1 0
      webview-ui/src/i18n/locales/pt-BR/settings.json
  52. 2 1
      webview-ui/src/i18n/locales/ru/chat.json
  53. 1 0
      webview-ui/src/i18n/locales/ru/settings.json
  54. 1 0
      webview-ui/src/i18n/locales/tr/chat.json
  55. 1 0
      webview-ui/src/i18n/locales/tr/settings.json
  56. 1 0
      webview-ui/src/i18n/locales/vi/chat.json
  57. 1 0
      webview-ui/src/i18n/locales/vi/settings.json
  58. 1 0
      webview-ui/src/i18n/locales/zh-CN/chat.json
  59. 1 0
      webview-ui/src/i18n/locales/zh-CN/settings.json
  60. 1 0
      webview-ui/src/i18n/locales/zh-TW/chat.json
  61. 1 0
      webview-ui/src/i18n/locales/zh-TW/settings.json

+ 1 - 0
packages/types/src/vscode.ts

@@ -53,6 +53,7 @@ export const commandIds = [
 	"focusInput",
 	"acceptInput",
 	"focusPanel",
+	"toggleAutoApprove",
 ] as const
 
 export type CommandId = (typeof commandIds)[number]

+ 12 - 0
src/activate/registerCommands.ts

@@ -221,6 +221,18 @@ const getCommandsMap = ({ context, outputChannel, provider }: RegisterCommandOpt
 
 		visibleProvider.postMessageToWebview({ type: "acceptInput" })
 	},
+	toggleAutoApprove: async () => {
+		const visibleProvider = getVisibleProviderOrLog(outputChannel)
+
+		if (!visibleProvider) {
+			return
+		}
+
+		visibleProvider.postMessageToWebview({
+			type: "action",
+			action: "toggleAutoApprove",
+		})
+	},
 })
 
 export const openClineInNewTab = async ({ context, outputChannel }: Omit<RegisterCommandOptions, "provider">) => {

+ 12 - 0
src/core/webview/webviewMessageHandler.ts

@@ -1044,6 +1044,18 @@ export const webviewMessageHandler = async (
 
 			break
 		}
+		case "openKeyboardShortcuts": {
+			// Open VSCode keyboard shortcuts settings and optionally filter to show the Roo Code commands
+			const searchQuery = message.text || ""
+			if (searchQuery) {
+				// Open with a search query pre-filled
+				await vscode.commands.executeCommand("workbench.action.openGlobalKeybindings", searchQuery)
+			} else {
+				// Just open the keyboard shortcuts settings
+				await vscode.commands.executeCommand("workbench.action.openGlobalKeybindings")
+			}
+			break
+		}
 		case "openMcpSettings": {
 			const mcpSettingsFilePath = await provider.getMcpHub()?.getMcpSettingsFilePath()
 

+ 12 - 0
src/package.json

@@ -174,6 +174,11 @@
 				"command": "roo-cline.acceptInput",
 				"title": "%command.acceptInput.title%",
 				"category": "%configuration.title%"
+			},
+			{
+				"command": "roo-cline.toggleAutoApprove",
+				"title": "%command.toggleAutoApprove.title%",
+				"category": "%configuration.title%"
 			}
 		],
 		"menus": {
@@ -310,6 +315,13 @@
 				"win": "ctrl+y",
 				"linux": "ctrl+y",
 				"when": "editorTextFocus && editorHasSelection"
+			},
+			{
+				"command": "roo-cline.toggleAutoApprove",
+				"key": "cmd+alt+a",
+				"mac": "cmd+alt+a",
+				"win": "ctrl+alt+a",
+				"linux": "ctrl+alt+a"
 			}
 		],
 		"submenus": [

+ 1 - 0
src/package.nls.ca.json

@@ -14,6 +14,7 @@
 	"command.terminal.fixCommand.title": "Corregir Aquesta Ordre",
 	"command.terminal.explainCommand.title": "Explicar Aquesta Ordre",
 	"command.acceptInput.title": "Acceptar Entrada/Suggeriment",
+	"command.toggleAutoApprove.title": "Alternar Auto-Aprovació",
 	"views.activitybar.title": "Roo Code",
 	"views.contextMenu.label": "Roo Code",
 	"views.terminalMenu.label": "Roo Code",

+ 1 - 0
src/package.nls.de.json

@@ -14,6 +14,7 @@
 	"command.terminal.fixCommand.title": "Diesen Befehl Reparieren",
 	"command.terminal.explainCommand.title": "Diesen Befehl Erklären",
 	"command.acceptInput.title": "Eingabe/Vorschlag Akzeptieren",
+	"command.toggleAutoApprove.title": "Auto-Genehmigung Umschalten",
 	"views.activitybar.title": "Roo Code",
 	"views.contextMenu.label": "Roo Code",
 	"views.terminalMenu.label": "Roo Code",

+ 1 - 0
src/package.nls.es.json

@@ -14,6 +14,7 @@
 	"command.terminal.fixCommand.title": "Corregir Este Comando",
 	"command.terminal.explainCommand.title": "Explicar Este Comando",
 	"command.acceptInput.title": "Aceptar Entrada/Sugerencia",
+	"command.toggleAutoApprove.title": "Alternar Auto-Aprobación",
 	"views.activitybar.title": "Roo Code",
 	"views.contextMenu.label": "Roo Code",
 	"views.terminalMenu.label": "Roo Code",

+ 1 - 0
src/package.nls.fr.json

@@ -14,6 +14,7 @@
 	"command.terminal.fixCommand.title": "Corriger cette Commande",
 	"command.terminal.explainCommand.title": "Expliquer cette Commande",
 	"command.acceptInput.title": "Accepter l'Entrée/Suggestion",
+	"command.toggleAutoApprove.title": "Basculer Auto-Approbation",
 	"views.activitybar.title": "Roo Code",
 	"views.contextMenu.label": "Roo Code",
 	"views.terminalMenu.label": "Roo Code",

+ 1 - 0
src/package.nls.hi.json

@@ -14,6 +14,7 @@
 	"command.terminal.fixCommand.title": "यह कमांड ठीक करें",
 	"command.terminal.explainCommand.title": "यह कमांड समझाएं",
 	"command.acceptInput.title": "इनपुट/सुझाव स्वीकारें",
+	"command.toggleAutoApprove.title": "ऑटो-अनुमोदन टॉगल करें",
 	"views.activitybar.title": "Roo Code",
 	"views.contextMenu.label": "Roo Code",
 	"views.terminalMenu.label": "Roo Code",

+ 1 - 0
src/package.nls.id.json

@@ -26,6 +26,7 @@
 	"command.terminal.fixCommand.title": "Perbaiki Perintah Ini",
 	"command.terminal.explainCommand.title": "Jelaskan Perintah Ini",
 	"command.acceptInput.title": "Terima Input/Saran",
+	"command.toggleAutoApprove.title": "Alihkan Persetujuan Otomatis",
 	"configuration.title": "Roo Code",
 	"commands.allowedCommands.description": "Perintah yang dapat dijalankan secara otomatis ketika 'Selalu setujui operasi eksekusi' diaktifkan",
 	"commands.deniedCommands.description": "Awalan perintah yang akan otomatis ditolak tanpa meminta persetujuan. Jika terjadi konflik dengan perintah yang diizinkan, pencocokan awalan terpanjang akan diprioritaskan. Tambahkan * untuk menolak semua perintah.",

+ 1 - 0
src/package.nls.it.json

@@ -14,6 +14,7 @@
 	"command.terminal.fixCommand.title": "Correggi Questo Comando",
 	"command.terminal.explainCommand.title": "Spiega Questo Comando",
 	"command.acceptInput.title": "Accetta Input/Suggerimento",
+	"command.toggleAutoApprove.title": "Attiva/Disattiva Auto-Approvazione",
 	"views.activitybar.title": "Roo Code",
 	"views.contextMenu.label": "Roo Code",
 	"views.terminalMenu.label": "Roo Code",

+ 1 - 0
src/package.nls.ja.json

@@ -26,6 +26,7 @@
 	"command.terminal.fixCommand.title": "このコマンドを修正",
 	"command.terminal.explainCommand.title": "このコマンドを説明",
 	"command.acceptInput.title": "入力/提案を承認",
+	"command.toggleAutoApprove.title": "自動承認を切替",
 	"configuration.title": "Roo Code",
 	"commands.allowedCommands.description": "'常に実行操作を承認する'が有効な場合に自動実行できるコマンド",
 	"commands.deniedCommands.description": "承認を求めずに自動的に拒否されるコマンドプレフィックス。許可されたコマンドとの競合がある場合、最長プレフィックスマッチが優先されます。すべてのコマンドを拒否するには * を追加してください。",

+ 1 - 0
src/package.nls.json

@@ -26,6 +26,7 @@
 	"command.terminal.fixCommand.title": "Fix This Command",
 	"command.terminal.explainCommand.title": "Explain This Command",
 	"command.acceptInput.title": "Accept Input/Suggestion",
+	"command.toggleAutoApprove.title": "Toggle Auto-Approve",
 	"configuration.title": "Roo Code",
 	"commands.allowedCommands.description": "Commands that can be auto-executed when 'Always approve execute operations' is enabled",
 	"commands.deniedCommands.description": "Command prefixes that will be automatically denied without asking for approval. In case of conflicts with allowed commands, the longest prefix match takes precedence. Add * to deny all commands.",

+ 1 - 0
src/package.nls.ko.json

@@ -14,6 +14,7 @@
 	"command.terminal.fixCommand.title": "이 명령어 수정",
 	"command.terminal.explainCommand.title": "이 명령어 설명",
 	"command.acceptInput.title": "입력/제안 수락",
+	"command.toggleAutoApprove.title": "자동 승인 전환",
 	"views.activitybar.title": "Roo Code",
 	"views.contextMenu.label": "Roo Code",
 	"views.terminalMenu.label": "Roo Code",

+ 1 - 0
src/package.nls.nl.json

@@ -26,6 +26,7 @@
 	"command.terminal.fixCommand.title": "Repareer Dit Commando",
 	"command.terminal.explainCommand.title": "Leg Dit Commando Uit",
 	"command.acceptInput.title": "Invoer/Suggestie Accepteren",
+	"command.toggleAutoApprove.title": "Auto-Goedkeuring Schakelen",
 	"configuration.title": "Roo Code",
 	"commands.allowedCommands.description": "Commando's die automatisch kunnen worden uitgevoerd wanneer 'Altijd goedkeuren uitvoerbewerkingen' is ingeschakeld",
 	"commands.deniedCommands.description": "Commando-prefixen die automatisch worden geweigerd zonder om goedkeuring te vragen. Bij conflicten met toegestane commando's heeft de langste prefix-match voorrang. Voeg * toe om alle commando's te weigeren.",

+ 1 - 0
src/package.nls.pl.json

@@ -14,6 +14,7 @@
 	"command.terminal.fixCommand.title": "Napraw tę Komendę",
 	"command.terminal.explainCommand.title": "Wyjaśnij tę Komendę",
 	"command.acceptInput.title": "Akceptuj Wprowadzanie/Sugestię",
+	"command.toggleAutoApprove.title": "Przełącz Auto-Zatwierdzanie",
 	"views.activitybar.title": "Roo Code",
 	"views.contextMenu.label": "Roo Code",
 	"views.terminalMenu.label": "Roo Code",

+ 1 - 0
src/package.nls.pt-BR.json

@@ -14,6 +14,7 @@
 	"command.terminal.fixCommand.title": "Corrigir Este Comando",
 	"command.terminal.explainCommand.title": "Explicar Este Comando",
 	"command.acceptInput.title": "Aceitar Entrada/Sugestão",
+	"command.toggleAutoApprove.title": "Alternar Auto-Aprovação",
 	"views.activitybar.title": "Roo Code",
 	"views.contextMenu.label": "Roo Code",
 	"views.terminalMenu.label": "Roo Code",

+ 1 - 0
src/package.nls.ru.json

@@ -26,6 +26,7 @@
 	"command.terminal.fixCommand.title": "Исправить эту команду",
 	"command.terminal.explainCommand.title": "Объяснить эту команду",
 	"command.acceptInput.title": "Принять ввод/предложение",
+	"command.toggleAutoApprove.title": "Переключить Авто-Подтверждение",
 	"configuration.title": "Roo Code",
 	"commands.allowedCommands.description": "Команды, которые могут быть автоматически выполнены, когда включена опция 'Всегда подтверждать операции выполнения'",
 	"commands.deniedCommands.description": "Префиксы команд, которые будут автоматически отклонены без запроса подтверждения. В случае конфликтов с разрешенными командами приоритет имеет самое длинное совпадение префикса. Добавьте * чтобы отклонить все команды.",

+ 1 - 0
src/package.nls.tr.json

@@ -14,6 +14,7 @@
 	"command.terminal.fixCommand.title": "Bu Komutu Düzelt",
 	"command.terminal.explainCommand.title": "Bu Komutu Açıkla",
 	"command.acceptInput.title": "Girişi/Öneriyi Kabul Et",
+	"command.toggleAutoApprove.title": "Otomatik Onayı Değiştir",
 	"views.activitybar.title": "Roo Code",
 	"views.contextMenu.label": "Roo Code",
 	"views.terminalMenu.label": "Roo Code",

+ 1 - 0
src/package.nls.vi.json

@@ -14,6 +14,7 @@
 	"command.terminal.fixCommand.title": "Sửa Lệnh Này",
 	"command.terminal.explainCommand.title": "Giải Thích Lệnh Này",
 	"command.acceptInput.title": "Chấp Nhận Đầu Vào/Gợi Ý",
+	"command.toggleAutoApprove.title": "Bật/Tắt Tự Động Phê Duyệt",
 	"views.activitybar.title": "Roo Code",
 	"views.contextMenu.label": "Roo Code",
 	"views.terminalMenu.label": "Roo Code",

+ 1 - 0
src/package.nls.zh-CN.json

@@ -14,6 +14,7 @@
 	"command.terminal.fixCommand.title": "修复此命令",
 	"command.terminal.explainCommand.title": "解释此命令",
 	"command.acceptInput.title": "接受输入/建议",
+	"command.toggleAutoApprove.title": "切换自动批准",
 	"views.activitybar.title": "Roo Code",
 	"views.contextMenu.label": "Roo Code",
 	"views.terminalMenu.label": "Roo Code",

+ 1 - 0
src/package.nls.zh-TW.json

@@ -14,6 +14,7 @@
 	"command.terminal.fixCommand.title": "修復此命令",
 	"command.terminal.explainCommand.title": "解釋此命令",
 	"command.acceptInput.title": "接受輸入/建議",
+	"command.toggleAutoApprove.title": "切換自動批准",
 	"views.activitybar.title": "Roo Code",
 	"views.contextMenu.label": "Roo Code",
 	"views.terminalMenu.label": "Roo Code",

+ 1 - 0
src/shared/ExtensionMessage.ts

@@ -137,6 +137,7 @@ export interface ExtensionMessage {
 		| "didBecomeVisible"
 		| "focusInput"
 		| "switchTab"
+		| "toggleAutoApprove"
 	invoke?: "newChat" | "sendMessage" | "primaryButtonClick" | "secondaryButtonClick" | "setChatBoxMessage"
 	state?: ExtensionState
 	images?: string[]

+ 1 - 0
src/shared/WebviewMessage.ts

@@ -102,6 +102,7 @@ export interface WebviewMessage {
 		| "browserViewportSize"
 		| "screenshotQuality"
 		| "remoteBrowserHost"
+		| "openKeyboardShortcuts"
 		| "openMcpSettings"
 		| "openProjectMcpSettings"
 		| "restartMcpServer"

+ 35 - 14
webview-ui/src/components/settings/AutoApproveSettings.tsx

@@ -1,5 +1,7 @@
 import { HTMLAttributes, useState } from "react"
 import { X, CheckCheck } from "lucide-react"
+import { Trans } from "react-i18next"
+import { Package } from "@roo/package"
 
 import { useAppTranslation } from "@/i18n/TranslationContext"
 import { VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react"
@@ -123,20 +125,39 @@ export const AutoApproveSettings = ({
 
 			<Section>
 				<div className="space-y-4">
-					<div>
-						<VSCodeCheckbox
-							checked={effectiveAutoApprovalEnabled}
-							aria-label={t("settings:autoApprove.toggleAriaLabel")}
-							onChange={() => {
-								const newValue = !(autoApprovalEnabled ?? false)
-								setAutoApprovalEnabled(newValue)
-								vscode.postMessage({ type: "autoApprovalEnabled", bool: newValue })
-							}}>
-							<span className="font-medium">{t("settings:autoApprove.enabled")}</span>
-						</VSCodeCheckbox>
-						<div className="text-vscode-descriptionForeground text-sm mt-1">
-							{t("settings:autoApprove.description")}
-						</div>
+					<VSCodeCheckbox
+						checked={effectiveAutoApprovalEnabled}
+						aria-label={t("settings:autoApprove.toggleAriaLabel")}
+						onChange={() => {
+							const newValue = !(autoApprovalEnabled ?? false)
+							setAutoApprovalEnabled(newValue)
+							vscode.postMessage({ type: "autoApprovalEnabled", bool: newValue })
+						}}>
+						<span className="font-medium">{t("settings:autoApprove.enabled")}</span>
+					</VSCodeCheckbox>
+					<div className="text-vscode-descriptionForeground text-sm mt-1">
+						<p>{t("settings:autoApprove.description")}</p>
+						<p>
+							<Trans
+								i18nKey="settings:autoApprove.toggleShortcut"
+								components={{
+									SettingsLink: (
+										<a
+											href="#"
+											className="text-vscode-textLink-foreground hover:underline cursor-pointer"
+											onClick={(e) => {
+												e.preventDefault()
+												// Send message to open keyboard shortcuts with search for toggle command
+												vscode.postMessage({
+													type: "openKeyboardShortcuts",
+													text: `${Package.name}.toggleAutoApprove`,
+												})
+											}}
+										/>
+									),
+								}}
+							/>
+						</p>
 					</div>
 
 					<AutoApproveToggle

+ 12 - 0
webview-ui/src/context/ExtensionStateContext.tsx

@@ -326,6 +326,18 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode
 					}
 					break
 				}
+				case "action": {
+					if (message.action === "toggleAutoApprove") {
+						// Toggle the auto-approval state
+						setState((prevState) => {
+							const newValue = !(prevState.autoApprovalEnabled ?? false)
+							// Also send the update to the extension
+							vscode.postMessage({ type: "autoApprovalEnabled", bool: newValue })
+							return { ...prevState, autoApprovalEnabled: newValue }
+						})
+					}
+					break
+				}
 				case "theme": {
 					if (message.text) {
 						setTheme(convertTextMateToHljs(JSON.parse(message.text)))

+ 1 - 0
webview-ui/src/i18n/locales/ca/chat.json

@@ -253,6 +253,7 @@
 		"tooltipManage": "Gestiona la configuració d'aprovació automàtica",
 		"tooltipStatus": "Aprovació automàtica activada per a: {{toggles}}",
 		"title": "Aprovació automàtica",
+		"toggle": "Commuta l'aprovació automàtica",
 		"all": "Tot",
 		"none": "Cap",
 		"description": "Executa aquestes accions sense demanar permís. Activa-ho només per a accions de confiança.",

+ 1 - 0
webview-ui/src/i18n/locales/ca/settings.json

@@ -134,6 +134,7 @@
 		"resetToDefault": "Restablir al valor per defecte"
 	},
 	"autoApprove": {
+		"toggleShortcut": "Pots configurar una drecera global per a aquesta configuració <SettingsLink>a les preferències del teu IDE</SettingsLink>.",
 		"description": "Permet que Roo realitzi operacions automàticament sense requerir aprovació. Activeu aquesta configuració només si confieu plenament en la IA i enteneu els riscos de seguretat associats.",
 		"enabled": "Auto-aprovació activada",
 		"toggleAriaLabel": "Commuta l'aprovació automàtica",

+ 1 - 0
webview-ui/src/i18n/locales/de/chat.json

@@ -253,6 +253,7 @@
 		"tooltipManage": "Einstellungen für die automatische Genehmigung verwalten",
 		"tooltipStatus": "Automatische Genehmigung aktiviert für: {{toggles}}",
 		"title": "Automatische Genehmigung",
+		"toggle": "Automatische Genehmigung umschalten",
 		"all": "Alle",
 		"none": "Keine",
 		"description": "Führe diese Aktionen aus, ohne um Erlaubnis zu fragen. Aktiviere dies nur für Aktionen, denen du voll vertraust.",

+ 1 - 0
webview-ui/src/i18n/locales/de/settings.json

@@ -134,6 +134,7 @@
 		"resetToDefault": "Auf Standard zurücksetzen"
 	},
 	"autoApprove": {
+		"toggleShortcut": "Du kannst <SettingsLink>in deinen IDE-Einstellungen</SettingsLink> einen globalen Shortcut für diese Einstellung konfigurieren.",
 		"description": "Erlaubt Roo, Operationen automatisch ohne Genehmigung durchzuführen. Aktiviere diese Einstellungen nur, wenn du der KI vollständig vertraust und die damit verbundenen Sicherheitsrisiken verstehst.",
 		"enabled": "Auto-Genehmigung aktiviert",
 		"toggleAriaLabel": "Automatische Genehmigung umschalten",

+ 2 - 1
webview-ui/src/i18n/locales/en/settings.json

@@ -134,7 +134,8 @@
 		}
 	},
 	"autoApprove": {
-		"description": "Allow Roo to automatically perform operations without requiring approval. Enable these settings only if you fully trust the AI and understand the associated security risks.",
+		"description": "Run these actions without asking for permission. Only enable for actions you fully trust and if you understand the security risks.",
+		"toggleShortcut": "You can configure a keyboard shortcut for this setting <SettingsLink>in your IDE preferences</SettingsLink>.",
 		"enabled": "Auto-Approve Enabled",
 		"readOnly": {
 			"label": "Read",

+ 1 - 0
webview-ui/src/i18n/locales/es/chat.json

@@ -253,6 +253,7 @@
 		"tooltipManage": "Administrar la configuración de aprobación automática",
 		"tooltipStatus": "Aprobación automática habilitada para: {{toggles}}",
 		"title": "Aprobación automática",
+		"toggle": "Alternar aprobación automática",
 		"all": "Todo",
 		"none": "Ninguno",
 		"description": "Ejecuta estas acciones sin pedir permiso. Habilita esto solo para acciones en las que confíes plenamente.",

+ 1 - 0
webview-ui/src/i18n/locales/es/settings.json

@@ -134,6 +134,7 @@
 		"resetToDefault": "Restablecer al valor predeterminado"
 	},
 	"autoApprove": {
+		"toggleShortcut": "Puedes configurar un atajo global para esta configuración <SettingsLink>en las preferencias de tu IDE</SettingsLink>.",
 		"description": "Permitir que Roo realice operaciones automáticamente sin requerir aprobación. Habilite esta configuración solo si confía plenamente en la IA y comprende los riesgos de seguridad asociados.",
 		"enabled": "Auto-aprobación habilitada",
 		"toggleAriaLabel": "Alternar aprobación automática",

+ 1 - 0
webview-ui/src/i18n/locales/fr/chat.json

@@ -253,6 +253,7 @@
 		"tooltipManage": "Gérer les paramètres d'approbation automatique",
 		"tooltipStatus": "Approbation automatique activée pour : {{toggles}}",
 		"title": "Approbation automatique",
+		"toggle": "Basculer l'approbation automatique",
 		"all": "Tout",
 		"none": "Aucun",
 		"description": "Exécutez ces actions sans demander la permission. N'activez cette option que pour les actions en lesquelles vous avez entièrement confiance.",

+ 1 - 0
webview-ui/src/i18n/locales/fr/settings.json

@@ -134,6 +134,7 @@
 		"resetToDefault": "Réinitialiser par défaut"
 	},
 	"autoApprove": {
+		"toggleShortcut": "Vous pouvez configurer un raccourci global pour ce paramètre <SettingsLink>dans les préférences de votre IDE</SettingsLink>.",
 		"description": "Permettre à Roo d'effectuer automatiquement des opérations sans requérir d'approbation. Activez ces paramètres uniquement si vous faites entièrement confiance à l'IA et que vous comprenez les risques de sécurité associés.",
 		"enabled": "Auto-approbation activée",
 		"toggleAriaLabel": "Activer/désactiver l'approbation automatique",

+ 1 - 0
webview-ui/src/i18n/locales/hi/chat.json

@@ -253,6 +253,7 @@
 		"tooltipManage": "स्वतः-अनुमोदन सेटिंग्स प्रबंधित करें",
 		"tooltipStatus": "स्वतः-अनुमोदन इनके लिए सक्षम है: {{toggles}}",
 		"title": "स्वतः-अनुमोदन",
+		"toggle": "स्वतः-अनुमोदन टॉगल करें",
 		"all": "सभी",
 		"none": "कोई नहीं",
 		"description": "अनुमति मांगे बिना इन क्रियाओं को चलाएं। इसे केवल उन क्रियाओं के लिए सक्षम करें जिन पर आपको पूरा भरोसा है।",

+ 1 - 0
webview-ui/src/i18n/locales/hi/settings.json

@@ -134,6 +134,7 @@
 		"resetToDefault": "डिफ़ॉल्ट पर रीसेट करें"
 	},
 	"autoApprove": {
+		"toggleShortcut": "आप <SettingsLink>अपनी आईडीई वरीयताओं में</SettingsLink> इस सेटिंग के लिए एक वैश्विक शॉर्टकट कॉन्फ़िगर कर सकते हैं।",
 		"description": "Roo को अनुमोदन की आवश्यकता के बिना स्वचालित रूप से ऑपरेशन करने की अनुमति दें। इन सेटिंग्स को केवल तभी सक्षम करें जब आप AI पर पूरी तरह से भरोसा करते हों और संबंधित सुरक्षा जोखिमों को समझते हों।",
 		"enabled": "स्वत:-अनुमोदन सक्षम",
 		"toggleAriaLabel": "स्वतः-अनुमोदन टॉगल करें",

+ 1 - 0
webview-ui/src/i18n/locales/id/chat.json

@@ -280,6 +280,7 @@
 		"tooltipManage": "Kelola pengaturan persetujuan otomatis",
 		"tooltipStatus": "Persetujuan otomatis diaktifkan untuk: {{toggles}}",
 		"title": "Setujui Otomatis",
+		"toggle": "Beralih persetujuan otomatis",
 		"all": "Semua",
 		"none": "Tidak ada",
 		"description": "Jalankan tindakan ini tanpa meminta izin. Hanya aktifkan untuk tindakan yang Anda percayai sepenuhnya.",

+ 1 - 0
webview-ui/src/i18n/locales/id/settings.json

@@ -134,6 +134,7 @@
 		"resetToDefault": "Reset ke default"
 	},
 	"autoApprove": {
+		"toggleShortcut": "Anda dapat mengonfigurasi pintasan global untuk pengaturan ini <SettingsLink>di preferensi IDE Anda</SettingsLink>.",
 		"description": "Izinkan Roo untuk secara otomatis melakukan operasi tanpa memerlukan persetujuan. Aktifkan pengaturan ini hanya jika kamu sepenuhnya mempercayai AI dan memahami risiko keamanan yang terkait.",
 		"enabled": "Auto-Approve Diaktifkan",
 		"toggleAriaLabel": "Beralih persetujuan otomatis",

+ 1 - 0
webview-ui/src/i18n/locales/it/chat.json

@@ -253,6 +253,7 @@
 		"tooltipManage": "Gestisci impostazioni di approvazione automatica",
 		"tooltipStatus": "Approvazione automatica abilitata per: {{toggles}}",
 		"title": "Approvazione Automatica",
+		"toggle": "Attiva/disattiva approvazione automatica",
 		"all": "Tutti",
 		"none": "Nessuno",
 		"description": "Esegui queste azioni senza chiedere il permesso. Abilita solo per azioni di cui ti fidi completamente.",

+ 1 - 0
webview-ui/src/i18n/locales/it/settings.json

@@ -134,6 +134,7 @@
 		"resetToDefault": "Ripristina al valore predefinito"
 	},
 	"autoApprove": {
+		"toggleShortcut": "Puoi configurare una scorciatoia globale per questa impostazione <SettingsLink>nelle preferenze del tuo IDE</SettingsLink>.",
 		"description": "Permetti a Roo di eseguire automaticamente operazioni senza richiedere approvazione. Abilita queste impostazioni solo se ti fidi completamente dell'IA e comprendi i rischi di sicurezza associati.",
 		"enabled": "Auto-approvazione abilitata",
 		"toggleAriaLabel": "Attiva/disattiva approvazione automatica",

+ 1 - 0
webview-ui/src/i18n/locales/ja/chat.json

@@ -253,6 +253,7 @@
 		"tooltipManage": "自動承認設定を管理する",
 		"tooltipStatus": "自動承認が有効です: {{toggles}}",
 		"title": "自動承認",
+		"toggle": "自動承認を切り替える",
 		"all": "すべて",
 		"none": "なし",
 		"description": "許可を求めずにこれらのアクションを実行します。完全に信頼するアクションに対してのみ有効にしてください。",

+ 1 - 0
webview-ui/src/i18n/locales/ja/settings.json

@@ -134,6 +134,7 @@
 		"resetToDefault": "デフォルトにリセット"
 	},
 	"autoApprove": {
+		"toggleShortcut": "<SettingsLink>IDEの環境設定</SettingsLink>で、この設定のグローバルショートカットを設定できます。",
 		"description": "Rooが承認なしで自動的に操作を実行できるようにします。AIを完全に信頼し、関連するセキュリティリスクを理解している場合にのみ、これらの設定を有効にしてください。",
 		"enabled": "自動承認が有効",
 		"toggleAriaLabel": "自動承認の切り替え",

+ 1 - 0
webview-ui/src/i18n/locales/ko/chat.json

@@ -253,6 +253,7 @@
 		"tooltipManage": "자동 승인 설정 관리",
 		"tooltipStatus": "자동 승인 활성화됨: {{toggles}}",
 		"title": "자동 승인",
+		"toggle": "자동 승인 전환",
 		"all": "모두",
 		"none": "없음",
 		"description": "허가 없이 이러한 작업을 실행합니다. 전적으로 신뢰하는 작업에 대해서만 활성화하십시오.",

+ 1 - 0
webview-ui/src/i18n/locales/ko/settings.json

@@ -134,6 +134,7 @@
 		"resetToDefault": "기본값으로 재설정"
 	},
 	"autoApprove": {
+		"toggleShortcut": "<SettingsLink>IDE 환경 설정</SettingsLink>에서 이 설정에 대한 전역 바로 가기를 구성할 수 있습니다.",
 		"description": "Roo가 승인 없이 자동으로 작업을 수행할 수 있도록 허용합니다. AI를 완전히 신뢰하고 관련 보안 위험을 이해하는 경우에만 이러한 설정을 활성화하세요.",
 		"enabled": "자동 승인 활성화됨",
 		"toggleAriaLabel": "자동 승인 전환",

+ 1 - 0
webview-ui/src/i18n/locales/nl/chat.json

@@ -253,6 +253,7 @@
 		"tooltipManage": "Beheer instellingen voor automatische goedkeuring",
 		"tooltipStatus": "Automatische goedkeuring ingeschakeld voor: {{toggles}}",
 		"title": "Automatisch goedkeuren",
+		"toggle": "Automatisch goedkeuren in-/uitschakelen",
 		"all": "Alles",
 		"none": "Geen",
 		"description": "Voer deze acties uit zonder om toestemming te vragen. Schakel dit alleen in voor acties die je volledig vertrouwt.",

+ 1 - 0
webview-ui/src/i18n/locales/nl/settings.json

@@ -134,6 +134,7 @@
 		"resetToDefault": "Reset naar standaard"
 	},
 	"autoApprove": {
+		"toggleShortcut": "U kunt een globale sneltoets voor deze instelling configureren <SettingsLink>in de voorkeuren van uw IDE</SettingsLink>.",
 		"description": "Sta Roo toe om automatisch handelingen uit te voeren zonder goedkeuring. Schakel deze instellingen alleen in als je de AI volledig vertrouwt en de bijbehorende beveiligingsrisico's begrijpt.",
 		"enabled": "Auto-goedkeuren ingeschakeld",
 		"toggleAriaLabel": "Automatisch goedkeuren in-/uitschakelen",

+ 1 - 0
webview-ui/src/i18n/locales/pl/chat.json

@@ -253,6 +253,7 @@
 		"tooltipManage": "Zarządzaj ustawieniami automatycznego zatwierdzania",
 		"tooltipStatus": "Automatyczne zatwierdzanie włączone dla: {{toggles}}",
 		"title": "Automatyczne zatwierdzanie",
+		"toggle": "Przełącz automatyczne zatwierdzanie",
 		"all": "Wszystkie",
 		"none": "Żadne",
 		"description": "Wykonuj te działania bez pytania o zgodę. Włącz tę opcję tylko dla działań, którym w pełni ufasz.",

+ 1 - 0
webview-ui/src/i18n/locales/pl/settings.json

@@ -134,6 +134,7 @@
 		"resetToDefault": "Przywróć domyślne"
 	},
 	"autoApprove": {
+		"toggleShortcut": "Możesz skonfigurować globalny skrót dla tego ustawienia <SettingsLink>w preferencjach swojego IDE</SettingsLink>.",
 		"description": "Pozwól Roo na automatyczne wykonywanie operacji bez wymagania zatwierdzenia. Włącz te ustawienia tylko jeśli w pełni ufasz AI i rozumiesz związane z tym zagrożenia bezpieczeństwa.",
 		"enabled": "Auto-zatwierdzanie włączone",
 		"toggleAriaLabel": "Przełącz automatyczne zatwierdzanie",

+ 1 - 0
webview-ui/src/i18n/locales/pt-BR/chat.json

@@ -253,6 +253,7 @@
 		"tooltipManage": "Gerenciar configurações de aprovação automática",
 		"tooltipStatus": "Aprovação automática habilitada para: {{toggles}}",
 		"title": "Aprovação automática",
+		"toggle": "Alternar aprovação automática",
 		"all": "Todos",
 		"none": "Nenhum",
 		"description": "Execute estas ações sem pedir permissão. Ative isso apenas para ações em que você confia totalmente.",

+ 1 - 0
webview-ui/src/i18n/locales/pt-BR/settings.json

@@ -134,6 +134,7 @@
 		"resetToDefault": "Redefinir para o padrão"
 	},
 	"autoApprove": {
+		"toggleShortcut": "Você pode configurar um atalho global para esta configuração <SettingsLink>nas preferências do seu IDE</SettingsLink>.",
 		"description": "Permitir que o Roo realize operações automaticamente sem exigir aprovação. Ative essas configurações apenas se confiar totalmente na IA e compreender os riscos de segurança associados.",
 		"enabled": "Aprovação automática habilitada",
 		"toggleAriaLabel": "Alternar aprovação automática",

+ 2 - 1
webview-ui/src/i18n/locales/ru/chat.json

@@ -253,7 +253,8 @@
 	"autoApprove": {
 		"tooltipManage": "Управление настройками автоматического одобрения",
 		"tooltipStatus": "Авто-одобрение включено для: {{toggles}}",
-		"title": "Авто-утверждение",
+		"title": "Авто-одобрение",
+		"toggle": "Переключить авто-утверждение",
 		"all": "Все",
 		"none": "Ни одного",
 		"description": "Выполняйте эти действия, не спрашивая разрешения. Включайте это только для действий, которым вы полностью доверяете.",

+ 1 - 0
webview-ui/src/i18n/locales/ru/settings.json

@@ -134,6 +134,7 @@
 		"resetToDefault": "Сбросить к значению по умолчанию"
 	},
 	"autoApprove": {
+		"toggleShortcut": "Вы можете настроить глобальное сочетание клавиш для этого параметра <SettingsLink>в настройках вашей IDE</SettingsLink>.",
 		"description": "Разрешить Roo автоматически выполнять операции без необходимости одобрения. Включайте эти параметры только если полностью доверяете ИИ и понимаете связанные с этим риски безопасности.",
 		"enabled": "Автоодобрение включено",
 		"toggleAriaLabel": "Переключить автоодобрение",

+ 1 - 0
webview-ui/src/i18n/locales/tr/chat.json

@@ -254,6 +254,7 @@
 		"tooltipManage": "Otomatik onay ayarlarını yönet",
 		"tooltipStatus": "Otomatik onay şunlar için etkinleştirildi: {{toggles}}",
 		"title": "Otomatik onayla",
+		"toggle": "Otomatik onayı aç/kapat",
 		"all": "Tümü",
 		"none": "Hiçbiri",
 		"description": "İzin istemeden bu eylemleri gerçekleştirin. Bunu yalnızca tamamen güvendiğiniz eylemler için etkinleştirin.",

+ 1 - 0
webview-ui/src/i18n/locales/tr/settings.json

@@ -134,6 +134,7 @@
 		"resetToDefault": "Varsayılana sıfırla"
 	},
 	"autoApprove": {
+		"toggleShortcut": "<SettingsLink>IDE tercihlerinizde</SettingsLink> bu ayar için genel bir kısayol yapılandırabilirsiniz.",
 		"description": "Roo'nun onay gerektirmeden otomatik olarak işlemler gerçekleştirmesine izin verin. Bu ayarları yalnızca yapay zekaya tamamen güveniyorsanız ve ilgili güvenlik risklerini anlıyorsanız etkinleştirin.",
 		"enabled": "Oto-onay etkinleştirildi",
 		"toggleAriaLabel": "Otomatik onayı değiştir",

+ 1 - 0
webview-ui/src/i18n/locales/vi/chat.json

@@ -254,6 +254,7 @@
 		"tooltipManage": "Quản lý cài đặt tự động phê duyệt",
 		"tooltipStatus": "Tự động phê duyệt được bật cho: {{toggles}}",
 		"title": "Tự động phê duyệt",
+		"toggle": "Bật/tắt tự động phê duyệt",
 		"all": "Tất cả",
 		"none": "Không có",
 		"description": "Thực hiện các hành động này mà không cần xin phép. Chỉ bật tính năng này cho các hành động bạn hoàn toàn tin tưởng.",

+ 1 - 0
webview-ui/src/i18n/locales/vi/settings.json

@@ -134,6 +134,7 @@
 		"resetToDefault": "Đặt lại về mặc định"
 	},
 	"autoApprove": {
+		"toggleShortcut": "Bạn có thể định cấu hình một phím tắt chung cho cài đặt này <SettingsLink>trong tùy chọn IDE của bạn</SettingsLink>.",
 		"description": "Cho phép Roo tự động thực hiện các hoạt động mà không cần phê duyệt. Chỉ bật những cài đặt này nếu bạn hoàn toàn tin tưởng AI và hiểu rõ các rủi ro bảo mật liên quan.",
 		"enabled": "Phê duyệt tự động đã bật",
 		"toggleAriaLabel": "Chuyển đổi tự động phê duyệt",

+ 1 - 0
webview-ui/src/i18n/locales/zh-CN/chat.json

@@ -254,6 +254,7 @@
 		"tooltipManage": "管理自动批准设置",
 		"tooltipStatus": "自动批准已启用:{{toggles}}",
 		"title": "自动批准",
+		"toggle": "切换自动批准",
 		"all": "全部",
 		"none": "无",
 		"description": "无需请求权限即可执行这些操作。仅对您完全信任的操作启用此功能。",

+ 1 - 0
webview-ui/src/i18n/locales/zh-CN/settings.json

@@ -134,6 +134,7 @@
 		"resetToDefault": "恢复默认值"
 	},
 	"autoApprove": {
+		"toggleShortcut": "您可以<SettingsLink>在 IDE 首选项中</SettingsLink>为此设置配置全局快捷方式。",
 		"description": "允许 Roo 自动执行操作而无需批准。只有在您完全信任 AI 并了解相关安全风险的情况下才启用这些设置。",
 		"enabled": "自动批准已启用",
 		"toggleAriaLabel": "切换自动批准",

+ 1 - 0
webview-ui/src/i18n/locales/zh-TW/chat.json

@@ -278,6 +278,7 @@
 		"tooltipManage": "管理自動批准設定",
 		"tooltipStatus": "自動批准已啟用:{{toggles}}",
 		"title": "自動批准",
+		"toggle": "切換自動批准",
 		"all": "全部",
 		"none": "無",
 		"description": "無需請求權限即可執行這些操作。僅對您完全信任的操作啟用此功能。",

+ 1 - 0
webview-ui/src/i18n/locales/zh-TW/settings.json

@@ -134,6 +134,7 @@
 		"resetToDefault": "重設為預設值"
 	},
 	"autoApprove": {
+		"toggleShortcut": "您可以<SettingsLink>在 IDE 偏好設定中</SettingsLink>為此設定設定全域快捷鍵。",
 		"description": "允許 Roo 無需核准即執行操作。僅在您完全信任 AI 並了解相關安全風險時啟用這些設定。",
 		"enabled": "自動核准已啟用",
 		"toggleAriaLabel": "切換自動核准",