[PR #20770] feat: admin interface defaults with global settings and user reset #113086

Open
opened 2026-05-18 13:21:31 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/open-webui/open-webui/pull/20770
Author: @Classic298
Created: 1/17/2026
Status: 🔄 Open

Base: devHead: feat/admin-interface-defaults


📝 Commits (10+)

  • b15fb4f feat: admin interface defaults with global settings and user reset
  • e557606 Merge branch 'dev' into feat/admin-interface-defaults
  • 84488f8 Merge branch 'dev' into feat/admin-interface-defaults
  • 68bced6 Merge branch 'dev' into feat/admin-interface-defaults
  • e70b420 Merge branch 'dev' into feat/admin-interface-defaults
  • 4497226 Merge branch 'dev' into feat/admin-interface-defaults
  • 6712c83 fix: restore JSDoc marker, wire modal bindings, align chatDirection, drop nested form, parallelize load
  • e724911 fix: apply admin defaults for brand-new users, normalize chatDirection, wire entry points
  • 6cd3c72 fix: flush child form before modal save, guard localStorage parse, explicit dialect check
  • 5835cd9 fix: 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

  • 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>
GiteaMirror added the pull-request label 2026-05-18 13:21:31 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#113086