Update ghcr.io/open-webui/open-webui Docker tag to v0.12.4 #8

Merged
nick merged 2 commits from renovate/ghcr.io-open-webui-open-webui-0.x into main 2026-10-25 16:19:44 -07:00

This PR contains the following updates:

Package Update Change
ghcr.io/open-webui/open-webui minor v0.11.4 → v0.12.4

Release Notes

open-webui/open-webui (ghcr.io/open-webui/open-webui)

v0.12.4

Compare Source

Added
  • 🎯 Load selected skills on demand. Administrators can turn on "Load selected skills on demand" under Admin Settings > General or set "ENABLE_SKILL_LAZY_LOADING", so skills selected in the chat or attached to a model are only listed for the model to load when it needs them instead of sending their full instructions with every message, while skills mentioned in the message still load right away, and it is off by default and needs the built-in Skills tool. Commit
  • 📍 Compaction shown in chats. A "Context compacted" line now marks the message where older messages were summarized, opens to show the summary and also appears inside a reply when compaction ran between its tool calls, Chat Controls > Overview tags that message, and compaction progress and errors now show in the chat instead of as pop-up notices. Commit, Commit, Commit, Commit, #​31324
  • 🗜️ Compaction in more chats. Context compaction now also runs in temporary chats and in short chats that are already over the threshold, such as one question with a reply full of tool output, so the follow-up and any regenerate or edit of it no longer fail with a context length error. #​32794, Commit, #​32781, Commit, #​32600
  • 🕶️ Hide controls for users. Administrators can now hide single controls from users under Visible controls in Admin Settings > Interface or with "UI_VISIBILITY", such as model capabilities, default features and built-in tools in the model editor, Capture, Compare text, Attach Webpage, Attach Files, Attach Notes, Attach Knowledge and Reference Chats in the + menu, the /status, /model and /settings commands, the usage info, Fork, Merge Responses, Preview, Artifacts, Archive and Tags in chats, Set as default and Keep in Sidebar for models and settings such as the Usage tab and the speech engines, while hidden controls keep their values and the features behind them stay usable, hiding Archive also hides Unarchive, and administrators still see every control. Commit, #​32830
  • 🫙 Unavailable options hidden. Options that cannot take effect are now hidden, such as Capture in the + menu without a Vision model, Attach Notes for users without the Notes permission, the Valves pickers in Chat Controls for disabled tools and functions, the Context Compaction Threshold while context compaction is off, the title, follow-up and tag generation switches in Settings > Interface while the admin has turned them off, Compress Images in Channels for users who cannot use channels, the Web Search in Chat setting while web search is not available to the user, the Voice section of Settings > Interface for users who cannot make calls, group and default permission toggles for features the admin has turned off, the Terminal capability and default terminal in the model editor while no terminal server or direct integration is available, the New Temporary Chat and Delete Chat shortcuts for users who may not use them, the Web Search, Image Generation, Code Interpreter and Memory capabilities and Default Features in the model editor while that feature is off for the instance, built-in tools in the model editor that the model's capabilities rule out or whose feature is off, the engine settings in Admin Settings > Web Search and Admin Settings > Images while web search or image generation is off, the Web Search Query Generation switch in Admin Settings > Interface while web search is off, the Regenerate Menu and terminal settings in Settings > Interface while they cannot apply, "/skills:create" for models that cannot create skills, the Call button while speech-to-text is unavailable, the Audio settings tab for users allowed no speech or calls, the multi-factor authentication section while MFA does not apply to the user and the openwebui.com author link on a new chat while community sharing is off, while saved values are kept for when they apply again. #​32969, #​32967, #​32959, Commit, Commit, Commit, #​32962, #​32973, #​32976, #​32977, #​32980, #​32961, Commit, Commit, Commit, Commit, Commit, Commit, #​32972, Commit, #​32975, Commit, #​32983, Commit, #​32966, Commit, #​32978, Commit, #​32963, Commit, #​32965, Commit, #​32984, Commit, #​32985, Commit, #​32986, Commit, #​32974, Commit, #​32981, Commit, #​32971, Commit, #​32970, Commit, #​32964, Commit, #​32830
  • 🔏 Access button respects sharing. The Access button and menu entry of models, prompts, tools, knowledge, skills and notes and the Access button in folder settings are now hidden from users without the matching sharing permission, who had nothing they could change in its dialog. #​32979, Commit, #​32830
  • 🖇️ Attach entries without uploads. When files cannot be attached, because of a missing permission or a selected model without File Upload, the greyed Attach Knowledge, Reference Chats and Attach Notes entries in the + menu no longer open and the # and @​ lists leave out what cannot be attached, including pasted links for users without the web upload permission, so a picked item no longer vanishes from the input without a message. #​32968, Commit, #​32830
  • ⏱️ Exact last active time. Hovering the last active time in the admin user list and in a group's member list now shows the exact date and time. Commit
  • 🗨️ New chat from folders. A folder's menu in the sidebar now has a New Chat item that starts a chat in that folder. Commit
  • 🪪 Profile cards across the workspace. Hovering an owner's name in the workspace lists of models, knowledge, prompts, skills and tools and in admin Functions now opens their profile card instead of an email tooltip, with their profile picture next to the name, profile pictures in access settings, version history and the Analytics user list open the card too and the Notes list shows each owner's profile picture. Commit, Commit, Commit, Commit, Commit, Commit
  • 🔢 Turn count in chat previews. The preview shown when hovering a chat in the sidebar now shows how many user and assistant turns its current branch has. Commit
  • 🎚️ Chat Controls saved per setting. A change in a chat's Controls, such as its system prompt or a parameter, now saves only that setting, so a copy of the chat open in another tab or on another device no longer wipes it with older settings. Commit, #​32755
  • 🪃 Questions survive reconnects. When the page reloads or loses its connection while Ask User, a tool approval, an MCP server's input request or a function's confirmation or input dialog waits for you, the question now comes back once you reopen that chat within a minute, so the request no longer waits without an answer. Commit
  • ✍️ Note edits by text. The model can now edit a note by finding and replacing exact text instead of only by character offsets, picking one match or all of them and getting the positions and surrounding text back when a match is ambiguous. Commit, #​32752
  • 🔍 Compare view stays aligned. Matching rows in the two panes of the Compare view now stay lined up and in place while scrolling, resizing or editing, and a colored bar now marks changed lines also while whitespace or emphasis markers are ignored. Commit, Commit, Commit, Commit
  • 🖱️ Clickable setting labels. Clicking the label of a setting across user and admin settings, including advanced parameters and connections, now toggles its switch, focuses its field or presses its button, and the label highlights while the row is hovered or focused, so the right control is easier to find. Commit, Commit, Commit, #​32768, #​32900
  • ☑️ Select several sidebar chats. Shift-clicking a chat in the sidebar starts a selection that more clicks or a shift-click range extend, and the selected chats can then be archived or, with the delete permission, deleted together, while Escape clears the selection. Commit, #​32543
  • 🫲 Swipe open Chat Controls. On a phone, swiping left across a chat now pulls in the Chat Controls panel, which follows your finger like the sidebar does and closes again with a swipe to the right. Commit
  • 🗃️ Bulk file management. Manage Files in Settings > Data Controls can now download a single file and lets you select several files or all files matching a search to delete them or download them together as one zip archive, with progress and a stop button. Commit
  • 📥 Accurate upload status. A file uploaded to a knowledge base now only shows as done once it is indexed and linked to the knowledge base, so it no longer shows as done and then goes missing from the list until a reload. Commit, #​32803
  • ⏳ Knowledge files show Processing. A file added to a knowledge base now switches from Uploading to Processing once it reaches the server, and the list keeps itself up to date until the file is ready, so it no longer says Uploading until you reopen the knowledge base. #​32982, Commit
  • 🧮 Knowledge uploads listed at once. Files selected or dropped together into a knowledge base now all appear as Uploading right away in upload order, so each one no longer waits to appear until the file before it has finished processing. #​32992, Commit
  • 📈 Analytics by tokens. The Admin Analytics dashboard now ranks models and users by tokens by default with a switch back to messages, and its usage chart adds volume and activity views, a single model view, a comparison with the previous period, a choice of time steps and Year to date and Last 12 months ranges. Commit, Commit, Commit, Commit, Commit, Commit
  • 🗂️ File browser grid view. The terminal file browser can now switch between a list and a grid view from its menu, folders show how many items they hold, and on larger screens hovering a file shows a preview, up to 1 MB for text files and 20 MB for images, audio, video and documents. Commit, Commit, Commit
  • 📁 File browser folder menu. A folder's menu in the terminal file browser now has New File and New Folder items that create the file or folder inside that folder. Commit, Commit
  • 📬 First-message terminal uploads. With Chat Uploads set to Filesystem on a Per chat terminal, a file attached to the first message of a new chat now waits and uploads into that chat's own terminal when the message is sent, so it no longer lands in the shared workspace. Commit, #​30245
  • 🪧 Folder descriptions. Folders can now have a description in their settings, shown under the folder title on the folder's page. Commit, Commit
  • 🚚 Organize chats in shared folders. The owner of a shared folder can now rename chats other people started in it and drag them to another folder within the same shared folder. Commit
  • 🛰️ MCP protocol 2026-07-28. MCP connections now also work with servers that speak the stateless 2026-07-28 protocol version, while older servers still connect through the earlier handshake. #​33087, Commit, #​29778
  • 📧 LDAP default email domain. Administrators can now set a default email domain in the LDAP settings or with "LDAP_DEFAULT_EMAIL_DOMAIN", so LDAP users without a mail attribute sign in with their username at that domain as their email address and into any existing account with that address, which is why the domain should be one you control. Commit, #​33001
  • 🔐 OAuth connections over the API. Connections set to OAuth authentication now also send the user's OAuth token when the user calls the API with an API key or bearer token, like tool servers already did. #​32826, Commit, #​32820
  • 🫣 Hidden base models for groups. Administrators can now turn on the Hidden Models permission under Models Access in the user and group permissions, or set "USER_PERMISSIONS_WORKSPACE_MODELS_HIDDEN", so those users can pick hidden models as the base model of a workspace model while the hidden models stay out of their model picker. Commit, #​29806, #​29639
  • 🧾 Model usage in audit logs. With audit logging on and "/chat" removed from "AUDIT_EXCLUDED_PATHS", where it is excluded by default, each chat reply and tool call round now writes its own audit log entry with the model and the input, output and total tokens the provider reported, linked to the request that started it. Commit, #​30098
  • 📨 Voice call user headers. With "ENABLE_FORWARD_USER_INFO_HEADERS" on, Realtime voice calls now also send the user info headers, or the signed user JWT when configured, to the realtime provider, like chat requests do. #​32733, Commit
  • 🏎️ Faster action buttons. An action button now only saves the chat again when the action changed a message, so actions on large chats finish sooner. Commit, #​32658, Commit
  • 👪 Faster group saves. Saving, deleting or changing the members or permissions of a group now finishes in well under a second with thousands of users online, where it took several seconds and reloaded the open chat of everyone online. #​32883, Commit, #​32882, Commit
  • 🧳 Faster folder changes. Renaming, sharing, moving or deleting a folder and deleting all chats now finish quickly with thousands of users online, where each took several seconds and reloaded the open chat of everyone online. #​32888, Commit
  • 📣 Faster channel posts. Posting a message in a channel with many members online now returns in a fraction of a second, where it waited for every online member's login to be checked again first. #​32889, Commit
  • 📊 Faster analytics dashboard. The Admin Analytics dashboard now gets its totals, model and user lists and daily charts from fewer and lighter database queries, so it opens faster on instances with many messages. Commit
  • ♻️ Prompt cache survives restarts. Tools from tool servers, Open Terminal included, now reach the model in the same form after every restart, so the provider's prompt cache keeps working and long chats are no longer processed again from scratch. #​33000, Commit
  • 👁️ PDF image OCR stays light. With PDF Extract Images (OCR) on, reading text from images in PDFs now uses one processor thread per upload by default, so uploads no longer start a thread pool the size of the server's cores that could slow the whole server down, and administrators can pass their own RapidOCR settings with "RAPIDOCR_PARAMS". Commit, #​32844
  • ♿ Improved UI accessibility. Screen reader users now hear the Send button, the sidebar's user menu button by the name it shows, Playground's role button by the word it shows, the model editor's Description, Tools, Skills, Filters and Actions rows by what they show, a sidebar folder's options button, the sidebar button on Calendar, Notes, Channels and Home on phones, the on/off switches on Skills, Functions and Automations rows, the suggested prompts on a new chat as buttons, Archived Chats as a table, the sort order on the column headers of Archived Chats and the Evaluations leaderboard, chat input pills and menus, copy, export, merge and artifact buttons, clear search and Cancel buttons, the note editor's Undo, Redo, Record and Note Menu buttons, Playground's System Instructions button and model selects, the code box in the tool and function editors, switches, icon buttons, selects and number inputs in Admin Settings, the Create knowledge base, Create Prompt and Clone Prompt dialogs and the close button of 22 dialogs by name, together with a source's number, the number on a channel's member count button, the choice a Visibility button shows, a resizable panel's width, how long ago each sidebar chat was updated, the info button under a reply with its usage figures, a model's description, notifications such as copy confirmations (copying a prompt in Workspace included), when a reply starts and finishes, call mode's Listening and Thinking status, menu buttons as menus with their open state, the selected search content type, how many archived chats a search found, how many models match a search in the model picker, the Settings window by name, the sidebar folder toggle by name with its open state, the chosen option in Select dropdowns, the search window's list by its visible caption, a heading on each Workspace page, the sidebar section titles and chat date groups as headings, the sidebar's models, folders and chats as lists, the Settings tabs as Personal and Admin tab lists that point to their panels, the items of the input, integrations, user and chat menus as menu items, the Keyboard tab's shortcut categories as headings with a list under each, the chat input as a text field, the sidebar logo link as New Chat, the onboarding logo by the instance name with other branding images hidden as decoration, the model logos on a new chat by model name (hidden when only one model is selected), the model the arrow keys are on in the model picker, the model name and the Suggested label on a new chat as headings, the suggestion list by name and the chat title as the page heading, and no longer hear an open or closed state on the area around the sidebar button in Channels on phones; keyboard users get the model picker's More and Eject buttons that show on focus, filter lists that move focus to their options when opened, tooltips that show on focus and close with Escape, Escape in the model picker's More menu or filter list that closes only that list, focus that returns to the model picker button when the picker closes with Accessibility Mode on, an outline on the model picker row the arrow keys are on, focus that moves to the other sidebar button when the sidebar opens or closes, arrow keys that move through the input, integrations, user, chat and Terminal menus, a Terminal menu that opens on its first terminal, a Tab key that reaches the note editor's Record and Note Menu buttons, Evaluations leaderboard columns they can sort and models they can open from it, focus that stays on a Workspace section link after choosing it, focus that stays in the Archived Chats list after unarchiving a chat, focus on the recording bar when dictation starts and a Skip to main content link that now moves focus to the page content; notification text in the light theme and the chat dates in Archived Chats now meet the 4.5:1 contrast minimum; buttons in the collapsed sidebar, on sidebar folders, on Prompts, Skills, Functions and Automations rows, on Workspace and Notes list rows, on attached files and in the Integrations menu are no longer nested inside other buttons; the Archived Chats and Keyboard lists stay usable at 400% zoom; and with Accessibility Mode on, pinch zoom works on phones, the active Workspace section is underlined, code editor placeholders, the model editor's JSON Preview row and Calendar's days from other months and today's date meet the contrast minimum, and the More and Eject buttons and Set as default in the model picker, the version link and See what's new in Settings > About, the sidebar's Chat Menu button, the Note Menu and Delete buttons in Notes, the More button on file rows, the Create button's menu arrow, Calendar's previous and next month buttons and the name, ID and command fields in the model and prompt editors are at least 24 pixels in size.
  • 🔄 General improvements. Various improvements were implemented across the application to enhance performance, stability, and security.
  • 🌐 Translation updates. Translations for Korean, Cebuano, Thai, German, Japanese, Vietnamese, Urdu, Bengali, Hungarian, Tibetan, Turkmen, Lithuanian, Danish, Basque, Irish, Slovenian, Estonian, Croatian, Faroese, Georgian, Portuguese (Brazil), Spanish (Spain), Hindi, Finnish, Kabyle, Galician, Uyghur, Slovak, Norwegian Bokmål, Serbian, Ukrainian, Polish, Turkish, Bosnian, Dutch, Czech, Bulgarian, Hebrew, Punjabi, Swedish, Romanian, Persian, Greek, Malay, Latvian, Azerbaijani, Indonesian, Tamil, Filipino and Russian were enhanced and expanded.
Fixed
  • 🛡️ Security Advisory: This release contains security fixes. We strongly recommend updating all deployments as soon as possible to have the latest security fixes in place. These fixes are not listed in this changelog; we will publish the security advisories for them immediately following CVE assignment. Advisories
  • 📤 Chat export permission respected. The Export item of a folder in the sidebar, the Export option in Archived Chats and the Copy option in the chat menu are now hidden from users without the Allow Chat Export permission, like the export options of single chats. #​32703, Commit, #​32702, #​32684, Commit, #​32683, #​32960, Commit
  • 🎛️ Pipe Valves permission respected. The Valves button of a pipe model in the chat input is now hidden from users without the Allow Chat Valves permission. #​32772, Commit, #​32771
  • 👥 One model without Multiple Models. A new chat now starts with a single model for users without the Multiple Models permission, where a default or a link with several models kept them all selected. #​32668, Commit, #​32667
  • 🖊️ Chat Edit permission respected. The Edit button of a user's own messages is now hidden from users without the Allow Chat Edit permission, where only the Edit button of replies was hidden. #​32841, Commit, #​32832
  • 📅 Calendar page respects access. Opening the Calendar page with Calendar turned off or without the Calendar permission now returns to the home page, where it showed an empty calendar and an error. #​32837, Commit, #​32834
  • 🔒 Live access after archiving. People who see a chat through a shared folder now stop receiving its live updates when the owner archives it or archives all chats, and people with a share link stop when the owner unshares all chats, as they already did when a single chat was unshared or deleted. #​32887, Commit
  • 🧵 Thread replies deleted too. Deleting a channel message now also deletes its thread replies, which stayed behind and could still be found in search. #​32666, Commit, #​32665
  • 🔗 Shared chat pages load once. Chats opened under /s/, through a share link or by an administrator viewing another user's chat, no longer reload over and over and jump back to the bottom, which since 0.12.3 made scrolling up impossible. #​32725, Commit, #​32657
  • 🧹 Deleting the open chat. Deleting the chat you are viewing from the sidebar now opens an empty new chat, where the deleted chat's messages stayed on screen and the next message failed, in Safari with "The string did not match the expected pattern." #​33069, Commit, #​33068
  • 🪡 More Concise and Add Details. Choosing More Concise or Add Details or typing a suggestion under a reply now rewrites that reply, where the model got the instruction without the reply and answered it on its own, for example with "OK, I'll keep answers shorter". #​33084, Commit, #​33083
  • 📱 Sign-in page on small screens. The sign-in page can now be scrolled when it is taller than the screen, such as on phones with the keyboard open, where parts of the form could be out of reach. Commit
  • 🖼️ Note menu image uploads. Images picked with Upload files in a note's menu now appear in the note, where they were saved with the note's files but never inserted. #​32793, Commit, #​32792
  • 📜 Prompt history on unchanged saves. Saving a prompt without changes no longer adds an identical version to its history. #​32709, Commit, #​32708
  • 🎨 Images after tool approval. Images the model generates after you answer its question or approve or reject a tool call now appear in the reply, where they were created but never shown and the model kept retrying with more hidden images. #​32680, Commit, #​32678
  • 🧬 Embeddings with Prefix ID. The embeddings API now works with models from a connection that has a Prefix ID, where the provider rejected the prefixed model name as unknown. #​32724, Commit, #​32715
  • 📞 Realtime calls answer once. A Realtime call no longer answers the same sentence twice when a short pause splits it into two turns. #​32773, Commit, #​32764
  • ⬅️ Right-to-left question cards. Question cards from Ask User now follow the Chat Direction setting, so Hebrew and Arabic questions and answers are laid out right to left. #​32784, Commit, #​32778
  • 🛠️ Same-named tool functions. When two attached tools have a function with the same name, the model can now call both, where only the first one could be called. #​32670, Commit, #​32669
  • 🧷 Tool server array parameters. An array query parameter now reaches an OpenAPI tool server as repeated values instead of one text value that looks like a Python list. #​32677, Commit, #​32676
  • 📖 Reading files in pages. The model's file reading tools now return every part of a file or knowledge base file read in pages with line numbers on, where some text between pages was skipped, and asking for only an end line now reads from the first line up to it, where the model got the same opening part back and kept retrying. #​33155, Commit, #​33099, #​33154, Commit, #​33100
  • 📚 Multi-folder knowledge drops. Dropping several folders on a knowledge base now uploads all of them, where only the first one was uploaded. #​32653, Commit, #​32652
  • 🙈 Base models after publishing. Hiding, toggling or editing a base model right after making it public in Admin Settings > Models is now saved. #​32655, Commit, #​32654
  • 🧩 Restored skill-only drafts. A draft that holds only a skill, brought back to the chat input, now sends only that skill, where the names of every skill were sent. #​32690, Commit, #​32689
  • 🐍 Python code block results. Running a plotting block again now shows only the new plot, and a block whose last value is a date, decimal number or other object shows that value instead of "Maximum call stack size exceeded". #​32686, Commit, #​32685, #​32682, Commit, #​32681
  • 🪟 Preview of an earlier artifact. Preview on an earlier code block now opens that block's artifact when the artifacts pane was closed, where it opened the newest one. #​32688, Commit, #​32687
  • 📎 Attachments in the chat input. An attached webpage now stays when file upload is not allowed, and a file's Entire Document switch shows that file's own setting after another attachment is removed. #​32701, Commit, #​32700, #​32699, Commit, #​32698
  • 🕸️ Web pages on fresh installs. Attached web pages and other HTML text extraction return their text again on fresh installs, where a broken update of a library underneath made them come back empty. #​33103, Commit
  • 🔎 Shared Chats search paging. A search in Shared Chats or in an admin's view of a user's chats now loads more than the first 60 results. #​32675, Commit, #​32674
  • 📂 Open folder stays open. Deleting another folder in the sidebar no longer closes the folder page you have open. #​32697, Commit, #​32696
  • 📝 Note pins and counts. The Notes list now shows Pin for a note unpinned from the sidebar, and readers of a note shared as read only see its word and character counts instead of zero. #​32707, Commit, #​32706, #​32711, Commit, #​32710
  • 🪞 Notes open once. A note that two people open at the same time, such as one imported from a Markdown or text file and not edited since, no longer shows and saves its text twice, also with several workers. #​33004, Commit, #​33002, Commit, #​32824
  • 🔊 Voice from Settings > Audio. Read Aloud and voice mode now use the voice picked in Settings > Audio, which in Firefox fell back to the default voice. #​32705, Commit, #​32704
  • 🔈 Read Aloud stops on failure. Read Aloud now stops requesting the remaining sentences once one fails, so an unavailable speech provider shows a single error instead of one for every sentence. #​33028, Commit, #​33023
  • 🗄️ Archived chats survive folders. Archive All Chats now takes the chats out of their folders, so deleting a folder afterwards no longer deletes those archived chats for good. #​32647, Commit, #​32646
  • 🔌 No hangs after closed pages. Closing a page while it was still loading, such as a chat export or a file's processing status, no longer loses database connections on SQLite, where later requests could hang or fail with 503 once enough were lost. #​32617, Commit, #​32609, #​32741
  • 🧱 Frontend build on Windows. Running npm run build or npm run dev on Windows works again, where the encryption module check added in 0.12.3 failed on Windows paths and line endings, and the build now runs with a 12 GB memory limit like the Docker build. #​32735, Commit, #​32656
  • 🪄 Function input dialogs answered. Confirming or cancelling a function's input or confirmation dialog now reaches the function when a script event arrived while the dialog was open, where the function kept waiting for an answer. #​32744, Commit, #​32742
  • ❓ Clearer Ask User error. When a model sends the Ask User questions as something other than a list, such as a JSON string, it now gets an error saying they must be an array of question objects instead of "ask_user requires 1-3 questions", which made models repeat the same call. #​32727, Commit, #​32662
  • 🛑 Stop sequences with percent. A stop sequence containing % no longer stops every message from sending. #​32649, Commit, #​32648
  • 🗜️ Channel image compression by default. With image compression on, images in channels are now compressed when Compress Images in Channels is left at its default, where they were sent uncompressed. #​32693, Commit, #​32692
  • 🎙️ Microphone off when leaving. Leaving a chat while dictating now turns the microphone off. #​32640, Commit, #​32638, #​32639
  • ✏️ Chat titles of only spaces. Renaming a chat to only spaces now keeps its title and shows an error instead of saving a blank title. #​32770, Commit, #​32769
  • 💬 Prompts from / in channels. Picking a prompt from the / menu in a channel now inserts the prompt text instead of a command chip. #​32713, Commit, #​32712
  • 🔤 No stray formatting spaces. Chat messages no longer show an extra space at the start of each paragraph and before italic, bold, struck-through or linked text, which appeared in 0.12.3 and left a gap after an em dash. #​32743, Commit, #​32739
  • 🔁 FastMCP list results sent once. List results from tools on servers built with the standalone FastMCP package now reach the model once instead of twice, as text and as structured data. #​32726, Commit, #​32719
  • 🪢 MCP tools with alternative inputs. MCP tools that describe their input as alternatives, such as a page by ID or by path, now receive the arguments the model sends, where they were called with none and the server rejected the call. #​32903, Commit, #​32898
  • 🩺 Readable MCP tool errors. When an MCP tool returns an error, the model now gets the server's error text as written instead of an unreadable dump of the whole result, so it can correct the call where it tended to retry the same broken one. #​32942, Commit, #​32918
  • 📞 Ended Realtime calls named correctly. When the voice provider ends a Realtime call, the call now shows "Voice provider connection closed" instead of sometimes showing "Voice connection failed". #​32730, Commit, #​32729
  • 🧭 Scrolling while a reply streams. On slow or busy devices a streaming reply now keeps the view at the bottom as its content grows, where it stopped following partway through, and scrolling up while it streams is no longer pulled back down. Commit, #​32728
  • ⚡ Early updates in new chats. The first reply of a new chat no longer stays empty with the Stop button showing when its error or content arrives before the page knows the new chat, a message added while a chat is still loading no longer stays missing until a reload, and a message queued during the first reply of a new chat is sent once that reply finishes. Commit, Commit, #​32550, #​32761
  • 🧠 Reasoning replay with Azure. Reasoning models on Azure OpenAI through the Responses API no longer fail with an "Unknown parameter" error on the request after they think and then call a tool. Commit, #​32805
  • 📋 Drafts with variables kept. Reloading the page with a chat input draft that contains {{ }} placeholders, or editing a queued message that contains them, now keeps the text as it was, where it asked for input variables and dropped the text. Commit, #​32650
  • 🔑 OAuth 2.1 static MCP secrets. MCP connections using OAuth 2.1 (Static) now send the client secret through HTTP Basic authentication when the server does not take it as a form field, where servers such as X Ads that list the public client method first got no secret and rejected the sign-in. #​32818, Commit, #​32813
  • 🌍 Web Search settings save. Admins can now save Web Search settings such as the web loader while web search is turned off, where empty search engine fields blocked saving. #​32840, Commit, #​32831
  • 🖌️ Images settings save. Admins can now save Images settings while Image Generation or Image Edit is turned off, where a missing API key or URL for that feature's engine, such as the OpenAI key on a fresh install, blocked every change on the page. #​32949, Commit, #​32835
  • 🌄 WebP image editing. Editing a WebP image with Image Edit now works in the Docker image, where the image reached the provider without an image type and was rejected. #​32902, Commit, #​32899
  • 🍴 No fork in temporary chats. The Fork chat option is now hidden in temporary chats and the /fork command answers that there is no chat to fork, where forking failed with an error. #​32839, Commit, #​32833
  • 🚀 First message after loading. A message sent right after the page loads is no longer wiped by the new chat setup still running, where it disappeared and its reply stayed empty until a reload. #​32829, Commit, #​32819
  • 📑 MinerU key in local mode. Document extraction with MinerU in local mode now sends the configured API key to MinerU 4.x servers that require one, where every document failed. #​32838, Commit, #​32836
  • 🚫 Model import reports taken IDs. Importing models on the Workspace Models page now stops with an error at a model whose ID belongs to another user's model the importer cannot edit or, for non-admins, to a connection model, where that model was skipped without a message. #​32866, Commit
  • 🎞️ Left-aligned PowerPoint titles. The PowerPoint preview now keeps titles and subtitles that the file aligns left on the left, where it centered them. #​32876, Commit, #​32873
  • 🫥 Multi-model hover previews. Sidebar hover previews of a chat with replies from several models now show one reply at full width, where every reply was squeezed into the card. Commit, #​32858
  • 🐚 Launcher help in zsh. The examples in the Docker Compose launcher help now quote options with square brackets, so they also work when pasted into zsh. #​32881, Commit, #​32878
  • 🌡️ Context gauge uses model threshold. The context usage gauge now measures against the compaction threshold set on the model or in the default model parameters, the same one compaction uses, where it ignored a lower threshold on the model and showed a chat as far from compaction. Commit, #​32821
  • 🏷️ Tooltips show text as written. Tooltips now show names, paths and descriptions that contain angle brackets as written, where they came out mangled or partly missing. #​32953, Commit
  • 📇 Knowledge file text edits. The Preview of a text file in a knowledge base now shows its indexed text and refreshes after you save an edit, where it kept showing the original upload, and saving empty content is now refused. Commit
  • 📡 Websockets after Redis reconnects. With the Redis websocket manager and "retry_on_timeout" in "WEBSOCKET_REDIS_OPTIONS", an instance now accepts new browser connections again once Redis is back after its connection dropped, where since 0.12.3 every new connection could hang until the instance was restarted. #​33009, Commit, #​33008
  • 🥞 One model More menu open. Clicking the More button of another model in the model picker, or clicking another model, now closes the More menu that was open, where the menus stayed open and piled up over the picker. #​33020, Commit, #​33019
