发布日期: 2026-08-25
版本号: v0.11.1

本次更新是Open WebUI的一个重要版本,主要包含大量新功能、错误修复和性能优化。

新增功能:

  1. 人工审批工具:管理员可开启“Human in the loop”模式,模型在调用工具前会请求用户批准,以提高控制性。
  2. 模型提问:模型可在对话中暂停并提出最多三个选择题或开放性问题,问题在保存的对话中会持久存在。
  3. 终端文件显示:模型现在可以直接在回复中预览并提供下载按钮,展示其在终端创建的文件。
  4. 流式传输重构:重写了流式传输,以增量方式发送文本块,大幅降低了服务器和客户端的负载,尤其在长对话中。
  5. 全面性能提升:数百项优化减少了不必要的日志构建、数据库访问和计算,显著提升了应用在消息处理、文件上传、搜索、登录及管理页面加载等方面的速度,尤其在大型实例和长对话中。
  6. 模型管理扩展:管理员现在可以从管理界面下载、加载和卸载 llama.cpp 和 LM Studio 上的模型。
  7. 更多交互改进:包括在频道中提及用户、附件在上传时即可发送、文档可跳转至指定页、文件浏览器增强(搜索、树形浏览、图标)、增强的模型切换与搜索、以及更流畅的移动端侧边栏体验等。
  8. 管理员与配置增强:管理员可为后台任务设置默认生成参数、设置全局默认界面设置、控制终端的可用性、以及配置新的接口选项等。

错误修复:

  1. 安全修复:包含安全和访问控制漏洞的修复,强烈建议生产环境用户更新。
  2. 关键问题修复:解决了知识库搜索越权访问、文档解压内存耗尽、流式回复意外中断、长时间延迟升级后无法登录、角色变更后权限未立即生效、密码更改后未注销其他会话、会话清理和计划任务可能中断等关键问题。
  3. 功能与稳定性修复:修复了大量具体功能问题,例如:模型列表中出现重复项、文件夹移动导致消失、共享文件夹权限检查、自动化运行时间错误、日历事件显示错误、知识库文件残留、以及各种UI显示和交互问题。

重要变更:

  1. 数据库迁移:包含数据库模式变更,升级前务必备份。多实例部署需同步更新。
  2. 配置调整THREAD_POOL_SIZE 设置现在控制所有后台线程池;ENABLE_REALTIME_CHAT_SAVE 设置已不再使用;Playwright加载器的请求现在从后端发出。
  3. 行为调整:连接前缀现在会显示在模型名称中;默认使用统计时间范围改为过去两年;容器镜像移除了测试用包。

更新内容 (中文)

