Repository navigation
v1.0.35
v1.0.35
ποΈ Interface Defaults v1.4.0
Open WebUI 0.11.1 added Admin Panel β Settings β General β Default Interface Settings, a config row merged underneath every user's settings.ui on read. That covers what most of this function existed to do, so it is now a companion to that page instead of a replacement for it. Minimum Open WebUI version is 0.11.1.
Breaking: every valve was removed or renamed, so a 1.3.0 configuration is dropped on upgrade and the function manages nothing until it is set again.
Removed
- Every valve for a setting the native page covers, the whole
Settings β Interfaceblock. Configure those on the admin page now. - The
user.createdseeder and theauth.login/user.settings_updatedrepair net. Upstream merges the defaults row underneath each user's settings on read, so new accounts inherit with no write and nothing races the browser. - The Redis reload broadcast. It existed only to refresh the injected fragment, which was composed outside the event path from per-container valve state; peers never received
function.valves_updatedbecause event dispatch is in-process. Nothing is read outside the event path now, and the config row is read from the database per request, so there is nothing to propagate. - The
/static/loader.jspage injection, the shared-asset route andFUNCTION_BUILD_ID. - Net effect: 1353 lines down to 535.
Changed
- Valve ids renamed to snake_case (
notificationSoundAlwaysβnotification_sound_when_focused,sttEngineβspeech_to_text_engine, and so on). Pydantic ignores unknown keys, so old saved values are dropped silently on upgrade. - Apply Defaults to All Users deep-merges the configured defaults into every existing user, overwriting a personal choice that disagrees. Settings absent from the defaults row are untouched, and a user who already matches is skipped without a write. This is the button the native page has no equivalent for: it only reaches a user for a setting they never personally changed, so anyone who has opened their Interface settings inherits nothing.
- Reset All Users to Factory clears every interface settings path this function knows about, configured or not, from an explicit list. Direct connections, tool servers, pinned models and the default model live in the same
settings.uiobject and are never touched. - Every valve carries an explicit
title, so the Valves panel shows readable names instead of camelCase field ids. - Valve descriptions use the panel's rendered markdown: settings are grouped under headings, each one names its origin in the UI as a code span, and the destructive button leads with what it destroys.
- README rewritten around the split between this function and the native page.
Added
- Defaults for the user settings the native page cannot reach: desktop notifications, notification sound, notification sound while the tab is focused (which has no toggle anywhere in Open WebUI), keyboard shortcuts, memory, the personal system prompt, hands-free voice calls, auto-send after transcription, auto-read responses aloud, speech-to-text engine and language, text-to-speech voice, speech playback speed and non-local voices. These are merged into the same config row the native page writes, so they inherit live, seed new accounts and stay per-user overridable through Open WebUI's own machinery.
- Config row
ui.interface_defaults_managed_paths, recording which paths this function wrote into the defaults row so a valve switched back to Default can be withdrawn without disturbing what was set by hand on the admin page. - Quick action buttons can still be pasted as a JSON array in one go, alongside the native visual editor.