All articles

November 4, 2026 / 22 MINUTES READ

Open WebUI v0.12.4 and v0.12.5: screen readers, shared notes, and session analytics

Open WebUI v0.12.4 and v0.12.5: screen readers, shared notes, and session analytics
SUMMARY

Open WebUI v0.12.4 and v0.12.5 landed four days apart, so this post covers both. A screen reader can now follow a chat from start to finish, as part of more than 70 accessibility fixes. Notes get pages, live presence, and clear rules for how a model edits them. A new Sessions view shows administrators where their tokens go, and token counts match what providers report. Skills can load on demand for small models, translations are filled in across 50 languages, and both releases include security fixes worth updating for as soon as you can.

Press Enter in Open WebUI now, and a screen reader says "Generating...". When the reply ends, it says "Response complete". Every reply starts with a heading you can jump to. We made these changes because people who use screen readers every day asked for them, and they're the biggest thread running through our last two releases.

We shipped v0.12.4 on October 25 and v0.12.5 on October 29, so we're covering them together. We also gave notes pages and live presence, set clear rules for how a model edits them, and added a Sessions view that shows administrators where their tokens go.

The short version #

  • A screen reader can follow a whole chat. It hears when a reply starts and ends, and can jump from reply to reply. We made more than 70 accessibility fixes in v0.12.4 alone.
  • Notes get pages and live presence. You can see who's in a note and jump to where they're working, and a model reads a page before it edits it.
  • Sessions shows where your tokens go. Every chat is listed with its tokens, responses, and errors, and token counts match what your provider reports.
  • Small models can load skills only when they need them. Turn it on for the whole instance with one switch.

Update as soon as you can, and go straight to v0.13.0. Both releases include security fixes, and we'll publish the advisories once CVE numbers are assigned. v0.13.0, out November 3, adds more, along with a database migration, so back up first and update every instance at once. Two changes here need a decision first, and Before you upgrade covers them.

What a screen reader hears now #

This work started with the community. One request asked for a way to tell a model that's thinking from one that's stalled. Another came from a team supporting a blind VoiceOver user who works in Open WebUI every day.

In v0.12.4, we made more than 70 accessibility fixes for people using a screen reader, a keyboard, or a zoomed-in screen, and we added more in v0.12.5. Here's what you hear across one chat turn:

MomentWhat you hear
Finding the send button"Send message"
Pressing Enter"Generating..."
The reply finishing"Response complete"
A voice callWhen the model is listening and when it's thinking
Moving through a long chatA list of messages, with a heading naming the model on every reply
Copying a reply, or any other notificationThe notification, as it appears

"Response complete" marks the moment the reply ends. The reply itself streams into the chat as it always has, and how much of it you hear depends on your screen reader.

The list and headings come from that VoiceOver report, and we built the team's approach into v0.12.5. When she opens a long answer, VoiceOver reads the conversation as a list, and she can jump from the top of one reply to the top of the next. Her own messages get no heading while Chat Bubble UI is on, as it is by default. If you navigate by headings and want your own messages in that list, turn Chat Bubble UI off in your interface settings.

We did the same for keyboard users. Every menu and submenu moves with the arrow keys, with Home and End for its ends. Tooltips appear when Tab lands on a button, and Escape puts them away. Tab now reaches controls such as a calendar's delete button and, in a note, the Record and Note Menu buttons.

Deleting a calendar with the keyboard alone: Tab to its delete button, then Enter and confirm

If you've patched Open WebUI to make it work for someone on your team, tell us on the issue tracker. That's how a fix for one person ends up in every release after it.

Closer to your language #

In v0.12.4, we filled in missing translations across 50 languages, so more of the interface shows in your own. Administrators who want different wording can override any string in UI Translations, under Admin Panel > Settings > General.

We also improved the Ask User card for right-to-left languages. After a report about Hebrew, we made the card follow the Chat Direction setting, which by default takes each card's direction from its own text. That covers Arabic, Persian, Urdu, and other right-to-left languages as well.

The same Hebrew question in v0.12.3 (top) and v0.12.4 (bottom)

In v0.12.5, Backspace edits the word you're composing in Japanese and other input methods, without locking it in.

Notes get pages and presence #

We gave notes pages in v0.12.5, and each page can hold subpages. The button under the note's title shows which page you're on and opens the list. Every page has its own link, so you can send someone straight to the budget.

