Commit graph

1934 commits

Author SHA1 Message Date
Classic298
5fde0485a5
fix: an approved knowledge or file tool loses its sources (#32439)
With tool approval set to ask, a knowledge or file tool the user approved ran and answered, but no sources were saved on the reply or shown below it. The same call without approval listed them as usual. The sources of an approved call are now saved and shown the same way.

Fixes #32436
2026-10-15 00:28:23 +04:00
Classic298
209b15b963
feat: keep socket.io long polling out of the audit log (#32425)
With websocket support turned off, the browser falls back to HTTP long polling and every poll was written to the audit log as its own entry, flooding it. The same traffic over a websocket was never audited, and AUDIT_EXCLUDED_PATHS only matches API routes, so there was no way to filter it out. Polling requests are now skipped as well, so the audit log looks the same whichever transport is in use.

Fixes #31871
2026-10-15 00:01:10 +04:00
Classic298
bae22752d3
feat: add {{MODEL_ID}} placeholder for custom connection headers (#32426)
Custom headers on connections and tool servers could pass the chat, message, user and task to downstream services, but not which model the request was for. Chat requests can now use {{MODEL_ID}}, which holds the ID of the model handling the request; for a workspace model that is the workspace model's own ID. In a multi-model chat each model's request carries its own ID, so downstream services can route by model or log usage per model.

Fixes #30006
2026-10-15 00:00:41 +04:00
Classic298
fb3d92a6ef
feat: record the requested model as its own field in the audit log (#32429)
The audit log only showed which model a request used inside the logged request body, which is cut off at MAX_BODY_LOG_SIZE, so the model went missing whenever a long prompt came before it. Audit entries for chat and completion requests, including the OpenAI, Ollama and Anthropic-compatible endpoints, now carry a model_id field with the model the client asked for, at every AUDIT_LOG_LEVEL and however long the request is. Other requests log it as null.

Fixes #30097
2026-10-15 00:00:19 +04:00
Timothy Jaeryang Baek
de446952c2 refac 2026-10-14 23:58:58 +04:00
Timothy Jaeryang Baek
7b47c3b22c refac 2026-10-14 23:21:22 +04:00
Timothy Jaeryang Baek
bcf540a989 refac 2026-10-14 18:35:56 +04:00
Timothy Jaeryang Baek
a70e96525d refac 2026-10-14 18:22:33 +04:00
Timothy Jaeryang Baek
323139cdf5 refac 2026-10-14 18:11:14 +04:00
Timothy Jaeryang Baek
97a66ef73e refac 2026-10-14 17:58:03 +04:00
Timothy Jaeryang Baek
c314239558 refac 2026-10-14 17:10:08 +04:00
Timothy Jaeryang Baek
fe0e725997 refac 2026-10-14 16:57:58 +04:00
Timothy Jaeryang Baek
4c5668696b refac 2026-10-14 13:46:36 +04:00
Classic298
29719c8bfb
fix: pipes and tools get None instead of a file list when nothing is attached (#32380)
Pipes and tools received None instead of a list of files on messages without attachments, which does not match the docs and breaks plugins that loop over the files. Pipes and tools now get an empty list in that case.

Fixes #32379
2026-10-14 12:18:55 +04:00
Timothy Jaeryang Baek
5c93b06b07 refac 2026-10-13 22:16:21 +04:00
Classic298
4f9f04ceee
fix: MCP OAuth sign-in fails when the provider's sign-in page is behind Cloudflare bot protection (#32364)
Connecting an OAuth 2.1 MCP tool server such as Canva failed with "OAuth client registration is still invalid after re-registration" whenever Cloudflare answered Open WebUI's own server-side check of the provider's sign-in page with a bot challenge. The challenge page repeats the requested address, which contains the redirect URL, so Open WebUI read it as the provider rejecting its registration. Open WebUI now skips its check when it gets a bot challenge, and the browser goes on to the provider's sign-in page as usual. Real provider errors about an unknown client or redirect URL still trigger re-registration as before.

Fixes #32363
2026-10-13 21:45:59 +04:00
G30
5032e834ea
fix: a calendar reminder fires again after the event is moved to a new time (#32358) 2026-10-13 20:05:14 +04:00
Timothy Jaeryang Baek
97333a4697 refac 2026-10-13 20:04:28 +04:00
Timothy Jaeryang Baek
7840194631 refac 2026-10-13 19:51:58 +04:00
Timothy Jaeryang Baek
2e8839a5dd refac 2026-10-13 19:40:48 +04:00
Timothy Jaeryang Baek
d34f73066d refac 2026-10-13 19:10:21 +04:00
Timothy Jaeryang Baek
c7193760ba refac 2026-10-13 18:34:24 +04:00
Timothy Jaeryang Baek
a94a2068e2 refac 2026-10-13 18:32:14 +04:00
Timothy Jaeryang Baek
200b951491 refac 2026-10-13 18:31:54 +04:00
Timothy Jaeryang Baek
fc1005f09b refac 2026-10-13 18:16:01 +04:00
Timothy Jaeryang Baek
be6f0a6656 refac 2026-10-13 17:22:11 +04:00
G30
ad77b62491
fix: import skills from GitHub repos that contain symlinks outside the skill folder (#32313) 2026-10-13 16:48:14 +04:00
G30
1c5f101d0b
fix: show follow-up suggestions when the task model adds text around its JSON (#32323) 2026-10-13 16:46:17 +04:00
Timothy Jaeryang Baek
03f5191aca refac 2026-10-13 01:49:55 +04:00
Timothy Jaeryang Baek
1786d6cdb0 refac 2026-10-13 00:43:00 +04:00
Timothy Jaeryang Baek
53a8f131f3 refac 2026-10-13 00:42:34 +04:00
Timothy Jaeryang Baek
e9ac958f36 refac 2026-10-12 19:18:08 +04:00
Timothy Jaeryang Baek
2d47128242 refac 2026-10-12 19:11:22 +04:00
Timothy Jaeryang Baek
1aa6ba58ba refac 2026-10-12 18:53:20 +04:00
Classic298
c89336da5f
fix: daily, weekly and monthly automations can run twice or skip their first run (#32264)
Automations scheduled with the Daily, Weekly or Monthly picker ran a few seconds after the chosen time, taking the seconds from whenever the previous run was handled. Now and then that left the next run due again within the same minute, and the automation ran twice. Users whose timezone is behind the server's could also have their first run moved to the next day. These schedules now run at the exact minute chosen, in the user's own timezone.

Fixes #32263
2026-10-12 18:51:03 +04:00
Timothy Jaeryang Baek
6f92cd78ee refac 2026-10-12 18:37:30 +04:00
Timothy Jaeryang Baek
2ba35625b3 refac 2026-10-12 18:23:50 +04:00
Timothy Jaeryang Baek
774007d728 refac 2026-10-12 18:11:33 +04:00
Timothy Jaeryang Baek
b4bb9e7aca refac 2026-10-12 17:57:02 +04:00
Timothy Jaeryang Baek
c7802555b6 refac 2026-10-12 17:47:00 +04:00
Timothy Jaeryang Baek
04bccecb8e refac 2026-10-12 17:29:04 +04:00
Classic298
5ad9af57d1
fix: cannot connect through Redis Sentinels that require a password (#32241)
When the Redis Sentinels are protected with a password, every Redis operation failed with "No master found", because the password in REDIS_URL was used for the Redis server itself but never for the Sentinels. The Sentinels now get the same credentials, both for REDIS_URL and for WEBSOCKET_REDIS_URL. Sentinels without a password keep working, and Sentinel credentials set by hand in WEBSOCKET_REDIS_OPTIONS still take precedence.

Fixes #32240
2026-10-12 11:42:26 +04:00
Classic298
0309c9ad13
fix: Redis Sentinel fails when the master name has capital letters (#32234)
Some checks are pending
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 / copy-to-dockerhub (-slim, slim) (push) Blocked by required conditions
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 / 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/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: free_disk:false name:main suffix:]) (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 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 / 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
Create and publish Docker images with specific build args / copy-to-dockerhub (-ollama, ollama) (push) Blocked by required conditions
Frontend Build / Unit Tests (push) Waiting to run
Frontend Build / Format & Build (push) Waiting to run
With Redis Sentinel, Open WebUI lowercased the master name given as the host part of REDIS_URL, so a master named myMaster was looked up as mymaster and every Redis call failed with "No master found". The OT-Container-Kit redis-operator for Kubernetes names its master myMaster by default, so its users hit this out of the box. The master name is now used exactly as written in REDIS_URL, so it has to match the case configured in Sentinel.

Fixes #31918
2026-10-11 22:17:41 +04:00
Classic298
ee1d9255fc
fix: MCP server connection failures are not logged at the default log level (#32229)
When an MCP tool server fails to connect during a chat, the chat shows "Failed to connect to MCP server" but the reason was only logged at debug level, so it never appeared in the logs of a default install. The failure is now logged as an error with the full cause, such as a refused connection or a 401 from the server. The message in the chat is unchanged.

Fixes #32213
2026-10-11 21:06:11 +04:00
Timothy Jaeryang Baek
78613d86f7 refac 2026-10-11 15:55:57 +04:00
Classic298
67ff390c1c
fix: OAuth token forwarding and provider sign-out break after a browser restart (#32209)
After an OAuth sign-in, the cookies tying the browser to the user's OAuth session were dropped when the browser closed, while the login itself stayed valid for the full JWT lifetime. After a restart the user was still signed in, but model connections and terminal servers using system OAuth got no token, and signing out no longer ended the session at the identity provider. These cookies now last as long as the login again, with and without MFA, as they did in 0.11.
2026-10-10 15:56:43 -05:00
Timothy Jaeryang Baek
9b130cdeab refac 2026-10-11 00:55:58 +04:00
Timothy Jaeryang Baek
c7b5edc726 refac 2026-10-10 23:50:29 +04:00
Timothy Jaeryang Baek
fea827bc2e chore: format 2026-10-10 23:18:09 +04:00
Timothy Jaeryang Baek
67cfa917c1 refac 2026-10-10 23:02:39 +04:00