diff --git a/desktop/src/pages/Settings.tsx b/desktop/src/pages/Settings.tsx index 1fc2a373..c6fe8246 100644 --- a/desktop/src/pages/Settings.tsx +++ b/desktop/src/pages/Settings.tsx @@ -210,39 +210,34 @@ function ProviderFormModal({ open, onClose, mode, provider }: ProviderFormProps) const [settingsJson, setSettingsJson] = useState('') const [settingsJsonError, setSettingsJsonError] = useState(null) - // Load current settings.json and merge provider env + // Load current settings.json and merge provider env (or show as-is for official) useEffect(() => { import('../api/settings').then(({ settingsApi }) => { settingsApi.getUser().then((settings) => { - const merged = { - ...settings, - env: { - ...((settings.env as Record) || {}), - ANTHROPIC_BASE_URL: baseUrl, - ANTHROPIC_AUTH_TOKEN: apiKey || '(your API key)', - ANTHROPIC_MODEL: models.main, - ANTHROPIC_DEFAULT_HAIKU_MODEL: models.haiku, - ANTHROPIC_DEFAULT_SONNET_MODEL: models.sonnet, - ANTHROPIC_DEFAULT_OPUS_MODEL: models.opus, - }, + if (selectedPreset.id === 'official') { + // Official: show current settings as-is (env keys will be cleared on save) + setSettingsJson(JSON.stringify(settings, null, 2)) + } else { + const merged = { + ...settings, + env: { + ...((settings.env as Record) || {}), + ANTHROPIC_BASE_URL: baseUrl, + ANTHROPIC_AUTH_TOKEN: apiKey || '(your API key)', + ANTHROPIC_MODEL: models.main, + ANTHROPIC_DEFAULT_HAIKU_MODEL: models.haiku, + ANTHROPIC_DEFAULT_SONNET_MODEL: models.sonnet, + ANTHROPIC_DEFAULT_OPUS_MODEL: models.opus, + }, + } + setSettingsJson(JSON.stringify(merged, null, 2)) } - setSettingsJson(JSON.stringify(merged, null, 2)) }).catch(() => { - const fallback = { - env: { - ANTHROPIC_BASE_URL: baseUrl, - ANTHROPIC_AUTH_TOKEN: apiKey || '(your API key)', - ANTHROPIC_MODEL: models.main, - ANTHROPIC_DEFAULT_HAIKU_MODEL: models.haiku, - ANTHROPIC_DEFAULT_SONNET_MODEL: models.sonnet, - ANTHROPIC_DEFAULT_OPUS_MODEL: models.opus, - }, - } - setSettingsJson(JSON.stringify(fallback, null, 2)) + setSettingsJson(JSON.stringify({}, null, 2)) }) }) // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) + }, [selectedPreset.id]) const handlePresetChange = (preset: typeof initialPreset) => { setSelectedPreset(preset) @@ -363,15 +358,13 @@ function ProviderFormModal({ open, onClose, mode, provider }: ProviderFormProps) )} - {/* Official — no config needed */} - {isOfficial && mode === 'create' ? ( -
- Official provider uses Anthropic native login — no API key or configuration needed. -
- ) : ( - <> - setName(e.target.value)} placeholder="Provider name" /> + setName(e.target.value)} placeholder="Provider name" /> + setNotes(e.target.value)} placeholder="Optional notes..." /> + + {/* Non-official: Base URL, API Key, Model Mapping, Test */} + {!isOfficial && ( + <> {/* Base URL */} {isCustom || mode === 'edit' ? ( setBaseUrl(e.target.value)} placeholder="https://api.example.com/anthropic" /> @@ -393,9 +386,7 @@ function ProviderFormModal({ open, onClose, mode, provider }: ProviderFormProps) placeholder={mode === 'edit' ? '****' : 'sk-...'} /> - setNotes(e.target.value)} placeholder="Optional notes..." /> - - {/* Model Mapping — always visible */} + {/* Model Mapping */}
@@ -417,37 +408,36 @@ function ProviderFormModal({ open, onClose, mode, provider }: ProviderFormProps) )}
- - {/* Settings JSON — editable */} -
- -