Skip to content
Merged

0.12.0 #1454

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
a656815
Document WEBSOCKET_REDIS_ROOM_CHANNELS
Classic298 Sep 22, 2026
4385b8f
Give per-room Redis channels their own scaling section
Classic298 Sep 22, 2026
2f4612b
Merge branch 'main' into dev
Classic298 Sep 22, 2026
675fcf0
Merge branch 'main' into dev
Classic298 Sep 23, 2026
48e5d12
Document 0.11.5 changes to Attach Webpage, Pyodide, model reordering …
Classic298 Sep 24, 2026
bbae615
Clarify default model storage and OAuth refresh locking
Classic298 Sep 24, 2026
b0d055a
Merge remote-tracking branch 'upstream/main' into dev
Classic298 Sep 24, 2026
44bd5a2
Merge remote-tracking branch 'upstream/main' into dev
Classic298 Sep 24, 2026
3c3f100
Document 0.11.5 terminal skill reads, analytics, streaming precedence…
Classic298 Sep 25, 2026
43fbc87
Correct what OAUTH_BLOCKED_GROUPS does
Classic298 Sep 25, 2026
f64520d
Document 0.11.5 Ollama max_tokens, process/web errors, tool pairing, …
Classic298 Sep 26, 2026
66b4076
Describe the parent sharing permissions by what they show
Classic298 Sep 26, 2026
72e3792
Fix the outlet examples and the migration preview steps
Classic298 Sep 28, 2026
fce2ddd
Merge remote-tracking branch 'upstream/main' into dev
Classic298 Sep 28, 2026
ba48a5b
Document the Tavily search depth setting
Classic298 Sep 28, 2026
35c416e
Clarify what ENABLE_ADMIN_CHAT_ACCESS covers
Classic298 Sep 28, 2026
c836a5c
Explain what takes precedence over DEFAULT_LOCALE
Classic298 Sep 28, 2026
d07c509
Merge branch 'main' into dev
Classic298 Sep 28, 2026
471d181
Merge branch 'main' into dev
Classic298 Sep 28, 2026
e8566d1
Describe banner dismissal as the Remember Dismissal switch
Classic298 Sep 28, 2026
69e3afd
Say background sub-agents lose only user tool servers
Classic298 Sep 29, 2026
2db9309
Recommend copying the database file over the admin database download
Classic298 Sep 29, 2026
6d513a5
Merge branch 'main' into dev
Classic298 Sep 29, 2026
6bc52f4
Name Open Terminal's AGENTS.md and skills among the prompt cache brea…
Classic298 Sep 29, 2026
d822501
docs: name Tailscale DNS as a known issue for the c-ares resolver
Classic298 Sep 29, 2026
e3769b0
Merge branch 'main' into dev
Classic298 Sep 29, 2026
dd5fe8b
Merge branch 'main' into dev
Classic298 Sep 30, 2026
81c2f95
docs: orjson is the default JSON encoder from v0.11.5
Classic298 Sep 30, 2026
13320e4
Merge branch 'main' into dev
Classic298 Sep 30, 2026
dfb500f
Document the 0.11.5 Milvus migration and other changes
Classic298 Oct 1, 2026
88b29b0
Document the separate switches for tools, functions and tool servers
Classic298 Oct 1, 2026
259bed0
Keep the Milvus migration warning in the Milvus settings only
Classic298 Oct 1, 2026
4d3dabe
Document MCP tool name shortening and the call link checks
Classic298 Oct 2, 2026
cb6681b
Correct who can read files attached to a model
Classic298 Oct 3, 2026
f69dc98
Document the 0.11.5 arena default, build hash and update check changes
Classic298 Oct 5, 2026
38f1a6e
Document slim S3 storage, folder default models and the model list links
Classic298 Oct 5, 2026
6b04987
Document two-factor sign-in, session revocation and nested groups
Classic298 Oct 5, 2026
1e6f9fe
Merge branch 'main' into dev
Classic298 Oct 5, 2026
9672053
Merge branch 'main' into dev
Classic298 Oct 5, 2026
9211856
docs: WEB_LOADER_TIMEOUT is stored as a string
Classic298 Oct 6, 2026
2180904
Refer to the upcoming release as 0.12.0
Classic298 Oct 6, 2026
513a4c0
Document model controls
Classic298 Oct 6, 2026
c976271
Document realtime voice calls and the OpenAI Realtime speech engine
Classic298 Oct 6, 2026
da1a12b
Describe the realtime call screen and the group member tables
Classic298 Oct 7, 2026
60f1cb1
Merge branch 'main' into dev
Classic298 Oct 7, 2026
1c3913e
Merge branch 'main' into dev
Classic298 Oct 7, 2026
bd50204
Merge branch 'main' into dev
Classic298 Oct 7, 2026
492a0cc
Document the Skills tool switch, DATABASE_SCHEMA migrations, Clone Ch…
Classic298 Oct 8, 2026
8f4cb0a
Document voice avatars for realtime calls
Classic298 Oct 8, 2026
c1e6d07
Say that shared note readers can open its attached files
Classic298 Oct 8, 2026
af24401
Merge branch 'main' into dev
Classic298 Oct 9, 2026
210b7cf
Document the unavailable models view, confirmed URL actions and note …
Classic298 Oct 9, 2026
cee6eaa
Document MCP OAuth fallback, structured tool results, terminal prompt…
Classic298 Oct 9, 2026
b99d7a2
Document replies in shared chats and tighten sharing and admin access
Classic298 Oct 9, 2026
b8d97e0
Describe what happens when function code fails to load
Classic298 Oct 10, 2026
af795e2
Document the knowledge base file browser and the Exa page loader
Classic298 Oct 10, 2026
13ede2b
Document version history, multi-file skills and the 0.12.0 image sizes
Classic298 Oct 10, 2026
44c1b02
Document Tool Search and compaction between tool rounds
Classic298 Oct 10, 2026
278f9da
Document the new model editor, shared skills and smaller 0.12.0 changes
Classic298 Oct 10, 2026
22fe3de
Fix docs the 0.12.0 audit found outdated and document forking shared …
Classic298 Oct 10, 2026
6c3dad6
Fix the docs the second 0.12.0 audit found outdated
Classic298 Oct 10, 2026
b70c4b9
Correct MFA sign-in edge cases, the Channels permission and the serve…
Classic298 Oct 10, 2026
0715356
Merge branch 'main' into dev
Classic298 Oct 10, 2026
2a2747e
Fill env var reference gaps found by the 0.12.0 check
Classic298 Oct 10, 2026
cdc7c0e
Fix workspace and extensibility pages found by the 0.12.0 review
Classic298 Oct 10, 2026
60c4c31
Fix chat, audio and web search pages found by the 0.12.0 review
Classic298 Oct 10, 2026
2d1f5b6
Auditor fixes for the 0.12.0 docs
Classic298 Oct 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions docs/ecosystem/community/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl';
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>