When someone else opens the note, their picture appears at the top, up to three, with a button for the rest. Click a picture and you land on their page at their cursor, with their edits arriving as they type. Each picture is a button named after the person, so a screen reader can say who's in the note.

Sam's picture at the top, and Sam's cursor at the end of a new line

A note with pages: Sam opens it, one click lands on Sam's page, and Sam's edits arrive live

How a model edits shared notes #

People in a note see each other's cursors. A model works from what it read a moment ago, so its note tools follow four rules. The first was already true, and we added the other three in v0.12.5:

  1. It has your permissions and no more. A model edits a note only if you could, and a note it creates starts out private to you.
  2. It can read one page. It doesn't have to load the whole note to change one line, and search works page by page too.
  3. It reads before it writes. Otherwise the tool answers Read this page with view_note before editing.
  4. A saved change beats an older read. If someone saves a change after the model read the page, its edit is refused with Page changed since you read it. Use view_note again before editing, and their words stay put.

After a refusal, rereading and trying again is up to the model, so if it stops there, ask it to carry on.

The chat inside a note always has these tools. In an ordinary chat, a model needs Notes on for your instance, the Notes permission, the Notes switch under Builtin Tools (on by default), and Function Calling not set to Legacy.

See where your tokens go #

We added a Sessions tab to Admin Panel > Settings > Analytics so you can see which chats use the most tokens. It lists every chat with its tokens, responses, errors, and the time from first message to last. Open one and you get a timeline of its replies and tool calls, with how long each took and whether it worked. If your bill jumped this month, sort by tokens and start at the top. We started recording timings in this release, so chats from before v0.12.5 list their steps without them.

The Sessions tab: 128 chats sorted by tokens, with the token ranges charted above

We changed Analytics to rank models and users by tokens by default, so a model that wrote 32 long reports leads one that answered 140 quick questions. You can also compare this period with the last one on the usage chart.

Ranked by tokens, a model with 32 messages leads one with 140 messages

Token counts now match what your provider reports. Some providers, such as Google's OpenAI-compatible Gemini endpoint and vLLM with certain settings, send a running total with every chunk of a streamed reply. In v0.12.5, we keep the latest total within each model call, and add up separate calls such as the steps of a tool loop. We handle llama.cpp's timing stats the same way. Counts saved before the upgrade keep their values, so on those providers a chart that spans the upgrade can show higher numbers on its older side.

Skills on demand for small models #

Attach three skills to a model, and every message carries all three skills' instructions. On a small model on your own GPU, that's room your conversation could use. In June, one team reported about 20,000 tokens of input on every prompt.

Turn on Load selected skills on demand under Admin Panel > Settings > General, or set ENABLE_SKILL_LAZY_LOADING, and the model sees a short list of its skills and loads one when the conversation calls for it. Say those skills are release notes, SQL review, and your style guide. Ask the model to fix a query, and it loads the SQL skill alone. A skill you pick with $ in your message still loads right away.

One switch for the whole instance

Loading a skill takes a tool call, so we left the choice to each instance, and it's off by default. It works best with a model that calls tools reliably. If a skill doesn't load, check that the Skills tool under Builtin Tools is on and that Function Calling isn't set to Legacy.

We also made long chats easier to follow on small models. The context gauge now measures against the model's own compaction threshold, so it shows how close a chat is to being summarized. We added a "Context compacted" line that marks the spot in the chat, and opening it shows the summary. Temporary chats compact as well.

What the model kept when the chat was summarized

More for everyone #

Clear out chats in bulk #

Shift-click a chat in the sidebar to start a selection, and a checkbox appears beside every chat. Click the others you want, or Shift-click again to select everything in between, then archive or delete them together.

Shift-click a range, click to add more, then archive or delete them together

Files get the same treatment in Manage Files, under Settings > Data Controls, where a batch downloads as one zip.

Check the files you want, then download them as one zip

Find the chat you want #

On a wider screen, hovering a chat in the sidebar opens a preview. We added a count of the turns in the branch you're on, so a long working session stands out from quick questions.

The turn count sits at the top of the preview

Folders that say what they're for #

We gave folders a description, shown under the title on the folder's page, so whoever opens "Q4 planning" knows what belongs there. The folder's menu starts a new chat right inside it. In a shared folder, the owner can rename chats other people started and drag them into another folder within it.

A folder's description sits under its title, above the chats it holds

See terminal files at a glance #

