From 9dd389fe8e2cffce29e26477af1ee8abe105d70d Mon Sep 17 00:00:00 2001 From: Bohdan Triapitsyn Date: Mon, 13 Jul 2026 01:33:19 +0300 Subject: [PATCH] feat: group chat visual settings into labeled sections Adds section headers and tooltip help for the goal settings area Reorganizes chat settings into Session Assistance, Reasoning, Message Appearance, Tools & Files, and Composer groups Adds localized labels and search entries for the new section headings --- .../openchamber/OpenChamberVisualSettings.tsx | 97 ++++++++++++------- .../ui/src/lib/i18n/messages/en.settings.ts | 5 + .../ui/src/lib/i18n/messages/es.settings.ts | 5 + .../ui/src/lib/i18n/messages/fr.settings.ts | 5 + .../ui/src/lib/i18n/messages/ja.settings.ts | 5 + .../ui/src/lib/i18n/messages/ko.settings.ts | 5 + .../ui/src/lib/i18n/messages/pl.settings.ts | 5 + .../src/lib/i18n/messages/pt-BR.settings.ts | 5 + .../ui/src/lib/i18n/messages/uk.settings.ts | 5 + .../src/lib/i18n/messages/zh-CN.settings.ts | 5 + .../src/lib/i18n/messages/zh-TW.settings.ts | 5 + packages/ui/src/lib/settings/search.ts | 30 ++++++ 12 files changed, 143 insertions(+), 34 deletions(-) diff --git a/packages/ui/src/components/sections/openchamber/OpenChamberVisualSettings.tsx b/packages/ui/src/components/sections/openchamber/OpenChamberVisualSettings.tsx index f0436697..0fd8b822 100644 --- a/packages/ui/src/components/sections/openchamber/OpenChamberVisualSettings.tsx +++ b/packages/ui/src/components/sections/openchamber/OpenChamberVisualSettings.tsx @@ -1824,11 +1824,18 @@ export const OpenChamberVisualSettings: React.FC {/* The goal loop runs in the web server — VS Code only renders goal state, so the settings section is hidden there too. */} {shouldShow('sessionGoal') && !isVSCode && ( -
-
+
+

{t('settings.openchamber.visual.goal.sectionTitle')}

+ + + + + + {t('settings.openchamber.visual.goal.description')} + +
-
/> ) : null}
-

{t('settings.openchamber.visual.goal.description')}