Changed
  • 🔧 Direct Integrations off disables connections. While Direct Integrations is off, as it is by default, the tool servers and Open Terminal connections that users and admins saved in their Integrations settings are no longer used in chats, where turning it off only hid the settings tab, so instances that never turned it on lose those connections until an admin turns on Direct Integrations in Admin Settings > Connections or sets "ENABLE_DIRECT_INTEGRATIONS". #​32996, Commit
  • 🔀 Sharing changed only in Access. Saving a model, prompt, tool, skill, knowledge base, note, channel or calendar no longer changes who it is shared with, which is now changed only in the item's Access settings, saved right away in the model editor, channel settings and external knowledge sources, or through the access endpoints that channels and calendars now also have. Commit, Commit
  • 🐳 Python 3.12 Docker image. The Docker image now runs Python 3.12 on Debian 13 instead of Python 3.11 on Debian 12, so custom functions, tools and packages installed with pip inside the container need versions that support Python 3.12. #​32861, Commit
  • 🤝 Sharing permissions enforced everywhere. Sharing permissions such as Models Sharing, Knowledge Sharing and Folders Sharing now also apply to sharing through the API, and a change in an item's Access settings that a user is not allowed to make is now refused with an error instead of being quietly left out. Commit
  • 🗄️ Manage Files shows only yours. Manage Files in Settings > Data Controls now lists only your own files, also for administrators, who saw every user's files there while "BYPASS_ADMIN_ACCESS_CONTROL" was on, as it is by default. Commit
  • 🕹️ Model controls for all users. Anyone with access to a model can now pick its model control options, such as a Thinking level, and parameters saved to an account are no longer filtered by the Allow Chat Controls and Allow Chat Params permissions, which now only hide the Chat Controls and Advanced Parameters panels. #​32860, Commit, #​32626
  • 🚦 Stricter MCP timeouts and redirects. "MCP_INITIALIZE_TIMEOUT", 10 seconds by default, now also limits listing tools and reading resources on MCP servers, so slow servers may need a higher value, and MCP connections now only follow redirects that stay on the same address. #​33087, Commit
  • ⌨️ Shift quick actions removed. Holding Shift over a sidebar chat no longer shows the quick Archive and Delete buttons, since Shift-click now selects chats, which are then archived or deleted together, and deleting asks for confirmation first. Commit, #​32543
  • ✉️ No emails on hover. Hovering an owner in the workspace lists and admin Functions, or a person in access settings, no longer shows their email address, since the profile card that replaces the tooltip does not include it. Commit, Commit, Commit

v0.12.3

Compare Source

Added
  • 🔐 End-to-end encrypted chats. Direct messages and private group channels can now hold a temporary end-to-end encrypted chat: a member picks Encrypted Chat in the channel menu, the other members see "Encrypted chat in progress" with a Join link, messages of up to 16 KiB are encrypted in the browser with MLS and only passed through the server without being saved, participants can verify each other by comparing codes and see when others are typing, and the chat is cleared when you leave or reload and ends when channel membership or access changes. Administrators turn it on under Admin Settings > General > Encrypted channels or with "ENABLE_ENCRYPTED_CHANNELS" and grant it with the new Encrypted Channels permission, off by default or set with "USER_PERMISSIONS_FEATURES_ENCRYPTED_CHANNELS", and it needs websocket connections with websocket server logging off and HTTPS in production. Commit, Commit, Commit, Commit
  • 📡 Much lighter streaming with Redis. With Redis, a streaming reply is now stored under its own key and new text is appended to it instead of rewriting the whole reply into a shared hash on every update, and replies started on older instances are still read during an upgrade; with room channels on, each instance now only subscribes to the rooms of people connected to it, so Redis no longer sends it live updates for chats it does not serve. Commit Commit #​32478
  • 🔍 Compare view options and undo. The Compare revision view has a Comparison options menu to ignore whitespace, ignore emphasis markers or only show changes with the unchanged lines folded away, an Undo button that steps back through your edits in both panes in order, and changed lines that are now lined up by their matching text. Commit, Commit, Commit, Commit
  • 📝 Richer Markdown file previews. Markdown files opened in the terminal file browser now render with the same renderer as chat replies, including math, footnotes, highlighted code blocks, alerts and Mermaid diagrams, as well as HTML blocks mixed with Markdown, laid out as a compact document, and task list checkboxes in an editable file can be ticked to save the change to the file. Commit Commit Commit #​32514
  • 👀 Live collaborators in shared chats. The top bar of a chat now shows the pictures of the other people who have the same chat open at that moment, up to three and a count for the rest, with a Collaborators list that opens their profile cards. Commit, Commit, Commit
  • ✏️ Edit and regenerate in shared chats with replies. In a chat from a shared folder that allows replies, people who may edit messages can now edit a prompt to start a new branch and regenerate any reply, not only replies to their own messages, and others viewing the chat stay on the branch they had selected. Commit, Commit
  • 🗄️ Folder access in the folder editor. Sharing a folder now happens through an Access button in the Edit Folder dialog instead of a Share item in the folder menu, the sharing mode can be set before anyone is added, and subfolders note that access granted to parent folders also applies to them. Commit, Commit
  • 🔎 Workspace search. The search window now searches your chats, chats in folders shared with you, chats shared with you, channel and direct messages and notes in one place, with filters for content type, a folder or channel, and whether something was created by you or shared with you, highlighted matches, a preview of each result with Ctrl/Cmd + Enter, Copy link, and channel results that open the thread scrolled to the matching message. Commit, Commit, Commit
  • 💭 Comments in document previews. Word, Excel, PowerPoint and PDF files opened in the terminal file browser now show their comments and replies, marked where they belong in the document and opened by hovering or tapping a marker, and older .xls spreadsheets can now be previewed too. Commit
  • 🧹 Clear Input Selections shortcut. Clearing the model override, selected tools and filters and the web search, image generation and code interpreter toggles from the chat input is now a shortcut you can change in Settings > Shortcuts, still Escape by default. Commit
  • 🙋 Ask about a file from the file browser. Selecting text in a file open in the terminal file browser now shows an "Ask or edit…" box that sends your request to the model with the file attached and the selection quoted, so it can answer or edit that file in the same terminal; unsaved edits can be saved before sending, and requests sent while a reply is running wait in the queue. Commit
  • ☁️ Google Drive access limited to picked files. The Google Drive picker now asks only for access to the files a user picks instead of read access to their whole Drive, so self-hosted installs no longer need Google's restricted-scope verification and users no longer see the "Google hasn't verified this app" warning. #​32531 Commit #​29537
  • 📜 Full text of long status lines. Status lines above a reply, such as a token usage summary sent by a function, can now be clicked to show their full text, and with several status lines the history shows every entry in full. #​32532 Commit #​30056
  • 📏 Skill read limits. Administrators can set how many characters of a skill the model reads at once and how long the preview of longer instructions is, under Admin Settings > General with "Skill Read Limit" and "Skill Preview Length" or the "SKILL_CONTENT_MAX_CHARS" and "SKILL_PREVIEW_MAX_CHARS" environment variables, which default to 20000 and 5000. Commit
  • 🔄 General improvements. Various improvements were implemented across the application to enhance performance, stability, and security.
  • 🌐 Translation updates. Translations for Portuguese (Brazil), Chinese (Traditional), Arabic, Bengali, Hebrew, Georgian, Punjabi, Slovak, Serbian, Urdu, Uzbek and Vietnamese were enhanced and expanded. #​32440, #​32482, #​32501
Fixed
  • 🧾 API key header requests in the audit log. Requests authenticated with an API key in the x-api-key header, as Anthropic SDKs send it, or in a header set with "CUSTOM_API_KEY_HEADER" now appear in the audit log under the key's owner, and failed attempts with a wrong key are logged without a user, where these requests were missing from the audit log. #​32443, Commit
  • 📚 Knowledge sharing kept on rename. A collaborator with write access who edits a shared knowledge base's name or description no longer turns off sharing they could not set themselves, such as Public. #​32450, Commit, #​32449
  • 🤝 Prompt and tool sharing kept on save. A collaborator with write access who saves a shared prompt or tool no longer makes it private for everyone; sharing they could not set themselves is now kept. #​32493, Commit, #​32492
  • 📄 PDF export of long notes and chats. Long notes and chats now download as PDF, where Firefox failed with "Canvas exceeds max size" and Chrome saved a black PDF. #​32459, Commit, #​18334, #​26373, #​19583
  • ⏩ Continue Response with several models. Continue Response now continues the reply it was clicked under, where in a chat with several models it could extend another model's reply. #​32456, Commit, #​32455
  • 🏷️ Tags of imported chats. Imported chats now show their tags and the tags appear in tag suggestions, where tags missing from the account were not created on import. #​32454, Commit, #​32453
  • 🔖 Tags of archived chats. Searching the sidebar for a tag whose chats are all archived no longer deletes the tag, which lost its original name when the chats were unarchived. #​32452, Commit, #​32451
  • ⌨️ Input methods in channels. Pressing Enter to confirm a word while typing with an input method, such as for Japanese, Chinese or Korean, no longer sends and clears a channel message before the word is in. Commit
  • 🖱️ Scroll error after leaving a chat. Scrolling a chat right before opening Notes no longer logs a TypeError in the browser console. #​32458, Commit, #​32457
  • 📐 Steady first turn in new chats. The latest message and reply in a new chat now keep their real height when the chat gets saved and the message list reloads, so the view no longer jumps on the first turn. Commit
  • 💬 Sending in channels. Your own channel message now stays in place when the server confirms it instead of being redrawn, and the channel scrolls to your new message as you send it, where it could jump or keep the old scroll position. Commit
  • 📂 Terminal folder in new chats. In a new chat, files you attach are uploaded to the folder open in the terminal file browser and the file browser stays in that folder once the chat is created, where uploads could go to the default folder and the browser jumped back to it. Commit
  • 📁 Shared folder settings and access. Editing a shared folder's models, system prompt or files no longer resets its sharing mode, and a subfolder in a folder shared with write access stays writable when it is also shared directly with read access. Commit, Commit
  • 🔑 OAuth token refresh with client_secret_basic. When "OAUTH_TOKEN_ENDPOINT_AUTH_METHOD" is client_secret_basic, token refresh now sends the client credentials in the Basic header like sign-in does, where providers that accept only Basic rejected the refresh and Open WebUI deleted the user's OAuth tokens, breaking model connections and tool servers that use them until the next sign-in. #​32507, Commit, #​32506
  • 🛠️ OAuth tools after sign-in. An OAuth MCP tool now stays turned on after its sign-in redirect when the model has default tools, and links with ?tools= turn the listed tools on. #​32488, Commit, #​32476
  • 🔤 Admin default font kept. Saving Settings > Interface no longer stores the administrator's default font and image compression size as your own settings, so later changes to those defaults still reach you. #​32497, Commit, #​32496
  • 🔊 Read aloud with slow speech. Read aloud no longer stops after the first sentence when the speech engine takes longer to produce the next one than the current one takes to play. #​32484, Commit, #​32446
  • 🖼️ Inline HTML previews on Per chat terminals. Inline HTML previews in replies now find the file in the chat's own terminal workspace when the Open Terminal chat context is Per chat, where they showed "File not found". #​32485, Commit, #​32477
  • 🧵 Replies in channel threads. A reply started in one channel thread no longer carries over to the next thread you open, where messages could quote a message from the other thread. #​32490, Commit, #​32489
  • 📑 Scanned PDF previews. Previewing a scanned PDF without a text layer in the knowledge base viewer no longer scrolls the page up and pushes the header and toolbar out of reach. #​32487, Commit, #​32481
  • ↩️ Right-to-left lists. Bullets, numbers and task checkboxes of Markdown lists now sit on the correct side for right-to-left text in replies and file previews. Commit, #​32444
  • 🔁 Regenerate in cloned shared chats. Regenerate now works in a chat you cloned or forked from someone else's share, where it failed with "You can only regenerate your own messages". #​32508, Commit, #​32505
  • 🗑️ Delete hidden for repliers in shared chats. People replying in a shared chat no longer see a Delete button the server refuses, which made a deleted reply come back on reload; Delete shows to the chat's owner and to administrators when "ENABLE_ADMIN_CHAT_ACCESS" is on. #​32480, Commit, #​32479
  • 🎛️ Model default features can be turned off. A model can now switch off a Default Feature, such as Code Interpreter, that the administrator turned on in Model Defaults, where it came back on when reopened and in new chats. #​32500, Commit, #​32498
  • 🧰 Built-in tools turned back on stay on. A built-in tool such as Memory that is off in Model Defaults now stays on after a model turns it back on and is saved. #​32504, Commit, #​32503
  • 🏠 Refresh with Landing Page Mode set to Chat. Refreshing a new chat when Landing Page Mode is Chat no longer hides the message field and opens the model menu in the top left corner. #​32510, Commit, #​32509
  • 🗜️ Compaction during tool runs keeps sources out. Context compaction during a long series of tool calls now summarizes your own message without the knowledge and file content added to it, and that content is given back to the model afterwards. Commit, #​32491
  • 🧩 Built-in tools with a custom tools parameter. A model with a custom parameter named tools, such as one that turns on a provider's native web search, now keeps its built-in tools, attached tools and file context, and its custom tools are sent alongside them. #​32530 Commit #​32528
  • 🔌 Tool servers back after an outage. With Redis, tools from OpenAPI tool servers now come back once the servers are reachable again, where an empty list cached while every server was down kept them missing until a restart or a save in the tool server settings. #​32533 Commit #​29573
  • 📥 PDF links read as documents. PDFs from sites that block unknown clients, such as Wikimedia, and arXiv links like arxiv.org/pdf/1706.03762 now go to document extraction, where the model got the raw PDF bytes. #​32523 Commit #​32524 Commit
Changed
  • 🎯 Model skills now load their full instructions. With the Skills builtin tool on, skills attached to a model in the model editor, which every new chat pre-selects, and skills picked from the chat input menu now send their full instructions with each message, where they were only listed by name and description for the model to load with view_skill; deployments that attached skills to models only to make them available should remove them from the model to avoid the extra prompt length, since every skill the user can read is listed for the model anyway. Commit
  • 📮 Redis permissions for room channels. With "WEBSOCKET_REDIS_ROOM_CHANNELS" on, the Redis user now needs the PUBLISH, SUBSCRIBE, UNSUBSCRIBE and PING permissions and access to the "&socketio" and "&socketio#*" channels, while PSUBSCRIBE is no longer used; a missing permission is logged with how to fix it. Commit

v0.12.2

Compare Source

Added
  • 📑 MinerU 4.x servers. The MinerU document engine now works with self-hosted MinerU 4.x servers, where every document failed with a 404 because 4.x removed the old parsing interface; 3.x servers work as before, 4.x servers take a tier (flash, basic, standard or advanced) and enable_ocr in the MinerU parameters while language and model_version stay 3.x only, and images that 4.x returns inside the document text are left out of the indexed content. #​32422, Commit, #​31516
  • 🤝 Keep both changes when comparing. The Compare revision view now has a Keep both button that puts the original and the proposed text of the selected change into the proposed revision, original first, so you no longer have to pick one side. Commit
  • 📚 Open attached knowledge from its preview. Clicking the name in the preview of an attached knowledge collection now opens that collection in the workspace, and file and link names are real links that open in a new tab. Commit
  • 🏷️ Model ID in custom headers. Custom headers on connections and tool servers can now use {{MODEL_ID}}, which holds the ID of the model handling the chat request, the workspace model's own ID for a workspace model and each model's own ID in a multi-model chat, so downstream services can route or log usage per model. #​32426, Commit, #​30006
  • 🧾 Requested model in the audit log. Audit log entries for chat and completion requests, including the OpenAI, Ollama and Anthropic compatible endpoints, now carry a model_id field with the model the client asked for at every AUDIT_LOG_LEVEL, where the model only appeared in the request body and went missing when MAX_BODY_LOG_SIZE cut a long prompt; other requests log it as null. #​32429, Commit, #​30097
  • 🔐 Custom TLS certificate for Milvus. Open WebUI can now connect to a Milvus server with a self-signed or company-issued TLS certificate by pointing the new "MILVUS_SERVER_PEM_PATH" environment variable at the certificate file, in normal and multi-tenancy mode. #​32427, Commit, #​31632
  • 🧭 call_tool for Tool Search. With Tool Search on, the model now gets a new call_tool tool and runs a tool it found with search_tools through it, passing the tool's name and its arguments, instead of calling the deferred tool directly by a name that is not in the request's tool list, which strict providers rejected; approvals and other tool behavior stay the same. Commit, #​32243
  • 🔄 General improvements. Various improvements were implemented across the application to enhance performance, stability, and security.
Fixed
  • 🔏 Channel message metadata kept server side. Channel messages posted or edited through the API no longer take their metadata from the request, so a user can no longer make a message appear to come from a channel webhook or a model. #​32421, Commit
  • 👮 SCIM cannot delete admins. An identity provider can no longer delete administrator accounts, including the first admin, through a SCIM delete request, which now answers with 403 and leaves the account in place, so a sync that prunes unassigned users can no longer leave the instance without an administrator; admins are removed in the admin panel. #​32415, Commit, #​27662
  • 🗝️ Collection names checked as stored. Retrieval access checks now compare collection names the way vector stores resolve them, ignoring letter case and treating hyphens and underscores alike, so a name written differently can no longer pass the check as something other than the collection that is then read. #​32435, Commit
  • 📱 Voice on Android Chrome. Voice calls and dictation on Android Chrome no longer go silent or hang on Listening after about ten uses until the page is reloaded, since the microphone level display now releases its audio output after each turn. #​32417, Commit, #​29969
  • 🖥️ Per chat terminal file actions. With the Open Terminal chat context set to Per chat, opening HTML files, running notebooks, saving edited files, creating new files, deleting several selected files and downloading a folder or selection as a zip now use the chat's own workspace, where HTML files showed "File not found" and saved files never appeared in the chat. #​32418, Commit, #​29965
  • 🧮 Memory reindex rate limits. Reindexing memories, from the admin Reindex Knowledge and Memory Vectors button, a user resetting their memory vectors or the automatic reindex after an embedding model change, now follows the Embedding Concurrent Requests limit and batch size, where it sent one request per memory at once and rate-limited providers failed most of them with 429 errors. #​32420, Commit, #​32212
  • ⏰ Automation run results. An automation run is now recorded as successful only after its reply finishes, and a reply that fails or is cancelled is recorded as an error that links to the chat, where runs counted as successful as soon as the reply started. Commit
  • 📜 Long polling kept out of the audit log. With websocket support turned off, every socket.io long polling request is no longer written to the audit log as its own entry, which flooded it and could not be filtered with AUDIT_EXCLUDED_PATHS, so the audit log looks the same with either transport. #​32425, Commit, #​31871
  • 📎 Sources of approved tools. With tool approval set to ask, a knowledge or file tool the user approved now saves and shows its sources below the reply, where they were lost after approval. #​32439, Commit, #​32436
  • 🗂️ Sidebar hover previews. Moving the pointer from one sidebar folder to the next no longer leaves the first folder's preview open or keeps the next one from opening, and folder and chat previews now also open when the pointer rests on the padding around a name. #​32438, Commit, #​32437
Changed
  • 🔖 Valkey connections tagged as Open WebUI. Open WebUI's Valkey vector store connections now report their library name as GlidePySync(open-webui), so operators of a shared Valkey or ElastiCache can tell its traffic apart; this needs valkey-glide-sync 2.5.2 or newer, so installs that use VECTOR_DB=valkey with an older manually installed version must upgrade it, or startup fails. #​32428, Commit, #​31654

v0.12.1

Compare Source

Added
  • 🧱 External apps in channels. Administrators can now turn on Apps in Admin Settings > General, or with "ENABLE_APPS", and connect external apps in the new Apps tab of Admin Settings by their HTTPS address, reviewing the permissions each app asks for, such as reading its mentions, reading channel messages or posting messages, and choosing who may use it; channel managers then add an app to a channel with Add Members in the channel info, where it is listed with the members and its own profile picture, and mentioning it with @​ lets it answer in the channel with replies that can be shown only to the person who asked, show cards with a title, fields and a thumbnail, offer buttons or links, follow up with a later message for longer tasks or provide a Markdown file to download. Apps on a private network address can be reached over plain HTTP once their address is listed in "APP_ALLOWED_PRIVATE_ORIGINS". Open WebUI keeps a live connection to each app, Admin Settings > Apps shows whether it is connected, and a failed connection names the cause, such as a rejected API key, a wrong public key or an unreachable address. Commit, Commit, Commit, Commit, Commit, Commit, Commit, Commit, Commit, Commit
  • 🎭 Avatars in Standard voice calls. A model's avatar now also appears in voice calls that use the Standard call mode, moves with the spoken reply and can play the model's gestures when the model uses native function calling, where avatars and gestures only worked in Realtime calls; the Voice avatar setting in the model editor is now shown even when Realtime is off. Commit
  • 🪪 Profile cards from profile pictures. Clicking the picture of the person who wrote a message in a shared chat, of a shared chat's owner in the sidebar or of a direct message partner in the sidebar now opens their profile card. Commit
  • 🗂️ Open sidebar folders in a new tab. Folders in the sidebar can now be opened in a new tab with a middle click or Ctrl or Cmd click, and their link can be copied from the browser's context menu. Commit, #​29750
  • 🔀 Compare and merge a revision. The skill file editor, the prompt editor and the system prompt in the model editor have a Compare revision button, and the chat input has Compare text in its + menu and a /compare command, each opening a side-by-side view where you paste a proposed revision, for example one written by a model, step through each change, copy changes in either direction and apply the result to your draft, the skill file editor also gets a Copy button for the open file, and comparing two files in the terminal file browser, with Select for Compare and Compare with Selected, now opens the same view. Commit, Commit, Commit, Commit, Commit, Commit, Commit, Commit
  • 🔕 Mute channels. The menu of a channel or direct message now has a Notifications setting where Mentions only mutes it, so it no longer shows an unread count or notifies you unless someone @​mentions you. Commit
  • 📤 Export a skill as a .skill file. The skill menu has Export .skill, which downloads one skill with all its files as a single .skill archive, and .skill files can be imported like ZIP files, from disk or a link. Commit
  • 📣 Typed mentions in channels. Writing @​ name or #channel in a channel message without picking from the list now turns it into a real mention when the name matches a member, model, app or channel, and mentions pasted from another message keep pointing at the same person. Commit, Commit
  • 👥 Who wrote in a shared chat. Chats in shared folders now show the pictures of everyone who wrote in them, up to three and a count for the rest, each opening that person's profile card. Commit
  • 🗂 Folder previews on hover. Hovering a folder in the sidebar shows a card with its default model, its knowledge and its chat counts, with a button to edit the folder. Commit
  • 🎠 Turn and zoom the voice avatar. In voice calls and in the model editor preview, the voice avatar can now be turned by dragging, panned with a right drag, Shift drag or two fingers, zoomed with the mouse wheel or a pinch and reset with a double click. #​32378
  • 🔍 Faster one-word chat search. Searching your chats for a single word is now about 40% faster, as each chat is checked once instead of twice. #​32268, #​32266
  • 👯 Message pairs for every model. Generate Message Pair, Ctrl+Shift+Enter, now adds a placeholder reply for each selected model side by side, where only the first model got one, and the side-by-side view stays after a reload. #​32309
  • 🔆 Screen on during calls. The screen now stays on during Realtime voice calls as well as Standard ones and is allowed to turn off again once the call ends, where Realtime calls let it go dark and Standard calls kept it on after closing the call. Commit, #​32251
  • ☁️ Azure OpenAI Realtime calls. Realtime voice calls can now use Azure OpenAI: in the Voice calls section of Audio settings, administrators pick Azure OpenAI as the Provider, enter the Azure endpoint and the deployment name and sign in with an API key or with Microsoft Entra ID, and clearer errors now point to wrong credentials or a wrong URL or deployment, with the "AUDIO_REALTIME_PROVIDER" and "AUDIO_REALTIME_AUTH_TYPE" environment variables for the new settings. Commit, #​32343
  • 📊 Input and output tokens in analytics. The Analytics dashboard now shows model usage and user activity in one table with a Models and Users switch, and both lists show input, output and total tokens as separate columns that can each be sorted, where they showed a single Tokens column. Commit, Commit
  • 🎚️ Realtime input parameters. Administrators can now add extra settings for the audio input of Realtime voice calls as JSON under Input Parameters in the Voice calls section of Audio settings, such as noise reduction, or with the "AUDIO_REALTIME_INPUT_PARAMS" environment variable. Commit
  • 🔄 General improvements. Various improvements were implemented across the application to enhance performance, stability, and security.
  • 🌐 Translation updates. Translations for Portuguese (Brazil), Italian, Czech, Romanian, Dutch, Ukrainian, Polish, Thai, Spanish, Malay, Persian, Korean, Arabic, Japanese, Indonesian, Russian, Vietnamese, Turkish, Hindi, German, Greek, Hungarian, Hebrew, Bulgarian, Swedish, Estonian, Norwegian Bokmål, Lithuanian, Croatian, Slovak, Bosnian, Danish, Slovenian, Galician, Latvian, Tibetan, Serbian, Bengali, Cebuano, Azerbaijani, Basque, Irish, Georgian, Kabyle, Punjabi, Faroese, Tamil, Uyghur, Urdu, Filipino and Turkmen were enhanced and expanded.
