diff --git a/packages/cli/src/config/settingsSchema.ts b/packages/cli/src/config/settingsSchema.ts index e6a964260..075b311e0 100644 --- a/packages/cli/src/config/settingsSchema.ts +++ b/packages/cli/src/config/settingsSchema.ts @@ -545,9 +545,9 @@ const SETTINGS_SCHEMA = { label: 'Verbose Mode', category: 'UI', requiresRestart: false, - default: false, + default: true, description: - 'Show full tool output and thinking in verbose mode (toggle with ctrl+o).', + 'Show full tool output and thinking in verbose mode (toggle with Ctrl+O).', showInDialog: false, }, }, diff --git a/packages/cli/src/i18n/locales/de.js b/packages/cli/src/i18n/locales/de.js index aaf814ee1..fe1766fe2 100644 --- a/packages/cli/src/i18n/locales/de.js +++ b/packages/cli/src/i18n/locales/de.js @@ -1948,5 +1948,13 @@ export default { 'Raw-Modus nicht verfügbar. Bitte in einem interaktiven Terminal ausführen.', '(Use ↑ ↓ arrows to navigate, Enter to select, Ctrl+C to exit)\n': '(↑ ↓ Pfeiltasten zum Navigieren, Enter zum Auswählen, Strg+C zum Beenden)\n', - verbose: 'verbose', + verbose: 'ausführlich', + 'Verbose mode on — showing full tool output and thinking': + 'Ausführlicher Modus aktiv — vollständige Tool-Ausgabe und Denkprozess werden angezeigt', + 'Compact mode on — showing tool names and final responses only': + 'Kompakter Modus aktiv — nur Tool-Namen und abschließende Antworten werden angezeigt', + 'Show full tool output and thinking in verbose mode (toggle with Ctrl+O).': + 'Vollständige Tool-Ausgabe und Denkprozess im ausführlichen Modus anzeigen (mit Strg+O umschalten).', + 'Press Ctrl+O to show full tool output': + 'Strg+O für vollständige Tool-Ausgabe drücken', }; diff --git a/packages/cli/src/i18n/locales/en.js b/packages/cli/src/i18n/locales/en.js index 544dfb45c..13a48f462 100644 --- a/packages/cli/src/i18n/locales/en.js +++ b/packages/cli/src/i18n/locales/en.js @@ -1990,4 +1990,12 @@ export default { '(Use ↑ ↓ arrows to navigate, Enter to select, Ctrl+C to exit)\n': '(Use ↑ ↓ arrows to navigate, Enter to select, Ctrl+C to exit)\n', verbose: 'verbose', + 'Verbose mode on — showing full tool output and thinking': + 'Verbose mode on — showing full tool output and thinking', + 'Compact mode on — showing tool names and final responses only': + 'Compact mode on — showing tool names and final responses only', + 'Show full tool output and thinking in verbose mode (toggle with Ctrl+O).': + 'Show full tool output and thinking in verbose mode (toggle with Ctrl+O).', + 'Press Ctrl+O to show full tool output': + 'Press Ctrl+O to show full tool output', }; diff --git a/packages/cli/src/i18n/locales/ja.js b/packages/cli/src/i18n/locales/ja.js index 4b4bb53fb..d5601139b 100644 --- a/packages/cli/src/i18n/locales/ja.js +++ b/packages/cli/src/i18n/locales/ja.js @@ -1441,5 +1441,12 @@ export default { 'Rawモードが利用できません。インタラクティブターミナルで実行してください。', '(Use ↑ ↓ arrows to navigate, Enter to select, Ctrl+C to exit)\n': '(↑ ↓ 矢印キーで移動、Enter で選択、Ctrl+C で終了)\n', - verbose: 'verbose', + verbose: '詳細', + 'Verbose mode on — showing full tool output and thinking': + '詳細モードオン — 完全なツール出力と思考を表示しています', + 'Compact mode on — showing tool names and final responses only': + 'コンパクトモードオン — ツール名と最終応答のみ表示しています', + 'Show full tool output and thinking in verbose mode (toggle with Ctrl+O).': + '詳細モードで完全なツール出力と思考を表示します(Ctrl+O で切り替え)。', + 'Press Ctrl+O to show full tool output': 'Ctrl+O で完全なツール出力を表示', }; diff --git a/packages/cli/src/i18n/locales/pt.js b/packages/cli/src/i18n/locales/pt.js index 928f198a2..80ec4dd9d 100644 --- a/packages/cli/src/i18n/locales/pt.js +++ b/packages/cli/src/i18n/locales/pt.js @@ -1938,5 +1938,13 @@ export default { 'Modo raw não disponível. Execute em um terminal interativo.', '(Use ↑ ↓ arrows to navigate, Enter to select, Ctrl+C to exit)\n': '(Use ↑ ↓ para navegar, Enter para selecionar, Ctrl+C para sair)\n', - verbose: 'verbose', + verbose: 'detalhado', + 'Verbose mode on — showing full tool output and thinking': + 'Modo detalhado ativado — exibindo saída completa da ferramenta e raciocínio', + 'Compact mode on — showing tool names and final responses only': + 'Modo compacto ativado — exibindo apenas nomes de ferramentas e respostas finais', + 'Show full tool output and thinking in verbose mode (toggle with Ctrl+O).': + 'Mostrar saída completa da ferramenta e raciocínio no modo detalhado (alternar com Ctrl+O).', + 'Press Ctrl+O to show full tool output': + 'Pressione Ctrl+O para exibir a saída completa da ferramenta', }; diff --git a/packages/cli/src/i18n/locales/ru.js b/packages/cli/src/i18n/locales/ru.js index ee0cfe69b..9d59998ef 100644 --- a/packages/cli/src/i18n/locales/ru.js +++ b/packages/cli/src/i18n/locales/ru.js @@ -1945,5 +1945,13 @@ export default { 'Raw-режим недоступен. Пожалуйста, запустите в интерактивном терминале.', '(Use ↑ ↓ arrows to navigate, Enter to select, Ctrl+C to exit)\n': '(↑ ↓ стрелки для навигации, Enter для выбора, Ctrl+C для выхода)\n', - verbose: 'verbose', + verbose: 'подробный', + 'Verbose mode on — showing full tool output and thinking': + 'Подробный режим включён — отображается полный вывод инструментов и рассуждения', + 'Compact mode on — showing tool names and final responses only': + 'Компактный режим включён — отображаются только имена инструментов и окончательные ответы', + 'Show full tool output and thinking in verbose mode (toggle with Ctrl+O).': + 'Показывать полный вывод инструментов и процесс рассуждений в подробном режиме (переключить с помощью Ctrl+O).', + 'Press Ctrl+O to show full tool output': + 'Нажмите Ctrl+O для показа полного вывода инструментов', }; diff --git a/packages/cli/src/i18n/locales/zh.js b/packages/cli/src/i18n/locales/zh.js index 56b747dcf..3c1501926 100644 --- a/packages/cli/src/i18n/locales/zh.js +++ b/packages/cli/src/i18n/locales/zh.js @@ -1795,5 +1795,12 @@ export default { '原始模式不可用。请在交互式终端中运行。', '(Use ↑ ↓ arrows to navigate, Enter to select, Ctrl+C to exit)\n': '(使用 ↑ ↓ 箭头导航,Enter 选择,Ctrl+C 退出)\n', - verbose: '详细模式', + verbose: '详细', + 'Verbose mode on — showing full tool output and thinking': + '已切换到详细模式 — 完整显示工具输出和思考过程', + 'Compact mode on — showing tool names and final responses only': + '已切换到精简模式 — 仅显示工具名称和最终回答', + 'Show full tool output and thinking in verbose mode (toggle with Ctrl+O).': + '详细模式下显示完整工具输出和思考过程(Ctrl+O 切换)。', + 'Press Ctrl+O to show full tool output': '按 Ctrl+O 查看详细工具调用结果', }; diff --git a/packages/cli/src/ui/AppContainer.tsx b/packages/cli/src/ui/AppContainer.tsx index b4b3a4dd9..b829645cf 100644 --- a/packages/cli/src/ui/AppContainer.tsx +++ b/packages/cli/src/ui/AppContainer.tsx @@ -970,7 +970,7 @@ export const AppContainer = (props: AppContainerProps) => { useState(false); const [verboseMode, setVerboseMode] = useState( - settings.merged.ui?.verboseMode ?? false, + settings.merged.ui?.verboseMode ?? true, ); const [frozenSnapshot, setFrozenSnapshot] = useState< HistoryItemWithoutId[] | null @@ -1371,7 +1371,9 @@ export const AppContainer = (props: AppContainerProps) => { setVerboseMode(newValue); void settings.setValue(SettingScope.User, 'ui.verboseMode', newValue); refreshStatic(); - if (newValue && streamingState !== StreamingState.Idle) { + // Symmetric freeze: capture snapshot on ANY toggle during streaming + // (not just to verbose) to prevent abrupt content changes. + if (streamingState !== StreamingState.Idle) { setFrozenSnapshot([...pendingHistoryItems]); } else { setFrozenSnapshot(null); @@ -1404,6 +1406,9 @@ export const AppContainer = (props: AppContainerProps) => { btwItem, setBtwItem, cancelBtw, + // `settings` is a stable LoadedSettings instance (not recreated on render). + // ESLint requires it here because the callback calls settings.setValue(). + // debugKeystrokeLogging is read at call time, so no stale closure risk. settings, isAuthenticating, verboseMode, diff --git a/packages/cli/src/ui/components/HistoryItemDisplay.tsx b/packages/cli/src/ui/components/HistoryItemDisplay.tsx index bf31c9e8a..ad5f8a4f0 100644 --- a/packages/cli/src/ui/components/HistoryItemDisplay.tsx +++ b/packages/cli/src/ui/components/HistoryItemDisplay.tsx @@ -180,6 +180,7 @@ const HistoryItemDisplayComponent: React.FC = ({ isFocused={isFocused} activeShellPtyId={activeShellPtyId} embeddedShellFocused={embeddedShellFocused} + isUserInitiated={itemForDisplay.isUserInitiated} /> )} {itemForDisplay.type === 'compression' && ( diff --git a/packages/cli/src/ui/components/__snapshots__/Footer.test.tsx.snap b/packages/cli/src/ui/components/__snapshots__/Footer.test.tsx.snap index e22196178..13017da60 100644 --- a/packages/cli/src/ui/components/__snapshots__/Footer.test.tsx.snap +++ b/packages/cli/src/ui/components/__snapshots__/Footer.test.tsx.snap @@ -1,5 +1,5 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`