diff --git a/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/Settings.tsx b/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/Settings.tsx index 2200dee7..14af51ed 100644 --- a/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/Settings.tsx +++ b/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/Settings.tsx @@ -19,6 +19,16 @@ import { ToolApprovalType, toolApprovalTypes } from '../../../../common/toolsSer import Severity from '../../../../../../../base/common/severity.js' import { getModelCapabilities, ModelOverrides } from '../../../../common/modelCapabilities.js'; import { TransferEditorType, TransferFilesInfo } from '../../../extensionTransferTypes.js'; +// ───────────────────────────────────────────── +// Sidebar navigation helpers +// ───────────────────────────────────────────── +type SectionKey = + | 'models' + | 'localProviders' + | 'providers' + | 'featureOptions' + | 'general' + | 'all'; const ButtonLeftTextRightOption = ({ text, leftButton }: { text: string, leftButton?: React.ReactNode }) => { @@ -906,6 +916,19 @@ export const OneClickSwitchButton = ({ fromEditor = 'VS Code', className = '' }: export const Settings = () => { const isDark = useIsDark() + // ─── sidebar nav ────────────────────────── + const [selectedSection, setSelectedSection] = + useState('models'); + + const navItems: { key: SectionKey; label: string }[] = [ + { key: 'models', label: 'Models' }, + { key: 'localProviders', label: 'Local Providers' }, + { key: 'providers', label: 'Providers' }, + { key: 'featureOptions', label: 'Feature Options' }, + { key: 'general', label: 'General' }, + { key: 'all', label: 'All Settings' }, + ]; + const show = (key: SectionKey) => selectedSection === 'all' || selectedSection === key; const accessor = useAccessor() const commandService = accessor.get('ICommandService') const environmentService = accessor.get('IEnvironmentService') @@ -979,10 +1002,44 @@ export const Settings = () => { } - return
-
+ return ( +
+
+ {/* ────────────── SIDEBAR ────────────── */} -
+ + + {/* ───────────── MAIN PANE ───────────── */} +
+ + + +

{`Void's Settings`}

@@ -997,13 +1054,19 @@ export const Settings = () => { {/* Models section (formerly FeaturesTab) */} +{show('models') && ( +<>

Models

+ + )} - +{show('localProviders') && ( + + <>

Local Providers

{`Void can access any model that you host locally. We automatically detect your local models by default.`}

@@ -1012,18 +1075,26 @@ export const Settings = () => {
- - - + + +
+)} +{show('providers') && ( + + <>

Providers

{`Void can access models from Anthropic, OpenAI, OpenRouter, and more.`}

- + - - + +
+)} +{show('featureOptions') && ( + + <>

Feature Options

@@ -1108,7 +1179,6 @@ export const Settings = () => { - {/* Tools Section */}

Tools

@@ -1161,8 +1231,14 @@ export const Settings = () => {
+ + +)} +{show('general') && ( + <> + {/* General section (formerly GeneralTab) */}
@@ -1248,9 +1324,13 @@ Alternatively, place a \`.voidrules\` file in the root of your workspace. -
-
-
-} + +)} +
+ +
+ +); +}