新增

  • 🚦 人在回路工具审批。 当管理员启用此功能时,您可以将对话从让工具自由运行切换为先询问,这样想要使用工具的模型会停下来等待您允许或拒绝,一次一个请求,在保存的对话中,通过按钮或键盘快捷键操作,您的选择会被记住用于当前和未来的对话,切换回自由运行模式时会释放任何已等待的请求,而自动化、频道回复和临时聊天不受影响。提交提交提交提交提交提交提交提交提交提交
  • 🙋‍♂️ 可以向您提问的模型。 一个新的内置工具允许模型暂停并向您提出最多三个多项选择题,然后继续,还提供空间输入您自己的答案,问题在保存的对话中重启后仍然存在,因此您可以稍后回来回答,而不是丢失对话。提交提交提交提交提交提交提交提交
  • 🖇 代理现在可以显示终端文件。 模型现在可以直接在其回复中显示它在终端中创建的文件,带有预览和下载按钮,而不是描述一个点击后无效的路径,并且一个新的界面设置可以选择这些文件在回复中打开还是在文件窗格中打开。提交提交提交#27650
  • 📶 从零开始重建流式传输。 回复现在以小段新文本流式传输,而不是每次更新都重新发送整个消息,因此回复中发送的数据随其长度增长,而不是其长度的平方,在多人同时聊天的服务器上,这意味着编码、传递和解码这些更新所需的处理器时间大大减少,承载它们在实例之间传输的共享缓存的负载和内存也大大减少,浏览器的工作量也大大减少,不再在每次更新时重新接收整个回复并重绘未更改的部分,将发送的数据和服务器附加到消息的工作量在非常长的回复中最多减少1000倍,并且仍在进行的回复现在在服务器上单独保存,因此在刷新后重新打开对话时会在中断处继续,而不是显示空白消息,在由 Redis 支持的部署中。提交提交提交提交
  • 🪵 全面更快。 应用程序中数百个地方不再组装被关闭且被丢弃未读的详细日志文本,因此发送消息、上传和索引文件、运行搜索、登录和加载管理员页面都节省了时间,在繁忙的服务器、长对话以及从大型知识库中提取的聊天中效果最明显。#27834#27837
  • 🚀 更快的模型列表查找。 标题生成、标签建议、自动完成和其他聊天轮次的后台步骤现在一次性获取模型列表,这在具有许多模型的繁忙 Redis 支持的实例上保持其他人的响应流畅。#27821
  • 🛰️ 更便宜的日志导出。 将日志导出到遥测收集器(同时设置 “ENABLE_OTEL” 和 “ENABLE_OTEL_LOGS”)的部署现在每行导出只准备一次而不是两次,现在比以前更重要,因为日志文本只在实际有人读取时才组装。#27840
  • 📇 大型实例上更快的权限检查。 确定您属于哪些组现在是直接查找,而不是扫描服务器上的每个成员资格,因此随着组织的增长,聊天和管理员用户列表保持快速。#27822
  • ⚙️ 更快的 JSON 处理。 当启用 “ENABLE_ORJSON” 选项时,保存和打开聊天、读取设置、从内置工具返回结果、流式回复、登录和注册、确定您的权限以及在 Valkey 和 Oracle 向量存储中知识库搜索期间读取存储的块详情,在整个应用程序中都处理得更快。提交#28396#27841#27807#27805#27813
  • 📤 更快的出站请求。 发送给 Ollama 和 Anthropic 模型的对话和嵌入批次打包传输得更快,在启用 “ENABLE_ORJSON” 选项时,在长聊天中最明显。#27811#27810
  • 🐍 更快的代码解释器输出。 当启用 “ENABLE_ORJSON” 选项时,在聊天中运行代码打印的输出和生成的图像出现得更快。#27812
  • 🪶 更轻的页面加载。 界面在每次页面加载时发出的几个小请求,以及一些管理请求,不再设置它们从未使用的数据库访问,这部分耗时比其余请求加起来还长数倍。#28178
  • ♻️ 每条消息少一次读取。 发送消息不再从数据库中两次加载整个对话,这在长聊天中记录最大时最重要。#28809
  • 🏁 大型实例上更快的技能。 打开技能列表或发送使用某个技能的消息不再逐个检查实例上的每个技能,因此在存在许多技能且大多数不属于您的情况下两者都快得多。#28798
  • 🩻 大型实例上更快的工具。 列出或导出工具不再逐个检查实例上的每个工具,因此在存在许多工具的情况下,集成菜单和工具工作区打开得更快。提交
  • 🧊 更快的文件访问检查。 检查您是否可以访问文件不再遍历您可以看到的每个工作区模型,因此在具有许多模型的实例上,打开文件夹、下载文件或从中检索快得多。#28802
  • 🧱 更快的文件夹列表。 列出您的文件夹现在为整个列表计算一次您的组成员资格,而不是为每个文件夹中的每个项目再次计算。#28810
  • 🧼 长聊天中每次更新更少的工作。 回复流式传输时保存的每次更新不再重新检查整个对话,只检查正在添加的部分,因此更新的成本不再随聊天长度增长。#28820
  • 🗃 附加源和文件到回复的成本更低。 将源、文件或嵌入项目添加到回复现在只读取该字段,而不是重建整个对话来查找它,在一个有两百条消息的对话中,每个项目从约 3.1 毫秒降至 0.65 毫秒,且不再随对话长度增长。提交提交
  • 🚏 更快的工作区模型查找。 确定您可能编辑哪些工作区模型不再加载实例上的每个模型并丢弃大部分,这也加快了导出模型和依赖于它的文件访问检查的速度。#28795
  • 📮 更快地移交流式回复。 在实例之间传递正在进行的回复现在写入一次,而不是来回转换并扫描仅在其他地方重要的字符,在一个大型非英语对话中,这占据了每次写入的大部分时间。#28833
  • 🥵 空闲实例上的恒定负载。 空闲的实例不再每秒遍历您拥有的每个聊天以查找到期的计时器,在一个大型历史记录上,这会使大约四分之一的处理器核心忙于无事可做,并且可能耗尽内存直到应用程序被终止。#27663#27622#27745
  • 📍 侧边栏文件夹仅获取一次。 刷新侧边栏现在只需一次请求您的文件夹,而不是在页面加载和每次刷新操作时三次。#28662#28661
  • 💤 仅因登录就减少了大量写入。 记录某人在线现在最多每分钟为每个人写入一次,而不是在每个单独的请求上,之前仅一个打开的标签页每分钟就导致两次写事务,甚至在任何人触碰任何东西之前。#28177#28165
  • 🛰 每个请求的开销更少。 每个请求在被处理之前经过的层现在是一层而不是五层,这也为设置安全头的实例上的流式回复的每个部分移除了四分之一的成本。提交#28171
  • 🎏 关闭实时更新的压缩。 一个新的 “UVICORN_WS_PER_MESSAGE_DEFLATE” 设置阻止服务器压缩它发送的每个实时更新,这在每个更新上消耗处理器时间,而现在回复以小块流式传输,几乎没有节省;除非关闭,否则压缩保持开启。#28613
  • 🌡 更快的聊天列表和未读计数。 打开侧边栏和文件夹上的未读标记不再遍历您的整个聊天历史记录以生成简短列表,在拥有 15000 个聊天的实例上需要 2 到 4 秒。#27663#27622#27745
  • 🥁 长回复不再随着增长而变慢。 长回复不再在到达每一块时从头开始重新检查推理和代码块,因此工作不再随回复长度增长,在一个长回复上大约减少 190 倍的耗时。#28861
  • 💽 更快地保存长聊天。 现在一次将整个聊天写入数据库,而不是一次一条消息,因此保存长对话快得多,对数据库的压力也小得多,并且保存未更改的聊天则完全不写入任何内容。#28806
  • 📦 更快地加载共享文件夹。 与您共享的文件夹现在通过几次查询加载,而不是为每个文件夹和每个所有者各一次,因此对于拥有许多共享文件夹的人来说列表出现得更早。#28804
  • 知识库搜索期间不间断聊天。 响应现在在知识库搜索运行时为服务器上的每个人持续流式传输,而不是暂停直到每次搜索完成。#27824
  • 🔍 更智能的聊天搜索。 搜索您的聊天现在可以找到包含您所有单词任意顺序的对话,而不仅仅是您输入的精确短语,精确匹配仍列在前面,并且预览片段指向它找到的任何单词。提交
  • ⌨️ 从消息框切换模型。 输入 “/model” 现在会告诉您当前使用的模型,通过 “/model” 后跟其 ID 切换到另一个模型,或者直接从斜杠菜单打开模型选择器而无需使用鼠标。提交提交
  • 📎 附件上传时发送。 在文件上传完成前发送消息现在会排队并在它们准备就绪时自动发送,而不是拒绝并返回错误,并且每个排队的消息会显示其附件的进度。提交提交#28381#28380
  • 📖 打开文档到正确的页面。 模型从终端显示给您的 PDF、Word 文档或幻灯片现在可以在特定页面或幻灯片处打开,因此引用第 76 页某内容的回复可以将该页放在您面前。提交提交提交
  • 💼 直接发送到终端的附件。 终端连接现在可以设置为接收聊天中附加的文件到其自己的工作目录,而不是到对话中,这也意味着在使用不能自己读取文件的模型时可以附加文件。提交提交提交提交
  • 🔦 在终端浏览器中搜索文件。 文件浏览器现在有一个搜索框,可以通过文件名和文件内容查找文件,打开结果会将您带到匹配的行。提交
  • 🌲 以树状结构浏览文件。 终端文件浏览器现在就地展开文件夹,而不仅仅是导航进入它们,记住您打开的内容,提供右键菜单,可以显示隐藏文件,按大小排序,在拖动某物到其上时展开悬停的文件夹,并在您放下时一次移动整个选择。提交提交
  • 🧰 在更多服务器上管理模型。 管理员现在可以从管理模型对话框下载、加载和卸载 llama.cpp 和 LM Studio 连接上的模型,在 llama.cpp 上卸载它们,并直接从模型选择器的搜索框开始下载,与已存在的 Ollama 支持并列。提交提交提交提交#28766
  • 📢 发布到频道的自动化。 自动化现在可以指向一个频道而不是聊天,因此其计划运行作为消息出现在该频道供所有人查看,从一个也涵盖文件夹的新目标选择器中选择。提交
  • 🙋 在频道中提及人员。 在频道中输入 @ 符号现在会首先列出该频道自己的成员,然后才是服务器上的所有人,因此您可能想提及的人排在最前面。提交提交#28883
  • 🔗 附加任何链接。 将链接粘贴到聊天或知识库中现在会识别链接背后的内容,将文档或图像作为真正的附件下载,而不是将所有内容都视为网页以文本形式阅读。提交
  • 🔎 在聊天中搜索工具和技能。 集成菜单现在为工具和技能提供了搜索框,因此可以通过名称缩小长列表的范围,而无需滚动浏览。#26709提交#28807#28812
  • 🧭 消息框的更多功能。 斜杠菜单现在除了已有的命令外,还提供设置和(在新聊天中)临时聊天的切换。提交
  • 🚨 收到文件处理失败的通知。 无法为知识库处理的文件现在会弹出一个通知,说明文件名称和出了什么问题,并将原因保留在文件上,而不是静默标记为失败。#27666#6311提交
  • 🔬 预览图像上的缩放控制。 在文件浏览器中打开的图像现在具有放大、缩小和重置按钮(显示当前缩放比例),并且捏合、滚动和在滚动时按住修饰键现在像其他地方一样进行缩放和平移。提交提交提交提交
  • 🗂️ 可识别的文件图标。 终端文件浏览器现在为每种文件类型标记一个图标,因此代码、图像、归档文件、文档和配置文件可以一目了然地分辨出来,而不是共享一个通用页面图标。提交提交提交
  • 📽️ 更真实的 PowerPoint 预览。 幻灯片预览现在渲染表格、图表、连接器、渐变、主题颜色、项目符号、字体和文本对齐效果更接近原始文件,并且查看器允许您使用方向键或滚轮在幻灯片之间移动,同时缩略图条跟随移动。提交提交提交提交提交提交提交提交提交
  • 📄 忠实的 Word 文档预览。 Word 文档现在作为适当的页面打开,保留页眉、页脚、脚注和嵌入的图像,并且可以缩放,而不是被扁平化为纯格式文本。提交提交
  • 🗝 删除您的 API 密钥。 API 密钥现在可以直接从您的帐户设置中撤销,而之前唯一的方法是将其替换为新的。#28874提交
  • 🎛️ 任务模型的设置。 管理员现在可以设置用于后台工作的生成参数,例如标题、标签、后续问题、搜索查询和对话摘要,可以从管理面板或通过 “TASK_MODEL_PARAMS” 进行设置,而不是这些请求总是使用固定的令牌限制,这可能会过早截断摘要。#27604提交提交
  • 🎚️ 为所有人设置默认界面设置。 管理员现在可以为“设置”中的界面选项设置系统范围的默认值,可以从管理面板或通过 “DEFAULT_INTERFACE_SETTINGS” 进行设置,每个人自己的选择仍然优先,任何未触及的选项将显示为继承并随默认值的后续更改保持同步。提交提交提交提交提交提交提交提交提交
  • 🔠 全局界面缩放。 UI 缩放设置和您浏览器自身的文本大小现在一致地调整整个界面的大小,包括侧边栏、菜单、对话框和文件浏览器,而不是让部分保持固定。提交提交提交提交
  • 🏷️ 命名的书写块。 当模型将草稿(如电子邮件)包装在书写块中时,该块现在以其主题命名,并在其旁边显示收件人,而不是每个块都简单地显示为“书写”。#28280#28198
  • 🤝 用于委派任务的文件。 委托给子代理的任务现在可以携带其所需的附件,因此来自您对话的图像或文档可以到达子代理,而不是作为它无法打开且可能会回答的文件引用到达。提交#28213
  • 📟 终端可用性和范围。 管理员现在可以决定每个受管终端是否出现在聊天和自动化中,以及是所有人共享单个工作区还是每个聊天或自动化获得自己的工作区,按聊天的终端会等待对话保存。提交
  • 🔒 终端浏览器中的只读文件。 不允许您更改的文件和文件夹现在标记为只读,上传、编辑、重命名、移动和删除对于它们被禁用,而不是在您尝试时失败。提交
  • 🔐 使用您自己的登录名的终端。 为会话身份验证配置的受管终端现在使用您自己的令牌对终端连接进行身份验证,而之前根本不发送任何凭据。提交
  • 🎟 设置使用 OAuth 的工具服务器。 添加它现在更容易正确:连接对话框可以从对话框本身授权帐户,检查按钮测试登录详细信息,而不是报告没有这些信息就永远不会成功的连接失败,并且现在为其所做的操作标记,而不是暗示它验证整个连接。提交#28552
  • 🪤 控制嵌入页面可以执行的操作。 两个新的界面设置决定在聊天中显示的页面(例如工件或 HTML 预览)是否可以运行脚本和开始下载。提交#28924提交
  • 🗄 保留从知识库中移除的文件。 一个新的 “ENABLE_KNOWLEDGE_FILE_RETENTION” 设置在文件从知识库中取出时保留存储的文件及其搜索数据,而不是删除它们。提交
  • 🧾 检索中的 CSV 形状。 启用 “ENABLE_RAG_CSV_SUMMARY” 会向模型看到的内容添加一行简短描述,命名 CSV 文件的行数、数据行数、列数和列名,为其提供表格的形状以及内容。提交
  • 🔭 搜索设置中的 OpenSERP。 OpenSERP 现在可以在管理面板中选为网络搜索引擎,并为其地址提供字段,而不是仅通过环境进行配置。#27594#27592
  • 🪧 来自单点登录的配置文件更改。 登录时从身份提供者更新的名称、电子邮件地址或图片现在会触发一个事件,说明更改了什么,并且会话的其余部分使用更新后的记录,而不是过时的副本。提交
  • 📯 来自单点登录的组更改。 当某人通过身份提供者登录时添加或删除的组成员身份,以及在此过程中自动创建的组,现在触发与管理员或通过目录同步进行的等效更改相同的事件。#27657
  • 🔔 单点登录的登录和注销事件。 通过身份提供者登录现在触发与使用密码登录相同的登录事件,并且注销会说明会话来自哪个提供者,因此当某人到达或离开时,函数可以在另一个系统中设置或清理帐户。#27619#27613
  • 🪛 命名后台工作线程。 一个新的 “THREAD_POOL_THREAD_NAME_PREFIX” 设置为后台工作运行的线程贴上标签,以便在读取配置文件或线程转储时区分它们。提交
  • 📙 临时聊天中的 OpenDocument 文件。 从使用 OpenDocument 格式的办公套件中获取的文本文档、电子表格或演示文稿在附加到临时聊天时现在会在浏览器中读出其文本,而之前模型被传递原始存档并回答无法读取该文件。提交#28906
  • 🌍 将 Tavily 指向其他地方。 一个新的 “TAVILY_API_BASE_URL” 设置将 Tavily 搜索和页面获取发送到不同的地址,适用于仅通过自己的网关访问互联网的实例或使用兼容服务的实例。提交#28701
  • 🪟 真实的 OAuth 设置。 当单点登录设置来自环境而不是保存在应用程序中时,管理面板现在将其显示为只读,并注明控制此操作的设置名称,而不是接受在下次重启时被静默丢弃的编辑。#28276
  • 📏 加宽聊天控件窗格。 控件窗格现在可以拖动到您想要的宽度,而之前无论屏幕大小都固定在固定限制处。提交
  • 📱 移动设备上更流畅的侧边栏。 侧边栏现在在您滑动打开或关闭时跟随您的手指,响应快速轻弹,在移动时使后面的页面变暗,并为每个聊天行提供一个菜单按钮,您无需在触摸屏上无法执行的悬停即可访问。提交提交提交提交提交提交提交
  • 🚪 保持不动的侧边栏。 打开和关闭侧边栏现在是一个平滑的过渡,保持您的聊天列表加载,而不是每次都重建列表。提交提交提交提交提交
  • 👁️ 关闭聊天预览。 “设置”和“界面”下的一个新设置允许您关闭在侧边栏中悬停聊天时出现的预览卡片,这适用于更安静的侧边栏、共享您的屏幕或在慢速连接上。#27632#27639
  • ☑️ 复选框位于其标签旁边。 在模型编辑器和管理员模型默认值中,每个功能、特性和工具复选框现在直接位于其自己的标签前面,而不是位于列的远端,那样可能看起来属于下一个,并且标签本身可以单击切换。#27788#27771提交提交
  • ✍️ 响应时的输入光标。 从您发送消息的那一刻起直到生成结束,闪烁的光标现在标记回复正在编写的位置,替代之前的加载占位符。提交
  • ✒️ 下划线文本。 下划线文本现在在回复中以下划线形式出现,而不是显示其周围的标记,并且在富文本框中编辑时会保留下划线,而不是被丢弃。提交#26904
  • 📥 从文件添加组成员。 管理员现在可以通过上传包含姓名和电子邮件地址的 CSV 一次将多人添加到组中,提供下载模板,并为任何地址与帐户不匹配的行提供消息。提交
  • 📑 Apache Tika 4 支持。 使用 Tika 提取文档文本的管理员现在可以选择运行哪个服务器版本,可以从文档下的管理设置中选择,也可以通过 “TIKA_SERVER_VERSION” 选择,而之前只理解 Tika 3。提交#28939
  • 💓 可调节的实时更新心跳。 一个新的 “WEBSOCKET_HEARTBEAT_INTERVAL” 设置控制每个打开的标签页与服务器签到的频率,之前固定为 30 秒,因此大型部署可以减少无人请求的后台流量。提交#28166
  • 过期的未完成回复状态。 一个新的 “REDIS_RESPONSE_STREAM_TTL” 设置使从未完成的回复的保存状态过期,因此在回答中途被杀死的服务器不再永久保留该数据。提交
  • 🖨️ API 请求上的文件和图像详细信息部分。 发送到 OpenAI 兼容端点的请求在其消息内容中携带图像详细信息级别或文件部分,现在将两者都转发给使用响应 API 的提供者,之前它们被丢弃,而 Open WebUI 内部附加的文档不受影响,因为这些仍通过知识检索进行。提交
  • 🧺 更精简的存储文档元数据。 庞大的提取细节(如页面布局、表格和检测到的语言)不再与文档一起存储在向量存储中,一个新的 “RAG_METADATA_MAX_VALUE_CHARS” 设置会丢弃任何剩余的超大值,回退到配置的上传大小限制,以便在读取时急剧膨胀的文档不会耗尽服务器的内存。提交提交#29025
  • 💨 没有过滤器的安装上没有过滤器工作。 在没有过滤器函数和管道过滤器(这是默认值)的安装上,完成的消息不再重建整个对话并将其作为没有任何操作的事件发送到浏览器。提交
  • 📂 在知识库中打开文件。 知识库中列出的文件现在可以从该列表中打开并直接读取,之前文件名显示但点击后没有任何反应。提交#28086
  • 🧵 流式传输时保存回复的成本更低。 在流式回复的每一部分上采取的恢复快照不再每次都重建整个答案,因此保存的成本不再随回复长度增长。#28821
  • 📀 设置内置工具的重复工作更少。 每个聊天请求不再每次为每个内置工具的定义从头开始重建新副本,每条消息都要支付一次费用。#28860
  • 🕹️ 控制终端端口预览可以访问的内容。 一个新的界面设置决定预览的端口是否在访问同源浏览器 API 的情况下运行,因此您可以在预览服务不完全信任的内容的安装上将其锁定在外。提交
  • 改进的 UI 可访问性。 关闭的侧边栏不再可通过键盘访问或被屏幕阅读器宣布,回复中的工具调用块现在可以用键盘展开,通常出现在悬停时的按钮(如消息操作、文件删除和聊天菜单)现在当您通过键盘到达它们时也会出现,无论您切换到哪个选项卡,整个应用程序中都有清晰的轮廓标记,并且集成菜单中的行现在会告诉屏幕阅读器每个工具或功能是否已开启。提交提交提交提交提交提交#27667#17150
  • 🔄 常规改进。 在应用程序中实施了各种改进,以增强性能、稳定性和安全性。
  • 🌐 翻译更新。 添加了法罗语,并增强了斯洛文尼亚语、匈牙利语、芬兰语、韩语、葡萄牙语(巴西)、加泰罗尼亚语和法语的翻译。

