4.26.5 - 2026-07-07
Added
- Added support for setting a custom bot ID while creating a platform by scanning a QR code. (#9067)
- Added ChatUI project workspaces. (#9066)
- Added improved ChatUI attachment display. (#9134)
- Added malformed tool-call name sanitation in
ToolLoopAgentRunner. (#9144) - Added model metadata in selectors and a chat token usage indicator. (#9161)
- Added event-loop diagnostics and expanded diagnostics documentation. (#9168)
- Added documentation for cross-platform compatibility and Python version support.
- Added test coverage for POSIX file URI root preservation. (#8906)
Changed
- Log event-loop watchdog startup at the info level.
- Keep model metadata separate from providers. (#9161)
- Polish snackbar styling in the WebUI. (#9173)
Fixed
- Enabled only synced ModelScope MCP servers. (#9084)
- Improved MCP client startup and shutdown handling to avoid idle spinning and clean up on errors, timeouts, and cancellation. (#9070)
- Replaced fragile knowledge-base duplicate-name error matching with a pre-check. (#9121)
- Improved knowledge-base retrieval resilience on per-knowledge-base failures and rerank selection. (#9122)
- Cleaned up
KBMediarecords on document deletion and fixed knowledge-base stats updates. (#9120) - Aligned the knowledge-base CRUD API contract with
kb_name, canonical payload fields, and OpenAPI types. (#9000) - Constrained custom workspace paths and preserved absolute custom workspace paths.
- Improved web search API key failover.
- Enforced ownership when reading ChatUI sessions. (#9141)
- Secured project update temporary staging. (#9083)
- Improved QQ Official retry behavior when websocket send returns
None. (#8977) - Preserved QQ Official quoted message context. (#9164)
- Removed QQ Official reply IDs on proactive fallback so oversized passive replies can succeed via proactive sending. (#9169)
- Adapted MiMo STT to V2.5 models and rejected non-WAV audio payloads. (#9118)
- Serialized webchat history timestamps as UTC-aware ISO strings. (#9159)
- Synced plugin activation status on enable in the WebUI. (#9156)
- Exited MCP
anyiocontexts in the lifecycle task on disable. (#9132) - Fixed leaked SSE exit stack handling that could cause MCP epoll busy-wait. (#8307)
Commits
- feat(platform): 支持扫码创建时自定义机器人ID by @NayukiChiba in #9067
- fix: enable only synced ModelScope MCP servers by @VectorPeak in #9084
- feat: add ChatUI project workspaces by @Soulter in #9066
- fix: Improve MCP client startup and shutdown handling to prevent idle spinning when a server is disabled and ensure proper cleanup on errors, timeouts, and cancellation by @GlowingBrick in #9070
- fix(kb): replace fragile error string matching with pre-check for duplicate kb_name by @lxfight in #9121
- fix(kb): improve retrieval resilience on per-KB failure and rerank selection by @lxfight in #9122
- fix(kb): clean up KBMedia records on document delete, fix update_kb_stats by @lxfight in #9120
- fix: align knowledge base CRUD API contract with kb_name, canonical payload fields, and matching OpenAPI types by @lxfight in #9000
- fix(core): 修复 Tavily 其他5种search方法 API Key 和轮询失败未自动切换的问题 by @NayukiChiba in #8896
- feat: improve ChatUI attachment display by @Soulter in #9134
- fix: enforce ownership when reading ChatUI sessions by @VectorPeak in #9141
- fix: secure project update temp staging by @LIghtJUNction in #9083
- fix: Add retry handling to QQ Official websocket adapter when the send-message API returns None to mitigate transient failures by @shuiping233 in #8979
- fix: adapt MiMo STT to V2.5 models and reject non-WAV audio payloads by @tangtaizong666 in #9118
- test: cover POSIX file URI root preservation by @casama233 in #8906
- feat: add sanitation for malformed tool call names in ToolLoopAgentRunner by @Soulter in #9144
- feat: show model metadata in selectors by @Soulter in #9160
- fix: keep model metadata separate from providers by @Soulter in #9161
- fix: serialize webchat history timestamps as UTC-aware ISO strings by @leafliber in #9159
- feat: add chat token usage indicator by @Soulter in #9162
- fix(webui): sync plugin activation status on enable by @Koishi0425 in #9156
- fix: preserve qq official quoted message context by @Soulter in #9164
- fix: exit MCP anyio contexts in the lifecycle task on disable by @kldsjfas in #9132
- fix(mcp): attempt to fix epoll busy-wait caused by leaked SSE exit stack by @lingyun14beta in #8307
- fix: remove qq official reply id on proactive fallback by @Soulter in #9169
- feat: add event loop diagnostics by @Soulter in #9168
- style: polish snackbar appearance by @Soulter in #9173
- chore: bump version to 4.26.5 by @Soulter in #9174
New Contributors
- @GlowingBrick made their first contribution in #9070
- @tangtaizong666 made their first contribution in #9118
- @casama233 made their first contribution in #8906
- @Koishi0425 made their first contribution in #9156
- @kldsjfas made their first contribution in #9132
Full Changelog: v4.26.4...v4.26.5