**Use models, prompts and plugins that other people have already built, and share your own.**
**Use models, prompts, skills and plugins that other people have already built, and share your own.**

You don't have to write every system prompt, Tool or Function yourself. [Open WebUI Community](https://openwebui.com/) is a separate website where people publish what they've built for Open WebUI, and anything posted there can be imported into your instance in a few clicks.

Expand All @@ -35,6 +35,7 @@ You need an account on openwebui.com, which is separate from your account on you
| :--- | :--- | :--- |
| Model preset | **Workspace > Models** | Users allowed to create models |
| Prompt | **Workspace > Prompts** | Users allowed to create prompts |
| Skill | **Workspace > Skills** | Users allowed to create and import skills |
| Tool | **Workspace > Tools** | Users allowed to create tools |
| Function | **Admin Panel > Functions** | Admins only |

Expand All @@ -43,6 +44,7 @@ You need an account on openwebui.com, which is separate from your account on you
**Share** opens openwebui.com in a new tab with a new post already filled in. Nothing is published until you finish the post there.

- **A model preset, prompt or Tool:** in **Workspace**, open the item's menu and click **Share**.
- **A skill:** in **Workspace > Skills**, open the skill's menu and click **Share**. This needs the **Export Skills** permission. The post carries the skill with all its files, up to 15 MiB in total.
- **A Function (admins only):** in **Admin Panel > Functions**, open the function's menu and click **Share**.
- **A chat:** in the chat's **Share** dialog, click **Share to Open WebUI Community**.