修复

  • 🛡️ 安全公告:此版本包含安全和访问控制修复。我们建议在生产环境更新后尽快更新部署。并非所有安全修复都可能在修复部分中列举。有些可能会保留一段时间,以给管理员时间升级。公告
  • 🛂 知识库搜索超出您可读范围。 搜索知识库现在会应用您有权打开的集合列表,该限制之前被传递给向量存储并被静默丢弃,因此结果可能包含您无权访问的知识库中的材料。提交
  • 💣 展开后远超其大小的文档。 展开后远超其存储大小的 Word、Excel、PowerPoint、OpenDocument 或 EPUB 文件现在在读取前被拒绝,而之前一个文件可用于耗尽服务器内存。提交
  • ✂️ 长回复中途被切断。 流式回复中的单个超大块(例如长推理跟踪或携带许多工具调用的轮次)不再过早结束答案并附带有关字节数的误导性错误,这影响了每个默认安装。#28114#25664
  • 🚧 可以跳过的网络地址检查。 可获取地址测试和操作员的 Web 获取过滤器列表现在在每个传出请求上运行,之前代理或已打开的连接可能会绕过它们,并且写为地址范围的过滤器条目静默地不匹配任何内容。#27823
  • 🧑‍💻 通过回复中的标签可访问的代码执行。 在使用本机函数调用的安装上,旧路径(运行模型回复中标签内的代码)不再与内置工具一起处于活动状态,因此代码执行仅通过显式工具调用进行。#29024
  • 可能占用服务器的重复规则。 自动化的重复频率现在从调度器实际解析的规则中获取,而不是从规则文本中获取,因此精心制作的规则不再与计划的内容不同并引导服务器进行无限制的重复运行,并且带有开始日期时区的规则现在会调度而不是出错。提交
  • 🗝️ 更改密码现在会结束其他会话。 更改您的密码或管理员为您重置密码现在会停止所有已登录的设备,之前它们会使用旧密码保持登录状态,直到会话自行过期(默认最长四周);进行更改的设备也会被注销并要求重新登录,这需要 Redis,没有它任何东西都无法撤销,现在会记录一条警告消息说明这一点。#28725#28647
  • 🧬 工作区模型覆盖真实模型。 没有管理员权限的人现在无法创建、导入或编辑工作区模型,使其接管由连接的提供者提供的模型的身份,这样做会改变其他人在选择该模型时获得的内容。提交
  • 🌳 将文件夹移入自身时消失。 将文件夹移入其自己的子文件夹之一现在被拒绝,之前它被接受并使该文件夹及其所有内容从侧边栏消失,无法恢复,同时使服务器无限循环并不断查询数据库,这可能会耗尽工作线程及其内存;任何已处于该状态的文件夹都会返回到顶层。#28748
  • 🧨 使用昂贵模式搜索知识库。 编写为在运行前大幅扩展的搜索模式现在被拒绝,因为它可能占用服务器;普通模式不受影响。提交#28284
  • 💧 从链接附加非常大的文件。 从链接获取的文件现在在到达时写入磁盘并在配置的大小限制处停止,之前整个文件首先保存在内存中且未应用限制,因此足够大的文件可能耗尽服务器;中途失败的下载不再留下部分文件。#28945
  • 删除一个知识库会移除共享连接。 删除外部知识库现在会在其他知识库仍在使用时保留其连接,并且只有管理员移除最后一个才会清除它,之前任何用户删除自己的都会从所有人那里取走连接。#28113
  • 📡 间歇性连接失败。 对模型提供者和同一网络上服务的请求不再因名称查找错误而间歇性失败,通常表现为误导性的“未找到模型”消息,因为地址现在默认再次通过系统解析,快速解析器仍可通过 “AIOHTTP_CLIENT_ASYNC_DNS_RESOLVER” 使用。#28242#28013#28215
  • 🗯️ 启用记忆时丢失对话。 启用记忆工具后,模型可以再次看到您对话中的早期消息,而不是像第一条消息从未发送过一样回答第二条消息。#28400
  • 👻 消失的回复。 来自响应 API 提供者的回复在流结束时报告空输出,不再在生成完成时立即消失,从而在原处留下空消息。#27800#27789
  • 📥 排队的消息消失。 等待发送的消息如果发送失败会被放回队列,而不是在未发送的情况下消失。提交
  • 🧵 回复在流式传输中途被切断。 当提供者以意外顺序发送其响应的片段时,回复不再中途中断,之前这会使答案被截断并跳过消息完成后运行的过滤器。#28312
  • 🧷 回复未带入下一轮。 对于跳过流序列某些部分的提供者,完成的回复现在从完成的消息中获取,因此它作为上下文可用于您的下一个问题,并且与之一起到达的引用不再被丢弃。#28310
  • 🌊 回复到达超大片段。 非常大的流式片段在默认设置下不再破坏响应,之前安全分割它们的读取器仅在配置了块大小限制时运行。提交
  • 🩹 长时间延迟升级后登录。 从早于 0.6.41 的版本升级到 0.9.6 或更新版本的实例上的帐户现在可以再次登录,之前升级步骤将它们的单点登录身份写为应用程序之后无法读取的形式,修复步骤会在启动时更正受影响的帐户。#28107#28101提交
  • 🔑 通过某些身份提供者登录。 通过在登录令牌的标题中添加自己的供应商特定信息的提供者登录现在可以完成,而不是在最后一步失败并显示消息声称电子邮件或密码错误。#28065#28062
  • 🔌 角色更改立即生效。 更改某人的角色现在无论更改方式如何(通过目录同步、身份提供者、可信头或删除帐户)都会结束其活动会话,因此旧角色的权限不会残留,并且其浏览器会自行重新连接。提交
  • 🛑 内存权限被尊重。 移除某人的内存权限现在也会停止将其存储的记忆添加到其对话的上下文中,之前一个路径会继续这样做而不顾。#27668
  • 🔍 列出单个连接的模型。 请求某个特定连接的模型或版本现在仅限于管理员,并且指定特定后端的请求会根据该后端实际服务的模型进行检查,即使在访问控制绕过开启的情况下也是如此。提交
  • ⚖️ 共享默认值与配置匹配。 在从旧版本升级的实例上,工具和笔记的公共共享在管理面板中不再显示为已开启,并且保存任何无关权限不再授予每个人从未启用的功能。#27716#27715
  • 🗂️ 开始聊天时的文件夹权限。 开始归档到文件夹的对话现在检查您是否被允许写入该文件夹,消息发送路径之前跳过了此检查,并且每个可以归档聊天的地方现在都以相同方式处理所有权、共享访问和未知文件夹。#28366
  • 🪧 更清晰的附件失败。 无法读取的链接现在会说明并命名链接,并且其转录被拒绝的 YouTube 视频会解释原因并指向为其存在的代理设置,而不是两者都被报告为知识库错误。#28362#28361
  • 🔎 聊天搜索找到最近的消息。 搜索您的聊天现在在默认安装中查找当前对话的消息内容,之前它只读取旧的存储格式,完全错过了它们的内容。提交
  • 🧭 压缩聊天中的您的位置。 打开历史记录已压缩的对话现在会带您到其最新消息,而不是将您停在摘要上,并且对现有消息的更新不再移动您在对话中的位置。提交
  • 🖥️ 使用个人终端的聊天。 在“设置”中选择您自己添加的终端发送消息不再因终端不可用错误而失败,自 0.11.0 以来这一直阻止这些聊天。#27621提交提交
  • 📆 新事件的默认日期。 创建日历事件现在从今天的日期开始,而不是在晚上打开表单时的明天日期,或在清晨打开时的昨天日期。#27779#27778
  • 🗓️ 重复事件的时间。 重复的日历事件现在显示您设置的时间,而不是在服务器时区中计算并根据两者之间的间隔进行调整。#27774提交
  • 🧩 模型列表刷新期间的聊天。 在直接连接上,标题和标签生成等后台工作在模型列表刷新期间不再失败或针对新旧混合的模型条目运行。#27821
  • 🎛️ 聊天控件保持不动。 在侧边栏中悬停包含工件的预览的聊天不再强制聊天控件窗格打开并填充该工件,覆盖您当前打开的聊天。#27773#27772
  • 📨 具有特殊字符的可靠流式传输。 当启用 “ENABLE_ORJSON” 选项时,包含三种罕见不可见换行符之一的响应不再以分裂或中断的方式到达。#27819
  • 🧮 JSON 选项再次被遵守。 当启用 “ENABLE_ORJSON” 选项时,传递给共享 JSON 辅助对象的选项不再被静默忽略,而是回退到支持它们的标准编码器。提交
  • 🚫 列表中的重复模型。 添加已存在于连接允许列表中的模型现在被拒绝,而不是静默地再次添加,竞技场选择器不再提供您已选择的模型,并且现有重复项在下次保存列表时会被清理。#28251#28249
  • 📁 将聊天拖动到共享文件夹中。 您可以写入的共享文件夹现在会突出显示并接受放下的聊天,而您只有读取权限的文件夹不再为可能失败的操作提供自身作为拖放目标。提交#28261
  • 通过聊天列出自动化。 要求模型列出您的自动化而不命名文件夹现在返回您拥有的所有自动化,而不仅仅是位于文件夹之外的那些。提交
  • 🧠 启用记忆时更快的后续问题。 现在以稳定的顺序从一条消息到下一条传递给模型的记忆,因此在轮次之间重用工作的服务器不再每次回复时重新处理整个对话。#28292提交提交
  • 🎯 自定义模型参数组合。 在模型上设置自定义参数不再静默丢弃全局默认值中定义的每个自定义参数,并且 API 请求中直接发送的值不再被模型的保存设置覆盖。提交#28241
  • 👥 与已添加的人员共享。 访问选择器不再提供已有访问权限的人员和组,“用户”标题不再出现在空列表上方。提交#28253
  • 🔧 完整的工具参数描述。 参数描述跨越多行的工具现在将整个描述传递给模型,而不仅仅是其第一行。提交
  • 📝 以意外形状保存的笔记。 内容存储为结构化数据而非文本的笔记不再破坏其他所有笔记页面,并以格式化代码块显示其内容打开。提交#28222
  • 💬 帐户删除后的直接消息。 直接消息对话不再在其成员中计算已删除的帐户,并且打开与某人的直接消息会找到现有对话,而不是在其旁边开始第二个。提交#28257
  • 🫥 停用模型。 关闭模型不再从模型列表中移除错误的条目,或完全失败列表并使模型选择器对每个人都为空,直到模型重新开启。提交#28202
  • 💭 聊天操作上的可读错误。 当移动、重命名或以其他方式更改聊天失败时,解释原因的消息现在出现在无帮助的对象占位符位置。#28260#28259
  • 🪪 共享聊天中的作者身份。 与您共享的聊天现在显示撰写者的姓名和图片,在消息列表和概览面板中,而不是将消息归功于您。#28274#28273
  • 🖇️ 通过纯文本连接添加终端。 保存终端连接现在可以在没有 HTTPS 的界面上工作,之前对话框会坐在那里什么都不做,因为浏览器保留了用于生成其标识符的工具。提交#28148
  • 🗃️ openGauss 向量存储。 使用 openGauss 进行向量存储的部署在接触它时不再失败。#27838
  • 🎚️ ColBERT 重排序器启动。 加载 ColBERT 重排序器现在在日志中命名模型,而不是打印日志错误和回溯。#27838
  • 🖼️ 不再存在的图像。 图像文件已被删除的消息现在显示一个小的不可用占位符,无法打开,而不是显示损坏的图像,该图像将整个回复文本溢出到图片框中,仍然可以全屏打开。#27730#27728提交
  • 🛂 连接外部帐户。 授权工具的外部帐户现在仅对开始该操作的人员完成,而不是对恰好带着授权返回的人员,并且注销会清除其依赖的会话。提交
  • 🪟 在 Windows 上启动。 Windows 启动脚本现在在全新安装上创建其需要的秘密密钥,而不是打印一系列找不到文件的消息然后拒绝启动,并且它可以处理包含空格的安装路径。#28061#28060
  • 🕸️ 概览中重叠的分支。 聊天概览中的分支节点在界面放大时保持清晰的间距,而不是彼此重叠。#27995#27994
  • 🗑️ 仅在允许时提供删除。 侧边栏、聊天菜单、搜索、已归档聊天和数据控制中的聊天删除控件不再为权限不允许删除的人员出现,使用它们会产生访问被拒绝的错误。#27714#27713
  • 🍴 仅在允许时提供叉取。 叉取操作和叉取命令不再为聊天导入权限关闭的人员出现,使用它们会产生访问被拒绝的错误。#27711#27692
  • ↕️ 消息框中的展开按钮。 放大消息框的按钮不再位于标记模型的关闭按钮或第一个附加文件的顶部,并且在长提示中保持可访问。#27676#26736
  • 🔆 高对比度模式下的重新生成。 打开高对比度模式时,重新生成按钮现在在早期回复上保持可见,而不是仅在悬停时出现。#27644#27638
  • ✂️ 被裁剪的图标和头像。 消息框旁边的终端图标和帐户设置中的个人资料图片不再沿其左边缘被剃平。#27691#27690
  • 🪄 重新加载后合并的回复。 合并来自多个模型的答案现在在您重新打开的对话上有效,而不是合并模型报告其他响应为空。#27673#26962
  • 🔢 后台聊天的令牌计数。 由自动化、计时器、子代理和频道启动的对话现在像任何其他聊天一样报告其令牌使用情况,而不是即使模型设置为提供它也未到达。#27661#27653
  • 📐 高屏幕上的设置。 设置窗口现在随显示器的高度增长,而不是停止并让您在其中滚动,而上下空间未使用。#27615#27614
  • 🖱️ 意外打开的部分。 文件夹、可折叠部分和工具调用块现在仅在您单击它们时打开和关闭,而不是也在拖动或选择文本后释放鼠标时响应。提交
  • 🔁 重建知识库向量。 重建知识库的向量现在也重建其包含的每个文件的向量,因此之后附加单个文件会找到其内容,而不是静默返回 nothing 并让模型凭空回答。#28106提交提交
  • 📌 附加与您共享的聊天。 附加与您共享的对话(直接或通过共享文件夹)现在会带来其内容,而不是静默附加无内容。提交
  • 🧲 打字时页面保持不动。 将焦点返回消息框不再滚动对话,因此切换聊天、运行命令或从菜单中选择某项会保持您在屏幕上的位置不变。提交
  • 📷 窄屏幕上的圆形个人资料图片。 管理员用户列表和其他列表中的个人资料图片在窗口狭窄时不再被压扁成不同宽度的椭圆形。#28000#27999
  • 🎙️ 笔记编辑器中的语音模式。 笔记中嵌入的聊天中不再提供语音模式按钮,因为它不适用。提交提交
  • 分析卡在加载。 在分析中选择自定义日期范围而未选择日期现在不会让选项卡永远旋转,包括在离开后返回时。#28125提交
  • 🧑‍🤝‍🧑 共享聊天上的所有者头像。 与您共享的聊天旁边的照片现在会加载,如果无法加载则回退到默认图像,而不是在界面和服务器位于不同地址时留下空白间隙。#28272#28271
  • 🎨 图像生成和网络搜索保持关闭。 关闭任一操作现在会在每条路径上立即生效:之前打开的会话不再能生成图像或运行搜索,图像请求不再到达使用旧工具调用方法的模型,条目立即从集成菜单中消失,并且消息框旁边的活动标记在功能撤消后不再残留。#27759#27758#26842#27669
  • 📰 附加页面到达模型。 从附加的网页或 YouTube 视频中提取的文本现在确实到达模型,而不是空到达导致回复无内容可处理,并且打开源进行检查不再失败。#28378提交
  • 🌐 Tavily 页面获取。 使用 Tavily 作为加载器读取网页再次工作,自 0.10.0 以来每次尝试都失败。#27636#27602
  • 🗒️ 线程中的回复框。 频道线程中的回复框在您向上滚动查看回复时保持在窗格底部,而不是随其滚出视线。#27768#27767
  • 🎹 模型选择器快捷键。 打开模型选择器的键盘快捷键再次工作,并且引用具有您没有的模型的聊天的链接仍然打开填充该名称的选择器。提交
  • ⌨️ 通过键盘访问下载选项。 在模型选择器中,方向键经过最后一个结果现在会移动到选项以从每个可以提供该服务器的服务器获取该模型,因此它们可以通过键盘选择,而不仅仅是单击。提交提交
  • 📂 在侧边栏中打开文件夹。 选择文件夹现在仅刷新该文件夹的聊天,而不是重建整个文件夹树,并且空文件夹或仍在加载的文件夹会说明情况,而不是不显示任何内容。提交提交
  • ⏲️ 通过聊天更改自动化。 要求模型更改自动化的某件事不再将其移出其文件夹或在其模型填写这些字段为空白(而不是省略它们)时删除其模型。提交
  • 🔂 运行固定次数的自动化。 要求运行有限次数的自动化现在被拒绝,除非它说明何时开始计数,而不是被接受然后无限期运行。#27781#27780
  • 📅 通过聊天编辑日历事件。 要求模型更改事件的某件事(如其标题)现在不会失败或清除您未提及的详细信息。#27777#27776
  • 🧹 多实例设置上的会话清理。 执行定期会话清理的实例现在在清理之间保持其对工作的索赔,因此空闲部署停止每两分钟记录一次续期警告,并且索赔不再在每个周期的一半时间失效。提交#27762
  • 🏠 文件浏览器中的起始文件夹。 重新打开文件浏览器现在保持您所在的文件夹,而不是面包屑导航丢失其起点并将您跳到其他地方。提交
  • 🩺 修复默认模型设置。 存储的默认和固定模型设置写为错误形状的实例在启动时得到更正,因此这些默认值再次生效。提交
  • 🧽 更干净的模型对话历史记录。 附加到您消息的内部记账(如附件记录和令牌计数)不再随对话一起发送给模型。提交
  • 🙈 来自模型选择器的无用请求。 以非管理员身份打开模型选择器不再向仅限管理员的设置端点发出总是被拒绝的请求。提交
  • ⏹️ 停止等待的回复。 停止按钮现在结束等待您的回复(例如暂停在工具批准上的回复),而不是让对话卡在半途中。提交
  • 🏷️ 具有特殊字符的文件夹名称。 文件夹命名不再因为另一个文件夹的名称恰好相似而被拒绝,并且以反斜杠结尾的名称在 PostgreSQL 上不再完全失败,因为名称现在被精确比较,而不是被视为搜索模式。#28695#28694
  • 🤔 传回 Ollama 的推理。 模型早期的思考现在通过其自己的本机字段传回 Ollama,而不是作为标记文本粘贴到消息中,因此推理模型跨轮次保持其思路。提交
  • 📎 默认固定模型生效。 更改默认固定模型现在会影响从未选择自己的人,之前仅打开界面一次就足以冻结他们第一次看到的列表,并且重新排序固定项不再移动错误的项或之后重新打开侧边栏部分。#28069#28067
  • ✏️ 编辑他人的频道消息。 要求模型处理频道中的消息现在仅应用于您自己的消息,之前对频道的写入访问足以访问任何人的消息。#28631
  • 🍪 已登录的工具服务器。 依赖于您会话的工具服务器现在接收其自己连接的凭据,而不是最近准备的凭据。#28630
  • 🏗️ 从其页面编辑文件夹。 从文件夹自己的页面重命名文件夹、更改其图标、创建子文件夹或删除文件夹现在会立即更新侧边栏,而不是保留旧的名称和图标,以及缺少的新子文件夹,直到重新加载。提交提交#28692#28690
  • 📣 侧边栏中的长频道名称。 具有长名称的频道不再将其自己的菜单按钮从行中挤出。提交#28671#28670
  • 📬 聊天搜索中标记为未读。 从搜索对话框将聊天标记为未读现在可以工作并更新侧边栏,之前菜单项看起来正常但根本不做任何事情。#28136#28135
  • ⬆️ 第一次单击时滚动到顶部。 在旧消息尚未加载的长聊天中,单击滚动到顶部现在到达第一条消息,而不是提前停止并需要第二次单击。#28659#28658
  • 🔘 发行说明中的双项目符号。 “新增”对话框中的每个条目再次显示单个项目符号,而不是两个处于不同高度的项目符号。#28676#28675
  • 📚 聊天中的知识库搜索和共享文件。 模型搜索您的知识库或读取通过组与您共享的文件现在可以工作,自 0.11.0 以来它一直失败,并静默回答好像知识为空,影响向嵌入服务转发用户详细信息的实例,对于共享文件,无论设置如何,所有实例都受影响。#27642#27641
  • 🔖 无法访问的技能标识符。 创建标识符包含不允许在网址中使用的字符的技能现在被完全拒绝,而不是被接受然后永久无法打开、编辑、关闭、删除或重新创建。#27660#27655
  • 🔤 连接上的模型名称带有前缀。 添加前缀到其模型名称的连接现在在通过响应端点发送请求之前将其剥离,之前带有前缀的名称被传递并被拒绝为未知。#28575#28574
  • 🔓 开启开放共享。 开放共享权限现在可以在默认用户权限中开启,之前保存似乎有效但设置被丢弃并恢复关闭。#27609#27607
  • 🖌️ 模型图标后面的白色方框。 具有透明背景的模型图标在管理员模型列表中不再位于白色方块上,与它们在其他地方出现的方式匹配。#27612#27611
  • 🪞 登录时匹配正确的帐户。 通过其身份提供者详细信息查找帐户现在匹配精确值,之前存储的详细信息作为松散文本搜索,并且包含在另一个中的值可能被匹配。#28624
  • 🔄 多次同步模型目录。 同步模型现在更新已存在的模型,之前任何重复的先前同步静默执行任何操作,同时仍然报告成功。#28036#28033
  • 🕰️ 保存没有日期的日历事件。 创建或编辑清除日期的事件现在要求提供一个,之前它无论如何都会发送,被服务器拒绝,并报告为不可读错误。提交#28133
  • 🔗 在循环聊天中删除消息。 当对话在其回复结构中包含循环时,删除消息不再挂起。#28035
  • 🫀 计划工作停止且无警告。 运行自动化和日历警报的例程在应用程序运行时无法被丢弃,之前它静默停止触发而没有任何报告,并且现在在关闭时干净地停止。#28053#28052
  • 🔋 会话和使用记录未清除。 清除过期会话和已完成模型使用的例程在应用程序运行时无法被丢弃,因此这些记录停止被未注意地积累,并且两者现在在关闭时干净地停止。#28053#28052
  • ⚗️ 跨轮次传递推理。 模型早期的思考现在被识别自在其自己的嵌入字段中报告它的提供者,并且无法在没有签名的情况下传回的推理被排除,而不是被传递然后被拒绝。提交
  • 🛎️ 丢失所有设置。 您的界面设置不再被加载失败的会话清除,这可能在您没有操作的情况下发生,并清除从主题到模型参数的所有内容;保存现在仅更改您实际更改的设置,并且无法加载它们的会话会告诉您,而不是继续仿佛您没有任何设置。#27766提交
  • 🖲️ 丢失折叠的侧边栏。 侧边栏折叠时,打开聊天不再将狭窄的侧边栏条推出屏幕边缘,之前这使得除了将窗口缩小到手机大小外无法重新打开侧边栏。#28501#28500
  • 🧯 失败但未说明的计时器。 回复无法生成的计时器(例如设置为已删除的模型)现在记录为失败并说明原因,而不是标记为已完成而回复从未到达。#27785#27783
  • 🖊️ 频道中的消息按钮。 在频道消息上悬停时出现的按钮现在位于消息上方而不是其内容之上,因此可以在以代码块或表格开头的消息上单击,并且代码和表格控件也可以单击。#27737#27736
  • 🔡 搜索非英文标签和文本。 通过标签搜索工作区模型,或通过内容搜索提示和自动化,现在可以找到包含英文字母表外字符的条目,之前根据每个条目保存时的有效设置,大约一半被遗漏。#28399
  • 🔭 不指定结束日期搜索日历。 要求模型搜索您的日历而不指定结束日期现在可以在 PostgreSQL 上工作,之前开放式范围对于数据库来说太大而无法接受,并且搜索完全失败。提交#27717
  • 🫧 附件被加载点替换。 固定频道消息或以其他方式更新消息不再将其附件替换为加载指示器,该指示器在您重新加载或离开频道之前永远不会解决。提交#27734#27731
  • 🛠️ 在每个请求上重建空服务器列表。 未配置工具服务器或终端服务器的实例不再在每个需要它的请求上重建该空列表。提交#28568
  • 🪫 为空缓存记录的错误。 尚未填充的共享缓存不再记录错误,暗示其存储值已损坏。提交#28568
  • 以非 root 用户身份启动。 以非 root 用户身份运行容器的部署(例如使用 runAsNonRoot 的 Kubernetes 设置)再次启动,自 0.11.0 以来,只有 root 才能读取的捆绑语音模型文件阻止了它们,并且捆绑的文本语料库现在存储在非 root 用户可以访问的地方。#27651提交#28866
  • 📋 找到只读共享的笔记。 公开共享以供阅读的笔记现在出现在您笔记的只读视图中,之前任何拥有链接的人都可以读取,但未在任何地方列出。#27637#27487
  • 🫂 从另一个应用程序登录。 通过交换来自身份提供者令牌的应用程序登录现在与通过浏览器登录相同地应用您的角色和组成员身份,并且其提供者不发送角色的帐户保留其现有角色,而不是重置为默认值。提交提交
  • 🗄️ 侧边栏中的空模型部分。 当每个固定模型已被删除、重命名或隐藏时,模型部分不再显示为空。#27634#27633
  • 🚧 文件窗格自行重新打开。 选择了终端时,关闭文件窗格现在保持关闭,之前保存任何设置都会重新打开它,包括像为文件夹选择表情符号这样偶然的操作。#28693#28691提交
  • 🚰 观察文件处理占用数据库。 等待文件或知识库完成处理现在不再在页面监视期间一直保持数据库连接打开,在繁忙的实例上这可能耗尽每个可用连接并使应用程序的其余部分无法访问数据库。#28183
  • 🗜️ 其他提供者的嵌入设置。 保存嵌入设置现在仅写入您选择的提供者,之前它还会覆盖存储的其他两个提供者的地址和密钥,如果它们的字段未填写则丢失它们。提交
  • ↔️ 并排概览中的连接器。 当对话概览从左到右布局时,消息之间的连接线现在在侧面而不是顶部和底部连接,因此它们不再穿过方框。提交
  • 💫 关闭淡入淡出时的思考指示器。 关闭流式文本的淡入淡出效果不再隐藏思考指示器及其旋转器,之前这使得推理模型从开始第一刻起看起来就好像已经完成。#28559提交
  • 🈳 在 llama.cpp 上过早压缩的对话。 由 llama.cpp 服务的对话不再在您配置的大约一半大小时被缩短,之前其缓存输入被计算两次,因此显示 39,000 个令牌的聊天被视为 77,000 个,限制为 70,000。#28590提交
  • ◻️ 设置选项卡溢出角落。 滚动设置中的选项卡列表不再在对话框的圆形底角上绘制选项卡或部分图标,之前它似乎位于对话框外部。#27617#27616
  • 🎰 关闭功能的设置。 已关闭的功能不再提供其每用户设置,并且保存它们被拒绝,之前这样做会加载功能的代码和没有效果的存储设置。提交
  • 🗃 共享文件夹自行重新排序。 与您共享的文件夹列表现在保持一致的顺序,之前在 PostgreSQL 上重命名文件夹可能会洗牌其旁边的文件夹。#28804
  • 📜 工具调用后重复系统提示。 在由管道或歧管服务的模型上,系统提示不再在每次工具运行时再次添加,之前它每轮构建一个额外的副本并以这种方式发送给提供者。#28739#28736
  • 🔕 日历提醒为所有人停止。 单个提醒时间存储为非数字的事件不再阻止提醒发送,无论对于该事件还是任何其他人的事件,并回退到通常的提醒窗口。#28790
  • 🗨 附加对话到达模型。 附加到您消息的对话现在在其附件中列出,之前它被完全排除,模型从未被告知它在那里。#28788
  • 拖动侧面板关闭。 通过其边缘拖动聊天控件、笔记聊天或频道线程面板关闭不再使浏览器控制台充满错误并留下未处理程序,并且现在聚焦后可以使用方向键移动分隔符。#28759提交
  • 🎫 在 PostgreSQL 上保存具有特殊字符的消息。 携带 PostgreSQL 将在其文本之外存储的字符的消息现在可以保存,之前这些字符已从对话中清除,但原始传递到单独的消息记录。#28820
  • 🔲 在模型编辑器中移除项目。 取消选择工具、技能、操作或过滤器不再使列表中的下一个看起来未选择而它仍然被选择,需要两次单击才能移除,并且每次将同样的混淆传递到列表中。#28837#28832
  • 📉 使用量数字在集群设置上向上漂移。 清除已完成模型使用的例程在短暂中断后不再在整个集群中永久停止,之前这留下了使用量数字计算无人使用的模型,并且每次断开连接都必须做的工作增长。#28834
  • 🔇 语音模式在推理模型上保持静音。 当表情符号选项开启并且其背后的模型将其答案报告为思考而不是文本时,语音模式现在会朗读,之前整个回复未被朗读,没有任何内容到达语音服务。#28724
  • 🏷 与您共享的聊天上的标签。 打开与您共享的聊天或共享文件夹中的聊天现在可以加载其标签,管理员打开其他人的聊天现在可以看到该聊天实际携带的标签。提交#28767
  • 🔻 窄窗格中的消息框控件。 缩窄笔记聊天窗格或挤压带有宽控件窗格的聊天不再将附加和集成按钮隐藏在模型名称后面或将发送按钮推到框外;模型名称缩短以腾出空间。#28912#28911
  • 全是思考没有答案的回复。 来自使用响应格式的提供者的回复在模型仍处于推理状态时结束,之后没有答案文本,现在正常结束,而不是使整个轮次失败并留下不可读的错误代替回复。#28872#28871
  • 📃 Word 和 PowerPoint 预览溢出。 预览这些文件之一现在将文档保持在其框架内,缩放和幻灯片控件保持不动而不是滚出视线,并且演示文稿在其当前幻灯片上打开,而不是在可见区域下方。#28878#28877
  • 🎞 管理员模型列表中的工作区模型。 工作区模型再次出现在管理员模型列表中,因此可以对其进行排序、设置为默认值并为所有人固定;选择一个会打开其自己的编辑器,之前它会打开基础模型编辑器并可能剥离模型的基础模型,将其变成其他东西。提交#27702
  • 发送长消息后的错误。 开启提示自动完成时,在输入后一秒内发送或清除多段消息不再在浏览器控制台中抛出错误。#28824#28823
  • 失败的工具调用看起来成功。 返回错误的工具调用现在标记为失败并带有红色叉号,而不是绿色勾号,因此基于失败调用构建的回复更容易发现。提交#28016
  • 🗜 引用源中的下载链接不起作用。 作为格式化内容显示的引用中的链接现在单击时会下载文件,之前它静默地不做任何事情。提交#28924
  • 🗳 网络搜索失败且不说明原因。 失败的网络搜索现在解释自身,而不是完全不返回任何内容,最常发生在选择搜索引擎但未配置其密钥时。#28942
  • 笔记中的清单。 笔记中的清单现在可以作为适当的清单进行预览和下载,之前每个项目都带有一个多余的第二对括号,其文本在方框下方两行开始。#27671#26067
  • 🧿 使用错误的模型缩短对话。 选择与您聊天的模型来缩短长对话现在确实如此,之前它使用配置的任务模型,无论安装是否有一个。提交#27603
  • 🖥 共享缓存重启后停止回复。 停止回复现在在集群中共享缓存重启或其连接断开后继续工作,之前在实例之间传递停止的部分永久且静默地放弃,只有重新启动应用程序才能使其恢复。提交#28909
  • 📼 附加到媒体和归档文件的链接。 附加指向非网页内容(如视频或归档文件)的链接现在将其作为文件读取,而不是尝试将其视为文本。提交
  • 🗒 从设置编辑工作流。 从图像设置中打开 ComfyUI 工作流的代码编辑器现在将其带到前面,之前它在设置对话框后面打开且无法访问。#27648#27647
  • 🖼 下载生成的图像。 从预览中下载图像现在保存图像,之前它可能静默保存包含身份验证错误的小文件,并且失败的下载现在会说明。提交#27723#27722
  • 🗂 目录同步列出本地帐户。 通过 SCIM 同步帐户的目录服务现在仅查看来自目录的帐户,之前它还列出并可能修改在 Open WebUI 本身中使用密码创建的帐户。提交
  • 对人员列表进行排序。 对管理员用户列表或频道成员列表进行排序现在可以在未输入搜索词时工作,之前选择的顺序被忽略,除非正在搜索某些内容。提交
  • 🧶 被过滤器丢弃的回复文本。 重写流式回复的过滤器或在块中发送非纯文本的提供者不再导致该部分回复无故消失。#28840
  • 🏗 叉取后触发两次的计时器。 分叉设置了计时器的对话现在不再使副本能够也触发该计时器。#27663#27622#27745
  • 🗣 语音模式中跳过的句子。 语音模式现在朗读回复的每个句子,之前任何在回复的同一部分中完成的句子都不会被朗读,这在提供者一次发送整个段落时经常发生。提交#28730#19861
  • 🖊 将侧面板拖动得比窗口还宽。 侧面板现在无法拖动到将其旁边的聊天挤出屏幕的宽度,并且拖动一个低于其最小宽度的面板现在会关闭它,而不是卡住。提交#28965
  • 🎙 重新打开聊天时选择错误的模型。 重新打开使用不同模型重新生成回复的对话现在选择您正在查看的回复背后的模型,之前它选择第一次尝试使用的模型,该模型可能不再可用。#27674#25052提交
  • 🛜 使用 Anthropic 格式的编码工具。 指向 Open WebUI 使用 Anthropic 自己消息格式的工具(如 Cline)现在可以再次访问模型,之前每个请求在发送之前就失败,并且一旦更正,请求因签名方式错误而被 Anthropic 拒绝。#27675#27595#27695
  • 👯 固定消息中的代码。 打开频道的固定消息现在显示这些消息中的代码,之前每个块显示为空,其内容被绘制到对话后面的频道中,在那里加倍。#27740#27739
  • 🧻 日志被无法访问的服务器淹没。 无法访问的终端或工具服务器现在每次尝试记录一行,而不是完整的堆栈跟踪,之前几分钟的停机时间可能会用数百 MB 的日志淹没一切。#27755#27751#27757#27756
  • 🖱 单击聊天预览内。 单击悬停聊天时出现的预览中的图像或源不再快速打开和关闭查看器,因为预览仅供阅读。#27770#27769
  • 🛢 在通过角色进行数据库访问时使用 pgvector。 使用临时凭据而不是存储密码登录数据库的 Amazon RDS 实例现在可以在 pgvector 为向量存储时启动,之前两者无法一起使用,容器在启动时退出。#27754#27752
  • 📗 打开附加到模型或文件夹的知识。 单击附加到模型或文件夹的知识项会再次打开它,因此可以读取并更改其检索模式(在集中检索和整个文档之间),自 0.11.0 以来在聊天之外两者都不可能。#27686#27684#27801#28825
  • 🎚 从另一个项显示的检索模式。 打开知识项时显示的检索模式现在是该项自己的模式,之前它可能显示之前打开的项的设置。#27686#27684#27801#28825
  • 🔩 新聊天显示为几乎已满。 对话已满的指示器现在与缩短以相同方式计算令牌,之前两者从报告两者的提供者读取不同的数字,并且新聊天可能看起来接近其限制。#27620#27608提交
  • 🫱 放弃对组共享设置的更改。 未保存就关闭用户组的编辑对话框现在会丢弃对谁可以共享到该组的更改,之前更改保留在屏幕上,并在下次保存有关该组的任何其他内容时写入数据库。#28076#28075
  • 📛 编辑错误的组。 编辑用户组的对话框现在保持为其打开的组,之前其下方列表的重新排序可能使其保存到不同的组。#28076#28075
  • 🪢 从身份提供者注销人员。 身份提供者发送以结束某人会话的注销现在可以工作,之前验证消息是否真实的检查可能对需要与所有其他内容相同身份验证的提供者的签名密钥失败,导致人员保持登录状态。提交
  • 🪣 清空知识库后留下的文件。 清空知识库现在移除其保存的文件及其存储副本和搜索数据,之前这三者都被留下,界面中没有任何内容可以清除它们。提交#27988
  • 当工具服务器的保存登录无法读取时的空白错误。 存储的登录详细信息无法解密的工具服务器(当 “WEBUI_SECRET_KEY” 更改时会发生,因为保护它们的密钥随之更改)现在命名服务器并说要重新连接它,之前每个启动记录两个错误而没有任何消息。提交#28666#28665
  • 🖍 清除支持的媒体类型。 在文档设置中清空支持的媒体类型现在保持为空,之前的值在下次访问时恢复,因此图像继续被发送到提取引擎,而不是直接发送给可以读取它们的模型。#28750#28747提交
  • 🫳 将聊天拖放到其开始位置。 在侧边栏中拖动聊天并在其开始位置释放不再重新加载整个侧边栏,对于未更改任何内容的操作,需要大约十几次请求。#28664#28663
  • 🖲 在后面的页面上筛选。 在工作区中更改过滤器(例如仅显示您创建的内容)现在返回第一页,之前列表可能为空,页面控制消失且无法返回。#28734提交
  • 🪺 遗留的工作区计数。 每个工作区选项卡旁边的数字现在跟随其列表,之前创建、复制、导入或删除某项会保留旧数字,直到您移动到另一个选项卡或重新加载,并且工具计数完全忽略其搜索。#28983#28981
  • 📞 启动语音通话的链接。 打开启动通话的链接现在确实会启动一个,之前它打开控件窗格并停止在那里,留下从应用程序外部开始通话的唯一方式被破坏。#28721#28677提交
  • 🆔 在提供者使用数字帐户 ID 的情况下登录。 通过 GitHub 或任何其他通过数字标识人员的提供者登录再次在 PostgreSQL 上工作,自 0.10.2 以来每次尝试都完全失败,并且在 SQLite 上现有帐户未被匹配;以旧方式存储的帐户在下次登录时得到更正。提交#28954#27760
  • 聊天打开到一半。 最近消息较短的对话现在在最新消息处打开,而不是在中间某处,并且在向上滚动时加载的旧消息不再移动您正在阅读的内容。#28657#28656
  • 🛤 终端选择器在回复过程中消失。 终端选择器现在在编写回复时保持不动,在完成之前变灰,之前它完全从消息框中消失并带走了所选终端的名称。提交
  • 🎧 频道说其成员是谁。 频道的成员列表现在包括其所有者和被授予访问权限的组中的每个人,之前所有者从未出现,并且授予一个人及其不在的组会列出没有人,而旁边的计数说两个。#28289#28288提交
  • 受密码保护的嵌入服务器。 受用户名和密码(而不是密钥)保护的嵌入服务器现在可以工作,之前空密钥仍然发送授权头,这种服务器拒绝它并导致文档上传失败。#28684#28683提交
  • 笔记编辑丢失且无警告。 在笔记中键入现在会到达数据库,之前已等待的保存可能在没有替代品的情况下取消,导致编辑器显示从未存储的文本并且没有任何说明;这影响模型或通过 API 编写的笔记,以及重启后没有 Redis 的任何实例。#28669#28667
  • 🗄 在终端中浏览主目录之外。 设置为允许浏览整个文件系统的终端服务器现在可以再次浏览主目录之上,之前文件面板固定在那里,打开其他地方的文件静默地不做任何事情。#29006#29000
  • 🏞 清除模型的图片。 模型的图片可以再次重置为默认徽标,自 0.11.0 以来,自定义图片只能被替换。#29007#27685提交
  • 👤 回退个人资料图片。 加载失败的个人资料图片(例如属于已删除帐户的图片)现在回退到默认头像,而不是在消息旁边显示被裁剪的占位符文本。#28270#28269
  • ⏱️ 工具中未回答的提示。 在设置 “WEBSOCKET_EVENT_CALLER_TIMEOUT” 的部署上,工具提出的未回答的问题现在报告超时而不是空回复,并且等待时间过长不再有断开仍打开的标签页的风险。#28311
  • 👪 组成员计数更新。 在管理面板中向组添加或移除某人现在会立即更新该组的成员计数,之前它保持在旧数字,直到页面重新加载。提交
  • 🕳️ 对话中留下的空白消息。 从未填充项目的流式事件不再在对话中留下空助手消息,并在每个后续轮次发送回模型。提交
  • 📓 笔记打开为空。 尚未开始共享编辑会话的笔记现在打开时显示其存储的内容,即使多人同时打开它,之前除第一个唯一查看者外,任何人都得到一个空文档。提交
  • 🤫 工具运行后静默停止的回复。 当提供者拒绝工具完成后提出的后续请求时,原因现在显示在聊天中,而不是回复只是结束而没有说明。提交#28633
  • 🎟️ 标签存储为纯文本的连接。 标签存储为纯文本的连接不再破坏其编辑器面板或静默清空其来自的每个模型上的标签。提交#28749
  • 🔌 直接 API 调用上的流式过滤器。 将流式事件作为对象读取的过滤器现在在直接对聊天完成端点发出的请求上工作,与每条其他路径匹配,之前它会引发并中途结束回复。提交
  • 🔇 没有说明的过滤器失败。 当过滤器的出口或流钩子引发时,失败现在在默认日志级别报告过滤器的名称和回溯,之前它被吞没,插件作者无从下手。提交
  • 🪜 基础模型消失时的回退。 与基础模型已被移除的工作区模型聊天现在回退到所有人的默认模型,之前回退仅适用于管理员,任何其他人都会在该基础模型没有自己的工作区条目时被拒绝,例如由管道提供的。提交
  • 🧠 切换模型后对话中断。 在推理模型回答后切换到不同的模型不再使对话无法使用,之前早期模型的存储推理被重放到提供者,然后拒绝每个后续请求。提交#28240
  • 👻 消息从对话中消失。 两件事同时保存同一个对话不再丢弃彼此的更改,之前消息可能在屏幕上消失,同时仍计入模型的上下文,并且在回复过程中附加的文件在下次保存时丢失。提交#28742
  • 🧬 工作区模型指向其自身。 基础模型设置为其自身标识符的工作区模型现在保存时没有该引用,之前在合并模型时条目被丢弃,因此其任何设置从未生效。提交#28952#28923
  • 📭 较短的模型列表在每个工作线程上卡住。 当一个工作线程短暂报告比其应有的更少模型时,该较短列表现在不会为整个部署保留,之前与缺失模型之一聊天在每个服务器上失败,直到某些内容重启。提交#28777
  • 📋 从终端浏览器复制。 复制文件路径或文件内容现在再次工作,之前在浏览器不视为安全来源的部署上静默地不做任何事情。提交提交#29015
  • 🗺️ 通过 Microsoft Web IQ 浏览网络。 使用网络加载器设置为 Microsoft Web IQ 获取页面现在可以工作,之前每次尝试在单个请求发出之前就失败,并且自该加载器添加以来一直如此。提交提交#28688
  • 🔛 启用或禁用所有自动化仅影响屏幕上的那些。 打开或关闭每个自动化现在覆盖与您当前搜索和过滤器匹配的每个自动化,之前它仅影响页面上加载的那些,并让其余部分保持原样。提交

