Skip to content

Commit f1906c4

Browse files
committed
Move less commonly used provider settings into an advanced dropdown
1 parent 93f88b4 commit f1906c4

File tree

21 files changed

+124
-25
lines changed

21 files changed

+124
-25
lines changed

webview-ui/src/components/settings/ApiOptions.tsx

Lines changed: 42 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,17 @@ import { useRouterModels } from "@src/components/ui/hooks/useRouterModels"
3232
import { useSelectedModel } from "@src/components/ui/hooks/useSelectedModel"
3333
import { useExtensionState } from "@src/context/ExtensionStateContext"
3434
import { filterProviders, filterModels } from "./utils/organizationFilters"
35-
import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem, SearchableSelect } from "@src/components/ui"
35+
import {
36+
Select,
37+
SelectTrigger,
38+
SelectValue,
39+
SelectContent,
40+
SelectItem,
41+
SearchableSelect,
42+
Collapsible,
43+
CollapsibleTrigger,
44+
CollapsibleContent,
45+
} from "@src/components/ui"
3646

3747
import {
3848
Anthropic,
@@ -121,6 +131,7 @@ const ApiOptions = ({
121131
)
122132

123133
const [isDescriptionExpanded, setIsDescriptionExpanded] = useState(false)
134+
const [isAdvancedSettingsOpen, setIsAdvancedSettingsOpen] = useState(false)
124135

125136
const handleInputChange = useCallback(
126137
<K extends keyof ProviderSettings, E>(
@@ -534,30 +545,36 @@ const ApiOptions = ({
534545
/>
535546

536547
{!fromWelcomeView && (
537-
<>
538-
<DiffSettingsControl
539-
diffEnabled={apiConfiguration.diffEnabled}
540-
fuzzyMatchThreshold={apiConfiguration.fuzzyMatchThreshold}
541-
onChange={(field, value) => setApiConfigurationField(field, value)}
542-
/>
543-
<TemperatureControl
544-
value={apiConfiguration.modelTemperature}
545-
onChange={handleInputChange("modelTemperature", noTransform)}
546-
maxValue={2}
547-
/>
548-
<RateLimitSecondsControl
549-
value={apiConfiguration.rateLimitSeconds || 0}
550-
onChange={(value) => setApiConfigurationField("rateLimitSeconds", value)}
551-
/>
552-
<ConsecutiveMistakeLimitControl
553-
value={
554-
apiConfiguration.consecutiveMistakeLimit !== undefined
555-
? apiConfiguration.consecutiveMistakeLimit
556-
: DEFAULT_CONSECUTIVE_MISTAKE_LIMIT
557-
}
558-
onChange={(value) => setApiConfigurationField("consecutiveMistakeLimit", value)}
559-
/>
560-
</>
548+
<Collapsible open={isAdvancedSettingsOpen} onOpenChange={setIsAdvancedSettingsOpen}>
549+
<CollapsibleTrigger className="flex items-center gap-1 w-full cursor-pointer hover:opacity-80 mb-2">
550+
<span className={`codicon codicon-chevron-${isAdvancedSettingsOpen ? "down" : "right"}`}></span>
551+
<span className="font-medium">{t("settings:advancedSettings.title")}</span>
552+
</CollapsibleTrigger>
553+
<CollapsibleContent className="space-y-3">
554+
<DiffSettingsControl
555+
diffEnabled={apiConfiguration.diffEnabled}
556+
fuzzyMatchThreshold={apiConfiguration.fuzzyMatchThreshold}
557+
onChange={(field, value) => setApiConfigurationField(field, value)}
558+
/>
559+
<TemperatureControl
560+
value={apiConfiguration.modelTemperature}
561+
onChange={handleInputChange("modelTemperature", noTransform)}
562+
maxValue={2}
563+
/>
564+
<RateLimitSecondsControl
565+
value={apiConfiguration.rateLimitSeconds || 0}
566+
onChange={(value) => setApiConfigurationField("rateLimitSeconds", value)}
567+
/>
568+
<ConsecutiveMistakeLimitControl
569+
value={
570+
apiConfiguration.consecutiveMistakeLimit !== undefined
571+
? apiConfiguration.consecutiveMistakeLimit
572+
: DEFAULT_CONSECUTIVE_MISTAKE_LIMIT
573+
}
574+
onChange={(value) => setApiConfigurationField("consecutiveMistakeLimit", value)}
575+
/>
576+
</CollapsibleContent>
577+
</Collapsible>
561578
)}
562579
</div>
563580
)

webview-ui/src/components/settings/__tests__/ApiOptions.spec.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,20 @@ vi.mock("@/components/ui", () => ({
100100
</select>
101101
</div>
102102
),
103+
// Add Collapsible components
104+
Collapsible: ({ children, open }: any) => (
105+
<div className="collapsible-mock" data-open={open}>
106+
{children}
107+
</div>
108+
),
109+
CollapsibleTrigger: ({ children, className, onClick }: any) => (
110+
<div className={`collapsible-trigger-mock ${className || ""}`} onClick={onClick}>
111+
{children}
112+
</div>
113+
),
114+
CollapsibleContent: ({ children, className }: any) => (
115+
<div className={`collapsible-content-mock ${className || ""}`}>{children}</div>
116+
),
103117
}))
104118

105119
vi.mock("../TemperatureControl", () => ({

webview-ui/src/components/settings/__tests__/SettingsView.spec.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,20 @@ vi.mock("@/components/ui", () => ({
179179
{children}
180180
</button>
181181
),
182+
// Add Collapsible components
183+
Collapsible: ({ children, open }: any) => (
184+
<div className="collapsible-mock" data-open={open}>
185+
{children}
186+
</div>
187+
),
188+
CollapsibleTrigger: ({ children, className, onClick }: any) => (
189+
<div className={`collapsible-trigger-mock ${className || ""}`} onClick={onClick}>
190+
{children}
191+
</div>
192+
),
193+
CollapsibleContent: ({ children, className }: any) => (
194+
<div className={`collapsible-content-mock ${className || ""}`}>{children}</div>
195+
),
182196
}))
183197

184198
// Mock window.postMessage to trigger state hydration

webview-ui/src/i18n/locales/ca/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,9 @@
542542
"description": "Quan està habilitat, el terminal hereta les variables d'entorn del procés pare de VSCode, com ara la configuració d'integració del shell definida al perfil d'usuari. Això commuta directament la configuració global de VSCode `terminal.integrated.inheritEnv`. <0>Més informació</0>"
543543
}
544544
},
545+
"advancedSettings": {
546+
"title": "Configuració avançada"
547+
},
545548
"advanced": {
546549
"diff": {
547550
"label": "Habilitar edició mitjançant diffs",

webview-ui/src/i18n/locales/de/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,9 @@
542542
"description": "Wenn aktiviert, erbt das Terminal Umgebungsvariablen aus dem übergeordneten Prozess von VSCode, wie z.B. benutzerdefinierte Shell-Integrationseinstellungen. Dies schaltet direkt die globale VSCode-Einstellung `terminal.integrated.inheritEnv` um. <0>Mehr erfahren</0>"
543543
}
544544
},
545+
"advancedSettings": {
546+
"title": "Erweiterte Einstellungen"
547+
},
545548
"advanced": {
546549
"diff": {
547550
"label": "Bearbeitung durch Diffs aktivieren",

webview-ui/src/i18n/locales/en/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,9 @@
542542
"description": "When enabled, the terminal will inherit environment variables from VSCode's parent process, such as user-profile-defined shell integration settings. This directly toggles VSCode global setting `terminal.integrated.inheritEnv`. <0>Learn more</0>"
543543
}
544544
},
545+
"advancedSettings": {
546+
"title": "Advanced settings"
547+
},
545548
"advanced": {
546549
"diff": {
547550
"label": "Enable editing through diffs",

webview-ui/src/i18n/locales/es/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,9 @@
542542
"description": "Cuando está habilitado, el terminal hereda las variables de entorno del proceso padre de VSCode, como la configuración de integración del shell definida en el perfil del usuario. Esto alterna directamente la configuración global de VSCode `terminal.integrated.inheritEnv`. <0>Más información</0>"
543543
}
544544
},
545+
"advancedSettings": {
546+
"title": "Configuración avanzada"
547+
},
545548
"advanced": {
546549
"diff": {
547550
"label": "Habilitar edición a través de diffs",

webview-ui/src/i18n/locales/fr/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,9 @@
542542
"description": "Lorsqu'activé, le terminal hérite des variables d'environnement du processus parent VSCode, comme les paramètres d'intégration du shell définis dans le profil utilisateur. Cela bascule directement le paramètre global VSCode `terminal.integrated.inheritEnv`. <0>En savoir plus</0>"
543543
}
544544
},
545+
"advancedSettings": {
546+
"title": "Paramètres avancés"
547+
},
545548
"advanced": {
546549
"diff": {
547550
"label": "Activer l'édition via des diffs",

webview-ui/src/i18n/locales/hi/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,9 @@
542542
"description": "सक्षम होने पर, टर्मिनल VSCode के मूल प्रक्रिया से पर्यावरण चर विरासत में लेता है, जैसे उपयोगकर्ता प्रोफ़ाइल में परिभाषित शेल एकीकरण सेटिंग्स। यह VSCode की वैश्विक सेटिंग `terminal.integrated.inheritEnv` को सीधे टॉगल करता है। <0>अधिक जानें</0>"
543543
}
544544
},
545+
"advancedSettings": {
546+
"title": "उन्नत सेटिंग्स"
547+
},
545548
"advanced": {
546549
"diff": {
547550
"label": "diffs के माध्यम से संपादन सक्षम करें",

webview-ui/src/i18n/locales/id/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -546,6 +546,9 @@
546546
"description": "Ketika diaktifkan, terminal akan mewarisi variabel environment dari proses parent VSCode, seperti pengaturan integrasi shell yang didefinisikan user-profile. Ini secara langsung mengalihkan pengaturan global VSCode `terminal.integrated.inheritEnv`. <0>Pelajari lebih lanjut</0>"
547547
}
548548
},
549+
"advancedSettings": {
550+
"title": "Pengaturan lanjutan"
551+
},
549552
"advanced": {
550553
"diff": {
551554
"label": "Aktifkan editing melalui diff",

0 commit comments

Comments
 (0)