Fixed
  • 🔓 Skill editor and more over plain HTTP. When Open WebUI is opened over plain HTTP at a network address, the skill editor, adding options to model controls, adding gestures to a voice avatar, Realtime voice calls and the Playground chat now work, where they failed with "crypto.randomUUID is not a function" and the skill editor stayed disabled. Commit, Commit, #​32238
  • 📑 Page titles for external knowledge citations. Citations from external knowledge bases such as Qdrant, Milvus or pgvector whose source is a web address now show the page title in the source list below the answer, matching the numbered markers in the text, where the full address was shown. #​32232, #​32231
  • 🧭 Redis Sentinel master names with capital letters. With Redis Sentinel, a master name with capital letters in "REDIS_URL", such as myMaster, the default of the OT-Container-Kit redis-operator, now works, where it was lowercased and every Redis call failed with "No master found". #​32234, #​31918
  • 🔐 Redis Sentinels with a password. Redis Sentinels protected with a password now work, as the credentials in "REDIS_URL" and "WEBSOCKET_REDIS_URL" are also used for the Sentinels, where every Redis call failed with "No master found"; Sentinel credentials set in "WEBSOCKET_REDIS_OPTIONS" still take precedence. #​32241, #​32240
  • 🔗 External knowledge citation links. Clicking the title or Content link of a citation from an external knowledge base such as Qdrant, Milvus or pgvector now opens the cited web page, or shows the title as plain text when the source is not a web address, where it led to a not found error. #​32233, #​32231
  • 🧰 Tools picked in new chats. Tools picked from the Integrations menu, the Web Search toggle and a picked skill in a new chat now stay on after switching to another chat and back or reloading, where the chat fell back to the model's default tools and broke prompt caching. #​32235, #​32084
  • 📅 Recurring automations run once. Automations set with the Daily, Weekly or Monthly picker now run at the exact minute chosen in your own timezone, where they could run twice for one occurrence, and users behind the server's timezone could have their first run moved to the next day. #​32264, #​32263
  • 📵 No voice calls in shared chats. The Voice mode button no longer shows in a shared chat you can reply in, and a call that was open closes when you switch to one. Commit
  • 🙆 VRM 0.x avatar rest pose. Voice avatars made in the older VRM 0.x format now rest with their arms down and breathe and sway the right way, where their arms were raised and their idle motion was mirrored. #​32270, #​32269
  • 🕶️ Follow-ups in temporary chats. Follow-up suggestions in temporary chats are now based on the reply just written, where they were generated without it. Commit
  • 🔁 No reconnect loop after sign-in. A tab where you signed in without reloading the page now reconnects signed in after a connection drop, such as sleep, a network change or a server restart, where since 0.12.0 it reconnected several times per second until the page was reloaded and put heavy load on the server. #​32341, #​32338
  • 📎 Note uploads no longer stuck. A file uploaded to a note while another file or edit was saved now finishes and stays attached after a reload, where it kept spinning and was saved without its file. #​32328, #​32327
  • 🪟 Side-by-side replies after Regenerate. Adding a second model and pressing Regenerate now keeps both replies side by side after a reload, where the second reply showed as another version of the first. #​32326, #​32325
  • 👎 Rating reason and comment kept. The reason and comment saved in the rating form are no longer wiped a few seconds later when the generated tags arrive, both on the reply and in Admin Panel > Evaluations > Feedback. #​32334, #​32333
  • 🐙 GitHub skill imports with symlinks. Importing a skill from a GitHub link now works when the repository has symlinks outside the skill folder, such as a CLAUDE.md link at the root, where it failed with "Archives cannot contain links or special files". #​32313, #​32312
  • 🗒️ Production versions with notes. Setting an older model version as production now works when the model has a note attached as knowledge, where it failed with "Referenced knowledge is unavailable". #​32317, #​32316
  • 📂 Open knowledge file stays open. Deleting a folder in a knowledge base no longer closes the file open in the viewer unless the delete removed that file. #​32319, #​32318
  • 💾 Save hidden on others' messages. In a chat shared with Allow replies, editing a message someone else wrote no longer shows a Save button that silently reverted the text; Send and Save As Copy stay. #​32321, #​32320
  • 👁️ Re-enabled models stay on. In Admin Settings > Models, turning a model back on or showing it again now stays after a reload and the model appears in the chat model picker, where for a model never edited before the second change looked saved but was lost. #​32354, #​32353, #​32368, #​32365
  • 💲 Dollar signs in Ask and Explain. Ask and Explain on selected text now keep dollar signs such as "$5" or "$&" in the selected text and in your question, where they were dropped or replaced with other text. #​32356, #​32355
  • ▶️ Code blocks show their last value. Running a code block in the browser whose last line returns a number, list or other value, such as square(7), now shows that value, where it stayed on Running for a minute and ended with "Execution Time Limit Exceeded". #​32360, #​32359
  • 🔔 Reminders for moved calendar events. A calendar event moved to a new time after its reminder went out now reminds you again before the new start, where it never reminded again. #​32358, #​32357
  • 🌩️ MCP OAuth behind Cloudflare. Connecting an OAuth MCP tool server such as Canva now works when the provider's sign-in page is behind Cloudflare bot protection, where it failed with "OAuth client registration is still invalid after re-registration". #​32364, #​32363
  • 🗃️ File list for pipes and tools without attachments. Pipes and tools now get an empty file list on messages without attachments, where they got None and plugins that loop over the files failed. #​32380, #​32379
  • 🈯 Model editor language switching. Switching the Editing language in the model editor from one translated language to another now shows that language's name and description, where the fields kept the text of the language shown before. #​32224, #​32223
  • 🗣️ Kokoro voice in calls. Voice calls now speak replies with the Kokoro.js (Browser) voice chosen in your settings when the administrator has no server speech engine set, where the browser's own voice was used instead. Commit
  • 🧩 Rich UI embed console errors. Rich UI tool embeds no longer log a security error in the browser console on every load when iframe Sandbox Allow Same Origin is off or the embed comes from another site; the embed works as before. #​32226, #​32222
  • 🔎 Clearer Top K descriptions. The Top K and Top K Reranker descriptions in Admin Settings > Documents now say that Top K Reranker is the number of chunks the reranker passes to the model and that with hybrid search Top K is the number of candidates sent to the reranker, where the old text led admins to give the model far fewer chunks than intended. #​32225, #​32221
  • 🔌 MCP connection errors in the logs. When an MCP server fails to connect during a chat, the reason, such as a refused connection or a 401 from the server, is now logged as an error, where it was only logged at debug level and never reached the logs of a default install. #​32229, #​32213
  • 🗑️ Deleting one language's custom translation. In Admin Settings > General > Translations, Delete now removes only the translation for the language shown and keeps the row while other languages still have text, where it removed the row with its translations for every language. Commit
  • 💬 Translated model prompt suggestions. Editing the prompt suggestions of a model that uses the default suggestions in another language now starts from the administrator's default suggestions for that language, where the list was empty. Commit
  • 🏷️ Titles for voice call chats. Chats started with a Realtime voice call now get a generated title and tags as soon as the chat is created, following the Automatic title and tag settings, where they stayed named "New Chat". Commit, #​32258
  • 🪝 Webhooks for group and direct messages. Members of group channels and direct messages now get their channel message webhook notifications, where only regular channels sent them, and muting such a channel stops them except for messages that mention the member. #​32404, Commit, #​32403
  • 📄 Files from saved temporary chats. After a temporary chat is saved, the model no longer tries to open a file attached in it and gets "File not found", since such a file was never stored and its text is already in the prompt. Commit, #​32351
  • 🔑 SSO sign in for SCIM users. Users created through SCIM can sign in with SSO again, where they got "401 Invalid authentication request" since 0.12.0 because no sign-in record was created for them; a database migration adds the missing record for existing accounts without giving them a usable password, SCIM email changes now also update the sign-in email and deleting a user through SCIM removes the sign-in record as well. Commit, #​32347
  • ✂️ Deleting a message mid-chat. Deleting a message in the middle of a chat no longer makes the model forget every earlier message while the chat still shows them. #​32332, Commit, #​32331
  • 🪧 Ask and Explain popup cut off. The Ask and Explain popup is no longer cut off when you select text near the end of a reply and stays next to the selection while you scroll. #​32330, Commit, #​32329
  • 🌬️ Background noise in Realtime calls. Wind or background noise no longer cuts off the model mid-sentence in Realtime voice calls, since its spoken reply now only pauses until speech is confirmed and resumes after noise, and noise that is not understood as speech is also removed from the voice model's conversation so it no longer confuses later answers. Commit, #​32248, #​32250
  • 🧠 Memory in automations. Automations now get the memory tools when the user has memory turned on, following the user's setting, the default interface settings or the memory setting for everyone, where they were left out. Commit, #​32337
  • 🗜️ Compaction during long tool runs. Context compaction now also runs during a long series of tool calls based on the token usage the provider reports, and the compacted summary is kept with the reply so the next message continues from it, where long tool runs could hit the model's context limit. Commit, #​32306
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.
  • 💡 Follow-ups as next messages. The default follow-up prompt now suggests the messages you would most likely send next, in your own tone and latest language, as requests or questions, without repeating finished work, with the strongest suggestion first, and reads only the chat's first message and the last four, each cut to 1,000 characters, so long chats stay quick, where it asked for questions only over the last six messages; instances with a custom follow-up prompt are not affected. Commit, Commit
  • 📖 Large skills load as a preview. With the Skills builtin tools on, a skill whose SKILL.md is longer than 20,000 characters now reaches the model as a 5,000 character opening preview, and the model reads on from where the preview ends with read_skill_file, which now returns up to 20,000 characters per call instead of 100,000, and the new grep_skill_files tool lets the model search a skill's files for a word or pattern, keeping long skills from filling the context. Commit, Commit, Commit

v0.12.0

Compare Source

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, Commit, #​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, Commit
  • 🔏 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
  • 👫 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, Commit, Commit
  • 🕹️ 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, Commit, Commit, Commit, Commit, #​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, #​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, Commit, Commit
  • 🗄️ 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, Commit, Commit, Commit, Commit
  • 🎛️ 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, Commit, Commit, Commit, Commit, Commit, Commit, Commit
  • ⏮️ 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, Commit
  • 🔙 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, Commit
  • 🆚 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, Commit
  • 🗜️ 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
  • 🌳 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
  • 🥇 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
  • 🔱 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, Commit, Commit
  • 🪝 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, Commit
  • 🛍️ 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, Commit
  • 🔐 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, Commit, Commit
  • ▪️ 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
  • 👻 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, Commit, #​31389, #​32048, #​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, #​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, #​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, #​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, #​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, #​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, #​31660, #​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, #​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
  • 🎚️ 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, #​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, #​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, Commit, #​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
  • 🆔 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
  • 🔩 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
  • 🪣 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
  • 🚪 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
  • 📻 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, Commit
  • 🎒 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
  • 🪞 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
  • 🏁 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
  • 🔖 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
  • 📂 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, Commit
  • 🏷️ 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
  • 🪫 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
  • 🐚 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, #​32026, #​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
  • 🛸 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
  • 💡 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
  • 📇 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, #​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
  • 🚷 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
  • 📄 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, #​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, #​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, #​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, #​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, #​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, #​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, #​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
  • 📁 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
  • 🚪 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
  • 🗝️ 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
  • 🐌 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
  • 🌀 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
  • 🗃️ 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
  • 🛑 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
  • 🔗 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
  • 🎛️ 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
  • 🧱 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
  • 🎫 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
  • 📝 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
  • 📆 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
  • 📞 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, #​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
  • ⛓️ 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
  • 🤐 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
  • 🛂 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
  • 🤖 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
  • 🪪 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
  • 🤝 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
  • 🕵️ 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
  • 🛃 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
  • 🗒️ 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, #​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, Commit
  • 🕶️ 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, #​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
  • ✋ 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, #​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
  • 🗣️ 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
  • 🔑 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, #​30450, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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
  • 🗣️ 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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​29868, #​31489, #​31487, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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
  • 🧩 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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​31348, Commit, #​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, #​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, #​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, #​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, Commit, #​31486, #​31496, #​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
  • ⌨️ 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, #​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, #​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, #​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, #​31460, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​31354, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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
  • 🛰️ 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
  • 🌊 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, #​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, #​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, #​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, #​31527
  • 📍 Unpinning folder chats by dragging. Dragging a pinned chat out of a folder onto Chats now unpins it, where it stayed pinned. #​31368, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​31652, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​31326, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​31842, #​31841, #​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, #​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, #​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, #​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, #​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, #​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
  • 🔦 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, #​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, #​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, #​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, #​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, #​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, #​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
  • 📧 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, #​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, #​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, #​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, #​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, #​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, #​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, Commit
  • 🔇 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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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, #​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
  • 🎟️ 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, #​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
  • 🩹 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
  • 🧊 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, #​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, #​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, #​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, Commit
  • 🗓️ 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, #​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
  • 🔂 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, Commit
  • 🚨 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
  • 📥 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
  • 📜 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
  • 🗃️ 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, #​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, #​32150

Release notes shortened. Read the full changelog.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate CLI.

