diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b87129da4..e45921c597 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,358 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.12.0] - 2026-10-10 + +### Added + +- โ˜Ž๏ธ **Realtime voice calls.** Administrators can now switch Call mode in the Voice calls section of Audio settings from Standard to Realtime, so Voice mode talks through an OpenAI Realtime voice model (gpt-realtime-2.1-mini with the Marin voice by default) that handles small talk itself and hands real questions and tasks to the chat's selected model, with its conversation history and tools, before speaking the answer while the full reply appears in the chat. Approvals and questions from tools still have to be answered in the chat, calls need the Allow Call permission and end after an hour, models can set their own Realtime Voice in the model editor, and the settings can also be given with the "AUDIO_REALTIME_ENABLED", "AUDIO_REALTIME_OPENAI_API_BASE_URL", "AUDIO_REALTIME_OPENAI_API_KEY", "AUDIO_REALTIME_MODEL", "AUDIO_REALTIME_VOICE", "AUDIO_REALTIME_TRANSCRIPTION_MODEL" and "REALTIME_CALL_PROMPT_TEMPLATE" environment variables. [Commit](https://github.com/open-webui/open-webui/commit/093bfce2b6bd128731bae8075110898ae22a76e9), [Commit](https://github.com/open-webui/open-webui/commit/fa4c7fe5e8b5a26bcb9e4597d311a6b16aaf796a), [#5894](https://github.com/open-webui/open-webui/issues/5894) +- ๐Ÿ•บ **Animated avatars in Realtime voice calls.** A model can now show a 3D character instead of the voice orb during Realtime calls: in the model editor, upload a rigged VRM avatar of up to 25 MiB, preview it, optionally give it VRMA clips of up to 10 MiB for its idle, listening and speaking states, and add up to 16 named gestures with a description, which the voice model plays on its own when the conversation fits or when asked, such as a wave or a clap, while the avatar's mouth follows the spoken answer. [Commit](https://github.com/open-webui/open-webui/commit/7401f41630e53999afd6c4efba06816e7c05cdb7), [Commit](https://github.com/open-webui/open-webui/commit/e56f85f43260ed528bdf20a8afa635a963b84b78) +- ๐Ÿ” **Two-factor sign-in.** Administrators can require an authenticator app for every user under Admin Settings > Authentication, or with "ENABLE_MFA", so users set one up from a QR code on their next sign-in, get ten single-use recovery codes, and can later replace their authenticator or create new recovery codes in their account settings; OAuth and trusted-header sign-ins can be let through without it with "MFA_ALLOW_OAUTH_BYPASS" and "MFA_ALLOW_TRUSTED_HEADER_BYPASS", and the "open-webui mfa reset" command gives a user who lost their authenticator a one-time recovery token. [Commit](https://github.com/open-webui/open-webui/commit/24e30d1cbdaab624dfe20f479f805e6791cf0226) +- ๐Ÿ‘ซ **Replying in shared chats.** When sharing a chat with people or groups, or sharing a folder, the new Sharing mode setting can be switched from Clone only to Allow replies, so everyone it is shared with can keep writing in the same conversation instead of cloning it. Each message shows the name and profile picture of who sent it, with other people's messages on the left in bubble view, replies stream live to everyone with the chat open, a line above the input shows who is typing, people can only edit, rate, regenerate or stop their own messages, and the owner's own chat settings, title and tags stay untouched by others. [Commit](https://github.com/open-webui/open-webui/commit/de73bb830aeb150bc5bb4707566d3969f70408b0, [Commit](https://github.com/open-webui/open-webui/commit/6cfd6987e5b220040c2e476105779dcc10d3d14b), [Commit](https://github.com/open-webui/open-webui/commit/1e9dd6e330548c20a1d4054206c3e1b77fb08a5a) +- ๐Ÿ•น๏ธ **Model controls.** Anyone who can edit a model can now add named controls to it in the model editor, such as a Thinking control whose Low, Medium and High options each set the reasoning effort, where every option can carry its own custom parameters and one can be marked as the default, shown either as a menu or as a slider that runs from the first option to the last; people with the Allow Chat Controls and Allow Chat Params permissions then pick an option from a knobs button next to the model selector in the chat input, their choice is remembered for that model, and the names of controls and options can be translated for each language in the editor. Controls cannot be set on pipe, direct connection or arena models and are not applied to automation runs. [Commit](https://github.com/open-webui/open-webui/commit/106aae70e9ad1a3356762779d72673b7dc1293a7), [Commit](https://github.com/open-webui/open-webui/commit/e9cca320b40025a892436a9791902af85a426ad3), [Commit](https://github.com/open-webui/open-webui/commit/efd94fde63882818d451370a2b39edb93ba6a8f5), [Commit](https://github.com/open-webui/open-webui/commit/3e0e760ce30cf2b5f177b29478c0a8ec85f1d5a8), [Commit](https://github.com/open-webui/open-webui/commit/79d376a1f37436065d78e25be9bc342fe0724801), [#31972](https://github.com/open-webui/open-webui/issues/31972) +- ๐Ÿง  **Compaction during long tool runs.** With context compaction on and native function calling, a reply that runs many tool calls in a row is now compacted between tool rounds once its context passes the token threshold, keeping each tool call together with its results and giving the summary the tool names and arguments, where compaction only ran before the reply started and a long tool run could grow past the model's context. [Commit](https://github.com/open-webui/open-webui/commit/67cfa917c12004d4e662d0f8879779b75ad6629a), [#27599](https://github.com/open-webui/open-webui/issues/27599) +- ๐Ÿงณ **Multi-file skills with version history.** Workspace skills can now hold supporting files such as scripts, references and templates next to SKILL.md, managed in a file tree in the skill editor, and every save keeps a version you can page through, compare with the current one, make the live version again or delete. Skills import from a ZIP folder, a JSON file or a single SKILL.md with a preview first, and export as ZIP or JSON. Models can read a skill's supporting files and create skills or edit their files on their own, so for anyone allowed to create workspace skills "/skills:create" now saves the new skill straight to the workspace without needing a terminal. [Commit](https://github.com/open-webui/open-webui/commit/9bbb95048b841d5f6a1fedf606ae93ec28969521), [Commit](https://github.com/open-webui/open-webui/commit/178de36662909b072864733aad5e074f2bb5d01e), [Commit](https://github.com/open-webui/open-webui/commit/24ee1cb168a1b2071195c0331aa186a1d62bc197) +- ๐Ÿ—„๏ธ **Knowledge bases as a file browser.** A knowledge base now opens with its folders and files on the left and the selected file next to them, where you can switch between a preview of the original file and the text the model searches, edit that text in place or download the file, with search, filters and sorting above the list and a question before unsaved edits are dropped. [Commit](https://github.com/open-webui/open-webui/commit/33dd7dd224d4fc4031185a4dd589242681f24af7), [Commit](https://github.com/open-webui/open-webui/commit/9181381b0a67674aa37bc9f1f8dc45c8fe85fdd9), [Commit](https://github.com/open-webui/open-webui/commit/b130fec73c90a57e121b5e3759a03fee053c9f93), [Commit](https://github.com/open-webui/open-webui/commit/96ea26d09f14bb9d26864af3b0a6d382cae748a9), [Commit](https://github.com/open-webui/open-webui/commit/550311b21822d50ef9c6c63069408b35287b4607) +- ๐ŸŽ›๏ธ **Redesigned model editor.** The model editor has a new layout: the background image now fills a banner at the top with the model's picture, name and ID set over it and buttons to add, change or remove it on hover, a long system prompt opens folded to a short preview with Show more, and Capabilities, Default Features, Builtin Tools, Knowledge, Tools, Skills, Filters, Actions, Prompts, Voice and Terminal each fold into one row that summarizes what is set, such as "Web Search, Image Generation +2", "3 of 9 enabled" or "Custom ยท 4", and opens into switches with descriptions or a searchable picker with Enable all, Clear and a Manage link. Advanced Params shows how many parameters are changed, every setting name explains itself in a tooltip, Save & Update with the change note stays at the bottom of the editor, default features now sit with Capabilities and only list the capabilities that are on, default filters are switched on per filter inside the Filters picker, Knowledge has its own picker with Upload Files, empty lists point to the workspace where items are added, and the admin Model Defaults panel uses the same rows. [Commit](https://github.com/open-webui/open-webui/commit/d4879a98bc99e6a80ef13df3772ee1529d657509), [Commit](https://github.com/open-webui/open-webui/commit/255f88eff0a0c94e7a99bd95a7fc185aa398ec59), [Commit](https://github.com/open-webui/open-webui/commit/8d0ff76f2b8e21ae719a4b9338779b92b8778d98), [Commit](https://github.com/open-webui/open-webui/commit/44b71f87ab0433db9f9376d685653ff516c4e7e5), [Commit](https://github.com/open-webui/open-webui/commit/d54aa9836eb7cf23e50b6f9ecd35316f09874f1b), [Commit](https://github.com/open-webui/open-webui/commit/558fe57ca00ac1f74d9a565e353acc43379644bf), [Commit](https://github.com/open-webui/open-webui/commit/90496c28aed961d154143cf22b132caa6b8a52c5), [Commit](https://github.com/open-webui/open-webui/commit/76ad6f97c52db1e3b02926132fd6ea9c1176f40a) +- โฎ๏ธ **Model version history.** Every save of a workspace model now keeps a version you can page through in the model editor, make the live version again or delete, and a version whose knowledge, tools, functions or terminal are gone or no longer yours to use is refused instead of being switched on half working. [Commit](https://github.com/open-webui/open-webui/commit/16849284ffbf7a7cd5deac179799ce4d5716848b), [Commit](https://github.com/open-webui/open-webui/commit/27b48b70df2e01af0db4d4668ea3aa29d9f4cd6f) +- ๐Ÿ”™ **Tool and function version history.** Every save of a tool or function now keeps a version you can page through in its editor, make the live version again or delete, so a change can be tried and rolled back without creating a copy and setting it up again. [#29496](https://github.com/open-webui/open-webui/issues/29496), [Commit](https://github.com/open-webui/open-webui/commit/e6476928eeb02def4a0cfc3ed1eb57b1a3630ae3) +- ๐Ÿ†š **Compare prompt versions.** The prompt editor's history now compares any earlier version with the current one in a diff view and can start editing from an old version as a new one, and asks before unsaved changes are dropped. [Commit](https://github.com/open-webui/open-webui/commit/37138282fbd21bdff642723ad0b6f054b2241a19), [Commit](https://github.com/open-webui/open-webui/commit/33dd7dd224d4fc4031185a4dd589242681f24af7) +- ๐Ÿ—œ๏ธ **Tool Search for large tool sets.** Administrators can now turn on Tool Search, marked experimental, in Admin Settings > Interface, so tools with long definitions are left out of the request and only listed by name and a short description, and the model looks up the full definition with a search_tools tool when it needs one, which keeps the prompt small and the prompt cache intact when many tools or MCP servers are enabled; the Deferral Threshold sets the definition length in characters above which a tool is held back, Always Loaded Tools takes names or patterns such as github_* that are always sent, and Defer Built-in Tools decides whether built-in tools are held back too. It applies with native function calling and can be set with "ENABLE_TOOL_SEARCH", "TOOL_SEARCH_DEFER_THRESHOLD", "TOOL_SEARCH_ALWAYS_LOADED" and "TOOL_SEARCH_DEFER_BUILTIN_TOOLS". [Commit](https://github.com/open-webui/open-webui/commit/088830cf82f6ac430653079668fc2c66d830f164) +- ๐ŸŒณ **Nested groups.** Administrators can now give a group a parent group, so members of the inner group also get everything shared with the parent groups above it and their permissions, the group editor shows the inherited permissions and lists direct and inherited members separately, deleting a group moves its subgroups up to its parent, and open browsers pick up changed group access right away without reloading. [Commit](https://github.com/open-webui/open-webui/commit/d4c561d9f22b6fe069c1a4e49f83d05fa6839991) +- ๐Ÿฅ‡ **Default models per group.** Administrators can now set default models for a group in its settings, which its members get for new chats instead of the global default, with the most deeply nested group winning when several apply and a user's own default models still taking priority. [Commit](https://github.com/open-webui/open-webui/commit/398c37c73cee80e5b1f3e2ceb05403744aab71be) +- ๐Ÿ”ฑ **Fork shared chats.** Shared chat links and chats you can only read, such as ones in a folder shared with you, now have a fork action on each finished reply, which makes your own copy of the conversation up to that message; a fork from a share link holds only what was shared, and a fork of someone else's chat leaves out their folder, pin and chat variables. [Commit](https://github.com/open-webui/open-webui/commit/5de5bf235b1dc7a6f139ef5d66d4339c6de973af), [Commit](https://github.com/open-webui/open-webui/commit/f0233e1e3a1c19b1771f67721b6ebc59db4a36aa), [Commit](https://github.com/open-webui/open-webui/commit/930f8c3640aa3c8bd7eee2becee85f93a668cc29) +- ๐Ÿช **Import skills from a URL.** Administrators can now pick Import from URL in the Skills workspace import menu to load skills from a GitHub repository, a GitHub folder or SKILL.md link, or a direct link to a ZIP, JSON or Markdown skill file, which open in the import preview to pick from; downloads are checked against internal addresses on every redirect and capped at 200 MiB. [Commit](https://github.com/open-webui/open-webui/commit/8d0ff76f2b8e21ae719a4b9338779b92b8778d98), [Commit](https://github.com/open-webui/open-webui/commit/d54aa9836eb7cf23e50b6f9ecd35316f09874f1b) +- ๐Ÿ›๏ธ **Skills on the community site.** With Community Sharing on, the Skills workspace now has a Discover a skill link to the skills on openwebui.com, the skill menu has Share for people allowed to export skills, which sends the skill with all its files to openwebui.com, and a skill opened from openwebui.com loads straight into the new skill editor for people allowed to import skills. [Commit](https://github.com/open-webui/open-webui/commit/a3cd6158bb188837dcbfbc11ade56d1a1f748db2), [Commit](https://github.com/open-webui/open-webui/commit/e86c82406da3438e269955221f78757132e30727) +- ๐Ÿ” **Access from the list.** The menu of each item in the Models, Knowledge, Prompts, Skills, Tools and Notes lists now has an Access entry, so who can use an item can be changed without opening it. [Commit](https://github.com/open-webui/open-webui/commit/b3ce7de8d3ab59f99f0006775dc3158ea079deda), [Commit](https://github.com/open-webui/open-webui/commit/d4f01d7344fdec082c956b7b0c9c650a2e63485b), [Commit](https://github.com/open-webui/open-webui/commit/784b72f19ef2ebf894480ab5e303bc995d3d4b59) +- โ–ช๏ธ **Livelier typing cursor while a reply streams.** The cursor shown at the end of a streaming reply now pulses faster and fades further, so an ongoing reply is easier to spot. [Commit](https://github.com/open-webui/open-webui/commit/382295d94153d617cbc0701e812471e3c9e8ed99) +- ๐Ÿ‘ป **Unavailable models in the admin Models list.** The Models list in Admin Settings now opens on a new Available view that leaves out base models no longer offered by any connection, and an Unavailable view lists those leftovers, while each model's menu now offers Delete for a leftover or workspace model and Reset for an available base model to bring its saved settings back to the defaults. [Commit](https://github.com/open-webui/open-webui/commit/461cc7aff9066a2e30f12fd8d67341d48a75befe), [Commit](https://github.com/open-webui/open-webui/commit/ffce74fd292489653f9d05d914dfb120e90abcbe), [#31389](https://github.com/open-webui/open-webui/issues/31389), [#32048](https://github.com/open-webui/open-webui/issues/32048), [#26812](https://github.com/open-webui/open-webui/issues/26812) +- ๐Ÿ“ก **Lighter multi-instance streaming.** Deployments that share websocket traffic through Redis use less CPU while streaming, because each server now skips live updates for rooms it has no one in; set "WEBSOCKET_REDIS_ROOM_CHANNELS" to false to restore the previous delivery. [#28818](https://github.com/open-webui/open-webui/pull/28818), [#28173](https://github.com/open-webui/open-webui/issues/28173) +- ๐Ÿ“‘ **Word and PowerPoint files from code.** The code interpreter can now create Word documents and PowerPoint decks that open in Office, using libraries bundled with Open WebUI so it also works without internet access. [#30382](https://github.com/open-webui/open-webui/pull/30382), [#30361](https://github.com/open-webui/open-webui/issues/30361) +- ๐Ÿงฒ **Reordering filtered model lists.** Models on the admin models page can now be dragged into place while a search, view or tag filter is active, with every model hidden by the filter keeping its position. [#30390](https://github.com/open-webui/open-webui/pull/30390), [#29634](https://github.com/open-webui/open-webui/issues/29634) +- ๐Ÿ–จ๏ธ **Images in note PDFs.** Downloading a note as a PDF now includes the images pasted into it, where the PDF held only the title and text. [#30975](https://github.com/open-webui/open-webui/pull/30975), [#30974](https://github.com/open-webui/open-webui/issues/30974) +- ๐Ÿ•ต๏ธ **Tavily search depth.** Administrators can now choose how deep Tavily web searches go, from ultra-fast to advanced, in the Tavily settings of the web search page or through "TAVILY_SEARCH_DEPTH", separately from the existing extract depth. [#31308](https://github.com/open-webui/open-webui/pull/31308), [#29891](https://github.com/open-webui/open-webui/issues/29891) +- ๐ŸŽ๏ธ **Native hybrid search on Milvus.** Hybrid search on Milvus 2.5 and newer, with one collection per knowledge base or with multitenancy, now runs inside Milvus with its built-in BM25 full-text search next to the vectors in the same collection, where every search loaded every chunk of the collection into Open WebUI and scored it there, making hybrid search on Milvus much faster and lighter on memory; the BM25 weight setting works the same way it does on pgvector. [#31645](https://github.com/open-webui/open-webui/pull/31645), [#31660](https://github.com/open-webui/open-webui/pull/31660), [#26243](https://github.com/open-webui/open-webui/issues/26243) +- ๐Ÿช™ **Input and output tokens in analytics.** Hovering, focusing or clicking the token total on the admin Analytics dashboard now shows how many of those tokens were input and how many were output. [Commit](https://github.com/open-webui/open-webui/commit/7e317fbada4acc5c48f326aa5935b3928275ea78), [#31646](https://github.com/open-webui/open-webui/issues/31646) +- ๐Ÿš€ **Faster JSON handling across the app.** JSON is now read and written with orjson by default, speeding up request and response bodies, streamed provider responses and live socket updates, which now encode about 17 times and decode about 3 times faster. [#31616](https://github.com/open-webui/open-webui/pull/31616) +- ๐ŸŽš๏ธ **Separate switches for Tools, Functions and tool servers.** Administrators can now turn off workspace Tools, Functions or external tool servers on their own with "ENABLE_TOOLS", "ENABLE_FUNCTIONS" and "ENABLE_TOOL_SERVERS", so in-process plugins can be switched off while OpenAPI, MCP and Open Terminal servers keep working, or the other way round. [Commit](https://github.com/open-webui/open-webui/commit/f50f9e6252209760d0b96f090766e91fb826ecba), [#31509](https://github.com/open-webui/open-webui/issues/31509) +- ๐Ÿ“ฌ **Message queue in channels.** Messages sent in a channel or thread while an earlier one is still sending or a file is still uploading now wait in a queue above the message box, where each can be sent right away, edited or removed, and they go out in order once their files are ready, where a message sent during an upload went out with a broken attachment. [Commit](https://github.com/open-webui/open-webui/commit/8a4547104c4f88c02b607ad7b6849dc22f377c28), [#31587](https://github.com/open-webui/open-webui/issues/31587) +- ๐Ÿ“„ **Copy button in the model JSON Preview.** The JSON Preview in the model editor now has a Copy button that copies the model's JSON to the clipboard exactly as the preview shows it, including edits that have not been saved yet. [Commit](https://github.com/open-webui/open-webui/commit/fe2c694915bf7915f7555620dd4bdd8c7f3c5f41), [Commit](https://github.com/open-webui/open-webui/commit/106aae70e9ad1a3356762779d72673b7dc1293a7), [#31955](https://github.com/open-webui/open-webui/issues/31955) +- ๐Ÿ’ก **Model ID suggestions for connections.** After verifying a connection in the add or edit connection dialog, the model ID field suggests the models the server reports, leaving out ones already added. [Commit](https://github.com/open-webui/open-webui/commit/fd0749fba106db4809a2c72fc42538d249b8b519) +- ๐Ÿ†” **MCP Connection ID filled in from the name.** When adding an MCP tool server, the ID field is now labeled Connection ID and filled in from the server name, so it no longer has to be typed before saving or registering an OAuth client, and importing a connection keeps its ID. [Commit](https://github.com/open-webui/open-webui/commit/079647f1425ef80be5a330bf1b2c4158d66c8340) +- ๐Ÿ”ฉ **MCP tools listed in the chat tools dialog.** Expanding an MCP tool server in the tools dialog of the chat input now loads and lists its tools with their descriptions and a tool count, offers Reconnect when the server needs you to sign in again, and only shows the tool servers selected for the chat. [Commit](https://github.com/open-webui/open-webui/commit/fb741ebcd2daed626405f9458c192e5161bce4c0) +- ๐Ÿชฃ **S3 file storage on the slim image.** The slim image can now keep files in an S3 bucket with "STORAGE_PROVIDER" set to s3, where it only supported local storage; Google Cloud and Azure storage still need the standard image. [Commit](https://github.com/open-webui/open-webui/commit/425da8b6cc14144895c6eba19a70cf5c8881d3cf) +- ๐Ÿšช **Sign out all devices for a user.** Administrators can now sign a user out of every device from the user edit dialog, while the user's API keys keep working. [Commit](https://github.com/open-webui/open-webui/commit/24e30d1cbdaab624dfe20f479f805e6791cf0226) +- ๐Ÿ“ป **OpenAI Realtime models for text-to-speech.** Administrators can now pick OpenAI Realtime as the text-to-speech engine in Audio settings, which uses the gpt-realtime-2.1 or gpt-realtime-2.1-mini model with voices such as Marin and Cedar only to turn text into a finished audio clip rather than for a live voice conversation, and the instructions that keep it reading text aloud word for word can be replaced under Prompt Template or with the "REALTIME_TTS_PROMPT_TEMPLATE" environment variable. [Commit](https://github.com/open-webui/open-webui/commit/b8738494cfab53f7e3f3849e8856c26263bd45fa), [Commit](https://github.com/open-webui/open-webui/commit/b0bcd945199c3b6884ef6526fb4edd6636cd06ba) +- ๐ŸŽ’ **Skills built-in tool per model.** The Builtin Tools section of a model now has a Skills switch, on by default, so a model can be kept from finding and loading skills on its own while skills a user picks for a chat still apply. [Commit](https://github.com/open-webui/open-webui/commit/55e1c44c946828ab92c94934c12c4fc8aa7568fd) +- ๐Ÿชž **Cloning chats you can only read.** A chat you open read only, such as one in a folder shared with you, now shows a Clone Chat button that copies it into your own chats from the message you are viewing, for anyone allowed to import chats. [Commit](https://github.com/open-webui/open-webui/commit/c6dd9a451abef12e93e19624a64cfb8a9a1f6465) +- ๐Ÿ **Finish reason for outlet filters.** Outlet filters now get the reason the model stopped, such as reaching the token limit or stopping to call a tool, on the finished reply of OpenAI-compatible and Ollama models, so they no longer have to read every streamed chunk to find out, and Ollama replies cut off by the token limit now report length instead of stop. [#32079](https://github.com/open-webui/open-webui/pull/32079) +- ๐Ÿ”– **Build shown next to the version.** The version in Settings shows "dev" and the commit for development builds and the commit for other non-release builds, and update checks and the update notification now only run on release builds. [Commit](https://github.com/open-webui/open-webui/commit/51f0e01258b92c77952d4534bb8ce8c618b2700c) +- ๐Ÿ“‚ **Folder default model set in the folder settings.** A folder's default model for new chats is now chosen in the folder's settings, and switching the model inside a chat in that folder no longer changes the folder's default. [Commit](https://github.com/open-webui/open-webui/commit/a3a2e42ee00a70d6c646735345e6b771bcd2a70d), [Commit](https://github.com/open-webui/open-webui/commit/8f4f29d8345196e3221c85ecff0411fbd7e371af) +- ๐Ÿท๏ธ **Workspace model list links.** In the workspace model list, clicking a model's name now opens its editor and a small arrow next to it opens the model in a new chat, the enable switch goes back if saving fails, and deleting with Shift held now asks for confirmation. [Commit](https://github.com/open-webui/open-webui/commit/5bb1c470802c7df9a48cc0ca45c1886c294d6e6e) +- ๐Ÿชซ **Unreachable MCP servers shown as a status.** When an MCP server attached to a chat cannot be reached, the reply now shows a "Failed to connect to MCP server" status line and carries on without that server's tools, instead of marking the reply with an error. [Commit](https://github.com/open-webui/open-webui/commit/6defd4a9479ad82d4736df6c382d38ba54650dd1) +- ๐Ÿš **Prompt cache friendly terminal settings.** Open Terminal connections now have a Working Directory Context switch to leave the current folder out of the tool instructions, and a User Shell Tools option set to Always Include keeps the tools for your shell in the request while the shell is closed, so opening folders, reloading the page or losing the shell no longer change the start of the request and break the provider's prompt cache. [Commit](https://github.com/open-webui/open-webui/commit/a20b622ba808d46b28843e5d4ec0b996369f6a8b), [#32026](https://github.com/open-webui/open-webui/issues/32026), [#31590](https://github.com/open-webui/open-webui/issues/31590) +- ๐ŸŒ™ **Local time and last seen on profile cards.** The profile card that opens on a person's name in channels or on an @mention now shows their local time and when they were last active, and it reloads each time it opens so the status stays current. [Commit](https://github.com/open-webui/open-webui/commit/538f9c9090dab742b4d8e3a1b3a058956ea8f39b) +- ๐Ÿ›ธ **Exa as the web loader.** Administrators can now pick Exa as the Web Loader Engine in Web Search settings, so pages from web search and attached links are fetched through Exa, reusing the Exa API key when Exa is also the search engine. [Commit](https://github.com/open-webui/open-webui/commit/09dcb6088720d6df8dbd35c0e40b5c7dbc8f6c1b) +- ๐Ÿ’ก **Custom parameter suggestions.** Custom parameter fields now suggest common parameter names such as reasoning_effort, service_tier, num_ctx or response_format as you type, along with typical values for many of them, and a new row starts empty instead of with a placeholder name. [Commit](https://github.com/open-webui/open-webui/commit/10fdca6e36fd616d611cadbf95aee956eb823ca2) +- ๐Ÿ“‡ **Faster knowledge pages on PostgreSQL.** Opening a knowledge base on PostgreSQL no longer scans the whole file table to find files still being processed, which with many large files could take seconds per page load and slow the database for everyone; a new index covers that lookup and is created by a migration. [Commit](https://github.com/open-webui/open-webui/commit/e1bbc859f19aa5c88e9ed857a32303b101d2119b), [#30003](https://github.com/open-webui/open-webui/issues/30003) +- ๐Ÿ”„ **General improvements.** Various improvements were implemented across the application to enhance performance, stability, and security. +- ๐ŸŒ **Translation updates.** Translations for German, Italian, Turkish, Persian, Indonesian, Catalan, French, Malay, Simplified Chinese, Hindi, Japanese, Romanian, Czech, Slovenian, Croatian, Slovak, Dutch, Hungarian, Tamil, Spanish, Vietnamese, Norwegian Bokmรฅl, Hebrew, Greek, Lithuanian, Korean, Canadian French, Swedish, Portuguese (Portugal), Brazilian Portuguese, Thai, Estonian, Russian, Bosnian, Ukrainian, Basque, Bulgarian, Azerbaijani, Danish, Irish, Finnish, Bengali, Latvian, Traditional Chinese, Polish, Georgian and Galician were enhanced and expanded. + +### Fixed + +- ๐Ÿ›ก๏ธ **Security Advisory**: This release includes security and access-control fixes. We recommend updating production deployments at your earliest convenience. Not all security fixes in this version may be enumerated in the fixed section. Some may be withheld for a short time to give administrators time to upgrade. [Advisories](https://github.com/open-webui/open-webui/security) +- ๐Ÿšท **Revoked access ends live updates.** Removing someone's access to a shared channel or a note, or deleting it, now also stops the live messages and edits their open sessions were still receiving from it. [Commit](https://github.com/open-webui/open-webui/commit/e93a59f4dd8eea5b1df55b4e6dcc57465887b95d) +- ๐Ÿ“„ **Docling file names.** A document sent to a Docling server for extraction now carries only its file name, where it previously revealed the full path the file is stored under on the server. [#30357](https://github.com/open-webui/open-webui/pull/30357), [#30352](https://github.com/open-webui/open-webui/issues/30352) +- ๐Ÿ”’ **Share links of deleted folders.** Deleting a folder together with its chats now also removes those chats' share links, where the shared conversations stayed reachable through them. [#31306](https://github.com/open-webui/open-webui/pull/31306), [#31305](https://github.com/open-webui/open-webui/issues/31305) +- ๐Ÿ™ˆ **Admin chat access setting enforced everywhere.** With "ENABLE_ADMIN_CHAT_ACCESS" turned off, administrators can no longer read, change, share, clone, delete, message into or attach other users' chats through direct API requests, where only opening them was refused. [#31416](https://github.com/open-webui/open-webui/pull/31416), [#31413](https://github.com/open-webui/open-webui/issues/31413) +- ๐Ÿ‘ฅ **Direct message members.** The person who started a direct message can no longer add or remove people through the API, where someone added this way could read the whole earlier conversation and the original pair ended up in a second, empty direct message. [#31575](https://github.com/open-webui/open-webui/pull/31575), [#31570](https://github.com/open-webui/open-webui/issues/31570) +- ๐Ÿ“ก **Channels permission for live messages and automations.** Users without the Channels permission no longer receive live channel messages, and an automation that posts into a channel no longer runs once its creator has lost that permission. [#31578](https://github.com/open-webui/open-webui/pull/31578), [#31577](https://github.com/open-webui/open-webui/pull/31577) +- ๐Ÿซฅ **Temporary chats leave no sub-agent chats.** Temporary chats no longer offer the model sub-agents or timers, whose conversations were saved on the server although a temporary chat should leave nothing behind. [#31573](https://github.com/open-webui/open-webui/pull/31573), [#31567](https://github.com/open-webui/open-webui/issues/31567) +- ๐Ÿงพ **Passwords kept out of the audit log.** With request auditing on, every field whose name ends in "password" is now masked in both logged requests and logged responses, including admin settings such as YaCy, Jupyter and the LDAP Application DN Password, and passwords containing a double quote, where only fields named exactly "password" in requests were masked and only up to the first quote. [#31622](https://github.com/open-webui/open-webui/pull/31622), [#31659](https://github.com/open-webui/open-webui/pull/31659) +- ๐Ÿ‘๏ธ **Cloning shared chats checks access first.** Cloning a shared chat now checks access to the share before its content is read, the same order the shared chat view uses. [#30388](https://github.com/open-webui/open-webui/pull/30388) +- ๐Ÿ“ **Files attached to folders.** Files attached to a folder when it is created, or newly added by someone editing a shared folder, are now checked against that person's own access, so a folder can no longer be used to reach files they cannot open. [#30442](https://github.com/open-webui/open-webui/pull/30442) +- ๐Ÿšช **Removed channel members stop receiving messages.** Removing someone from a group channel now also disconnects their open sessions from it, so they stop receiving its live messages right away. [#30446](https://github.com/open-webui/open-webui/pull/30446) +- ๐Ÿ—๏ธ **Stronger generated secret key.** The secret key Open WebUI generates when "WEBUI_SECRET_KEY" is not set now comes from a cryptographically secure random source. [#30441](https://github.com/open-webui/open-webui/pull/30441) +- ๐ŸŒ **Wildcard searches on SQLite.** Searches on SQLite can no longer tie up the server with a search term full of wildcards, which could make matching take exponentially long. [#30393](https://github.com/open-webui/open-webui/pull/30393) +- ๐ŸŒ€ **Message cleanup for background tasks.** Cleaning details blocks and images out of messages before titles, tags and follow-ups are generated can no longer stall on crafted message content. [#30394](https://github.com/open-webui/open-webui/pull/30394) +- ๐Ÿ—ƒ๏ธ **Live document saves limited to notes.** Live collaborative edits are now only saved for note documents, the only documents that have a save handler. [#30395](https://github.com/open-webui/open-webui/pull/30395) +- ๐Ÿ›‘ **Sub-agent results after a role change.** A chat now only continues with a finished sub-agent's result while its owner still has an active role, the same check timers already make, so a deactivated or pending account no longer keeps generating replies. [#31451](https://github.com/open-webui/open-webui/pull/31451) +- ๐Ÿ”— **Only safe file links open.** File attachment links and file links in code execution results now open only web, mail, phone and relative links, the same check links in chat messages go through. [#31491](https://github.com/open-webui/open-webui/pull/31491) +- ๐ŸŽ›๏ธ **Tool approval mode no longer restored from drafts.** Restoring a saved message draft no longer switches the chat's tool approval mode, which could save settings and approve tools without asking. [Commit](https://github.com/open-webui/open-webui/commit/332237662f446f8264cd4db10a1b4513ba5fb76b) +- ๐Ÿงฑ **Safety checks for generated image downloads.** When an image generation backend returns a link instead of the image, the download now goes through the same safety checks as other external image downloads, while links on the configured ComfyUI address stay trusted. [#31623](https://github.com/open-webui/open-webui/pull/31623) +- ๐ŸŽซ **Login check when loading the app settings.** Loading the app's settings now uses the same login check as every other request, so a session that is no longer valid only gets the logged-out settings. [#31621](https://github.com/open-webui/open-webui/pull/31621) +- ๐Ÿ“ **Notes permission for live note editing.** Opening a note for live collaborative editing now requires the Notes permission, like the rest of the Notes feature. [#31552](https://github.com/open-webui/open-webui/pull/31552) +- ๐Ÿ“† **Calendar tools check calendar access.** Editing or deleting a calendar event through the chat tools now checks access to the event's calendar the same way the calendar API does. [#31537](https://github.com/open-webui/open-webui/pull/31537) +- ๐Ÿ“ž **Voice mode permission applies to call links.** Opening a chat with "?call=true" in the URL now respects the "Allow Call" permission and the same checks as the Voice mode button, so it no longer starts a voice call for users without that permission, with several models selected or with the Web API speech-to-text engine. [#31826](https://github.com/open-webui/open-webui/pull/31826), [#31825](https://github.com/open-webui/open-webui/issues/31825) +- ๐Ÿ”’ **Password changes sign out everywhere without Redis.** Changing a password, by the user or an administrator, now signs that account out on every device even on installations without Redis, where existing sessions stayed valid until they expired. [Commit](https://github.com/open-webui/open-webui/commit/24e30d1cbdaab624dfe20f479f805e6791cf0226) +- โ›“๏ธ **Live connections end with the session.** A browser's live connection is now checked every 30 seconds and closed once its sign-in has been revoked or has expired, where it kept receiving updates. [Commit](https://github.com/open-webui/open-webui/commit/24e30d1cbdaab624dfe20f479f805e6791cf0226) +- ๐Ÿค **Sign-in requests kept out of the audit log.** With request auditing on, the bodies of authentication and OAuth requests and their responses, such as sign-in, password changes and API key creation, are no longer written to the audit log. [Commit](https://github.com/open-webui/open-webui/commit/24e30d1cbdaab624dfe20f479f805e6791cf0226) +- ๐Ÿ›‚ **Forwarded headers trust for open-webui serve.** Starting Open WebUI with "open-webui serve" or "open-webui dev" now honors "FORWARDED_ALLOW_IPS", where it trusted forwarded headers from every connection regardless of the setting. [Commit](https://github.com/open-webui/open-webui/commit/24e30d1cbdaab624dfe20f479f805e6791cf0226) +- ๐Ÿค– **Automation and sub-agent access ends with the account's sessions.** Signing an account out of every device, for example by changing its password, now also cuts off its running automations and sub-agents, whose access stayed valid for up to an hour. [Commit](https://github.com/open-webui/open-webui/commit/24e30d1cbdaab624dfe20f479f805e6791cf0226) +- ๐Ÿชช **Token exchange group mapping.** With OAuth group mapping on, signing in through token exchange now assigns groups from the token's own groups claim when the provider's user info leaves it out, as it already did for roles. [Commit](https://github.com/open-webui/open-webui/commit/f412538756f745b531036840bc0a153e62b0f003) +- ๐Ÿค **Sharing a shared folder.** Only a folder's owner or an administrator can now change who a folder is shared with, where anyone with write access to it could also share it with other people or groups. [Commit](https://github.com/open-webui/open-webui/commit/8145774e329c7174437944b1dd361fef9a50639a) +- ๐Ÿ•ต๏ธ **Shared chats keep the owner's settings private.** Opening a chat shared with you, by link or through a shared folder, no longer hands you the owner's chat settings such as the system prompt and other parameters, chosen tools, filters and tool servers, filled-in chat variables or message details, and cloning a shared chat no longer copies the owner's chat variables or files the clone under the owner's folder. [Commit](https://github.com/open-webui/open-webui/commit/de73bb830aeb150bc5bb4707566d3969f70408b0) +- ๐Ÿ›ƒ **Administrators read other users' chats without writing to them.** With "ENABLE_ADMIN_CHAT_ACCESS" on, administrators can now only read other users' chats, where they could also send messages into them, stop their replies or answer their tool approvals through direct API requests even though the chat page only showed them read only. [Commit](https://github.com/open-webui/open-webui/commit/6cfd6987e5b220040c2e476105779dcc10d3d14b) +- ๐Ÿ—’๏ธ **Notes switch applies to the notes API.** Turning Notes off with "ENABLE_NOTES" or in Admin Settings now also refuses every notes API request, where it only hid notes in the interface and anyone with the notes permission could still create, read, change and delete notes through the API. [Commit](https://github.com/open-webui/open-webui/commit/83acd08697d2985e3da03b20e3c8119c958d32d7), [#31414](https://github.com/open-webui/open-webui/issues/31414) +- ๐ŸŽฃ **Links no longer act on your behalf without asking.** Opening Open WebUI from a link, including from another website or a hidden frame, can no longer act in your name unseen: a prompt given with "?q=" is only filled into the message box instead of being sent, loading web pages or videos with "load-url" or "youtube" and starting a voice call with "call=true" or "voice=true" now ask for confirmation first, and links that create a note with a title and content now ask before creating it. [Commit](https://github.com/open-webui/open-webui/commit/91853205e817b0234fb3038f06cddf669ec7d335), [Commit](https://github.com/open-webui/open-webui/commit/0ffd86967fd2e5a537f69934b13c899b7f5c6f32) +- ๐Ÿ•ถ๏ธ **Enforced temporary chats hold on every route.** Users with Enforce Temporary Chat can no longer save chats by calling the chat API directly or through import, clone and fork, where only the web interface stopped them; admins are not affected and existing chats still open. [Commit](https://github.com/open-webui/open-webui/commit/d04f78b3bfbeca383d78830391faa9639554fae4), [#31633](https://github.com/open-webui/open-webui/issues/31633) +- ๐Ÿ‘‘ **First admin keeps its protection.** On Postgres, an account created in the same second as the first admin, as happens when a script sets up an instance, can no longer be taken for the primary admin, which let other admins demote or delete the real first admin and made that account impossible to edit, lock or delete. [#32157](https://github.com/open-webui/open-webui/pull/32157) +- โœ‹ **Tool approval in temporary chats.** With tool approval set to ask, tools called in a temporary chat now wait for an Allow or Deny dialog, where they ran without asking although the menu showed approval as on. [Commit](https://github.com/open-webui/open-webui/commit/82f142d376f8b2c83153607fd18ecff467e10c30), [#29249](https://github.com/open-webui/open-webui/issues/29249) +- ๐Ÿชฃ **Limits for collaborative note editing.** Live collaborative editing now keeps a size budget per document and a limit on open documents per connection and stores only well-formed updates, so a client can no longer make the server hold unbounded editing data. [#31603](https://github.com/open-webui/open-webui/pull/31603) +- ๐Ÿ—ฃ๏ธ **Interface language detection.** Browsers reporting a bare or regional language code, such as German, Dutch or Polish in Firefox and Japanese or Latin American Spanish in Chrome, get the matching translation again, where 0.11.4 fell back to English. [#30377](https://github.com/open-webui/open-webui/pull/30377) +- ๐Ÿ”‘ **OAuth sessions survive parallel requests.** Chatting through a connection that forwards your single sign-on token no longer logs your OAuth session out when two requests renew an expiring token at once against a provider that rotates refresh tokens, including requests handled by different workers or replicas sharing Redis, which previously cost every following request its token until you signed in again. [#30426](https://github.com/open-webui/open-webui/pull/30426), [#30450](https://github.com/open-webui/open-webui/pull/30450), [#30416](https://github.com/open-webui/open-webui/issues/30416) +- ๐Ÿงฑ **Blocked OAuth groups not created.** With automatic group creation on, groups matching "OAUTH_BLOCKED_GROUPS" are no longer created at sign-in, where a provider sending a user's full directory membership could fill the groups list with thousands of empty groups. [#31316](https://github.com/open-webui/open-webui/pull/31316), [#29558](https://github.com/open-webui/open-webui/issues/29558) +- โฐ **Automations on Windows with PostgreSQL.** Automations can be created, edited and run again on Windows servers using PostgreSQL, where 0.11.4 rejected every schedule with an error and the scheduler failed on each tick. [#30424](https://github.com/open-webui/open-webui/pull/30424), [#30400](https://github.com/open-webui/open-webui/issues/30400) +- ๐Ÿค– **Automations keep their model's tools.** The first automation run after a restart now uses its model's tools, MCP servers, default features and filters, where it previously ran without them and a channel automation showed the model ID instead of its name. [#30379](https://github.com/open-webui/open-webui/pull/30379), [#27694](https://github.com/open-webui/open-webui/issues/27694) +- ๐Ÿ•ฐ๏ธ **Last run after Run now.** Running an automation with Run now now updates its last run time on the automation page and in the Automations list right away, where they kept showing "Last run Never" or the last scheduled run. [#31583](https://github.com/open-webui/open-webui/pull/31583), [#31580](https://github.com/open-webui/open-webui/issues/31580) +- โฒ๏ธ **Failed timers show their error.** A timer that fails before the model starts answering, for example because its model was removed, now shows the error in its reply, where the chat kept a blank reply that looked stuck. [#31483](https://github.com/open-webui/open-webui/pull/31483), [#31481](https://github.com/open-webui/open-webui/issues/31481) +- ๐Ÿ’ป **Skills from personal terminals.** Skills and the AGENTS.md instructions file from a terminal you added in your own settings are now read through your browser, so they reach the model even when only your browser can reach that terminal, such as one running on your own machine. [Commit](https://github.com/open-webui/open-webui/commit/7ad0ae46873511723f59c7f78bfd59f7c3982e1f), [#30410](https://github.com/open-webui/open-webui/issues/30410) +- ๐Ÿช† **Sub-agents get personal tools.** Sub-agents and chats resuming after a tool approval now get the same personal tool servers, such as Open Terminal, as the main model, where they received none of them. [#31424](https://github.com/open-webui/open-webui/pull/31424), [#29893](https://github.com/open-webui/open-webui/issues/29893) +- ๐Ÿชƒ **Background replies show up live.** When a background sub-agent finishes or a timer goes off, its result and the model's follow-up reply now appear in the open chat right away, where they only showed after a page reload. [#31576](https://github.com/open-webui/open-webui/pull/31576), [#31566](https://github.com/open-webui/open-webui/issues/31566) +- ๐ŸŒฟ **One branch with background sub-agents.** When a background sub-agent finishes while the answer that started it is still being written, its report now follows that answer, where the chat switched to another branch that hid the latest question and answer and the model replied without seeing them. [#31557](https://github.com/open-webui/open-webui/pull/31557), [#31507](https://github.com/open-webui/open-webui/issues/31507) +- โœ… **Approving several tool calls at once.** With tool approval set to ask, every tool the model calls in one turn now gets its own approval card in turn, where only the first did and the others stayed on "Executing..." forever. [#31315](https://github.com/open-webui/open-webui/pull/31315), [#29293](https://github.com/open-webui/open-webui/issues/29293) +- ๐Ÿ” **Approved tool results kept.** With tool approval set to ask, the result of an approved tool call now stays in the chat once the reply finishes, so the model still sees it in later turns and a second tool call no longer sends the first back to waiting for approval and runs it again. [#31502](https://github.com/open-webui/open-webui/pull/31502) +- ๐Ÿ—ฃ๏ธ **System prompt after a tool approval.** With tool approval set to ask, the request sent after approving a tool call now carries the system prompt and, in a compacted chat, the conversation summary instead of the whole history, taking the prompt from the chat Controls, then your personal settings, then the admin default; a system prompt sent only in an API request is still not kept. [#31501](https://github.com/open-webui/open-webui/pull/31501), [#31499](https://github.com/open-webui/open-webui/issues/31499) +- ๐ŸŽฏ **Skills from the / menu.** A skill picked from the / menu in the chat input is now applied to the reply the same way as one picked from the $ menu, where it was inserted as a mention and never loaded. [#31429](https://github.com/open-webui/open-webui/pull/31429), [#29978](https://github.com/open-webui/open-webui/issues/29978) +- โ™ป๏ธ **Skill toggles reach the chat.** Turning a skill on or off in the workspace now updates the skill menu in chat right away, where the old list stayed until a page reload. [#30966](https://github.com/open-webui/open-webui/pull/30966), [#30965](https://github.com/open-webui/open-webui/issues/30965) +- ๐ŸชŸ **Terminal instructions on Windows hosts.** The AGENTS.md file in the home folder of a terminal running on Windows now reaches the model, where it was skipped because the Windows home path was not recognized. [#31342](https://github.com/open-webui/open-webui/pull/31342), [#31340](https://github.com/open-webui/open-webui/issues/31340) +- โš™๏ธ **Settings labels on reload.** Settings labels no longer turn into raw keys such as "settings.admin.connections.title" from the second page load on. [#30354](https://github.com/open-webui/open-webui/pull/30354), [#30348](https://github.com/open-webui/open-webui/issues/30348) +- ๐Ÿง  **Ollama system prompt after tool calls.** With native function calling on an Ollama model, the model's system prompt now stays in place after a tool result, so the final answer follows the model's instructions again. [#30375](https://github.com/open-webui/open-webui/pull/30375), [#30161](https://github.com/open-webui/open-webui/issues/30161) +- ๐Ÿงฐ **Chats recover from broken tool history.** A chat where a tool call was saved without its result, or a result without its call, no longer fails on every following message with Anthropic and Bedrock models, because such unmatched pieces are now left out of what is sent to the model. [#31431](https://github.com/open-webui/open-webui/pull/31431), [#28937](https://github.com/open-webui/open-webui/issues/28937) +- ๐Ÿ“Œ **Attached files after context compaction.** With native function calling, files attached to a message now stay tied to that message after older messages are compacted and after a tool approval, where the model could be handed an older file's reference or none at all for a new upload. [Commit](https://github.com/open-webui/open-webui/commit/af6b82a18cc058b43ca1dc13ccf970f242e39a78), [#31411](https://github.com/open-webui/open-webui/issues/31411) +- ๐Ÿงฏ **Responses API errors kept.** Errors from providers on connections set to the Responses API now appear in the chat and are still there after a reload, where some never showed at all and others vanished and left an empty reply. [#31439](https://github.com/open-webui/open-webui/pull/31439), [#31433](https://github.com/open-webui/open-webui/issues/31433) +- ๐Ÿ”ก **Missing space after thinking.** Reasoning model answers no longer lose a space right after the thinking block, where "The answer is 4." could be shown and saved as "The answeris 4.". [#31438](https://github.com/open-webui/open-webui/pull/31438), [#31435](https://github.com/open-webui/open-webui/issues/31435) +- ๐Ÿ **Stray end of solution marker.** Replies from models that wrap their answer in solution markers no longer show the closing marker, and text written after it appears as a normal part of the reply. [#31436](https://github.com/open-webui/open-webui/pull/31436), [#31434](https://github.com/open-webui/open-webui/issues/31434) +- ๐Ÿ”ญ **Thinking indicator after tool calls.** A group of collapsed steps in a reply now shows "Exploring" with a spinner while the model is still thinking inside it, such as after a tool call, where it already read "Explored" and the chat looked stuck. [Commit](https://github.com/open-webui/open-webui/commit/19957bc19b769388a61bc9ebd7322deb006ddd62), [#29531](https://github.com/open-webui/open-webui/issues/29531) +- ๐Ÿ“ **Output limit for Ollama through the API.** A "max_tokens" value sent through the API to an Ollama model now limits the reply length and overrides the value saved in the model's advanced parameters, where Ollama ignored it and replies ran to full length. [#31437](https://github.com/open-webui/open-webui/pull/31437), [#31432](https://github.com/open-webui/open-webui/issues/31432) +- ๐Ÿฆ™ **Ollama connection headers and sign-in everywhere.** An Ollama connection's custom headers, authentication type and cookie forwarding now apply to every request, including checking the connection, loading, uploading, downloading and unloading models and the Manage Ollama dialog, so Ollama servers behind gateways such as Cloudflare Access work throughout and no key is sent when the authentication type is None, which also applies to unloading models from llama.cpp connections. [Commit](https://github.com/open-webui/open-webui/commit/bc2416c5db5f5268de0f97730c5a51f55018837a), [#29868](https://github.com/open-webui/open-webui/issues/29868), [#31489](https://github.com/open-webui/open-webui/pull/31489), [#31487](https://github.com/open-webui/open-webui/issues/31487), [#31490](https://github.com/open-webui/open-webui/pull/31490) +- ๐Ÿ“ธ **MCP tool images reach the model.** An image returned by an MCP tool, such as a camera snapshot, is now handed to the model as well as shown in the tool call, so the model can answer about what it shows. [#30358](https://github.com/open-webui/open-webui/pull/30358), [#30327](https://github.com/open-webui/open-webui/issues/30327) +- ๐Ÿ” **MCP OAuth scopes.** MCP tool servers using OAuth with dynamic client registration, such as Atlassian and Notion, now receive the scopes they need so tool calls work after connecting, and connections set up earlier recover them without registering again. [#30384](https://github.com/open-webui/open-webui/pull/30384), [#29967](https://github.com/open-webui/open-webui/issues/29967) +- ๐Ÿ’ฝ **Leaner storage of MCP media.** Images and audio returned by MCP tools are no longer saved a second time inside the database, which kept growing it with every such result. [#30419](https://github.com/open-webui/open-webui/pull/30419), [#30411](https://github.com/open-webui/open-webui/issues/30411) +- โŒ› **MCP tool call timeout.** MCP tool calls now stop after the time set in "AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER", or "AIOHTTP_CLIENT_TIMEOUT" when that is unset, and the model sees the timeout as a tool error, where a hung MCP server kept the chat waiting until the connection was closed. [#31641](https://github.com/open-webui/open-webui/pull/31641), [#31640](https://github.com/open-webui/open-webui/issues/31640) +- ๐Ÿ”” **Webhook chat links.** The link in "chat finished" and "chat failed" webhook notifications opens the chat again, where the missing "/c/" part of the address led to a 404 page. [#31572](https://github.com/open-webui/open-webui/pull/31572), [#31565](https://github.com/open-webui/open-webui/issues/31565) +- ๐ŸŽ™๏ธ **Voice calls recover from speech failures.** When the text-to-speech provider fails during a voice call, the call now shows the provider's error once and goes back to listening, where it previously hung in "speaking" with no sound until tapped. [#30372](https://github.com/open-webui/open-webui/pull/30372), [#30052](https://github.com/open-webui/open-webui/issues/30052) +- ๐ŸŽง **Read Aloud on iPhone and iPad.** Replies read aloud automatically and voice calls now play sound on iOS and iPadOS, and a failed playback returns the speaker button to idle with an error message, where it previously stayed stuck in "speaking". [#30373](https://github.com/open-webui/open-webui/pull/30373), [#30262](https://github.com/open-webui/open-webui/issues/30262) +- ๐ŸŽค **Voice mode stops when leaving the chat.** Leaving a chat with voice mode active, for example to open the workspace or notes, now turns the microphone off, where it previously kept listening and sending what you said as prompts. [#30417](https://github.com/open-webui/open-webui/pull/30417), [#30405](https://github.com/open-webui/open-webui/issues/30405) +- ๐Ÿ”‡ **Mute shortcut during voice calls.** Pressing M during a voice call mutes the microphone after every turn again, where it previously typed an "m" into the chat box. [#30421](https://github.com/open-webui/open-webui/pull/30421), [#30406](https://github.com/open-webui/open-webui/issues/30406) +- ๐Ÿ“ **Folder clicks keep a chat's tools.** Clicking a folder name in the sidebar while a chat is open no longer swaps that chat's tools and skills for those of the folder's default model. [#30376](https://github.com/open-webui/open-webui/pull/30376), [#30226](https://github.com/open-webui/open-webui/issues/30226) +- ๐Ÿ—‚๏ธ **Blank folder names rejected.** Renaming or creating a folder with a name made only of spaces now shows "Folder name cannot be empty." instead of saving a blank name that made the folder and its chats disappear from the sidebar after a refresh. [#31380](https://github.com/open-webui/open-webui/pull/31380), [#31379](https://github.com/open-webui/open-webui/issues/31379) +- ๐Ÿ“ **Cleared chat system prompt.** Clearing a chat's own system prompt now falls back to your personal system prompt, where the chat was previously sent no system prompt at all. [#30333](https://github.com/open-webui/open-webui/pull/30333) +- ๐Ÿงฉ **Default features when comparing models.** Adding a second model to a chat keeps web search, image generation and code interpreter on when every selected model has them as default features, and the web search toggle now always matches what is actually sent. [#30383](https://github.com/open-webui/open-webui/pull/30383), [#30310](https://github.com/open-webui/open-webui/issues/30310) +- ๐ŸŒŠ **Per-chat streaming setting.** A chat's own Stream Chat Response setting in Controls now takes effect, where it was ignored whenever the account-wide setting was set. [#31362](https://github.com/open-webui/open-webui/pull/31362), [#31361](https://github.com/open-webui/open-webui/issues/31361) +- ๐Ÿ“ฌ **Send queue recovers.** Deleting or editing a queued message held back by a failed attachment now lets the rest of the queue send, where the chat's queue previously stayed stuck until the chat was reopened. [#30447](https://github.com/open-webui/open-webui/pull/30447), [#28880](https://github.com/open-webui/open-webui/issues/28880) +- โฉ **Send now on queued messages.** Clicking Send now on one queued message sends only that message, where it could send the whole queue at once and leave two replies mixed together in the chat until a reload. [Commit](https://github.com/open-webui/open-webui/commit/aea7d34f456e5a6621c7daa6e74a586c65488b45), [#30027](https://github.com/open-webui/open-webui/issues/30027) +- ๐Ÿ’ฒ **Clipboard variable keeps dollar signs.** The clipboard variable in prompts now pastes text exactly as copied, where a pair of dollar signs turned into one and broke shell commands and math formulas. [#31364](https://github.com/open-webui/open-webui/pull/31364), [#31363](https://github.com/open-webui/open-webui/issues/31363) +- ๐Ÿ… **Copied replies start unrated.** A reply saved as a copy no longer carries over the original's rating, so rating the copy no longer overwrites the original's feedback. [#30962](https://github.com/open-webui/open-webui/pull/30962), [#30961](https://github.com/open-webui/open-webui/issues/30961) +- ๐ŸŽญ **Artifacts pane after deleting a message.** Deleting the message holding the newest artifact while the artifacts pane shows it now moves the pane to the last remaining artifact, where it kept showing the deleted one with wrong version numbers. [#30435](https://github.com/open-webui/open-webui/pull/30435), [#30287](https://github.com/open-webui/open-webui/issues/30287) +- โญ **Default model kept on settings save.** Saving the Interface settings no longer replaces your chosen default model with the administrator's default or cuts a multi-model default down to its first model. [#30953](https://github.com/open-webui/open-webui/pull/30953), [#30952](https://github.com/open-webui/open-webui/issues/30952) +- ๐Ÿ‘† **Clicking outside menus.** Clicking outside the model selector or another open menu now only closes it, where the click also went through to whatever was underneath, such as a suggested prompt. [Commit](https://github.com/open-webui/open-webui/commit/8fc416ee78bd8264f7a716f147d4000c466ae646), [#29878](https://github.com/open-webui/open-webui/issues/29878) +- ๐Ÿ”Œ **Deleting a direct connection sticks.** Deleting one of your own direct connections in Settings is now saved right away, where it came back after a reload unless you also pressed Save. [#31384](https://github.com/open-webui/open-webui/pull/31384), [#31383](https://github.com/open-webui/open-webui/issues/31383) +- ๐Ÿงน **Add Connection form reset.** Adding several connections in a row no longer silently saves the advanced settings of the first one, such as its headers, provider and API type, with the next. [#30958](https://github.com/open-webui/open-webui/pull/30958), [#30957](https://github.com/open-webui/open-webui/issues/30957) +- โŒจ๏ธ **Ctrl+Enter to Send in channels.** With "Ctrl+Enter to Send" turned on, Enter in a channel or thread reply now starts a new line and Ctrl+Enter sends, where Enter always sent the message. [#31319](https://github.com/open-webui/open-webui/pull/31319), [#31318](https://github.com/open-webui/open-webui/issues/31318) +- ๐Ÿ“ฑ **Composer buttons at larger UI scale.** On phones with UI Scale at 1.2x or more, the + and Integrations buttons in the message input stay visible and tappable, with the model name shortened to make room. [#30374](https://github.com/open-webui/open-webui/pull/30374), [#29989](https://github.com/open-webui/open-webui/issues/29989) +- ๐Ÿ“ฅ **Imported chats marked as read.** Imported and cloned chats no longer show as unread in the sidebar or count toward folder unread badges. [#30754](https://github.com/open-webui/open-webui/pull/30754), [#30750](https://github.com/open-webui/open-webui/issues/30750) +- ๐Ÿชง **Chat title with title generation off.** With title generation turned off, a new chat now shows its first message as the title in the header and browser tab right away, where it showed "New Chat" until a reload and a note's chat panel showed the whole model reply as its title; a title that arrives before the new chat has finished opening is no longer dropped either. [#31355](https://github.com/open-webui/open-webui/pull/31355), [#31348](https://github.com/open-webui/open-webui/issues/31348), [Commit](https://github.com/open-webui/open-webui/commit/82b51813721d171f0e347c9348be1042f9b010e8), [#31492](https://github.com/open-webui/open-webui/issues/31492) +- ๐Ÿท๏ธ **Tags after bulk chat actions.** Unarchiving all chats now brings their tags back, and deleting all chats removes tags no longer used by any chat from the suggestions. [#30453](https://github.com/open-webui/open-webui/pull/30453), [#30452](https://github.com/open-webui/open-webui/issues/30452) +- ๐Ÿ”— **Share link access after relinking.** Deleting a shared chat's link and creating a new one without closing the Share dialog now shows the new link's own access, where the dialog kept showing the old link's setting such as Public. [#31037](https://github.com/open-webui/open-webui/pull/31037), [#31029](https://github.com/open-webui/open-webui/issues/31029) +- ๐Ÿ—จ๏ธ **Share dialog wording.** The Share dialog now says a new link stays private until you choose who can view it, where it claimed anyone with the URL could view the chat. [#31420](https://github.com/open-webui/open-webui/pull/31420), [#31417](https://github.com/open-webui/open-webui/issues/31417) +- ๐Ÿ–ฑ๏ธ **First click in dialogs opened from menus.** Menus such as the sidebar chat menu, the chat header menu, folder and note menus, the knowledge Add Content menu and the Actions menus now close when an item is picked, so the first click in the dialog it opens works, where buttons such as Copy Link and Confirm had to be clicked twice. [#31488](https://github.com/open-webui/open-webui/pull/31488), [Commit](https://github.com/open-webui/open-webui/commit/fdae17f8a6fc163f925b73286622eae32f029308), [#31486](https://github.com/open-webui/open-webui/issues/31486), [#31496](https://github.com/open-webui/open-webui/pull/31496), [#31493](https://github.com/open-webui/open-webui/issues/31493) +- ๐Ÿงฐ **Model menu actions in the model selector.** Picking Edit, Keep in Sidebar, Copy Link or Delete from the menu next to a model in the model selector works again, where the selector closed and the action never ran, and Edit and Delete now close the selector so the first click in the window they open is not lost. [#31503](https://github.com/open-webui/open-webui/pull/31503) +- โŒจ๏ธ **Enter after a smiley.** Pressing Enter now sends a message that ends in a smiley such as ":)" or in a word starting with ":", "/" or "#", where it did nothing because an empty suggestion list still held on to the key. [#31506](https://github.com/open-webui/open-webui/pull/31506), [#31504](https://github.com/open-webui/open-webui/issues/31504) +- ๐Ÿงช **Code Interpreter when switching chats.** Opening another chat from the sidebar now turns Code Interpreter off like web search and image generation, where it stayed on and was saved into the next chat's draft; a chat's own draft and a model's default features still decide. [#31500](https://github.com/open-webui/open-webui/pull/31500), [#31472](https://github.com/open-webui/open-webui/issues/31472) +- ๐Ÿ”Ž **Hybrid search on large Chroma collections.** Hybrid search over a knowledge base of more than about 32,000 chunks stored in Chroma now returns results, where it previously failed with "Error querying knowledge base". [#30368](https://github.com/open-webui/open-webui/pull/30368), [#30351](https://github.com/open-webui/open-webui/issues/30351) +- ๐Ÿงญ **Qdrant strict mode.** File uploads and hybrid search now work on Qdrant with strict mode enabled, where every upload after the first failed with "Limit exceeded" and hybrid search found nothing, and hybrid search now falls back to normal vector search whenever a collection cannot be read. [#31461](https://github.com/open-webui/open-webui/pull/31461), [#31460](https://github.com/open-webui/open-webui/pull/31460), [#31459](https://github.com/open-webui/open-webui/issues/31459) +- ๐ŸŽจ **Generated image formats.** Generated images that come back as JPEG or WebP are now saved, downloaded and served as what they are, where they were always labelled as PNG. [#30359](https://github.com/open-webui/open-webui/pull/30359), [#29948](https://github.com/open-webui/open-webui/issues/29948) +- โœ๏ธ **Shared knowledge file edits.** Users with write access to a shared knowledge base can now save edits to its files, where the editor reported success but the old content stayed in place. [#30448](https://github.com/open-webui/open-webui/pull/30448), [#30319](https://github.com/open-webui/open-webui/issues/30319) +- ๐Ÿ’ฏ **Relevance scores on knowledge tool citations.** Citations from knowledge and chat file searches made by the model through native function calling now show their relevance percentage, as the same sources already did with classic retrieval. [#31307](https://github.com/open-webui/open-webui/pull/31307), [#29776](https://github.com/open-webui/open-webui/issues/29776) +- ๐Ÿ”ค **Korean and Japanese text files.** Korean and Japanese text files in legacy encodings such as EUC-KR and Shift-JIS are now read correctly for chats and knowledge bases, where they were stored as garbled Chinese characters. [#31356](https://github.com/open-webui/open-webui/pull/31356), [#31352](https://github.com/open-webui/open-webui/issues/31352) +- ๐Ÿงต **Backslashes in HTML uploads.** Uploaded HTML files now keep their backslashes as written, where a path such as "C:\new\table" gained line breaks and one containing "C:\Users" failed to upload. [#31450](https://github.com/open-webui/open-webui/pull/31450), [#31440](https://github.com/open-webui/open-webui/issues/31440) +- ๐Ÿ **Code mentioning matplotlib.** Python code that only mentions matplotlib in a comment, a string or an availability check now runs, and the code editor's Python formatter works on code that imports it. [#30381](https://github.com/open-webui/open-webui/pull/30381), [#29894](https://github.com/open-webui/open-webui/issues/29894) +- ๐Ÿ–ผ๏ธ **ComfyUI Save Image (Advanced).** Images from ComfyUI workflows that end in the "Save Image (Advanced)" node, such as the Qwen Image Edit template, now appear in the chat for both generation and editing. [#30420](https://github.com/open-webui/open-webui/pull/30420), [#30404](https://github.com/open-webui/open-webui/issues/30404) +- ๐Ÿ•ธ๏ธ **Unreachable links named.** Attaching or adding a link that cannot be fetched, such as one whose server refuses the connection or returns an error page, now reports "Could not read content from" the link instead of a vague processing or knowledge base error. [#31351](https://github.com/open-webui/open-webui/pull/31351), [#31354](https://github.com/open-webui/open-webui/pull/31354), [#31347](https://github.com/open-webui/open-webui/issues/31347) +- ๐Ÿงพ **Document loader headers checked on save.** Invalid headers for the external document loader now show an error on save whichever extraction engine is selected, where they silently kept the documents settings from saving. [#30434](https://github.com/open-webui/open-webui/pull/30434), [#30294](https://github.com/open-webui/open-webui/issues/30294) +- ๐ŸŒ **Attach Webpage user agent.** Attaching a webpage now sends the configured "USER_AGENT" from the first request, so sites such as Wikipedia that block the default agent no longer fail with 403 Forbidden. [#30385](https://github.com/open-webui/open-webui/pull/30385), [#29617](https://github.com/open-webui/open-webui/issues/29617) +- โ˜๏ธ **Long non-Latin S3 file names.** Files stored on S3 with long names in scripts such as Cyrillic are now read correctly, so their content reaches the model instead of failing with "File name too long". [#30418](https://github.com/open-webui/open-webui/pull/30418), [#30409](https://github.com/open-webui/open-webui/issues/30409) +- ๐Ÿ“ˆ **Leaderboard chart for slashed model IDs.** The leaderboard activity chart now shows data for models whose ID contains a slash, such as Hugging Face models served through Ollama. [#30456](https://github.com/open-webui/open-webui/pull/30456), [#30455](https://github.com/open-webui/open-webui/issues/30455) +- ๐Ÿ‘ฅ **Admin user chat list after deletion.** Deleting a chat from a user's chat list in the admin panel no longer leaves the list empty. [#30604](https://github.com/open-webui/open-webui/pull/30604), [#30601](https://github.com/open-webui/open-webui/issues/30601) +- ๐Ÿ“‡ **User CSV import blank line.** Importing users from a CSV file that ends with a line break no longer reports the empty last line as an invalid row. [#31374](https://github.com/open-webui/open-webui/pull/31374), [#31373](https://github.com/open-webui/open-webui/issues/31373) +- ๐Ÿ› ๏ธ **Refused authentication settings.** When the server refuses a value on the admin authentication page, such as a JWT expiration without a time unit, the page now shows the value actually stored instead of the refused one. [#30433](https://github.com/open-webui/open-webui/pull/30433), [#30293](https://github.com/open-webui/open-webui/issues/30293) +- ๐ŸŸ๏ธ **Arena models after editing.** Editing an arena model in the admin models page, for example to set its tools, no longer removes its access settings and model pool, where non-admin users lost the arena model and its chats ignored the configured models. [#31309](https://github.com/open-webui/open-webui/pull/31309), [#29564](https://github.com/open-webui/open-webui/issues/29564) +- ๐Ÿ“… **Calendar event end moves with its date.** Changing a calendar event's date now moves its end along with it, where the end kept its old date and events could span several days or lose their duration. [#31303](https://github.com/open-webui/open-webui/pull/31303), [#31302](https://github.com/open-webui/open-webui/issues/31302) +- ๐Ÿ”‚ **Repeating events that started earlier.** A repeating calendar event that is still running when the visible dates begin, such as a weekly event from 23:00 to 01:00, now shows on the following day, where only the same event without a repeat did. [#31606](https://github.com/open-webui/open-webui/pull/31606), [#31605](https://github.com/open-webui/open-webui/issues/31605) +- ๐Ÿ“‹ **Copy buttons in account settings.** Copying your token or API key in the account settings no longer also saves the account form and any unsaved profile changes along with it. [#30956](https://github.com/open-webui/open-webui/pull/30956), [#30955](https://github.com/open-webui/open-webui/issues/30955) +- ๐Ÿšซ **Read-only prompt controls.** Prompts you can only read now show their edit, share, delete and enable controls in the workspace as unavailable, where they looked usable but could not be changed. [Commit](https://github.com/open-webui/open-webui/commit/ff89756b6dcafc129d29dea3c4a7c0f93ebc0895), [#30219](https://github.com/open-webui/open-webui/issues/30219) +- ๐Ÿ”ƒ **Model sync API on SQLite.** Syncing models through the API on a default SQLite setup now saves changes to existing models, where the request stalled and returned an empty list with "database is locked" in the log. [#31349](https://github.com/open-webui/open-webui/pull/31349), [#31346](https://github.com/open-webui/open-webui/issues/31346) +- ๐Ÿ˜ **Non-ASCII search on PostgreSQL.** Searching automations by a word from their prompt and filtering models or prompts by a tag now find non-ASCII words such as Chinese on PostgreSQL, where they found nothing. [#31423](https://github.com/open-webui/open-webui/pull/31423), [#31422](https://github.com/open-webui/open-webui/issues/31422) +- ๐Ÿ“จ **Anthropic Messages endpoint with empty tools.** Requests to the Anthropic-compatible Messages endpoint that send an empty or null tools list, as Claude Code does for text-only requests, no longer fail against backends such as vLLM and OpenAI. [#31343](https://github.com/open-webui/open-webui/pull/31343), [#31341](https://github.com/open-webui/open-webui/issues/31341) +- ๐Ÿšง **Failed streams on the Anthropic Messages endpoint.** A streamed request to the Anthropic-compatible Messages endpoint that fails partway now ends with an error, so clients such as Claude Code no longer take the cut-off answer as complete. [#31405](https://github.com/open-webui/open-webui/pull/31405), [#31403](https://github.com/open-webui/open-webui/issues/31403) +- ๐Ÿ“Š **Scrollable admin analytics.** The analytics tab in the admin settings now scrolls, so the full model and user ranking tables can be reached where their lower rows were cut off. [#30429](https://github.com/open-webui/open-webui/pull/30429), [#30428](https://github.com/open-webui/open-webui/issues/30428) +- ๐Ÿ• **Group filter on the hourly analytics chart.** The analytics chart for the last 24 hours now respects the selected group, where it counted every user's messages while the rest of the page was filtered. [#30978](https://github.com/open-webui/open-webui/pull/30978), [#30977](https://github.com/open-webui/open-webui/issues/30977) +- ๐Ÿ“œ **Title generation log noise.** Starting a new chat no longer writes a misleading "Error generating initial chat title" traceback to the server log. [#30356](https://github.com/open-webui/open-webui/pull/30356), [#30339](https://github.com/open-webui/open-webui/issues/30339) +- ๐Ÿ”ฒ **Full-screen chat input error.** Opening the full-screen chat input with text in it no longer throws an error in the browser console. [Commit](https://github.com/open-webui/open-webui/commit/b39abad5c28db8e69885b9fbc5f756ff74666a90), [#31465](https://github.com/open-webui/open-webui/issues/31465) +- ๐Ÿชช **Clear message for failed SSO sign-ins.** When signing in through an OAuth or OIDC provider fails, for example because access was denied, the account has no email or its email domain is not allowed, the login page now says the sign-in with the identity provider failed, where it claimed the email or password was wrong; the exact reason still goes to the server log. [#31629](https://github.com/open-webui/open-webui/pull/31629), [#31627](https://github.com/open-webui/open-webui/issues/31627) +- โœ๏ธ **Folder rename saves once.** Renaming a folder in the sidebar and pressing Enter now saves the name once and shows one confirmation, where it saved it twice. [#31584](https://github.com/open-webui/open-webui/pull/31584), [#31582](https://github.com/open-webui/open-webui/issues/31582) +- ๐Ÿ”ค **Non-English text in searches and size limits.** With "ENABLE_ORJSON" off, non-English letters are now saved as written instead of as escape codes, so case-insensitive searches such as model tag filters and automation search find them, and user and chat variables in Cyrillic or Chinese are no longer refused as too large at about a sixth of the 100,000 character limit; text saved earlier keeps the escape codes until it is next edited. [#31615](https://github.com/open-webui/open-webui/pull/31615) +- ๐Ÿ›ฐ๏ธ **Tool prompts across instances.** With "WEBSOCKET_MANAGER" set to redis and several instances or workers, a confirmation or input dialog from a tool or Function now receives the user's answer whichever instance the browser tab is connected to, where the tool waited until it timed out. [#31620](https://github.com/open-webui/open-webui/pull/31620) +- ๐ŸŒŠ **Code blocks fenced with tildes.** Code blocks fenced with ~~~ now show as code blocks with their language label and Copy button, where they were shown as a single line of plain text. [#31543](https://github.com/open-webui/open-webui/pull/31543), [#31542](https://github.com/open-webui/open-webui/issues/31542) +- ๐Ÿ—บ๏ธ **DEFAULT_LOCALE on the first visit.** A new visitor now gets the language set in "DEFAULT_LOCALE" again, where since 0.11.4 they always got their browser's language; a language picked in Settings or a ?lang= link still takes precedence. [#31551](https://github.com/open-webui/open-webui/pull/31551), [#31548](https://github.com/open-webui/open-webui/issues/31548) +- ๐Ÿ“‹ **Multi-line table cells in notes.** A note table cell with more than one line now stays inside its row in the note's Markdown download and its Chat panel, where the second line broke the row and shifted cells into other columns. [#31539](https://github.com/open-webui/open-webui/pull/31539), [#31538](https://github.com/open-webui/open-webui/issues/31538) +- ๐ŸŽฏ **Exact matches on Weaviate.** With Weaviate, a chunk identical to the query now scores 1 instead of 0, so perfect matches no longer land at the bottom of the results or fall below the relevance threshold. [#31531](https://github.com/open-webui/open-webui/pull/31531), [#31527](https://github.com/open-webui/open-webui/issues/31527) +- ๐Ÿ“ **Unpinning folder chats by dragging.** Dragging a pinned chat out of a folder onto Chats now unpins it, where it stayed pinned. [#31368](https://github.com/open-webui/open-webui/pull/31368), [#31367](https://github.com/open-webui/open-webui/issues/31367) +- ๐Ÿงฎ **jina-colbert-v2 reranker.** The jinaai/jina-colbert-v2 reranking model loads again on the current transformers release, and saving the Documents settings no longer quietly turns hybrid search off with it. [#31532](https://github.com/open-webui/open-webui/pull/31532), [#31522](https://github.com/open-webui/open-webui/issues/31522) +- ๐Ÿ” **New chat from the search dialog.** Starting a new conversation from the search dialog now sends the typed text unchanged, where everything from a # or & on was dropped and + turned into a space. [#31592](https://github.com/open-webui/open-webui/pull/31592), [#31469](https://github.com/open-webui/open-webui/issues/31469) +- ๐Ÿ“ˆ **OpenTelemetry logs sent once.** With "ENABLE_OTEL", "ENABLE_OTEL_TRACES" and "ENABLE_OTEL_LOGS" all on, each log line now reaches the collector once instead of twice, so "OTEL_PYTHON_LOG_AUTO_INSTRUMENTATION=false" is no longer needed as a workaround. [#31528](https://github.com/open-webui/open-webui/pull/31528), [#31524](https://github.com/open-webui/open-webui/issues/31524) +- ๐Ÿ“Ž **Large pastes in channels.** With Paste Large Text as File on, pasting more than 1,000 characters into a channel or thread now attaches it as a text file, where the text vanished. [#31366](https://github.com/open-webui/open-webui/pull/31366), [#31365](https://github.com/open-webui/open-webui/issues/31365) +- ๐Ÿ“‘ **Copy Last Code Block with Artifacts open.** The Copy Last Code Block shortcut now copies the last code block in the chat, where it copied the Artifacts pane's full HTML whenever the pane was open. [#31613](https://github.com/open-webui/open-webui/pull/31613), [#31476](https://github.com/open-webui/open-webui/issues/31476) +- ๐Ÿ—“๏ธ **Scheduled Tasks calendar run counts.** An automation limited to a number of runs now shows only the runs still to come in the Scheduled Tasks calendar, and very frequent schedules no longer show up short or empty. [#31604](https://github.com/open-webui/open-webui/pull/31604), [#31600](https://github.com/open-webui/open-webui/issues/31600) +- ๐Ÿ–ผ๏ธ **Pasted images in notes.** Images pasted into a note now stay when the note is cut and pasted, edited from its Chat panel or edited by a model, where they disappeared. [#31513](https://github.com/open-webui/open-webui/pull/31513), [#31512](https://github.com/open-webui/open-webui/issues/31512) +- ๐Ÿชข **SCIM group member links.** Members in SCIM group responses now carry the link to their user, where every member came back with "$ref": null. [#31529](https://github.com/open-webui/open-webui/pull/31529), [#31525](https://github.com/open-webui/open-webui/issues/31525) +- ๐Ÿ”‘ **Google MCP connections stay signed in.** MCP tool servers that sign in through Google, such as Google's Gmail, Drive and Calendar servers, now receive a refresh token, so the connection renews itself instead of being dropped about an hour after signing in; existing connections pick this up at the next sign-in. [#31395](https://github.com/open-webui/open-webui/pull/31395), [#28319](https://github.com/open-webui/open-webui/issues/28319) +- ๐Ÿˆณ **Input methods with a follow-up suggestion.** Typing with a Chinese, Japanese or Korean input method into the empty chat input while a suggested follow-up is shown as grey text now works, where iOS lost focus after the first character and Chromium left the first letter behind. [#31393](https://github.com/open-webui/open-webui/pull/31393), [#31372](https://github.com/open-webui/open-webui/issues/31372) +- โ๏ธ **Ejecting models over HTTPS.** Ejecting a model from the model selector on llama.cpp and Ollama connections served with a self-signed or internal certificate now follows "AIOHTTP_CLIENT_SESSION_SSL", where it failed with a certificate error. [#31391](https://github.com/open-webui/open-webui/pull/31391), [#31371](https://github.com/open-webui/open-webui/issues/31371) +- ๐Ÿงฉ **Tool HTML embeds with entities.** HTML embeds, arguments and file links from tools now show exactly what the tool returned, where an embed containing an entity such as " did not show at all and & or < were turned into real characters. [#31390](https://github.com/open-webui/open-webui/pull/31390), [#28085](https://github.com/open-webui/open-webui/issues/28085) +- ๐Ÿ‘ **Cloned chats in shared folders.** Cloning a chat in a folder shared with you with write access now keeps the clone in that folder, where it landed at the top of your chat list. [#31370](https://github.com/open-webui/open-webui/pull/31370), [#31369](https://github.com/open-webui/open-webui/issues/31369) +- โ†ฉ๏ธ **Pending reply when switching channels.** Switching to another channel now drops a reply you had started, where it carried over, failed to send and left a faded copy behind. [#31376](https://github.com/open-webui/open-webui/pull/31376), [#31375](https://github.com/open-webui/open-webui/issues/31375) +- ๐Ÿ’พ **Connection dialog after a Headers error.** The connection dialog's Save button works again after an invalid Headers error, where it stayed disabled until the page was reloaded. [#31378](https://github.com/open-webui/open-webui/pull/31378), [#31377](https://github.com/open-webui/open-webui/issues/31377) +- ๐ŸŽจ **Invalid image Additional Parameters.** Saving the Images settings with invalid JSON in the Additional Parameters for OpenAI or AUTOMATIC1111 now shows an error, where Save kept spinning. [#31382](https://github.com/open-webui/open-webui/pull/31382), [#31381](https://github.com/open-webui/open-webui/issues/31381) +- ๐Ÿ—’๏ธ **Read-only notes in the chat's note picker.** Searching the note picker in a chat now finds notes shared with you read only, where they disappeared as soon as you typed. [#30968](https://github.com/open-webui/open-webui/pull/30968), [#30967](https://github.com/open-webui/open-webui/issues/30967) +- โ™ป๏ธ **Editing a repeating event from a later occurrence.** Opening a repeating calendar event from a later occurrence and saving it now keeps the series' own start date, where it moved the start to the clicked occurrence and deleted every earlier one. [#30971](https://github.com/open-webui/open-webui/pull/30971), [#30970](https://github.com/open-webui/open-webui/issues/30970) +- ๐Ÿชจ **OpenAI models on Amazon Bedrock.** GPT-5.6 and GPT-6 models on an Amazon Bedrock OpenAI-compatible connection, with ids such as us.openai.gpt-6-sol, now receive their token limit as max_completion_tokens, where Bedrock rejected every request with a token limit, including title and emoji generation. [#30976](https://github.com/open-webui/open-webui/pull/30976), [#30510](https://github.com/open-webui/open-webui/issues/30510) +- ๐Ÿ’ฌ **Readable mention notifications.** Notifications for channel messages that mention a user or channel now show the mention as it appears in the channel, such as "@Alex", where they showed the raw mention markup with the internal id. [#31601](https://github.com/open-webui/open-webui/pull/31601), [#31586](https://github.com/open-webui/open-webui/issues/31586) +- ๐ŸŽน **Enter in the search dialog.** Pressing Enter on a highlighted chat in the search dialog now opens it, where the dialog only closed. [#31004](https://github.com/open-webui/open-webui/pull/31004), [#31003](https://github.com/open-webui/open-webui/issues/31003) +- ๐Ÿช„ **Artifact preview stays open.** The artifact preview no longer closes right after opening on its own, which happened now and then in any chat and every time a filter function wrote part of the reply before the model answered. [#31653](https://github.com/open-webui/open-webui/pull/31653), [#31652](https://github.com/open-webui/open-webui/pull/31652), [#31643](https://github.com/open-webui/open-webui/issues/31643) +- ๐Ÿ“ธ **iPhone photos with vision models.** HEIC and HEIF photos from iPhones are now converted and uploaded as JPEG in chats, channels and notes whatever type the browser reports, where Firefox and some other browsers uploaded them as HEIC and vision models failed with an error. [#31649](https://github.com/open-webui/open-webui/pull/31649), [#28411](https://github.com/open-webui/open-webui/issues/28411) +- ๐Ÿ“ฆ **New files in shared chats.** Files attached to a message together with a file already in the chat now open in shared copies of the chat, where none of the new files were recorded and people opening the shared chat could not open them. [#31650](https://github.com/open-webui/open-webui/pull/31650), [#31648](https://github.com/open-webui/open-webui/issues/31648) +- ๐ŸŽญ **Pages with several main sections in the Playwright loader.** The Playwright web loader now reads the whole page when it has more than one main section, such as Ubiquiti tech specs pages, where it returned only the site menu and lost the actual content. [#31644](https://github.com/open-webui/open-webui/pull/31644), [#28643](https://github.com/open-webui/open-webui/issues/28643) +- ๐Ÿ“ฑ **No keyboard popping up from menus on phones.** Closing the Integrations menu or opening a dropdown in the automation dialog on a phone no longer brings up the on-screen keyboard. [#31657](https://github.com/open-webui/open-webui/pull/31657), [#31656](https://github.com/open-webui/open-webui/issues/31656) +- ๐Ÿ€„ **Chinese punctuation in uploaded files.** Text extracted from uploaded files now keeps full-width punctuation such as ๏ผš๏ผˆ๏ผ‰๏ผŒ๏ผ๏ผŸ and curly quotes as written, where they were turned into their ASCII forms in the file preview and in what the model saw; files uploaded earlier keep the altered text until they are uploaded again. [#31655](https://github.com/open-webui/open-webui/pull/31655), [#17087](https://github.com/open-webui/open-webui/issues/17087) +- ๐Ÿ—‚๏ธ **Sub-agents in folder chats.** Sub-agents started from a chat in a folder with knowledge attached are now limited to that folder's knowledge like the chat itself, where they could list and search every knowledge base you can read. [#31574](https://github.com/open-webui/open-webui/pull/31574), [#31569](https://github.com/open-webui/open-webui/issues/31569) +- ๐Ÿ’ธ **Prompt caching across consecutive tool calls.** When a model calls one tool after another with no text in between, the earlier messages now stay identical from one request to the next, so the provider's prompt cache keeps matching instead of missing for the rest of the chat. [#31593](https://github.com/open-webui/open-webui/pull/31593), [#31588](https://github.com/open-webui/open-webui/issues/31588) +- ๐Ÿงบ **Edited knowledge files on Elasticsearch.** With Elasticsearch as the vector database, editing a knowledge file now removes its old text from search, where chats and searches kept returning the old text next to the new. [#31530](https://github.com/open-webui/open-webui/pull/31530), [#31523](https://github.com/open-webui/open-webui/issues/31523) +- ๐Ÿ˜ **External pgvector knowledge bases.** External knowledge bases on the pgvector provider return results again, where every search failed with "operator does not exist: vector <=> double precision[]" and the knowledge base looked empty. [#31112](https://github.com/open-webui/open-webui/pull/31112), [#26663](https://github.com/open-webui/open-webui/issues/26663) +- ๐Ÿ“ข **Added channel members see the channel right away.** Someone added to a group channel or direct message now sees it appear in their sidebar and receives its new messages, edits, pins and reactions live, where nothing showed until they reloaded the page. [#31113](https://github.com/open-webui/open-webui/pull/31113), [#30432](https://github.com/open-webui/open-webui/issues/30432) +- ๐Ÿ†˜ **Custom model fallback in the web UI.** With "ENABLE_CUSTOM_MODEL_FALLBACK" on, chats sent from the web UI with a workspace model whose base model is gone are now answered by the first default model, where they failed with "Model not found". [#31353](https://github.com/open-webui/open-webui/pull/31353), [#31345](https://github.com/open-webui/open-webui/issues/31345) +- ๐Ÿ‘ฏ **Duplicate files in knowledge batch add.** Adding files to a knowledge base in a batch now rejects a file whose text is already in it, the same way adding a single file does, where the same text was embedded twice and retrieval returned the same passages twice. [#31336](https://github.com/open-webui/open-webui/pull/31336), [#31333](https://github.com/open-webui/open-webui/issues/31333) +- ๐Ÿš **Shared chat links while signed out.** Opening a shared chat link while signed out now leads to the login page and back to the shared chat after signing in, including with OAuth, where it showed a blank home page. [#31337](https://github.com/open-webui/open-webui/pull/31337), [#31334](https://github.com/open-webui/open-webui/issues/31334) +- ๐Ÿช› **List valves in Chat Controls.** List user valves in Chat Controls now keep their default when unset and save edits as a list, where saving any other valve replaced the list with an empty entry and every later edit failed silently. [#31300](https://github.com/open-webui/open-webui/pull/31300), [#31299](https://github.com/open-webui/open-webui/issues/31299) +- โ™ฟ **Sort order for screen readers in the user list.** The column headings of the admin user list now tell screen readers the current sort order after it changes, where they kept announcing the initial one. [Commit](https://github.com/open-webui/open-webui/commit/dc713a68a4ba0e1691892d8f53ebe1e9a877721c), [#31581](https://github.com/open-webui/open-webui/issues/31581) +- ๐Ÿšฆ **Provider errors reach API clients.** API requests that fail at the model provider, such as on a rate limit, now return the provider's own status code, error message and Retry-After header, where they came back as a generic 400 or an empty 200 without the header, and a provider error sent as plain text is now shown as written. [Commit](https://github.com/open-webui/open-webui/commit/015dbc8619568ac077ec1d782661836a63691ba1), [#31326](https://github.com/open-webui/open-webui/issues/31326), [#28938](https://github.com/open-webui/open-webui/issues/28938) +- ๐Ÿชซ **Server memory per chat.** A long-running server no longer keeps a little memory for every chat it has answered until it is restarted. [#31534](https://github.com/open-webui/open-webui/pull/31534), [#31521](https://github.com/open-webui/open-webui/issues/31521) +- ๐Ÿ’ฒ **Dollar signs in saved code blocks.** Saving an edited code block now keeps "$$" and other dollar sign patterns as written, where each pair turned into a single dollar sign in the chat and in later messages. [#31386](https://github.com/open-webui/open-webui/pull/31386), [#31385](https://github.com/open-webui/open-webui/issues/31385) +- โœ‚๏ธ **Long MCP tool names.** Chats with an MCP server whose ID plus tool name is longer than 64 characters no longer fail on providers that cap tool names at 64 characters, such as the OpenAI API and AWS Bedrock; those names are now shortened with a stable hash ending while the MCP server is still called with the original tool name. [#31822](https://github.com/open-webui/open-webui/pull/31822), [#31821](https://github.com/open-webui/open-webui/issues/31821) +- ๐Ÿ”Š **Kokoro voice in Voice Mode from links and shortcuts.** Voice Mode opened with "?call=true" or a desktop shortcut now speaks replies when the speech engine is Kokoro.js (Browser), where only opening it with the Voice mode button set up the voice. [#31829](https://github.com/open-webui/open-webui/pull/31829), [#31828](https://github.com/open-webui/open-webui/issues/31828) +- โน๏ธ **Cancelled Ollama downloads keep existing models.** Cancelling an Ollama model download in Manage Ollama or the model selector no longer deletes the model, which removed an existing copy on the target server or the same model on another Ollama connection. [#31824](https://github.com/open-webui/open-webui/pull/31824), [#31823](https://github.com/open-webui/open-webui/issues/31823) +- ๐ŸงŠ **Chats with tool calls reopen on some Responses API providers.** Reopening a chat where the model wrote text, called a tool and then answered no longer freezes the browser tab with providers that reuse output item ids in every response, such as OpenVINO Model Server, including chats saved before this fix. [#31838](https://github.com/open-webui/open-webui/pull/31838), [#31837](https://github.com/open-webui/open-webui/issues/31837) +- ๐Ÿ‘“ **Model JSON Preview shows unsaved changes.** The JSON Preview in the model editor now updates as you edit the name, system prompt, advanced parameters, capabilities, tools and other settings, showing exactly what will be saved, where most changes only appeared after saving and reopening the model. [#31851](https://github.com/open-webui/open-webui/pull/31851), [#31848](https://github.com/open-webui/open-webui/issues/31848) +- ๐Ÿ“Œ **User menu pin buttons.** The Pin to Sidebar button in the user menu now switches its icon and tooltip as soon as it is clicked, and the pin buttons shown while holding Shift now hide when the window loses focus, where they stayed visible after Shift was released in another window. [#31843](https://github.com/open-webui/open-webui/pull/31843), [#31842](https://github.com/open-webui/open-webui/issues/31842), [#31841](https://github.com/open-webui/open-webui/pull/31841), [#31840](https://github.com/open-webui/open-webui/issues/31840) +- ๐Ÿ““ **Large pastes into notes are saved.** Pasting a large block of text, around 150 KB or more, into a note no longer drops the note's live connection and loses the text on reload, as the server now accepts edit messages up to 16 MiB, so notes with up to about 2 MB of text save again. [#31893](https://github.com/open-webui/open-webui/pull/31893), [#26140](https://github.com/open-webui/open-webui/issues/26140) +- ๐Ÿช **MCP OAuth sign-in with long scope lists.** Connecting an MCP tool server over OAuth 2.1 no longer fails with an "invalid or expired state" error after signing in when the server asks for many scopes, such as the Google Workspace MCP server, as the session cookie no longer grows past the browser's size limit. [#31894](https://github.com/open-webui/open-webui/pull/31894), [#26382](https://github.com/open-webui/open-webui/issues/26382) +- โณ **Older unfinished responses no longer spin forever.** Opening a chat with no generation running now shows every unfinished response as finished, with its copy and regenerate buttons, where only the newest one was repaired and older ones from cancelled or interrupted generations kept a loading cursor forever; responses waiting for the user to answer a tool's question are left as they are. [#31895](https://github.com/open-webui/open-webui/pull/31895), [#14806](https://github.com/open-webui/open-webui/issues/14806) +- ๐Ÿซ™ **Chats work again after an empty reply.** A reply that was stopped or failed before the model sent any text is no longer sent back to the model with later messages, so providers that reject empty assistant messages no longer refuse every new request in that chat, and chats already stuck this way work again on their next message. [#31892](https://github.com/open-webui/open-webui/pull/31892), [#25083](https://github.com/open-webui/open-webui/issues/25083) +- ๐Ÿ—œ๏ธ **Images inside a chat no longer trigger compaction.** Images stored inside the chat itself, such as in chats from older versions or temporary chats, are no longer counted as text when estimating how full the context is, so a single image no longer pushes a chat over the compaction threshold or makes the context usage indicator jump. [#31915](https://github.com/open-webui/open-webui/pull/31915), [#31913](https://github.com/open-webui/open-webui/issues/31913) +- โž— **Inline math next to dashes.** Inline math written directly next to an em dash or en dash, with either $...$ or \(...\), now renders in chat replies instead of showing as plain text. [#31901](https://github.com/open-webui/open-webui/pull/31901) +- ๐Ÿ”ฆ **Web searches where no page loads.** A web search where none of the result pages could be loaded now says so, where it reported an embedding configuration failure. [#31859](https://github.com/open-webui/open-webui/pull/31859), [#29327](https://github.com/open-webui/open-webui/issues/29327) +- ๐Ÿ… **Private arena models for admins.** Arena models left private with no access grants are now visible to administrators in the model selector, can be chatted with and show their profile image, even with the admin access bypass turned off, where they disappeared for everyone. [#31858](https://github.com/open-webui/open-webui/pull/31858), [#30013](https://github.com/open-webui/open-webui/issues/30013) +- ๐Ÿฆ™ **GGUF uploads to Ollama create the model.** Uploading a GGUF file in Manage Ollama now creates the model in both File Mode and URL Mode, named after the file, where the file reached Ollama but no model appeared; the Modelfile Content box was removed, as Ollama reads the template and stop sequences from the GGUF file. [#31862](https://github.com/open-webui/open-webui/pull/31862), [#31861](https://github.com/open-webui/open-webui/issues/31861) +- ๐Ÿ›Ž๏ธ **Ctrl+Shift+Enter with Ctrl+Enter to Send.** With "Ctrl+Enter to Send" on, Ctrl+Shift+Enter now only adds an empty message pair, where it also sent the typed message. [#31864](https://github.com/open-webui/open-webui/pull/31864), [#31468](https://github.com/open-webui/open-webui/issues/31468) +- ๐Ÿ” **Edited replies stay searchable.** Chats can now be found in search by the new text of an edited reply, where editing a reply made it unsearchable by both its old and new text. [#31844](https://github.com/open-webui/open-webui/pull/31844), [#31471](https://github.com/open-webui/open-webui/issues/31471) +- ๐ŸŽค **Web API dictation keeps listening.** With the Web API speech-to-text engine, dictation now only stops after two seconds of silence, where it could stop mid-sentence after a short pause. [#31891](https://github.com/open-webui/open-webui/pull/31891), [#19727](https://github.com/open-webui/open-webui/issues/19727) +- ๐Ÿ“ƒ **Line breaks after reloading.** Lines separated by a single line break now stay on separate lines after reloading the page, when opening a chat by its URL and on shared chat links, where they ran together into one line. [#31869](https://github.com/open-webui/open-webui/pull/31869) +- ๐Ÿ“ง **Pasted emails sent once.** With Rich Text Input for Chat on, pasting an HTML email or newsletter laid out with nested tables no longer sends the same text repeated many times. [#31890](https://github.com/open-webui/open-webui/pull/31890), [#24657](https://github.com/open-webui/open-webui/issues/24657) +- ๐Ÿ“Š **Daily Messages chart on All time.** The Daily Messages chart in Analytics now loads on All time when a message was saved without a timestamp, and messages after such a message in the same chat are counted again. [#31888](https://github.com/open-webui/open-webui/pull/31888), [#27316](https://github.com/open-webui/open-webui/issues/27316) +- โ†”๏ธ **Mixed right-to-left and left-to-right lines.** Each line of a message now gets its own text direction and alignment, both while typing and in the sent message, so an English line under an Arabic one no longer shows its punctuation on the wrong side. [#31868](https://github.com/open-webui/open-webui/pull/31868), [#31827](https://github.com/open-webui/open-webui/issues/31827) +- ๐Ÿซ‚ **Access grants of deleted groups.** Deleting a group now also removes its access grants, and the Access dialog lists grants left behind by groups deleted earlier under their ID so they can be removed, where they were hidden from the list but saved again, leaving the item marked Shared with no way to undo it. [Commit](https://github.com/open-webui/open-webui/commit/dd576bade3449057803248450ac453b29e6a60a5), [#31923](https://github.com/open-webui/open-webui/issues/31923) +- โญ๏ธ **Chats open at their latest reply.** Opening a chat whose saved position points to an earlier message on the current branch now moves to the newest reply on that branch, where only compacted chats were moved forward, and broken or stale message links are skipped while finding it. [Commit](https://github.com/open-webui/open-webui/commit/d8659c237c7819d114a5d70db25ec6aed86b9bbf), [#27618](https://github.com/open-webui/open-webui/issues/27618) +- ๐Ÿ™… **Share hidden in the function menu without Community Sharing.** With Community Sharing off, the function menu in the admin Functions list no longer offers Share, matching the model, prompt and tool menus. [#31820](https://github.com/open-webui/open-webui/pull/31820), [#31819](https://github.com/open-webui/open-webui/issues/31819) +- ๐Ÿ“ด **Model list after unloading a model.** Unloading a model from Ollama or llama.cpp now refreshes the model list right away, so it no longer shows the model as loaded until the list is refreshed later. [#31921](https://github.com/open-webui/open-webui/issues/31921), [Commit](https://github.com/open-webui/open-webui/commit/cf5755f9498d642557c1039eb3acf19bdb09b399) +- ๐Ÿ”‡ **Interrupting Voice mode stops the reply.** Interrupting Voice mode while it speaks now stops the rest of the reply instead of reading out the sentences that were already queued. [#31877](https://github.com/open-webui/open-webui/pull/31877), [#31876](https://github.com/open-webui/open-webui/issues/31876) +- โฉ **Speech Playback Speed for Read Aloud.** Read Aloud and response auto-playback now play at the chosen Speech Playback Speed for every sentence, where the speed fell back to normal at each new sentence. [#31881](https://github.com/open-webui/open-webui/pull/31881), [#31870](https://github.com/open-webui/open-webui/issues/31870) +- ๐Ÿ“‚ **File browser stays in your folder.** When the agent runs a command in the terminal, the file browser panel now stays in the folder you picked and keeps the open file in view, where it jumped back to the top folder after every command, so the next command also ran there. [#31878](https://github.com/open-webui/open-webui/pull/31878), [#30051](https://github.com/open-webui/open-webui/issues/30051) +- ๐Ÿงท **Tool calls with reused ids.** With providers that number tool calls from zero again each time the model calls tools within one reply, such as Kimi K3 on OpenRouter, each call now keeps its own arguments and result, where later calls overwrote earlier ones in the saved chat and the model got earlier results next to the wrong arguments. [#31887](https://github.com/open-webui/open-webui/pull/31887), [#28305](https://github.com/open-webui/open-webui/issues/28305) +- ๐Ÿ“ค **Unarchive from the chat menu.** The menu in the chat header now offers Unarchive for an archived chat and confirms it with a matching message, where it always showed Archive. [#31857](https://github.com/open-webui/open-webui/pull/31857), [#31473](https://github.com/open-webui/open-webui/issues/31473) +- ๐Ÿ”ˆ **Read Aloud after a Voice mode call.** Read Aloud now plays with sound after a Voice mode call has ended, where it stayed muted until the chat was closed and opened again. [#31875](https://github.com/open-webui/open-webui/pull/31875), [#31874](https://github.com/open-webui/open-webui/issues/31874) +- ๐Ÿ‘ฏ **Earlier tool calls sent twice after a paused reply.** After answering a question from the Ask User tool or pressing Continue, later tool rounds no longer send everything from before the pause to the model a second time, which made providers that reject repeated tool calls, like DeepSeek, stop the chat with a "Duplicate 'call_id'" error. [#32029](https://github.com/open-webui/open-webui/pull/32029), [#31991](https://github.com/open-webui/open-webui/issues/31991) +- ๐Ÿš› **Large files on Milvus.** With Milvus as the vector database, large files now finish processing instead of failing with a RESOURCE_EXHAUSTED error after the whole embedding step, because their chunks are sent to Milvus in batches of 128 rather than in one request that exceeded its size limit, with and without multitenancy mode. [#31990](https://github.com/open-webui/open-webui/pull/31990), [#31989](https://github.com/open-webui/open-webui/issues/31989) +- ๐Ÿ”– **Page titles on external knowledge citations.** Citation markers in answers from external knowledge bases now show each page's title instead of the site's domain, falling back to the domain only when a page has no title, and pages that share a title no longer shift the labels of later citations. [#31982](https://github.com/open-webui/open-webui/pull/31982), [#31929](https://github.com/open-webui/open-webui/issues/31929) +- ๐Ÿ—„๏ธ **Fresh PostgreSQL installs with a custom schema.** With "DATABASE_SCHEMA" set, a fresh PostgreSQL install now creates its tables in that schema and starts, where the migrations created them in the public schema and startup failed with a "relation does not exist" error; a schema that does not exist, or one that already holds tables without migration history, now stops startup with a clear message instead. [Commit](https://github.com/open-webui/open-webui/commit/65f44053d20c9a70c6edb9d59f965c09754c29dd), [#31526](https://github.com/open-webui/open-webui/issues/31526) +- ๐ŸŒ… **Model images saved as files.** JPEG and WebP images returned by a model are now saved as files with only a link kept in the chat, the same way PNG images already were, instead of being stored as raw data inside the chat and making it larger by the size of each image. [#31975](https://github.com/open-webui/open-webui/pull/31975), [#31916](https://github.com/open-webui/open-webui/issues/31916) +- ๐Ÿ‘ค **Workspace lists after quick searches.** The Models, Prompts, Knowledge and Skills workspace lists no longer show results from an earlier search or filter that answered late, which could put other people's items under Created by you. [Commit](https://github.com/open-webui/open-webui/commit/4b9d31b390886454ae22b2f8cb020ff2400d5124), [#31965](https://github.com/open-webui/open-webui/issues/31965) +- ๐Ÿฐ **Partial files in knowledge bases on Qdrant.** On Qdrant, a file uploaded to a knowledge base or edited there now always arrives with all of its content, where it could end up with only part of its chunks, often exactly 64, while showing as completed; file processing on a busy Qdrant may take a little longer since each save now waits for Qdrant to finish storing. [#31961](https://github.com/open-webui/open-webui/pull/31961), [#31959](https://github.com/open-webui/open-webui/issues/31959) +- ๐Ÿ“… **Yesterday's chats on the first of the month.** Chats from the previous day are now listed under Yesterday in the sidebar on the first day of a month or year too, where they showed under Previous 7 days. [#31973](https://github.com/open-webui/open-webui/pull/31973), [#31964](https://github.com/open-webui/open-webui/issues/31964) +- โœŒ๏ธ **Web search confirmation needing two clicks.** With web search confirmation on, turning on Web Search from the Integrations menu now closes the menu, so a single click on Cancel or Continue in the confirmation popup works. [#31976](https://github.com/open-webui/open-webui/pull/31976), [#31963](https://github.com/open-webui/open-webui/issues/31963) +- ๐Ÿ–‡๏ธ **Files attached to shared notes.** People a note is shared with can now open its attached files and have them used in the note's chat, where they were refused and the model answered without them. [Commit](https://github.com/open-webui/open-webui/commit/b612c8847ad186dbfe8f745f81f0d97286ea7919), [#32011](https://github.com/open-webui/open-webui/issues/32011) +- ๐Ÿšฆ **Filters before approved tool calls.** After you approve a tool call, request filters now check the request before the tool runs, where the tool ran first and a filter rejecting the request came only after its effects, and the follow-up request now uses the same prepared history as any other message instead of one rebuilt from the saved chat, which dropped the extracted content of attached files and left the model only their names. [Commit](https://github.com/open-webui/open-webui/commit/639139aa7a69a78a758f2075d42d4d5e1554cf57), [#31986](https://github.com/open-webui/open-webui/issues/31986) +- ๐ŸŽž๏ธ **Images streamed by a model saved once.** When a model streams its images in separate pieces, each image is now kept once, where every new piece saved all earlier images again, so four images could end up stored as fifteen with duplicates in the chat. [#32054](https://github.com/open-webui/open-webui/pull/32054), [#32053](https://github.com/open-webui/open-webui/issues/32053) +- ๐Ÿ›ฐ๏ธ **User info headers for rerankers.** With "ENABLE_FORWARD_USER_INFO_HEADERS" on and hybrid search enabled, rerank requests now carry the signed-in user's headers when a chat searches attached knowledge, when a model uses the built-in knowledge search tool and when the collection query API runs, where only the embedding requests of the same search had them. [#32061](https://github.com/open-webui/open-webui/pull/32061), [#32060](https://github.com/open-webui/open-webui/issues/32060) +- ๐Ÿชข **Plain web addresses in chat.** Web addresses written without link text now show "&" instead of "&", and addresses written in angle brackets open the address as written, where they pointed to a different address with the wrong parameters. [Commit](https://github.com/open-webui/open-webui/commit/652d0cff073632f8d4adeaf2b994a786fb8a317b), [#31902](https://github.com/open-webui/open-webui/issues/31902) +- ๐Ÿ—บ๏ธ **MCP servers without OAuth discovery.** Connecting to an MCP server over OAuth 2.1 now works when the server publishes no discovery documents, using the standard /authorize, /token and /register addresses on the server's own domain, where the connection was refused because no sign-in address could be found. [Commit](https://github.com/open-webui/open-webui/commit/a0e606bfaa48e64bfe8cfc905d96f1da5a0b1bc9), [#26647](https://github.com/open-webui/open-webui/issues/26647) +- ๐Ÿงน **Deleted chats leave their folder.** Deleting the open chat with the Delete Chat keyboard shortcut now also removes it from its folder in the sidebar, where it stayed listed there until the page was reloaded. [Commit](https://github.com/open-webui/open-webui/commit/5729d7ad810020a09563238ca9cba48943d6b5d9), [#31321](https://github.com/open-webui/open-webui/issues/31321) +- ๐Ÿ‘€ **Who added chats to a folder you share.** In a folder you own and share with others, chats they add now show their owner's profile picture in the sidebar, the same as in folders shared with you. [Commit](https://github.com/open-webui/open-webui/commit/ce18eca340e51111cae3612b1b8e07e916c06850) +- ๐ŸŽŸ๏ธ **Tool servers using your sign-in token after it renews.** MCP and OpenAPI tool servers set to use the signed-in user's OAuth token now pick up the current token for every call and retry once when it was renewed in the meantime, where tool calls kept sending the old token after a refresh and failed, and MCP servers now also get the token in automations and API requests without a browser session. [Commit](https://github.com/open-webui/open-webui/commit/93fc3fcb726f81d9ccca45245e476c4944ff30ba), [#31863](https://github.com/open-webui/open-webui/issues/31863) +- ๐Ÿงฏ **Non-streamed replies with tool calls finish.** With Stream Chat Response turned off, a reply in which the model calls a tool is now saved and marked as finished, where the chat kept showing it as still generating until the page was reloaded. [#32083](https://github.com/open-webui/open-webui/pull/32083) +- ๐Ÿฉน **Chats right after a Redis restart.** After Redis restarts or closes its connections, Open WebUI now reconnects and retries the call once, so chat requests no longer fail with a 500 error and newly opened tabs get live updates again as soon as Redis is back. [#31619](https://github.com/open-webui/open-webui/pull/31619) +- ๐ŸงŠ **Pasting large text no longer freezes the browser.** Text boxes using the rich text editor, such as the chat input and the knowledge text editor, now only convert their content when it actually changes, where every cursor move or selection converted the whole text again and pasting a large amount could freeze the page. [Commit](https://github.com/open-webui/open-webui/commit/286926d2993603738084c3c55e44028f53bd5c7c), [#12087](https://github.com/open-webui/open-webui/issues/12087) +- ๐Ÿ’ญ **Answers that mention a thinking tag.** When a model sends its reasoning separately, such as through Ollama, an answer that contains the text "" is no longer cut off there with the rest hidden in a second thinking block. [Commit](https://github.com/open-webui/open-webui/commit/236965c7e9238bb98630d940fa83666fd323d6e9), [#31540](https://github.com/open-webui/open-webui/issues/31540) +- ๐Ÿ“ฆ **Structured results from MCP tools.** When an MCP tool returns structured data alongside its text, the model now receives that data too, where only the text part reached it and tools that put their real result in the structured part looked empty. [Commit](https://github.com/open-webui/open-webui/commit/22102e4a24863808793ddb9f53b599e274347280), [#28926](https://github.com/open-webui/open-webui/issues/28926) +- ๐ŸŒ **Dates and times in your language.** Dates, times, relative times such as "2 hours ago" and automation schedules across analytics, evaluations, functions, users, chats, notes, files, search, channels and the calendar now follow the interface language, where many of them were always shown in English. "DEFAULT_LOCALE" is now the starting language for anyone who has not picked one, ahead of the browser language. [#32131](https://github.com/open-webui/open-webui/issues/32131), [Commit](https://github.com/open-webui/open-webui/commit/7d205a86dc80f72718857a4785854e4455cb28d5) +- ๐Ÿ—“๏ธ **Calendar days from another month.** Clicking a day of the previous or next month in the calendar now also loads that month's events, where the view switched months and stayed empty. [Commit](https://github.com/open-webui/open-webui/commit/34abd6e121b8fee25936d312752e1c6da16f4ae9), [#30972](https://github.com/open-webui/open-webui/issues/30972) +- ๐Ÿงฎ **Deeply nested chat variable values.** A chat variable property whose value is deeply nested JSON is now kept as plain text, where it could make the request fail. [#30389](https://github.com/open-webui/open-webui/pull/30389) +- ๐Ÿ”‚ **Sub-agents and timers without repeated instructions.** Sub-agents, timers and the replies that follow a background sub-agent's result now rebuild their instructions from the original chat, where they reused the chat's finished system prompt, so the model received its system prompt, skills, knowledge list and tool and terminal instructions twice. Skills mentioned in the original message and the chat's variables now carry over as well. [#31568](https://github.com/open-webui/open-webui/issues/31568), [Commit](https://github.com/open-webui/open-webui/commit/ecbbff8afb3537d5e799e434a61a1134a97c6362) +- ๐Ÿšจ **Knowledge text edits that did not index.** Saving the edited text of a knowledge file now shows an error when the text could not be processed or a knowledge base using the file could not be updated, where the editor reported success while searches kept the old text. [Commit](https://github.com/open-webui/open-webui/commit/33dd7dd224d4fc4031185a4dd589242681f24af7) +- ๐Ÿ“ฅ **Downloading files whose upload is gone.** Downloading a file whose original upload is missing from storage now gives its extracted text as a text file, where the download failed with not found. [Commit](https://github.com/open-webui/open-webui/commit/33dd7dd224d4fc4031185a4dd589242681f24af7) +- ๐Ÿ“œ **Skill details read from SKILL.md.** The skill editor now reads a skill's name and description from its SKILL.md header as proper YAML, so quoted values, values containing a colon and descriptions spread over several lines fill in correctly, where they came out cut off or with stray quotes. [Commit](https://github.com/open-webui/open-webui/commit/dc1203d34c93ed7a73d6f8e19e0c1f5ab312b22c) +- ๐Ÿ—ƒ๏ธ **Back and Forward between folder pages.** Going Back or Forward from one folder page to another now shows the folder named in the address bar, where the page kept showing the folder you had left. [#32146](https://github.com/open-webui/open-webui/pull/32146), [#32144](https://github.com/open-webui/open-webui/issues/32144) +- ๐Ÿ“ **Long menu labels in other languages.** Menus such as the Actions menu in Workspace Models, the + menu in the chat input and the menus in Automations, Archived Chats, Personalization and Feedbacks now widen to fit longer translated labels and keep them left aligned, where long labels wrapped over the next row or showed centered. [#32151](https://github.com/open-webui/open-webui/pull/32151), [#32150](https://github.com/open-webui/open-webui/issues/32150) +- โ›” **Switched-off MCP servers stay off.** A chat request that names an MCP tool server whose connection an administrator switched off no longer connects to it or runs its tools, where hiding it from the menus did not stop requests made through the API. [#31880](https://github.com/open-webui/open-webui/issues/31880), [Commit](https://github.com/open-webui/open-webui/commit/fb741ebcd2daed626405f9458c192e5161bce4c0) +- โž• **Create from the create menu.** Choosing Create from the menu next to the Create button on the Models, Skills and Tools pages and the Functions admin page now opens the editor without reloading the whole app, while Ctrl, Cmd, Shift and middle clicks still open it in a new tab or window. [#32152](https://github.com/open-webui/open-webui/pull/32152), [#31917](https://github.com/open-webui/open-webui/issues/31917) +- ๐Ÿ”ผ **Lists near the bottom of the window.** Select lists such as the model selector's filter list now open upward when there is not enough room below them, where they ran off the bottom of the window. [#32153](https://github.com/open-webui/open-webui/pull/32153), [#31914](https://github.com/open-webui/open-webui/issues/31914) +- ๐Ÿ“ฒ **Download choices on phones.** On a narrow phone screen, the Download choices in the chat header menu, a chat's sidebar menu and the note menu now open over the menu and stay fully on screen, where they opened past the left edge with their labels cut off. [#32179](https://github.com/open-webui/open-webui/pull/32179), [#32015](https://github.com/open-webui/open-webui/issues/32015) +- ๐Ÿ‘‰ **Swipe to reply in channels on phones.** Swiping right on a channel message on a phone now only starts a reply, where it also opened the sidebar over the channel; on messages that cannot be replied to, the swipe still opens the sidebar. [#32178](https://github.com/open-webui/open-webui/pull/32178), [#32016](https://github.com/open-webui/open-webui/issues/32016) +- ๐Ÿ“› **Skill names in chat titles.** A chat named after its first message, with title generation off or a blank generated title, now shows a skill picked with $ by its name, such as "Tides when is high tide", where the title showed the raw mention markup. [#32176](https://github.com/open-webui/open-webui/pull/32176), [#32019](https://github.com/open-webui/open-webui/issues/32019) +- ๐ŸŒ **Finding skills by their translated name.** Searching Workspace > Skills now also matches the names and descriptions translated in the skill editor, in any language, where only the original name, description and id were found. [#32174](https://github.com/open-webui/open-webui/pull/32174), [#32018](https://github.com/open-webui/open-webui/issues/32018) +- โœ๏ธ **Replies rewritten by an action button.** When an action button's function rewrites a reply, the chat now shows the new text right away and after a reload, with its thinking and tool call sections kept, where it kept showing the old reply. [#32172](https://github.com/open-webui/open-webui/pull/32172), [#32023](https://github.com/open-webui/open-webui/issues/32023) +- ๐Ÿงญ **Sidebar follows permission changes.** When an administrator changes a group's permissions, the sidebar's Workspace, Notes, Calendar and Automations entries now appear or disappear right away for members who have the app open, where they only changed after a reload. [#32171](https://github.com/open-webui/open-webui/pull/32171), [#32020](https://github.com/open-webui/open-webui/issues/32020) +- ๐Ÿ”• **Browser Notifications switch when the browser blocks them.** Turning on Browser Notifications in a browser that denies permission now turns the switch back off, where it stayed on although nothing was saved. [#32170](https://github.com/open-webui/open-webui/pull/32170), [#32024](https://github.com/open-webui/open-webui/issues/32024) +- ๐Ÿ”ข **Chat IDs in the feedback CSV export.** Exporting feedback as CSV from Admin Settings > Evaluations > Feedback now fills the chat_id column with the ID of the chat each rating was given in, where it was empty on every row. [#32169](https://github.com/open-webui/open-webui/pull/32169), [#32021](https://github.com/open-webui/open-webui/issues/32021) +- ๐Ÿ“บ **Model replies in channels stream again.** A model's reply in a channel now appears while it is being written, where since 0.11.1 it only showed once it was finished. [Commit](https://github.com/open-webui/open-webui/commit/de73bb830aeb150bc5bb4707566d3969f70408b0), [#31998](https://github.com/open-webui/open-webui/issues/31998) +- ๐Ÿ•ธ๏ธ **Domain filter with Perplexity Search.** With Perplexity Search as the web search engine, the Domain Filter List now applies, where blocked domains still reached the model and an allowlist let every result through. [#32182](https://github.com/open-webui/open-webui/pull/32182), [#32005](https://github.com/open-webui/open-webui/issues/32005) +- ๐Ÿงฒ **Domain filter with Kagi.** With Kagi as the web search engine, any entry in the Domain Filter List no longer makes every search fail with "'SearchResult' object has no attribute 'get'", and the filtered results reach the model. [#32183](https://github.com/open-webui/open-webui/pull/32183), [#32004](https://github.com/open-webui/open-webui/issues/32004) +- ๐Ÿ“š **Renamed knowledge files in citations.** Citations from a knowledge base file now show the file's current name after it is renamed, where every new reply kept the name it had when it was indexed. [#31860](https://github.com/open-webui/open-webui/pull/31860), [#30318](https://github.com/open-webui/open-webui/issues/30318) +- ๐ŸŽซ **Tag names survive archiving.** Archiving the last chat that uses a tag no longer turns "My Project" into "my_project" when the chat is unarchived, and deleting an archived chat no longer removes a tag that other chats still use; a tag used only by archived chats now stays in the tag list. [#32200](https://github.com/open-webui/open-webui/pull/32200), [#30454](https://github.com/open-webui/open-webui/issues/30454) +- ๐Ÿ–‡๏ธ **Images pasted into notes right after a save.** An image pasted into a note a moment after another change was saved now stays attached, where it could show as a grey placeholder after a reload and was missing from the PDF export. [#32175](https://github.com/open-webui/open-webui/pull/32175), [#32123](https://github.com/open-webui/open-webui/issues/32123) +- ๐Ÿงช **Datalab Marker on pip and source installs.** Extracting files with Datalab Marker no longer fails with "Permission denied: '/app'" outside the Docker image, as the extracted copy now goes to the uploads folder in DATA_DIR. [#32164](https://github.com/open-webui/open-webui/pull/32164), [#32025](https://github.com/open-webui/open-webui/issues/32025) +- ๐ŸŽ™๏ธ **Reasons for refused transcriptions.** When an OpenAI-compatible speech-to-text engine or Deepgram refuses a recording, the error now shows the engine's reason, such as "Quota exceeded", where only the HTTP status was shown. [#32186](https://github.com/open-webui/open-webui/pull/32186), [#32009](https://github.com/open-webui/open-webui/issues/32009) +- ๐Ÿ†˜ **Chat failed notifications on provider errors.** Notification targets set to Chat failed are now called when the provider answers with an error status such as a 500 or cannot be reached, with the error text and a link to the chat, where only a few rare failures were announced. [#32198](https://github.com/open-webui/open-webui/pull/32198), [#32003](https://github.com/open-webui/open-webui/issues/32003) +- ๐Ÿ“† **Editing an automation keeps the end of its schedule.** An automation that stops after a number of runs or on a date now opens as Custom with its stored rule and keeps that end when saved, where the first edit, even of the title, made it run forever. [#32191](https://github.com/open-webui/open-webui/pull/32191), [#32000](https://github.com/open-webui/open-webui/issues/32000) +- โฐ **Once schedules on the right day.** The Once schedule in the automation dialog now defaults to and allows today's date in the browser's time zone, where east of UTC Create failed with "RRULE has no future occurrences" and west of UTC the automation ran a day late. [#32193](https://github.com/open-webui/open-webui/pull/32193), [#31999](https://github.com/open-webui/open-webui/issues/31999) +- ๐ŸŽš๏ธ **Default in Chat Controls uses your Settings value.** Switching a parameter such as Temperature to Custom in Chat Controls and back to Default now uses the value saved in Settings > General again, also in chats where this already happened, where the model's built-in default was used. [#32192](https://github.com/open-webui/open-webui/pull/32192), [#32013](https://github.com/open-webui/open-webui/issues/32013) +- ๐Ÿ”ข **Empty number fields in admin Interface settings.** Clearing Token Threshold, Retained Messages or Autocomplete Generation Input Max Length in Admin Settings > Interface now saves the default and shows it, and a failed save shows an error, where the page reported success while the old value came back. [#32163](https://github.com/open-webui/open-webui/pull/32163), [#32162](https://github.com/open-webui/open-webui/issues/32162) +- ๐Ÿ“ถ **Download progress in Manage Ollama.** Creating a model from a base model that Ollama still has to download now shows the model name and a progress bar the whole time, where nothing showed until the model was created. [#32187](https://github.com/open-webui/open-webui/pull/32187), [#32001](https://github.com/open-webui/open-webui/issues/32001) +- ๐Ÿšจ **Errors when Ollama refuses a new model.** When Ollama rejects a model created in the Manage Ollama dialog, the dialog now shows Ollama's error and keeps the entered name and definition, where the form cleared without any message. [#32196](https://github.com/open-webui/open-webui/pull/32196), [#32002](https://github.com/open-webui/open-webui/issues/32002) +- โ†ช๏ธ **Focus after closing Settings.** Closing Settings opened from the user menu with the keyboard now returns the focus to the user menu button, where it was lost and the next Tab started over at the top of the page. [#32185](https://github.com/open-webui/open-webui/pull/32185), [#32017](https://github.com/open-webui/open-webui/issues/32017) +- ๐Ÿฆฎ **Response Splitting label for screen readers.** Screen readers now announce the Response Splitting dropdown in Admin Settings > Audio by name. [#32180](https://github.com/open-webui/open-webui/pull/32180), [#32010](https://github.com/open-webui/open-webui/issues/32010) +- ๐Ÿ—๏ธ **Static files kept without a frontend build.** Starting the backend from a source checkout without a built frontend no longer deletes the tracked files in backend/open_webui/static; the packaged static files are used instead, and startup stops with a clear error when neither is there. [Commit](https://github.com/open-webui/open-webui/commit/0c3f74c9c16f1041b2936aeda45e69897da3a0ff), [#29968](https://github.com/open-webui/open-webui/issues/29968) +- โ™พ๏ธ **Reload loop after a server upgrade.** The app page now tells the browser to check for a newer version on every visit, where browsers could reuse a cached old page for days after an upgrade and reload into it in a loop until a hard refresh; other files are cached as before and an admin-set "CACHE_CONTROL" still wins. [#31631](https://github.com/open-webui/open-webui/pull/31631), [#31630](https://github.com/open-webui/open-webui/issues/31630) +- ๐Ÿ“ƒ **Docling page numbers with blank pages.** With the Docling engine, citations from a PDF with blank pages now show and open the right page, where every page after a blank one was off; files already uploaded keep their old page numbers until they are reindexed or uploaded again. [#32203](https://github.com/open-webui/open-webui/pull/32203), [#32201](https://github.com/open-webui/open-webui/issues/32201) +- ๐Ÿ”š **Outlet filters when an API client hangs up.** Outlet filters now run to the end when an API client closes the connection right after the final [DONE] event, where they were cancelled and skipped. [Commit](https://github.com/open-webui/open-webui/commit/fde0a853699cb8cfa792c595c8d151c4aa4c15dc), [#29869](https://github.com/open-webui/open-webui/issues/29869) +- ๐Ÿ”ƒ **Knowledge sync no longer uploads files twice.** Syncing a folder into a knowledge base no longer uploads again the files from an earlier sync that are still being processed, where every sync cycle added another copy. [Commit](https://github.com/open-webui/open-webui/commit/9202c7f100d78acfcc697c367faa4a9c188db760), [#27987](https://github.com/open-webui/open-webui/issues/27987) +- ๐Ÿ› ๏ธ **Same /skills:create message on every turn.** A message starting with /skills:create is now sent with the same expanded text on later turns, unless you edit it, where later turns sent the raw command and broke the prompt cache from that message on. [Commit](https://github.com/open-webui/open-webui/commit/ed6f69002d0c7c2bdc55793e4d59517835de3c68), [#31591](https://github.com/open-webui/open-webui/issues/31591) +- โฌ **Older chats keep loading in the sidebar.** After starting a new chat or importing chats, scrolling the sidebar loads older chats again, where the list was cut back to the first 60 chats until a page refresh. [Commit](https://github.com/open-webui/open-webui/commit/9fad17558bf3767f7fc10ab27fb9ce2ccc0d5f6d), [#30901](https://github.com/open-webui/open-webui/issues/30901) +- โ“ **Questions from the model in temporary chats.** Answering a question the model asks with ask_user in a temporary chat now goes back to the model, where it failed and the conversation was lost. [Commit](https://github.com/open-webui/open-webui/commit/82f142d376f8b2c83153607fd18ecff467e10c30), [#29248](https://github.com/open-webui/open-webui/issues/29248) +- ๐Ÿ–Š๏ธ **Notes keep your latest typing.** Typing quickly in a note, above all a shared note edited by someone else, no longer leaves the saved copy missing the last characters, and reloading a note right after typing no longer brings back older text that the next edit then saved over the newer one. [Commit](https://github.com/open-webui/open-webui/commit/8594b2f421f69742b64297fcee85b4bb0125f238), [#31585](https://github.com/open-webui/open-webui/issues/31585), [#31426](https://github.com/open-webui/open-webui/issues/31426) +- โญ **Rating the other reply in a side-by-side comparison.** Rating the reply that is not selected in a side-by-side comparison now opens the rating form for a reason and comment, where the rating was saved but the form closed right away. [Commit](https://github.com/open-webui/open-webui/commit/a92fcdf10732cbc4dd3a02bd0bd8ed48e92ebf1c), [#32022](https://github.com/open-webui/open-webui/issues/32022) +- ๐Ÿ”ญ **Port previews in per-chat terminals.** With a terminal that gives each chat its own session, the open ports list and port previews in the file browser now come from that chat's session, where they showed the ports of the shared session. [Commit](https://github.com/open-webui/open-webui/commit/5ec6cf320567cdb09090c073e41758efbdaa970b), [Commit](https://github.com/open-webui/open-webui/commit/88ff2c65cfee7c251c8746f88d6f9fd794ce0b66) + +### Changed + +- โš ๏ธ **Database Migrations**: This release includes database schema changes; we strongly recommend backing up your database and all associated data before upgrading in production environments. If you are running a multi-worker, multi-server, or load-balanced deployment, all instances must be updated simultaneously, rolling updates are not supported and will cause application failures due to schema incompatibility. +- โš ๏ธ **IMPORTANT for Milvus and Milvus multitenancy users: back up your Milvus data before upgrading**: On first start with "ENABLE_DB_MIGRATIONS" on (the default), every existing Milvus collection is copied in full into a new one holding its vectors, text and BM25 keyword index together, and Open WebUI only finishes starting once that is done, which can take hours for hundreds of gigabytes and needs free disk space for a second copy of your Milvus data. Nothing is re-embedded, and the originals are only dropped once every copy has succeeded. Back up first and avoid upgrading Milvus and Open WebUI on the same day. Hybrid search on Milvus needs Milvus 2.5 or newer; on older versions the migration is skipped and there is no native hybrid search. [#31645](https://github.com/open-webui/open-webui/pull/31645), [#31660](https://github.com/open-webui/open-webui/pull/31660) +- ๐Ÿ”Œ **ENABLE_PLUGINS is the master switch.** Setting "ENABLE_PLUGINS=false" now turns off every kind of plugin, including external OpenAPI, MCP and Open Terminal servers and personal direct connections, and overrides "ENABLE_TOOLS", "ENABLE_FUNCTIONS" and "ENABLE_TOOL_SERVERS"; all four need a restart to take effect. [Commit](https://github.com/open-webui/open-webui/commit/f50f9e6252209760d0b96f090766e91fb826ecba), [#31509](https://github.com/open-webui/open-webui/issues/31509) +- โšก **orjson on by default.** "ENABLE_ORJSON" now defaults to on, and setting "ENABLE_ORJSON=false" switches back to the standard JSON encoder. [#31616](https://github.com/open-webui/open-webui/pull/31616) +- ๐Ÿ” **Update Redis-backed instances together.** Where several servers share their websocket traffic through Redis, every instance should be updated at the same time, since live chat updates sent by an updated instance do not reach one still on an older version unless "WEBSOCKET_REDIS_ROOM_CHANNELS" is set to false. With room channels on, the Redis user needs the PUBLISH, SUBSCRIBE and PSUBSCRIBE permissions and access to the "&socketio" and "&socketio#*" channels; a missing permission is now logged with how to fix it. [#28818](https://github.com/open-webui/open-webui/pull/28818), [Commit](https://github.com/open-webui/open-webui/commit/1469f73b31ae4b28b4f1fee61fcc6f23d133b0e1) +- ๐ŸŸ๏ธ **Arena models off by default.** "ENABLE_EVALUATION_ARENA_MODELS" now defaults to off, so new installations no longer show the built-in arena model in the model selector; existing installations keep their current setting. [Commit](https://github.com/open-webui/open-webui/commit/77e6bc28932bff9f1d2e1aad5933a2736416e081) +- ๐Ÿชถ **No second OpenCV build.** Installs, pip included, no longer pull in the desktop build of OpenCV next to the headless one Open WebUI already uses, about 115 MB less on x86_64; text read from images inside PDFs is unchanged. [#32125](https://github.com/open-webui/open-webui/pull/32125) + ## [0.11.4] - 2026-09-21 ### Added