diff --git a/src/components/chat/tools/ToolRenderer.tsx b/src/components/chat/tools/ToolRenderer.tsx index 0d9e1f6a..f9ebfbe5 100644 --- a/src/components/chat/tools/ToolRenderer.tsx +++ b/src/components/chat/tools/ToolRenderer.tsx @@ -24,7 +24,6 @@ interface ToolRendererProps { onFileOpen?: (filePath: string, diffInfo?: any) => void; createDiff?: (oldStr: string, newStr: string) => DiffLine[]; selectedProject?: Project | null; - autoExpandTools?: boolean; showRawParameters?: boolean; rawToolInput?: string; isSubagentContainer?: boolean; @@ -80,7 +79,6 @@ export const ToolRenderer: React.FC = memo(({ onFileOpen, createDiff, selectedProject, - autoExpandTools = false, showRawParameters = false, rawToolInput, isSubagentContainer, @@ -151,8 +149,8 @@ export const ToolRenderer: React.FC = memo(({ output={output} isError={Boolean(toolResult?.isError)} status={toolStatus !== 'completed' ? toolStatus : undefined} - // Commands stay collapsed by default (even consecutive ones); only - // failures auto-expand so they remain visible. + // Commands stay collapsed by default; only failures auto-expand so they + // remain visible. defaultOpen={false} /> ); @@ -199,7 +197,7 @@ export const ToolRenderer: React.FC = memo(({ = memo(({ const defaultOpen = displayConfig.defaultOpen !== undefined ? displayConfig.defaultOpen - : autoExpandTools; + : false; const contentProps = displayConfig.getContentProps?.(parsedData, { selectedProject, diff --git a/src/components/chat/types/types.ts b/src/components/chat/types/types.ts index fdeab8df..15cb90b8 100644 --- a/src/components/chat/types/types.ts +++ b/src/components/chat/types/types.ts @@ -126,7 +126,6 @@ export interface ChatInterfaceProps { onNavigateToSession?: (targetSessionId: string, options?: SessionNavigationOptions) => void; onSessionEstablished?: (sessionId: string, context: SessionEstablishedContext) => void; onShowSettings?: () => void; - autoExpandTools?: boolean; showRawParameters?: boolean; showThinking?: boolean; sendByCtrlEnter?: boolean; diff --git a/src/components/chat/view/ChatInterface.tsx b/src/components/chat/view/ChatInterface.tsx index 103dea81..96980179 100644 --- a/src/components/chat/view/ChatInterface.tsx +++ b/src/components/chat/view/ChatInterface.tsx @@ -31,7 +31,6 @@ function ChatInterface({ onNavigateToSession, onSessionEstablished, onShowSettings, - autoExpandTools, showRawParameters, showThinking, sendByCtrlEnter, @@ -355,7 +354,6 @@ function ChatInterface({ onFileOpen={onFileOpen} onShowSettings={onShowSettings} onGrantToolPermission={handleGrantToolPermission} - autoExpandTools={autoExpandTools} showRawParameters={showRawParameters} showThinking={showThinking} selectedProject={selectedProject} diff --git a/src/components/chat/view/subcomponents/ChatMessagesPane.tsx b/src/components/chat/view/subcomponents/ChatMessagesPane.tsx index a437a4f8..0b716c3b 100644 --- a/src/components/chat/view/subcomponents/ChatMessagesPane.tsx +++ b/src/components/chat/view/subcomponents/ChatMessagesPane.tsx @@ -62,7 +62,6 @@ interface ChatMessagesPaneProps { onFileOpen?: (filePath: string, diffInfo?: unknown) => void; onShowSettings?: () => void; onGrantToolPermission: (suggestion: { entry: string; toolName: string }) => { success: boolean }; - autoExpandTools?: boolean; showRawParameters?: boolean; showThinking?: boolean; selectedProject: Project; @@ -112,7 +111,6 @@ function ChatMessagesPane({ onFileOpen, onShowSettings, onGrantToolPermission, - autoExpandTools, showRawParameters, showThinking, selectedProject, @@ -264,7 +262,6 @@ function ChatMessagesPane({ onFileOpen={onFileOpen} onShowSettings={onShowSettings} onGrantToolPermission={onGrantToolPermission} - autoExpandTools={autoExpandTools} showRawParameters={showRawParameters} showThinking={showThinking} selectedProject={selectedProject} @@ -285,7 +282,6 @@ function ChatMessagesPane({ onFileOpen={onFileOpen} onShowSettings={onShowSettings} onGrantToolPermission={onGrantToolPermission} - autoExpandTools={autoExpandTools} showRawParameters={showRawParameters} showThinking={showThinking} selectedProject={selectedProject} diff --git a/src/components/chat/view/subcomponents/MessageComponent.tsx b/src/components/chat/view/subcomponents/MessageComponent.tsx index cfe852fe..b486da61 100644 --- a/src/components/chat/view/subcomponents/MessageComponent.tsx +++ b/src/components/chat/view/subcomponents/MessageComponent.tsx @@ -1,4 +1,4 @@ -import { memo, useEffect, useMemo, useRef, useState } from 'react'; +import { memo, useMemo, useRef } from 'react'; import { useTranslation } from 'react-i18next'; import SessionProviderLogo from '../../../llm-logo-provider/SessionProviderLogo'; @@ -30,7 +30,6 @@ type MessageComponentProps = { onFileOpen?: (filePath: string, diffInfo?: unknown) => void; onShowSettings?: () => void; onGrantToolPermission?: (suggestion: ClaudePermissionSuggestion) => PermissionGrantResult | null | undefined; - autoExpandTools?: boolean; showRawParameters?: boolean; showThinking?: boolean; selectedProject?: Project | null; @@ -45,7 +44,7 @@ type InteractiveOption = { const COPY_HIDDEN_TOOL_NAMES = new Set(['Bash', 'Edit', 'Write', 'ApplyPatch']); -const MessageComponent = memo(({ message, prevMessage, createDiff, onFileOpen, autoExpandTools, showRawParameters, showThinking, selectedProject, provider }: MessageComponentProps) => { +const MessageComponent = memo(({ message, prevMessage, createDiff, onFileOpen, showRawParameters, showThinking, selectedProject, provider }: MessageComponentProps) => { const { t } = useTranslation('chat'); const isGrouped = prevMessage && prevMessage.type === message.type && ((prevMessage.type === 'assistant') || @@ -53,7 +52,6 @@ const MessageComponent = memo(({ message, prevMessage, createDiff, onFileOpen, a (prevMessage.type === 'tool') || (prevMessage.type === 'error')); const messageRef = useRef(null); - const [isExpanded, setIsExpanded] = useState(false); const userCopyContent = String(message.content || ''); const formattedMessageContent = useMemo( () => formatUsageLimitText(String(message.content || '')), @@ -72,32 +70,6 @@ const MessageComponent = memo(({ message, prevMessage, createDiff, onFileOpen, a !message.isThinking; - useEffect(() => { - const node = messageRef.current; - if (!autoExpandTools || !node || !message.isToolUse) return; - - const observer = new IntersectionObserver( - (entries) => { - entries.forEach((entry) => { - if (entry.isIntersecting && !isExpanded) { - setIsExpanded(true); - const details = node.querySelectorAll('details'); - details.forEach((detail) => { - detail.open = true; - }); - } - }); - }, - { threshold: 0.1 } - ); - - observer.observe(node); - - return () => { - observer.unobserve(node); - }; - }, [autoExpandTools, isExpanded, message.isToolUse]); - const formattedTime = useMemo(() => new Date(message.timestamp).toLocaleTimeString(), [message.timestamp]); const shouldHideThinkingMessage = Boolean(message.isThinking && !showThinking); @@ -210,7 +182,6 @@ const MessageComponent = memo(({ message, prevMessage, createDiff, onFileOpen, a onFileOpen={onFileOpen} createDiff={createDiff} selectedProject={selectedProject} - autoExpandTools={autoExpandTools} showRawParameters={showRawParameters} rawToolInput={typeof message.toolInput === 'string' ? message.toolInput : undefined} isSubagentContainer={message.isSubagentContainer} @@ -250,7 +221,6 @@ const MessageComponent = memo(({ message, prevMessage, createDiff, onFileOpen, a onFileOpen={onFileOpen} createDiff={createDiff} selectedProject={selectedProject} - autoExpandTools={autoExpandTools} /> ) diff --git a/src/components/chat/view/subcomponents/ToolGroupContainer.tsx b/src/components/chat/view/subcomponents/ToolGroupContainer.tsx index 5fc5e837..79e1a02d 100644 --- a/src/components/chat/view/subcomponents/ToolGroupContainer.tsx +++ b/src/components/chat/view/subcomponents/ToolGroupContainer.tsx @@ -22,7 +22,6 @@ interface ToolGroupContainerProps { onFileOpen?: (filePath: string, diffInfo?: unknown) => void; onShowSettings?: () => void; onGrantToolPermission?: (suggestion: ClaudePermissionSuggestion) => PermissionGrantResult | null | undefined; - autoExpandTools?: boolean; showRawParameters?: boolean; showThinking?: boolean; selectedProject?: Project | null; @@ -66,7 +65,6 @@ export default function ToolGroupContainer({ onFileOpen, onShowSettings, onGrantToolPermission, - autoExpandTools, showRawParameters, showThinking, selectedProject, @@ -133,7 +131,6 @@ export default function ToolGroupContainer({ onFileOpen={onFileOpen} onShowSettings={onShowSettings} onGrantToolPermission={onGrantToolPermission} - autoExpandTools={autoExpandTools} showRawParameters={showRawParameters} showThinking={showThinking} selectedProject={selectedProject} diff --git a/src/components/main-content/view/MainContent.tsx b/src/components/main-content/view/MainContent.tsx index 9b00f926..6f746857 100644 --- a/src/components/main-content/view/MainContent.tsx +++ b/src/components/main-content/view/MainContent.tsx @@ -54,7 +54,7 @@ function MainContent({ newSessionTrigger, }: MainContentProps) { const { preferences } = useUiPreferences(); - const { autoExpandTools, showRawParameters, showThinking, sendByCtrlEnter } = preferences; + const { showRawParameters, showThinking, sendByCtrlEnter } = preferences; const { currentProject, setCurrentProject } = useTaskMaster() as TaskMasterContextValue; const { tasksEnabled, isTaskMasterInstalled } = useTasksSettings() as TasksSettingsContextValue; @@ -170,7 +170,6 @@ function MainContent({ onNavigateToSession={onNavigateToSession} onSessionEstablished={onSessionEstablished} onShowSettings={onShowSettings} - autoExpandTools={autoExpandTools} showRawParameters={showRawParameters} showThinking={showThinking} sendByCtrlEnter={sendByCtrlEnter} diff --git a/src/components/quick-settings-panel/constants.ts b/src/components/quick-settings-panel/constants.ts index 3810d9ba..91cfbafc 100644 --- a/src/components/quick-settings-panel/constants.ts +++ b/src/components/quick-settings-panel/constants.ts @@ -2,7 +2,6 @@ import { Brain, Eye, Languages, - Maximize2, Mic, } from 'lucide-react'; @@ -24,11 +23,6 @@ export const CHECKBOX_CLASS = 'h-4 w-4 rounded border-gray-300 dark:border-gray-600 text-blue-600 dark:text-blue-500 focus:ring-blue-500 focus:ring-2 dark:focus:ring-blue-400 bg-gray-100 dark:bg-gray-800 checked:bg-blue-600 dark:checked:bg-blue-600'; export const TOOL_DISPLAY_TOGGLES: PreferenceToggleItem[] = [ - { - key: 'autoExpandTools', - labelKey: 'quickSettings.autoExpandTools', - icon: Maximize2, - }, { key: 'showRawParameters', labelKey: 'quickSettings.showRawParameters', diff --git a/src/components/quick-settings-panel/types.ts b/src/components/quick-settings-panel/types.ts index a02401e8..8bb760d5 100644 --- a/src/components/quick-settings-panel/types.ts +++ b/src/components/quick-settings-panel/types.ts @@ -2,7 +2,6 @@ import type { CSSProperties } from 'react'; import type { LucideIcon } from 'lucide-react'; export type PreferenceToggleKey = - | 'autoExpandTools' | 'showRawParameters' | 'showThinking' | 'sendByCtrlEnter' diff --git a/src/components/quick-settings-panel/view/QuickSettingsPanelView.tsx b/src/components/quick-settings-panel/view/QuickSettingsPanelView.tsx index d42a7306..07535d25 100644 --- a/src/components/quick-settings-panel/view/QuickSettingsPanelView.tsx +++ b/src/components/quick-settings-panel/view/QuickSettingsPanelView.tsx @@ -24,13 +24,11 @@ export default function QuickSettingsPanelView() { } = useQuickSettingsDrag({ isMobile }); const quickSettingsPreferences = useMemo(() => ({ - autoExpandTools: preferences.autoExpandTools, showRawParameters: preferences.showRawParameters, showThinking: preferences.showThinking, sendByCtrlEnter: preferences.sendByCtrlEnter, voiceEnabled: preferences.voiceEnabled, }), [ - preferences.autoExpandTools, preferences.sendByCtrlEnter, preferences.showRawParameters, preferences.showThinking, diff --git a/src/hooks/useUiPreferences.ts b/src/hooks/useUiPreferences.ts index b4531ba9..35e03aeb 100644 --- a/src/hooks/useUiPreferences.ts +++ b/src/hooks/useUiPreferences.ts @@ -1,7 +1,6 @@ import { useEffect, useReducer, useRef } from 'react'; type UiPreferences = { - autoExpandTools: boolean; showRawParameters: boolean; showThinking: boolean; sendByCtrlEnter: boolean; @@ -33,7 +32,6 @@ type UiPreferencesAction = | ResetPreferencesAction; const DEFAULTS: UiPreferences = { - autoExpandTools: false, showRawParameters: false, showThinking: true, sendByCtrlEnter: false, diff --git a/src/i18n/locales/de/settings.json b/src/i18n/locales/de/settings.json index 85fb4c84..958735bd 100644 --- a/src/i18n/locales/de/settings.json +++ b/src/i18n/locales/de/settings.json @@ -57,7 +57,6 @@ "inputSettings": "Eingabeeinstellungen" }, "darkMode": "Darkmode", - "autoExpandTools": "Werkzeuge automatisch erweitern", "showRawParameters": "Rohe Parameter anzeigen", "showThinking": "Denken anzeigen", "sendByCtrlEnter": "Mit Strg+Enter senden", diff --git a/src/i18n/locales/en/settings.json b/src/i18n/locales/en/settings.json index 7c779d21..aabfc143 100644 --- a/src/i18n/locales/en/settings.json +++ b/src/i18n/locales/en/settings.json @@ -73,7 +73,6 @@ "inputSettings": "Input Settings" }, "darkMode": "Dark Mode", - "autoExpandTools": "Auto-expand tools", "showRawParameters": "Show raw parameters", "showThinking": "Show thinking", "sendByCtrlEnter": "Send by Ctrl+Enter", diff --git a/src/i18n/locales/fr/settings.json b/src/i18n/locales/fr/settings.json index ec3c59ec..bb25cd8a 100644 --- a/src/i18n/locales/fr/settings.json +++ b/src/i18n/locales/fr/settings.json @@ -57,7 +57,6 @@ "inputSettings": "Paramètres de saisie" }, "darkMode": "Mode sombre", - "autoExpandTools": "Développer automatiquement les outils", "showRawParameters": "Afficher les paramètres bruts", "showThinking": "Afficher la réflexion", "sendByCtrlEnter": "Envoyer avec Ctrl+Entrée", diff --git a/src/i18n/locales/it/settings.json b/src/i18n/locales/it/settings.json index 28e8a1e3..45f320f1 100644 --- a/src/i18n/locales/it/settings.json +++ b/src/i18n/locales/it/settings.json @@ -57,7 +57,6 @@ "inputSettings": "Impostazioni input" }, "darkMode": "Modalità scura", - "autoExpandTools": "Espandi strumenti automaticamente", "showRawParameters": "Mostra parametri grezzi", "showThinking": "Mostra ragionamento", "sendByCtrlEnter": "Invia con Ctrl+Invio", diff --git a/src/i18n/locales/ja/settings.json b/src/i18n/locales/ja/settings.json index d59e32a0..ee3b7f20 100644 --- a/src/i18n/locales/ja/settings.json +++ b/src/i18n/locales/ja/settings.json @@ -57,7 +57,6 @@ "inputSettings": "入力設定" }, "darkMode": "ダークモード", - "autoExpandTools": "ツールを自動展開", "showRawParameters": "生パラメータを表示", "showThinking": "思考を表示", "sendByCtrlEnter": "Ctrl+Enterで送信", diff --git a/src/i18n/locales/ko/settings.json b/src/i18n/locales/ko/settings.json index c45c7227..6a23ac6c 100644 --- a/src/i18n/locales/ko/settings.json +++ b/src/i18n/locales/ko/settings.json @@ -57,7 +57,6 @@ "inputSettings": "입력 설정" }, "darkMode": "다크 모드", - "autoExpandTools": "도구 자동 펼치기", "showRawParameters": "Raw 파라미터 표시", "showThinking": "생각 과정 표시", "sendByCtrlEnter": "Ctrl+Enter로 전송", diff --git a/src/i18n/locales/ru/settings.json b/src/i18n/locales/ru/settings.json index f83881dc..480cbcdf 100644 --- a/src/i18n/locales/ru/settings.json +++ b/src/i18n/locales/ru/settings.json @@ -57,7 +57,6 @@ "inputSettings": "Настройки ввода" }, "darkMode": "Темная тема", - "autoExpandTools": "Автоматически разворачивать инструменты", "showRawParameters": "Показывать сырые параметры", "showThinking": "Показывать размышления", "sendByCtrlEnter": "Отправка по Ctrl+Enter", diff --git a/src/i18n/locales/tr/settings.json b/src/i18n/locales/tr/settings.json index 4c56722a..00b0465b 100644 --- a/src/i18n/locales/tr/settings.json +++ b/src/i18n/locales/tr/settings.json @@ -57,7 +57,6 @@ "inputSettings": "Girdi Ayarları" }, "darkMode": "Koyu Mod", - "autoExpandTools": "Araçları otomatik genişlet", "showRawParameters": "Ham parametreleri göster", "showThinking": "Düşünmeyi göster", "sendByCtrlEnter": "Ctrl+Enter ile gönder", diff --git a/src/i18n/locales/zh-CN/settings.json b/src/i18n/locales/zh-CN/settings.json index 518edb43..e383f84f 100644 --- a/src/i18n/locales/zh-CN/settings.json +++ b/src/i18n/locales/zh-CN/settings.json @@ -57,7 +57,6 @@ "inputSettings": "输入设置" }, "darkMode": "深色模式", - "autoExpandTools": "自动展开工具", "showRawParameters": "显示原始参数", "showThinking": "显示思考过程", "sendByCtrlEnter": "使用 Ctrl+Enter 发送", diff --git a/src/i18n/locales/zh-TW/settings.json b/src/i18n/locales/zh-TW/settings.json index 7bda49ee..1f1fe22f 100644 --- a/src/i18n/locales/zh-TW/settings.json +++ b/src/i18n/locales/zh-TW/settings.json @@ -57,7 +57,6 @@ "inputSettings": "輸入設定" }, "darkMode": "深色模式", - "autoExpandTools": "自動展開工具", "showRawParameters": "顯示原始參數", "showThinking": "顯示思考過程", "sendByCtrlEnter": "使用 Ctrl+Enter 傳送",