Commit graph

19780 commits

Author SHA1 Message Date
Classic298
1f737b8948
fix: context compaction threshold shows while context compaction is off (#32962)
Admins saw the Context Compaction Threshold under Advanced Params, in the model editor, the model defaults and the chat settings, even with context compaction turned off, which is the default, and the value did nothing. It is now hidden while context compaction is off. A threshold already saved on a model is kept and applies again once compaction is turned on.

Refs #32830
2026-10-23 10:48:38 +09:00
Classic298
502af86b25
fix: "By @user" link to openwebui.com shows while community sharing is off (#32961)
Models imported from openwebui.com show their openwebui.com author as a link on the new chat screen, also when community sharing is turned off. That author line is now hidden while community sharing is off, and other models keep showing their author as before. The model keeps its author info, so turning community sharing back on brings the link back.

Refs #32830
2026-10-23 10:48:24 +09:00
G30
9e634dc960
fix(a11y): the Archived Chats and Keyboard lists stay usable at 400% zoom (#32938) 2026-10-23 10:47:17 +09:00
Classic298
4324573f16
fix: Valves pickers in Chat Controls show while tools and functions are off (#32959)
With tools or functions turned off for the instance (ENABLE_TOOLS, ENABLE_FUNCTIONS), Chat Controls still offered both under Valves, and the list for the disabled one was always empty. Tools and functions are now only offered there while they are enabled, and the Valves section is hidden when both are off.

Refs #32830
2026-10-23 10:46:52 +09:00
Classic298
9faca2ac5b
fix: Attach Notes shows while the Notes permission is off (#32967)
The "Attach Notes" entry in the message input's "+" menu showed to users without the Notes permission, and the list it opened only said "No notes found". It now shows only when the admin has Notes turned on and the user may use Notes, the same rule the sidebar already follows for its Notes entry.

Refs #32830
2026-10-23 10:46:03 +09:00
Classic298
9e5a355fd2
fix: Capture shows for models without Vision (#32969)
"Capture" in the "+" menu showed when no selected model supports images, and after picking a screen the user only got "Selected model(s) do not support image inputs". It now shows only when at least one selected model has "Vision", which is also what attaching an image requires.

Refs #32830
2026-10-23 10:44:51 +09:00
G30
2ea6bf4369
fix(a11y): unarchiving a chat in Archived Chats keeps keyboard focus in the list (#32909) 2026-10-23 05:40:55 +09:00
G30
8ce855974f
fix(a11y): arrow keys move through the input and integrations menus, and their items are menu items (#32940) 2026-10-23 04:41:17 +09:00
G30
20f97c703f
fix(a11y): choosing a Workspace section keeps keyboard focus on its link (#32913) 2026-10-23 04:40:50 +09:00
G30
c90536e21d
fix(a11y): each Workspace page has a heading for screen readers (#32911) 2026-10-23 04:40:23 +09:00
Timothy Jaeryang Baek
bb10ca4719 refac 2026-10-23 04:39:28 +09:00
Classic298
f6f42b0111
fix: editing a WebP image fails with the built-in image editor (#32902)
Editing a WebP image (an uploaded one, or one generated by a provider that returns WebP) failed in the Docker image. Python only learns the WebP type from a system file the image does not ship, so the picture went to the image provider labelled with no type at all, and providers rejected it. WebP is now registered at startup like the other types Open WebUI already sets, so the provider receives it as image/webp.

Fixes #32899
2026-10-23 04:22:51 +09:00
Timothy Jaeryang Baek
3a95998e32 refac 2026-10-23 04:21:15 +09:00
Classic298
3299a09753
fix: tooltips show names and descriptions exactly as written (#32953)
Text shown in a tooltip was treated as markup, so a name, path or description containing angle brackets came out mangled or partly missing. Tooltips now show their text as written, and the few places that deliberately show formatted content ask for it explicitly.
2026-10-23 04:16:15 +09:00
G30
b1e10f5306
fix(a11y): the collapsed sidebar's buttons and links aren't nested inside another button (#32930) 2026-10-23 03:56:18 +09:00
G30
855b003b86
fix(a11y): options in a Select dropdown tell screen readers which one is chosen (#32926) 2026-10-23 03:52:13 +09:00
G30
0a5c105ab0
fix(a11y): the search window's list is named by its visible caption (#32944) 2026-10-23 03:50:37 +09:00
G30
7fe27647d4
fix(a11y): the on/off switch on a Prompts row isn't nested inside another button (#32928) 2026-10-23 03:50:19 +09:00
G30
61b49c2dd7
fix(a11y): focus moves to the other sidebar button when you open or close the sidebar (#32893) 2026-10-23 03:49:09 +09:00
G30
d6e29020c0
fix(a11y): the skip link's target no longer sits past the page's right edge (#32952) 2026-10-23 03:43:32 +09:00
G30
7ee7b2895c
fix(a11y): the folder toggle in the sidebar has a name and says whether the folder is open (#32895) 2026-10-23 03:31:55 +09:00
G30
a5cfa98e9a
fix(a11y): the Settings window is named Settings for screen readers (#32924) 2026-10-23 03:02:25 +09:00
G30
e231ca160b
fix(a11y): copying a prompt in Workspace shows a notification that screen readers read (#32905) 2026-10-23 02:50:03 +09:00
G30
f844f6e893
fix(a11y): the Keyboard tab's shortcut categories are headings with a list of shortcuts under each (#32922) 2026-10-23 02:44:09 +09:00
G30
7b26b962ea
fix(a11y): screen readers hear how many models match a search in the model picker (#32897) 2026-10-23 02:41:45 +09:00
Classic298
6b9237f1a1
fix: Images settings cannot be saved without an API key for a feature that is switched off (#32949)
On a fresh install the image generation engine is OpenAI with no key, and saving Admin Settings > Images failed with "OpenAI API Key is required." even with Image Generation switched off, which blocked every change on the page, including setting up Image Edit with another engine. Image Edit had the same problem: with Gemini as its engine and no key, the page refused to save even with Image Edit off. Each engine's key or URL is now only asked for while its feature is on, so switching Image Generation or Image Edit on without one is still refused.

Fixes #32835
2026-10-23 02:41:09 +09:00
qwist1233-cpu
1740dea1df
i18n: fill the blank Turkish (tr-TR) strings (#32917)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-10-23 02:09:07 +09:00
Timothy Jaeryang Baek
63eed95c87 refac
Some checks are pending
Create and publish Docker images with specific build args / build (map[arch:linux/amd64 runner:ubuntu-latest], map[build_args:USE_CUDA=true USE_CUDA_VER=cu126 free_disk:true name:cuda126 suffix:-cuda126]) (push) Waiting to run
Create and publish Docker images with specific build args / build (map[arch:linux/amd64 runner:ubuntu-latest], map[build_args:USE_CUDA=true free_disk:true name:cuda suffix:-cuda]) (push) Waiting to run
Create and publish Docker images with specific build args / build (map[arch:linux/amd64 runner:ubuntu-latest], map[build_args:USE_OLLAMA=true free_disk:false name:ollama suffix:-ollama]) (push) Waiting to run
Create and publish Docker images with specific build args / merge (map[name:cuda suffix:-cuda]) (push) Blocked by required conditions
Create and publish Docker images with specific build args / merge (map[name:cuda126 suffix:-cuda126]) (push) Blocked by required conditions
Create and publish Docker images with specific build args / merge (map[name:main suffix:]) (push) Blocked by required conditions
Create and publish Docker images with specific build args / merge (map[name:ollama suffix:-ollama]) (push) Blocked by required conditions
Create and publish Docker images with specific build args / merge (map[name:slim suffix:-slim]) (push) Blocked by required conditions
Create and publish Docker images with specific build args / notify-helm-charts (push) Blocked by required conditions
Create and publish Docker images with specific build args / copy-to-dockerhub (, main) (push) Blocked by required conditions
Create and publish Docker images with specific build args / copy-to-dockerhub (-cuda, cuda) (push) Blocked by required conditions
Create and publish Docker images with specific build args / copy-to-dockerhub (-cuda126, cuda126) (push) Blocked by required conditions
Python CI / Ruff Format (3.11) (push) Waiting to run
Python CI / Ruff Format (3.12) (push) Waiting to run
Create and publish Docker images with specific build args / build (map[arch:linux/arm64 runner:ubuntu-24.04-arm], map[build_args:USE_CUDA=true free_disk:true name:cuda suffix:-cuda]) (push) Waiting to run
Create and publish Docker images with specific build args / build (map[arch:linux/arm64 runner:ubuntu-24.04-arm], map[build_args:USE_OLLAMA=true free_disk:false name:ollama suffix:-ollama]) (push) Waiting to run
Create and publish Docker images with specific build args / build (map[arch:linux/arm64 runner:ubuntu-24.04-arm], map[build_args:USE_SLIM=true free_disk:false name:slim suffix:-slim]) (push) Waiting to run
Create and publish Docker images with specific build args / build (map[arch:linux/amd64 runner:ubuntu-latest], map[build_args:USE_SLIM=true free_disk:false name:slim suffix:-slim]) (push) Waiting to run
Create and publish Docker images with specific build args / build (map[arch:linux/arm64 runner:ubuntu-24.04-arm], map[build_args: free_disk:false name:main suffix:]) (push) Waiting to run
Create and publish Docker images with specific build args / build (map[arch:linux/arm64 runner:ubuntu-24.04-arm], map[build_args:USE_CUDA=true USE_CUDA_VER=cu126 free_disk:true name:cuda126 suffix:-cuda126]) (push) Waiting to run
Create and publish Docker images with specific build args / build (map[arch:linux/amd64 runner:ubuntu-latest], map[build_args: free_disk:false name:main suffix:]) (push) Waiting to run
Create and publish Docker images with specific build args / copy-to-dockerhub (-ollama, ollama) (push) Blocked by required conditions
Create and publish Docker images with specific build args / copy-to-dockerhub (-slim, slim) (push) Blocked by required conditions
Frontend Build / Format & Build (push) Waiting to run
Frontend Build / Unit Tests (push) Waiting to run
2026-10-22 13:00:54 +09:00
Classic298
ed3cf83553
refac: recheck live chat access after archiving and bulk unsharing (#32887)
Archiving a chat, archiving all chats and unsharing all chats now run the same live access recheck as the other chat changes.
2026-10-22 08:32:51 +09:00
Classic298
a9adb2b78e
perf: posting in a channel takes seconds when many members are online (#32889)
Every message posted in a channel waited until the server had re-checked the login of every online member of that channel, one connected session at a time with a few database lookups each, before the post went through. In a large channel that added seconds to every single message. The result only decides who gets a notification, and the message is already delivered to everyone before this step, so the check now runs right after the post returns, as the first step of the work that sends notifications and bot replies. Members are re-checked exactly as before, including disconnecting any session whose login is no longer valid.

Postgres 16, standard channel, median time for a post to return:

| Online members | Before | After |
| --- | --- | --- |
| 100 | 0.37 s | 0.03 s |
| 300 | 1.6 s | 0.05 s |
| 1,000 | 3.4 s | 0.10 s |
2026-10-22 07:48:19 +09:00
G30
494619062a
fix(a11y): the Suggested label on a new chat is a heading that names the suggestion list (#32891) 2026-10-22 07:41:32 +09:00
Timothy Jaeryang Baek
c9415a688e refac 2026-10-22 07:40:01 +09:00
G30
5e0f723434
fix(a11y): the model name on a new chat is a heading for screen readers (#32880) 2026-10-22 07:25:38 +09:00
G30
da2780b240
fix(a11y): screen readers read the model the arrow keys are on in the model picker (#32886) 2026-10-22 07:25:28 +09:00
Timothy Jaeryang Baek
4d70ed07ff refac 2026-10-22 07:14:26 +09:00
Classic298
52f51ea4f3
chore: quote the bracketed options in the compose launcher help (#32881)
The help examples show options like --enable-gpu[count=1] without quotes. zsh, the default shell on macOS, reads the square brackets as a file pattern and stops with "no matches found", so typing them as shown fails there. The examples now quote those options, which works the same in bash and zsh.

Refs #32878
2026-10-22 07:09:01 +09:00
Classic298
bae611e785
perf: saving a group or changing its members takes seconds when many users are online (#32882)
Since 0.12.0, every group save and every member add or remove made the server recheck access for every chat that any online user had open in a browser tab, one database lookup at a time, before the save finished. With a few thousand people online, saving a group took several seconds, and every one of those open chats reloaded its contents afterwards. When a group change can affect what someone may see, the server already makes that person's browser reconnect, and an open chat checks its access again on reconnect, so group changes now skip the recheck for everyone else. Folder and chat sharing changes keep it.

Postgres 16, 2,000-member group, one open chat per online user:

| Online users | Saving the group without permission changes, before | after | Adding a member, before | after |
| --- | --- | --- | --- | --- |
| 1,000 | 2.0 s | under 0.05 s | 2.2 s | under 0.05 s |
| 3,000 | 6.7 s | under 0.05 s | 6.6 s | under 0.05 s |
2026-10-22 07:08:49 +09:00
Classic298
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
Classic298
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
G30
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
Classic298
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
G30
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
Classic298
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
Classic298
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
G30
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
Classic298
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
Classic298
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
Classic298
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