We added a grid view to the Files tab of a chat's terminal, which you can switch to from the toolbar's menu. Each folder shows how many items it holds. On a wider screen, hovering a file previews it in place. Previews cover images, audio, video, and documents up to 20 MB, and text files up to 1 MB.

A terminal's files in grid view, with a hover preview of an image

See who's behind a model #

Hover an owner's name in any Workspace list, and their profile card opens, with their picture, whether they're around, and a way to message them.

Hovering an owner in Workspace > Knowledge opens their profile card

Open a file inside the reply #

Attach a contract and ask what cancelling costs, and the model can open the file inside its reply, at the page it's citing. We extended the built-in display_file tool to files attached to the chat and files in a knowledge base attached to the model. For a file attached to the chat, turn off File Context in that model's capabilities, so the model reads it with its tools.

The reply opens the contract at its cancellation terms, above the answer

Choose your own shortcuts #

We gave every shortcut with a key in Settings > Keyboard its own small x. Click the one beside Regenerate Response, for example, and Ctrl+R or Cmd+R goes back to reloading the page.

Each assigned shortcut has its own x

Rename the open chat #

We added Rename to the menu beside an open chat's title. It turns the title into a text box in place. Enter saves it, and Escape leaves it as it was.

A chat title, ready to rename where it stands

Search with filters #

The tag, folder, pinned, shared, and archived filters work across chats, messages, and notes, and typing tag: lists your tags to pick from.

Typing tag: in v0.12.4 (top) and v0.12.5 (bottom)

Small things you'll notice #

  • Anything you turned on or off yourself survives a model switch, and everything you left alone takes the new model's defaults.
  • Read Aloud speaks in your Kokoro voice when you pick Kokoro.js (Browser) in Settings > Audio, and Kokoro.js runs on the CPU when no GPU is available.
  • Clicking a setting's name flips its switch or puts the cursor in its field.
  • Moving chats into folders keeps their last activity dates.
  • Images you generate are also saved to an attached terminal's working folder, so the model can keep working on them.

More for administrators #

Rotate or delete an API key #

If someone's API key ends up in public, you can now act on it yourself from that person's Edit User window in Admin Panel > Users. Delete removes the key at once. Rotate replaces it and shows you the new key one time, with a button to copy it, so you can send it to them privately. This works for anyone except the primary administrator.

Sam's new key after Rotate, shown once with a button to copy it

Show only what people use #

Under Visible controls in Admin Panel > Settings > Interface, you can switch off single controls for everyone except administrators, grouped by where they appear. UI_VISIBILITY sets the same list from the environment. Hiding a control only takes it off the screen, and the feature behind it keeps working. In v0.12.5, we extended this to the buttons in the message box that show what's switched on for the next message.

Three controls switched off for everyone but administrators

Build on a hidden model #

Turn on Hidden Models under Models Access in a group's permissions, in Admin Panel > Users > Groups, or set USER_PERMISSIONS_WORKSPACE_MODELS_HIDDEN. The group can then build assistants on base models that stay out of its chat picker.

Hidden Models sits under Models Access in a group's permissions

Check what a model accepts #

We added a Provider details section to the model editor. It shows a model's input types, context window, maximum output, and supported parameters, as the provider reports them. OpenRouter and other OpenAI-compatible providers that describe their models fill it in. Ollama models and the rest read "Not provided".

A made-up model, as its provider describes it

Set embedding labels in settings #

Some embedding models, such as nomic-embed-text, were trained with labels on questions and passages. We added Query Prefix and Content Prefix as two fields under Advanced in Admin Panel > Settings > Documents. Type each label with the space after its colon, then reindex your documents.

nomic-embed-text's two labels, typed into the new fields

Give plugin settings a slider #

Tools and functions keep their settings in Valves, and we've added a slider for number Valves, with the value beside it and its ends at the field's limits. Add the range input to a Field that sets ge and le:

python
words_per_minute: int = Field(
    default=240, ge=120, le=400,
    json_schema_extra={"input": {"type": "range"}},
)

A tool's Valves with two sliders

Steadier at scale #

  • We sped up saving a group and renaming or moving a folder on instances with thousands of people online, and channel posts go out faster.
  • LDAP users without an email address can sign in as their username at a default domain you set in the LDAP settings or with LDAP_DEFAULT_EMAIL_DOMAIN. They also sign in to any existing account with that address, so pick a domain you control.
  • An MCP server that restarts during a long answer now affects only that one tool call, and servers on the stateless 2026-07-28 protocol can connect.
  • Very large uploads embed and save 1,000 chunks at a time by default, set with RAG_EMBEDDING_BUFFER_SIZE.
  • Searches over a long chat history come back sooner, and listing a large knowledge base uses far less memory.

