- Add Configure button on built-in provider cards (openai, anthropic,
gemini, ollama, etc.) to set API key and default model via web UI
- Store overrides as `llm_builtin_overrides` setting (per-provider
key/model map) using the existing generic settings k/v API
- Add LlmBuiltinOverride struct in settings.rs; resolve in
resolve_registry_provider() with priority:
env var > selected_model > llm_builtin_overrides[id] > default
- Restore provider's configured model to selected_model on provider
switch, so /model command always takes precedence at runtime
- Fix fetch-models button in built-in configure mode: use hardcoded
base_url from BUILTIN_PROVIDERS instead of the hidden form field
- Add edit support for custom providers with pre-filled dialog
- Show current model on active and configured provider cards
- Convert add/edit provider form to a modal dialog
- Sync selected_model when editing or deleting an active custom provider
- Add POST /api/llm/test_connection endpoint that validates
connectivity and auth for OpenAI-compatible, Anthropic, and
Ollama adapters (10s timeout, per-adapter request logic)
- Add "Test" button next to Save/Cancel in the add-provider form;
result shown inline with green/red styling
- Hide delete button for the active provider instead of showing
an error toast
- Sort the active provider to the top of the provider list
- Clear selected_model when switching providers to avoid
model-not-supported errors on the new provider
- Add i18n keys for test/testing states (en + zh-CN)
Users can now define custom LLM providers through the web UI and have
them take effect without modifying environment variables or config files.
- Add `CustomLlmProviderSettings` struct and `llm_custom_providers`
field to `Settings` so custom provider definitions are persisted and
loaded from the DB settings table
- Add `LlmConfig::resolve_custom_provider()` to build a
`RegistryProviderConfig` from user-defined provider data (base_url,
adapter, model, api_key)
- Flip resolution priority to `db > env > default` so active provider
set through the UI takes precedence over deployment env vars
- Warn when a custom provider is missing base_url or model
- Add startup info logs for backend source and provider creation
- Add regression tests for custom provider resolution and DB priority
* feat(i18n): Add internationalization support with Chinese and English translations
* fix(i18n): fix duplicate keys, broken placeholders, and dead overrides
---------
Co-authored-by: zwb1982 <[email protected]>