Merged
Conversation
Added missing translations.
👋 Welcome and Thank You for Contributing!We appreciate you taking the time to submit a pull request to Open WebUI!
|
Contributor
|
Thanks! |
lentiann
added a commit
to ZalaziumGmbh/anox
that referenced
this pull request
Feb 24, 2026
* refac * refac * add message id (open-webui#21214) * fix: prevent worker death during document upload by using run_coroutine_threadsafe (open-webui#21158) * fix: prevent worker death during document upload by using run_coroutine_threadsafe Replace asyncio.run() with asyncio.run_coroutine_threadsafe() in save_docs_to_vector_db() to prevent uvicorn worker health check failures. The issue: asyncio.run() creates a new event loop and blocks the thread completely, preventing the worker from responding to health checks during long-running embedding operations (>5 seconds default timeout). The fix: Schedule the async embedding work on the main event loop using run_coroutine_threadsafe(). This keeps the main loop responsive to health check pings while the sync caller waits for the result. Changes: - main.py: Store main event loop reference in app.state.main_loop at startup - retrieval.py: Use run_coroutine_threadsafe() instead of asyncio.run() https://claude.ai/code/session_01UQSYvSTkXb57sFb7M85Kcw * add env var --------- Co-authored-by: Claude <[email protected]> * refac * refac * fix: pass chat_id to internal task calls for consistent function context (open-webui#20585) Ensure chat_id is reliably passed to function pipelines/manifolds during internal task invocations (web search query generation, RAG query generation, image prompt generation). This allows stateful functions to maintain per-chat state without fragmentation, as they will now receive a consistent chat_id for all chat-scoped invocations including internal tasks. Backend changes: - Pass chat_id in generate_queries call for web search - Pass chat_id in generate_queries call for RAG/retrieval - Pass chat_id in generate_image_prompt call Frontend changes: - Add optional chat_id parameter to generateQueries API function - Add optional chat_id parameter to generateAutoCompletion API function Fixes open-webui#20563 * refac * init (open-webui#20883) Co-authored-by: Tim Baek <[email protected]> * refac * refac * chore: format * Update CHANGELOG.md (open-webui#20594) * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * docs(changelog): update CHANGELOG.md for file upload settings fix * docs: add RTL markdown table display fix to CHANGELOG * changelog: add GPU usage fix for online status indicator - Fixed high GPU usage (35-40% to near-zero) caused by animate-ping CSS animation on the user online status indicator Refs: open-webui#21062, 938d1b0 * docs(changelog): add ANSI color code fix for code execution - Fixed code execution reliability when LLMs include ANSI terminal color codes in their output - Prevents random syntax errors during code execution - Related to issue open-webui#21091 * fix: restore tool call expand/collapse functionality A refactor moved tool call display logic into a separate component but inadvertently disabled the collapsible behavior because tool calls store content in attributes rather than body text. Fixes open-webui#21205 * changelog: fix malformed Authorization header crash in Fixed section - Add entry for malformed Authorization header fix (issue open-webui#20938) The APIKeyRestrictionMiddleware now validates Authorization headers before processing them, preventing ValueError and HTTP 500 errors. * Add notification toast close button entry to CHANGELOG * Update changelog date to 2026-02-07 * fix: respect ENABLE_OLLAMA_API and ENABLE_OPENAI_API flags when url_idx is provided * Update CHANGELOG.md * Add Latvian (lv-LV) language translation * changelog: add relative time indicators for chat updates * Update CHANGELOG.md * changelog: add active chat tasks sidebar feature * changelog: Update date to 2026-02-10 and fix tool call result decoding issue (open-webui#20600) * changelog: Consolidate Open Responses protocol commits * changelog: Add Irish translations * changelog: icons, dark-mode, display * changelog: Fix dark mode icon display issue (open-webui#21272) * changelog: duplicate, icons, dark-mode * changelog: access-control-ui, sharing-users, api-groups-users * changelog: reorder access control entries for visibility * changelog: move api entry down * changelog: batch-file-ops, knowledge-base, performance * changelog: add Gboard Android clipboard fix entry * changelog: opensearch, knowledge-base, typefix * changelog: add Gboard Android fix entry * Update CHANGELOG.md * changelog: expand user sharing entry * changelog: remove emphasis word from user sharing * changelog: reformulate user sharing entry per guidelines * changelog: notifications, new-chat-fallback, device-scoped * changelog: fix embeddings endpoint batch input for Ollama * changelog: replace backticks with single quotes per style guidelines * changelog: ssl-embeddings, aiohttp-session-ssl * changelog: add Ollama auto-port fallback entry * changelog: add independent access control endpoints and permission fixes * changelog: consolidate access control entries and improve permission fix description * changelog: model selector, virtual scrolling, performance * changelog: update date to February 11, 2026 * changelog: pagination, model settings, admin * changelog: add Skill standard feature entry * changelog: add French to translations list * changelog: action-html, iframe, rich-content * changelog: tool call, html entities, multi-turn * changelog: redis model cache, performance * changelog: inline-images, context-window, fix-20916 * changelog: fix inline images context window exhaustion * changelog: audio, timeout, api * changelog: cache optimization, performance, ttft * changelog: ldap, authentication, freeze * changelog: async pipelines, event loop * changelog: streaming, connection, cleanup * changelog: add commits for Action Rich UI refactor and group performance * changelog: model access control, batch queries, database optimization * changelog: trusted-header, authentication, user-registration * changelog: add pinned read-only models entry * changelog: update date to February 12, 2026 * Update CHANGELOG.md * Update CHANGELOG.md * changelog: add issue open-webui#17058 to streaming response cleanup entry * changelog: reorder Fixed section by importance priority * Update CHANGELOG.md * changelog: add warning about chat message table migration duration * changelog: openai-api-router, model-cache-lookup, bugfix * changelog: ollama-model-name-fix, provider-compatibility * changelog: fix Ollama-compatible provider model name issue open-webui#21331 * changelog: OpenAI API endpoint detection fix * changelog: model list and import performance optimization * changelog: external tool event emitter message id support open-webui#21214 * changelog: fix large document upload worker timeout open-webui#21158 * changelog: fix RedisCluster task stopping * changelog: add discussion link to open-webui#21158 * changelog: add commit c653e4e to open-webui#21158 entry * changelog: functions, chat_id, internal_tasks * changelog: channel permissions security fix --------- Co-authored-by: Classic298 <[email protected]@> * refac * refac * refac * refac * refac * refac * refac * refac * chore: format * refac * Merge pull request open-webui#21345 from joaoback/patch-25 i18n: Update translation.json (pt-BR) * refac * fix: resolve knowledge collection indentation/truncation issue by correcting flex layout (open-webui#21374) * fix: resolve knowledge tooltip z-index issue in model edit page (open-webui#21375) * fix: ensure sync modal only triggers if community sharing is enabled (open-webui#21376) * fix: PostgreSQL cannot use get_chat_ids_by_model_id Co-Authored-By: EntropyYue <[email protected]> * fix: enforce public sharing permission checks across all resource types (open-webui#21358) The sharePublic prop in editor components (Knowledge, Tools, Skills, Prompts, Models) incorrectly included an "|| edit" / "|| write_access" condition, allowing users with write access to see and use the "Public" sharing option regardless of their actual public sharing permission. Additionally, all backend access/update endpoints only verified write authorization but did not check the corresponding sharing.public_* permission, allowing direct API calls to bypass frontend restrictions entirely. Frontend: removed the edit/write_access bypass from sharePublic in all five editor components so visibility is gated solely by the user's sharing.public_* permission or admin role. Backend: added has_public_read_access_grant checks to the access/update endpoints in knowledge.py, tools.py, prompts.py, skills.py, models.py, and notes.py. Public grants are silently stripped when the user lacks the corresponding permission. Fixes open-webui#21356 * fix: skills postgres issue * refac * enh: apply admin default to builtin web search (open-webui#21373) * Update utils.py (open-webui#21105) * refac: is_user_active * refac * refac * refac: defer profile * refac: scim * fix: pin torch to prevent startup errors on ARM devices (open-webui#21385) * fix: rpi * Update requirements-min.txt * Update requirements.txt * Update pyproject.toml * fix: direct model access control * refac: styling * refac: styling * refac * refac Co-Authored-By: Juan Calderon-Perez <[email protected]> * enh (open-webui#21362) * refac * refac * chore: format * chore: format * doc: changelog * refac * refac * fix issues/21399 (open-webui#21400) * refac * chore: Changelog updates (open-webui#21382) * Add v0.8.1 release section * changelog: knowledge menu layout fix * changelog: knowledge tooltip z-index fix * changelog: sync modal community sharing fix * changelog: postgresql distinct ordering fix * changelog: security fix public sharing bypass * changelog: add issue ref to postgresql fix * changelog: fix postgresql skills json compatibility * changelog: apply new format style to 0.8.1 entries * changelog: web search result count fix * changelog: metadata, document, crash fix * changelog: add channel user active status performance entry * changelog: add model and prompt list optimization entry * changelog: batch access control queries, channel status, model list optimization * changelog: user list, performance, deferred loading * Update CHANGELOG.md for 0.8.1 * Add emoji variation to Added section * Remove empty Changed section and finalize 0.8.1 changelog * changelog: arm, torch compatibility fix * changelog: update database migration warning format * changelog: ollama cloud, model naming fix * Add SCIM externalId entry and database migration warning to 0.8.1 * Fix: move web search to Added, restore 0.8.0 headers * Fix: SCIM above translations, 0.8.0 restored * Remove 0.8.1 migration warning, keep 0.8.0 original * changelog: direct model access control fix * changelog: add commit link to direct model access control fix * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * changelog: sqlite, cascade delete, database fix * changelog: responses, api, model-routing * Add PR and issue links to SCIM externalId changelog entry * Add commit link to Responses API entry, remove PR link from translation entry * changelog: reasoning traces, performance, browser * changelog: password, validation, regex * Update CHANGELOG.md * refac * refac: manual skill invocation * fix: task models issue * upd:i18n: Spanish Translation Update v.0.8.0 (open-webui#21427) ### Spanish Translation Update v.0.8.0 - Added new strings * refac: tool message handling * Update translation.json (open-webui#21441) * refac: explicit toggle builtin tools * refac Co-Authored-By: SpootyMcSpoot <[email protected]> * enh: preview image in file modal * refac * fix: disabled mcp display issue Co-Authored-By: Dario Ruellan <[email protected]> * refac * refac * refac * fix: preserve trailing slash in MCP server URLs (open-webui#21212) Stop trimming trailing slashes from MCP server URLs on save. Some MCP servers (e.g. Bitrix24) require a trailing slash; removing it triggers a 301 redirect that drops Authorization headers, resulting in 400 errors. The trailing-slash trim is now skipped when the connection type is 'mcp', while OpenAPI connections continue to have it stripped as before. Fixes open-webui#21179 * refac * chore: changelog (open-webui#21424) * changelog: oauth session error handling * changelog: task model selector validation fix * changelog: skill content handling * changelog: add Spanish and German translations * changelog: move skill content to Added section * changelog: tool call, validation fixes * changelog: tool call message preservation links * changelog: update per-model tool toggles entry with per-conversation chat toggle feature * changelog: tool-server, startup, initialization * changelog: remove empty Changed section * changelog: fix duplicate Fixed section * changelog: revert old entry, add new entry to 0.8.2 * changelog: move built-in tool toggles to Added section * changelog: update date to 2026-02-16 * changelog: resource handle cleanup, file descriptors, leak fix * changelog: image preview, file modal, modal enhancement * refac: styling * refac: styling * refac * refac * refac: styling * refac * refac * chore: format * refac: "tool_calls" finish reason support * chore: bump * doc: changelog * enh: renderMarkdownInPreviews * doc: changelog * chore: format * i18n: Add missing Russian (ru-RU) translations (open-webui#21453) * i18n: add missing Russian (ru-RU) translations * i18n: add translations for API Keys and Asc keys * fix: prevent scroll jump when editing large messages (open-webui#21402) Save and restore scroll positions around textarea auto-resize to avoid layout shifts. Use preventScroll on focus. * refac * refac * I18n: improve Chinese translation (open-webui#21460) * i18n: improve zh-CN translation * i18n: improve zh-TW translation * fix: gracefully handle missing functions when loading models (open-webui#21476) When models reference functions (via filterIds/actionIds) that no longer exist in the database, the /api/models endpoint crashes with a 500 error, preventing the UI from loading chats entirely. This can happen after upgrades when built-in functions are removed or when user-created functions are deleted while still referenced by models. Instead of raising an exception, log at INFO level and skip the missing function so the rest of the models load successfully. Fixes open-webui#21464 https://claude.ai/code/session_015JRM7m2bNeZPBBmV2Gv4Mj Co-authored-by: Claude <[email protected]> * Update Chat.svelte (open-webui#21479) * i18n: (pt-BR): add translations for newly added UI items + consistency pass (open-webui#21472) i18n: (pt-BR): add translations for newly added UI items + consistency pass * refac * refac * refac: styling * refac * refac * chore: changelog (open-webui#21474) * changelog: add model edit shortcut entry * changelog: add Chinese translation updates for 0.8.3 * changelog: fix USER_EMAIL template variable * changelog: add fix for missing function error handling in models endpoint * changelog: startup error handling, translation updates * changelog: PostgreSQL group query fix * refac * chore: Changelog updates (open-webui#21497) * changelog: add model edit shortcut entry * changelog: add Chinese translation updates for 0.8.3 * changelog: fix USER_EMAIL template variable * changelog: add fix for missing function error handling in models endpoint * changelog: startup error handling, translation updates * changelog: PostgreSQL group query fix * changelog: images, attachments, vision * changelog: model edit, image handling, user_email, groups, startup * changelog: image-edit, model-shortcut, general-improvements * changelog: image edit API background support * changelog: image API support, function error handling * refac * refac * refac * refac * refac * chore: format * chore: format * refac * refac * refac * refac * refac * refac * refac * refac * refac * refac * fix: prompts delete * refac * refac * Merge pull request open-webui#21485 from Classic298/claude/fix-mcp-ssl-check-0janH fix: mcp ssl check * fix: apply AIOHTTP_CLIENT_TIMEOUT to embeddings endpoint (open-webui#21558) * refac * Update translation.json (open-webui#21602) Typography issue correction Co-authored-by: Tim Baek <[email protected]> Co-authored-by: joaoback <[email protected]> * fix: clamp SCIM pagination args instead of rejecting them (open-webui#21577) RFC 7644 §3.4.2.4 specifies that out-of-range pagination values MUST be clamped, not rejected. The previous implementation used FastAPI Query constraints (ge=1, le=100) which caused a 422 response for values like startIndex=0 or count=9999 — violating the spec. For both /Users and /Groups: - startIndex < 1 is now treated as 1 (spec: "SHALL be interpreted as 1") - count < 0 is now treated as 0 (spec: "SHALL be interpreted as 0") - count > 100 is clamped to the server maximum of 100 Co-authored-by: Claude Sonnet 4.6 <[email protected]> * Optimize shared chats list to use column projection (open-webui#163) (open-webui#21614) The GET /chats/shared endpoint was loading full Chat rows including the entire conversation history JSON blob, only to discard it and return SharedChatResponse (id, title, share_id, timestamps). Now uses with_entities() to select only the 5 needed columns, avoiding deserialization of potentially large chat JSON for every shared chat. * refac * refac * refac * Update iframe sandbox attributes based on settings (open-webui#21529) Co-authored-by: :o <[email protected]> * i18n: pt-BR - add translations for newly added UI items + consistency pass (open-webui#21527) Translate all remaining untranslated strings to Brazilian Portuguese (pt-BR) Translated ~100 previously untranslated entries (empty "" values) across the Open WebUI i18n JSON file. Changes include: Translated UI labels, form fields, tooltips, and error messages Kept brand/product names unchanged where appropriate (e.g., Bing, Brave, Gemini, OpenAI, YouTube) Translated technical terms with context-appropriate Brazilian Portuguese equivalents (e.g., "Timeout" → "Tempo limite", "Config" → "Configuração", "Endpoint URL" → "URL do Endpoint") Added translations for search engine integrations (Kagi, Perplexity, SerpApi, Tavily, Yacy, Yandex, etc.) Translated plural forms for source retrieval messages (sources_one, sources_many, sources_other) No untranslated entries remain in the file. * i18n: improve Chinese translation (open-webui#21530) * refac * refac * refac * Update fi-FI translation.json (open-webui#21538) Added missing translations. * fix: respect BYPASS_ADMIN_ACCESS_CONTROL in file list/search endpoints (open-webui#21595) * Fix O(n²) performance in get_message_list by replacing insert(0) with append+reverse (open-webui#21588) Co-authored-by: Jordan <[email protected]> * fix: correct unpacking order of distances, documents, and metadatas in hybrid search query (open-webui#21562) Co-authored-by: Vasily Lebedev <[email protected]> * Query title column directly in get_chat_title_by_id instead of loading full chat (open-webui#157) (open-webui#21590) Previously loaded the entire ChatModel (including the full conversation JSON blob) just to extract the title string. Now queries only the Chat.title column directly, which is already a top-level DB column. * fix(i18n): correct French typo "Analtique" → "Analytique" (open-webui#21512) * Avoid loading full chat JSON blob for pinned/archived/shared list endpoints (open-webui#21591) Co-authored-by: Tim Baek <[email protected]> * refac * refac Co-Authored-By: Leandro Ygor Loli <[email protected]> * fix(chat): prevent stuck drop overlay when dragging outside window in firefox (open-webui#21664) * refac: oauth session management * refac * fix: resolve backend execution deadlock when syncing stats with cyclic chat history (open-webui#21681) * fix group search (open-webui#21691) * fix: gate model default features on global config and user permissions (open-webui#21690) fix: gate model default features on global config and user permissions If you disabled code interpreter globally and in user permissions but enabled it as a default feature on a model, the code interpreter pill still appeared in the chat input. Same issue for web search and image generation. The setDefaults function in Chat.svelte activated model default features based solely on the model's capability flag, ignoring whether the feature was globally enabled or allowed by user permissions. Added the same global config and user permission checks already used by the integrations menu visibility and the features object sent to the backend. * refac * feat: add sortable columns to groups admin panel (open-webui#21692) * feat: add sortable columns to groups admin panel Make the Group and Users column headers in the admin groups list clickable to sort groups alphabetically by name or numerically by member count. Clicking a column toggles ascending/descending order, indicated by a chevron icon. When no sort is active, the default API order (by updated_at) is preserved. * Update Groups.svelte * Update Groups.svelte * refac * refac * fix(model-selector): resolve virtual scroll bug when typing quickly (open-webui#21659) * refac * fix(ui): align profile dropdown items and prevent phantom synthetic drag clicks (open-webui#21699) * enh: RAG_EMBEDDING_CONCURRENT_REQUESTS * feat: scroll to rich ui once rendered (open-webui#21698) * Update Chat.svelte * Update Chat.svelte * refac * fix(backend): catch 404 http exceptions before generalized exception block in files router (open-webui#21687) * feat: add citation sources for fetch_url tool results (open-webui#21669) feat: add citation sources for fetch_url tool results URL fetches now produce clickable citation sources in the UI, matching the existing behavior of search_web and knowledge file tools. When a model calls fetch_url during native tool calling, the fetched URL appears as a citable source with a content preview, giving users full transparency into what pages the model referenced. * feat: Adding You.com as a web search provider (open-webui#21599) * Add ydc.py provider implementation * Add PersistentConfig entry for you.com * Add Youcom search function import * Update you.com configuration * Add you.com as a web search engine option in frontend * Add YOUCOM_API_KEY to main.py * perf: eliminate 2 redundant full chat deserialization on every message send (open-webui#21596) * perf: eliminate 2 redundant full chat deserialization on every message send (open-webui#162) Problem: Every message send triggered get_chat_by_id_and_user_id which loads the entire Chat row — including the potentially massive JSON blob containing the full conversation history — even when the caller only needed a simple yes/no ownership check or a single column value. Two call sites in the message-send hot path were doing this: 1. main.py ownership verification: loaded the entire chat object including all message history JSON, then checked `if chat is None`. The JSON blob was immediately discarded — only the existence of the row mattered. 2. middleware.py folder check: loaded the entire chat object including all message history JSON, then read only `chat.folder_id` — a plain column on the chat table that requires zero JSON parsing. Fix: - Added `chat_exists_by_id_and_user_id()`: uses SQL EXISTS subquery which returns a boolean without loading any row data. The database can satisfy this from the primary key index alone. - Added `get_chat_folder_id()`: queries only the `folder_id` column via `db.query(Chat.folder_id)`, which tells SQLAlchemy to SELECT only that single column instead of the entire row. Both new methods preserve the same error handling semantics (return False/None on exception) and user_id filtering (ownership check) as the original get_chat_by_id_and_user_id. Impact: - Best case (typical): eliminates deserializing 2 full chat JSON blobs per message send. For long conversations (hundreds of messages with tool calls, images, file attachments), this blob can be multiple megabytes. - Worst case: no regression — the new queries are strictly cheaper than the old ones (less data transferred, less Python object construction, no Pydantic model_validate overhead). - The 3 remaining full chat loads in process_chat_payload (load_messages_from_db, add_file_context, chat_image_generation_handler) are left untouched as they genuinely need the full history and require separate analysis. * Address maintainer feedback: rename method and inline call (open-webui#166) - Rename chat_exists_by_id_and_user_id -> is_chat_owner - Remove intermediate chat_owned variable; call is_chat_owner directly in if condition * enh: ENABLE_ADMIN_ANALYTICS * enh: OAUTH_GROUP_DEFAULT_SHARE * refac * refac * refac * refac * fix(ui): prevent drag-and-drop ghost cursors and text highlighting on admin and workspace navigation tabs (open-webui#21701) * refac * refac * fix: race condition in signup allows multiple admin accounts (open-webui#21631) The signup_handler function checks has_users() before inserting a new user and assigns the admin role based on that check. With multiple uvicorn workers, concurrent signup requests during first-user registration can all observe an empty user table before any insert completes, causing multiple accounts to receive the admin role. Fix: insert with the default role first, then check user count after the insert. Only promote to admin if this is the only user in the database. This eliminates the TOCTOU window between the check and the insert. * fix(ui): prevent text-selection ghost dragging on playground navigation tabs (open-webui#21704) * refac: groups ui * refac * fix(a11y): improve model selector accessibility with proper listbox/option pattern (open-webui#21706) - Replace incorrect aria-roledescription='model-item' with role='option' and aria-selected on ModelItem.svelte. The previous attribute was not a valid ARIA role description and provided no useful information to screen readers. - Add contextual aria-label to each model item button (e.g. 'Select GPT-4 model') instead of just the raw model name, making the action clear to screen reader users. - Add role='listbox' and aria-label='Available models' to the scrollable model list container in Selector.svelte so screen readers announce the container's purpose and navigate items correctly. - Make the model selector trigger button's aria-label dynamic: it now announces 'Selected model: GPT-4' when a model is selected, falling back to 'Select a model' when nothing is selected. - Add aria-label to the eject (unload) button in ModelItem.svelte so screen readers announce its purpose. - Add aria-label to the cancel download button in Selector.svelte with the specific model name being canceled. - Improve model profile image alt text from generic 'Model' to contextual '{{modelName}} profile image'. * fix(a11y): add aria-hidden to all decorative SVG icon components (open-webui#21705) Add aria-hidden='true' to 112 SVG icon components in src/lib/components/icons/ that were missing this attribute. Decorative icons that convey no semantic meaning should be hidden from the accessibility tree to prevent screen readers from attempting to read meaningless SVG markup (WCAG 1.1.1 Non-text Content, WCAG 4.1.2 Name, Role, Value). The remaining 60 icon files already had aria-hidden='true' set. All 172 icon components now consistently declare aria-hidden='true' on their root svg element. * refac * Update README.md (open-webui#21735) * I18n: improve Chinese translation (open-webui#21741) * i18n: improve zh-CN translation * i18n: improve zh-TW translation * fix(a11y): add aria-labels to chat core components (open-webui#21709) Add aria-labels to close, back, and action buttons across: - Controls/Controls.svelte: close chat controls button - ChatControls/Embeds.svelte: close embed button - Overview/Node.svelte: favorite toggle button - Overview/View.svelte: back and close overview buttons - ShortcutsModal.svelte: close button - ShareChatModal.svelte: close button - ToolServersModal.svelte: close button - Placeholder/FolderTitle.svelte: folder icon picker, folder options menu WCAG: 4.1.2 (Name, Role, Value) * fix(a11y): improve accessibility of top-level auth and onboarding components (open-webui#21710) Adds critical accessibility fixes across various app components: - auth/+page: provide alt text for logo, turn on screenReader support for password input, add aria-required, hide decorative SVGs from AT - AppSidebar: wrap navigation icons in a <nav> structure, provide ARIA labels for Home and Chat icons - s/[id]/+page: convert structural divs into semantically accurate h1 heading and time element, wrap message display in main region - OnBoarding: replace flawed aria-labelledby with direct aria-label on start button - NotificationToast: provide role='status' and aria-live='polite' for proper screen reader broadcasting - ChangelogModal: add required heading semantics for structure - AddFilesPlaceholder: provide heading element role for standalone text content - ImportModal: provide aria-label for close button Addresses WCAG 4.1.3, 1.1.1, 3.3.2, and 1.3.1. * fix(ui): replace static dropdown backgrounds with transparent mapping (open-webui#21728) * fix(ui): prevent avatar alt-text overlap on failed image loads (open-webui#21730) * fix(ui): hide clone button in model menu for models disabled by admins (open-webui#21724) * fix: reset taskIds and messageQueue on new chat (open-webui#21731) fix: reset taskIds and messageQueue on new chat Fixes a bug where clicking "New Chat" after sending a message would silently drop subsequent messages. The initNewChat function reset most chat state but did not clear taskIds or messageQueue, causing submitPrompt to queue messages indefinitely instead of sending them. * fix(a11y): enhance accessibility for admin user components (open-webui#21717) This commit adds aria-labels to the search inputs, select fields, action buttons, and close buttons on modals across the admin users layout and the site changelog modal for improved screen reader support. * fix(a11y): enhance accessibility for chat settings components (open-webui#21715) This commit adds aria-labels to the text inputs and textareas that previously lacked them, applies role=switch to inputs, and adds accessible titles to floating quick actions. * feat: convert admin settings menu tabs to native anchor tags for new-tab support (open-webui#21721) * docs: generate PR template for navigation drag glitch fixes * feat(ui): convert admin settings menu tabs to native anchor tags for new-tab support * fix(a11y): add aria-labels to chat message components (open-webui#21708) Add aria-labels, aria-expanded, and semantic improvements to: - RateComment: close button, rating scale, feedback textarea - Citations: toggle button with count, source item buttons - Source/SourceToken: contextual aria-labels for citation buttons - StatusHistory: toggle button with expanded state - WebSearchResults: descriptive favicon alt text - FollowUps: convert div to button element - RegenerateMenu: submit suggestion button - FloatingButtons: action buttons, input field, submit button - CitationModal: close button WCAG: 4.1.2 (Name, Role, Value), 2.1.1 (Keyboard), 1.1.1 (Non-text Content) * refac Co-Authored-By: Classic298 <[email protected]> * fix: model fallback routing for all model types and default model selection (open-webui#21736) fix: model fallback routing for all model types and default model selection Backend: When ENABLE_CUSTOM_MODEL_FALLBACK is active and a custom model's base model is unavailable, the fallback now swaps the model and form data to the configured default model directly. This ensures routing uses the fallback model's type (pipe, Ollama, or OpenAI) instead of the original model's type, which previously caused "Model not found" errors when the fallback was a different backend type. Frontend: Fixed default model selection in new chat initialization where the admin-configured default models were always overwritten by the first available model. The first-available fallback now only triggers when the configured defaults don't resolve to valid available models. * fix(a11y): add aria-labels and structural elements to workspace components (open-webui#21719) * fix: explicitly disable dragging and text selection inside dropdown menus (open-webui#21713) * fix(ui): remove select-none from move and pdf menu items to allow highlighting * fix(ui): explicitly disable dragging and text selection inside dropdown menus globally * refac * refac * refac * refac * feat: default model metadata & params * refac * refac: ollama str think support * refac * refac * refac * refac * refac * feat: add LOG_FORMAT=json for structured JSON logging (open-webui#21747) * feat: add LOG_FORMAT env var with JSON formatter for early logging Introduce LOG_FORMAT environment variable (set to "json" to enable). When active, logging.basicConfig() uses a JSONFormatter that outputs single-line JSON objects with fields: ts, level, msg, caller, error, stacktrace. This covers all log messages emitted during module imports before Loguru's start_logger() takes over. * feat: add JSON sink for Loguru when LOG_FORMAT=json Add _json_sink() as a Loguru sink function that writes single-line JSON to stdout. In start_logger(), conditionally use the JSON sink instead of the plain-text stdout_format when LOG_FORMAT is set to "json". * feat: suppress ASCII banner and fix alembic logging in JSON mode - Wrap the ASCII art banner print in main.py with a LOG_FORMAT != "json" guard so JSON output stays machine-parseable. - Skip alembic's fileConfig() call in migrations/env.py when LOG_FORMAT=json to prevent it from replacing the JSON log handlers installed during early startup. * refac * refac * refac * changelog: yeah (open-webui#21575) * changelog: add prompt enable/disable toggle entry * changelog: fix PostgreSQL workspace cloning * changelog: MCP SSL verification fix * changelog: mcp ssl, general improvements, french translations * changelog: add memory deletion and listing tools for agents * changelog: add embeddings and proxy timeout fix for PR open-webui#21558 * changelog: pip requirements toggle * changelog: fix commit references for memory and MCP entries * changelog: scim, parameter handling, rfc7644 * changelog: update iframe sandbox entry for clarity * changelog: shared chat optimization, translation updates * changelog: file access control respect fix * changelog: chat title query optimization, shared chat loading * changelog: hybrid search fix, Finnish translations * changelog: message list performance optimization * changelog: archived chats, pinned chats, loading optimization * changelog: knowledge-base-import, overwrite-flag, API-enhancement * changelog: message upsert and tag filtering optimizations * changelog: batch access grants, notes payload optimization * changelog: skill import, json support * changelog: add fix for imported items display issue * changelog: add Anthropic Messages API proxy support * changelog: WebSocket race condition fix for collaborative editing * 📝 * changelog: drag-drop, firefox, overlay fix * changelog: add multi-device OAuth sessions feature * changelog: cyclic chat history deadlock fix * changelog: group search visibility fix * changelog: model default feature permissions * changelog: admin groups sorting, notes optimization * changelog: model selector, virtual scroll, UI fix * changelog: user menu drag and click fixes * changelog: rich-ui, auto-scroll, ux * changelog: enhance Anthropic Messages API proxy with tool call support * changelog: embedding concurrency, knowledge import * changelog: add You.com web search provider (open-webui#21599) * changelog: admin analytics toggle * changelog: console log spam fix * changelog: fetch URL citation sources * changelog: message send optimization * changelog: oauth, group sharing, settings * changelog: admin nav drag fix (PR open-webui#21701) * changelog: signup race condition, security fix * changelog: playground, nav, drag * changelog: group description, sort dropdown * changelog: add model selector accessibility improvements * changelog: consolidate accessibility entries for PRs open-webui#21705 and open-webui#21706 * changelog: tools list performance optimization * changelog: accessibility, components, wcag * changelog: button accessibility labels, wcag compliance * changelog: Firefox avatar overflow fix * changelog: disabled model cloning prevention fix * changelog: dark mode select background fix * changelog: update date to 2026-02-22, consolidate accessibility entries * changelog: new chat message handling fix * changelog: accessibility, aria-labels, settings components * changelog: admin settings, tab navigation * changelog: scroll, messages, deletion * changelog: scroll, chat, message fixes * changelog: model fallback routing and default model selection fixes * changelog: remove duplicate scroll jumping fix from 0.8.3 * changelog: model visibility badges * changelog: prompt import fix * changelog: dropdown menu drag fix * changelog: add workspace accessibility improvements to UI accessibility entry * changelog: docker hub integration * changelog: global model defaults, admin settings * changelog: text file type detection fix * changelog: update date to 2026-02-23 * changelog: ollama reasoning effort fix * changelog: emoji deduplication in Fixed section * changelog: sql, warning-fix * changelog: add plaintext tool output display entry * fix(ui): allow empty LDAP Application DN value and password in General setting… (open-webui#21742) * Allow empty LDAP Application DN value and password in General settings form * fix(ui): use LDAP app_dn, app_dn_password with empty string instead of enforcing non-empty values * fix: payload tools handling * refac * fix(ui): make folder menu text non-highlightable (open-webui#21753) * refac * refac * refac * refac * refac * refac * feat(ui): update admin users and evaluations sidebars to leverage native anchor tags for robust new-tab link capabilities (open-webui#21723) * refac * refac * fix(ui): prevent highlighting of text in chat integrations menu (open-webui#21758) * fix(ui): prevent highlighting and dragging of text in admin settings menu link (open-webui#21761) * fix(ui): apply select-none to remaining dropdown menus globally to prevent text highlighting (open-webui#21763) * Chore: Changelog updates (open-webui#21754) * changelog: add prompt enable/disable toggle entry * changelog: fix PostgreSQL workspace cloning * changelog: MCP SSL verification fix * changelog: mcp ssl, general improvements, french translations * changelog: add memory deletion and listing tools for agents * changelog: add embeddings and proxy timeout fix for PR open-webui#21558 * changelog: pip requirements toggle * changelog: fix commit references for memory and MCP entries * changelog: scim, parameter handling, rfc7644 * changelog: update iframe sandbox entry for clarity * changelog: shared chat optimization, translation updates * changelog: file access control respect fix * changelog: chat title query optimization, shared chat loading * changelog: hybrid search fix, Finnish translations * changelog: message list performance optimization * changelog: archived chats, pinned chats, loading optimization * changelog: knowledge-base-import, overwrite-flag, API-enhancement * changelog: message upsert and tag filtering optimizations * changelog: batch access grants, notes payload optimization * changelog: skill import, json support * changelog: add fix for imported items display issue * changelog: add Anthropic Messages API proxy support * changelog: WebSocket race condition fix for collaborative editing * 📝 * changelog: drag-drop, firefox, overlay fix * changelog: add multi-device OAuth sessions feature * changelog: cyclic chat history deadlock fix * changelog: group search visibility fix * changelog: model default feature permissions * changelog: admin groups sorting, notes optimization * changelog: model selector, virtual scroll, UI fix * changelog: user menu drag and click fixes * changelog: rich-ui, auto-scroll, ux * changelog: enhance Anthropic Messages API proxy with tool call support * changelog: embedding concurrency, knowledge import * changelog: add You.com web search provider (open-webui#21599) * changelog: admin analytics toggle * changelog: console log spam fix * changelog: fetch URL citation sources * changelog: message send optimization * changelog: oauth, group sharing, settings * changelog: admin nav drag fix (PR open-webui#21701) * changelog: signup race condition, security fix * changelog: playground, nav, drag * changelog: group description, sort dropdown * changelog: add model selector accessibility improvements * changelog: consolidate accessibility entries for PRs open-webui#21705 and open-webui#21706 * changelog: tools list performance optimization * changelog: accessibility, components, wcag * changelog: button accessibility labels, wcag compliance * changelog: Firefox avatar overflow fix * changelog: disabled model cloning prevention fix * changelog: dark mode select background fix * changelog: update date to 2026-02-22, consolidate accessibility entries * changelog: new chat message handling fix * changelog: accessibility, aria-labels, settings components * changelog: admin settings, tab navigation * changelog: scroll, messages, deletion * changelog: scroll, chat, message fixes * changelog: model fallback routing and default model selection fixes * changelog: remove duplicate scroll jumping fix from 0.8.3 * changelog: model visibility badges * changelog: prompt import fix * changelog: dropdown menu drag fix * changelog: add workspace accessibility improvements to UI accessibility entry * changelog: docker hub integration * changelog: global model defaults, admin settings * changelog: text file type detection fix * changelog: update date to 2026-02-23 * changelog: ollama reasoning effort fix * changelog: emoji deduplication in Fixed section * changelog: sql, warning-fix * changelog: add plaintext tool output display entry * changelog: json, logging, format * changelog: RAG template mutation fix for sequential tool calls * changelog: analytics sorting, ldap authentication * changelog: API tools, LDAP fields, SQLAlchemy fixes * changelog: add folder menu fix, event call input masking, analytics sorting, LDAP fix, SQL warning fix * changelog: add prompt suggestions and banners moved entries * changelog: add prompt suggestions and banners moved to current version * changelog: improve prompt suggestions and banners moved entries * changelog: add hybrid search deduplication fix * refac * chore: format * refac * refac * feat: dictation toggle * refac * chore: bump * doc: changelog --------- Co-authored-by: Timothy Jaeryang Baek <[email protected]> Co-authored-by: Classic298 <[email protected]> Co-authored-by: Claude <[email protected]> Co-authored-by: Classic298 <[email protected]@> Co-authored-by: joaoback <[email protected]> Co-authored-by: G30 <[email protected]> Co-authored-by: EntropyYue <[email protected]> Co-authored-by: Juan Calderon-Perez <[email protected]> Co-authored-by: Taylor Wilsdon <[email protected]> Co-authored-by: _00_ <[email protected]> Co-authored-by: SpootyMcSpoot <[email protected]> Co-authored-by: Dario Ruellan <[email protected]> Co-authored-by: Varun Chawla <[email protected]> Co-authored-by: Shamil <[email protected]> Co-authored-by: Algorithm5838 <[email protected]> Co-authored-by: Shirasawa <[email protected]> Co-authored-by: Minwoo 'Charlie' Choi <[email protected]> Co-authored-by: Kungs-Fr <[email protected]> Co-authored-by: Patrick Monteith <[email protected]> Co-authored-by: :o <[email protected]> Co-authored-by: Kylapaallikko <[email protected]> Co-authored-by: Jordan <[email protected]> Co-authored-by: VasilyLebedev123 <[email protected]> Co-authored-by: Vasily Lebedev <[email protected]> Co-authored-by: fchevallieratecna <[email protected]> Co-authored-by: Leandro Ygor Loli <[email protected]> Co-authored-by: lazariv <[email protected]> Co-authored-by: theeggorchicken <[email protected]> Co-authored-by: Andrei Efanov <[email protected]> Co-authored-by: Johann Frei <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request Checklist
Note to first-time contributors: Please open a discussion post in Discussions to discuss your idea/fix with the community before creating a pull request, and describe your changes before submitting a pull request.
This is to ensure large feature PRs are discussed with the community first, before starting work on it. If the community does not want this feature or it is not relevant for Open WebUI as a project, it can be identified in the discussion before working on the feature and submitting the PR.
Before submitting, make sure you've checked the following:
devbranch. PRs targetingmainwill be immediately closed.devto ensure no unrelated commits (e.g. frommain) are included. Push updates to the existing PR branch instead of closing and reopening.Changelog Entry
Description
Contributor License Agreement
By submitting this pull request, I confirm that I have read and fully agree to the Contributor License Agreement (CLA), and I am providing my contributions under its terms.
Note
Deleting the CLA section will lead to immediate closure of your PR and it will not be merged in.