Expand Down Expand Up @@ -82,7 +84,7 @@ A Tool or Function imported from the site is Python that runs on your server fro

openwebui.com never connects to your server. Everything passes between two tabs in a user's browser, so an instance on `localhost` or a private network works the same as a public one, and nothing is sent until a user clicks for it. A user can send two things:

- **A share.** Whatever they share is published as a post: a model preset or prompt as it's set up, a Tool's full source code, or a snapshot of a chat, messages included. Admins can also share a Function's full source code.
- **A share.** Whatever they share is published as a post: a model preset or prompt as it's set up, a skill with all its files, a Tool's full source code or a snapshot of a chat, messages included. Admins can also share a Function's full source code.
- **A stats sync** for the [Leaderboard](#add-your-usage-to-the-leaderboard). Each user decides whether to sync, and it covers only their own chats. They confirm it in a **Sync Usage Stats** dialog on your instance.

A stats sync sends:
Expand All @@ -100,14 +102,14 @@ Your instance's own [Evaluation](/features/administration/evaluation) leaderboar

| Setting | Where | Default |
| :--- | :--- | :--- |
| **Community Sharing** | **Admin Panel > Settings > General** | On |
| **Community Sharing** | **Settings > Admin > General** | On |

[`ENABLE_COMMUNITY_SHARING`](/reference/env-configuration#enable_community_sharing) sets it on an instance's first start. After that, the value saved in the Admin Panel wins.

Turning it off hides these for every user, admins included:

- the **Made by Open WebUI Community** links on the Models, Prompts, Tools and Functions pages
- **Share** in the model, prompt, tool and function menus
- the **Made by Open WebUI Community** links on the Models, Prompts, Skills, Tools and Functions pages
- **Share** in the model, prompt, skill, tool and function menus
- **Share to Open WebUI Community** in the chat share dialog
- **Community Reviews** in the model selector, and the review link after rating a reply
- the **Sync Usage Stats** dialog
Expand Down
2 changes: 1 addition & 1 deletion docs/enterprise/security.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ Open WebUI integrates with the identity systems your organization already uses:

* **LDAP & Active Directory** , Connect directly to your existing directory services for user authentication and management.
* **Single Sign-On (SSO)** , Support for OIDC and OAuth 2.0 (Google, Microsoft Entra, GitHub, and any OIDC provider), enabling users to access Open WebUI with their existing corporate credentials.
* **Multi-Factor Authentication (MFA)** , Enforced by your identity provider when sign-in is delegated to it through SSO; Open WebUI has no MFA of its own for password logins.
* **Multi-Factor Authentication (MFA)** , Enforced by your identity provider when sign-in is delegated to it through SSO, or by Open WebUI's own [two-factor sign-in](/features/authentication-access/mfa) with an authenticator app for password, LDAP, SSO and trusted-header logins.

#### Access Control & Permissions

Expand Down
4 changes: 2 additions & 2 deletions docs/features/administration/analytics/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -86,14 +86,14 @@ This is useful for:
- **Cost allocation** - Attribute token consumption to business units
- **Pilot programs** - Monitor adoption within test groups

All metrics on the page update automatically when you change the time period or group filter, with one exception: with **Last 24 hours** selected, the timeline chart ignores the group filter and shows all users. The summary tiles and tables still honor it.
All metrics on the page update automatically when you change the time period or group filter, including the hourly timeline shown for **Last 24 hours**.

### Summary Statistics

The dashboard header displays key metrics for the selected time period:

- **Total Messages** - Number of assistant responses generated
- **Total Tokens** - Sum of all input and output tokens processed
- **Total Tokens** - Sum of all input and output tokens processed. Hover it to see the input and output totals separately
- **Total Chats** - Number of unique conversations
- **Total Users** - Number of users who sent messages

Expand Down
8 changes: 4 additions & 4 deletions docs/features/administration/banners.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ title: "Customizable Banners"

Open WebUI allows administrators to display custom banners on the new-chat screen. They are shown under the chat header only while no chat is open, and not on workspace, admin or other pages. Banners are useful for announcements, system-wide alerts, maintenance notices, and other important messages.

Banners are persistent and can optionally be **dismissible** by users. You can configure banners in two ways:
Users can close any banner for the current page load, and a banner can optionally remember that dismissal. You can configure banners in two ways:

1. **Admin Panel** (recommended for quick edits and experimentation)
2. **Environment variable (`WEBUI_BANNERS`)** (recommended for automated / GitOps-style deployments)
Expand Down Expand Up @@ -49,7 +49,7 @@ You can configure the following options for each banner:
- `error` (Red)
- **Title:** The main heading of the banner.
- **Content:** The main message. Markdown is rendered and inline HTML is allowed, both passed through a sanitizer. Every newline becomes a line break before parsing, so multi-line Markdown blocks (lists, tables, blockquotes) do not form. Use their HTML forms for those.
- **Dismissible:** If enabled, users can close the banner.
- **Remember Dismissal:** If enabled, a banner the user closed stays closed. If disabled, it shows again on the next page load.

The globe selector next to the **Banners** heading stores the content per language, so each user reads the banner in the language their interface is set to. See [Translations](/features/administration/translations#banners).

Expand All @@ -61,7 +61,7 @@ Dismissed banners are stored in the user’s browser (client-side). This means:
- A dismissed banner may reappear on a different device or browser
- Dismissal is per-banner `id` (if the `id` changes, the banner is treated as new)

If you need the banner to remain visible for everyone, set `dismissible: false`.
If you need the banner to come back on every page load, set `dismissible: false`.

---

Expand Down Expand Up @@ -98,7 +98,7 @@ Each banner object supports the following properties:
- `type` (string, required): Banner style. Must be one of: `info`, `success`, `warning`, `error`.
- `title` (string, optional): Title text.
- `content` (string, required): Main banner message (Markdown, inline HTML allowed).
- `dismissible` (boolean, required): Whether the user can dismiss the banner.
- `dismissible` (boolean, required): Whether a closed banner stays closed for that user (the **Remember Dismissal** switch).
- `timestamp` (integer, required): Present in configuration, but currently not used by the frontend to control display timing.
- `i18n` (object, optional): Translated content, keyed by language, each entry holding a `content` string. A user is shown the entry matching their interface language, falling back to `content`. See [Translations](/features/administration/translations#banners).

Expand Down
4 changes: 2 additions & 2 deletions docs/features/administration/evaluation/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ Open WebUI provides two straightforward approaches for evaluating AI models.
The **Arena Model** randomly selects from a pool of available models, making sure the evaluation is fair and unbiased. This helps in removing a potential flaw in manual comparison: **ecological validity**, ensuring you don’t knowingly or unknowingly favor one model.

How to use it:
- Select a model from the Arena Model selector.
- Select a model from the Arena Model selector. The selector only appears once an admin turns on **Arena Models** (see [Configuring an Arena Model](#configuring-an-arena-model)).
- Use it like you normally would, but now you’re in “arena mode.”

For your feedback to affect the leaderboard, you need what’s called a **sibling message**. What's a sibling message? A sibling message is just any alternative response generated by the same query (think of message regenerations or having multiple models generating responses side-by-side). This way, you’re comparing responses **head-to-head**.
Expand All @@ -68,7 +68,7 @@ Need more depth? You can even replicate a [**Chatbot Arena**](https://lmarena.ai

#### Configuring an Arena Model

Arena models live in **Settings > Admin > Evaluations**. Switch **Arena Models** on and a **Models** section appears listing the arena models you have created. Until you add one, a single default arena model is used and it draws from every model on the instance.
Arena models live in **Settings > Admin > Evaluations**. [Arena models are off by default](/reference/env-configuration#enable_evaluation_arena_models). Switch **Arena Models** on and a **Models** section appears listing the arena models you have created. Until you add one, a single default arena model is used and it draws from every model on the instance.

Use the **+** button to add an arena model, or the gear icon on an existing row to edit it. Alongside the name, ID, description and access control, each arena model carries its own pool of models:

Expand Down
2 changes: 1 addition & 1 deletion docs/features/administration/interface-defaults.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ Every option on the **Settings > Interface** page, in the order it appears there

| Key | Label in Settings > Interface | Built-in default |
| --- | --- | --- |
| `ctrlEnterToSend` | Enter Key Behavior | `false` (**Enter to Send**); `true` is **Ctrl+Enter to Send** |
| `ctrlEnterToSend` | Enter Key Behavior | `false` (**Enter to Send**); `true` is **Ctrl+Enter to Send**, in chats, channel messages and thread replies |
| `richTextInput` | Rich Text Input for Chat | `true` |
| `promptAutocomplete` | Prompt Autocompletion | `false` |
| `showFormattingToolbar` | Show Formatting Toolbar | `false` |
Expand Down
30 changes: 23 additions & 7 deletions docs/features/administration/translations.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@ Separately from that, admins can override Open WebUI's own interface wording, th

| Resource | Fields | Where |
| :--- | :--- | :--- |
| **Models** | Name, description, prompt suggestions | Workspace > Models, in the model editor. See [Models](/features/workspace/models#translations) |
| **Models** | Name, description, prompt suggestions, model control and option names | Workspace > Models, in the model editor. See [Models](/features/workspace/models#translations) |
| **Tools** | Name, description, valve labels | Workspace > Tools, in the tool editor |
| **Skills** | Name, description | Workspace > Skills, in the skill editor |
| **Functions** | Name, description, valve labels, per-action labels | Settings > Admin > Functions, in the function editor |
| **Banners** | Content, not the title | Settings > Admin > System > General, next to the Banners heading |
| **Functions** | Name, description, valve labels, per-action labels | Admin Panel > Functions, in the function editor |
| **Banners** | Content, not the title | Settings > Admin > General, next to the Banners heading |
| **Arena models** | Name, description | Settings > Admin > Evaluations, in the arena model dialog |
| **Default prompt suggestions** | The suggestions themselves | Settings > Admin > Models > Model Defaults |
| **Open WebUI's own interface** | Any string the application ships | Settings > Admin > System > General, under UI Translations. See [Interface text](#interface-text) |
| **Open WebUI's own interface** | Any string the application ships | Settings > Admin > General, under UI Translations. See [Interface text](#interface-text) |

---

Expand Down Expand Up @@ -52,7 +52,7 @@ Open WebUI picks by the language the user has the interface set to, in this orde

A field you leave blank is dropped when you save, so an empty translation is the same as no translation and the original shows through. Translate what matters and leave the rest.

Translated text follows the resource everywhere it is named: model and tool pickers, the new chat screen, the `@`, `$` and `/` menus, the Integrations menu, the action buttons under a reply, the sidebar and the Workspace lists. Workspace search matches both the translated name and the original, so searching for either finds the thing.
Translated text follows the resource everywhere it is named: model and tool pickers, the new chat screen, the `@`, `$` and `/` menus, the Integrations menu, the model controls panel, the action buttons under a reply, the sidebar and the Workspace lists. Workspace search matches both the translated name and the original, so searching for either finds the thing.

---

Expand Down Expand Up @@ -89,9 +89,25 @@ The table also has a search box and a **Modified** filter for showing only rows

---

## Translating model controls

A model's [controls](/features/workspace/models#model-controls) carry names people read in the chat: the control's name, its description and the name of each option. Pick a language in the model editor and the **Model controls** row lists each of them with the original as placeholder text. **Use default** clears every control translation for that language at once.

The translations are stored with the model's other translations in `meta.i18n`, one map per language, under these keys:

| Key | What it labels |
| :--- | :--- |
| `model_controls.<key>.label` | The control's name |
| `model_controls.<key>.description` | Its help text |
| `model_controls.<key>.options.<value>.label` | The name of one option |

`<key>` is the control's ID and `<value>` the option's ID, the same IDs the API uses under `params.model_controls`. Only the names change; the parameters each option sends stay the same in every language.

---

## Banners

Banner content is translated from **Settings > Admin > System > General**, with the same globe selector next to the **Banners** heading. Each banner keeps its original content and a version per language, and a user is shown the one matching their interface language.
Banner content is translated from **Settings > Admin > General**, with the same globe selector next to the **Banners** heading. Each banner keeps its original content and a version per language, and a user is shown the one matching their interface language.

![A banner being edited in German, with the language selector next to the Banners heading](/images/features/translations/banner-translations.png)

Expand All @@ -103,7 +119,7 @@ This replaces the older habit of putting several languages into one banner. Writ

Everything above is about the things you create. This one is about Open WebUI's own wording: the buttons, labels and messages the application ships with.

Open **Settings > Admin > System > General** and find **UI Translations**. Each row is a pair: on the left the original English string exactly as the application uses it, on the right what you want shown instead. The selector picks which language the right-hand column belongs to, and it starts on the language you are currently reading the interface in.
Open **Settings > Admin > General** and find **UI Translations**. Each row is a pair: on the left the original English string exactly as the application uses it, on the right what you want shown instead. The selector picks which language the right-hand column belongs to, and it starts on the language you are currently reading the interface in.

The overrides are merged over the language files Open WebUI ships. Anything you override wins, everything you leave alone keeps the shipped wording, so you never have to supply a whole catalogue to change one word.

Expand Down
6 changes: 4 additions & 2 deletions docs/features/authentication-access/auth/scim.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,11 @@ The `active` flag maps onto Open WebUI roles: `active: false` sets the role to `
- **Create Group** (`POST /Groups`): Create a new group
- **Get Group** (`GET /Groups/{id}`): Retrieve group information
- **Update Group** (`PUT /Groups/{id}`, `PATCH /Groups/{id}`): Update group membership
- **Delete Group** (`DELETE /Groups/{id}`): Remove a group
- **Delete Group** (`DELETE /Groups/{id}`): Remove a group. Its subgroups move up to its parent group, and its access grants are deleted
- **List Groups** (`GET /Groups`): List all groups with filtering support

Groups created through SCIM start at the top level. A parent group set in the admin panel stays in place across SCIM updates, and members inherit access from it as described in [Nested Groups](/features/authentication-access/rbac/groups#nested-groups).

### Supported Attributes

#### User Attributes
Expand All @@ -119,7 +121,7 @@ The `active` flag maps onto Open WebUI roles: `active: false` sets the role to `

#### Group Attributes
- `displayName`: Group name (required)
- `members`: Array of user members
- `members`: Array of user members. Every member must be an existing user. A member of type `Group`, or one that references a Group resource, or an unknown user ID makes Open WebUI reject the whole request with a `400` `invalidValue` error, and nothing is changed
- `externalId`: External identifier from the identity provider

## Filtering Support
Expand Down
Loading
Loading