open-webui v0.9.3 版本更新介绍
发布日期: 2026-05-09
版本号: v0.9.3
本次更新带来了语音模式静音控制、提示列表与聊天历史加载速度提升、对话菜单新增删除与滚动至顶部功能、日历创建流程优化、模型卸载控制、健康检查响应改进、运行时参数调整面板等新特性,同时修复了后台代码执行稳定性、语音录制兼容性、任务生成可靠性、MCP工具调用响应、任务状态恢复、日历与知识库管理、流式令牌分析、共享链接处理、系统提示编辑滚动、嵌入模型解析、PCM音频播放、Windows PostgreSQL启动、PDF文本搜索、Android密码自动填充、多Worker工具更新一致性、配置导入与Redis同步等大量问题。此外,还包括数据库架构迁移(需提前备份并同步更新所有实例)、登出接口改为POST请求以及多语言翻译增强。
更新内容 (中文)
新增功能
- 🔇 语音模式静音控制:语音模式现包含专用静音开关(快捷键"M")及助手播放后自动取消静音功能,可在不离开通话覆盖层的情况下防止背景噪音意外干扰。提交,#23832
- 🚀 更快的提示词列表加载:提示词及提示词标签页面现针对非管理员用户显著提升加载速度,即使存在大型提示词库,也可通过单次数据库查询高效筛选可访问提示词。#24288,#24258
- ⚡ 更快的聊天记录加载:聊天记录映射现可在可用时从规范化消息记录加载,减少大型对话的开销,同时保留旧版聊天的回退行为。提交,#23159
- 🗑️ 从对话菜单删除:现可直接在聊天菜单中删除当前对话(含确认步骤),无需在完整聊天列表中搜索即可更快完成清理。提交,#24329
- ⬆️ 滚动至顶部快捷方式:长对话在离开顶部时现包含聊天菜单中的"滚动至顶部"操作,可更快跳转至聊天起始位置。提交,#24133
- 📅 日历创建流程:用户现可通过专用模态窗口和日历侧边栏的快速添加操作创建日历,从而在日历工作区中更快完成设置。提交,提交
- 🧭 统一的模型卸载控制:管理员现可在支持的供应商间通过模型选择器卸载运行中的模型,并为Ollama及llama.cpp模型显示加载状态指示器。提交
- ⚡ 健康检查响应能力:健康及就绪探针现避免阻塞数据库调用,并在探针路径跳过同步会话提交处理,从而提升响应能力并减少数据库压力期间的误报未就绪状态转换。#24380,#24384
- 🎛️ 演练场控制面板:演练场现包含专用控制开关,可在不更改模型级默认设置的情况下,按聊天运行调整温度及相关设置。提交,#24103
- 🎙️ 语音转文本文件扩展名控制:管理员现可配置语音转文本上传接受的音频文件扩展名,以帮助实施更安全、更可预测的上传策略。提交
- 📷 记忆化通话摄像头选择:语音通话覆盖层现会记住您上次选择的摄像头,并在可用时自动恢复,因此无需每次启动语音模式时重新选择。提交,#24416
- 👥 用户组提示词变量:系统及模板提示词现支持"{{USER_GROUPS}}“变量,该变量可扩展为用户的组成员身份,从而使提示词能够自动适应基于角色或访问权限的上下文。提交,#24462
- 🔐 公开聊天共享权限控制:管理员现可通过专用权限设置控制是否允许用户创建可公开共享的聊天。提交
- 🔐 头像图片转发控制:管理员现可通过"ENABLE_PROFILE_IMAGE_URL_FORWARDING"设置禁用外部头像图片URL转发,以防止浏览器元数据泄露至第三方服务器。#24420
- 🏷️ 动态页眉模板变量:管理员现可在自定义连接及工具服务器页眉中使用聊天、消息及用户模板变量,以便每个请求可自动携带对话上下文。提交,#24164
- 🛂 MCP OAuth服务器URL设置:静态OAuth工具服务器配置现可定义独立的OAuth服务器URL,使发现及客户端注册在认证端点与工具服务器URL分离托管时仍可正常工作。提交,#24164,#24216
- ⚡ 更快的内存查询性能:每用户内存查找及删除操作现可更快地执行大规模处理,因为内存用户过滤器已针对现有及新安装建立索引。提交,#23836
- 🚀 更智能的函数依赖安装:函数依赖项若已预装且未更改现将跳过安装,从而减少首次加载延迟及启动后的重复包安装操作。提交,#24166
- 🔎 Brave LLM上下文网络搜索:管理员现可选择Brave LLM上下文作为网络搜索提供商,以检索更丰富的上下文段落,并支持可配置的上下文令牌预算。提交,#24120
- 🗂️ 开放终端日期排序:开放终端现包含名称及日期排序控制,支持目录优先排序及修改时间可见性,以加快文件浏览速度。提交,#24425
- 🎤 语音模式提示词开关:管理员现可从界面设置中显式启用或禁用语音模式自定义提示词行为,从而更精细地控制语音回复的指导方式。提交
- 🧮 LaTeX复制快捷方式:现可点击渲染的LaTeX表达式以将原始公式复制到剪贴板,便于在聊天外重复使用方程式。提交,#24244
- ✨ 更流畅的富文本编辑:消息编辑器现将格式化工具栏刷新工作延迟到下一动画帧执行,以减少输入卡顿并保持格式化控件的准确性。提交,#24013
- 🖼️ 竞技场模型头像图片:竞技场模型现可可靠显示配置的头像图片,而非回退到默认图标。提交,#24412
- 🔄 可替换工具嵌入更新:管道和工具现可通过在嵌入事件上传递
replace标志,就地覆盖先前发出的富UI嵌入,从而实现无需堆叠重复条目的实时仪表板和进度面板更新。 - ✏️ 助手回复编辑与续写:现可从专用编辑器视图编辑并重构助手输出项(包括推理块、工具调用和文本内容),并可从编辑状态继续生成,以便模型接收完整的先前上下文。
- 🔄 通用改进:应用程序中实施了多项改进以增强性能、稳定性和安全性。
- 🌐 翻译更新:中文、加泰罗尼亚语、菲律宾语和韩语的翻译得到增强和扩展。
修复问题
- 🧵 后台代码执行可靠性:在运行期间切换对话或浏览器标签页时,代码执行不再无限期挂起;断开连接或非活动会话现会因清晰的超时错误而失败,而非无尽处理。提交,#24089
- 🎙️ 语音录制MIME回退支持:语音录制现会尝试更广泛的浏览器支持音频格式,并清晰重置停滞的音频播放,从而提升麦克风捕获可靠性,解决之前录制无法启动的问题。提交,#24162
- 🧠 直连任务生成可靠性:标题、标签、后续问题、表情符号、查询及相关任务生成端点现可在聊天使用直连模型时正常工作,不再出现模型未找到错误。提交,提交,#24092
- 🔧 参数化URL工具就绪性:新聊天现会等待模型默认设置完成应用后再自动提交,从而防止可能遗漏已配置外部工具的过早请求。提交,#24176
- 🚦 MCP清理响应可靠性:成功的本机MCP工具调用现不再在清理期间被500"未返回响应"错误替换,因此有效聊天响应现可一致返回。#24105
- 🧵 活动任务状态恢复:聊天输入现不再在响应完成后被不相关的后台任务阻塞,中断的助手回复现可更可靠地标记为完成。提交,#23264
- 📌 按用户记录置顶行为:置顶笔记现按用户独立记录,而非使用共享的笔记级标志,因此一个人的置顶更改现不再影响其他人。提交
- 🧱 自定义页眉值强制转换:自定义页眉值现会在请求发送前转换为文本,从而防止配置非文本值时导致的请求失败。提交,#24164
- 🔗 HTTP共享链接复制回退:复制链接现可通过基于选择的回退机制在HTTP部署上可靠工作,当安全剪贴板API不可用时即可生效。提交,#24135
- 🧵 重新生成加载锁恢复:聊天现不再因重新生成失败而陷入永久加载状态,因为无效的消息树引用会在渲染前得到修复。提交,#24424
- 📸 完整聊天图像捕获:下载的聊天快照现可通过捕获期间的可见性覆盖和布局时序改进,更可靠地包含所有消息。提交,提交,#24088
- 🗓️ 日历删除锁处理:日历删除现可通过在日历和事件移除后的单独事务中撤销日历访问权限,来避免SQLite写锁争用。提交
- 🧩 过滤器与内部工具共存:内部工具现可在过滤器添加供应商原生工具时保持可用,因此过滤器添加的工具现不再在请求处理期间替换内置工具集。提交,#24237
- 🛠️ OpenAPI工具规范兼容性:OpenAPI工具集成现已更安全地处理null或非操作路径条目,并一致解析路径级参数,从而防止崩溃并提升工具执行在不完美OpenAPI规范下的可靠性。提交,提交,#24376
- 🧰 OpenAPI工具模式解析:OpenAPI工具导入现会忽略非方法路径项目字段,并正确解析嵌套组合模式,从而防止兼容规范出现无效工具解析。提交,#23254
- 🌍 网络搜索代理兼容性:DuckDuckGo搜索现已更可靠地遵循配置的代理环境,且trust-env行为默认为启用,从而使代理的网络加载不再意外失败。提交,#23810
- 🧾 最终Markdown渲染刷新:流式Markdown现会在生成完成时强制执行即时最终解析,从而防止陈旧或部分渲染的最终输出。提交,#24088
- 🛡️ Webhook头像URL验证:频道Webhook头像图片URL现会在保存前进行验证,从而防止接受无效或不安全的头像URL。#24370
- 📝 系统提示词编辑器滚动稳定性:编辑大型系统提示词现不再将页面跳转回顶部,因此您可以继续编辑长模型提示词而不会丢失位置。提交,#23999
- 🔎 知识内容搜索匹配:知识文件搜索现可同时匹配文件标题和文件内容,因此即使关键字不在文件名中,相关文件也更易找到。提交,#24297
- ⚡ 更快的提示词标签加载:提示词标签过滤器现可通过直接获取可访问标签(避免每提示词权限检查和不必要的提示词数据加载),显著提升非管理员用户的加载速度。#24287,#24258
- 🧾 引用溢出标记可读性:引用溢出标记现可在单个紧凑气泡中保持多位数计数的可读性,防止附加多个来源时出现换行或拥挤显示。提交,#24391
- 🌐 Yandex结果解析保护:Yandex网络搜索现不再因单个结果中缺少某些XML字段而失败,因此有效搜索响应现可持续返回可用来源,而非降级为无结果。提交,#24243
- 🎧 更安全的语音转录上传:空或失败的语音转换现会以清晰错误被拒绝,而非继续作为格式错误的音频处理,从而减少因损坏或近乎为空的录音导致的失败转录尝试。提交
- 🎚️ 更安全的分块语音转文本处理:分块转录现会在未配置外部语音转文本引擎时限制工作线程并发度,从而减少因过度并行的本地处理导致的失败转录行为。提交
- 📈 导入聊天分析覆盖范围:导入的ChatGPT对话现携带正确的模型和时间戳元数据,并可靠地将导入消息写入分析支持的存储,因此导入的聊天现可在管理分析总量和模型使用视图中正确反映。提交,#24263
- 📎 知识集合持久化:通过聊天输入选择器选择的知识集合现可在重新加载和聊天切换后保持附加,因此附加的上下文现不再在会话间消失。提交,#24142
- 🧹 嵌入模型名称修剪:在文档设置中输入的嵌入模型名称现会自动修剪周围空白字符,从而防止因意外尾随空格导致的静默嵌入失败。提交,#24090
- 🔊 PCM TTS播放兼容性:作为PCM返回的文本转语音音频现会在传输前转换为MP3,因此语音播放现可与返回原始PCM音频的提供商正常工作。提交,#24143
- 🪟 Windows PostgreSQL启动兼容性:使用PostgreSQL的Windows pip安装现可通过使用兼容的事件循环策略(而非默认的Proactor循环),可靠地使用psycopg异步启动。提交,#24152
- ⏱️ MCP OAuth超时控制:MCP工具服务器连接的OAuth令牌交换现已遵循可配置的客户端超时设置,从而减少与较慢提供商的回调失败。提交,#24138
- 📄 PDF文本搜索恢复:PDF预览现已包含适当的文本层,因此浏览器文本选择和页内查找搜索可恢复正常工作,而非仅渲染图像式页面。提交,#24149
- 🔑 Android密码自动填充支持:密码输入字段现会公开预期的字段名称元数据,从而提升Android登录页面密码管理器自动填充的可靠性。提交,#24137
- 🎤 非阻塞语音转文本处理:语音转文本转录现不再在实时转录和上传音频文件处理期间阻塞服务器事件循环,因此其他用户现可在并发负载下继续使用聊天和实时连接。#24338,#24379,#24169
- 🌐 SearXNG语言参数处理:网络搜索现会发送不带尾部分隔符的干净多语言值,因此SearXNG请求现不再因选择多种语言而失败。提交,#24198
- 📂 文件模态窗口打开链接行为:在文件详细信息模态窗口中点击文件名现可在新标签页中打开正确的文件内容(针对上传文件项),而非无法打开。#24125
- 📎 聊天附件显示恢复:聊天工具附加的文件现已可靠地显示在助手回复中,包括之前隐藏的非图像文件附件。提交,#24332
- 🧱 频道嵌入渲染保护:频道消息嵌体现仅针对模型生成的消息显示,并在回复预览中被抑制,从而防止普通用户帖子中出现意外的嵌入扩展。提交
- 🛡️ 更安全的图像URL处理:不受信任的外部图像URL现已在个人资料和富文本图像渲染路径中被阻止,从而防止向攻击者控制的域发起意外客户端请求。#24420
- 🛡️ 清理的电子表格HTML预览:电子表格预览现会在渲染前清理生成的HTML,从而减少在聊天和文件模态窗口中打开Office文件时执行不安全内容的风险。#24468
- 🧰 多工作线程工具更新一致性:更新后的工具代码现可跨工作线程正确刷新,而无需完全重新启动服务,因此聊天现不再在编辑后运行过时的工具版本。提交,#24400,#24433
- 🧩 默认模型元数据环境变量解析:“DEFAULT_MODEL_METADATA"环境设置现会正确解析和应用,包括禁用持久配置时,因此配置的模型能力默认值现不再在启动时被忽略。提交,#24319
- 🔄 配置导入与Redis一致性:导入的设置现可在导入后保持有效,因为配置值现会立即同步至Redis,从而防止陈旧的缓存值覆盖导入的权限和设置。提交,提交,#24346
- 🔔 LDAP注册Webhook一致性:通过LDAP创建的新账户现会触发与密码和OAuth注册相同的注册Webhook通知,因此下游配置和审计自动化可接收一致的事件。提交,#24377
- 🦆 DDGS自动后端兼容性:网络搜索现已正确处理DDGS自动后端选择,并在空或速率限制响应时安全回退,从而防止在较新DDGS版本中出现搜索失败。提交,#24188
- 🤖 自动化更新工具可靠性:在聊天中更新现有自动化现已正确工作,而非因缺少方法错误而失败。提交,#24405
- 📅 日历事件权限检查:日历事件更新和删除操作现已更可靠地处理所有权和访问权限检查,并在适当时返回清晰的访问被拒绝结果。提交
- 🛡️ 更安全的缓存文件传输:未被识别为图像、音频或视频的缓存文件现会作为附件下载,而非内联渲染,从而减少不安全浏览器内容处理的风险。提交
- 📊 流式令牌分析准确性:管理分析现已正确记录和聚合跨Responses API和OpenAI兼容提供商的流式聊天令牌使用量,包括对使用提示词和完成令牌密钥的提供商使用格式的回退处理。提交,提交,#24217,#24294,#24241
- 🔗 管理员共享聊天链接:管理员用户现可可靠地打开和克隆共享聊天链接(不再出现401错误),因为共享链接现已通过分享ID优先解析,并对直接聊天ID访问提供安全回退行为。提交,#24311,#24096
- 💾 聊天设置持久化:系统提示词及其他聊天级设置现可在创建新聊天并重新加载后正确持久化,从而防止受影响对话中的提示词丢失。提交,#24193,#24270
- 💾 聊天控制自动保存持久化:系统提示词、参数和附加文件等聊天控制项的更改现会在现有聊天上自动保存,因此编辑现不会在刷新或导航离开前发送消息时丢失。提交,#23897
- ☁️ OneDrive选项可见性:OneDrive个人版和企业版上传选项现仅在其各自客户端ID已配置时出现,从而防止附件菜单中显示不可用选项。提交,#24411
- 🧠 推理内容泄漏预防:工具调用往返消息现不再在内容字段中用``标签包裹推理文本,从而防止原始标记泄漏到聊天输出中(适用于模板不剥离思考标签的模型,如Gemma 4)。#23844
- 🖥️ 终端侧边栏自动打开保护:终端侧边栏现不再在OpenTerminal禁用时于聊天加载时自动打开,因为保存在模型或localStorage中的过时终端ID现已在在使用前针对可用终端服务器进行验证。
- 🔁 单次确认连接删除:删除OpenAI、Ollama、工具服务器和终端服务器连接现仅显示一个确认对话框(而非两个),因为所有连接组件中冗余的外部确认包装器已被移除。
- 🧵 可靠的后台任务清理:聊天任务生命周期现已在检查剩余同级任务前注销已完成任务,从而消除可能使停止按钮卡住或过早关闭侧边栏活动微调器的单帧计时问题。
变更内容
- ⚠️ 数据库迁移:此版本包含数据库架构变更;我们强烈建议在生产环境升级前备份数据库及所有关联数据。如果运行多工作线程、多服务器或负载均衡部署,所有实例必须同时更新,滚动更新不受支持且会因架构不兼容导致应用程序故障。
- 🚪 登出请求方法:登出端点现要求POST而非GET,因此自定义客户端和集成必须相应更新登出调用。#24420
更新内容 (原始)
Added
- 🔇 Voice Mode mute control. Voice Mode now includes a dedicated mute toggle with an “M” shortcut and auto-unmute after assistant playback, so you can prevent accidental interruptions from background noise without leaving the call overlay. Commit, #23832
- 🚀 Faster prompt list loading. Prompt and prompt-tag pages now load much faster for non-admin users, even with large prompt libraries, because accessible prompts are filtered efficiently in a single database query. #24288, #24258
- ⚡ Faster chat history loading. Chat history maps now load from normalized message records when available, reducing overhead for large conversations while preserving fallback behavior for legacy chats. Commit, #23159
- 🗑️ Delete from conversation menu. You can now delete the current conversation directly from the chat menu with a confirmation step, so cleanup is faster without searching through the full chat list. Commit, #24329
- ⬆️ Scroll to Top shortcut. Long conversations now include a Scroll to Top action in the chat menu when you are away from the top, making it much faster to jump back to the beginning of a chat. Commit, #24133
- 📅 Calendar creation flow. Users can now create calendars from a dedicated modal and a quick-add action in the calendar sidebar, making calendar setup faster from the calendar workspace. Commit, Commit
- 🧭 Unified model unload controls. Administrators can now unload running models from the model selector across supported providers, with loaded-state indicators shown for Ollama and llama.cpp models. Commit
- ⚡ Health check responsiveness. Health and readiness probes now avoid blocking database calls and skip sync session commit handling on probe paths, improving responsiveness and reducing false unready transitions during database pressure. #24380, #24384
- 🎛️ Playground controls panel. The Playground now includes a dedicated Controls toggle so you can adjust parameters like temperature and related settings per chat run without changing model-level defaults. Commit, #24103
- 🎙️ STT file extension controls. Administrators can now configure which audio file extensions are accepted for speech-to-text uploads, helping enforce safer and more predictable upload policies. Commit
- 📷 Remembered call camera selection. Voice call overlay now remembers your last selected camera and restores it automatically when available, so you do not need to reselect it every time you start voice mode. Commit, #24416
- 👥 User group prompt variable. System and template prompts now support the “{{USER_GROUPS}}” variable, which expands to the user’s group memberships so prompts can adapt to role- or access-based context automatically. Commit, #24462
- 🔐 Public chat sharing permission control. Administrators can now control whether users are allowed to create publicly shareable chats through a dedicated permission setting. Commit
- 🔐 Profile image forwarding control. Administrators can now disable external profile image URL forwarding with the “ENABLE_PROFILE_IMAGE_URL_FORWARDING” setting to prevent browser metadata leaks to third-party servers. #24420
- 🏷️ Dynamic header template variables. Administrators can now use chat, message, and user template variables in custom connection and tool server headers so each request can carry per-conversation context automatically. Commit, #24164
- 🛂 MCP OAuth server URL setting. Static OAuth tool server setups can now define a separate OAuth server URL, making discovery and client registration work when authentication endpoints are hosted separately from the tool server URL. Commit, #24164, #24216
- ⚡ Faster memory query performance. Per-user memory lookups and deletions now run much faster at scale because the memory user filter is indexed for existing and new installations. Commit, #23836
- 🚀 Smarter function dependency installs. Function dependencies are now skipped when they were already preinstalled and unchanged, reducing first-load delays and repeated package installation churn after startup. Commit, #24166
- 🔎 Brave LLM Context web search. Administrators can now choose Brave LLM Context as a web search provider to retrieve richer grounded passages with a configurable context token budget. Commit, #24120
- 🗂️ Open Terminal date sorting. Open Terminal now includes sort controls for name and date, with directory-first ordering and modified-time visibility to make file browsing faster. Commit, #24425
- 🎤 Voice mode prompt toggle. Administrators can now explicitly enable or disable the Voice Mode custom prompt behavior from Interface settings, giving finer control over how voice replies are guided. Commit
- 🧮 LaTeX copy shortcut. You can now click rendered LaTeX expressions to copy the raw formula to your clipboard, making it easier to reuse equations outside chat. Commit, #24244
- ✨ Smoother rich text editing. The message composer now defers formatting toolbar refresh work to the next animation frame, reducing typing jank while formatting controls stay accurate. Commit, #24013
- 🖼️ Arena model profile images. Arena models can now reliably display configured profile images instead of falling back to the default icon. Commit, #24412
- 🔄 Replaceable tool embed updates. Pipes and Tools can now overwrite previously emitted rich-UI embeds in-place by passing a
replaceflag on theembedsevent, enabling live dashboards and progress panels that update without stacking duplicate entries. - ✏️ Assistant response editing and continuation. You can now edit and restructure assistant output items — including reasoning blocks, tool calls, and text content — from a dedicated editor view, and continue generating from the edited state so the model receives full prior context.
- 🔄 General improvements. Various improvements were implemented across the application to enhance performance, stability, and security.
- 🌐 Translation updates. Translations for Chinese, Catalan, Filipino, and Korean were enhanced and expanded.
Fixed
- 🧵 Background code execution reliability. Code execution no longer hangs indefinitely when you switch conversations or browser tabs during a run, and disconnected or inactive sessions now fail with a clear timeout error instead of endless processing. Commit, #24089
- 🎙️ Voice recording MIME fallback support. Voice recording now tries a broader set of browser-supported audio formats and resets halted audio playback cleanly, improving microphone capture reliability in browsers where recording previously failed to start. Commit, #24162
- 🧠 Direct-connection task generation reliability. Title, tags, follow-up, emoji, query, and related task-generation endpoints now work correctly when chats use direct-connection models instead of failing with model-not-found errors. Commit, Commit, #24092
- 🔧 Parameterized URL tool readiness. New chats now wait for model defaults to finish applying before auto-submit, preventing early requests that can miss configured external tools. Commit, #24176
- 🚦 MCP cleanup response reliability. Successful native MCP tool calls no longer get replaced by a 500 “No response returned” error during cleanup, so valid chat responses are now returned consistently. #24105
- 🧵 Active task state recovery. Chat input no longer stays blocked by unrelated background tasks after a response is already complete, and interrupted assistant replies are now marked done more reliably. Commit, #23264
- 📌 Per-user note pinning behavior. Pinned notes are now tracked per user instead of with a shared note-level flag, so one person’s pin changes no longer affect everyone else. Commit
- 🧱 Custom header value coercion. Custom header values are now converted to text before requests are sent, preventing request failures when non-text values are configured. Commit, #24164
- 🔗 HTTP share link copy fallback. Copy Link now works reliably on HTTP deployments by using a selection-based fallback when secure clipboard APIs are unavailable. Commit, #24135
- 🧵 Regeneration loading lock recovery. Chats no longer get stuck in a permanent loading state after failed regenerations because invalid message-tree references are repaired before rendering. Commit, #24424
- 📸 Complete chat image capture. Downloaded chat snapshots now include all messages more reliably through visibility overrides and layout timing improvements during capture. Commit, Commit, #24088
- 🗓️ Calendar deletion lock handling. Calendar deletion now avoids SQLite write-lock contention by revoking calendar access grants in a separate transaction after calendar and event removal. Commit
- 🧩 Filter and internal tool coexistence. Internal tools now remain available when filters add provider-native tools, so filter-added tools no longer replace the built-in tool set during request processing. Commit, #24237
- 🛠️ OpenAPI tool spec compatibility. OpenAPI tool integrations now handle null or non-operation path entries more safely and parse path-level parameters consistently, preventing crashes and improving tool execution reliability across imperfect OpenAPI specs. Commit, Commit, #24376
- 🧰 OpenAPI tool schema parsing. OpenAPI tool imports now ignore non-method path item fields and correctly resolve nested composition schemas, preventing invalid tool parsing for compatible specs. Commit, #23254
- 🌍 Web search proxy compatibility. DuckDuckGo search now respects configured proxy environments more reliably, and trust-env behavior defaults to enabled so proxied web loading does not fail unexpectedly. Commit, #23810
- 🧾 Final markdown render flush. Streaming markdown now forces an immediate final parse when generation completes, preventing stale or partially rendered final output. Commit, #24088
- 🛡️ Webhook avatar URL validation. Channel webhook profile image URLs are now validated before saving, preventing invalid or unsafe avatar URLs from being accepted. #24370
- 📝 System prompt editor scroll stability. Editing large system prompts no longer jumps the page back to the top, so you can continue editing long model prompts without losing your place. Commit, #23999
- 🔎 Knowledge content search matching. Knowledge file search now matches both file titles and file content, so relevant files are easier to find even when the keyword is not in the filename. Commit, #24297
- ⚡ Faster prompt tag loading. Prompt tag filters now load much faster for non-admin users by fetching only accessible tags directly, avoiding per-prompt permission checks and unnecessary prompt data loading. #24287, #24258
- 🧾 Citation overflow badge readability. Citation overflow badges now keep multi-digit counts readable in a single compact bubble, preventing wrapped or cramped display when many sources are attached. Commit, #24391
- 🌐 Yandex result parsing guard. Yandex web search no longer fails when some XML fields are missing in individual results, so valid search responses continue to return usable sources instead of dropping to no results. Commit, #24243
- 🎧 Safer voice transcription uploads. Empty or failed voice conversions are now rejected with a clear error instead of continuing as malformed audio, reducing failed transcription attempts from corrupted or near-empty recordings. Commit
- 🎚️ Safer chunked STT processing. Chunked transcription now limits worker concurrency when no external STT engine is configured, reducing failed transcription behavior caused by overly parallel local processing. Commit
- 📈 Imported chat analytics coverage. Imported ChatGPT conversations now carry proper model and timestamp metadata and reliably write imported messages into analytics-backed storage, so imported chats are reflected correctly in Admin Analytics totals and model usage views. Commit, #24263
- 📎 Knowledge collection persistence. Knowledge collections selected with the chat input selector now remain attached after reloads and chat switches, so attached context no longer disappears between sessions. Commit, #24142
- 🧹 Embedding model name trimming. Embedding model names entered in Documents settings now automatically trim surrounding whitespace, preventing silent embedding failures caused by accidental trailing spaces. Commit, #24090
- 🔊 PCM TTS playback compatibility. Text-to-speech audio returned as PCM is now converted to MP3 before delivery, so speech playback works correctly with providers that return raw PCM audio. Commit, #24143
- 🪟 Windows PostgreSQL startup compatibility. Windows pip installs using PostgreSQL now start reliably with psycopg async by using a compatible event loop policy instead of the default Proactor loop. Commit, #24152
- ⏱️ MCP OAuth timeout control. OAuth token exchanges for MCP tool server connections now respect the configurable client timeout setting, reducing callback failures with slower providers. Commit, #24138
- 📄 PDF text search restoration. PDF previews now include a proper text layer so browser text selection and find-in-page search work again instead of rendering only image-like pages. Commit, #24149
- 🔑 Android password autofill support. Password inputs now expose the expected field name metadata, improving password manager autofill reliability on Android login pages. Commit, #24137
- 🎤 Non-blocking STT processing. Speech-to-text transcription no longer blocks the server event loop during both live transcription and uploaded audio file processing, so other users can continue using chats and live connections under concurrent load. #24338, #24379, #24169
- 🌐 SearXNG language parameter handling. Web searches now send clean multi-language values without trailing separators, so SearXNG requests no longer fail when multiple languages are selected. Commit, #24198
- 📂 File modal open-link behavior. Clicking a file name in the file details modal now opens the correct file content in a new tab for uploaded file items instead of failing to open. #24125
- 📎 Chat attachment display recovery. Files attached by chat tools now appear reliably in assistant responses, including non-image file attachments that were previously hidden. Commit, #24332
- 🧱 Channel embed rendering guard. Channel message embeds now appear only for model-generated messages and are suppressed in reply previews, preventing unintended embed expansion in regular user posts. Commit
- 🛡️ Safer image URL handling. Untrusted external image URLs are now blocked in profile and rich-text image rendering paths, preventing unintended client-side requests to attacker-controlled domains. #24420
- 🛡️ Sanitized spreadsheet HTML previews. Spreadsheet previews now sanitize generated HTML before rendering, reducing the risk of unsafe content being executed when opening office files in chat and file modals. #24468
- 🧰 Multi-worker tool update consistency. Updated tool code now refreshes correctly across workers without requiring a full service restart, so chats no longer run stale tool versions after edits. Commit, #24400, #24433
- 🧩 Default model metadata env parsing. The “DEFAULT_MODEL_METADATA” environment setting is now parsed and applied correctly, including when persistent config is disabled, so configured model capability defaults are no longer ignored at startup. Commit, #24319
- 🔄 Config import and Redis consistency. Imported settings now remain effective after import because configuration values are immediately synchronized to Redis, preventing stale cached values from overriding imported permissions and settings. Commit, Commit, #24346
- 🔔 LDAP signup webhook parity. New accounts created through LDAP now trigger the same signup webhook notifications as password and OAuth signups, so downstream provisioning and audit automations receive consistent events. Commit, #24377
- 🦆 DDGS auto-backend compatibility. Web search now handles DDGS automatic backend selection correctly and safely falls back on empty or rate-limited responses, preventing search failures in newer DDGS versions. Commit, #24188
- 🤖 Automation update tool reliability. Updating existing automations in chat now works correctly instead of failing with a missing method error. Commit, #24405
- 📅 Calendar event permission checks. Calendar event update and delete actions now handle ownership and access checks more reliably, returning clean access-denied results when appropriate. Commit
- 🛡️ Safer cached file delivery. Cached files that are not recognized as image, audio, or video now download as attachments instead of rendering inline, reducing the risk of unsafe browser content handling. Commit
- 📊 Streaming token analytics accuracy. Admin Analytics now records and aggregates token usage correctly for streaming chats across Responses API and OpenAI-compatible providers, including fallback handling for provider usage formats that use prompt and completion token keys. Commit, Commit, #24217, #24294, #24241
- 🔗 Admin shared chat links. Admin users can now open and clone shared chat links reliably without 401 errors because shared links are now resolved by share ID first, with safe fallback behavior for direct chat ID access. Commit, #24311, #24096
- 💾 Chat settings persistence. System prompts and other chat-level settings now persist correctly after creating a new chat and reloading, preventing prompt loss in affected conversations. Commit, #24193, #24270
- 💾 Chat control autosave persistence. Changes to chat controls like system prompt, parameters, and attached files are now autosaved on existing chats, so edits are no longer lost when you refresh or navigate away before sending a message. Commit, #23897
- ☁️ OneDrive option visibility. OneDrive personal and business upload options now appear only when their respective client IDs are configured, preventing unavailable options from showing in attachment menus. Commit, #24411
- 🧠 Reasoning content leakage prevention. Tool-call round-trip messages no longer wrap reasoning text in
<think>tags inside the content field, preventing raw markup from leaking into chat output for models whose templates don’t strip think tags (e.g. Gemma 4). #23844 - 🖥️ Terminal sidebar auto-open guard. The terminal sidebar no longer auto-opens on chat load when OpenTerminal is disabled, because stale terminal IDs saved on models or in localStorage are now validated against available terminal servers before use.
- 🔁 Single-confirmation connection deletion. Deleting OpenAI, Ollama, tool server, and terminal server connections now shows exactly one confirmation dialog instead of two, because redundant outer confirmation wrappers were removed from all connection components.
- 🧵 Reliable background task cleanup. The chat task lifecycle now deregisters completed tasks before checking for remaining siblings, eliminating the off-by-one timing issue that could leave the stop button stuck or dismiss the sidebar activity spinner too early.
Changed
- ⚠️ Database Migrations: This release includes database schema changes; we strongly recommend backing up your database and all associated data before upgrading in production environments. If you are running a multi-worker, multi-server, or load-balanced deployment, all instances must be updated simultaneously, rolling updates are not supported and will cause application failures due to schema incompatibility.
- 🚪 Signout request method. The signout endpoint now requires POST instead of GET, so custom clients and integrations must update logout calls accordingly. #24420