Adds the ability for admins to configure global interface defaults that apply to all users who haven't customized their settings, plus a reset button to clear all user customizations.
Features
Global Interface Defaults: Admins can set default values for any interface setting via Admin Panel > Settings > Interface > Configure Defaults
Reset All Users: Admins can reset all users' interface settings to defaults via the Danger Zone section
Smart Merging: User settings are deep-merged with admin defaults on app load, so users keep their customizations while inheriting unconfigured defaults
Performance: 10-minute browser cache on the defaults endpoint reduces redundant fetches
Changes
Backend
GET/POST /api/v1/configs/interface/defaults - get/set global defaults
POST /api/v1/users/interface/settings/reset - reset all users' interface settings
Uses native SQL json_set for efficient bulk updates
Frontend
InterfaceDefaultsModal for configuring defaults (reuses existing InterfaceSettings component)
Danger Zone section with confirmation dialog for reset
deepMerge utility for nested object merging
Testing
Verified defaults are applied to new users without customizations
Verified user customizations override admin defaults
Verified reset clears user settings and re-applies defaults
Verified cache reduces network requests on refresh
Contributor License Agreement
By submitting this pull request, I confirm that I have read and fully agree to the Contributor License Agreement (CLA), and I am providing my contributions under its terms.
Note
Deleting the CLA section will lead to immediate closure of your PR and it will not be merged in.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/open-webui/open-webui/pull/20770
**Author:** [@Classic298](https://github.com/Classic298)
**Created:** 1/17/2026
**Status:** 🔄 Open
**Base:** `dev` ← **Head:** `feat/admin-interface-defaults`
---
### 📝 Commits (10+)
- [`b15fb4f`](https://github.com/open-webui/open-webui/commit/b15fb4f59591ddeb10949a8ff224688aa0fee385) feat: admin interface defaults with global settings and user reset
- [`e557606`](https://github.com/open-webui/open-webui/commit/e557606c50824af5699a7459c53417c89417181a) Merge branch 'dev' into feat/admin-interface-defaults
- [`84488f8`](https://github.com/open-webui/open-webui/commit/84488f851cc3a1d6c371eef8182d25b1c96f38aa) Merge branch 'dev' into feat/admin-interface-defaults
- [`68bced6`](https://github.com/open-webui/open-webui/commit/68bced6cb03a3199e13f7cc85808265a2810a22c) Merge branch 'dev' into feat/admin-interface-defaults
- [`e70b420`](https://github.com/open-webui/open-webui/commit/e70b4200a43215d07cba34ac93876762b0b7008c) Merge branch 'dev' into feat/admin-interface-defaults
- [`4497226`](https://github.com/open-webui/open-webui/commit/4497226b94abf5cd512011487736f1ef1453f4e6) Merge branch 'dev' into feat/admin-interface-defaults
- [`6712c83`](https://github.com/open-webui/open-webui/commit/6712c83cf644ac78ae25251ae0dcb6fec868268d) fix: restore JSDoc marker, wire modal bindings, align chatDirection, drop nested form, parallelize load
- [`e724911`](https://github.com/open-webui/open-webui/commit/e7249118dac9efac7b0b32d61eb123c09d650d34) fix: apply admin defaults for brand-new users, normalize chatDirection, wire entry points
- [`6cd3c72`](https://github.com/open-webui/open-webui/commit/6cd3c7238bc69a69d669e3e735fca1e891d3132e) fix: flush child form before modal save, guard localStorage parse, explicit dialect check
- [`5835cd9`](https://github.com/open-webui/open-webui/commit/5835cd93cf0da2fd0b13c69715708812602047de) fix: isolate admin-mode state, harden deepMerge, disable stale defaults cache
### 📊 Changes
**9 files changed** (+743 additions, -79 deletions)
<details>
<summary>View changed files</summary>
📝 `backend/open_webui/routers/configs.py` (+96 -1)
📝 `backend/open_webui/routers/users.py` (+86 -0)
📝 `src/lib/apis/configs/index.ts` (+60 -0)
📝 `src/lib/apis/users/index.ts` (+31 -0)
📝 `src/lib/components/admin/Settings/Interface.svelte` (+68 -0)
➕ `src/lib/components/admin/Settings/Interface/InterfaceDefaultsModal.svelte` (+161 -0)
📝 `src/lib/components/chat/Settings/Interface.svelte` (+97 -57)
📝 `src/lib/utils/index.ts` (+94 -16)
📝 `src/routes/+layout.svelte` (+50 -5)
</details>
### 📄 Description
## Summary
Adds the ability for admins to configure global interface defaults that apply to all users who haven't customized their settings, plus a reset button to clear all user customizations.
## Features
- **Global Interface Defaults**: Admins can set default values for any interface setting via Admin Panel > Settings > Interface > Configure Defaults
- **Reset All Users**: Admins can reset all users' interface settings to defaults via the Danger Zone section
- **Smart Merging**: User settings are deep-merged with admin defaults on app load, so users keep their customizations while inheriting unconfigured defaults
- **Performance**: 10-minute browser cache on the defaults endpoint reduces redundant fetches
## Changes
### Backend
- GET/POST /api/v1/configs/interface/defaults - get/set global defaults
- POST /api/v1/users/interface/settings/reset - reset all users' interface settings
- Uses native SQL json_set for efficient bulk updates
### Frontend
- InterfaceDefaultsModal for configuring defaults (reuses existing InterfaceSettings component)
- Danger Zone section with confirmation dialog for reset
- deepMerge utility for nested object merging
## Testing
- Verified defaults are applied to new users without customizations
- Verified user customizations override admin defaults
- Verified reset clears user settings and re-applies defaults
- Verified cache reduces network requests on refresh
### Contributor License Agreement
By submitting this pull request, I confirm that I have read and fully agree to the [Contributor License Agreement (CLA)](https://github.com/open-webui/open-webui/blob/main/CONTRIBUTOR_LICENSE_AGREEMENT), and I am providing my contributions under its terms.
> [!NOTE]
> Deleting the CLA section will lead to immediate closure of your PR and it will not be merged in.
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/open-webui/open-webui/pull/20770
Author: @Classic298
Created: 1/17/2026
Status: 🔄 Open
Base:
dev← Head:feat/admin-interface-defaults📝 Commits (10+)
b15fb4ffeat: admin interface defaults with global settings and user resete557606Merge branch 'dev' into feat/admin-interface-defaults84488f8Merge branch 'dev' into feat/admin-interface-defaults68bced6Merge branch 'dev' into feat/admin-interface-defaultse70b420Merge branch 'dev' into feat/admin-interface-defaults4497226Merge branch 'dev' into feat/admin-interface-defaults6712c83fix: restore JSDoc marker, wire modal bindings, align chatDirection, drop nested form, parallelize loade724911fix: apply admin defaults for brand-new users, normalize chatDirection, wire entry points6cd3c72fix: flush child form before modal save, guard localStorage parse, explicit dialect check5835cd9fix: isolate admin-mode state, harden deepMerge, disable stale defaults cache📊 Changes
9 files changed (+743 additions, -79 deletions)
View changed files
📝
backend/open_webui/routers/configs.py(+96 -1)📝
backend/open_webui/routers/users.py(+86 -0)📝
src/lib/apis/configs/index.ts(+60 -0)📝
src/lib/apis/users/index.ts(+31 -0)📝
src/lib/components/admin/Settings/Interface.svelte(+68 -0)➕
src/lib/components/admin/Settings/Interface/InterfaceDefaultsModal.svelte(+161 -0)📝
src/lib/components/chat/Settings/Interface.svelte(+97 -57)📝
src/lib/utils/index.ts(+94 -16)📝
src/routes/+layout.svelte(+50 -5)📄 Description
Summary
Adds the ability for admins to configure global interface defaults that apply to all users who haven't customized their settings, plus a reset button to clear all user customizations.
Features
Changes
Backend
Frontend
Testing
Contributor License Agreement
By submitting this pull request, I confirm that I have read and fully agree to the Contributor License Agreement (CLA), and I am providing my contributions under its terms.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.