变更

  • ⚠️ 数据库迁移:此版本包含数据库模式更改;我们强烈建议在生产环境升级之前备份您的数据库和所有相关数据。如果您运行的是多工作线程、多服务器或负载平衡部署,则所有实例必须同时更新,不支持滚动更新,这将导致由于模式不兼容而引起的应用程序故障。
  • 🏋️ “THREAD_POOL_SIZE” 现在调整大小。 该设置现在控制后台工作运行的两个池,之前它只控制一个,而另一个(承担大多数阻塞工作,包括知识搜索、登录和文件存储)固定在设置无法提高的较小上限上,因此将其设置较高的实例现在将使用比以前更多的线程,最多为两个池的配置值之和,而依赖旧上限来限制线程使用的实例应审查它。提交#28168
  • 💾 流式传输时保存回复。 “ENABLE_REALTIME_CHAT_SAVE” 设置不再有任何效果,因为正在进行的回复现在保存在数据库之外,并在完成时写入一次。提交
  • 🎭 Playwright 网络加载器出口。 使用 Playwright 加载器获取页面时,页面自身对图像、脚本和样式表的请求现在由 Open WebUI 后端而不是浏览器发出,因此通过 “PLAYWRIGHT_WS_URL” 使用远程浏览器的管理员应期望该流量从后端地址而不是浏览器主机离开,使用私有证书颁发机构的管理员应期望通过 “AIOHTTP_CLIENT_SSL_CERT_FILE” 信任它,而不是浏览器自己的存储,并且在加载器上设置代理的用户应知道它不再适用于这些请求,这些请求遵循环境的代理设置。#28634
  • 🐌 没有异步时 Playwright 页面加载较慢。 在同步路径上使用 Playwright 加载器获取的页面现在一次获取一个图像、脚本和样式表,而不是一起获取,在更改自身的测量中,对于具有三十个资产的页面,从 2.0 增加到 3.0 秒,对于具有八个慢资产的页面,从 1.1 增加到 4.5 秒;异步路径不受影响。#28634
  • 🐳 仅测试的包已从镜像中移除。 容器不再提供 pytest、pytest-docker、Docker SDK 或 netcat,Open WebUI 中没有任何内容使用它们,因此镜像更小;任何自己的工具或函数依赖于它们存在的用户需要自行安装它们。#28726
  • 🛡 嵌入页面中的表单现在默认工作。 在聊天中显示的页面(例如工件或 HTML 预览)现在可以提交表单,除非您将其关闭,之前除非您打开它否则被阻止。提交
  • 🅰 连接前缀现在显示在模型名称中。 连接的前缀现在出现在模型选择器中显示的名称中,而不仅仅在其标识符中,之前是否出现取决于提供者回复的形状,因此在某些连接上有效,在其他连接上无效;带有前缀的连接上的模型现在将读取方式与以前不同。#28950#28929
  • 📊 默认使用统计范围。 使用统计现在默认为每个人覆盖过去两年,而不是从创建帐户的日期开始。提交

