Catalog / Open WebUI

0.12.1

todaysecurityaddedfixedOriginal notes

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