- [更新日志(简体中文)](#chinese)
- [Changelog(English)](#english)

<a id="chinese"></a>

## What's Changed

### 重点更新

- 修复钉钉 Stream 任务异常退出后无法持续重连的问题，提升钉钉适配器长连接稳定性。([#8610](https://github.com/AstrBotDevs/AstrBot/pull/8610))
- Dashboard 登录新增 TOTP 双因素认证。([#8189](https://github.com/AstrBotDevs/AstrBot/pull/8189))
- Dashboard 侧边栏新增插件 WebUI 入口，并支持 MDI 图标；插件页面现在会同步 Dashboard 主题。([#8569](https://github.com/AstrBotDevs/AstrBot/pull/8569), [#8390](https://github.com/AstrBotDevs/AstrBot/pull/8390))
- 新增未来任务 UI，并新增 `/name` 命令用于命名 umo 且在 UI 中展示。([#8559](https://github.com/AstrBotDevs/AstrBot/pull/8559), [#8575](https://github.com/AstrBotDevs/AstrBot/pull/8575))
- MiniMax Token Plan 支持动态获取模型列表，默认模型升级为 M3。([#8475](https://github.com/AstrBotDevs/AstrBot/pull/8475), [#8505](https://github.com/AstrBotDevs/AstrBot/pull/8505))
- 优化长期记忆与上下文压缩，提高压缩质量和 KV-cache 命中率。([#8530](https://github.com/AstrBotDevs/AstrBot/pull/8530), [#8226](https://github.com/AstrBotDevs/AstrBot/pull/8226))

### 修复

- 修复 Provider 统计遇到 SQLite lock 时未重试的问题。([commit](https://github.com/AstrBotDevs/AstrBot/commit/1ad2b2c38))
- 修复空 modalities 被当作已配置能力，导致核心图片请求错误路由到视觉 fallback 的问题。([#8451](https://github.com/AstrBotDevs/AstrBot/pull/8451))
- 修复 Reply 组件 `toDict` 额外字段导致私聊消息发送失败的问题。([#8477](https://github.com/AstrBotDevs/AstrBot/pull/8477))
- 修复带 Reply 组件唤醒机器人且用户提示为空时的处理问题。([#8461](https://github.com/AstrBotDevs/AstrBot/pull/8461))
- 修复 aiocqhttp 适配器无法解析语音的问题，并增加音频文件存在性检查。([#8523](https://github.com/AstrBotDevs/AstrBot/pull/8523), [#8529](https://github.com/AstrBotDevs/AstrBot/pull/8529))
- 修复 OpenAI Embedding 在 SiliconFlow 非 Qwen embedding 模型上的无效参数问题。([#8508](https://github.com/AstrBotDevs/AstrBot/pull/8508))
- 修复 Gemini Embedding 批量文本在 `gemini-embedding-2` 上被折叠的问题。([#8537](https://github.com/AstrBotDevs/AstrBot/pull/8537))
- 修复 WeCom AI 消息链提取纯文本时的空白处理问题。([#8563](https://github.com/AstrBotDevs/AstrBot/pull/8563))
- 修复 Dashboard 在 launcher 下运行时 frame 安全头过于严格的问题。([#8554](https://github.com/AstrBotDevs/AstrBot/pull/8554))
- 修复控制台 pip 安装错误展示，改为使用 toast 提示。([#8462](https://github.com/AstrBotDevs/AstrBot/pull/8462))
- 优化模板配置相关问题。([#8228](https://github.com/AstrBotDevs/AstrBot/pull/8228))

### 优化与工程

- 增强 Reply 消息链对 Record 组件的处理。([#8527](https://github.com/AstrBotDevs/AstrBot/pull/8527))
- Whisper STT 调用 OpenAI 转写接口后会关闭音频文件句柄。([#8528](https://github.com/AstrBotDevs/AstrBot/pull/8528))
- 防止唤醒命令被记录为群聊上下文。([#8536](https://github.com/AstrBotDevs/AstrBot/pull/8536))
- 修正中文文本中的 token 术语。([#8465](https://github.com/AstrBotDevs/AstrBot/pull/8465))
- 更新 GitHub Actions 依赖。([#8533](https://github.com/AstrBotDevs/AstrBot/pull/8533))

<a id="english"></a>

## What's Changed (EN)

### Highlights

- Fixed DingTalk Stream task recovery so the adapter keeps reconnecting after unexpected SDK task exits. ([#8610](https://github.com/AstrBotDevs/AstrBot/pull/8610))
- Added TOTP two-factor authentication for Dashboard login. ([#8189](https://github.com/AstrBotDevs/AstrBot/pull/8189))
- Added plugin WebUI entries to the Dashboard sidebar with MDI icon support, and synchronized Dashboard theme styling into plugin pages. ([#8569](https://github.com/AstrBotDevs/AstrBot/pull/8569), [#8390](https://github.com/AstrBotDevs/AstrBot/pull/8390))
- Added the future task UI and introduced `/name` for naming umo entries shown in the UI. ([#8559](https://github.com/AstrBotDevs/AstrBot/pull/8559), [#8575](https://github.com/AstrBotDevs/AstrBot/pull/8575))
- MiniMax Token Plan can now fetch model lists dynamically, with the default model upgraded to M3. ([#8475](https://github.com/AstrBotDevs/AstrBot/pull/8475), [#8505](https://github.com/AstrBotDevs/AstrBot/pull/8505))
- Improved long-term memory and context compression quality, including better KV-cache hit rates. ([#8530](https://github.com/AstrBotDevs/AstrBot/pull/8530), [#8226](https://github.com/AstrBotDevs/AstrBot/pull/8226))

### Bug Fixes

- Retried provider stats reads when SQLite is locked. ([commit](https://github.com/AstrBotDevs/AstrBot/commit/1ad2b2c38))
- Treated empty modalities as unconfigured so image requests do not incorrectly route to vision fallback. ([#8451](https://github.com/AstrBotDevs/AstrBot/pull/8451))
- Fixed private message sending failures caused by extra fields in Reply component `toDict` output. ([#8477](https://github.com/AstrBotDevs/AstrBot/pull/8477))
- Fixed waking the bot with a Reply component and an empty user prompt. ([#8461](https://github.com/AstrBotDevs/AstrBot/pull/8461))
- Fixed voice parsing in the aiocqhttp adapter and added an audio file existence check. ([#8523](https://github.com/AstrBotDevs/AstrBot/pull/8523), [#8529](https://github.com/AstrBotDevs/AstrBot/pull/8529))
- Fixed invalid OpenAI Embedding parameters for SiliconFlow non-Qwen embedding models. ([#8508](https://github.com/AstrBotDevs/AstrBot/pull/8508))
- Wrapped Gemini batch embedding texts in Content to avoid collapse on `gemini-embedding-2`. ([#8537](https://github.com/AstrBotDevs/AstrBot/pull/8537))
- Fixed whitespace handling when extracting plain text from WeCom AI message chains. ([#8563](https://github.com/AstrBotDevs/AstrBot/pull/8563))
- Relaxed Dashboard frame security headers when running under the launcher. ([#8554](https://github.com/AstrBotDevs/AstrBot/pull/8554))
- Displayed console pip-install errors with toast messages. ([#8462](https://github.com/AstrBotDevs/AstrBot/pull/8462))
- Optimized template config handling. ([#8228](https://github.com/AstrBotDevs/AstrBot/pull/8228))

### Improvements and Maintenance

- Enhanced Reply chain handling for Record components. ([#8527](https://github.com/AstrBotDevs/AstrBot/pull/8527))
- Closed audio file handles after OpenAI transcription calls in Whisper STT. ([#8528](https://github.com/AstrBotDevs/AstrBot/pull/8528))
- Prevented wake commands from being recorded as group chat context. ([#8536](https://github.com/AstrBotDevs/AstrBot/pull/8536))
- Fixed Chinese token terminology. ([#8465](https://github.com/AstrBotDevs/AstrBot/pull/8465))
- Updated GitHub Actions dependencies. ([#8533](https://github.com/AstrBotDevs/AstrBot/pull/8533))