If you skipped v0.12.3 #

Encrypted chats between people #

Pick Encrypted Chat from a direct message's menu, the other person gets a Join button, and from then on, each browser encrypts the messages while the server only passes them along. Nothing is stored, and when the person who started it leaves, the chat is gone for everyone. An administrator has to switch it on and grant the Encrypted Channels permission first, and it needs HTTPS in production.

An encrypted chat after Sam joins, with a Leave button at the top right

One search for everything #

In v0.12.3, we brought chats, channel and direct messages, and notes into one search. Ctrl + K opens it, or Cmd + K on a Mac. A channel result opens its thread at the matching message.

One query across a note, chats and a channel, with a preview of the selected result

Before you upgrade #

Back up your data volume first. v0.12.4 and v0.12.5 add no database migrations, but v0.13.0 does, and it needs every instance updated at once. Read the first three rows below before you start the new version.

What changedVersionWhat to do
The Sessions tab lets administrators open anyone's chat, with its replies and tool callsv0.12.5It follows ENABLE_ADMIN_CHAT_ACCESS, which is on by default. Set it to false before you start the new version if administrators shouldn't read other people's conversations. They keep the charts
Tool servers and Open Terminal connections saved in people's own settings need Direct Integrations, which is off by default. This includes administrators' own, and anything saved before v0.11.4 added the switchv0.12.4Turn it on under User Connections in Admin Panel > Settings > Integrations, or set ENABLE_DIRECT_INTEGRATIONS. Nothing is deleted
Archive All Chats now takes chats out of their folders. Chats archived that way before the upgrade still sit in their folders, and deleting a folder deletes what's in itv0.12.4Check a folder for archived chats before you delete it
Anyone who can use a model can pick any thinking level you approved on itv0.12.4To keep a level out of reach, remove it from that model's Model controls
Parameters people saved for themselves now take effect. On Ollama, a saved context length that differs from the model's can make it reload on a shared GPUv0.12.4Ask people to set num_ctx back to Default in their own settings
Saving a model or prompt keeps its sharing as it was, and sharing permissions apply through the API toov0.12.4A script that changes sharing needs an account with a permission such as Models Sharing
The Docker image runs Python 3.12 on Debian 13, and the standard image is slightly largerv0.12.4Custom functions, tools, and pip packages in the container need versions that support Python 3.12
MCP_INITIALIZE_TIMEOUT, 10 seconds by default, now covers listing tools and reading resources. MCP connections stay on the same address when redirectedv0.12.4Raise the timeout for slow servers, and point Open WebUI at a server's final address
With WEBSOCKET_REDIS_ROOM_CHANNELS on, a restricted Redis user needs new permissionsv0.12.3Open WebUI logs any permission it's missing, with the fix
Automation failures go to webhooks set to users or groups that include the automation's owner, instead of System events only webhooksv0.12.5If you watch for failures, add one of those under Admin Panel > Settings > General > Events
Knowledge base API calls that add, update, or remove files, or rename or share a knowledge base, return only the files they touched, or an empty listv0.12.5Read the full list from GET /api/v1/knowledge/{id}/files, which pages through it
Manage Files shows only your own files, for administrators toov0.12.4Nothing
Files attached to an existing note move to the end of its first pagev0.12.5Nothing
In a chat with several models, regenerating a reply uses the model currently picked for that columnv0.12.5Nothing
Open WebUI waits up to 60 seconds for a terminal that's still starting, instead of 10v0.12.5If you set AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA, it keeps your value. Set AIOHTTP_CLIENT_TIMEOUT_TERMINAL for a different limit

When you're ready, the updating guide has the steps, and the release notes for v0.12.4 and v0.12.5 list every change.

Where to start #

If you use a screen reader, Tab through a chat and listen for the Send button speaking its name. Then take your longest shared note, give it pages, and open it with a teammate. Wherever focus gets lost or a button still says only "button", tell us on the issue tracker.

We've already shipped v0.13.0, and its post is coming soon. It brings a tabbed workspace for files, terminals, and previews, a Browser tab and a Desktop tab for computer use, and comment threads. Until then, the release notes have the details.

The Open WebUI Team

AI on your terms.

Your models. Your data. Your infrastructure.