v0.11.1
Added 4
- Human in the loop tool approval where administrators can enable requiring manual approval for tool execution in conversations
- Built-in tool allowing models to pause and ask up to three multiple-choice questions before continuing, with questions persisting across reloads
- Agents can now display terminal files directly in replies with preview and download button instead of file paths
- Interface setting to choose whether displayed files open in the reply or in the files pane
Changed 5
- Streaming rebuilt to send only new text pieces instead of resending entire messages, reducing data transmission by up to 1000x on very long replies
- In-progress replies are now kept on server on Redis-backed deployments, allowing continuation after page refresh
- Removed assembly of disabled log text throughout the application to improve performance of message sending, file operations, searches, and admin pages
- Model list lookups for title generation, tag suggestions, and autocomplete now fetch in a single request to improve responsiveness on busy instances
- Log export now prepares each line once instead of twice for deployments with ENABLE_OTEL and ENABLE_OTEL_LOGS enabled
From open-webui
Added
- 🚦 Human in the loop tool approval. Where an administrator has turned it on, you can switch a conversation from letting tools run freely to being asked first, so a model that wants to use a tool stops and waits for you to allow or deny it, one call at a time in a saved conversation, by button or by keyboard shortcut, with your choice remembered for this conversation and for future ones, switching back to running freely releasing anything already waiting, and automations, channel replies, and temporary chats unaffected. Commit, Commit, Commit, Commit, Commit, Commit, Commit, Commit, Commit, Commit
- 🙋♂️ Models that can ask you a question. A new built-in tool lets a model pause and put up to three multiple-choice questions to you before continuing, with room to type your own answer instead, and the question survives a reload in a saved conversation, so you can come back and answer it later rather than losing the conversation. Commit, Commit, Commit, Commit, Commit, Commit, Commit, Commit
- 🖇 Agents can now display terminal files directly. A model can now show a file it made in a terminal directly in its reply, with a preview and a download button, instead of describing a path that led nowhere when clicked, and a new interface setting chooses whether these open in the reply or in the files pane. Commit, Commit, Commit, #27650
- 📶 Streaming rebuilt from the ground up. A reply now streams as small pieces of new text instead of resending the whole message so far with every update, so the data sent over a reply grows with its length rather than with its length squared, which on a server with many people chatting at once means far less processor time spent encoding, passing, and decoding those updates, far less load and memory on the shared cache that carries them between instances, and far less work in your browser, which no longer takes in the whole reply again and redraws the parts of it that have not changed on every update, cutting the data sent and the server work spent appending to a message by up to 1000x on a very long reply, and a reply still in progress is now kept aside on the server, so reopening the conversation after a refresh picks it up where it is rather than showing a blank message, on deployments backed by Redis. Commit, Commit, Commit, Commit
- 🪵 Much faster throughout. Hundreds of places across the application no longer assemble detailed log text that is switched off and thrown away unread, so sending messages, uploading and indexing files, running searches, signing in, and loading admin pages all get that time back, with the largest gains on busy servers, in long conversations, and on chats that draw from a large knowledge base. #27834, #27837
- 🚀 Faster model list lookups. Title generation, tag suggestions, autocomplete, and other background steps of a chat turn now fetch the model list in one go, which keeps other people's responses flowing on busy Redis-backed instances with many models. #27821
- 🛰️ Cheaper log export. Deployments that export their logs to a telemetry collector, with "ENABLE_OTEL" and "ENABLE_OTEL_LOGS" both set, now prepare each exported line once instead of twice, which matters more than it used to now that log text is only assembled when something will actually read it. #27840
- 📇 Faster permission checks on large instances. Working out which groups you belong to is now a direct lookup rather than a scan of every membership on the server, so chats and the admin user list stay quick as an organization grows. #27822
- ⚙️ Much faster JSON handling. Saving and opening chats, reading settings, returning results from built-in tools, streaming replies, signing in and signing up, working out your permissions, and reading stored chunk details during knowledge base searches on Valkey and Oracle vector storage are all handled much faster across the application when the "ENABLE_ORJSON" option is turned on. Commit, #28396, #27841, #27807, #27805, #27813
- 📤 Much faster outbound requests. Conversations and embedding batches sent to Ollama and Anthropic models are packaged for delivery much faster, which is most noticeable in long chats when the "ENABLE_ORJSON" option is turned on. #27811, #27810
- 🐍 Much faster code interpreter output. Printed output and generated images from code run in chat appear much faster when the "ENABLE_ORJSON" option is turned on. #27812
- 🪶 Lighter page loads. Several small requests the interface makes on every page load, along with a few administrative ones, no longer set up database access they never used, which took several times longer than the rest of the request put together. #28178
- ♻️ One less read per message. Sending a message no longer loads the whole conversation from the database twice over, which mattered most in long chats where that record is largest. #28809
- 🏁 Faster skills on large instances. Opening the skills list, or sending a message that uses one, no longer checks every skill on the instance one at a time, so both are far quicker where many skills exist and most of them are not yours. #28798
- 🩻 Faster tools on large instances. Listing or exporting tools no longer checks every tool on the instance one at a time, so the integrations menu and the tools workspace open faster where many exist. Commit
- 🧊 Faster file access checks. Checking whether you may reach a file no longer walks every workspace model you can see looking for it, so opening a folder of files, downloading one, or retrieving from one is much quicker on instances with many models. #28802
- 🧱 Faster folder listings. Listing your folders now works out your group memberships once for the whole listing rather than again for every item in every folder. #28810
- 🧼 Less work per update in a long chat. Each update saved while a reply streams no longer re-examines the entire conversation, only the part being added, so the cost of an update stops growing with the length of the chat. #28820
- 🗃 Cheaper attaching of sources and files to a reply. Adding a source, file, or embedded item to a reply now reads just that one field rather than rebuilding the whole conversation to find it, which on a two hundred message chat is around 3.1 ms per item down to 0.65 ms, and no longer grows with the length of the conversation. Commit, Commit
- 🚏 Faster workspace model lookups. Working out which workspace models you may edit no longer loads every model on the instance and discards most of them, which also speeds up exporting models and the file access checks that relied on it. #28795
- 📮 Faster handing off a streaming reply. Passing a reply in progress between instances now writes it once rather than converting it back and forth and scanning it for characters that only matter elsewhere, which on a large non-English conversation took most of the time spent on each write. #28833
- 🥵 Constant load on an idle instance. An instance sitting idle no longer works through every chat you have once a second looking for timers that are due, which on a large history kept about a quarter of a processor core busy doing nothing and could exhaust memory until the application was killed. #27663, #27622, #27745
- 📍 Sidebar folders fetched once. Refreshing the sidebar now asks for your folders once rather than three times, on page load and on every action that refreshes it. #28662, #28661
- 💤 Far fewer writes just from being signed in. Recording that someone is online now writes at most once a minute for each person rather than on every single request, where an open tab alone caused two write transactions a minute before anyone touched anything. #28177, #28165
- 🛰 Less overhead on every request. The layers each request passes through before it is handled are now one instead of five, which also removes a quarter of that cost from every piece of a streamed reply on instances that set security headers. Commit, #28171
- 🎏 Turning off compression of live updates. A new "UVICORN_WS_PER_MESSAGE_DEFLATE" setting stops the server compressing every live update it sends, which costs processor time on each one for almost no saving now that a reply streams as small pieces; compression stays on unless it is turned off. #28613
- 🌡 Faster chat list and unread counts. Opening the sidebar, and the unread markers on folders, no longer read through your whole chat history to produce a short list, which on an instance with 15000 chats took 2 to 4 seconds. #27663, #27622, #27745
- 🥁 Long replies no longer slow as they grow. A long reply is no longer re-examined from the beginning for reasoning and code blocks on every piece that arrives, so the work stops growing with the length of the reply, which on a long reply is around 190x less time spent on it. #28861
- 💽 Faster saving of long chats. A chat is now written to the database in one go rather than one message at a time, so saving a long conversation is much quicker and puts far less strain on the database, and saving one where nothing has changed writes nothing at all. #28806
- 📦 Faster loading of shared folders. Folders shared with you now load in a couple of queries rather than one for each folder and each owner, so the list appears sooner for anyone with many of them. #28804
- ⚡ Uninterrupted chat during knowledge search. Responses now keep streaming for everyone on the server while knowledge base searches run, instead of pausing until each search finishes. #27824
- 🔍 Smarter chat search. Searching your chats now finds conversations containing all of your words in any order rather than only the exact phrase you typed, with exact matches still listed first, and the preview snippet points at whichever word it found. Commit
- ⌨️ Model switching from the message box. Typing "/model" now tells you which model you are on, switching to another by name with "/model" followed by its id, or opening the model picker straight from the slash menu without reaching for the mouse. Commit, Commit
- 📎 Sending while attachments upload. Sending a message before its files have finished uploading now queues it and sends it automatically once they are ready, instead of refusing with an error, and each queued message shows the progress of its attachments. Commit, Commit, #28381, #28380
- 📖 Opening a document at the right page. A model showing you a PDF, Word document, or slide deck from a terminal can now open it at a particular page or slide, so a reply that cites something on page 76 can put that page in front of you. Commit, Commit, Commit
- 💼 Attachments that go straight to a terminal. A terminal connection can now be set to receive files attached in chat into its own working directory rather than into the conversation, which also means files can be attached while using a model that cannot read them itself. Commit, Commit, Commit, Commit
- 🔦 Searching files in the terminal browser. The file browser now has a search box that finds files by name and by what is inside them, and opening a result takes you to the matching line. Commit
- 🌲 Browsing files as a tree. The terminal file browser now expands folders in place rather than only navigating into them, remembers what you had open, offers a right-click menu, can show hidden files, sorts by size, expands a folder you hover over while dragging something onto it, and moves a whole selection in one go when you drop it. Commit, Commit
- 🧰 Managing models on more servers. Administrators can now download, load, and unload models on llama.cpp and LM Studio connections from the manage models dialog, remove them on llama.cpp, and start a download straight from the model picker's search box, alongside the Ollama support that was already there. Commit, Commit, Commit, Commit, #28766
- 📢 Automations that post to a channel. An automation can now be pointed at a channel instead of a chat, so its scheduled run appears as a message there for everyone to see, chosen from a new destination picker that also covers folders. Commit
- 🙋 Mentioning people in a channel. Typing an at sign in a channel now lists that channel's own members first, before everyone else on the server, so the people you are likely to mean are at the top. Commit, Commit, #28883
- 🔗 Attaching any link. Pasting a link into a chat or a knowledge base now works out what is behind it, downloading a document or image as a real attachment rather than treating everything as a web page to be read as text. Commit
- 🔎 Searching tools and skills in chat. The integrations menu now has a search box for tools and for skills, so a long list can be narrowed by name instead of scrolled through. #26709, Commit, #28807, #28812
- 🧭 More from the message box. The slash menu now offers settings and, in a new chat, a toggle for temporary chat, alongside the commands that were already there. Commit
- 🚨 Being told when a file fails to process. A file that cannot be processed for a knowledge base now raises a notification naming the file and what went wrong, and keeps that reason on the file, instead of quietly being marked as failed. #27666, #6311, Commit
- 🔬 Zoom controls on previewed images. An image opened in the file browser now has zoom in, zoom out, and a reset button showing the current zoom, and pinching, scrolling, and holding a modifier key while scrolling now zoom and pan as they do elsewhere. Commit, Commit, Commit, Commit
- 🗂️ Recognisable file icons. The terminal file browser now marks each file with an icon for its type, so code, images, archives, documents, and configuration files can be told apart at a glance instead of sharing one generic page icon. Commit, Commit, Commit
- 📽️ Truer PowerPoint previews. Slide previews now render tables, charts, connectors, gradients, theme colours, bullets, fonts, and text alignment far closer to the original, and the viewer lets you move between slides with the arrow keys or the scroll wheel while the thumbnail strip follows along. Commit, Commit, Commit, Commit, Commit, Commit, Commit, Commit, Commit
- 📄 Faithful Word document previews. Word documents now open as proper pages with headers, footers, footnotes, and embedded images intact, and can be zoomed, rather than being flattened into plain formatted text. Commit, Commit
- 🗝 Deleting your API key. An API key can now be revoked outright from your account settings, where the only way to retire one was to replace it with a new one. #28874, Commit
- 🎛️ Settings for the task model. Administrators can now set the generation parameters used for background work such as titles, tags, follow-ups, search queries, and conversation summaries, either from the admin panel or through "TASK_MODEL_PARAMS", instead of those requests always using a fixed token limit that could cut a summary short. #27604, Commit, Commit
- 🎚️ Default interface settings for everyone. Administrators can now set system-wide defaults for the interface options in Settings, either from the admin panel or through "DEFAULT_INTERFACE_SETTINGS", with each person's own choices still taking precedence and anything left untouched shown as inherited and kept in step with later changes to the defaults. Commit, Commit, Commit, Commit, Commit, Commit, Commit, Commit, Commit
- 🔠 Interface scaling throughout. The UI Scale setting and your browser's own text size now resize the whole interface consistently, including the sidebar, menus, dialogs, and file browser, rather than leaving parts of it fixed. Commit, Commit, Commit, Commit
- 🏷️ Named writing blocks. When a model wraps a draft such as an email in a writing block, the block is now titled with its subject and shows the recipient beside it, rather than every block reading simply as Writing. #28280, #28198
- 🤝 Files for delegated tasks. A task handed to a sub-agent can now carry the attachments it needs, so an image or document from your conversation reaches the sub-agent instead of arriving as a file reference it cannot open and may answer about anyway. Commit, #28213
- 📟 Terminal availability and scope. Administrators can now decide for each managed terminal whether it appears in chats and in automations at all, and whether everyone shares a single workspace or each chat or automation gets its own, with per chat terminals waiting until the conversation has been saved. Commit
- 🔒 Read-only files in the terminal browser. Files and folders you are not allowed to change are now labelled read-only, with uploading, editing, renaming, moving, and deleting turned off for them rather than failing at the moment you try. Commit
- 🔐 Terminals that use your own login. Managed terminals configured for session authentication now authenticate the terminal connection with your own token, where it previously sent no credentials at all. Commit
- 🎟 Setting up a tool server that uses OAuth. Adding one is now easier to get right: the connection dialog can authorize the account from the dialog itself, the check button tests the sign-in details rather than reporting a connection failure that was never going to succeed without them, and it is now labelled for what it does rather than suggesting it verifies the whole connection. Commit, #28552
- 🪤 Control over what embedded pages may do. Two new interface settings decide whether pages shown inside a chat, such as an artifact or an HTML preview, may run scripts and start downloads. Commit, #28924, Commit
- 🗄 Keeping files removed from a knowledge base. A new "ENABLE_KNOWLEDGE_FILE_RETENTION" setting keeps the stored file and its search data when a file is taken out of a knowledge base, rather than deleting them. Commit
- 🧾 CSV shape in retrieval. Turning on "ENABLE_RAG_CSV_SUMMARY" adds a short line naming the row count, data row count, column count, and column names of a CSV file to what the model sees, giving it the shape of the table alongside its contents. Commit
- 🔭 OpenSERP in the search settings. OpenSERP can now be picked as the web search engine in the admin panel, with a field for its address, rather than only being configurable through the environment. #27594, #27592
- 🪧 Profile changes from single sign-on. A name, email address, or picture updated from an identity provider at sign-in now raises an event naming what changed, and the rest of the session uses the updated record rather than a stale copy. Commit
- 📯 Group changes from single sign-on. Group memberships added or removed when someone signs in through an identity provider, and groups created automatically along the way, now raise the same events as the equivalent change made by an administrator or over directory sync. #27657
- 🔔 Sign-in and sign-out events for single sign-on. Signing in through an identity provider now raises the same login event that signing in with a password does, and signing out says which provider the session came from, so a function can set up or tidy up an account in another system when someone arrives or leaves. #27619, #27613
- 🪛 Naming background worker threads. A new "THREAD_POOL_THREAD_NAME_PREFIX" setting labels the threads that background work runs in, so they can be told apart when reading a profile or a thread dump. Commit
- 📙 OpenDocument files in a temporary chat. A text document, spreadsheet, or presentation from an office suite that uses the OpenDocument format now has its text read out in the browser when attached to a temporary chat, where the model was handed the raw archive and answered that it could not read the file. Commit, #28906
- 🌍 Pointing Tavily somewhere else. A new "TAVILY_API_BASE_URL" setting sends Tavily searches and page fetches to a different address, for instances that reach the internet only through a gateway of their own or that use a compatible service. Commit, #28701
- 🪟 Honest OAuth settings. When single sign-on settings come from the environment rather than being saved in the application, the admin panel now shows them as read-only with a note naming the setting that controls this, instead of accepting edits that were silently discarded on the next restart. #28276
- 📏 Widening the chat controls pane. The controls pane can now be dragged as wide as you like, where it stopped at a fixed limit regardless of screen size. Commit
- 📱 Smoother sidebar on mobile. The sidebar now follows your finger as you swipe it open or closed, responds to a quick flick, dims the page behind it as it moves, and gives every chat row a menu button you can reach without a hover you cannot perform on a touchscreen. Commit, Commit, Commit, Commit, Commit, Commit, Commit
- 🚪 Sidebar that stays put. Opening and closing the sidebar is now a smooth transition that keeps your chat list loaded, instead of rebuilding the list each time. Commit, Commit, Commit, Commit, Commit
- 👁️ Turning off chat previews. A new setting under Settings and Interface lets you switch off the preview card that appears when you hover a chat in the sidebar, useful for a quieter sidebar, for sharing your screen, or on a slow connection. #27632, #27639
- ☑️ Checkboxes beside their labels. In the model editor and the admin model defaults, each capability, feature, and tool checkbox now sits directly in front of its own label instead of at the far edge of its column, where it could look like it belonged to the next one, and the label itself can be clicked to toggle it. #27788, #27771, Commit, Commit
- ✍️ Typing cursor while responding. A blinking cursor now marks where the reply is being written, from the moment you send your message until generation finishes, in place of the previous loading placeholder. Commit
- ✒️ Underlined text. Underlined text now appears underlined in a reply instead of showing the markup around it, and underlining is kept when you edit in a rich text box rather than being dropped. Commit, #26904
- 📥 Adding group members from a file. Administrators can now add many people to a group at once by uploading a CSV of names and email addresses, with a template to download and a message naming any row whose address does not match an account. Commit
- 📑 Apache Tika 4 support. Administrators extracting document text with Tika can now choose which server version they run, from Admin Settings under Documents or through "TIKA_SERVER_VERSION", where only Tika 3 was understood before. Commit, #28939
- 💓 Tunable heartbeat for live updates. A new "WEBSOCKET_HEARTBEAT_INTERVAL" setting controls how often each open tab checks in with the server, where it was fixed at 30 seconds, so a large deployment can cut background traffic that no one asked for. Commit, #28166
- ⌛ Expiring abandoned reply state. A new "REDIS_RESPONSE_STREAM_TTL" setting expires the saved state of a reply that never finished, so a server killed mid-answer no longer leaves that data behind for good. Commit
- 🖨️ File and image detail parts on API requests. A request sent to the OpenAI-compatible endpoint carrying an image detail level or a file part in its message content now forwards both to providers that use the Responses API, where they were dropped, while documents attached inside Open WebUI are unaffected because those still go through knowledge retrieval. Commit
- 🧺 Leaner stored document metadata. Bulky extraction details such as page layouts, tables and detected languages are no longer kept alongside a document in the vector store, and a new "RAG_METADATA_MAX_VALUE_CHARS" setting drops any remaining oversized value, falling back to the configured upload size limit so a document that expands enormously while being read cannot exhaust a server's memory. Commit, Commit, #29025
- 💨 No filter work on installs without filters. A completed message on an install with no filter functions and no pipeline filters, which is the default, no longer rebuilds the whole conversation and ships it to the browser as an event nothing acts on. Commit
- 📂 Opening a file in a knowledge base. A file listed in a knowledge base can now be opened and read straight from that list, where the name was shown but nothing happened when it was clicked. Commit, #28086
- 🧵 Cheaper saving of a reply as it streams. The resume snapshot taken on every piece of a streamed reply no longer rebuilds the whole answer each time, so the cost of a save stops growing with the length of the reply. #28821
- 📀 Less repeated work setting up built-in tools. Every chat request no longer rebuilds a fresh copy of each built-in tool's definition from scratch, which was paid once per tool on every message. #28860
- 🕹️ Control over what a terminal port preview may reach. A new interface setting decides whether a previewed port runs with access to same-origin browser APIs, so you can lock a preview out of them on installs where previews serve content you do not fully trust. Commit
- ♿ Improved UI accessibility. A closed sidebar is no longer reachable by keyboard or announced by screen readers, the tool call blocks in a response can now be expanded with the keyboard, the buttons that normally appear on hover, such as message actions, file removal, and chat menus, now appear when you reach them with the keyboard as well, whatever you have tabbed to is marked with a clear outline throughout the application, and the rows in the integrations menu now tell a screen reader whether each tool or feature is switched on. Commit, Commit, Commit, Commit, Commit, Commit, #27667, #17150
- 🔄 General improvements. Various improvements were implemented across the application to enhance performance, stability, and security.
- 🌐 Translation updates. Faroese was added, and translations for Slovenian, Hungarian, Finnish, Korean, Portuguese (Brazil), Catalan, and French were enhanced and expanded.
Fixed
- 🛡️ Security Advisory: This release includes security and access-control fixes. We recommend updating production deployments at your earliest convenience. Not all security fixes in this version may be enumerated in the fixed section. Some may be withheld for a short time to give administrators time to upgrade. Advisories
- 🛂 Knowledge search reaching past what you may read. Searching knowledge bases now applies the list of collections you are allowed to open, where that restriction was handed to the vector store and silently discarded, so results could include material from knowledge bases you have no access to. Commit
- 💣 Documents that unpack far beyond their size. A Word, Excel, PowerPoint, OpenDocument or EPUB file that expands to far more than it stores is now rejected before it is read, where one could previously be used to exhaust a server's memory. Commit
- ✂️ Long replies cut off partway. A single oversized piece of a streamed reply, such as a long reasoning trace or a turn carrying many tool calls, no longer ends the answer early with a misleading error about byte counts, which affected every default installation. #28114, #25664
- 🚧 Web address checks that could be skipped. The fetchable-address test and the operator's web fetch filter list now run on every outgoing request, where a proxied or already-open connection could bypass them and a filter entry written as an address range silently matched nothing at all. #27823
- 🧑💻 Code execution reachable through a tag in a reply. On installs using native function calling, the older path that runs code found inside a tag in the model's reply is no longer active alongside the built-in tool, so code execution happens only through an explicit tool call. #29024
- ⌚ Recurrence rules that could tie up the server. How often an automation repeats is now taken from the rule the scheduler actually parsed rather than from the text of the rule, so a crafted rule can no longer disagree with what gets scheduled and walk the server through an unbounded run of occurrences, and a rule carrying a time zone on its start date now schedules instead of erroring. Commit
- 🗝️ Changing a password now ends other sessions. Changing your password, or an administrator resetting it for you, now stops every device that was already signed in, where they had stayed signed in on the old password until their session expired on its own, up to four weeks by default; the device making the change is signed out too and asked to sign in again, and this requires Redis, without which nothing can be revoked and a warning is now logged saying so. #28725, #28647
- 🧬 Workspace models shadowing a real one. Someone without administrator rights can no longer create, import, or edit a workspace model so that it takes over the identity of a model served by a connected provider, where doing so would have changed what everyone else got when they picked that model. Commit
- 🌳 Folders disappearing when moved into themselves. Moving a folder inside one of its own subfolders is now refused, where it was accepted and made that folder and everything in it vanish from the sidebar with no way to bring it back, while leaving the server walking the loop endlessly and querying the database as it went, which could exhaust a worker and its memory; any folder already in that state is returned to the top level. #28748
- 🧨 Searching a knowledge base with a costly pattern. A search pattern written so that it expands enormously before it even runs is now refused, where it could tie up the server; ordinary patterns are unaffected. Commit, #28284
- 💧 Attaching a very large file from a link. A file fetched from a link is now written to disk as it arrives and stops at the configured size limit, where the whole thing was held in memory first with no limit applied, so a large enough file could exhaust the server; a download that fails partway no longer leaves the partial file behind. #28945
- ⛓ Deleting one knowledge base removing a shared connection. Deleting an external knowledge base now leaves its connection in place while other knowledge bases still use it, and only an administrator removing the last one clears it, where any user deleting theirs took the connection away from everyone. #28113
- 📡 Intermittent connection failures. Requests to model providers and to services on the same network no longer fail intermittently with name lookup errors, often surfacing as a misleading model not found message, because addresses are resolved through the system again by default, with the faster resolver still available through "AIOHTTP_CLIENT_ASYNC_DNS_RESOLVER". #28242, #28013, #28215
- 🗯️ Losing the conversation with memory on. With the memory tool enabled, the model can see the earlier messages in your conversation again, instead of answering the second message as though the first had never been sent. #28400
- 👻 Vanishing responses. Replies from Responses-API providers that report an empty output at the end of a stream no longer disappear the moment generation finishes, leaving an empty message in their place. #27800, #27789
- 📥 Queued messages disappearing. Messages waiting to be sent are put back in the queue if sending them fails, rather than vanishing without being sent. Commit
- 🧵 Replies cut short mid-stream. A reply no longer breaks off part way through when a provider sends the pieces of its response in an unexpected order, which had left the answer truncated and skipped the filters that run once a message finishes. #28312
- 🧷 Replies not carried into the next turn. With providers that skip parts of the streaming sequence, the finished reply is now taken from the completed message, so it stays available as context for your next question and the citations that arrived with it are no longer dropped. #28310
- 🌊 Replies arriving in oversized pieces. Very large streamed pieces no longer break the response on default settings, where the reader that splits them safely only ran when a chunk size limit was configured. Commit
- 🩹 Signing in after a long-delayed upgrade. Accounts on instances that were upgraded from a version older than 0.6.41 to 0.9.6 or newer can sign in again, where an upgrade step had written their single sign-on identity in a form the application could not read afterwards, and a repair step corrects the affected accounts on startup. #28107, #28101, Commit
- 🔑 Signing in with some identity providers. Logging in through a provider that adds its own vendor-specific information to the header of the sign-in token now completes, rather than failing at the final step with a message claiming the email or password was wrong. #28065, #28062
- 🔌 Role changes taking effect at once. Changing someone's role now ends their live sessions no matter how the change was made, whether by a directory sync, an identity provider, a trusted header, or deleting the account, so permissions from their old role cannot linger, and their browser reconnects on its own. Commit
- 🛑 Memory permission being respected. Taking away someone's memory permission now also stops their stored memories being added to the context of their conversations, which one path had continued doing regardless. #27668
- 🔍 Listing a single connection's models. Asking for the models or version of one particular connection is now restricted to administrators, and a request naming a specific backend is checked against the models that backend actually serves even where the access control bypass is turned on. Commit
- ⚖️ Sharing defaults matching what was configured. On instances upgraded from older versions, public sharing of tools and notes no longer shows as switched on in the admin panel, and saving any unrelated permission no longer grants everyone a capability that was never enabled. #27716, #27715
- 🗂️ Folder permissions when starting a chat. Starting a conversation filed into a folder now checks that you are allowed to write to that folder, a check the message sending path had been skipping, and every place a chat can be filed now treats ownership, shared access, and unknown folders the same way. #28366
- 🪧 Clearer attachment failures. A link that cannot be read now says so and names the link, and a YouTube video whose transcript is refused explains why and points at the proxy setting that exists for it, instead of both being reported as a knowledge base error. #28362, #28361
- 🔎 Chat search finding recent messages. Searching your chats now looks inside the messages of current conversations on default installations, where it had only been reading an older storage format and missing their content entirely. Commit
- 🧭 Your place in a compacted chat. Opening a conversation whose history has been compacted now takes you to its most recent message instead of leaving you parked on the summary, and updates to an existing message no longer move your place in the conversation. Commit
- 🖥️ Chats with a personal terminal. Sending a message with a terminal you added yourself under Settings selected no longer fails with a terminal unavailable error, which had blocked those chats since 0.11.0. #27621, Commit, Commit
- 📆 Default date for new events. Creating a calendar event now starts on today's date rather than tomorrow's when you open the form in the evening, or yesterday's when you open it early in the morning. #27779, #27778
- 🗓️ Recurring event times. Repeating calendar events now show at the time you set them for instead of being worked out in the server's time zone and shifted by the gap between the two. #27774, Commit
- 🧩 Chats during model list refreshes. On direct connections, background work such as title and tag generation no longer fails or runs against a mix of old and new model entries while the model list is being refreshed. #27821
- 🎛️ Chat Controls staying put. Hovering a chat in the sidebar whose preview contains an artifact no longer forces the Chat Controls pane open and fills it with that artifact, over the chat you currently have open. #27773, #27772
- 📨 Reliable streaming with unusual characters. Responses containing any of three rare invisible line break characters no longer arrive split or broken when the "ENABLE_ORJSON" option is turned on. #27819
- 🧮 JSON options honoured again. Options passed to the shared JSON helper are no longer silently ignored when the "ENABLE_ORJSON" option is turned on, falling back to the standard encoder that supports them. Commit
- 🚫 Duplicate models in lists. Adding a model that is already on a connection's allowed list is now rejected instead of quietly adding it a second time, the arena picker no longer offers models you have already chosen, and existing duplicates are cleaned up the next time the list is saved. #28251, #28249
- 📁 Dragging chats into shared folders. A shared folder you can write to now highlights and accepts a dropped chat, while one you only have read access to no longer offers itself as a drop target for an action that could only fail. Commit, #28261
- ⏰ Listing automations through chat. Asking a model to list your automations without naming a folder now returns every automation you have, instead of only the ones that sit outside a folder. Commit
- 🧠 Faster follow-ups with memory enabled. The memories handed to the model now appear in a stable order from one message to the next, so servers that reuse their work between turns no longer reprocess the whole conversation each time you reply. #28292, Commit, Commit
- 🎯 Custom model parameters combining. Setting a custom parameter on a model no longer silently discards every custom parameter defined in the global defaults, and a value sent directly in an API request is no longer overwritten by the model's saved settings. Commit, #28241
- 👥 Sharing with people already added. The access picker no longer offers people and groups that already have access, and the Users heading no longer appears above an empty list. Commit, #28253
- 🔧 Full tool parameter descriptions. A tool whose parameter description runs over several lines now passes the whole description to the model instead of only its first line. Commit
- 📝 Notes saved in an unexpected shape. A note whose content was stored as structured data rather than text no longer breaks the notes page for everything else, and opens with that content shown as a formatted code block. Commit, #28222
- 💬 Direct messages after an account is deleted. A direct message conversation no longer counts a deleted account among its members, and opening a direct message with someone finds the existing conversation instead of starting a second one alongside it. Commit, #28257
- 🫥 Deactivating a model. Turning a model off no longer removes the wrong entry from the model list, or fails the list outright and leaves the model picker empty for everyone until the model is turned back on. Commit, #28202
- 💭 Readable errors on chat actions. When moving, renaming, or otherwise changing a chat fails, the message explaining why now appears in place of an unhelpful object placeholder. #28260, #28259
- 🪪 Authorship in shared chats. A chat shared with you now shows the name and picture of whoever wrote it, in the message list and in the overview panel, rather than crediting the messages to you. #28274, #28273
- 🖇️ Adding terminals over plain connections. Saving a terminal connection now works when the interface is served without HTTPS, where the dialog would sit there doing nothing because the browser withholds the tool used to generate its identifier. Commit, #28148
- 🗃️ openGauss vector storage. Deployments using openGauss for vector storage no longer fail the moment they touch it. #27838
- 🎚️ ColBERT reranker startup. Loading a ColBERT reranker now names the model in the log rather than printing a logging error and a traceback in its place. #27838
- 🖼️ Images that no longer exist. A message whose image file has been deleted now shows a small unavailable placeholder that cannot be opened, rather than a broken image that spilled the whole reply text into the picture frame and still opened full screen. #27730, #27728, Commit
- 🛂 Connecting external accounts. Authorizing a tool's external account now completes only for the person who started it, rather than for whoever happens to return with the authorization, and signing out clears the session it relies on. Commit
- 🪟 Starting up on Windows. The Windows start script now creates the secret key it needs on a fresh installation, instead of printing a run of file not found messages and then refusing to start, and it copes with an installation path that contains spaces. #28061, #28060
- 🕸️ Overlapping branches in the overview. Branch nodes in a chat's overview keep a clear gap between them when the interface is scaled up, rather than sitting on top of one another. #27995, #27994
- 🗑️ Delete offered only when allowed. The chat deletion controls in the sidebar, the chat menu, search, archived chats, and data controls no longer appear for people whose permissions do not allow deleting, where using them produced an access denied error. #27714, #27713
- 🍴 Fork offered only when allowed. The fork action and the fork command no longer appear for people whose chat import permission is turned off, where using them produced an access denied error. #27711, #27692
- ↕️ Expand button in the message box. The button that enlarges the message box no longer sits on top of a tagged model's dismiss button or the first attached file, and stays reachable in long prompts. #27676, #26736
- 🔆 Regenerate in high contrast mode. With high contrast mode on, the regenerate button now stays visible on earlier replies instead of appearing only when you hover over them. #27644, #27638
- ✂️ Clipped icons and avatars. The terminal icon beside the message box and the profile picture in account settings are no longer shaved flat along their left edge. #27691, #27690
- 🪄 Merged responses after a reload. Merging the answers from several models now works on a conversation you have reopened, instead of the merging model reporting that the other responses were empty. #27673, #26962
- 🔢 Token counts for background chats. Conversations started by automations, timers, sub-agents, and channels now report their token usage like any other chat, rather than arriving without it even when the model is set up to provide it. #27661, #27653
- 📐 Settings on tall screens. The settings window now grows with the height of your display instead of stopping short and making you scroll inside it while space sits unused above and below. #27615, #27614
- 🖱️ Sections opening by accident. Folders, collapsible sections, and tool call blocks now open and close only when you click them, rather than also reacting when you release the mouse over them after dragging or selecting text. Commit
- 🔁 Rebuilding knowledge base vectors. Rebuilding the vectors for a knowledge base now also rebuilds them for each file it contains, so attaching a single file afterwards finds its content instead of quietly returning nothing and letting the model answer from thin air. #28106, Commit, Commit
- 📌 Attaching a chat shared with you. Attaching a conversation that was shared with you, directly or through a shared folder, now brings its content along instead of quietly attaching nothing. Commit
- 🧲 The page staying still when typing. Returning focus to the message box no longer scrolls the conversation, so switching chats, running a command, or picking something from a menu leaves your place on screen alone. Commit
- 📷 Round profile pictures on narrow screens. Profile pictures in the admin user list and other lists no longer squash into ovals of differing widths when the window is narrow. #28000, #27999
- 🎙️ Voice mode in the notes editor. The voice mode button is no longer offered in the chat embedded in a note, where it does not apply. Commit, Commit
- ⏳ Analytics stuck loading. Choosing a custom date range in analytics without picking dates yet no longer leaves the tab spinning forever, including after leaving and coming back to it. #28125, Commit
- 🧑🤝🧑 Owner avatars on shared chats. The picture beside a chat someone shared with you now loads, and falls back to the default image if it cannot, rather than leaving a blank gap when the interface and the server are on different addresses. #28272, #28271
- 🎨 Image generation and web search staying switched off. Turning either off now takes effect at once on every path: sessions opened beforehand can no longer produce images or run searches, an image request no longer reaches the provider on a model using the older tool-calling method, the entry disappears from the integrations menu right away, and an active marker beside the message box no longer lingers after its feature is withdrawn. #27759, #27758, #26842, #27669
- 📰 Attached pages reaching the model. The text pulled from an attached web page or YouTube video now actually reaches the model, rather than arriving empty so the reply had nothing to work from, and opening the source to check no longer fails. #28378, Commit
- 🌐 Tavily page fetching. Reading a web page with Tavily selected as the loader works again, having failed on every attempt since 0.10.0. #27636, #27602
- 🗒️ Reply box in threads. The reply box in a channel thread now stays at the bottom of the panel while you scroll back through the replies, instead of scrolling out of sight with them. #27768, #27767
- 🎹 Model picker shortcut. The keyboard shortcut for opening the model picker works again, and a link to a chat naming a model you do not have still opens the picker with that name filled in. Commit
- ⌨️ Reaching the download options by keyboard. In the model picker, arrowing past the last result now moves through the options to fetch that model from each server that can supply it, so they can be chosen with the keyboard instead of only by clicking. Commit, Commit
- 📂 Opening a folder in the sidebar. Selecting a folder now refreshes just that folder's chats rather than rebuilding the whole folder tree, and a folder that is empty or still loading says so instead of showing nothing. Commit, Commit
- ⏲️ Changing an automation through chat. Asking a model to change one thing about an automation no longer moves it out of its folder or drops its model when the model fills those fields in blank instead of omitting them. Commit
- 🔂 Automations that run a set number of times. An automation asked to run a limited number of times is now rejected unless it says when to start counting from, rather than being accepted and then running indefinitely. #27781, #27780
- 📅 Editing a calendar event through chat. Asking a model to change one thing about an event, such as its title, no longer fails or wipes the details you did not mention. #27777, #27776
- 🧹 Session cleanup on multi-instance setups. The instance doing the periodic session cleanup now keeps its claim on that job alive between passes, so an idle deployment stops logging a renewal warning every two minutes and the claim no longer lapses for half of every cycle. Commit, #27762
- 🏠 Starting folder in the file browser. Reopening the file browser now keeps the folder you were in, instead of the breadcrumb losing its starting point and jumping you elsewhere. Commit
- 🩺 Repairing default model settings. Instances whose stored default and pinned model settings had been written in the wrong shape are corrected on startup, so those defaults take effect again. Commit
- 🧽 Cleaner conversation history for the model. Internal bookkeeping attached to your messages, such as attachment records and token counts, is no longer sent to the model along with the conversation. Commit
- 🙈 Needless request from the model picker. Opening the model picker as a non-administrator no longer fires a request to an administrator-only settings endpoint that was always refused. Commit
- ⏹️ Stopping a reply that is waiting. The stop button now ends a reply that is sitting waiting for you, such as one paused on a tool approval, rather than leaving the conversation stuck part way through. Commit
- 🏷️ Folder names with unusual characters. Naming a folder is no longer refused because another folder's name happens to be similar, and a name ending in a backslash no longer fails outright on PostgreSQL, because names are now compared exactly rather than treated as a search pattern. #28695, #28694
- 🤔 Reasoning carried back to Ollama. A model's earlier thinking is now passed back to Ollama in its own native field rather than pasted into the message as tagged text, so reasoning models keep their train of thought across turns. Commit
- 📎 Default pinned models taking effect. Changing the default pinned models now reaches people who have never chosen their own, where simply having opened the interface once was enough to freeze the list they first saw, and reordering a pin no longer moves the wrong one or reopens the sidebar section afterwards. #28069, #28067
- ✏️ Editing other people's channel messages. Asking a model to work on a message in a channel now only applies to your own messages, where write access to the channel had been enough to reach anyone's. #28631
- 🍪 Signed-in tool servers. A tool server that relies on your session now receives the credentials belonging to its own connection, rather than whichever were most recently prepared. #28630
- 🏗️ Editing a folder from its page. Renaming a folder, changing its icon, creating a subfolder, or deleting it from the folder's own page now updates the sidebar straight away, instead of leaving the old name and icon there, and the new subfolder missing, until a reload. Commit, Commit, #28692, #28690
- 📣 Long channel names in the sidebar. A channel with a long name no longer squeezes its own menu button out of the row. Commit, #28671, #28670
- 📬 Mark as unread in chat search. Marking a chat unread from the search dialog now works and updates the sidebar, where the menu entry looked normal but did nothing at all. #28136, #28135
- ⬆️ Scroll to top on the first click. In a long chat where older messages had not been loaded yet, one click of scroll to top now reaches the first message instead of stopping short and needing a second. #28659, #28658
- 🔘 Double bullets in the release notes. Each entry in the what's new dialog shows a single bullet again, rather than two sitting at different heights. #28676, #28675
- 📚 Knowledge search and shared files in chat. A model searching your knowledge bases or reading a file shared with you through a group now works, where it had failed since 0.11.0 and quietly answered as though the knowledge were empty, affecting instances that forward user details to their embedding service and, for shared files, every instance regardless of settings. #27642, #27641
- 🔖 Skill identifiers that cannot be reached. Creating a skill whose identifier contains a character that is not allowed in a web address is now refused outright, rather than accepted and then permanently impossible to open, edit, turn off, delete, or recreate. #27660, #27655
- 🔤 Model names on connections with a prefix. A connection that adds a prefix to its model names now strips it before sending a request through the responses endpoint, where the prefixed name was passed on and rejected as unknown. #28575, #28574
- 🔓 Turning on open sharing. The open sharing permission can now be switched on in the default user permissions, where saving appeared to work but the setting was discarded and came back off. #27609, #27607
- 🖌️ White boxes behind model icons. Model icons with a transparent background no longer sit on a white square in the admin models list, matching how they already appeared everywhere else. #27612, #27611
- 🪞 Matching the right account at sign-in. Looking up an account by its identity provider details now matches the exact value, where the stored details were searched as loose text and a value contained within another's could be matched instead. #28624
- 🔄 Syncing a model catalogue more than once. Syncing models now updates the ones that already exist, where any repeat of a previous sync silently did nothing at all while still reporting success. #28036, #28033
- 🕰️ Saving a calendar event without a date. Creating or editing an event with the date cleared now asks for one, where it was sent anyway, refused by the server, and reported as an unreadable error. Commit, #28133
- 🔗 Deleting a message in a looping chat. Deleting a message no longer hangs when the conversation contains a cycle in its reply structure. #28035
- 🫀 Scheduled work stopping without warning. The routine that runs automations and calendar alerts can no longer be discarded while the application is running, which had silently stopped them firing with nothing reported, and it now stops cleanly on shutdown. #28053, #28052
- 🔋 Session and usage records left uncleared. The routines that clear out stale sessions and finished model usage can no longer be discarded while the application is running, so those records stop accumulating unnoticed, and both now stop cleanly on shutdown. #28053, #28052
- ⚗️ Reasoning carried between turns. A model's earlier thinking is now recognised from providers that report it in their own nested field, and reasoning that cannot be sent back without a signature is left out rather than being passed on and rejected. Commit
- 🛎️ Losing all your settings. Your interface settings are no longer wiped by a session that failed to load them, which could happen with no action on your part and cleared everything from your theme to your model parameters; saving now changes only the settings you actually changed, and a session that cannot load them tells you instead of carrying on as though you had none. #27766, Commit
- 🖲️ Losing the collapsed sidebar. With the sidebar collapsed, opening a chat no longer pushes the narrow sidebar strip off the edge of the screen, which left no way to reopen the sidebar short of shrinking the window to phone size. #28501, #28500
- 🧯 Timers that fail without saying so. A timer whose reply cannot be generated, such as one set against a model that has since been removed, is now recorded as failed with the reason, instead of being marked as completed while the reply never arrives. #27785, #27783
- 🖊️ Message buttons in channels. The buttons that appear when you hover a channel message now sit above the message rather than over its content, so they can be clicked on a message that starts with a code block or a table, and so the code and table controls stay clickable too. #27737, #27736
- 🔡 Searching for non-English tags and text. Searching workspace models by tag, or prompts and automations by their contents, now finds entries containing characters outside the English alphabet, where roughly half were missed depending on which settings were in force when each one was saved. #28399
- 🔭 Searching the calendar without an end date. Asking a model to search your calendar without naming an end date now works on PostgreSQL, where the open-ended range was too large for the database to accept and the search failed outright. Commit, #27717
- 🫧 Attachments replaced by a loading dot. Pinning a channel message, or otherwise updating one, no longer replaces its attachment with a loading indicator that never resolves until you reload or leave the channel. Commit, #27734, #27731
- 🛠️ Rebuilding empty server lists on every request. An instance with no tool servers or no terminal servers configured no longer rebuilds that empty list on every request that needs it. Commit, #28568
- 🪫 Errors logged for a cache that was simply empty. A shared cache that has not been filled yet no longer logs an error suggesting its stored value is broken. Commit, #28568
- ⚓ Starting up as a non-root user. Deployments that run the container as a non-root user, such as Kubernetes setups using runAsNonRoot, start again, where a bundled speech model file that only root could read had stopped them since 0.11.0, and a bundled text corpus is now stored somewhere a non-root user can reach. #27651, Commit, #28866
- 📋 Finding notes shared read only. A note shared publicly for reading now appears in the read only view of your notes, where it was readable by anyone with the link but listed nowhere at all. #27637, #27487
- 🫂 Signing in from another application. Signing in through an application that exchanges a token from your identity provider now applies your role and group memberships the same way signing in through the browser does, and an account whose provider sends no role keeps the one it has rather than being reset to the default. Commit, Commit
- 🗄️ Empty models section in the sidebar. The models section no longer appears with nothing in it when every pinned model has since been removed, renamed, or hidden. #27634, #27633
- 🚧 The files pane reopening by itself. With a terminal selected, closing the files pane now keeps it closed, where saving any setting reopened it, including something as incidental as picking an emoji for a folder. #28693, #28691, Commit
- 🚰 Watching file processing tying up the database. Waiting for a file or a knowledge base to finish processing no longer holds a database connection open for as long as the page is watching, which on busy instances could use up every available connection and leave the rest of the application unable to reach the database. #28183
- 🗜️ Embedding settings for other providers. Saving your embedding settings now writes only the provider you have selected, where it also overwrote the address and key stored for the other two, losing them if their fields were not filled in. Commit
- ↔️ Connectors in the side-by-side overview. With the conversation overview laid out left to right, the lines between messages now join at the sides rather than the top and bottom, so they no longer cut across the boxes. Commit
- 💫 Thinking indicator with the fade turned off. Turning off the fade effect for streaming text no longer hides the thinking indicator and its spinner, which had made a reasoning model look as though it had already finished from the first moment it started. #28559, Commit
- 🈳 Conversations compacted too early on llama.cpp. A conversation served by llama.cpp is no longer shortened at roughly half the size you configured, where its cached input was counted twice, so a chat showing 39,000 tokens was treated as 77,000 against a 70,000 limit. #28590, Commit
- ◻️ Settings tabs spilling past the corner. Scrolling the list of tabs in settings no longer paints a tab or part of an icon across the dialog's rounded bottom corner, where it appeared to sit outside the dialog. #27617, #27616
- 🎰 Settings for a switched-off function. A function that has been turned off no longer offers its per-user settings, and saving them is refused, where doing so loaded the function's code and stored settings that had no effect. Commit
- 🗃 Shared folders reordering themselves. The list of folders shared with you now keeps a consistent order, where on PostgreSQL renaming a folder could shuffle the ones beside it. #28804
- 📜 System prompt repeated after a tool call. On models served by a pipe or manifold, the system prompt is no longer added again each time a tool runs, where it built up one extra copy per round and was sent to the provider that way. #28739, #28736
- 🔕 Calendar reminders stopping for everyone. A single event whose reminder time was stored as something other than a number no longer stops reminders being sent, for that event or for anyone else's, and falls back to the usual reminder window instead. #28790
- 🗨 Attached conversations reaching the model. A conversation attached to your message is now listed among its attachments, where it was left out entirely and the model was never told it was there. #28788
- ↔ Dragging a side panel closed. Dragging the chat controls, the note chat, or a channel thread panel closed by its edge no longer floods the browser console with errors and leaves stray handlers behind, and the divider can now be moved with the arrow keys once focused. #28759, Commit
- 🎫 Saving a message with unusual characters on PostgreSQL. A message carrying characters PostgreSQL will not store outside its text no longer fails to save, where those characters were cleaned from the conversation but passed through raw to the separate message record. #28820
- 🔲 Removing an item in the model editor. Unticking a tool, skill, action, or filter no longer leaves the next one in the list looking unticked while it is still selected, needing two clicks to remove and passing the same confusion down the list each time. #28837, #28832
- 📉 Usage figures drifting upward on clustered setups. The routine that clears out finished model usage no longer stops for good across the whole cluster after a brief interruption, which had left the usage figures counting models nobody was using and grew the work every disconnection had to do. #28834
- 🔇 Voice mode staying silent with reasoning models. Voice mode now speaks when the emoji option is on and the model behind it reports its answer as thinking rather than text, where the whole reply went unspoken and nothing reached the speech service at all. #28724
- 🏷 Tags on a chat shared with you. Opening a chat shared with you, or one in a shared folder, no longer fails to load its tags, and an administrator opening someone else's chat now sees the tags that chat actually carries. Commit, #28767
- 🔻 Message box controls in a narrow panel. Narrowing the note chat panel, or squeezing the chat with a wide controls pane, no longer hides the attach and integrations buttons behind the model name or pushes the send button outside the box; the model name is shortened to make room instead. #28912, #28911
- ⌛ Replies that are all thinking and no answer. A reply from a provider using the responses format that ends while the model is still in its reasoning, with no answer text after it, now finishes normally instead of failing the whole turn and leaving an unreadable error in place of the reply. #28872, #28871
- 📃 Word and PowerPoint previews overflowing. Previewing one of these files now keeps the document inside its frame, with the zoom and slide controls staying put rather than scrolling away, and a presentation opens on its current slide instead of below the visible area. #28878, #28877
- 🎞 Workspace models in the admin models list. Workspace models appear in the admin models list again, so they can be ordered, set as the default, and pinned for everyone; choosing one opens its own editor, where it opened the base model editor and could strip the model's base model, turning it into something else. Commit, #27702
- ⌨ Errors after sending a long message. With prompt autocompletion on, sending or clearing a message of several paragraphs within a second of typing no longer throws an error in the browser console. #28824, #28823
- ❌ Tool calls that failed looking successful. A tool call that returned an error is now marked as failed with a red cross rather than a green tick, so a reply built on a failed call is easier to spot. Commit, #28016
- 🗜 Download links in a cited source doing nothing. A link in a citation shown as formatted content now downloads the file when clicked, where it silently did nothing at all. Commit, #28924
- 🗳 Web searches failing without saying why. A web search that fails now explains itself instead of returning nothing at all, which most often happens when a search engine has been selected without its key being configured. #28942
- ✅ Checklists in notes. A checklist in a note now previews and downloads as a proper checklist, where each item carried a stray second pair of brackets and its text began two lines below the box. #27671, #26067
- 🧿 Shortening a conversation with the wrong model. Choosing to shorten long conversations with the model you are chatting with now does that, where it used the configured task model instead on any instance that has one. Commit, #27603
- 🖥 Stopping a reply after the shared cache restarts. Stopping a reply now keeps working across a cluster after the shared cache restarts or its connection drops, where the part that carries a stop between instances gave up for good and silently, and only restarting the application brought it back. Commit, #28909
- 📼 Attached links to media and archives. Attaching a link that leads to something other than a web page, such as a video or an archive, now reads it as the file it is rather than trying to treat it as text. Commit
- 🗒 Editing a workflow from settings. Opening the code editor for a ComfyUI workflow from the images settings now brings it to the front, where it opened behind the settings dialog and could not be reached at all. #27648, #27647
…