更新内容 (原始)

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
  • 🖼 Downloading a generated image. Downloading an image from its preview now saves the image, where it could silently save a small file containing an authentication error instead, and a download that does fail now says so. Commit, #27723, #27722
  • 🗂 Directory sync listing local accounts. A directory service syncing accounts over SCIM now sees only the accounts that came from a directory, where it also listed and could modify accounts created with a password in Open WebUI itself. Commit
  • Sorting a list of people. Sorting the admin user list, or a channel’s member list, now works when no search term has been entered, where the chosen order was ignored unless something was being searched for. Commit
  • 🧶 Text dropped from a reply by a filter. A filter that rewrites a reply as it streams, or a provider that sends something other than plain text in a chunk, no longer causes that part of the reply to vanish without explanation. #28840
  • 🏗 Timers firing twice after a fork. Branching a conversation that has a timer set no longer leaves the copy able to fire that timer as well. #27663, #27622, #27745
  • 🗣 Sentences skipped in voice mode. Voice mode now speaks every sentence of a reply, where any sentence that completed in the same piece of the reply as another was silently never read out, which happened routinely with providers that send whole paragraphs at a time. Commit, #28730, #19861
  • 🖊 Dragging a side panel wider than the window. A side panel can no longer be dragged so wide that the chat beside it is squeezed away, and dragging one below its minimum width now closes it rather than sticking. Commit, #28965
  • 🎙 The wrong model selected when reopening a chat. Reopening a conversation where a reply was regenerated with a different model now selects the model behind the reply you are looking at, where it picked the one used for the first attempt, which might be a model no longer available. #27674, #25052, Commit
  • 🛜 Coding tools that speak Anthropic’s format. A tool such as Cline pointed at Open WebUI using Anthropic’s own message format can reach models again, where every request failed before it was even sent, and once that was corrected the request was rejected by Anthropic for being signed the wrong way. #27675, #27595, #27695
  • 👯 Code in pinned messages. Opening the pinned messages of a channel now shows the code in those messages, where each block appeared empty and its contents were drawn into the channel behind the dialog instead, doubling them there. #27740, #27739
  • 🧻 Logs flooded by an unreachable server. A terminal or tool server that cannot be reached now records one line per attempt rather than a full stack trace, where a few minutes of downtime could fill the log with hundreds of megabytes and drown out everything else. #27755, #27751, #27757, #27756
  • 🖱 Clicking inside a chat preview. Clicking an image or a source in the preview that appears when you hover a chat in the sidebar no longer flashes a viewer open and shut, since the preview is meant only to be read. #27770, #27769
  • 🛢 Using pgvector with database access by role. An instance on Amazon RDS that signs in to its database with a temporary credential rather than a stored password now starts when pgvector is the vector store, where the two could not be used together and the container exited on startup. #27754, #27752
  • 📗 Opening knowledge attached to a model or folder. Clicking a knowledge item attached to a model or a folder opens it again, so it can be read and its retrieval mode changed between focused retrieval and the whole document, where since 0.11.0 neither was possible outside a chat. #27686, #27684, #27801, #28825
  • 🎚 Retrieval mode shown from another item. The retrieval mode shown when opening a knowledge item is now that item’s own, where it could show the setting of whichever item was opened before it. #27686, #27684, #27801, #28825
  • 🔩 A new chat shown as nearly full. The indicator of how full a conversation is now counts tokens the same way the shortening does, where the two read different figures from providers that report both and a fresh chat could appear close to its limit. #27620, #27608, Commit
  • 🫱 Abandoned changes to a group’s sharing setting. Closing the edit dialog for a user group without saving now discards a change to who can share to that group, where the change stayed on screen and was written to the database the next time anything else about the group was saved. #28076, #28075
  • 📛 Editing the wrong group. The dialog for editing a user group now stays with the group it was opened for, where a reordering of the list beneath it could leave it saving to a different group. #28076, #28075
  • 🪢 Signing people out from the identity provider. A sign-out sent by an identity provider to end someone’s session now works, where the check that the message was genuine could fail against providers whose signing keys need the same authentication as everything else, leaving the person signed in. Commit
  • 🪣 Files left behind when a knowledge base is emptied. Emptying a knowledge base now removes the files it held, along with their stored copies and their search data, where all three were left behind with nothing in the interface to clear them. Commit, #27988
  • Blank errors when a tool server’s saved sign-in cannot be read. A tool server whose stored sign-in details cannot be decrypted, which happens when “WEBUI_SECRET_KEY” changes since the key protecting them follows it, now names the server and says to reconnect it, where every startup logged two errors with no message at all. Commit, #28666, #28665
  • 🖍 Clearing the supported media types. Emptying the supported media types in the documents settings now stays empty, where the previous value came back on the next visit, so images kept being sent to the extraction engine instead of straight to a model that can read them. #28750, #28747, Commit
  • 🫳 Dropping a chat where it already was. Dragging a chat in the sidebar and releasing it where it started no longer reloads the whole sidebar, which took around a dozen requests for a move that changed nothing. #28664, #28663
  • 🖲 Filtering while on a later page. Changing a filter in the workspace, such as showing only what you created, now returns to the first page, where the list could come back empty with the page controls gone and no way back. #28734, Commit
  • 🪺 Workspace counts left behind. The number beside each workspace tab now follows its list, where creating, copying, importing, or deleting something left the old number in place until you moved to another tab or reloaded, and the tools count ignored its search entirely. #28983, #28981
  • 📞 Links that start a voice call. Opening a link that starts a call now starts one, where it opened the controls pane and stopped there, leaving the only way to begin a call from outside the application broken. #28721, #28677, Commit
  • 🆔 Signing in where the provider uses a numeric account id. Signing in through GitHub, or any other provider that identifies people by a number, works again on PostgreSQL, where every attempt failed outright since 0.10.2, and on SQLite the existing account was not matched; accounts stored the old way are corrected on the next sign-in. Commit, #28954, #27760
  • Chats opening halfway up. A conversation whose recent messages are short now opens at the latest message rather than somewhere in the middle, and older messages loaded while scrolling up no longer shift what you were reading. #28657, #28656
  • 🛤 The terminal picker vanishing mid-reply. The terminal picker now stays in place while a reply is being written, greyed out until it finishes, where it disappeared from the message box entirely and took the name of the selected terminal with it. Commit
  • 🎧 Who a channel says its members are. The member list of a channel now includes its owner and everyone in a group that was granted access, where the owner never appeared and granting both a person and a group they were not in listed nobody at all while the count beside it said two. #28289, #28288, Commit
  • Embedding servers behind a password. An embedding server protected by a username and password rather than a key now works, where an empty key still sent an authorisation header, which such a server rejected and which made document uploads fail. #28684, #28683, Commit
  • Note edits lost without warning. Typing in a note now reaches the database, where a save already waiting could be cancelled without a replacement, leaving the editor showing text that was never stored and nothing to say so; this affected notes written by a model or through the API, and any instance without Redis after a restart. #28669, #28667
  • 🗄 Browsing outside the home directory in a terminal. A terminal server set to allow browsing the whole filesystem can be browsed above the home directory again, where the file panel pinned itself there and opening a file elsewhere quietly did nothing. #29006, #29000
  • 🏞 Clearing a model’s picture. A model’s picture can be reset to the default logo again, where since 0.11.0 a custom one could only ever be replaced. #29007, #27685, Commit
  • 👤 Fallback profile pictures. A profile picture that fails to load, such as one belonging to a deleted account, now falls back to the default avatar instead of showing clipped placeholder text beside the message. #28270, #28269
  • ⏱️ Unanswered prompts in tools. On deployments that set “WEBSOCKET_EVENT_CALLER_TIMEOUT”, a question a tool asks you that goes unanswered now reports a timeout rather than an empty reply, and waiting too long no longer risks disconnecting a tab that is still open. #28311
  • 👪 Group member counts updating. Adding or removing someone from a group in the admin panel now updates that group’s member count straight away, where it stayed at the old number until the page was reloaded. Commit
  • 🕳️ Blank messages left in a conversation. Streamed events that never fill in an item no longer leave an empty assistant message saved in the conversation and sent back to the model on every later turn. Commit
  • 📓 Notes opening blank. A note whose shared editing session has not been started yet now opens with its stored content even when several people open it at once, where previously anyone but a lone first viewer got an empty document. Commit
  • 🤫 Replies stopping silently after a tool ran. When a provider rejects the follow-up request made after a tool finishes, the reason is now shown in the chat instead of the reply simply ending with nothing said. Commit, #28633
  • 🎟️ Connections whose tags were saved as plain text. A connection with tags stored as plain text no longer breaks its editor panel or silently blanks the tags on every model coming from it. Commit, #28749
  • 🔌 Stream filters on direct API calls. A filter reading a streamed event as an object now works on requests made straight to the chat completions endpoint, matching every other path, where it used to raise and end the reply partway. Commit
  • 🔇 Filter failures that said nothing. When a filter’s outlet or stream hook raises, the failure is now reported with the filter’s name and a traceback at the default log level, where it was swallowed and left plugin authors with nothing to go on. Commit
  • 🪜 Falling back when a base model is gone. Chatting with a workspace model whose base model has been removed now falls back to the default model for everyone, where the fallback previously applied only for administrators and anyone else was refused whenever that base model had no workspace entry of its own, such as one supplied by a pipe. Commit
  • 🧠 Conversations breaking after a model switch. Switching to a different model once a reasoning model has answered no longer leaves the conversation unusable, where the earlier model’s stored reasoning was replayed to a provider that then rejected every later request. Commit, #28240
  • 👻 Messages disappearing from a conversation. Two things saving the same conversation at once no longer discard each other’s changes, where a message could vanish from the screen while still counting toward the model’s context and a file attached during a reply was lost on the next save. Commit, #28742
  • 🧬 Workspace models pointing at themselves. A workspace model whose base model was set to its own identifier is now saved without that reference, where the entry was thrown away while models were being combined so none of its settings ever took effect. Commit, #28952, #28923
  • 📭 A short model list sticking on every worker. When one worker briefly reports fewer models than it should, that shorter list is no longer left in place for the whole deployment, where chatting with one of the missing models failed on every server until something restarted. Commit, #28777
  • 📋 Copying from the terminal file browser. Copying a file path or a file’s contents now works again, where it silently did nothing on deployments the browser does not treat as a secure origin. Commit, Commit, #29015
  • 🗺️ Browsing the web through Microsoft Web IQ. Fetching a page with the web loader set to Microsoft Web IQ now works, where every attempt failed before a single request was made and had done so ever since that loader was added. Commit, Commit, #28688
  • 🔛 Enable or disable all automations only reaching the ones on screen. Turning every automation on or off now covers every automation matching your current search and filter, where it only ever touched the ones loaded on the page you were looking at and left the rest running as they were. Commit

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.
  • 🏋️ What “THREAD_POOL_SIZE” now sizes. The setting now governs both of the pools that background work runs in, where it previously governed only one and the other, carrying most of the blocking work including knowledge searches, sign-ins and file storage, was fixed at a small ceiling no setting could raise, so an instance that set it high will now use more threads than before, up to twice the configured value across the two pools, and one that relied on the old ceiling to hold thread use down should review it. Commit, #28168
  • 💾 Saving replies as they stream. The “ENABLE_REALTIME_CHAT_SAVE” setting no longer has any effect, because a reply in progress is now held outside the database and written once when it finishes. Commit
  • 🎭 Playwright web loader egress. When a page is fetched with the Playwright loader, the page’s own requests for its images, scripts, and stylesheets are now made by the Open WebUI backend instead of by the browser, so administrators using a remote browser through “PLAYWRIGHT_WS_URL” should expect that traffic to leave from the backend’s address rather than the browser host, those using a private certificate authority should expect it to be trusted through “AIOHTTP_CLIENT_SSL_CERT_FILE” rather than the browser’s own store, and those who set a proxy on the loader should know it no longer applies to these requests, which follow the environment’s proxy settings instead. #28634
  • 🐌 Slower Playwright page loads without async. A page fetched with the Playwright loader on the synchronous path now fetches its images, scripts, and stylesheets one at a time rather than together, which in the change’s own measurements took a page with thirty assets from 2.0 to 3.0 seconds, and one with eight slow assets from 1.1 to 4.5 seconds; the asynchronous path is unaffected. #28634
  • 🐳 Test-only packages removed from the image. The container no longer ships pytest, pytest-docker, the Docker SDK, or netcat, none of which anything in Open WebUI used, so the image is smaller; anyone whose own tools or functions relied on those being present will need to install them themselves. #28726
  • 🛡 Forms in embedded pages now work by default. A page shown inside a chat, such as an artifact or an HTML preview, may now submit forms unless you turn that off, where it was blocked unless you turned it on. Commit
  • 🅰 Connection prefixes now show in model names. A connection’s prefix appears in the name shown in the model picker, not only in its identifier, where whether it did depended on the shape of the provider’s reply and so worked on some connections and not others; models on prefixed connections will now read differently than before. #28950, #28929
  • 📊 Default usage statistics range. Usage statistics now cover the past two years by default for everyone, instead of starting from the date the account was created. Commit

下载链接