Commit Graph
19743 Commits
Author SHA1 Message Date
Classic298andGitHub b7d1de05ab perf: changing permissions on a large group is slow (#32883)
When a group change affects its members (new permissions, parent group or default models, or deleting the group), the server makes every member's browser reconnect so it picks up the new permissions without a page reload. To find each member's connections it read through the whole list of connected users again for every single member, so saving a 2,000-member group with 3,000 people online spent almost 9 seconds on this with Redis as the websocket manager, and about 1 second without. It now finds all members' connections in one pass.

Changing one permission on a 2,000-member group, time the save spends making members reconnect:

| Online users | Redis, before | Redis, after | No Redis, before | No Redis, after |
| --- | --- | --- | --- | --- |
| 1,000 | 2.8 s | 0.15 s | 0.09 s | <0.01 s |
| 3,000 | 8.7 s | 0.28 s | 1.2 s | <0.01 s |
2026-10-22 07:08:30 +09:00
Classic298andGitHub 8fa77c8282 fix: PowerPoint preview centres titles the file aligns left (#32876)
In the PowerPoint preview, a title or subtitle that the file sets to left alignment was drawn centred, the same as one with no alignment at all. Decks made by python-pptx and most deck generators set the alignment on every paragraph, so their left-aligned title slides all came out centred. The preview now keeps a title the file aligns left on the left, and only centres titles and subtitles that leave the alignment open.

Fixes #32873
2026-10-22 07:01:10 +09:00
Timothy Jaeryang Baek 095cca5fca refac 2026-10-22 06:56:43 +09:00
G30andGitHub f2baa486bc fix(a11y): the model picker outlines the row that Enter will pick while you use the arrow keys (#32875) 2026-10-22 06:55:22 +09:00
Timothy Jaeryang Baek 35b51e09ea refac 2026-10-22 06:35:41 +09:00
Classic298andGitHub 75358502c9 refac: direct tool server connection check auth handling (#32862)
The connection check in the direct tool server form now picks the credential to send the same way saved direct connections do.
2026-10-22 06:23:23 +09:00
G30andGitHub 53356e84c6 fix(a11y): toast text in the light theme meets the 4.5:1 contrast minimum (#32871) 2026-10-22 06:20:49 +09:00
61653e9697 chore: bump DOMPurify to 3.4.17 (#32863)
The web UI still shipped version 3.4.11 of DOMPurify, the library that strips unsafe HTML before content is shown, six releases behind DOMPurify's own latest. This moves it to 3.4.17, and new installs now require at least that version.

Co-authored-by: wesyoung2022 <115102004+wesyoung2022@users.noreply.github.com>
2026-10-22 06:12:24 +09:00
Classic298andGitHub cb7d7e851d fix: model import silently skips a model whose ID is already taken (#32866)
Importing a model JSON on the Workspace Models page as a regular user skipped any model whose ID already belonged to another user's model they cannot edit, or to a model from one of the instance's connections such as OpenAI or Ollama. There was no message, so the model just never showed up. The import now stops at that model with the error "Uh-oh! This model id is already registered. Please choose another model id string."; the models before it in the file are imported and the ones after it are not. Admins, and users who can edit the existing model, are unaffected and still overwrite it.
2026-10-22 06:12:10 +09:00
G30andGitHub e745465758 fix(a11y): Escape in the model picker's More menu or filter list closes only that list (#32868) 2026-10-22 06:11:36 +09:00
Classic298andGitHub d1e31cbb81 refactor: remove unused development route (#32869)
Removes a leftover development-only route that nothing in the app calls.
2026-10-22 06:11:00 +09:00
Classic298andGitHub a915df8ce1 chore: Python 3.12 and Debian 13 base image (#32861)
The Docker image now runs Python 3.12 on Debian 13 (trixie) instead of Python 3.11 on Debian 12, and the pip install docs recommend 3.12. Image size stays about the same: the slim image is 1 MB smaller and the standard image is about 50 MB larger, mostly from the newer ffmpeg and pandoc that Debian 13 ships. Admins should know that custom functions, tools and anything installed with pip inside the container now run on Python 3.12, so a package that only has builds for 3.11 needs a newer version. Installing with pip still works on both Python 3.11 and 3.12.
2026-10-22 04:51:57 +09:00
Classic298andGitHub db5b874944 feat: let everyone who can use a model pick its model controls (#32860)
Picking a model control option, such as a Thinking level, needed both the Allow Chat Controls and Allow Chat Params permissions, so admins had to hand out the Advanced Parameters panel just to let people pick a preset. Model control picks now work for anyone with access to the model and are saved per model to their account. Allow Chat Controls still hides the Chat Controls panel and Allow Chat Params still hides the Advanced Parameters panel, in the chat and in personal Settings. Parameters a person saves to their account are no longer filtered by these two permissions, since any chat message could already set any parameter without them.

Fixes #32626
2026-10-22 04:44:53 +09:00
G30andGitHub dc45e3960d fix(a11y): screen readers hear how long ago each sidebar chat was updated (#32851) 2026-10-22 04:37:59 +09:00
G30andGitHub 2a6e3c0197 fix(a11y): the info button under a reply is named and reads its usage details (#32855) 2026-10-22 04:36:51 +09:00
Classic298andGitHub 3e0564d11a fix: MinerU local mode fails every document on a 4.x server that requires an API key (#32838)
A self-hosted MinerU 4.x server started with an API key rejected every document with a 401, even with the key filled in under Documents settings, because local mode never sent it. The key is now sent with the document requests to a 4.x server whenever one is set. Servers without a key are unaffected.

Fixes #32836
2026-10-22 02:26:37 +09:00
Classic298andGitHub 6367a3cc40 fix: OAuth connections send no token when the user calls the API (#32826)
A model connection with its auth type set to OAuth only forwarded the user's sign-in token for requests coming from the browser. The same user calling the API with their bearer token or an API key sent nothing upstream, so an SSO-protected model server rejected every API call and its models could not be listed or used. These connections now fall back to the user's latest sign-in session the same way tool servers already do.

Fixes #32820
2026-10-22 02:13:50 +09:00
Classic298andGitHub 4ed1af6879 fix: first message sent right after the page loads loses its reply (#32829)
Sending the first message while a freshly loaded page was still setting up the new chat wiped that message from the screen once the setup finished. The reply then stayed empty with the Stop button on, or the page fell back to an empty new chat while the finished chat only showed up in the sidebar. The setup now leaves the chat alone when a message was sent in the meantime.

Fixes #32819
2026-10-22 02:13:32 +09:00
Classic298andGitHub ffcb24824f fix: Calendar page opens empty with an error when Calendar is turned off (#32837)
With Calendar switched off by an admin, or the calendar permission taken away, the sidebar entry was hidden but opening /calendar directly from a bookmark or the address bar still showed an empty month grid with a "401 Unauthorized" error. The page now sends these users to the home page, the same as Notes and Automations do.

Fixes #32834
2026-10-22 02:13:22 +09:00
G30andGitHub 70cceb51b0 fix(a11y): the model logos on a new chat are named, and hidden when there's only one model (#32849) 2026-10-22 02:13:09 +09:00
Classic298andGitHub 1a49220797 fix: Fork chat in a temporary chat fails with an error (#32839)
A temporary chat offered Fork chat under every reply and Fork in the / menu, but a temporary chat is never stored, so there was nothing to copy and every attempt ended in "We could not find what you're looking for :/". Both are now left out of temporary chats, the same way rating already is, and typing /fork there answers with "No chat to fork". Saved chats fork as before.

Fixes #32833
2026-10-22 02:12:55 +09:00
Classic298andGitHub cc6de63bc8 fix: Web Search settings do not save while web search is off (#32840)
With web search off, clicking Save on the Web Search settings page jumped to an empty search engine field and saved nothing. That happened with no engine picked, which is how a fresh install starts, and also when an engine picked earlier was missing its own details, such as the SearXNG query URL. Admins could not change the Web Loader settings, which apply whenever a user attaches a web page, without filling in a search engine first. The engine and its details are now only required while web search is turned on.

Fixes #32831
2026-10-22 01:51:44 +09:00
Classic298andGitHub ce7f87a750 fix: users can still edit their own messages with Allow Chat Edit off (#32841)
With Allow Chat Edit switched off, users lost the Edit button on replies but kept it on their own messages, and both Save and Send still worked there. The Edit button on a user's own messages now follows the same permission, as it already did in chats shared with replies allowed. Admins keep it as before.

Fixes #32832
2026-10-22 01:51:07 +09:00
Timothy Jaeryang Baek ca8f451cca chore: i18n 2026-10-21 16:44:03 +09:00
Classic298andGitHub 21f770fb73 fix: OAuth 2.1 (Static) MCP connections send no client secret to servers like X Ads (#32818)
With OAuth 2.1 (Static), when the authorization server did not accept the client secret as a form field, Open WebUI used whichever auth method the server's metadata listed first. X Ads lists "none" (public client, no secret) first, so the token exchange went out without the configured client secret and X rejected it with "Missing valid authorization header". When the server supports HTTP Basic auth, the secret is now sent that way, no matter which method it lists first.

Fixes #32813
2026-10-21 16:38:34 +09:00
Classic298andGitHub 7909f2bb99 fix: Shift delete in Manage Files asks for confirmation (#32817)
Holding Shift while deleting a file in Manage Files used to delete it at once, but since the redesign every delete asks "Delete 1 file?" first. Shift+click or Shift+Enter on a file's Delete option now deletes it straight away again, and the option turns red while Shift is held, as before. Delete without Shift still asks.

Fixes #32814
2026-10-21 16:38:26 +09:00
Classic298andGitHub c503f21470 fix: Manage Files count shows all files while searching (#32816)
The number next to the Files title in Manage Files stayed at the account's total while a search narrowed the list. While searching it now shows how many files are listed for the search, as before the redesign, and the total comes back once the search is cleared.

Fixes #32815
2026-10-21 16:38:15 +09:00
Timothy Jaeryang Baek 3539ad6321 refac 2026-10-21 16:35:31 +09:00
Timothy Jaeryang Baek dc2ac86060 refac 2026-10-21 16:01:14 +09:00
Timothy Jaeryang Baek 06c17834ee refac 2026-10-21 15:57:39 +09:00
Timothy Jaeryang Baek a26dda3eaf chore: format 2026-10-21 15:09:54 +09:00
Timothy Jaeryang Baek 7de90426a0 chore: i18n 2026-10-21 15:09:16 +09:00
Timothy Jaeryang Baek a8c4fa9fe2 refac 2026-10-21 15:09:00 +09:00
Timothy Jaeryang Baek d1705c1078 refac 2026-10-21 15:04:00 +09:00
G30andGitHub dd845c276c fix(a11y): branding images get alt text that names the instance or marks them as decorative (#32810) 2026-10-21 15:03:51 +09:00
Timothy Jaeryang Baek 517cfa4233 refac 2026-10-21 15:01:28 +09:00
G30andGitHub 495198508d fix(a11y): the chat input is announced as a text field by screen readers (#32808) 2026-10-21 14:59:20 +09:00
Timothy Jaeryang Baek f5e8f84e69 refac 2026-10-21 12:58:04 +09:00
Timothy Jaeryang Baek acc231774d refac 2026-10-21 12:53:00 +09:00
Timothy Jaeryang Baek 93779e2451 refac 2026-10-21 12:41:25 +09:00
Classic298andGitHub 9b4955c29b fix: background sub-agent report shows as a raw message after reloading the chat (#32804)
After reloading a chat while a background sub-agent was still working, its report came in as a plain user bubble with the whole raw report text instead of the "Background sub-agent finished" row, until the next reload. When the report arrives the page reloads the chat and receives the new turn live at the same moment, and the live copy, which lacks the message details, replaced the complete one from the server. The live copy is now laid over the server copy, so live changes still win and the report keeps what marks it as a sub-agent report.

Fixes #32801
2026-10-21 12:39:20 +09:00
Timothy Jaeryang Baek 1b987c9a10 refac 2026-10-21 12:39:11 +09:00
Timothy Jaeryang Baek fa50081e67 refac 2026-10-21 12:35:07 +09:00
Timothy Jaeryang Baek fefa31fae2 refac 2026-10-21 12:32:07 +09:00
Timothy Jaeryang Baek a5f9ec38a5 refac 2026-10-21 12:29:44 +09:00
Timothy Jaeryang Baek 0628670f56 refac 2026-10-21 12:28:32 +09:00
Timothy Jaeryang Baek a76c02e58e refac 2026-10-21 12:27:06 +09:00
Timothy Jaeryang Baek fbeee59e99 refac 2026-10-21 11:47:14 +09:00
Timothy Jaeryang Baek b6b0fff5d6 refac 2026-10-21 11:45:33 +09:00
Timothy Jaeryang Baek c7cac65f45 refac 2026-10-21 11:41:29 +09:00