feat(admin): reorganise chat preferences and language models settings
Description
Reorganise the Chat Preferences and Language Models admin pages, tighten their copy, and give their model selects one loading and failure pattern. This PR also carries the former #3 (model load states and hidden models), which was folded in. Each UI change is one bullet.
Chat Preferences
- Split the settings into two cards: a Chat card and a Search card.
- Moved Default Language to the top of the Chat card, as a horizontal row.
- Chat card order: Default Language, Chat Naming Model, Multi-Model Generation, Deep Research, Chat Auto-Scroll.
- Search card order: Search Selection Model, Search Mode, Auto-Detect Search Filters.
- Removed the "Model selection" heading; the two task-model rows now sit in the cards.
- Renamed "Chat naming model" to Chat Naming Model, and "Search selection model" to Search Selection Model, with new copy.
- Removed the Reset buttons and the (Optional) suffix from both task-model rows.
- Added an unset row at the top of both task-model selects, above a divider; picking it clears the setting:
- Chat Naming Model: "Chat Default". Naming only runs in chats, on the chat's own model.
- Search Selection Model: "Global Default", described as "Each chat's model". Selection also runs in the Search UI, where the unset fallback is the workspace default model.
- Clicking a task-model row's title opens its select.
- Removed the beta tag from Multi-Model Generation.
- Renamed "Disable Default Chat" to Always Start with an Agent, with new copy and a link to featured agents.
- Made "without logging in" bold in the Allow Anonymous Users description.
- Moved Temperature Control and Reasoning Control to the Language Models page.
- New copy for Default Language and Search Selection Model.
Language Models
- Card order: Default Model, Auto Mode, Router Model, a divider, Reasoning Control, Temperature Control, Hide Provider Grouping.
- New copy for Default Model, Reasoning Control and Temperature Control.
- Auto Mode stays locked until the router list has loaded with at least one router, with a "No router models found" tooltip when there are none. Turning it off is always possible.
- The Router Model row shows only when a router model exists, and its select can be cleared.
- With Auto Mode on and no usable router (none chosen, cleared, or deleted since), an inline error under the Router Model row reads "Choose a router model to enable users to use the auto routing mode." With no router models at all, the error sits under Auto Mode instead.
Settings (personal)
- Display Language now shares one component with the workspace Default Language. It starts with a Global Default row (the workspace language as its description) above a divider; picking it clears the override.
Model selects (task models and Router Model)
- Loading: a
DropdownLoaderstands in for the select. - Load failure: the select stays, disabled with the error border, and a persistent error toast offers a Retry button. The two task-model rows share one toast.
- Hidden models are never offered, except a hidden model already in use.
Across these pages
- Removed success toasts from Chat Preferences, Language Models (including cost overrides), Settings and Decision Models' provider delete. Failures still show an error toast. e2e helpers wait for the save response instead of the toast.
Code changes behind the UI
LanguageSelect(lib/app/components.tsx) serves both language pickers.filterModelConfigurationsloses itsvisibleOnlyoption; every caller now lists visible models only (pluskeep).SimpleModelSelector: its Global Default row takes alabel, always shows a divider (also in an ungrouped list), and the select takesisError.- Opal
InputHorizontalandInputVerticaltakeerrorandwarningprops for inputs outside Formik.
Changes
Language Models
No "router model" configured, "Auto Mode" disabled:
"Auto Mode" on and no "Router model" configured:
"Auto Mode" on and "Router model" configured:
Chat Preferences
A few things have just been moved around here. The "beta" tag was also removed from "Multi-Model Generation".
Summary by cubic
Reorganizes the admin Chat Preferences and Language Models pages and tightens their copy. Chat Preferences now splits into Chat and Search cards, Temperature Control and Reasoning Control move to Language Models, and the task-model rows are renamed to Chat Naming Model and Search Selection Model.
Behavior changes
- Task-model selectors start with a Global Default row that clears the designation; chat naming reads Chat Default and search selection keys off the workspace default. Reset buttons and the Optional suffix are gone.
- Auto Mode stays locked until router models load and can only be enabled when a router exists; it can always be turned off. The Router Model row only shows when a router exists, and its select is clearable with an inline error when Auto Mode needs a router.
- Failed model loads keep the select, disabled with an error border, and raise a persistent error toast with a retry button; loading shows a dropdown-loader shimmer.
- "Disable Default Chat" is renamed to "Always Start with an Agent" with new copy and a link to featured agents.
- Success toasts are removed from these pages, including cost overrides and Settings, and Decision Models no longer toasts provider deletion; failures still show an error toast. e2e helpers wait for the save response instead.
LanguageSelectis shared between the workspace Default Language and the personal Display Language; the personal picker offers a Global Default row.- Model pickers no longer list hidden models; they show visible models only, plus the currently selected value.
Summary by CodeRabbit
-
New Features
- Chat Preferences separates chat and search settings into dedicated sections.
- Chat-naming and search-selection models can be configured independently, with a Global Default option that clears each task-specific selection.
- Language-model settings include per-chat reasoning and temperature controls, plus guidance for unavailable router models.
- Workspace and user language selection supports a Global Default option.
-
Improvements
- Model selectors exclude hidden models except when a hidden model is already selected.
- Settings provide inline loading and error feedback; success notifications are no longer shown for many actions.
- Updated terminology and translations, including the setting for starting chats with an agent.
- Input layouts support explicit error and warning messages.