-
-
+ )} {(shouldShow('sessionAssist') || shouldShow('collapsibleUserMessages') || shouldShow('stickyUserHeader') || shouldShow('wideChatLayout') || shouldShow('codeBlockLineWrap') || shouldShow('splitAssistantMessageActions') || shouldShow('subagentReadOnlyBanner') || shouldShow('dotfiles') || shouldShow('fileViewerPreview') || shouldShow('persistDraft') || shouldShow('showToolFileIcons') || shouldShow('showTurnChangedFiles') || (!isMobile && shouldShow('inputSpellcheck')) || shouldShow('reasoning')) && ( -
- {shouldShow('sessionAssist') && ( +
+ {(shouldShow('sessionAssist') || shouldShow('subagentReadOnlyBanner')) && ( +
+

{t('settings.openchamber.visual.section.sessionAssistance')}

+ {shouldShow('sessionAssist') && ( <>
{t('settings.openchamber.visual.field.sessionSuggestion')}
+ )} + {shouldShow('subagentReadOnlyBanner') && ( +
setAllowPromptingSubagentSessions(!allowPromptingSubagentSessions)} + onKeyDown={(event) => { + if (event.key === ' ' || event.key === 'Enter') { + event.preventDefault(); + setAllowPromptingSubagentSessions(!allowPromptingSubagentSessions); + } + }} + > + + {t('settings.openchamber.visual.field.allowPromptingSubagentSessions')} +
+ )} +
)} + {shouldShow('reasoning') && ( +
+

{t('settings.openchamber.visual.section.reasoning')}

{shouldShow('reasoning') && (
{t('settings.openchamber.visual.field.collapsibleThinkingBlocks')}
)} +
+ )} + {(shouldShow('collapsibleUserMessages') || shouldShow('stickyUserHeader') || shouldShow('wideChatLayout') || shouldShow('splitAssistantMessageActions') || shouldShow('codeBlockLineWrap')) && ( +
+

{t('settings.openchamber.visual.section.messageAppearance')}

{shouldShow('collapsibleUserMessages') && (
)} - {shouldShow('subagentReadOnlyBanner') && ( -
setAllowPromptingSubagentSessions(!allowPromptingSubagentSessions)} - onKeyDown={(event) => { - if (event.key === ' ' || event.key === 'Enter') { - event.preventDefault(); - setAllowPromptingSubagentSessions(!allowPromptingSubagentSessions); - } - }} - > - - {t('settings.openchamber.visual.field.allowPromptingSubagentSessions')} -
- )} - {shouldShow('codeBlockLineWrap') && (
{t('settings.openchamber.visual.field.codeBlockLineWrap')}
)} +
+ )} + {(shouldShow('showToolFileIcons') || shouldShow('showTurnChangedFiles') || shouldShow('dotfiles') || shouldShow('fileViewerPreview')) && ( +
+

{t('settings.openchamber.visual.section.toolsAndFiles')}

{shouldShow('showToolFileIcons') && (
{t('settings.openchamber.defaults.field.openFilesPreview')}
)} +
+ )} + {(shouldShow('persistDraft') || (!isMobile && shouldShow('inputSpellcheck'))) && ( +
+

{t('settings.openchamber.visual.section.composer')}

{shouldShow('persistDraft') && (
{!isMobile && shouldShow('inputSpellcheck') && (
{t('settings.openchamber.visual.field.enableSpellcheckInTextInputs')}
)} +
+ )} -
+
)} diff --git a/packages/ui/src/lib/i18n/messages/en.settings.ts b/packages/ui/src/lib/i18n/messages/en.settings.ts index 521b1eee..19cb2b8e 100644 --- a/packages/ui/src/lib/i18n/messages/en.settings.ts +++ b/packages/ui/src/lib/i18n/messages/en.settings.ts @@ -1702,6 +1702,11 @@ export const settingsDict = { 'settings.openchamber.visual.section.activityDefault': 'Activity Default', 'settings.openchamber.visual.section.activityDefaultAria': 'Activity default mode', 'settings.openchamber.visual.section.showToolsOpenedByDefault': 'Show tools opened by default:', + 'settings.openchamber.visual.section.sessionAssistance': 'Session Assistance', + 'settings.openchamber.visual.section.reasoning': 'Reasoning', + 'settings.openchamber.visual.section.messageAppearance': 'Message Appearance', + 'settings.openchamber.visual.section.toolsAndFiles': 'Tools & Files', + 'settings.openchamber.visual.section.composer': 'Composer', 'settings.openchamber.visual.section.userMessageRendering': 'User Message Rendering', 'settings.openchamber.visual.section.userMessageRenderingAria': 'User message rendering mode', 'settings.openchamber.visual.section.mermaidRendering': 'Mermaid Rendering', diff --git a/packages/ui/src/lib/i18n/messages/es.settings.ts b/packages/ui/src/lib/i18n/messages/es.settings.ts index 32858b61..36409f78 100644 --- a/packages/ui/src/lib/i18n/messages/es.settings.ts +++ b/packages/ui/src/lib/i18n/messages/es.settings.ts @@ -1669,6 +1669,11 @@ export const settingsDict = { "settings.openchamber.visual.section.activityDefault": "Modo predeterminado de actividad", "settings.openchamber.visual.section.activityDefaultAria": "Modo predeterminado de actividad", "settings.openchamber.visual.section.showToolsOpenedByDefault": "Mostrar herramientas abiertas por defecto:", + "settings.openchamber.visual.section.sessionAssistance": "Asistencia de sesión", + "settings.openchamber.visual.section.reasoning": "Razonamiento", + "settings.openchamber.visual.section.messageAppearance": "Apariencia de los mensajes", + "settings.openchamber.visual.section.toolsAndFiles": "Herramientas y archivos", + "settings.openchamber.visual.section.composer": "Compositor", "settings.openchamber.visual.section.userMessageRendering": "Renderizado de mensajes del usuario", "settings.openchamber.visual.section.userMessageRenderingAria": "Modo de Renderizado de mensajes del usuario", "settings.openchamber.visual.section.mermaidRendering": "Renderizado de Mermaid", diff --git a/packages/ui/src/lib/i18n/messages/fr.settings.ts b/packages/ui/src/lib/i18n/messages/fr.settings.ts index affca386..03e1cef1 100644 --- a/packages/ui/src/lib/i18n/messages/fr.settings.ts +++ b/packages/ui/src/lib/i18n/messages/fr.settings.ts @@ -1587,6 +1587,11 @@ export const settingsDict = { 'settings.openchamber.visual.section.activityDefault': 'Activité par défaut', 'settings.openchamber.visual.section.activityDefaultAria': 'Mode d\'activité par défaut', 'settings.openchamber.visual.section.showToolsOpenedByDefault': 'Afficher les outils ouverts par défaut :', + 'settings.openchamber.visual.section.sessionAssistance': 'Assistance de session', + 'settings.openchamber.visual.section.reasoning': 'Raisonnement', + 'settings.openchamber.visual.section.messageAppearance': 'Apparence des messages', + 'settings.openchamber.visual.section.toolsAndFiles': 'Outils et fichiers', + 'settings.openchamber.visual.section.composer': 'Zone de saisie', 'settings.openchamber.visual.section.userMessageRendering': 'Rendu des messages utilisateur', 'settings.openchamber.visual.section.userMessageRenderingAria': 'Mode de rendu des messages utilisateur', 'settings.openchamber.visual.section.mermaidRendering': 'Rendu Mermaid', diff --git a/packages/ui/src/lib/i18n/messages/ja.settings.ts b/packages/ui/src/lib/i18n/messages/ja.settings.ts index 8d47d37b..ef062d88 100644 --- a/packages/ui/src/lib/i18n/messages/ja.settings.ts +++ b/packages/ui/src/lib/i18n/messages/ja.settings.ts @@ -1702,6 +1702,11 @@ export const settingsDict = { 'settings.openchamber.visual.section.activityDefault': 'アクティビティデフォルト', 'settings.openchamber.visual.section.activityDefaultAria': 'アクティビティデフォルトモード', 'settings.openchamber.visual.section.showToolsOpenedByDefault': 'デフォルトで開くツールを表示:', + 'settings.openchamber.visual.section.sessionAssistance': 'セッション支援', + 'settings.openchamber.visual.section.reasoning': '推論', + 'settings.openchamber.visual.section.messageAppearance': 'メッセージの外観', + 'settings.openchamber.visual.section.toolsAndFiles': 'ツールとファイル', + 'settings.openchamber.visual.section.composer': '入力欄', 'settings.openchamber.visual.section.userMessageRendering': 'ユーザーメッセージ表示', 'settings.openchamber.visual.section.userMessageRenderingAria': 'ユーザーメッセージ表示モード', 'settings.openchamber.visual.section.mermaidRendering': 'Mermaid 表示', diff --git a/packages/ui/src/lib/i18n/messages/ko.settings.ts b/packages/ui/src/lib/i18n/messages/ko.settings.ts index f8e66def..6b9b93eb 100644 --- a/packages/ui/src/lib/i18n/messages/ko.settings.ts +++ b/packages/ui/src/lib/i18n/messages/ko.settings.ts @@ -1669,6 +1669,11 @@ export const settingsDict = { 'settings.openchamber.visual.section.activityDefault': 'Activity 기본값', 'settings.openchamber.visual.section.activityDefaultAria': 'Activity 기본 모드', 'settings.openchamber.visual.section.showToolsOpenedByDefault': '도구를 기본으로 펼쳐 표시:', + 'settings.openchamber.visual.section.sessionAssistance': '세션 지원', + 'settings.openchamber.visual.section.reasoning': '추론', + 'settings.openchamber.visual.section.messageAppearance': '메시지 모양', + 'settings.openchamber.visual.section.toolsAndFiles': '도구 및 파일', + 'settings.openchamber.visual.section.composer': '입력창', 'settings.openchamber.visual.section.userMessageRendering': '사용자 메시지 렌더링', 'settings.openchamber.visual.section.userMessageRenderingAria': '사용자 메시지 렌더링 모드', 'settings.openchamber.visual.section.mermaidRendering': 'Mermaid 렌더링', diff --git a/packages/ui/src/lib/i18n/messages/pl.settings.ts b/packages/ui/src/lib/i18n/messages/pl.settings.ts index 8725011d..f6a5e306 100644 --- a/packages/ui/src/lib/i18n/messages/pl.settings.ts +++ b/packages/ui/src/lib/i18n/messages/pl.settings.ts @@ -1110,6 +1110,11 @@ export const settingsDict = { 'settings.openchamber.visual.section.navigation': 'Nawigacja', 'settings.openchamber.visual.section.privacy': 'Prywatność', 'settings.openchamber.visual.section.showToolsOpenedByDefault': 'Pokaż narzędzia domyślnie otwarte:', + 'settings.openchamber.visual.section.sessionAssistance': 'Wsparcie sesji', + 'settings.openchamber.visual.section.reasoning': 'Rozumowanie', + 'settings.openchamber.visual.section.messageAppearance': 'Wygląd wiadomości', + 'settings.openchamber.visual.section.toolsAndFiles': 'Narzędzia i pliki', + 'settings.openchamber.visual.section.composer': 'Pole wiadomości', 'settings.openchamber.visual.section.spacingAndLayout': 'Odstępy i układ', 'settings.openchamber.visual.section.userMessageRendering': 'Renderowanie wiadomości użytkownika', 'settings.openchamber.visual.section.userMessageRenderingAria': 'Tryb renderowania wiadomości użytkownika', diff --git a/packages/ui/src/lib/i18n/messages/pt-BR.settings.ts b/packages/ui/src/lib/i18n/messages/pt-BR.settings.ts index 42b644c3..a7a8ee3d 100644 --- a/packages/ui/src/lib/i18n/messages/pt-BR.settings.ts +++ b/packages/ui/src/lib/i18n/messages/pt-BR.settings.ts @@ -1669,6 +1669,11 @@ export const settingsDict = { "settings.openchamber.visual.section.activityDefault": "Modo padrão de atividade", "settings.openchamber.visual.section.activityDefaultAria": "Modo padrão de atividade", "settings.openchamber.visual.section.showToolsOpenedByDefault": "Mostrar ferramentas abertas por padrão:", + "settings.openchamber.visual.section.sessionAssistance": "Assistência da sessão", + "settings.openchamber.visual.section.reasoning": "Raciocínio", + "settings.openchamber.visual.section.messageAppearance": "Aparência das mensagens", + "settings.openchamber.visual.section.toolsAndFiles": "Ferramentas e arquivos", + "settings.openchamber.visual.section.composer": "Campo de mensagem", "settings.openchamber.visual.section.userMessageRendering": "Renderizado de mensagens do usuário", "settings.openchamber.visual.section.userMessageRenderingAria": "Modo de Renderizado de mensagens do usuário", "settings.openchamber.visual.section.mermaidRendering": "Renderizado de Mermaid", diff --git a/packages/ui/src/lib/i18n/messages/uk.settings.ts b/packages/ui/src/lib/i18n/messages/uk.settings.ts index de3ce376..5bf8f6fe 100644 --- a/packages/ui/src/lib/i18n/messages/uk.settings.ts +++ b/packages/ui/src/lib/i18n/messages/uk.settings.ts @@ -1669,6 +1669,11 @@ export const settingsDict = { "settings.openchamber.visual.section.activityDefault": "Активність за замовчуванням", "settings.openchamber.visual.section.activityDefaultAria": "Режим активності за замовчуванням", "settings.openchamber.visual.section.showToolsOpenedByDefault": "Показувати інструменти відкритими за замовчуванням:", + "settings.openchamber.visual.section.sessionAssistance": "Допомога із сесією", + "settings.openchamber.visual.section.reasoning": "Міркування", + "settings.openchamber.visual.section.messageAppearance": "Вигляд повідомлень", + "settings.openchamber.visual.section.toolsAndFiles": "Інструменти та файли", + "settings.openchamber.visual.section.composer": "Поле вводу", "settings.openchamber.visual.section.userMessageRendering": "Відображення повідомлень користувача", "settings.openchamber.visual.section.userMessageRenderingAria": "Режим відтворення повідомлень користувача", "settings.openchamber.visual.section.mermaidRendering": "Візуалізація Mermaid", diff --git a/packages/ui/src/lib/i18n/messages/zh-CN.settings.ts b/packages/ui/src/lib/i18n/messages/zh-CN.settings.ts index 26aa8e81..1f4baee3 100644 --- a/packages/ui/src/lib/i18n/messages/zh-CN.settings.ts +++ b/packages/ui/src/lib/i18n/messages/zh-CN.settings.ts @@ -1669,6 +1669,11 @@ export const settingsDict = { 'settings.openchamber.visual.section.activityDefault': '活动默认状态', 'settings.openchamber.visual.section.activityDefaultAria': '活动默认模式', 'settings.openchamber.visual.section.showToolsOpenedByDefault': '默认展开以下工具:', + 'settings.openchamber.visual.section.sessionAssistance': '会话辅助', + 'settings.openchamber.visual.section.reasoning': '推理', + 'settings.openchamber.visual.section.messageAppearance': '消息外观', + 'settings.openchamber.visual.section.toolsAndFiles': '工具和文件', + 'settings.openchamber.visual.section.composer': '输入框', 'settings.openchamber.visual.section.userMessageRendering': '用户消息渲染', 'settings.openchamber.visual.section.userMessageRenderingAria': '用户消息渲染模式', 'settings.openchamber.visual.section.mermaidRendering': 'Mermaid 渲染', diff --git a/packages/ui/src/lib/i18n/messages/zh-TW.settings.ts b/packages/ui/src/lib/i18n/messages/zh-TW.settings.ts index 706a8459..752ceb9b 100644 --- a/packages/ui/src/lib/i18n/messages/zh-TW.settings.ts +++ b/packages/ui/src/lib/i18n/messages/zh-TW.settings.ts @@ -1578,6 +1578,11 @@ 'settings.openchamber.visual.section.activityDefault': '活動預設狀態', 'settings.openchamber.visual.section.activityDefaultAria': '活動預設模式', 'settings.openchamber.visual.section.showToolsOpenedByDefault': '預設展開以下工具:', + 'settings.openchamber.visual.section.sessionAssistance': '工作階段輔助', + 'settings.openchamber.visual.section.reasoning': '推理', + 'settings.openchamber.visual.section.messageAppearance': '訊息外觀', + 'settings.openchamber.visual.section.toolsAndFiles': '工具與檔案', + 'settings.openchamber.visual.section.composer': '輸入框', 'settings.openchamber.visual.section.userMessageRendering': '使用者訊息渲染', 'settings.openchamber.visual.section.userMessageRenderingAria': '使用者訊息渲染模式', 'settings.openchamber.visual.section.mermaidRendering': 'Mermaid 渲染', diff --git a/packages/ui/src/lib/settings/search.ts b/packages/ui/src/lib/settings/search.ts index eecf249d..3375f081 100644 --- a/packages/ui/src/lib/settings/search.ts +++ b/packages/ui/src/lib/settings/search.ts @@ -180,6 +180,12 @@ const SETTINGS_SEARCH_ITEMS: readonly SettingsSearchItem[] = [ titleKey: 'settings.openchamber.visual.field.sessionRecap', keywords: ['recap', 'assist', 'small model', 'summary'], }, + { + id: 'chat.session-assistance', + page: 'chat', + titleKey: 'settings.openchamber.visual.section.sessionAssistance', + keywords: ['recap', 'suggestion', 'subagent'], + }, { id: 'chat.session-suggestion', page: 'chat', @@ -206,6 +212,12 @@ const SETTINGS_SEARCH_ITEMS: readonly SettingsSearchItem[] = [ titleKey: 'settings.openchamber.visual.field.showReasoningTraces', keywords: ['thinking', 'reasoning'], }, + { + id: 'chat.reasoning', + page: 'chat', + titleKey: 'settings.openchamber.visual.section.reasoning', + keywords: ['thinking', 'traces'], + }, { id: 'chat.sticky-user-header', page: 'chat', @@ -224,6 +236,12 @@ const SETTINGS_SEARCH_ITEMS: readonly SettingsSearchItem[] = [ titleKey: 'settings.openchamber.visual.field.wideChatLayout', keywords: ['layout', 'wide', 'messages'], }, + { + id: 'chat.message-appearance', + page: 'chat', + titleKey: 'settings.openchamber.visual.section.messageAppearance', + keywords: ['layout', 'messages', 'appearance'], + }, { id: 'chat.code-block-line-wrap', page: 'chat', @@ -249,6 +267,12 @@ const SETTINGS_SEARCH_ITEMS: readonly SettingsSearchItem[] = [ titleKey: 'settings.openchamber.visual.field.showToolFileIcons', keywords: ['tools', 'files', 'icons'], }, + { + id: 'chat.tools-and-files', + page: 'chat', + titleKey: 'settings.openchamber.visual.section.toolsAndFiles', + keywords: ['tools', 'files', 'dotfiles'], + }, { id: 'chat.changed-files', page: 'chat', @@ -275,6 +299,12 @@ const SETTINGS_SEARCH_ITEMS: readonly SettingsSearchItem[] = [ titleKey: 'settings.openchamber.visual.field.persistDraftMessages', keywords: ['draft', 'message'], }, + { + id: 'chat.composer', + page: 'chat', + titleKey: 'settings.openchamber.visual.section.composer', + keywords: ['input', 'draft', 'spellcheck'], + }, { id: 'chat.spellcheck', page: 'chat',