This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/open-webui/open-webui](https://github.com/open-webui/open-webui) | minor | `v0.11.4` → `v0.12.4` | --- ### Release Notes <details> <summary>open-webui/open-webui (ghcr.io/open-webui/open-webui)</summary> ### [`v0.12.4`](https://github.com/open-webui/open-webui/releases/tag/v0.12.4) [Compare Source](https://github.com/open-webui/open-webui/compare/v0.12.3...v0.12.4) ##### Added - 🎯 **Load selected skills on demand.** Administrators can turn on "Load selected skills on demand" under Admin Settings > General or set "ENABLE_SKILL_LAZY_LOADING", so skills selected in the chat or attached to a model are only listed for the model to load when it needs them instead of sending their full instructions with every message, while skills mentioned in the message still load right away, and it is off by default and needs the built-in Skills tool. [Commit](https://github.com/open-webui/open-webui/commit/079fb19e75f8be4b44fada0c755cf383b21a625b) - 📍 **Compaction shown in chats.** A "Context compacted" line now marks the message where older messages were summarized, opens to show the summary and also appears inside a reply when compaction ran between its tool calls, Chat Controls > Overview tags that message, and compaction progress and errors now show in the chat instead of as pop-up notices. [Commit](https://github.com/open-webui/open-webui/commit/f465a4be11c0c64969da70f1f5b770bd21088b8a), [Commit](https://github.com/open-webui/open-webui/commit/c8786f426ad263ea4113652ed576d3c15ee341d6), [Commit](https://github.com/open-webui/open-webui/commit/3311f999928964ca1f7870fefb407553197dc2d5), [Commit](https://github.com/open-webui/open-webui/commit/3855acf02d44b78e7969599155896865fd362123), [#&#8203;31324](https://github.com/open-webui/open-webui/issues/31324) - 🗜️ **Compaction in more chats.** Context compaction now also runs in temporary chats and in short chats that are already over the threshold, such as one question with a reply full of tool output, so the follow-up and any regenerate or edit of it no longer fail with a context length error. [#&#8203;32794](https://github.com/open-webui/open-webui/pull/32794), [Commit](https://github.com/open-webui/open-webui/commit/56eca192ab7d98dd9d1a9811e4452dc32145848d), [#&#8203;32781](https://github.com/open-webui/open-webui/issues/32781), [Commit](https://github.com/open-webui/open-webui/commit/d5cd7f4907f9a6832dc5b52520a1381ef50a663c), [#&#8203;32600](https://github.com/open-webui/open-webui/issues/32600) - 🕶️ **Hide controls for users.** Administrators can now hide single controls from users under Visible controls in Admin Settings > Interface or with "UI_VISIBILITY", such as model capabilities, default features and built-in tools in the model editor, Capture, Compare text, Attach Webpage, Attach Files, Attach Notes, Attach Knowledge and Reference Chats in the + menu, the /status, /model and /settings commands, the usage info, Fork, Merge Responses, Preview, Artifacts, Archive and Tags in chats, Set as default and Keep in Sidebar for models and settings such as the Usage tab and the speech engines, while hidden controls keep their values and the features behind them stay usable, hiding Archive also hides Unarchive, and administrators still see every control. [Commit](https://github.com/open-webui/open-webui/commit/08bfaa4be67f6f87878b2209d568a648818506a7), [#&#8203;32830](https://github.com/open-webui/open-webui/issues/32830) - 🫙 **Unavailable options hidden.** Options that cannot take effect are now hidden, such as Capture in the + menu without a Vision model, Attach Notes for users without the Notes permission, the Valves pickers in Chat Controls for disabled tools and functions, the Context Compaction Threshold while context compaction is off, the title, follow-up and tag generation switches in Settings > Interface while the admin has turned them off, Compress Images in Channels for users who cannot use channels, the Web Search in Chat setting while web search is not available to the user, the Voice section of Settings > Interface for users who cannot make calls, group and default permission toggles for features the admin has turned off, the Terminal capability and default terminal in the model editor while no terminal server or direct integration is available, the New Temporary Chat and Delete Chat shortcuts for users who may not use them, the Web Search, Image Generation, Code Interpreter and Memory capabilities and Default Features in the model editor while that feature is off for the instance, built-in tools in the model editor that the model's capabilities rule out or whose feature is off, the engine settings in Admin Settings > Web Search and Admin Settings > Images while web search or image generation is off, the Web Search Query Generation switch in Admin Settings > Interface while web search is off, the Regenerate Menu and terminal settings in Settings > Interface while they cannot apply, "/skills:create" for models that cannot create skills, the Call button while speech-to-text is unavailable, the Audio settings tab for users allowed no speech or calls, the multi-factor authentication section while MFA does not apply to the user and the openwebui.com author link on a new chat while community sharing is off, while saved values are kept for when they apply again. [#&#8203;32969](https://github.com/open-webui/open-webui/pull/32969), [#&#8203;32967](https://github.com/open-webui/open-webui/pull/32967), [#&#8203;32959](https://github.com/open-webui/open-webui/pull/32959), [Commit](https://github.com/open-webui/open-webui/commit/9e5a355fd2b318cf68726c69dbf37dae5e8413b0), [Commit](https://github.com/open-webui/open-webui/commit/9faca2ac5bd69c536e4a87563af39a195d6ea32e), [Commit](https://github.com/open-webui/open-webui/commit/4324573f16b5ce888c9baf235188d7bcfe4b5f51), [#&#8203;32962](https://github.com/open-webui/open-webui/pull/32962), [#&#8203;32973](https://github.com/open-webui/open-webui/pull/32973), [#&#8203;32976](https://github.com/open-webui/open-webui/pull/32976), [#&#8203;32977](https://github.com/open-webui/open-webui/pull/32977), [#&#8203;32980](https://github.com/open-webui/open-webui/pull/32980), [#&#8203;32961](https://github.com/open-webui/open-webui/pull/32961), [Commit](https://github.com/open-webui/open-webui/commit/1f737b894827d19b1b1b4e9dfd5eea23992a3a96), [Commit](https://github.com/open-webui/open-webui/commit/be8f2c0a21d7eb3c873c085f90273dc5e6e39b3d), [Commit](https://github.com/open-webui/open-webui/commit/fbad6fb252f6eb7ccce86944b3bb83623f2d5598), [Commit](https://github.com/open-webui/open-webui/commit/11406c1654794d153f120899f12728cf84490488), [Commit](https://github.com/open-webui/open-webui/commit/35ee76cebb523c21703b31a2cf4347e984490a95), [Commit](https://github.com/open-webui/open-webui/commit/502af86b254b3d071e6b906223493f486cc73c51), [#&#8203;32972](https://github.com/open-webui/open-webui/pull/32972), [Commit](https://github.com/open-webui/open-webui/commit/521da58ff3bcbb3205e695286ff8f71a64d23606), [#&#8203;32975](https://github.com/open-webui/open-webui/pull/32975), [Commit](https://github.com/open-webui/open-webui/commit/d48b5e1c878140ce04b5cf5c30d15a472cbd9346), [#&#8203;32983](https://github.com/open-webui/open-webui/pull/32983), [Commit](https://github.com/open-webui/open-webui/commit/8852d460b7009f776a131e88cbf0cbad595a16d8), [#&#8203;32966](https://github.com/open-webui/open-webui/pull/32966), [Commit](https://github.com/open-webui/open-webui/commit/5e62c8997f9d14ebc321022a552380f4dc932526), [#&#8203;32978](https://github.com/open-webui/open-webui/pull/32978), [Commit](https://github.com/open-webui/open-webui/commit/159a29ed06c4e689c465c105c74cf0d9ff4904b9), [#&#8203;32963](https://github.com/open-webui/open-webui/pull/32963), [Commit](https://github.com/open-webui/open-webui/commit/98f23b17a5755216e31c09ee938e36e46d139fee), [#&#8203;32965](https://github.com/open-webui/open-webui/pull/32965), [Commit](https://github.com/open-webui/open-webui/commit/758e4f6cc3bc504c8e100e535694dbc93214ad31), [#&#8203;32984](https://github.com/open-webui/open-webui/pull/32984), [Commit](https://github.com/open-webui/open-webui/commit/e11c1bb38c3695917038b0d79933b35886b0e70e), [#&#8203;32985](https://github.com/open-webui/open-webui/pull/32985), [Commit](https://github.com/open-webui/open-webui/commit/1d6d805587c06847d9518ccab79fe780aba8d1a6), [#&#8203;32986](https://github.com/open-webui/open-webui/pull/32986), [Commit](https://github.com/open-webui/open-webui/commit/d2e88ba37abf6d83d9fcffec8574e155b352f4ca), [#&#8203;32974](https://github.com/open-webui/open-webui/pull/32974), [Commit](https://github.com/open-webui/open-webui/commit/c4aac6152b59e17610bbb5aa9bab1e230460c3ed), [#&#8203;32981](https://github.com/open-webui/open-webui/pull/32981), [Commit](https://github.com/open-webui/open-webui/commit/11081b1567dd4b5b41907b8733c21239079a94ca), [#&#8203;32971](https://github.com/open-webui/open-webui/pull/32971), [Commit](https://github.com/open-webui/open-webui/commit/f36ed913719814419d5a621b528ec1b56595809c), [#&#8203;32970](https://github.com/open-webui/open-webui/pull/32970), [Commit](https://github.com/open-webui/open-webui/commit/b02ff544597755624953ecc15290bee19348ca54), [#&#8203;32964](https://github.com/open-webui/open-webui/pull/32964), [Commit](https://github.com/open-webui/open-webui/commit/2cf014c7e9be601116d8e93da0d7367f77d6f14e), [#&#8203;32830](https://github.com/open-webui/open-webui/issues/32830) - 🔏 **Access button respects sharing.** The Access button and menu entry of models, prompts, tools, knowledge, skills and notes and the Access button in folder settings are now hidden from users without the matching sharing permission, who had nothing they could change in its dialog. [#&#8203;32979](https://github.com/open-webui/open-webui/pull/32979), [Commit](https://github.com/open-webui/open-webui/commit/ac12b04aada033117f9f7e8ee4fb9562c7d5a417), [#&#8203;32830](https://github.com/open-webui/open-webui/issues/32830) - 🖇️ **Attach entries without uploads.** When files cannot be attached, because of a missing permission or a selected model without File Upload, the greyed Attach Knowledge, Reference Chats and Attach Notes entries in the + menu no longer open and the # and @&#8203; lists leave out what cannot be attached, including pasted links for users without the web upload permission, so a picked item no longer vanishes from the input without a message. [#&#8203;32968](https://github.com/open-webui/open-webui/pull/32968), [Commit](https://github.com/open-webui/open-webui/commit/75c4421b3ab94b1a39d74674475294571bd20bcd), [#&#8203;32830](https://github.com/open-webui/open-webui/issues/32830) - ⏱️ **Exact last active time.** Hovering the last active time in the admin user list and in a group's member list now shows the exact date and time. [Commit](https://github.com/open-webui/open-webui/commit/7484c75e163cb17fee9ebcc11e57f462289cc03e) - 🗨️ **New chat from folders.** A folder's menu in the sidebar now has a New Chat item that starts a chat in that folder. [Commit](https://github.com/open-webui/open-webui/commit/0512f1b3763ea4e15b5adc25d087c96f728fa25e) - 🪪 **Profile cards across the workspace.** Hovering an owner's name in the workspace lists of models, knowledge, prompts, skills and tools and in admin Functions now opens their profile card instead of an email tooltip, with their profile picture next to the name, profile pictures in access settings, version history and the Analytics user list open the card too and the Notes list shows each owner's profile picture. [Commit](https://github.com/open-webui/open-webui/commit/02974f41e9b7c9d34f2cd7c664c2a04fd6ac12ae), [Commit](https://github.com/open-webui/open-webui/commit/72cc79b8f336a753b6e75e0f3415630601b14759), [Commit](https://github.com/open-webui/open-webui/commit/ba34b1c47c1d054d2f9c498d0aed862ec06da41a), [Commit](https://github.com/open-webui/open-webui/commit/4491e60a296c89b11f22a43f416ea04770fd687f), [Commit](https://github.com/open-webui/open-webui/commit/0de8d03c625739ed3fe5e5f2a33de79a760238bd), [Commit](https://github.com/open-webui/open-webui/commit/0628670f56133d2cdc20c59b06fbb9de36932eb9) - 🔢 **Turn count in chat previews.** The preview shown when hovering a chat in the sidebar now shows how many user and assistant turns its current branch has. [Commit](https://github.com/open-webui/open-webui/commit/b5046f9d8686e18450a200dccda181f2ac7f97c9) - 🎚️ **Chat Controls saved per setting.** A change in a chat's Controls, such as its system prompt or a parameter, now saves only that setting, so a copy of the chat open in another tab or on another device no longer wipes it with older settings. [Commit](https://github.com/open-webui/open-webui/commit/b4a58be193031827f2fc19b943646136d1e43575), [#&#8203;32755](https://github.com/open-webui/open-webui/issues/32755) - 🪃 **Questions survive reconnects.** When the page reloads or loses its connection while Ask User, a tool approval, an MCP server's input request or a function's confirmation or input dialog waits for you, the question now comes back once you reopen that chat within a minute, so the request no longer waits without an answer. [Commit](https://github.com/open-webui/open-webui/commit/c596d40bd4f554057738ba779b38781a7c2de108) - ✍️ **Note edits by text.** The model can now edit a note by finding and replacing exact text instead of only by character offsets, picking one match or all of them and getting the positions and surrounding text back when a match is ambiguous. [Commit](https://github.com/open-webui/open-webui/commit/243ef36c496714d9dd855de9fd261daa43caddb9), [#&#8203;32752](https://github.com/open-webui/open-webui/issues/32752) - 🔍 **Compare view stays aligned.** Matching rows in the two panes of the Compare view now stay lined up and in place while scrolling, resizing or editing, and a colored bar now marks changed lines also while whitespace or emphasis markers are ignored. [Commit](https://github.com/open-webui/open-webui/commit/32170b96fc5edc8c324c5de188be36e9d32059a2), [Commit](https://github.com/open-webui/open-webui/commit/596cdbb6caf6022947285722949de1f52272b673), [Commit](https://github.com/open-webui/open-webui/commit/5c9865a1f119d33ab11d77e79d8c8c8fb93704ec), [Commit](https://github.com/open-webui/open-webui/commit/aa8ce52c7a3afbb164bc16a3b7c20e40ba6390ed) - 🖱️ **Clickable setting labels.** Clicking the label of a setting across user and admin settings, including advanced parameters and connections, now toggles its switch, focuses its field or presses its button, and the label highlights while the row is hovered or focused, so the right control is easier to find. [Commit](https://github.com/open-webui/open-webui/commit/33e4c5f514d57ca8f654c1015dfb32774b833db6), [Commit](https://github.com/open-webui/open-webui/commit/131ddc32ecaeb06f9aa8740ff004710bacef72e0), [Commit](https://github.com/open-webui/open-webui/commit/b93b81246817b651bb47bb1f5e453503649d30d0), [#&#8203;32768](https://github.com/open-webui/open-webui/issues/32768), [#&#8203;32900](https://github.com/open-webui/open-webui/issues/32900) - ☑️ **Select several sidebar chats.** Shift-clicking a chat in the sidebar starts a selection that more clicks or a shift-click range extend, and the selected chats can then be archived or, with the delete permission, deleted together, while Escape clears the selection. [Commit](https://github.com/open-webui/open-webui/commit/acc231774d00d8856feefd2e7a3ef4b503a8224e), [#&#8203;32543](https://github.com/open-webui/open-webui/issues/32543) - 🫲 **Swipe open Chat Controls.** On a phone, swiping left across a chat now pulls in the Chat Controls panel, which follows your finger like the sidebar does and closes again with a swipe to the right. [Commit](https://github.com/open-webui/open-webui/commit/f83f9f40b3513acc82f53696aaf78a2c5d251e70) - 🗃️ **Bulk file management.** Manage Files in Settings > Data Controls can now download a single file and lets you select several files or all files matching a search to delete them or download them together as one zip archive, with progress and a stop button. [Commit](https://github.com/open-webui/open-webui/commit/2a86805648f45c36c479c6f9a0127cae799ee14f) - 📥 **Accurate upload status.** A file uploaded to a knowledge base now only shows as done once it is indexed and linked to the knowledge base, so it no longer shows as done and then goes missing from the list until a reload. [Commit](https://github.com/open-webui/open-webui/commit/f5e8f84e69d0f4224cc27cabd4f8d2c441d4d58c), [#&#8203;32803](https://github.com/open-webui/open-webui/issues/32803) - ⏳ **Knowledge files show Processing.** A file added to a knowledge base now switches from Uploading to Processing once it reaches the server, and the list keeps itself up to date until the file is ready, so it no longer says Uploading until you reopen the knowledge base. [#&#8203;32982](https://github.com/open-webui/open-webui/pull/32982), [Commit](https://github.com/open-webui/open-webui/commit/0a568f6a813d49ca6e7797c7940647782e44ad48) - 🧮 **Knowledge uploads listed at once.** Files selected or dropped together into a knowledge base now all appear as Uploading right away in upload order, so each one no longer waits to appear until the file before it has finished processing. [#&#8203;32992](https://github.com/open-webui/open-webui/pull/32992), [Commit](https://github.com/open-webui/open-webui/commit/0c684208bbc6e28e31995c0c4788429b38048db0) - 📈 **Analytics by tokens.** The Admin Analytics dashboard now ranks models and users by tokens by default with a switch back to messages, and its usage chart adds volume and activity views, a single model view, a comparison with the previous period, a choice of time steps and Year to date and Last 12 months ranges. [Commit](https://github.com/open-webui/open-webui/commit/131ddc32ecaeb06f9aa8740ff004710bacef72e0), [Commit](https://github.com/open-webui/open-webui/commit/06c17834ee3168b922f1b8a935b9dd76884b8fda), [Commit](https://github.com/open-webui/open-webui/commit/dc2ac86060e583f7374dd86f32f374a0b956bb8b), [Commit](https://github.com/open-webui/open-webui/commit/3539ad63213d13865a87a4db64a9829fd7d3b1b4), [Commit](https://github.com/open-webui/open-webui/commit/08bfaa4be67f6f87878b2209d568a648818506a7), [Commit](https://github.com/open-webui/open-webui/commit/06c382e5d223ba1b35dc0b1306c71da489c632b0) - 🗂️ **File browser grid view.** The terminal file browser can now switch between a list and a grid view from its menu, folders show how many items they hold, and on larger screens hovering a file shows a preview, up to 1 MB for text files and 20 MB for images, audio, video and documents. [Commit](https://github.com/open-webui/open-webui/commit/a76c02e58ec81621cf3c6ca38eb0d09eccee694f), [Commit](https://github.com/open-webui/open-webui/commit/fefa31fae22a8eb9d39aaf17063373c27fd5a61e), [Commit](https://github.com/open-webui/open-webui/commit/fa50081e67bfa9883bbc92fd47b20d3f3974c927) - 📁 **File browser folder menu.** A folder's menu in the terminal file browser now has New File and New Folder items that create the file or folder inside that folder. [Commit](https://github.com/open-webui/open-webui/commit/b6b0fff5d6af2fefb84f8858244adeef50462aac), [Commit](https://github.com/open-webui/open-webui/commit/fbeee59e99f47c9ff4fb0f114f78eb9dc85f2967) - 📬 **First-message terminal uploads.** With Chat Uploads set to Filesystem on a Per chat terminal, a file attached to the first message of a new chat now waits and uploads into that chat's own terminal when the message is sent, so it no longer lands in the shared workspace. [Commit](https://github.com/open-webui/open-webui/commit/049d75e176dd1ef3f2f1eef09d63f30c4e988b3c), [#&#8203;30245](https://github.com/open-webui/open-webui/issues/30245) - 🪧 **Folder descriptions.** Folders can now have a description in their settings, shown under the folder title on the folder's page. [Commit](https://github.com/open-webui/open-webui/commit/f625c37cce4ec971e7d86af6da644fee03561b1e), [Commit](https://github.com/open-webui/open-webui/commit/72d86c6b13c1ccb567e2ffa574b3a53a853361b3) - 🚚 **Organize chats in shared folders.** The owner of a shared folder can now rename chats other people started in it and drag them to another folder within the same shared folder. [Commit](https://github.com/open-webui/open-webui/commit/2262073146bbeda1aa4f998bb61e15ec7f9b6491) - 🛰️ **MCP protocol 2026-07-28.** MCP connections now also work with servers that speak the stateless 2026-07-28 protocol version, while older servers still connect through the earlier handshake. [#&#8203;33087](https://github.com/open-webui/open-webui/pull/33087), [Commit](https://github.com/open-webui/open-webui/commit/8151826483163877cec837b35ba7c1affdd1fb5a), [#&#8203;29778](https://github.com/open-webui/open-webui/issues/29778) - 📧 **LDAP default email domain.** Administrators can now set a default email domain in the LDAP settings or with "LDAP_DEFAULT_EMAIL_DOMAIN", so LDAP users without a mail attribute sign in with their username at that domain as their email address and into any existing account with that address, which is why the domain should be one you control. [Commit](https://github.com/open-webui/open-webui/commit/74fb7a8c56bd92e6603e71e74917a99597228d10), [#&#8203;33001](https://github.com/open-webui/open-webui/issues/33001) - 🔐 **OAuth connections over the API.** Connections set to OAuth authentication now also send the user's OAuth token when the user calls the API with an API key or bearer token, like tool servers already did. [#&#8203;32826](https://github.com/open-webui/open-webui/pull/32826), [Commit](https://github.com/open-webui/open-webui/commit/6367a3cc406b3417d1a2eb2bfde9f1b841d43150), [#&#8203;32820](https://github.com/open-webui/open-webui/issues/32820) - 🫣 **Hidden base models for groups.** Administrators can now turn on the Hidden Models permission under Models Access in the user and group permissions, or set "USER_PERMISSIONS_WORKSPACE_MODELS_HIDDEN", so those users can pick hidden models as the base model of a workspace model while the hidden models stay out of their model picker. [Commit](https://github.com/open-webui/open-webui/commit/7f1b618727fe76669158bd42e2ce18fbcca63481), [#&#8203;29806](https://github.com/open-webui/open-webui/discussions/29806), [#&#8203;29639](https://github.com/open-webui/open-webui/issues/29639) - 🧾 **Model usage in audit logs.** With audit logging on and "/chat" removed from "AUDIT_EXCLUDED_PATHS", where it is excluded by default, each chat reply and tool call round now writes its own audit log entry with the model and the input, output and total tokens the provider reported, linked to the request that started it. [Commit](https://github.com/open-webui/open-webui/commit/52e155019f511846a8066e012ff37f8aac6db2db), [#&#8203;30098](https://github.com/open-webui/open-webui/issues/30098) - 📨 **Voice call user headers.** With "ENABLE_FORWARD_USER_INFO_HEADERS" on, Realtime voice calls now also send the user info headers, or the signed user JWT when configured, to the realtime provider, like chat requests do. [#&#8203;32733](https://github.com/open-webui/open-webui/pull/32733), [Commit](https://github.com/open-webui/open-webui/commit/c7e159bdd66a1d05331e6a579e627004bc3c51d1) - 🏎️ **Faster action buttons.** An action button now only saves the chat again when the action changed a message, so actions on large chats finish sooner. [Commit](https://github.com/open-webui/open-webui/commit/7708ee851a1d6745a5ee3c106a0dd9f728bca732), [#&#8203;32658](https://github.com/open-webui/open-webui/issues/32658), [Commit](https://github.com/open-webui/open-webui/commit/b4a58be193031827f2fc19b943646136d1e43575) - 👪 **Faster group saves.** Saving, deleting or changing the members or permissions of a group now finishes in well under a second with thousands of users online, where it took several seconds and reloaded the open chat of everyone online. [#&#8203;32883](https://github.com/open-webui/open-webui/pull/32883), [Commit](https://github.com/open-webui/open-webui/commit/b7d1de05ab91150726d83ae427f320a014ddeeec), [#&#8203;32882](https://github.com/open-webui/open-webui/pull/32882), [Commit](https://github.com/open-webui/open-webui/commit/bae611e785df5feabf712ab8c8684a78bf90ec96) - 🧳 **Faster folder changes.** Renaming, sharing, moving or deleting a folder and deleting all chats now finish quickly with thousands of users online, where each took several seconds and reloaded the open chat of everyone online. [#&#8203;32888](https://github.com/open-webui/open-webui/pull/32888), [Commit](https://github.com/open-webui/open-webui/commit/e1e31973f0bfd04dc4195c896eff3476678d2005) - 📣 **Faster channel posts.** Posting a message in a channel with many members online now returns in a fraction of a second, where it waited for every online member's login to be checked again first. [#&#8203;32889](https://github.com/open-webui/open-webui/pull/32889), [Commit](https://github.com/open-webui/open-webui/commit/a9adb2b78ebccdd51543a47c285309e9b016a71c) - 📊 **Faster analytics dashboard.** The Admin Analytics dashboard now gets its totals, model and user lists and daily charts from fewer and lighter database queries, so it opens faster on instances with many messages. [Commit](https://github.com/open-webui/open-webui/commit/97650bbbea43b98c1c403bf74b08736e9ad522d7) - ♻️ **Prompt cache survives restarts.** Tools from tool servers, Open Terminal included, now reach the model in the same form after every restart, so the provider's prompt cache keeps working and long chats are no longer processed again from scratch. [#&#8203;33000](https://github.com/open-webui/open-webui/pull/33000), [Commit](https://github.com/open-webui/open-webui/commit/ee7c9ff5c19d7d8c24c991028b08ff6672c6e653) - 👁️ **PDF image OCR stays light.** With PDF Extract Images (OCR) on, reading text from images in PDFs now uses one processor thread per upload by default, so uploads no longer start a thread pool the size of the server's cores that could slow the whole server down, and administrators can pass their own RapidOCR settings with "RAPIDOCR_PARAMS". [Commit](https://github.com/open-webui/open-webui/commit/56c570afc36e6dae528563059e30b1e030628734), [#&#8203;32844](https://github.com/open-webui/open-webui/issues/32844) - ♿ **Improved UI accessibility.** Screen reader users now hear the Send button, the sidebar's user menu button by the name it shows, Playground's role button by the word it shows, the model editor's Description, Tools, Skills, Filters and Actions rows by what they show, a sidebar folder's options button, the sidebar button on Calendar, Notes, Channels and Home on phones, the on/off switches on Skills, Functions and Automations rows, the suggested prompts on a new chat as buttons, Archived Chats as a table, the sort order on the column headers of Archived Chats and the Evaluations leaderboard, chat input pills and menus, copy, export, merge and artifact buttons, clear search and Cancel buttons, the note editor's Undo, Redo, Record and Note Menu buttons, Playground's System Instructions button and model selects, the code box in the tool and function editors, switches, icon buttons, selects and number inputs in Admin Settings, the Create knowledge base, Create Prompt and Clone Prompt dialogs and the close button of 22 dialogs by name, together with a source's number, the number on a channel's member count button, the choice a Visibility button shows, a resizable panel's width, how long ago each sidebar chat was updated, the info button under a reply with its usage figures, a model's description, notifications such as copy confirmations (copying a prompt in Workspace included), when a reply starts and finishes, call mode's Listening and Thinking status, menu buttons as menus with their open state, the selected search content type, how many archived chats a search found, how many models match a search in the model picker, the Settings window by name, the sidebar folder toggle by name with its open state, the chosen option in Select dropdowns, the search window's list by its visible caption, a heading on each Workspace page, the sidebar section titles and chat date groups as headings, the sidebar's models, folders and chats as lists, the Settings tabs as Personal and Admin tab lists that point to their panels, the items of the input, integrations, user and chat menus as menu items, the Keyboard tab's shortcut categories as headings with a list under each, the chat input as a text field, the sidebar logo link as New Chat, the onboarding logo by the instance name with other branding images hidden as decoration, the model logos on a new chat by model name (hidden when only one model is selected), the model the arrow keys are on in the model picker, the model name and the Suggested label on a new chat as headings, the suggestion list by name and the chat title as the page heading, and no longer hear an open or closed state on the area around the sidebar button in Channels on phones; keyboard users get the model picker's More and Eject buttons that show on focus, filter lists that move focus to their options when opened, tooltips that show on focus and close with Escape, Escape in the model picker's More menu or filter list that closes only that list, focus that returns to the model picker button when the picker closes with Accessibility Mode on, an outline on the model picker row the arrow keys are on, focus that moves to the other sidebar button when the sidebar opens or closes, arrow keys that move through the input, integrations, user, chat and Terminal menus, a Terminal menu that opens on its first terminal, a Tab key that reaches the note editor's Record and Note Menu buttons, Evaluations leaderboard columns they can sort and models they can open from it, focus that stays on a Workspace section link after choosing it, focus that stays in the Archived Chats list after unarchiving a chat, focus on the recording bar when dictation starts and a Skip to main content link that now moves focus to the page content; notification text in the light theme and the chat dates in Archived Chats now meet the 4.5:1 contrast minimum; buttons in the collapsed sidebar, on sidebar folders, on Prompts, Skills, Functions and Automations rows, on Workspace and Notes list rows, on attached files and in the Integrations menu are no longer nested inside other buttons; the Archived Chats and Keyboard lists stay usable at 400% zoom; and with Accessibility Mode on, pinch zoom works on phones, the active Workspace section is underlined, code editor placeholders, the model editor's JSON Preview row and Calendar's days from other months and today's date meet the contrast minimum, and the More and Eject buttons and Set as default in the model picker, the version link and See what's new in Settings > About, the sidebar's Chat Menu button, the Note Menu and Delete buttons in Notes, the More button on file rows, the Create button's menu arrow, Calendar's previous and next month buttons and the name, ID and command fields in the model and prompt editors are at least 24 pixels in size. - 🔄 **General improvements.** Various improvements were implemented across the application to enhance performance, stability, and security. - 🌐 **Translation updates.** Translations for Korean, Cebuano, Thai, German, Japanese, Vietnamese, Urdu, Bengali, Hungarian, Tibetan, Turkmen, Lithuanian, Danish, Basque, Irish, Slovenian, Estonian, Croatian, Faroese, Georgian, Portuguese (Brazil), Spanish (Spain), Hindi, Finnish, Kabyle, Galician, Uyghur, Slovak, Norwegian Bokmål, Serbian, Ukrainian, Polish, Turkish, Bosnian, Dutch, Czech, Bulgarian, Hebrew, Punjabi, Swedish, Romanian, Persian, Greek, Malay, Latvian, Azerbaijani, Indonesian, Tamil, Filipino and Russian were enhanced and expanded. ##### Fixed - 🛡️ **Security Advisory**: This release contains **security fixes**. We **strongly recommend updating** all deployments **as soon as possible** to have the latest security fixes in place. These fixes are **not listed in this changelog**; we will publish the security advisories for them immediately following CVE assignment. [Advisories](https://github.com/open-webui/open-webui/security) - 📤 **Chat export permission respected.** The Export item of a folder in the sidebar, the Export option in Archived Chats and the Copy option in the chat menu are now hidden from users without the Allow Chat Export permission, like the export options of single chats. [#&#8203;32703](https://github.com/open-webui/open-webui/pull/32703), [Commit](https://github.com/open-webui/open-webui/commit/a21335bdd44892a804d74614567b2c64a19e0a11), [#&#8203;32702](https://github.com/open-webui/open-webui/issues/32702), [#&#8203;32684](https://github.com/open-webui/open-webui/pull/32684), [Commit](https://github.com/open-webui/open-webui/commit/c9936e81ecb8d50187a9c31d2952353da2b538c8), [#&#8203;32683](https://github.com/open-webui/open-webui/issues/32683), [#&#8203;32960](https://github.com/open-webui/open-webui/pull/32960), [Commit](https://github.com/open-webui/open-webui/commit/b17ee7d83925c87688f308e4599dbd320a017fe4) - 🎛️ **Pipe Valves permission respected.** The Valves button of a pipe model in the chat input is now hidden from users without the Allow Chat Valves permission. [#&#8203;32772](https://github.com/open-webui/open-webui/pull/32772), [Commit](https://github.com/open-webui/open-webui/commit/46cdd70d7be82bbc25952a37fd6f647d7ea627cc), [#&#8203;32771](https://github.com/open-webui/open-webui/issues/32771) - 👥 **One model without Multiple Models.** A new chat now starts with a single model for users without the Multiple Models permission, where a default or a link with several models kept them all selected. [#&#8203;32668](https://github.com/open-webui/open-webui/pull/32668), [Commit](https://github.com/open-webui/open-webui/commit/5d75c1905b79a6a0e9dd505cd1fc2db6a5502849), [#&#8203;32667](https://github.com/open-webui/open-webui/issues/32667) - 🖊️ **Chat Edit permission respected.** The Edit button of a user's own messages is now hidden from users without the Allow Chat Edit permission, where only the Edit button of replies was hidden. [#&#8203;32841](https://github.com/open-webui/open-webui/pull/32841), [Commit](https://github.com/open-webui/open-webui/commit/ce7f87a7505c911da1fab5309692a7329bf0c395), [#&#8203;32832](https://github.com/open-webui/open-webui/issues/32832) - 📅 **Calendar page respects access.** Opening the Calendar page with Calendar turned off or without the Calendar permission now returns to the home page, where it showed an empty calendar and an error. [#&#8203;32837](https://github.com/open-webui/open-webui/pull/32837), [Commit](https://github.com/open-webui/open-webui/commit/ffcb24824f6b4afacb4e36147eb3b701b99441db), [#&#8203;32834](https://github.com/open-webui/open-webui/issues/32834) - 🔒 **Live access after archiving.** People who see a chat through a shared folder now stop receiving its live updates when the owner archives it or archives all chats, and people with a share link stop when the owner unshares all chats, as they already did when a single chat was unshared or deleted. [#&#8203;32887](https://github.com/open-webui/open-webui/pull/32887), [Commit](https://github.com/open-webui/open-webui/commit/ed3cf8355346689d790829074aa7d8cd004b7865) - 🧵 **Thread replies deleted too.** Deleting a channel message now also deletes its thread replies, which stayed behind and could still be found in search. [#&#8203;32666](https://github.com/open-webui/open-webui/pull/32666), [Commit](https://github.com/open-webui/open-webui/commit/54fc21d6855ba4c41c9088c758949d6fcc0ff26f), [#&#8203;32665](https://github.com/open-webui/open-webui/issues/32665) - 🔗 **Shared chat pages load once.** Chats opened under /s/, through a share link or by an administrator viewing another user's chat, no longer reload over and over and jump back to the bottom, which since 0.12.3 made scrolling up impossible. [#&#8203;32725](https://github.com/open-webui/open-webui/pull/32725), [Commit](https://github.com/open-webui/open-webui/commit/c4153a6eeaeb6a0c5ec8cc152a1bdf328b848859), [#&#8203;32657](https://github.com/open-webui/open-webui/issues/32657) - 🧹 **Deleting the open chat.** Deleting the chat you are viewing from the sidebar now opens an empty new chat, where the deleted chat's messages stayed on screen and the next message failed, in Safari with "The string did not match the expected pattern." [#&#8203;33069](https://github.com/open-webui/open-webui/pull/33069), [Commit](https://github.com/open-webui/open-webui/commit/c04e408432b24e2a6cbeb2eaf513b8f2840460b6), [#&#8203;33068](https://github.com/open-webui/open-webui/issues/33068) - 🪡 **More Concise and Add Details.** Choosing More Concise or Add Details or typing a suggestion under a reply now rewrites that reply, where the model got the instruction without the reply and answered it on its own, for example with "OK, I'll keep answers shorter". [#&#8203;33084](https://github.com/open-webui/open-webui/pull/33084), [Commit](https://github.com/open-webui/open-webui/commit/c69e5a73c0de43691e502bfaa03285e4e8cec05d), [#&#8203;33083](https://github.com/open-webui/open-webui/issues/33083) - 📱 **Sign-in page on small screens.** The sign-in page can now be scrolled when it is taller than the screen, such as on phones with the keyboard open, where parts of the form could be out of reach. [Commit](https://github.com/open-webui/open-webui/commit/ffbe0ac12da8ca5af9da12f8f00c43e382300b4f) - 🖼️ **Note menu image uploads.** Images picked with Upload files in a note's menu now appear in the note, where they were saved with the note's files but never inserted. [#&#8203;32793](https://github.com/open-webui/open-webui/pull/32793), [Commit](https://github.com/open-webui/open-webui/commit/4604f2a3bc2f112135eac75c06048916d3ff37df), [#&#8203;32792](https://github.com/open-webui/open-webui/issues/32792) - 📜 **Prompt history on unchanged saves.** Saving a prompt without changes no longer adds an identical version to its history. [#&#8203;32709](https://github.com/open-webui/open-webui/pull/32709), [Commit](https://github.com/open-webui/open-webui/commit/312d113fd04bc43996cf97282c34b46ba79c26cd), [#&#8203;32708](https://github.com/open-webui/open-webui/issues/32708) - 🎨 **Images after tool approval.** Images the model generates after you answer its question or approve or reject a tool call now appear in the reply, where they were created but never shown and the model kept retrying with more hidden images. [#&#8203;32680](https://github.com/open-webui/open-webui/pull/32680), [Commit](https://github.com/open-webui/open-webui/commit/93ba628f3a3cf7f275892f3f3e0375d5984b51a7), [#&#8203;32678](https://github.com/open-webui/open-webui/issues/32678) - 🧬 **Embeddings with Prefix ID.** The embeddings API now works with models from a connection that has a Prefix ID, where the provider rejected the prefixed model name as unknown. [#&#8203;32724](https://github.com/open-webui/open-webui/pull/32724), [Commit](https://github.com/open-webui/open-webui/commit/c901bc39d31eb85af289743850f92848529d422b), [#&#8203;32715](https://github.com/open-webui/open-webui/issues/32715) - 📞 **Realtime calls answer once.** A Realtime call no longer answers the same sentence twice when a short pause splits it into two turns. [#&#8203;32773](https://github.com/open-webui/open-webui/pull/32773), [Commit](https://github.com/open-webui/open-webui/commit/25b115662396a9e09ee115008f4516aaa2eebd1d), [#&#8203;32764](https://github.com/open-webui/open-webui/issues/32764) - ⬅️ **Right-to-left question cards.** Question cards from Ask User now follow the Chat Direction setting, so Hebrew and Arabic questions and answers are laid out right to left. [#&#8203;32784](https://github.com/open-webui/open-webui/pull/32784), [Commit](https://github.com/open-webui/open-webui/commit/aee4cbf4639281f711018af08e029e0f501fd3c4), [#&#8203;32778](https://github.com/open-webui/open-webui/issues/32778) - 🛠️ **Same-named tool functions.** When two attached tools have a function with the same name, the model can now call both, where only the first one could be called. [#&#8203;32670](https://github.com/open-webui/open-webui/pull/32670), [Commit](https://github.com/open-webui/open-webui/commit/ab6976b5bf6b1f18149a4f6c8ec4e2d90adec643), [#&#8203;32669](https://github.com/open-webui/open-webui/issues/32669) - 🧷 **Tool server array parameters.** An array query parameter now reaches an OpenAPI tool server as repeated values instead of one text value that looks like a Python list. [#&#8203;32677](https://github.com/open-webui/open-webui/pull/32677), [Commit](https://github.com/open-webui/open-webui/commit/fd1e59b25ff68ff015ce84707839084157df6045), [#&#8203;32676](https://github.com/open-webui/open-webui/issues/32676) - 📖 **Reading files in pages.** The model's file reading tools now return every part of a file or knowledge base file read in pages with line numbers on, where some text between pages was skipped, and asking for only an end line now reads from the first line up to it, where the model got the same opening part back and kept retrying. [#&#8203;33155](https://github.com/open-webui/open-webui/pull/33155), [Commit](https://github.com/open-webui/open-webui/commit/a01b36afe80983ca878b2c4dcdc25f8559a25308), [#&#8203;33099](https://github.com/open-webui/open-webui/issues/33099), [#&#8203;33154](https://github.com/open-webui/open-webui/pull/33154), [Commit](https://github.com/open-webui/open-webui/commit/d378fe81cb7e6bde2e4766cc5be1e0a45a320d3b), [#&#8203;33100](https://github.com/open-webui/open-webui/issues/33100) - 📚 **Multi-folder knowledge drops.** Dropping several folders on a knowledge base now uploads all of them, where only the first one was uploaded. [#&#8203;32653](https://github.com/open-webui/open-webui/pull/32653), [Commit](https://github.com/open-webui/open-webui/commit/d907b61816018202d2425109fbf9b506107e7182), [#&#8203;32652](https://github.com/open-webui/open-webui/issues/32652) - 🙈 **Base models after publishing.** Hiding, toggling or editing a base model right after making it public in Admin Settings > Models is now saved. [#&#8203;32655](https://github.com/open-webui/open-webui/pull/32655), [Commit](https://github.com/open-webui/open-webui/commit/d8bef1ef90391647d2d34dffade63484f70e5c83), [#&#8203;32654](https://github.com/open-webui/open-webui/issues/32654) - 🧩 **Restored skill-only drafts.** A draft that holds only a skill, brought back to the chat input, now sends only that skill, where the names of every skill were sent. [#&#8203;32690](https://github.com/open-webui/open-webui/pull/32690), [Commit](https://github.com/open-webui/open-webui/commit/14956af03f2ba50a154b13ff77166139fdcc0315), [#&#8203;32689](https://github.com/open-webui/open-webui/issues/32689) - 🐍 **Python code block results.** Running a plotting block again now shows only the new plot, and a block whose last value is a date, decimal number or other object shows that value instead of "Maximum call stack size exceeded". [#&#8203;32686](https://github.com/open-webui/open-webui/pull/32686), [Commit](https://github.com/open-webui/open-webui/commit/1a0bdb38a179ace36419aee87688727a9466a25a), [#&#8203;32685](https://github.com/open-webui/open-webui/issues/32685), [#&#8203;32682](https://github.com/open-webui/open-webui/pull/32682), [Commit](https://github.com/open-webui/open-webui/commit/fb5eec56dd2212d07a77dfb4ed4b25d26ccebcb2), [#&#8203;32681](https://github.com/open-webui/open-webui/issues/32681) - 🪟 **Preview of an earlier artifact.** Preview on an earlier code block now opens that block's artifact when the artifacts pane was closed, where it opened the newest one. [#&#8203;32688](https://github.com/open-webui/open-webui/pull/32688), [Commit](https://github.com/open-webui/open-webui/commit/9862a5bd613bb1c98166bb0eff1c8e824fa86723), [#&#8203;32687](https://github.com/open-webui/open-webui/issues/32687) - 📎 **Attachments in the chat input.** An attached webpage now stays when file upload is not allowed, and a file's Entire Document switch shows that file's own setting after another attachment is removed. [#&#8203;32701](https://github.com/open-webui/open-webui/pull/32701), [Commit](https://github.com/open-webui/open-webui/commit/bb8d49ff31d3503f91dff2d6e60b4376e021d2f7), [#&#8203;32700](https://github.com/open-webui/open-webui/issues/32700), [#&#8203;32699](https://github.com/open-webui/open-webui/pull/32699), [Commit](https://github.com/open-webui/open-webui/commit/a944564c20a3c207c6987e49d10cc01658e50b67), [#&#8203;32698](https://github.com/open-webui/open-webui/issues/32698) - 🕸️ **Web pages on fresh installs.** Attached web pages and other HTML text extraction return their text again on fresh installs, where a broken update of a library underneath made them come back empty. [#&#8203;33103](https://github.com/open-webui/open-webui/pull/33103), [Commit](https://github.com/open-webui/open-webui/commit/f32de07ddead5453658c828cd7e2c3a1c680934c) - 🔎 **Shared Chats search paging.** A search in Shared Chats or in an admin's view of a user's chats now loads more than the first 60 results. [#&#8203;32675](https://github.com/open-webui/open-webui/pull/32675), [Commit](https://github.com/open-webui/open-webui/commit/0f2d1af1ce2092b2d6021823a923ddd179682f52), [#&#8203;32674](https://github.com/open-webui/open-webui/issues/32674) - 📂 **Open folder stays open.** Deleting another folder in the sidebar no longer closes the folder page you have open. [#&#8203;32697](https://github.com/open-webui/open-webui/pull/32697), [Commit](https://github.com/open-webui/open-webui/commit/db9aa8c9c02f841f4d35f65ee061eddd2e4a57f9), [#&#8203;32696](https://github.com/open-webui/open-webui/issues/32696) - 📝 **Note pins and counts.** The Notes list now shows Pin for a note unpinned from the sidebar, and readers of a note shared as read only see its word and character counts instead of zero. [#&#8203;32707](https://github.com/open-webui/open-webui/pull/32707), [Commit](https://github.com/open-webui/open-webui/commit/6a7205e965072a016c9c3046e1be320921a0af5f), [#&#8203;32706](https://github.com/open-webui/open-webui/issues/32706), [#&#8203;32711](https://github.com/open-webui/open-webui/pull/32711), [Commit](https://github.com/open-webui/open-webui/commit/252338964223cc75b5d0f02ba9e3cb7f6bd9ab90), [#&#8203;32710](https://github.com/open-webui/open-webui/issues/32710) - 🪞 **Notes open once.** A note that two people open at the same time, such as one imported from a Markdown or text file and not edited since, no longer shows and saves its text twice, also with several workers. [#&#8203;33004](https://github.com/open-webui/open-webui/pull/33004), [Commit](https://github.com/open-webui/open-webui/commit/499b83fa8d47f592bd7d79cab270d5cfc12652be), [#&#8203;33002](https://github.com/open-webui/open-webui/issues/33002), [Commit](https://github.com/open-webui/open-webui/commit/1407f83cfc8df4e727f82beabdd4da6e29fc1119), [#&#8203;32824](https://github.com/open-webui/open-webui/issues/32824) - 🔊 **Voice from Settings > Audio.** Read Aloud and voice mode now use the voice picked in Settings > Audio, which in Firefox fell back to the default voice. [#&#8203;32705](https://github.com/open-webui/open-webui/pull/32705), [Commit](https://github.com/open-webui/open-webui/commit/5edbd12bc9ba29eb0753d9bc888165d23171b0d8), [#&#8203;32704](https://github.com/open-webui/open-webui/issues/32704) - 🔈 **Read Aloud stops on failure.** Read Aloud now stops requesting the remaining sentences once one fails, so an unavailable speech provider shows a single error instead of one for every sentence. [#&#8203;33028](https://github.com/open-webui/open-webui/pull/33028), [Commit](https://github.com/open-webui/open-webui/commit/ea615c3a2e89d827e24016d719acb5ee63f409d2), [#&#8203;33023](https://github.com/open-webui/open-webui/issues/33023) - 🗄️ **Archived chats survive folders.** Archive All Chats now takes the chats out of their folders, so deleting a folder afterwards no longer deletes those archived chats for good. [#&#8203;32647](https://github.com/open-webui/open-webui/pull/32647), [Commit](https://github.com/open-webui/open-webui/commit/97f5c4e973a703b63a2606b054de324db88f706f), [#&#8203;32646](https://github.com/open-webui/open-webui/issues/32646) - 🔌 **No hangs after closed pages.** Closing a page while it was still loading, such as a chat export or a file's processing status, no longer loses database connections on SQLite, where later requests could hang or fail with 503 once enough were lost. [#&#8203;32617](https://github.com/open-webui/open-webui/pull/32617), [Commit](https://github.com/open-webui/open-webui/commit/2355b8a3699826eaf1fe5a344f63e292f9532c48), [#&#8203;32609](https://github.com/open-webui/open-webui/issues/32609), [#&#8203;32741](https://github.com/open-webui/open-webui/issues/32741) - 🧱 **Frontend build on Windows.** Running npm run build or npm run dev on Windows works again, where the encryption module check added in 0.12.3 failed on Windows paths and line endings, and the build now runs with a 12 GB memory limit like the Docker build. [#&#8203;32735](https://github.com/open-webui/open-webui/pull/32735), [Commit](https://github.com/open-webui/open-webui/commit/7345c6c31e91b473a4a6b49ec14d37d37cbd8b49), [#&#8203;32656](https://github.com/open-webui/open-webui/issues/32656) - 🪄 **Function input dialogs answered.** Confirming or cancelling a function's input or confirmation dialog now reaches the function when a script event arrived while the dialog was open, where the function kept waiting for an answer. [#&#8203;32744](https://github.com/open-webui/open-webui/pull/32744), [Commit](https://github.com/open-webui/open-webui/commit/2d9852c6048774c0d8913c722b5fe661326f1b4d), [#&#8203;32742](https://github.com/open-webui/open-webui/issues/32742) - ❓ **Clearer Ask User error.** When a model sends the Ask User questions as something other than a list, such as a JSON string, it now gets an error saying they must be an array of question objects instead of "ask_user requires 1-3 questions", which made models repeat the same call. [#&#8203;32727](https://github.com/open-webui/open-webui/pull/32727), [Commit](https://github.com/open-webui/open-webui/commit/794e57cf7ed29e0bf00a66a825c1d0b9682845b4), [#&#8203;32662](https://github.com/open-webui/open-webui/issues/32662) - 🛑 **Stop sequences with percent.** A stop sequence containing % no longer stops every message from sending. [#&#8203;32649](https://github.com/open-webui/open-webui/pull/32649), [Commit](https://github.com/open-webui/open-webui/commit/fdb304be2f5250c9282bacd3ff91757e55b89976), [#&#8203;32648](https://github.com/open-webui/open-webui/issues/32648) - 🗜️ **Channel image compression by default.** With image compression on, images in channels are now compressed when Compress Images in Channels is left at its default, where they were sent uncompressed. [#&#8203;32693](https://github.com/open-webui/open-webui/pull/32693), [Commit](https://github.com/open-webui/open-webui/commit/70fb5462eab6b71e258c9fbd9ce5714bd173bcfb), [#&#8203;32692](https://github.com/open-webui/open-webui/issues/32692) - 🎙️ **Microphone off when leaving.** Leaving a chat while dictating now turns the microphone off. [#&#8203;32640](https://github.com/open-webui/open-webui/pull/32640), [Commit](https://github.com/open-webui/open-webui/commit/636b631ab7cf2f4053c43466468cd4bb119dd250), [#&#8203;32638](https://github.com/open-webui/open-webui/issues/32638), [#&#8203;32639](https://github.com/open-webui/open-webui/issues/32639) - ✏️ **Chat titles of only spaces.** Renaming a chat to only spaces now keeps its title and shows an error instead of saving a blank title. [#&#8203;32770](https://github.com/open-webui/open-webui/pull/32770), [Commit](https://github.com/open-webui/open-webui/commit/9cbd27011b1d1842f52cbf91b4b5764b5820b52b), [#&#8203;32769](https://github.com/open-webui/open-webui/issues/32769) - 💬 **Prompts from / in channels.** Picking a prompt from the / menu in a channel now inserts the prompt text instead of a command chip. [#&#8203;32713](https://github.com/open-webui/open-webui/pull/32713), [Commit](https://github.com/open-webui/open-webui/commit/1d0b78271910cb5a20e121fd586389906b87dbbe), [#&#8203;32712](https://github.com/open-webui/open-webui/issues/32712) - 🔤 **No stray formatting spaces.** Chat messages no longer show an extra space at the start of each paragraph and before italic, bold, struck-through or linked text, which appeared in 0.12.3 and left a gap after an em dash. [#&#8203;32743](https://github.com/open-webui/open-webui/pull/32743), [Commit](https://github.com/open-webui/open-webui/commit/2bebbb44e1a04b220f831aced950b0e334529988), [#&#8203;32739](https://github.com/open-webui/open-webui/issues/32739) - 🔁 **FastMCP list results sent once.** List results from tools on servers built with the standalone FastMCP package now reach the model once instead of twice, as text and as structured data. [#&#8203;32726](https://github.com/open-webui/open-webui/pull/32726), [Commit](https://github.com/open-webui/open-webui/commit/217766ed0f53bde167cb80b115f7eb79664ffe5a), [#&#8203;32719](https://github.com/open-webui/open-webui/issues/32719) - 🪢 **MCP tools with alternative inputs.** MCP tools that describe their input as alternatives, such as a page by ID or by path, now receive the arguments the model sends, where they were called with none and the server rejected the call. [#&#8203;32903](https://github.com/open-webui/open-webui/pull/32903), [Commit](https://github.com/open-webui/open-webui/commit/f3f9af594f3c9a20b1f46f846eb8393630733f6c), [#&#8203;32898](https://github.com/open-webui/open-webui/discussions/32898) - 🩺 **Readable MCP tool errors.** When an MCP tool returns an error, the model now gets the server's error text as written instead of an unreadable dump of the whole result, so it can correct the call where it tended to retry the same broken one. [#&#8203;32942](https://github.com/open-webui/open-webui/pull/32942), [Commit](https://github.com/open-webui/open-webui/commit/37af63b6496d545f6f2d4e8067ea01de209e218b), [#&#8203;32918](https://github.com/open-webui/open-webui/issues/32918) - 📞 **Ended Realtime calls named correctly.** When the voice provider ends a Realtime call, the call now shows "Voice provider connection closed" instead of sometimes showing "Voice connection failed". [#&#8203;32730](https://github.com/open-webui/open-webui/pull/32730), [Commit](https://github.com/open-webui/open-webui/commit/cd74e6d1266c5a623f9c143d7efa6cb4d6f3f0c9), [#&#8203;32729](https://github.com/open-webui/open-webui/issues/32729) - 🧭 **Scrolling while a reply streams.** On slow or busy devices a streaming reply now keeps the view at the bottom as its content grows, where it stopped following partway through, and scrolling up while it streams is no longer pulled back down. [Commit](https://github.com/open-webui/open-webui/commit/5a46aad0f0702536c98c9a26ae7d04482cdac784), [#&#8203;32728](https://github.com/open-webui/open-webui/issues/32728) - ⚡ **Early updates in new chats.** The first reply of a new chat no longer stays empty with the Stop button showing when its error or content arrives before the page knows the new chat, a message added while a chat is still loading no longer stays missing until a reload, and a message queued during the first reply of a new chat is sent once that reply finishes. [Commit](https://github.com/open-webui/open-webui/commit/cbd06d2aad0d64c2a50b4989c4290762de2cd3f0), [Commit](https://github.com/open-webui/open-webui/commit/d5038fec44d2f37e81798a6c7f4340a8d1a62f10), [#&#8203;32550](https://github.com/open-webui/open-webui/issues/32550), [#&#8203;32761](https://github.com/open-webui/open-webui/issues/32761) - 🧠 **Reasoning replay with Azure.** Reasoning models on Azure OpenAI through the Responses API no longer fail with an "Unknown parameter" error on the request after they think and then call a tool. [Commit](https://github.com/open-webui/open-webui/commit/d1705c10788242b4d1a49042318a577877042469), [#&#8203;32805](https://github.com/open-webui/open-webui/issues/32805) - 📋 **Drafts with variables kept.** Reloading the page with a chat input draft that contains {{ }} placeholders, or editing a queued message that contains them, now keeps the text as it was, where it asked for input variables and dropped the text. [Commit](https://github.com/open-webui/open-webui/commit/6dbd375c267dd0dafc83c480ec23e3b1a7156406), [#&#8203;32650](https://github.com/open-webui/open-webui/issues/32650) - 🔑 **OAuth 2.1 static MCP secrets.** MCP connections using OAuth 2.1 (Static) now send the client secret through HTTP Basic authentication when the server does not take it as a form field, where servers such as X Ads that list the public client method first got no secret and rejected the sign-in. [#&#8203;32818](https://github.com/open-webui/open-webui/pull/32818), [Commit](https://github.com/open-webui/open-webui/commit/21f770fb731ff24245bc9ca8c3c82bb4171e24cf), [#&#8203;32813](https://github.com/open-webui/open-webui/issues/32813) - 🌍 **Web Search settings save.** Admins can now save Web Search settings such as the web loader while web search is turned off, where empty search engine fields blocked saving. [#&#8203;32840](https://github.com/open-webui/open-webui/pull/32840), [Commit](https://github.com/open-webui/open-webui/commit/cc6de63bc876f3c3d8116d5d2858e7887b1997b9), [#&#8203;32831](https://github.com/open-webui/open-webui/issues/32831) - 🖌️ **Images settings save.** Admins can now save Images settings while Image Generation or Image Edit is turned off, where a missing API key or URL for that feature's engine, such as the OpenAI key on a fresh install, blocked every change on the page. [#&#8203;32949](https://github.com/open-webui/open-webui/pull/32949), [Commit](https://github.com/open-webui/open-webui/commit/6b9237f1a1ef28045d36c07eb452e7b76524c19d), [#&#8203;32835](https://github.com/open-webui/open-webui/issues/32835) - 🌄 **WebP image editing.** Editing a WebP image with Image Edit now works in the Docker image, where the image reached the provider without an image type and was rejected. [#&#8203;32902](https://github.com/open-webui/open-webui/pull/32902), [Commit](https://github.com/open-webui/open-webui/commit/f6f42b0111054123d6811270feca35bf9ce6d19d), [#&#8203;32899](https://github.com/open-webui/open-webui/issues/32899) - 🍴 **No fork in temporary chats.** The Fork chat option is now hidden in temporary chats and the /fork command answers that there is no chat to fork, where forking failed with an error. [#&#8203;32839](https://github.com/open-webui/open-webui/pull/32839), [Commit](https://github.com/open-webui/open-webui/commit/1a492207971a5118dde2fe6b523edf7021f38cc9), [#&#8203;32833](https://github.com/open-webui/open-webui/issues/32833) - 🚀 **First message after loading.** A message sent right after the page loads is no longer wiped by the new chat setup still running, where it disappeared and its reply stayed empty until a reload. [#&#8203;32829](https://github.com/open-webui/open-webui/pull/32829), [Commit](https://github.com/open-webui/open-webui/commit/4ed1af6879ee632a3130771b4a960ccf37c1c305), [#&#8203;32819](https://github.com/open-webui/open-webui/issues/32819) - 📑 **MinerU key in local mode.** Document extraction with MinerU in local mode now sends the configured API key to MinerU 4.x servers that require one, where every document failed. [#&#8203;32838](https://github.com/open-webui/open-webui/pull/32838), [Commit](https://github.com/open-webui/open-webui/commit/3e0564d11a06052d8042fffc95b138dcbde5df6b), [#&#8203;32836](https://github.com/open-webui/open-webui/issues/32836) - 🚫 **Model import reports taken IDs.** Importing models on the Workspace Models page now stops with an error at a model whose ID belongs to another user's model the importer cannot edit or, for non-admins, to a connection model, where that model was skipped without a message. [#&#8203;32866](https://github.com/open-webui/open-webui/pull/32866), [Commit](https://github.com/open-webui/open-webui/commit/cb7d7e851d160bfc866aca9385c8a8013dd10192) - 🎞️ **Left-aligned PowerPoint titles.** The PowerPoint preview now keeps titles and subtitles that the file aligns left on the left, where it centered them. [#&#8203;32876](https://github.com/open-webui/open-webui/pull/32876), [Commit](https://github.com/open-webui/open-webui/commit/8fa77c8282b10e7de36863c4df6583a62a55354c), [#&#8203;32873](https://github.com/open-webui/open-webui/issues/32873) - 🫥 **Multi-model hover previews.** Sidebar hover previews of a chat with replies from several models now show one reply at full width, where every reply was squeezed into the card. [Commit](https://github.com/open-webui/open-webui/commit/35b51e09eab0942470cb9dce8f97fb00b9b96f2c), [#&#8203;32858](https://github.com/open-webui/open-webui/issues/32858) - 🐚 **Launcher help in zsh.** The examples in the Docker Compose launcher help now quote options with square brackets, so they also work when pasted into zsh. [#&#8203;32881](https://github.com/open-webui/open-webui/pull/32881), [Commit](https://github.com/open-webui/open-webui/commit/52f51ea4f3044072d49eefd4feedb859bb66b80c), [#&#8203;32878](https://github.com/open-webui/open-webui/issues/32878) - 🌡️ **Context gauge uses model threshold.** The context usage gauge now measures against the compaction threshold set on the model or in the default model parameters, the same one compaction uses, where it ignored a lower threshold on the model and showed a chat as far from compaction. [Commit](https://github.com/open-webui/open-webui/commit/c9415a688ea469144ab2a7796d5eef71947af0b8), [#&#8203;32821](https://github.com/open-webui/open-webui/issues/32821) - 🏷️ **Tooltips show text as written.** Tooltips now show names, paths and descriptions that contain angle brackets as written, where they came out mangled or partly missing. [#&#8203;32953](https://github.com/open-webui/open-webui/pull/32953), [Commit](https://github.com/open-webui/open-webui/commit/3299a097530847ec53da01a5964cf7ef8592dee0) - 📇 **Knowledge file text edits.** The Preview of a text file in a knowledge base now shows its indexed text and refreshes after you save an edit, where it kept showing the original upload, and saving empty content is now refused. [Commit](https://github.com/open-webui/open-webui/commit/82d6f230b4e701e85863c01b1992a25a767696bf) - 📡 **Websockets after Redis reconnects.** With the Redis websocket manager and "retry_on_timeout" in "WEBSOCKET_REDIS_OPTIONS", an instance now accepts new browser connections again once Redis is back after its connection dropped, where since 0.12.3 every new connection could hang until the instance was restarted. [#&#8203;33009](https://github.com/open-webui/open-webui/pull/33009), [Commit](https://github.com/open-webui/open-webui/commit/0d17660535dd2ad9d6f0b75a2a2f5855066cd0a0), [#&#8203;33008](https://github.com/open-webui/open-webui/issues/33008) - 🥞 **One model More menu open.** Clicking the More button of another model in the model picker, or clicking another model, now closes the More menu that was open, where the menus stayed open and piled up over the picker. [#&#8203;33020](https://github.com/open-webui/open-webui/pull/33020), [Commit](https://github.com/open-webui/open-webui/commit/fa629e5ca5015f6bc3e3be1f7a4a76c5ccd57e18), [#&#8203;33019](https://github.com/open-webui/open-webui/issues/33019) ##### Changed - 🔧 **Direct Integrations off disables connections.** While Direct Integrations is off, as it is by default, the tool servers and Open Terminal connections that users and admins saved in their Integrations settings are no longer used in chats, where turning it off only hid the settings tab, so instances that never turned it on lose those connections until an admin turns on Direct Integrations in Admin Settings > Connections or sets "ENABLE_DIRECT_INTEGRATIONS". [#&#8203;32996](https://github.com/open-webui/open-webui/pull/32996), [Commit](https://github.com/open-webui/open-webui/commit/3e9d6cb9508a1ba4ec18017b3c80afaf6ac59a89) - 🔀 **Sharing changed only in Access.** Saving a model, prompt, tool, skill, knowledge base, note, channel or calendar no longer changes who it is shared with, which is now changed only in the item's Access settings, saved right away in the model editor, channel settings and external knowledge sources, or through the access endpoints that channels and calendars now also have. [Commit](https://github.com/open-webui/open-webui/commit/5f95008abdfbbbfbe5c080de0347deb70eb507b6), [Commit](https://github.com/open-webui/open-webui/commit/c7e34e0fa9bdd34f798ab197e1e21aca2234ed2b) - 🐳 **Python 3.12 Docker image.** The Docker image now runs Python 3.12 on Debian 13 instead of Python 3.11 on Debian 12, so custom functions, tools and packages installed with pip inside the container need versions that support Python 3.12. [#&#8203;32861](https://github.com/open-webui/open-webui/pull/32861), [Commit](https://github.com/open-webui/open-webui/commit/a915df8ce12b32109b7b929cb2cad6046293aef6) - 🤝 **Sharing permissions enforced everywhere.** Sharing permissions such as Models Sharing, Knowledge Sharing and Folders Sharing now also apply to sharing through the API, and a change in an item's Access settings that a user is not allowed to make is now refused with an error instead of being quietly left out. [Commit](https://github.com/open-webui/open-webui/commit/5f95008abdfbbbfbe5c080de0347deb70eb507b6) - 🗄️ **Manage Files shows only yours.** Manage Files in Settings > Data Controls now lists only your own files, also for administrators, who saw every user's files there while "BYPASS_ADMIN_ACCESS_CONTROL" was on, as it is by default. [Commit](https://github.com/open-webui/open-webui/commit/2a86805648f45c36c479c6f9a0127cae799ee14f) - 🕹️ **Model controls for all users.** Anyone with access to a model can now pick its model control options, such as a Thinking level, and parameters saved to an account are no longer filtered by the Allow Chat Controls and Allow Chat Params permissions, which now only hide the Chat Controls and Advanced Parameters panels. [#&#8203;32860](https://github.com/open-webui/open-webui/pull/32860), [Commit](https://github.com/open-webui/open-webui/commit/db5b8749448c5cb2a1e42f1bd0c01213bc2c31d1), [#&#8203;32626](https://github.com/open-webui/open-webui/issues/32626) - 🚦 **Stricter MCP timeouts and redirects.** "MCP_INITIALIZE_TIMEOUT", 10 seconds by default, now also limits listing tools and reading resources on MCP servers, so slow servers may need a higher value, and MCP connections now only follow redirects that stay on the same address. [#&#8203;33087](https://github.com/open-webui/open-webui/pull/33087), [Commit](https://github.com/open-webui/open-webui/commit/8151826483163877cec837b35ba7c1affdd1fb5a) - ⌨️ **Shift quick actions removed.** Holding Shift over a sidebar chat no longer shows the quick Archive and Delete buttons, since Shift-click now selects chats, which are then archived or deleted together, and deleting asks for confirmation first. [Commit](https://github.com/open-webui/open-webui/commit/acc231774d00d8856feefd2e7a3ef4b503a8224e), [#&#8203;32543](https://github.com/open-webui/open-webui/issues/32543) - ✉️ **No emails on hover.** Hovering an owner in the workspace lists and admin Functions, or a person in access settings, no longer shows their email address, since the profile card that replaces the tooltip does not include it. [Commit](https://github.com/open-webui/open-webui/commit/02974f41e9b7c9d34f2cd7c664c2a04fd6ac12ae), [Commit](https://github.com/open-webui/open-webui/commit/72cc79b8f336a753b6e75e0f3415630601b14759), [Commit](https://github.com/open-webui/open-webui/commit/ba34b1c47c1d054d2f9c498d0aed862ec06da41a) ### [`v0.12.3`](https://github.com/open-webui/open-webui/releases/tag/v0.12.3) [Compare Source](https://github.com/open-webui/open-webui/compare/v0.12.2...v0.12.3) ##### Added - 🔐 **End-to-end encrypted chats.** Direct messages and private group channels can now hold a temporary end-to-end encrypted chat: a member picks Encrypted Chat in the channel menu, the other members see "Encrypted chat in progress" with a Join link, messages of up to 16 KiB are encrypted in the browser with MLS and only passed through the server without being saved, participants can verify each other by comparing codes and see when others are typing, and the chat is cleared when you leave or reload and ends when channel membership or access changes. Administrators turn it on under Admin Settings > General > Encrypted channels or with "ENABLE_ENCRYPTED_CHANNELS" and grant it with the new Encrypted Channels permission, off by default or set with "USER_PERMISSIONS_FEATURES_ENCRYPTED_CHANNELS", and it needs websocket connections with websocket server logging off and HTTPS in production. [Commit](https://github.com/open-webui/open-webui/commit/7dc91de86c41866f4170602f074c39dbf1609377), [Commit](https://github.com/open-webui/open-webui/commit/0b3812f2857b4c65fd1ab931f40de4f1264edc46), [Commit](https://github.com/open-webui/open-webui/commit/b1e876896caee5bf30a010fb414a9249ec7f59a2), [Commit](https://github.com/open-webui/open-webui/commit/4dedaaf6e2292c2c4fb48668eee1292cfd7de2d0) - 📡 **Much lighter streaming with Redis.** With Redis, a streaming reply is now stored under its own key and new text is appended to it instead of rewriting the whole reply into a shared hash on every update, and replies started on older instances are still read during an upgrade; with room channels on, each instance now only subscribes to the rooms of people connected to it, so Redis no longer sends it live updates for chats it does not serve. [Commit](https://github.com/open-webui/open-webui/commit/f5a26f53a089eeb9683ead687a1fd3e9125132a6) [Commit](https://github.com/open-webui/open-webui/commit/362b01d0b2ba677858a5af85caf3dd8544c5e6df) [#&#8203;32478](https://github.com/open-webui/open-webui/issues/32478) - 🔍 **Compare view options and undo.** The Compare revision view has a Comparison options menu to ignore whitespace, ignore emphasis markers or only show changes with the unchanged lines folded away, an Undo button that steps back through your edits in both panes in order, and changed lines that are now lined up by their matching text. [Commit](https://github.com/open-webui/open-webui/commit/d0750f6617acd3b57ce58ba1d543c37e6c793c8d), [Commit](https://github.com/open-webui/open-webui/commit/a087aa1deb4d999b122f882335fd08af8f06e72c), [Commit](https://github.com/open-webui/open-webui/commit/10ce0d23651fc2c96fd0d276147cd48105e21b84), [Commit](https://github.com/open-webui/open-webui/commit/3288fe010a5e8f8a59e1e5d2262957d175e56bde) - 📝 **Richer Markdown file previews.** Markdown files opened in the terminal file browser now render with the same renderer as chat replies, including math, footnotes, highlighted code blocks, alerts and Mermaid diagrams, as well as HTML blocks mixed with Markdown, laid out as a compact document, and task list checkboxes in an editable file can be ticked to save the change to the file. [Commit](https://github.com/open-webui/open-webui/commit/c9a52208da9e8deeac6f2df7fcacbe519c2acb29) [Commit](https://github.com/open-webui/open-webui/commit/7c3980338b72c5faa7e7f3a088deb477644fef40) [Commit](https://github.com/open-webui/open-webui/commit/15ac5163ea00a934ec0c68d2bb7f6bc5c655223e) [#&#8203;32514](https://github.com/open-webui/open-webui/issues/32514) - 👀 **Live collaborators in shared chats.** The top bar of a chat now shows the pictures of the other people who have the same chat open at that moment, up to three and a count for the rest, with a Collaborators list that opens their profile cards. [Commit](https://github.com/open-webui/open-webui/commit/4dedaaf6e2292c2c4fb48668eee1292cfd7de2d0), [Commit](https://github.com/open-webui/open-webui/commit/8191ac30dd79b4a39130fe83ffc16035776be484), [Commit](https://github.com/open-webui/open-webui/commit/8e9519240fcdcd568a9b951ba06e523c58e68350) - ✏️ **Edit and regenerate in shared chats with replies.** In a chat from a shared folder that allows replies, people who may edit messages can now edit a prompt to start a new branch and regenerate any reply, not only replies to their own messages, and others viewing the chat stay on the branch they had selected. [Commit](https://github.com/open-webui/open-webui/commit/2a6e0da057d3b6eb6ba506346c4db788cab735f0), [Commit](https://github.com/open-webui/open-webui/commit/788a61180be76aef27761b051300d6eefa715947) - 🗄️ **Folder access in the folder editor.** Sharing a folder now happens through an Access button in the Edit Folder dialog instead of a Share item in the folder menu, the sharing mode can be set before anyone is added, and subfolders note that access granted to parent folders also applies to them. [Commit](https://github.com/open-webui/open-webui/commit/f4557ca06b8331c8914bac9e8f54ce63b0445c21), [Commit](https://github.com/open-webui/open-webui/commit/4a70253bc8586ad1d2a97241665b2060324bab37) - 🔎 **Workspace search.** The search window now searches your chats, chats in folders shared with you, chats shared with you, channel and direct messages and notes in one place, with filters for content type, a folder or channel, and whether something was created by you or shared with you, highlighted matches, a preview of each result with Ctrl/Cmd + Enter, Copy link, and channel results that open the thread scrolled to the matching message. [Commit](https://github.com/open-webui/open-webui/commit/b4db56ae96651d926adb4aefc6ec1275f35c6b6f), [Commit](https://github.com/open-webui/open-webui/commit/ef28e99e587a2845a2852bb6ab8c182dc1588980), [Commit](https://github.com/open-webui/open-webui/commit/1a1a81d8e09330900ac74e4bc97a48e1e0d52a8a) - 💭 **Comments in document previews.** Word, Excel, PowerPoint and PDF files opened in the terminal file browser now show their comments and replies, marked where they belong in the document and opened by hovering or tapping a marker, and older .xls spreadsheets can now be previewed too. [Commit](https://github.com/open-webui/open-webui/commit/ba0b2169e1799e1915c6dbb071c56d54896467fb) - 🧹 **Clear Input Selections shortcut.** Clearing the model override, selected tools and filters and the web search, image generation and code interpreter toggles from the chat input is now a shortcut you can change in Settings > Shortcuts, still Escape by default. [Commit](https://github.com/open-webui/open-webui/commit/9cf48f4fb0a8aef30010294912a3a5674850beaf) - 🙋 **Ask about a file from the file browser.** Selecting text in a file open in the terminal file browser now shows an "Ask or edit…" box that sends your request to the model with the file attached and the selection quoted, so it can answer or edit that file in the same terminal; unsaved edits can be saved before sending, and requests sent while a reply is running wait in the queue. [Commit](https://github.com/open-webui/open-webui/commit/af34515131d9efd41cfeae5c1ea50a7f7ed84443) - ☁️ **Google Drive access limited to picked files.** The Google Drive picker now asks only for access to the files a user picks instead of read access to their whole Drive, so self-hosted installs no longer need Google's restricted-scope verification and users no longer see the "Google hasn't verified this app" warning. [#&#8203;32531](https://github.com/open-webui/open-webui/pull/32531) [Commit](https://github.com/open-webui/open-webui/commit/ed5c2d7522c126b6163aad56762790025b31ec0b) [#&#8203;29537](https://github.com/open-webui/open-webui/issues/29537) - 📜 **Full text of long status lines.** Status lines above a reply, such as a token usage summary sent by a function, can now be clicked to show their full text, and with several status lines the history shows every entry in full. [#&#8203;32532](https://github.com/open-webui/open-webui/pull/32532) [Commit](https://github.com/open-webui/open-webui/commit/291b57bec24ec670050b996ede45ea6dd56c7f9f) [#&#8203;30056](https://github.com/open-webui/open-webui/issues/30056) - 📏 **Skill read limits.** Administrators can set how many characters of a skill the model reads at once and how long the preview of longer instructions is, under Admin Settings > General with "Skill Read Limit" and "Skill Preview Length" or the "SKILL_CONTENT_MAX_CHARS" and "SKILL_PREVIEW_MAX_CHARS" environment variables, which default to 20000 and 5000. [Commit](https://github.com/open-webui/open-webui/commit/92e64c1d59cdd99b5f33a108186a1d368daab964) - 🔄 **General improvements.** Various improvements were implemented across the application to enhance performance, stability, and security. - 🌐 **Translation updates.** Translations for Portuguese (Brazil), Chinese (Traditional), Arabic, Bengali, Hebrew, Georgian, Punjabi, Slovak, Serbian, Urdu, Uzbek and Vietnamese were enhanced and expanded. [#&#8203;32440](https://github.com/open-webui/open-webui/pull/32440), [#&#8203;32482](https://github.com/open-webui/open-webui/pull/32482), [#&#8203;32501](https://github.com/open-webui/open-webui/pull/32501) ##### Fixed - 🧾 **API key header requests in the audit log.** Requests authenticated with an API key in the x-api-key header, as Anthropic SDKs send it, or in a header set with "CUSTOM_API_KEY_HEADER" now appear in the audit log under the key's owner, and failed attempts with a wrong key are logged without a user, where these requests were missing from the audit log. [#&#8203;32443](https://github.com/open-webui/open-webui/pull/32443), [Commit](https://github.com/open-webui/open-webui/commit/f7c8ad012ddcf458c39cdf8a96b41c410655196c) - 📚 **Knowledge sharing kept on rename.** A collaborator with write access who edits a shared knowledge base's name or description no longer turns off sharing they could not set themselves, such as Public. [#&#8203;32450](https://github.com/open-webui/open-webui/pull/32450), [Commit](https://github.com/open-webui/open-webui/commit/08f6023427cdad6179b8fc5f656c99f3f0ad44f8), [#&#8203;32449](https://github.com/open-webui/open-webui/issues/32449) - 🤝 **Prompt and tool sharing kept on save.** A collaborator with write access who saves a shared prompt or tool no longer makes it private for everyone; sharing they could not set themselves is now kept. [#&#8203;32493](https://github.com/open-webui/open-webui/pull/32493), [Commit](https://github.com/open-webui/open-webui/commit/5dff6489d2f6a6c33c49ca035e5384ff5dd29006), [#&#8203;32492](https://github.com/open-webui/open-webui/issues/32492) - 📄 **PDF export of long notes and chats.** Long notes and chats now download as PDF, where Firefox failed with "Canvas exceeds max size" and Chrome saved a black PDF. [#&#8203;32459](https://github.com/open-webui/open-webui/pull/32459), [Commit](https://github.com/open-webui/open-webui/commit/f78e46ef44ecc1a7ea8a4951edc17e22bf1d5cad), [#&#8203;18334](https://github.com/open-webui/open-webui/issues/18334), [#&#8203;26373](https://github.com/open-webui/open-webui/issues/26373), [#&#8203;19583](https://github.com/open-webui/open-webui/discussions/19583) - ⏩ **Continue Response with several models.** Continue Response now continues the reply it was clicked under, where in a chat with several models it could extend another model's reply. [#&#8203;32456](https://github.com/open-webui/open-webui/pull/32456), [Commit](https://github.com/open-webui/open-webui/commit/3c82fda4e813e00d33ca16a8ddd61596296a2066), [#&#8203;32455](https://github.com/open-webui/open-webui/issues/32455) - 🏷️ **Tags of imported chats.** Imported chats now show their tags and the tags appear in tag suggestions, where tags missing from the account were not created on import. [#&#8203;32454](https://github.com/open-webui/open-webui/pull/32454), [Commit](https://github.com/open-webui/open-webui/commit/fd47370e851c3fcb55ba69aec39488aaec7f4b02), [#&#8203;32453](https://github.com/open-webui/open-webui/issues/32453) - 🔖 **Tags of archived chats.** Searching the sidebar for a tag whose chats are all archived no longer deletes the tag, which lost its original name when the chats were unarchived. [#&#8203;32452](https://github.com/open-webui/open-webui/pull/32452), [Commit](https://github.com/open-webui/open-webui/commit/58b821a4642480b2202320b45146bace72962f3b), [#&#8203;32451](https://github.com/open-webui/open-webui/issues/32451) - ⌨️ **Input methods in channels.** Pressing Enter to confirm a word while typing with an input method, such as for Japanese, Chinese or Korean, no longer sends and clears a channel message before the word is in. [Commit](https://github.com/open-webui/open-webui/commit/9d0aa791ad70ef2a7771c74955e2c9304021609e) - 🖱️ **Scroll error after leaving a chat.** Scrolling a chat right before opening Notes no longer logs a TypeError in the browser console. [#&#8203;32458](https://github.com/open-webui/open-webui/pull/32458), [Commit](https://github.com/open-webui/open-webui/commit/9245e31ccba8e464054297b1f3660ab3e7f77969), [#&#8203;32457](https://github.com/open-webui/open-webui/issues/32457) - 📐 **Steady first turn in new chats.** The latest message and reply in a new chat now keep their real height when the chat gets saved and the message list reloads, so the view no longer jumps on the first turn. [Commit](https://github.com/open-webui/open-webui/commit/bbccff89c1cf318c21cd9eeb4228f98882a33736) - 💬 **Sending in channels.** Your own channel message now stays in place when the server confirms it instead of being redrawn, and the channel scrolls to your new message as you send it, where it could jump or keep the old scroll position. [Commit](https://github.com/open-webui/open-webui/commit/99457b373e6b81fe50df0d18a75d126706237841) - 📂 **Terminal folder in new chats.** In a new chat, files you attach are uploaded to the folder open in the terminal file browser and the file browser stays in that folder once the chat is created, where uploads could go to the default folder and the browser jumped back to it. [Commit](https://github.com/open-webui/open-webui/commit/7ca62fdf93f6177e929cca20c712f3d958e1d935) - 📁 **Shared folder settings and access.** Editing a shared folder's models, system prompt or files no longer resets its sharing mode, and a subfolder in a folder shared with write access stays writable when it is also shared directly with read access. [Commit](https://github.com/open-webui/open-webui/commit/f4557ca06b8331c8914bac9e8f54ce63b0445c21), [Commit](https://github.com/open-webui/open-webui/commit/4a70253bc8586ad1d2a97241665b2060324bab37) - 🔑 **OAuth token refresh with client_secret_basic.** When "OAUTH_TOKEN_ENDPOINT_AUTH_METHOD" is client_secret_basic, token refresh now sends the client credentials in the Basic header like sign-in does, where providers that accept only Basic rejected the refresh and Open WebUI deleted the user's OAuth tokens, breaking model connections and tool servers that use them until the next sign-in. [#&#8203;32507](https://github.com/open-webui/open-webui/pull/32507), [Commit](https://github.com/open-webui/open-webui/commit/ae6793dd4f209455387bcc418a5c775eec0b16c3), [#&#8203;32506](https://github.com/open-webui/open-webui/issues/32506) - 🛠️ **OAuth tools after sign-in.** An OAuth MCP tool now stays turned on after its sign-in redirect when the model has default tools, and links with ?tools= turn the listed tools on. [#&#8203;32488](https://github.com/open-webui/open-webui/pull/32488), [Commit](https://github.com/open-webui/open-webui/commit/81722918384cb56608a2ab26ca03059b3a811758), [#&#8203;32476](https://github.com/open-webui/open-webui/issues/32476) - 🔤 **Admin default font kept.** Saving Settings > Interface no longer stores the administrator's default font and image compression size as your own settings, so later changes to those defaults still reach you. [#&#8203;32497](https://github.com/open-webui/open-webui/pull/32497), [Commit](https://github.com/open-webui/open-webui/commit/e979a1f9e2c86d60c7ee3ba48fb0dc42a3b65aa0), [#&#8203;32496](https://github.com/open-webui/open-webui/issues/32496) - 🔊 **Read aloud with slow speech.** Read aloud no longer stops after the first sentence when the speech engine takes longer to produce the next one than the current one takes to play. [#&#8203;32484](https://github.com/open-webui/open-webui/pull/32484), [Commit](https://github.com/open-webui/open-webui/commit/7da8653e71cda807609d9ec64912cd319c0d6ccf), [#&#8203;32446](https://github.com/open-webui/open-webui/issues/32446) - 🖼️ **Inline HTML previews on Per chat terminals.** Inline HTML previews in replies now find the file in the chat's own terminal workspace when the Open Terminal chat context is Per chat, where they showed "File not found". [#&#8203;32485](https://github.com/open-webui/open-webui/pull/32485), [Commit](https://github.com/open-webui/open-webui/commit/ec39df7da56f6947fde17a9be2c146251f891b26), [#&#8203;32477](https://github.com/open-webui/open-webui/issues/32477) - 🧵 **Replies in channel threads.** A reply started in one channel thread no longer carries over to the next thread you open, where messages could quote a message from the other thread. [#&#8203;32490](https://github.com/open-webui/open-webui/pull/32490), [Commit](https://github.com/open-webui/open-webui/commit/0696bfdf276fe6331c6dfaf50c53676d08b1574a), [#&#8203;32489](https://github.com/open-webui/open-webui/issues/32489) - 📑 **Scanned PDF previews.** Previewing a scanned PDF without a text layer in the knowledge base viewer no longer scrolls the page up and pushes the header and toolbar out of reach. [#&#8203;32487](https://github.com/open-webui/open-webui/pull/32487), [Commit](https://github.com/open-webui/open-webui/commit/1bc5648a7b67c82405f86ed4bd0506f9ae3eb739), [#&#8203;32481](https://github.com/open-webui/open-webui/issues/32481) - ↩️ **Right-to-left lists.** Bullets, numbers and task checkboxes of Markdown lists now sit on the correct side for right-to-left text in replies and file previews. [Commit](https://github.com/open-webui/open-webui/commit/6768f52aca633945292da08ff9450fd4dc62705f), [#&#8203;32444](https://github.com/open-webui/open-webui/issues/32444) - 🔁 **Regenerate in cloned shared chats.** Regenerate now works in a chat you cloned or forked from someone else's share, where it failed with "You can only regenerate your own messages". [#&#8203;32508](https://github.com/open-webui/open-webui/pull/32508), [Commit](https://github.com/open-webui/open-webui/commit/ad3e5a6c425f7b4af8a66f2e8dc42a7625526f95), [#&#8203;32505](https://github.com/open-webui/open-webui/issues/32505) - 🗑️ **Delete hidden for repliers in shared chats.** People replying in a shared chat no longer see a Delete button the server refuses, which made a deleted reply come back on reload; Delete shows to the chat's owner and to administrators when "ENABLE_ADMIN_CHAT_ACCESS" is on. [#&#8203;32480](https://github.com/open-webui/open-webui/pull/32480), [Commit](https://github.com/open-webui/open-webui/commit/493b10630b0c19ee5a60f9de0fc5d997bb82bbb1), [#&#8203;32479](https://github.com/open-webui/open-webui/issues/32479) - 🎛️ **Model default features can be turned off.** A model can now switch off a Default Feature, such as Code Interpreter, that the administrator turned on in Model Defaults, where it came back on when reopened and in new chats. [#&#8203;32500](https://github.com/open-webui/open-webui/pull/32500), [Commit](https://github.com/open-webui/open-webui/commit/a8dd8dbf987a3c7f4d6aa7c102e4e9cb158c4f5a), [#&#8203;32498](https://github.com/open-webui/open-webui/issues/32498) - 🧰 **Built-in tools turned back on stay on.** A built-in tool such as Memory that is off in Model Defaults now stays on after a model turns it back on and is saved. [#&#8203;32504](https://github.com/open-webui/open-webui/pull/32504), [Commit](https://github.com/open-webui/open-webui/commit/9cc648cad8589686e617e4a64bea10134ff16288), [#&#8203;32503](https://github.com/open-webui/open-webui/issues/32503) - 🏠 **Refresh with Landing Page Mode set to Chat.** Refreshing a new chat when Landing Page Mode is Chat no longer hides the message field and opens the model menu in the top left corner. [#&#8203;32510](https://github.com/open-webui/open-webui/pull/32510), [Commit](https://github.com/open-webui/open-webui/commit/5d4f16bcc9af1afac55dc0ffb4dced96041531a5), [#&#8203;32509](https://github.com/open-webui/open-webui/issues/32509) - 🗜️ **Compaction during tool runs keeps sources out.** Context compaction during a long series of tool calls now summarizes your own message without the knowledge and file content added to it, and that content is given back to the model afterwards. [Commit](https://github.com/open-webui/open-webui/commit/597b00a5479ac0466b2f4d23a5e902ee0950091d), [#&#8203;32491](https://github.com/open-webui/open-webui/issues/32491) - 🧩 **Built-in tools with a custom tools parameter.** A model with a custom parameter named tools, such as one that turns on a provider's native web search, now keeps its built-in tools, attached tools and file context, and its custom tools are sent alongside them. [#&#8203;32530](https://github.com/open-webui/open-webui/pull/32530) [Commit](https://github.com/open-webui/open-webui/commit/3ccea416b4e69ef688acdd879c8cb7cd31d5ab84) [#&#8203;32528](https://github.com/open-webui/open-webui/issues/32528) - 🔌 **Tool servers back after an outage.** With Redis, tools from OpenAPI tool servers now come back once the servers are reachable again, where an empty list cached while every server was down kept them missing until a restart or a save in the tool server settings. [#&#8203;32533](https://github.com/open-webui/open-webui/pull/32533) [Commit](https://github.com/open-webui/open-webui/commit/51a4d582706311502ae53a6c11876b87a49f5400) [#&#8203;29573](https://github.com/open-webui/open-webui/issues/29573) - 📥 **PDF links read as documents.** PDFs from sites that block unknown clients, such as Wikimedia, and arXiv links like arxiv.org/pdf/1706.03762 now go to document extraction, where the model got the raw PDF bytes. [#&#8203;32523](https://github.com/open-webui/open-webui/pull/32523) [Commit](https://github.com/open-webui/open-webui/commit/a5942da0a264b4e97a5d6a18adea7d4fcbfc275a) [#&#8203;32524](https://github.com/open-webui/open-webui/pull/32524) [Commit](https://github.com/open-webui/open-webui/commit/823670d9fa925255d3ebf28e55779b8be45a1c3a) ##### Changed - 🎯 **Model skills now load their full instructions.** With the Skills builtin tool on, skills attached to a model in the model editor, which every new chat pre-selects, and skills picked from the chat input menu now send their full instructions with each message, where they were only listed by name and description for the model to load with view_skill; deployments that attached skills to models only to make them available should remove them from the model to avoid the extra prompt length, since every skill the user can read is listed for the model anyway. [Commit](https://github.com/open-webui/open-webui/commit/5cf7c03332ad3fd68ddba276b94a87f8cea25c7a) - 📮 **Redis permissions for room channels.** With "WEBSOCKET_REDIS_ROOM_CHANNELS" on, the Redis user now needs the PUBLISH, SUBSCRIBE, UNSUBSCRIBE and PING permissions and access to the "\&socketio" and "\&socketio#\*" channels, while PSUBSCRIBE is no longer used; a missing permission is logged with how to fix it. [Commit](https://github.com/open-webui/open-webui/commit/362b01d0b2ba677858a5af85caf3dd8544c5e6df) ### [`v0.12.2`](https://github.com/open-webui/open-webui/releases/tag/v0.12.2) [Compare Source](https://github.com/open-webui/open-webui/compare/v0.12.1...v0.12.2) ##### Added - 📑 **MinerU 4.x servers.** The MinerU document engine now works with self-hosted MinerU 4.x servers, where every document failed with a 404 because 4.x removed the old parsing interface; 3.x servers work as before, 4.x servers take a tier (flash, basic, standard or advanced) and enable_ocr in the MinerU parameters while language and model_version stay 3.x only, and images that 4.x returns inside the document text are left out of the indexed content. [#&#8203;32422](https://github.com/open-webui/open-webui/pull/32422), [Commit](https://github.com/open-webui/open-webui/commit/81f5b8adf80e49bd2213390b59dc867074c3738e), [#&#8203;31516](https://github.com/open-webui/open-webui/issues/31516) - 🤝 **Keep both changes when comparing.** The Compare revision view now has a Keep both button that puts the original and the proposed text of the selected change into the proposed revision, original first, so you no longer have to pick one side. [Commit](https://github.com/open-webui/open-webui/commit/97b7ed73c84767611d3a26d594c36f63619d92ea) - 📚 **Open attached knowledge from its preview.** Clicking the name in the preview of an attached knowledge collection now opens that collection in the workspace, and file and link names are real links that open in a new tab. [Commit](https://github.com/open-webui/open-webui/commit/40bf4a1b99aa0aae316095eff100c07570c542da) - 🏷️ **Model ID in custom headers.** Custom headers on connections and tool servers can now use {{MODEL_ID}}, which holds the ID of the model handling the chat request, the workspace model's own ID for a workspace model and each model's own ID in a multi-model chat, so downstream services can route or log usage per model. [#&#8203;32426](https://github.com/open-webui/open-webui/pull/32426), [Commit](https://github.com/open-webui/open-webui/commit/bae22752d3995f573a373ee1ae4735b746d952a9), [#&#8203;30006](https://github.com/open-webui/open-webui/issues/30006) - 🧾 **Requested model in the audit log.** Audit log entries for chat and completion requests, including the OpenAI, Ollama and Anthropic compatible endpoints, now carry a model_id field with the model the client asked for at every AUDIT_LOG_LEVEL, where the model only appeared in the request body and went missing when MAX_BODY_LOG_SIZE cut a long prompt; other requests log it as null. [#&#8203;32429](https://github.com/open-webui/open-webui/pull/32429), [Commit](https://github.com/open-webui/open-webui/commit/fb3d92a6ef56b5a8a6820f615f6e6294c44eaad7), [#&#8203;30097](https://github.com/open-webui/open-webui/issues/30097) - 🔐 **Custom TLS certificate for Milvus.** Open WebUI can now connect to a Milvus server with a self-signed or company-issued TLS certificate by pointing the new "MILVUS_SERVER_PEM_PATH" environment variable at the certificate file, in normal and multi-tenancy mode. [#&#8203;32427](https://github.com/open-webui/open-webui/pull/32427), [Commit](https://github.com/open-webui/open-webui/commit/3bc82bb2c110fc3ed7064e6107a4731b8d9ab5ae), [#&#8203;31632](https://github.com/open-webui/open-webui/issues/31632) - 🧭 **call_tool for Tool Search.** With Tool Search on, the model now gets a new call_tool tool and runs a tool it found with search_tools through it, passing the tool's name and its arguments, instead of calling the deferred tool directly by a name that is not in the request's tool list, which strict providers rejected; approvals and other tool behavior stay the same. [Commit](https://github.com/open-webui/open-webui/commit/7b47c3b22ce983d57f4a13073748a935c4614889), [#&#8203;32243](https://github.com/open-webui/open-webui/issues/32243) - 🔄 **General improvements.** Various improvements were implemented across the application to enhance performance, stability, and security. ##### Fixed - 🔏 **Channel message metadata kept server side.** Channel messages posted or edited through the API no longer take their metadata from the request, so a user can no longer make a message appear to come from a channel webhook or a model. [#&#8203;32421](https://github.com/open-webui/open-webui/pull/32421), [Commit](https://github.com/open-webui/open-webui/commit/44953df70ed758a6321f7a2e139c93aca29129f1) - 👮 **SCIM cannot delete admins.** An identity provider can no longer delete administrator accounts, including the first admin, through a SCIM delete request, which now answers with 403 and leaves the account in place, so a sync that prunes unassigned users can no longer leave the instance without an administrator; admins are removed in the admin panel. [#&#8203;32415](https://github.com/open-webui/open-webui/pull/32415), [Commit](https://github.com/open-webui/open-webui/commit/6276e81cec38f5c5cce067e4be905c5710c2d7d6), [#&#8203;27662](https://github.com/open-webui/open-webui/issues/27662) - 🗝️ **Collection names checked as stored.** Retrieval access checks now compare collection names the way vector stores resolve them, ignoring letter case and treating hyphens and underscores alike, so a name written differently can no longer pass the check as something other than the collection that is then read. [#&#8203;32435](https://github.com/open-webui/open-webui/pull/32435), [Commit](https://github.com/open-webui/open-webui/commit/30f3c49fb02c22269b42fe3b310209926ee7e8f9) - 📱 **Voice on Android Chrome.** Voice calls and dictation on Android Chrome no longer go silent or hang on Listening after about ten uses until the page is reloaded, since the microphone level display now releases its audio output after each turn. [#&#8203;32417](https://github.com/open-webui/open-webui/pull/32417), [Commit](https://github.com/open-webui/open-webui/commit/f35b1993271e6f0cf1ffc55375d634a65c9e0ab1), [#&#8203;29969](https://github.com/open-webui/open-webui/issues/29969) - 🖥️ **Per chat terminal file actions.** With the Open Terminal chat context set to Per chat, opening HTML files, running notebooks, saving edited files, creating new files, deleting several selected files and downloading a folder or selection as a zip now use the chat's own workspace, where HTML files showed "File not found" and saved files never appeared in the chat. [#&#8203;32418](https://github.com/open-webui/open-webui/pull/32418), [Commit](https://github.com/open-webui/open-webui/commit/77fd8aea613c42e0d590804c7f9fdcf6f5f4af02), [#&#8203;29965](https://github.com/open-webui/open-webui/issues/29965) - 🧮 **Memory reindex rate limits.** Reindexing memories, from the admin Reindex Knowledge and Memory Vectors button, a user resetting their memory vectors or the automatic reindex after an embedding model change, now follows the Embedding Concurrent Requests limit and batch size, where it sent one request per memory at once and rate-limited providers failed most of them with 429 errors. [#&#8203;32420](https://github.com/open-webui/open-webui/pull/32420), [Commit](https://github.com/open-webui/open-webui/commit/8bddf9bc62c3ffcaa3e6433bc5ac0f1d04a94421), [#&#8203;32212](https://github.com/open-webui/open-webui/issues/32212) - ⏰ **Automation run results.** An automation run is now recorded as successful only after its reply finishes, and a reply that fails or is cancelled is recorded as an error that links to the chat, where runs counted as successful as soon as the reply started. [Commit](https://github.com/open-webui/open-webui/commit/de446952c2db1168dca5c6e3da6d961e6f55a8eb) - 📜 **Long polling kept out of the audit log.** With websocket support turned off, every socket.io long polling request is no longer written to the audit log as its own entry, which flooded it and could not be filtered with AUDIT_EXCLUDED_PATHS, so the audit log looks the same with either transport. [#&#8203;32425](https://github.com/open-webui/open-webui/pull/32425), [Commit](https://github.com/open-webui/open-webui/commit/209b15b9633c63ce1b7cf3c1fdc6e032d67978c6), [#&#8203;31871](https://github.com/open-webui/open-webui/issues/31871) - 📎 **Sources of approved tools.** With tool approval set to ask, a knowledge or file tool the user approved now saves and shows its sources below the reply, where they were lost after approval. [#&#8203;32439](https://github.com/open-webui/open-webui/pull/32439), [Commit](https://github.com/open-webui/open-webui/commit/5fde0485a5adda046d283416a5c4c7a543d7a5fe), [#&#8203;32436](https://github.com/open-webui/open-webui/issues/32436) - 🗂️ **Sidebar hover previews.** Moving the pointer from one sidebar folder to the next no longer leaves the first folder's preview open or keeps the next one from opening, and folder and chat previews now also open when the pointer rests on the padding around a name. [#&#8203;32438](https://github.com/open-webui/open-webui/pull/32438), [Commit](https://github.com/open-webui/open-webui/commit/5e2748a03edd2459d07fcfea168daf740092bf94), [#&#8203;32437](https://github.com/open-webui/open-webui/issues/32437) ##### Changed - 🔖 **Valkey connections tagged as Open WebUI.** Open WebUI's Valkey vector store connections now report their library name as GlidePySync(open-webui), so operators of a shared Valkey or ElastiCache can tell its traffic apart; this needs valkey-glide-sync 2.5.2 or newer, so installs that use VECTOR_DB=valkey with an older manually installed version must upgrade it, or startup fails. [#&#8203;32428](https://github.com/open-webui/open-webui/pull/32428), [Commit](https://github.com/open-webui/open-webui/commit/980225e5823808de7ace86a8ee73a0b880b37023), [#&#8203;31654](https://github.com/open-webui/open-webui/issues/31654) ### [`v0.12.1`](https://github.com/open-webui/open-webui/releases/tag/v0.12.1) [Compare Source](https://github.com/open-webui/open-webui/compare/v0.12.0...v0.12.1) ##### Added - 🧱 **External apps in channels.** Administrators can now turn on Apps in Admin Settings > General, or with "ENABLE_APPS", and connect external apps in the new Apps tab of Admin Settings by their HTTPS address, reviewing the permissions each app asks for, such as reading its mentions, reading channel messages or posting messages, and choosing who may use it; channel managers then add an app to a channel with Add Members in the channel info, where it is listed with the members and its own profile picture, and mentioning it with @&#8203; lets it answer in the channel with replies that can be shown only to the person who asked, show cards with a title, fields and a thumbnail, offer buttons or links, follow up with a later message for longer tasks or provide a Markdown file to download. Apps on a private network address can be reached over plain HTTP once their address is listed in "APP_ALLOWED_PRIVATE_ORIGINS". Open WebUI keeps a live connection to each app, Admin Settings > Apps shows whether it is connected, and a failed connection names the cause, such as a rejected API key, a wrong public key or an unreachable address. [Commit](https://github.com/open-webui/open-webui/commit/04bccecb8e3289c9336404c1ab4c6d124fabdc2f), [Commit](https://github.com/open-webui/open-webui/commit/774007d7284f6266b4df728eb661c50e165cf2b2), [Commit](https://github.com/open-webui/open-webui/commit/2ba35625b35b2bd92fa34033dedfc29d2ab1e5fb), [Commit](https://github.com/open-webui/open-webui/commit/2d4712824218faa96d9da7d7772f78f2872f25db), [Commit](https://github.com/open-webui/open-webui/commit/4ab60527e70ffb3c75c6bf9d1ce12578dcf15e96), [Commit](https://github.com/open-webui/open-webui/commit/e9635596ddef29589ab3c747da4e7563bd77ad2f), [Commit](https://github.com/open-webui/open-webui/commit/d823ebd96d2996e2d8a5cd4cf5596c5e8b8db1fd), [Commit](https://github.com/open-webui/open-webui/commit/1786d6cdb0a9db80649816eaa987da4aba5de0ed), [Commit](https://github.com/open-webui/open-webui/commit/03f5191acab77a5e3ab9ed3c09f9e2e8ba889c20), [Commit](https://github.com/open-webui/open-webui/commit/be6f0a66562920f38fcb0a876ce54970a47d169c) - 🎭 **Avatars in Standard voice calls.** A model's avatar now also appears in voice calls that use the Standard call mode, moves with the spoken reply and can play the model's gestures when the model uses native function calling, where avatars and gestures only worked in Realtime calls; the Voice avatar setting in the model editor is now shown even when Realtime is off. [Commit](https://github.com/open-webui/open-webui/commit/78613d86f7564d1927ebf5f11292419fdeadb18c) - 🪪 **Profile cards from profile pictures.** Clicking the picture of the person who wrote a message in a shared chat, of a shared chat's owner in the sidebar or of a direct message partner in the sidebar now opens their profile card. [Commit](https://github.com/open-webui/open-webui/commit/a165c8385843c4f87e3eeb5797527004765e5708) - 🗂️ **Open sidebar folders in a new tab.** Folders in the sidebar can now be opened in a new tab with a middle click or Ctrl or Cmd click, and their link can be copied from the browser's context menu. [Commit](https://github.com/open-webui/open-webui/commit/ed3caa5619b8a577d0fc2fe2b6bdae90fc47ac69), [#&#8203;29750](https://github.com/open-webui/open-webui/issues/29750) - 🔀 **Compare and merge a revision.** The skill file editor, the prompt editor and the system prompt in the model editor have a Compare revision button, and the chat input has Compare text in its + menu and a /compare command, each opening a side-by-side view where you paste a proposed revision, for example one written by a model, step through each change, copy changes in either direction and apply the result to your draft, the skill file editor also gets a Copy button for the open file, and comparing two files in the terminal file browser, with Select for Compare and Compare with Selected, now opens the same view. [Commit](https://github.com/open-webui/open-webui/commit/ab518a43218e5d1549292f7d995895cf4e8afd93), [Commit](https://github.com/open-webui/open-webui/commit/b374e0bb263d3793f024af1038e40e15a7f14867), [Commit](https://github.com/open-webui/open-webui/commit/cae8a7e19943332cae6f1f35bbe8f7b51eadf48c), [Commit](https://github.com/open-webui/open-webui/commit/ff502881e0d3e4acf58d4d756e3144fde259e042), [Commit](https://github.com/open-webui/open-webui/commit/1045d74c757bdd08151e2c18e0d44155a590495f), [Commit](https://github.com/open-webui/open-webui/commit/d51fffb4688d84310abba73301bc2f0c76c62c89), [Commit](https://github.com/open-webui/open-webui/commit/de642f1dba23d0cb5b2305704947e381c26f53c0), [Commit](https://github.com/open-webui/open-webui/commit/b0ba137551e1290062d8d1f3dba8ab7c6f884a1d) - 🔕 **Mute channels.** The menu of a channel or direct message now has a Notifications setting where Mentions only mutes it, so it no longer shows an unread count or notifies you unless someone @&#8203;mentions you. [Commit](https://github.com/open-webui/open-webui/commit/e5c80682b9dc9a38274dc81eeb35a3c41be6dfd0) - 📤 **Export a skill as a .skill file.** The skill menu has Export .skill, which downloads one skill with all its files as a single .skill archive, and .skill files can be imported like ZIP files, from disk or a link. [Commit](https://github.com/open-webui/open-webui/commit/fe0e725997a7f7be16e7463b3731f0340b5a62ab) - 📣 **Typed mentions in channels.** Writing @&#8203; name or #channel in a channel message without picking from the list now turns it into a real mention when the name matches a member, model, app or channel, and mentions pasted from another message keep pointing at the same person. [Commit](https://github.com/open-webui/open-webui/commit/f9c524d31d7737239aa990751cca4705e3872cb8), [Commit](https://github.com/open-webui/open-webui/commit/ba3e2273586850f3c69f61d70bfa7e603f32634b) - 👥 **Who wrote in a shared chat.** Chats in shared folders now show the pictures of everyone who wrote in them, up to three and a count for the rest, each opening that person's profile card. [Commit](https://github.com/open-webui/open-webui/commit/35c927ba99bea3997f57899008df2a2abd8b9354) - 🗂 **Folder previews on hover.** Hovering a folder in the sidebar shows a card with its default model, its knowledge and its chat counts, with a button to edit the folder. [Commit](https://github.com/open-webui/open-webui/commit/e5c80682b9dc9a38274dc81eeb35a3c41be6dfd0) - 🎠 **Turn and zoom the voice avatar.** In voice calls and in the model editor preview, the voice avatar can now be turned by dragging, panned with a right drag, Shift drag or two fingers, zoomed with the mouse wheel or a pinch and reset with a double click. [#&#8203;32378](https://github.com/open-webui/open-webui/pull/32378) - 🔍 **Faster one-word chat search.** Searching your chats for a single word is now about 40% faster, as each chat is checked once instead of twice. [#&#8203;32268](https://github.com/open-webui/open-webui/pull/32268), [#&#8203;32266](https://github.com/open-webui/open-webui/issues/32266) - 👯 **Message pairs for every model.** Generate Message Pair, Ctrl+Shift+Enter, now adds a placeholder reply for each selected model side by side, where only the first model got one, and the side-by-side view stays after a reload. [#&#8203;32309](https://github.com/open-webui/open-webui/pull/32309) - 🔆 **Screen on during calls.** The screen now stays on during Realtime voice calls as well as Standard ones and is allowed to turn off again once the call ends, where Realtime calls let it go dark and Standard calls kept it on after closing the call. [Commit](https://github.com/open-webui/open-webui/commit/a9227421d847eb51d7c59ec336420bbb20dfbcc8), [#&#8203;32251](https://github.com/open-webui/open-webui/issues/32251) - ☁️ **Azure OpenAI Realtime calls.** Realtime voice calls can now use Azure OpenAI: in the Voice calls section of Audio settings, administrators pick Azure OpenAI as the Provider, enter the Azure endpoint and the deployment name and sign in with an API key or with Microsoft Entra ID, and clearer errors now point to wrong credentials or a wrong URL or deployment, with the "AUDIO_REALTIME_PROVIDER" and "AUDIO_REALTIME_AUTH_TYPE" environment variables for the new settings. [Commit](https://github.com/open-webui/open-webui/commit/3ec07745036897f52bacf24351dd71f999902034), [#&#8203;32343](https://github.com/open-webui/open-webui/issues/32343) - 📊 **Input and output tokens in analytics.** The Analytics dashboard now shows model usage and user activity in one table with a Models and Users switch, and both lists show input, output and total tokens as separate columns that can each be sorted, where they showed a single Tokens column. [Commit](https://github.com/open-webui/open-webui/commit/00f12c0e47fb47b1318a20e97bacc753e769612b), [Commit](https://github.com/open-webui/open-webui/commit/21322d9cb192060b51857769c0ad9f9f14e1185d) - 🎚️ **Realtime input parameters.** Administrators can now add extra settings for the audio input of Realtime voice calls as JSON under Input Parameters in the Voice calls section of Audio settings, such as noise reduction, or with the "AUDIO_REALTIME_INPUT_PARAMS" environment variable. [Commit](https://github.com/open-webui/open-webui/commit/00f12c0e47fb47b1318a20e97bacc753e769612b) - 🔄 **General improvements.** Various improvements were implemented across the application to enhance performance, stability, and security. - 🌐 **Translation updates.** Translations for Portuguese (Brazil), Italian, Czech, Romanian, Dutch, Ukrainian, Polish, Thai, Spanish, Malay, Persian, Korean, Arabic, Japanese, Indonesian, Russian, Vietnamese, Turkish, Hindi, German, Greek, Hungarian, Hebrew, Bulgarian, Swedish, Estonian, Norwegian Bokmål, Lithuanian, Croatian, Slovak, Bosnian, Danish, Slovenian, Galician, Latvian, Tibetan, Serbian, Bengali, Cebuano, Azerbaijani, Basque, Irish, Georgian, Kabyle, Punjabi, Faroese, Tamil, Uyghur, Urdu, Filipino and Turkmen were enhanced and expanded. ##### Fixed - 🔓 **Skill editor and more over plain HTTP.** When Open WebUI is opened over plain HTTP at a network address, the skill editor, adding options to model controls, adding gestures to a voice avatar, Realtime voice calls and the Playground chat now work, where they failed with "crypto.randomUUID is not a function" and the skill editor stayed disabled. [Commit](https://github.com/open-webui/open-webui/commit/d786ed56c98e9b0fd4c8af111e1c95d4e00c7789), [Commit](https://github.com/open-webui/open-webui/commit/2eb77fc27f08924252d0abf5fe19182532075511), [#&#8203;32238](https://github.com/open-webui/open-webui/issues/32238) - 📑 **Page titles for external knowledge citations.** Citations from external knowledge bases such as Qdrant, Milvus or pgvector whose source is a web address now show the page title in the source list below the answer, matching the numbered markers in the text, where the full address was shown. [#&#8203;32232](https://github.com/open-webui/open-webui/pull/32232), [#&#8203;32231](https://github.com/open-webui/open-webui/issues/32231) - 🧭 **Redis Sentinel master names with capital letters.** With Redis Sentinel, a master name with capital letters in "REDIS_URL", such as myMaster, the default of the OT-Container-Kit redis-operator, now works, where it was lowercased and every Redis call failed with "No master found". [#&#8203;32234](https://github.com/open-webui/open-webui/pull/32234), [#&#8203;31918](https://github.com/open-webui/open-webui/issues/31918) - 🔐 **Redis Sentinels with a password.** Redis Sentinels protected with a password now work, as the credentials in "REDIS_URL" and "WEBSOCKET_REDIS_URL" are also used for the Sentinels, where every Redis call failed with "No master found"; Sentinel credentials set in "WEBSOCKET_REDIS_OPTIONS" still take precedence. [#&#8203;32241](https://github.com/open-webui/open-webui/pull/32241), [#&#8203;32240](https://github.com/open-webui/open-webui/issues/32240) - 🔗 **External knowledge citation links.** Clicking the title or Content link of a citation from an external knowledge base such as Qdrant, Milvus or pgvector now opens the cited web page, or shows the title as plain text when the source is not a web address, where it led to a not found error. [#&#8203;32233](https://github.com/open-webui/open-webui/pull/32233), [#&#8203;32231](https://github.com/open-webui/open-webui/issues/32231) - 🧰 **Tools picked in new chats.** Tools picked from the Integrations menu, the Web Search toggle and a picked skill in a new chat now stay on after switching to another chat and back or reloading, where the chat fell back to the model's default tools and broke prompt caching. [#&#8203;32235](https://github.com/open-webui/open-webui/pull/32235), [#&#8203;32084](https://github.com/open-webui/open-webui/issues/32084) - 📅 **Recurring automations run once.** Automations set with the Daily, Weekly or Monthly picker now run at the exact minute chosen in your own timezone, where they could run twice for one occurrence, and users behind the server's timezone could have their first run moved to the next day. [#&#8203;32264](https://github.com/open-webui/open-webui/pull/32264), [#&#8203;32263](https://github.com/open-webui/open-webui/issues/32263) - 📵 **No voice calls in shared chats.** The Voice mode button no longer shows in a shared chat you can reply in, and a call that was open closes when you switch to one. [Commit](https://github.com/open-webui/open-webui/commit/3a54306c50f351e5d6e89e296cb32518535712ee) - 🙆 **VRM 0.x avatar rest pose.** Voice avatars made in the older VRM 0.x format now rest with their arms down and breathe and sway the right way, where their arms were raised and their idle motion was mirrored. [#&#8203;32270](https://github.com/open-webui/open-webui/pull/32270), [#&#8203;32269](https://github.com/open-webui/open-webui/issues/32269) - 🕶️ **Follow-ups in temporary chats.** Follow-up suggestions in temporary chats are now based on the reply just written, where they were generated without it. [Commit](https://github.com/open-webui/open-webui/commit/53a8f131f305a3beb87376d5dbc05889883fb950) - 🔁 **No reconnect loop after sign-in.** A tab where you signed in without reloading the page now reconnects signed in after a connection drop, such as sleep, a network change or a server restart, where since 0.12.0 it reconnected several times per second until the page was reloaded and put heavy load on the server. [#&#8203;32341](https://github.com/open-webui/open-webui/pull/32341), [#&#8203;32338](https://github.com/open-webui/open-webui/issues/32338) - 📎 **Note uploads no longer stuck.** A file uploaded to a note while another file or edit was saved now finishes and stays attached after a reload, where it kept spinning and was saved without its file. [#&#8203;32328](https://github.com/open-webui/open-webui/pull/32328), [#&#8203;32327](https://github.com/open-webui/open-webui/issues/32327) - 🪟 **Side-by-side replies after Regenerate.** Adding a second model and pressing Regenerate now keeps both replies side by side after a reload, where the second reply showed as another version of the first. [#&#8203;32326](https://github.com/open-webui/open-webui/pull/32326), [#&#8203;32325](https://github.com/open-webui/open-webui/issues/32325) - 👎 **Rating reason and comment kept.** The reason and comment saved in the rating form are no longer wiped a few seconds later when the generated tags arrive, both on the reply and in Admin Panel > Evaluations > Feedback. [#&#8203;32334](https://github.com/open-webui/open-webui/pull/32334), [#&#8203;32333](https://github.com/open-webui/open-webui/issues/32333) - 🐙 **GitHub skill imports with symlinks.** Importing a skill from a GitHub link now works when the repository has symlinks outside the skill folder, such as a CLAUDE.md link at the root, where it failed with "Archives cannot contain links or special files". [#&#8203;32313](https://github.com/open-webui/open-webui/pull/32313), [#&#8203;32312](https://github.com/open-webui/open-webui/issues/32312) - 🗒️ **Production versions with notes.** Setting an older model version as production now works when the model has a note attached as knowledge, where it failed with "Referenced knowledge is unavailable". [#&#8203;32317](https://github.com/open-webui/open-webui/pull/32317), [#&#8203;32316](https://github.com/open-webui/open-webui/issues/32316) - 📂 **Open knowledge file stays open.** Deleting a folder in a knowledge base no longer closes the file open in the viewer unless the delete removed that file. [#&#8203;32319](https://github.com/open-webui/open-webui/pull/32319), [#&#8203;32318](https://github.com/open-webui/open-webui/issues/32318) - 💾 **Save hidden on others' messages.** In a chat shared with Allow replies, editing a message someone else wrote no longer shows a Save button that silently reverted the text; Send and Save As Copy stay. [#&#8203;32321](https://github.com/open-webui/open-webui/pull/32321), [#&#8203;32320](https://github.com/open-webui/open-webui/issues/32320) - 👁️ **Re-enabled models stay on.** In Admin Settings > Models, turning a model back on or showing it again now stays after a reload and the model appears in the chat model picker, where for a model never edited before the second change looked saved but was lost. [#&#8203;32354](https://github.com/open-webui/open-webui/pull/32354), [#&#8203;32353](https://github.com/open-webui/open-webui/issues/32353), [#&#8203;32368](https://github.com/open-webui/open-webui/pull/32368), [#&#8203;32365](https://github.com/open-webui/open-webui/issues/32365) - 💲 **Dollar signs in Ask and Explain.** Ask and Explain on selected text now keep dollar signs such as "$5" or "$&" in the selected text and in your question, where they were dropped or replaced with other text. [#&#8203;32356](https://github.com/open-webui/open-webui/pull/32356), [#&#8203;32355](https://github.com/open-webui/open-webui/issues/32355) - ▶️ **Code blocks show their last value.** Running a code block in the browser whose last line returns a number, list or other value, such as square(7), now shows that value, where it stayed on Running for a minute and ended with "Execution Time Limit Exceeded". [#&#8203;32360](https://github.com/open-webui/open-webui/pull/32360), [#&#8203;32359](https://github.com/open-webui/open-webui/issues/32359) - 🔔 **Reminders for moved calendar events.** A calendar event moved to a new time after its reminder went out now reminds you again before the new start, where it never reminded again. [#&#8203;32358](https://github.com/open-webui/open-webui/pull/32358), [#&#8203;32357](https://github.com/open-webui/open-webui/issues/32357) - 🌩️ **MCP OAuth behind Cloudflare.** Connecting an OAuth MCP tool server such as Canva now works when the provider's sign-in page is behind Cloudflare bot protection, where it failed with "OAuth client registration is still invalid after re-registration". [#&#8203;32364](https://github.com/open-webui/open-webui/pull/32364), [#&#8203;32363](https://github.com/open-webui/open-webui/issues/32363) - 🗃️ **File list for pipes and tools without attachments.** Pipes and tools now get an empty file list on messages without attachments, where they got None and plugins that loop over the files failed. [#&#8203;32380](https://github.com/open-webui/open-webui/pull/32380), [#&#8203;32379](https://github.com/open-webui/open-webui/issues/32379) - 🈯 **Model editor language switching.** Switching the Editing language in the model editor from one translated language to another now shows that language's name and description, where the fields kept the text of the language shown before. [#&#8203;32224](https://github.com/open-webui/open-webui/pull/32224), [#&#8203;32223](https://github.com/open-webui/open-webui/issues/32223) - 🗣️ **Kokoro voice in calls.** Voice calls now speak replies with the Kokoro.js (Browser) voice chosen in your settings when the administrator has no server speech engine set, where the browser's own voice was used instead. [Commit](https://github.com/open-webui/open-webui/commit/78613d86f7564d1927ebf5f11292419fdeadb18c) - 🧩 **Rich UI embed console errors.** Rich UI tool embeds no longer log a security error in the browser console on every load when iframe Sandbox Allow Same Origin is off or the embed comes from another site; the embed works as before. [#&#8203;32226](https://github.com/open-webui/open-webui/pull/32226), [#&#8203;32222](https://github.com/open-webui/open-webui/issues/32222) - 🔎 **Clearer Top K descriptions.** The Top K and Top K Reranker descriptions in Admin Settings > Documents now say that Top K Reranker is the number of chunks the reranker passes to the model and that with hybrid search Top K is the number of candidates sent to the reranker, where the old text led admins to give the model far fewer chunks than intended. [#&#8203;32225](https://github.com/open-webui/open-webui/pull/32225), [#&#8203;32221](https://github.com/open-webui/open-webui/issues/32221) - 🔌 **MCP connection errors in the logs.** When an MCP server fails to connect during a chat, the reason, such as a refused connection or a 401 from the server, is now logged as an error, where it was only logged at debug level and never reached the logs of a default install. [#&#8203;32229](https://github.com/open-webui/open-webui/pull/32229), [#&#8203;32213](https://github.com/open-webui/open-webui/issues/32213) - 🗑️ **Deleting one language's custom translation.** In Admin Settings > General > Translations, Delete now removes only the translation for the language shown and keeps the row while other languages still have text, where it removed the row with its translations for every language. [Commit](https://github.com/open-webui/open-webui/commit/1283b2701ecb0037cc2c374e34e69976c302a25c) - 💬 **Translated model prompt suggestions.** Editing the prompt suggestions of a model that uses the default suggestions in another language now starts from the administrator's default suggestions for that language, where the list was empty. [Commit](https://github.com/open-webui/open-webui/commit/1283b2701ecb0037cc2c374e34e69976c302a25c) - 🏷️ **Titles for voice call chats.** Chats started with a Realtime voice call now get a generated title and tags as soon as the chat is created, following the Automatic title and tag settings, where they stayed named "New Chat". [Commit](https://github.com/open-webui/open-webui/commit/8ea808850deabb4709391602417b0aa00f2857cf), [#&#8203;32258](https://github.com/open-webui/open-webui/issues/32258) - 🪝 **Webhooks for group and direct messages.** Members of group channels and direct messages now get their channel message webhook notifications, where only regular channels sent them, and muting such a channel stops them except for messages that mention the member. [#&#8203;32404](https://github.com/open-webui/open-webui/pull/32404), [Commit](https://github.com/open-webui/open-webui/commit/3b2b89205e4fff7e4546ca4034e0293e2d1bd3f3), [#&#8203;32403](https://github.com/open-webui/open-webui/issues/32403) - 📄 **Files from saved temporary chats.** After a temporary chat is saved, the model no longer tries to open a file attached in it and gets "File not found", since such a file was never stored and its text is already in the prompt. [Commit](https://github.com/open-webui/open-webui/commit/97a66ef73e84f9ebb4aa4324b8eac9aadeaca22e), [#&#8203;32351](https://github.com/open-webui/open-webui/issues/32351) - 🔑 **SSO sign in for SCIM users.** Users created through SCIM can sign in with SSO again, where they got "401 Invalid authentication request" since 0.12.0 because no sign-in record was created for them; a database migration adds the missing record for existing accounts without giving them a usable password, SCIM email changes now also update the sign-in email and deleting a user through SCIM removes the sign-in record as well. [Commit](https://github.com/open-webui/open-webui/commit/00f12c0e47fb47b1318a20e97bacc753e769612b), [#&#8203;32347](https://github.com/open-webui/open-webui/issues/32347) - ✂️ **Deleting a message mid-chat.** Deleting a message in the middle of a chat no longer makes the model forget every earlier message while the chat still shows them. [#&#8203;32332](https://github.com/open-webui/open-webui/pull/32332), [Commit](https://github.com/open-webui/open-webui/commit/29289f5ba67d39255837a6385e5394192733a12e), [#&#8203;32331](https://github.com/open-webui/open-webui/issues/32331) - 🪧 **Ask and Explain popup cut off.** The Ask and Explain popup is no longer cut off when you select text near the end of a reply and stays next to the selection while you scroll. [#&#8203;32330](https://github.com/open-webui/open-webui/pull/32330), [Commit](https://github.com/open-webui/open-webui/commit/7129cc1d843b35516428c61af413b3815aee2e3b), [#&#8203;32329](https://github.com/open-webui/open-webui/issues/32329) - 🌬️ **Background noise in Realtime calls.** Wind or background noise no longer cuts off the model mid-sentence in Realtime voice calls, since its spoken reply now only pauses until speech is confirmed and resumes after noise, and noise that is not understood as speech is also removed from the voice model's conversation so it no longer confuses later answers. [Commit](https://github.com/open-webui/open-webui/commit/a70e96525d88f9cb362b6451e5451c9b72618a92), [#&#8203;32248](https://github.com/open-webui/open-webui/issues/32248), [#&#8203;32250](https://github.com/open-webui/open-webui/issues/32250) - 🧠 **Memory in automations.** Automations now get the memory tools when the user has memory turned on, following the user's setting, the default interface settings or the memory setting for everyone, where they were left out. [Commit](https://github.com/open-webui/open-webui/commit/a70e96525d88f9cb362b6451e5451c9b72618a92), [#&#8203;32337](https://github.com/open-webui/open-webui/issues/32337) - 🗜️ **Compaction during long tool runs.** Context compaction now also runs during a long series of tool calls based on the token usage the provider reports, and the compacted summary is kept with the reply so the next message continues from it, where long tool runs could hit the model's context limit. [Commit](https://github.com/open-webui/open-webui/commit/bcf540a98935566537b05911a6bb4ace03c5648d), [#&#8203;32306](https://github.com/open-webui/open-webui/issues/32306) ##### 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. - 💡 **Follow-ups as next messages.** The default follow-up prompt now suggests the messages you would most likely send next, in your own tone and latest language, as requests or questions, without repeating finished work, with the strongest suggestion first, and reads only the chat's first message and the last four, each cut to 1,000 characters, so long chats stay quick, where it asked for questions only over the last six messages; instances with a custom follow-up prompt are not affected. [Commit](https://github.com/open-webui/open-webui/commit/7ae09967459151433be79c2e98f096c171fc5b18), [Commit](https://github.com/open-webui/open-webui/commit/53a8f131f305a3beb87376d5dbc05889883fb950) - 📖 **Large skills load as a preview.** With the Skills builtin tools on, a skill whose SKILL.md is longer than 20,000 characters now reaches the model as a 5,000 character opening preview, and the model reads on from where the preview ends with read_skill_file, which now returns up to 20,000 characters per call instead of 100,000, and the new grep_skill_files tool lets the model search a skill's files for a word or pattern, keeping long skills from filling the context. [Commit](https://github.com/open-webui/open-webui/commit/200b9514917a070c88d112e3c0aba9df3322c5e1), [Commit](https://github.com/open-webui/open-webui/commit/d34f73066d837428ab198e14f285c09ad1ce2450), [Commit](https://github.com/open-webui/open-webui/commit/c314239558cdb47e4d1eaddf011bb4178e0742c2) ### [`v0.12.0`](https://github.com/open-webui/open-webui/releases/tag/v0.12.0) [Compare Source](https://github.com/open-webui/open-webui/compare/v0.11.4...v0.12.0) ##### 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), [#&#8203;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), [#&#8203;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), [#&#8203;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. [#&#8203;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), [#&#8203;31389](https://github.com/open-webui/open-webui/issues/31389), [#&#8203;32048](https://github.com/open-webui/open-webui/issues/32048), [#&#8203;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. [#&#8203;28818](https://github.com/open-webui/open-webui/pull/28818), [#&#8203;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. [#&#8203;30382](https://github.com/open-webui/open-webui/pull/30382), [#&#8203;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. [#&#8203;30390](https://github.com/open-webui/open-webui/pull/30390), [#&#8203;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. [#&#8203;30975](https://github.com/open-webui/open-webui/pull/30975), [#&#8203;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. [#&#8203;31308](https://github.com/open-webui/open-webui/pull/31308), [#&#8203;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. [#&#8203;31645](https://github.com/open-webui/open-webui/pull/31645), [#&#8203;31660](https://github.com/open-webui/open-webui/pull/31660), [#&#8203;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), [#&#8203;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. [#&#8203;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), [#&#8203;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), [#&#8203;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), [#&#8203;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. [#&#8203;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), [#&#8203;32026](https://github.com/open-webui/open-webui/issues/32026), [#&#8203;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 @&#8203;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), [#&#8203;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. [#&#8203;30357](https://github.com/open-webui/open-webui/pull/30357), [#&#8203;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. [#&#8203;31306](https://github.com/open-webui/open-webui/pull/31306), [#&#8203;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. [#&#8203;31416](https://github.com/open-webui/open-webui/pull/31416), [#&#8203;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. [#&#8203;31575](https://github.com/open-webui/open-webui/pull/31575), [#&#8203;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. [#&#8203;31578](https://github.com/open-webui/open-webui/pull/31578), [#&#8203;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. [#&#8203;31573](https://github.com/open-webui/open-webui/pull/31573), [#&#8203;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. [#&#8203;31622](https://github.com/open-webui/open-webui/pull/31622), [#&#8203;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. [#&#8203;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. [#&#8203;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. [#&#8203;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. [#&#8203;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. [#&#8203;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. [#&#8203;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. [#&#8203;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. [#&#8203;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. [#&#8203;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. [#&#8203;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. [#&#8203;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. [#&#8203;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. [#&#8203;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. [#&#8203;31826](https://github.com/open-webui/open-webui/pull/31826), [#&#8203;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), [#&#8203;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), [#&#8203;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. [#&#8203;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), [#&#8203;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. [#&#8203;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. [#&#8203;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. [#&#8203;30426](https://github.com/open-webui/open-webui/pull/30426), [#&#8203;30450](https://github.com/open-webui/open-webui/pull/30450), [#&#8203;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. [#&#8203;31316](https://github.com/open-webui/open-webui/pull/31316), [#&#8203;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. [#&#8203;30424](https://github.com/open-webui/open-webui/pull/30424), [#&#8203;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. [#&#8203;30379](https://github.com/open-webui/open-webui/pull/30379), [#&#8203;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. [#&#8203;31583](https://github.com/open-webui/open-webui/pull/31583), [#&#8203;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. [#&#8203;31483](https://github.com/open-webui/open-webui/pull/31483), [#&#8203;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), [#&#8203;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. [#&#8203;31424](https://github.com/open-webui/open-webui/pull/31424), [#&#8203;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. [#&#8203;31576](https://github.com/open-webui/open-webui/pull/31576), [#&#8203;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. [#&#8203;31557](https://github.com/open-webui/open-webui/pull/31557), [#&#8203;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. [#&#8203;31315](https://github.com/open-webui/open-webui/pull/31315), [#&#8203;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. [#&#8203;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. [#&#8203;31501](https://github.com/open-webui/open-webui/pull/31501), [#&#8203;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. [#&#8203;31429](https://github.com/open-webui/open-webui/pull/31429), [#&#8203;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. [#&#8203;30966](https://github.com/open-webui/open-webui/pull/30966), [#&#8203;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. [#&#8203;31342](https://github.com/open-webui/open-webui/pull/31342), [#&#8203;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. [#&#8203;30354](https://github.com/open-webui/open-webui/pull/30354), [#&#8203;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. [#&#8203;30375](https://github.com/open-webui/open-webui/pull/30375), [#&#8203;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. [#&#8203;31431](https://github.com/open-webui/open-webui/pull/31431), [#&#8203;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), [#&#8203;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. [#&#8203;31439](https://github.com/open-webui/open-webui/pull/31439), [#&#8203;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.". [#&#8203;31438](https://github.com/open-webui/open-webui/pull/31438), [#&#8203;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. [#&#8203;31436](https://github.com/open-webui/open-webui/pull/31436), [#&#8203;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), [#&#8203;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. [#&#8203;31437](https://github.com/open-webui/open-webui/pull/31437), [#&#8203;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), [#&#8203;29868](https://github.com/open-webui/open-webui/issues/29868), [#&#8203;31489](https://github.com/open-webui/open-webui/pull/31489), [#&#8203;31487](https://github.com/open-webui/open-webui/issues/31487), [#&#8203;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. [#&#8203;30358](https://github.com/open-webui/open-webui/pull/30358), [#&#8203;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. [#&#8203;30384](https://github.com/open-webui/open-webui/pull/30384), [#&#8203;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. [#&#8203;30419](https://github.com/open-webui/open-webui/pull/30419), [#&#8203;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. [#&#8203;31641](https://github.com/open-webui/open-webui/pull/31641), [#&#8203;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. [#&#8203;31572](https://github.com/open-webui/open-webui/pull/31572), [#&#8203;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. [#&#8203;30372](https://github.com/open-webui/open-webui/pull/30372), [#&#8203;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". [#&#8203;30373](https://github.com/open-webui/open-webui/pull/30373), [#&#8203;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. [#&#8203;30417](https://github.com/open-webui/open-webui/pull/30417), [#&#8203;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. [#&#8203;30421](https://github.com/open-webui/open-webui/pull/30421), [#&#8203;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. [#&#8203;30376](https://github.com/open-webui/open-webui/pull/30376), [#&#8203;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. [#&#8203;31380](https://github.com/open-webui/open-webui/pull/31380), [#&#8203;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. [#&#8203;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. [#&#8203;30383](https://github.com/open-webui/open-webui/pull/30383), [#&#8203;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. [#&#8203;31362](https://github.com/open-webui/open-webui/pull/31362), [#&#8203;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. [#&#8203;30447](https://github.com/open-webui/open-webui/pull/30447), [#&#8203;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), [#&#8203;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. [#&#8203;31364](https://github.com/open-webui/open-webui/pull/31364), [#&#8203;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. [#&#8203;30962](https://github.com/open-webui/open-webui/pull/30962), [#&#8203;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. [#&#8203;30435](https://github.com/open-webui/open-webui/pull/30435), [#&#8203;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. [#&#8203;30953](https://github.com/open-webui/open-webui/pull/30953), [#&#8203;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), [#&#8203;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. [#&#8203;31384](https://github.com/open-webui/open-webui/pull/31384), [#&#8203;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. [#&#8203;30958](https://github.com/open-webui/open-webui/pull/30958), [#&#8203;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. [#&#8203;31319](https://github.com/open-webui/open-webui/pull/31319), [#&#8203;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. [#&#8203;30374](https://github.com/open-webui/open-webui/pull/30374), [#&#8203;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. [#&#8203;30754](https://github.com/open-webui/open-webui/pull/30754), [#&#8203;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. [#&#8203;31355](https://github.com/open-webui/open-webui/pull/31355), [#&#8203;31348](https://github.com/open-webui/open-webui/issues/31348), [Commit](https://github.com/open-webui/open-webui/commit/82b51813721d171f0e347c9348be1042f9b010e8), [#&#8203;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. [#&#8203;30453](https://github.com/open-webui/open-webui/pull/30453), [#&#8203;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. [#&#8203;31037](https://github.com/open-webui/open-webui/pull/31037), [#&#8203;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. [#&#8203;31420](https://github.com/open-webui/open-webui/pull/31420), [#&#8203;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. [#&#8203;31488](https://github.com/open-webui/open-webui/pull/31488), [Commit](https://github.com/open-webui/open-webui/commit/fdae17f8a6fc163f925b73286622eae32f029308), [#&#8203;31486](https://github.com/open-webui/open-webui/issues/31486), [#&#8203;31496](https://github.com/open-webui/open-webui/pull/31496), [#&#8203;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. [#&#8203;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. [#&#8203;31506](https://github.com/open-webui/open-webui/pull/31506), [#&#8203;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. [#&#8203;31500](https://github.com/open-webui/open-webui/pull/31500), [#&#8203;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". [#&#8203;30368](https://github.com/open-webui/open-webui/pull/30368), [#&#8203;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. [#&#8203;31461](https://github.com/open-webui/open-webui/pull/31461), [#&#8203;31460](https://github.com/open-webui/open-webui/pull/31460), [#&#8203;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. [#&#8203;30359](https://github.com/open-webui/open-webui/pull/30359), [#&#8203;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. [#&#8203;30448](https://github.com/open-webui/open-webui/pull/30448), [#&#8203;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. [#&#8203;31307](https://github.com/open-webui/open-webui/pull/31307), [#&#8203;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. [#&#8203;31356](https://github.com/open-webui/open-webui/pull/31356), [#&#8203;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. [#&#8203;31450](https://github.com/open-webui/open-webui/pull/31450), [#&#8203;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. [#&#8203;30381](https://github.com/open-webui/open-webui/pull/30381), [#&#8203;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. [#&#8203;30420](https://github.com/open-webui/open-webui/pull/30420), [#&#8203;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. [#&#8203;31351](https://github.com/open-webui/open-webui/pull/31351), [#&#8203;31354](https://github.com/open-webui/open-webui/pull/31354), [#&#8203;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. [#&#8203;30434](https://github.com/open-webui/open-webui/pull/30434), [#&#8203;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. [#&#8203;30385](https://github.com/open-webui/open-webui/pull/30385), [#&#8203;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". [#&#8203;30418](https://github.com/open-webui/open-webui/pull/30418), [#&#8203;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. [#&#8203;30456](https://github.com/open-webui/open-webui/pull/30456), [#&#8203;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. [#&#8203;30604](https://github.com/open-webui/open-webui/pull/30604), [#&#8203;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. [#&#8203;31374](https://github.com/open-webui/open-webui/pull/31374), [#&#8203;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. [#&#8203;30433](https://github.com/open-webui/open-webui/pull/30433), [#&#8203;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. [#&#8203;31309](https://github.com/open-webui/open-webui/pull/31309), [#&#8203;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. [#&#8203;31303](https://github.com/open-webui/open-webui/pull/31303), [#&#8203;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. [#&#8203;31606](https://github.com/open-webui/open-webui/pull/31606), [#&#8203;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. [#&#8203;30956](https://github.com/open-webui/open-webui/pull/30956), [#&#8203;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), [#&#8203;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. [#&#8203;31349](https://github.com/open-webui/open-webui/pull/31349), [#&#8203;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. [#&#8203;31423](https://github.com/open-webui/open-webui/pull/31423), [#&#8203;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. [#&#8203;31343](https://github.com/open-webui/open-webui/pull/31343), [#&#8203;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. [#&#8203;31405](https://github.com/open-webui/open-webui/pull/31405), [#&#8203;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. [#&#8203;30429](https://github.com/open-webui/open-webui/pull/30429), [#&#8203;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. [#&#8203;30978](https://github.com/open-webui/open-webui/pull/30978), [#&#8203;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. [#&#8203;30356](https://github.com/open-webui/open-webui/pull/30356), [#&#8203;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), [#&#8203;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. [#&#8203;31629](https://github.com/open-webui/open-webui/pull/31629), [#&#8203;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. [#&#8203;31584](https://github.com/open-webui/open-webui/pull/31584), [#&#8203;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. [#&#8203;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. [#&#8203;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. [#&#8203;31543](https://github.com/open-webui/open-webui/pull/31543), [#&#8203;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. [#&#8203;31551](https://github.com/open-webui/open-webui/pull/31551), [#&#8203;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. [#&#8203;31539](https://github.com/open-webui/open-webui/pull/31539), [#&#8203;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. [#&#8203;31531](https://github.com/open-webui/open-webui/pull/31531), [#&#8203;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. [#&#8203;31368](https://github.com/open-webui/open-webui/pull/31368), [#&#8203;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. [#&#8203;31532](https://github.com/open-webui/open-webui/pull/31532), [#&#8203;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. [#&#8203;31592](https://github.com/open-webui/open-webui/pull/31592), [#&#8203;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. [#&#8203;31528](https://github.com/open-webui/open-webui/pull/31528), [#&#8203;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. [#&#8203;31366](https://github.com/open-webui/open-webui/pull/31366), [#&#8203;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. [#&#8203;31613](https://github.com/open-webui/open-webui/pull/31613), [#&#8203;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. [#&#8203;31604](https://github.com/open-webui/open-webui/pull/31604), [#&#8203;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. [#&#8203;31513](https://github.com/open-webui/open-webui/pull/31513), [#&#8203;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. [#&#8203;31529](https://github.com/open-webui/open-webui/pull/31529), [#&#8203;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. [#&#8203;31395](https://github.com/open-webui/open-webui/pull/31395), [#&#8203;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. [#&#8203;31393](https://github.com/open-webui/open-webui/pull/31393), [#&#8203;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. [#&#8203;31391](https://github.com/open-webui/open-webui/pull/31391), [#&#8203;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. [#&#8203;31390](https://github.com/open-webui/open-webui/pull/31390), [#&#8203;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. [#&#8203;31370](https://github.com/open-webui/open-webui/pull/31370), [#&#8203;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. [#&#8203;31376](https://github.com/open-webui/open-webui/pull/31376), [#&#8203;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. [#&#8203;31378](https://github.com/open-webui/open-webui/pull/31378), [#&#8203;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. [#&#8203;31382](https://github.com/open-webui/open-webui/pull/31382), [#&#8203;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. [#&#8203;30968](https://github.com/open-webui/open-webui/pull/30968), [#&#8203;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. [#&#8203;30971](https://github.com/open-webui/open-webui/pull/30971), [#&#8203;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. [#&#8203;30976](https://github.com/open-webui/open-webui/pull/30976), [#&#8203;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 "@&#8203; Alex", where they showed the raw mention markup with the internal id. [#&#8203;31601](https://github.com/open-webui/open-webui/pull/31601), [#&#8203;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. [#&#8203;31004](https://github.com/open-webui/open-webui/pull/31004), [#&#8203;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. [#&#8203;31653](https://github.com/open-webui/open-webui/pull/31653), [#&#8203;31652](https://github.com/open-webui/open-webui/pull/31652), [#&#8203;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. [#&#8203;31649](https://github.com/open-webui/open-webui/pull/31649), [#&#8203;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. [#&#8203;31650](https://github.com/open-webui/open-webui/pull/31650), [#&#8203;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. [#&#8203;31644](https://github.com/open-webui/open-webui/pull/31644), [#&#8203;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. [#&#8203;31657](https://github.com/open-webui/open-webui/pull/31657), [#&#8203;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. [#&#8203;31655](https://github.com/open-webui/open-webui/pull/31655), [#&#8203;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. [#&#8203;31574](https://github.com/open-webui/open-webui/pull/31574), [#&#8203;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. [#&#8203;31593](https://github.com/open-webui/open-webui/pull/31593), [#&#8203;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. [#&#8203;31530](https://github.com/open-webui/open-webui/pull/31530), [#&#8203;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. [#&#8203;31112](https://github.com/open-webui/open-webui/pull/31112), [#&#8203;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. [#&#8203;31113](https://github.com/open-webui/open-webui/pull/31113), [#&#8203;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". [#&#8203;31353](https://github.com/open-webui/open-webui/pull/31353), [#&#8203;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. [#&#8203;31336](https://github.com/open-webui/open-webui/pull/31336), [#&#8203;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. [#&#8203;31337](https://github.com/open-webui/open-webui/pull/31337), [#&#8203;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. [#&#8203;31300](https://github.com/open-webui/open-webui/pull/31300), [#&#8203;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), [#&#8203;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), [#&#8203;31326](https://github.com/open-webui/open-webui/issues/31326), [#&#8203;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. [#&#8203;31534](https://github.com/open-webui/open-webui/pull/31534), [#&#8203;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. [#&#8203;31386](https://github.com/open-webui/open-webui/pull/31386), [#&#8203;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. [#&#8203;31822](https://github.com/open-webui/open-webui/pull/31822), [#&#8203;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. [#&#8203;31829](https://github.com/open-webui/open-webui/pull/31829), [#&#8203;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. [#&#8203;31824](https://github.com/open-webui/open-webui/pull/31824), [#&#8203;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. [#&#8203;31838](https://github.com/open-webui/open-webui/pull/31838), [#&#8203;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. [#&#8203;31851](https://github.com/open-webui/open-webui/pull/31851), [#&#8203;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. [#&#8203;31843](https://github.com/open-webui/open-webui/pull/31843), [#&#8203;31842](https://github.com/open-webui/open-webui/issues/31842), [#&#8203;31841](https://github.com/open-webui/open-webui/pull/31841), [#&#8203;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. [#&#8203;31893](https://github.com/open-webui/open-webui/pull/31893), [#&#8203;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. [#&#8203;31894](https://github.com/open-webui/open-webui/pull/31894), [#&#8203;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. [#&#8203;31895](https://github.com/open-webui/open-webui/pull/31895), [#&#8203;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. [#&#8203;31892](https://github.com/open-webui/open-webui/pull/31892), [#&#8203;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. [#&#8203;31915](https://github.com/open-webui/open-webui/pull/31915), [#&#8203;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. [#&#8203;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. [#&#8203;31859](https://github.com/open-webui/open-webui/pull/31859), [#&#8203;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. [#&#8203;31858](https://github.com/open-webui/open-webui/pull/31858), [#&#8203;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. [#&#8203;31862](https://github.com/open-webui/open-webui/pull/31862), [#&#8203;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. [#&#8203;31864](https://github.com/open-webui/open-webui/pull/31864), [#&#8203;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. [#&#8203;31844](https://github.com/open-webui/open-webui/pull/31844), [#&#8203;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. [#&#8203;31891](https://github.com/open-webui/open-webui/pull/31891), [#&#8203;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. [#&#8203;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. [#&#8203;31890](https://github.com/open-webui/open-webui/pull/31890), [#&#8203;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. [#&#8203;31888](https://github.com/open-webui/open-webui/pull/31888), [#&#8203;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. [#&#8203;31868](https://github.com/open-webui/open-webui/pull/31868), [#&#8203;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), [#&#8203;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), [#&#8203;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. [#&#8203;31820](https://github.com/open-webui/open-webui/pull/31820), [#&#8203;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. [#&#8203;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. [#&#8203;31877](https://github.com/open-webui/open-webui/pull/31877), [#&#8203;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. [#&#8203;31881](https://github.com/open-webui/open-webui/pull/31881), [#&#8203;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. [#&#8203;31878](https://github.com/open-webui/open-webui/pull/31878), [#&#8203;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. [#&#8203;31887](https://github.com/open-webui/open-webui/pull/31887), [#&#8203;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. [#&#8203;31857](https://github.com/open-webui/open-webui/pull/31857), [#&#8203;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. [#&#8203;31875](https://github.com/open-webui/open-webui/pull/31875), [#&#8203;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. [#&#8203;32029](https://github.com/open-webui/open-webui/pull/32029), [#&#8203;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. [#&#8203;31990](https://github.com/open-webui/open-webui/pull/31990), [#&#8203;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. [#&#8203;31982](https://github.com/open-webui/open-webui/pull/31982), [#&#8203;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), [#&#8203;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. [#&#8203;31975](https://github.com/open-webui/open-webui/pull/31975), [#&#8203;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), [#&#8203;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. [#&#8203;31961](https://github.com/open-webui/open-webui/pull/31961), [#&#8203;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. [#&#8203;31973](https://github.com/open-webui/open-webui/pull/31973), [#&#8203;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. [#&#8203;31976](https://github.com/open-webui/open-webui/pull/31976), [#&#8203;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), [#&#8203;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), [#&#8203;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. [#&#8203;32054](https://github.com/open-webui/open-webui/pull/32054), [#&#8203;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. [#&#8203;32061](https://github.com/open-webui/open-webui/pull/32061), [#&#8203;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), [#&#8203;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), [#&#8203;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), [#&#8203;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), [#&#8203;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. [#&#8203;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. [#&#8203;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), [#&#8203;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 "<think>" 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), [#&#8203;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), [#&#8203;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. [#&#8203;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), [#&#8203;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. [#&#8203;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. [#&#8203;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. [#&#8203;32146](https://github.com/open-webui/open-webui/pull/32146), [#&#8203;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. [#&#8203;32151](https://github.com/open-webui/open-webui/pull/32151), [#&#8203;32150](https://github.com/open-webui/open-webui/issues/32150) Release notes shortened. [Read the full changelog](https://github.com/open-webui/open-webui/blob/f8ae8a6c328946dc62cd0712961a0632574581bf/CHANGELOG.md). </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xODEuNiIsInVwZGF0ZWRJblZlciI6IjQ0LjE4MS42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
renovate Bot added 1 commit 2026-10-25 16:18:45 -07:00
nick added 1 commit 2026-10-25 16:19:19 -07:00
nick merged commit 8efaa3a0c2 into main 2026-10-25 16:19:44 -07:00
nick deleted branch renovate/ghcr.io-open-webui-open-webui-0.x 2026-10-25 16:19:44 -07:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: AtlasHorizon/compose#8