From efd11457dbf994e1fe1fb359c435ba1c30f76cbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=87=AA=E7=94=B1=E7=9A=84=E4=B8=96=E7=95=8C=E4=BA=BA?= <3196812536@qq.com> Date: Sun, 18 May 2025 10:11:14 +0800 Subject: [PATCH] feat: make sidebar setting group collapsible (#6019) * feat: code tools, editor, executor CodeEditor & Preview - CodeEditor: CodeMirror 6 - Switch to CodeEditor in the settings - Support edit&save with a accurate diff&lookup strategy - Use CodeEditor for editing MCP json configuration - CodePreview: Original Shiki syntax highlighting - Implemented using a custom Shiki stream tokenizer - Remov code caching as it is incompatible with the current streaming code highlighting - Add a webworker for shiki - Other preview components - Merge MermaidPopup and Mermaid to MermaidPreview, use local mermaidjs - Show mermaid syntax error message on demand - Rename PlantUML to PlantUmlPreview - Rename SyntaxHighlighterProvider to CodeStyleProvider for clarity - Both light and dark themes are preserved for convenience CodeToolbar - Top sticky toolbar provides quick tools (left) and core tools (right) - Quick tools are hidden under the `More` button to avoid clutter, while core tools are always visible - View&edit mode - Allow switching between preview and edit modes - Add a split view Code execution - Pyodide for executing Python scripts - Add a webworker for Pyodide * fix: migrate version and lint error * refactor: use constants for defining tool specs * feat: make setting group collapsible * fix: yarn.lock * fix: conflict error --------- Co-authored-by: one --- .../src/pages/home/Tabs/SettingsTab.tsx | 922 +++++++++--------- .../src/pages/settings/SettingGroup.tsx | 62 ++ 2 files changed, 527 insertions(+), 457 deletions(-) create mode 100644 src/renderer/src/pages/settings/SettingGroup.tsx diff --git a/src/renderer/src/pages/home/Tabs/SettingsTab.tsx b/src/renderer/src/pages/home/Tabs/SettingsTab.tsx index 43a439a1ae..2270566bbb 100644 --- a/src/renderer/src/pages/home/Tabs/SettingsTab.tsx +++ b/src/renderer/src/pages/home/Tabs/SettingsTab.tsx @@ -11,8 +11,9 @@ import { import { useCodeStyle } from '@renderer/context/CodeStyleProvider' import { useAssistant } from '@renderer/hooks/useAssistant' import { useSettings } from '@renderer/hooks/useSettings' -import { SettingDivider, SettingRow, SettingRowTitle, SettingSubtitle } from '@renderer/pages/settings' +import { SettingDivider, SettingRow, SettingRowTitle } from '@renderer/pages/settings' import AssistantSettingsPopup from '@renderer/pages/settings/AssistantSettings' +import { CollapsibleSettingGroup } from '@renderer/pages/settings/SettingGroup' import { useAppDispatch } from '@renderer/store' import { SendMessageShortcut, @@ -49,7 +50,7 @@ import { TranslateLanguageVarious } from '@renderer/types' import { modalConfirm } from '@renderer/utils' -import { Button, Col, InputNumber, Row, Select, Slider, Switch, Tooltip } from 'antd' +import { Button, Col, Divider, InputNumber, Row, Select, Slider, Switch, Tooltip } from 'antd' import { CircleHelp, RotateCcw, Settings2 } from 'lucide-react' import { FC, useCallback, useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' @@ -181,478 +182,485 @@ const SettingsTab: FC = (props) => { return ( - - + - {t('assistants.settings.title')}{' '} +