v2.3.4
Highlights
- You can now transcribe inbound audio attachments, with ASR enabled by default for paired setups and improved credential/config refresh handling (#319, #321).
- You can now receive silent release notifications, making update prompts less disruptive (#314).
- Fixed several user-binding and WeChat onboarding issues, including clearer binding menus and more reliable bind hints during first contact and QR rebinds (#316, #317, #318).
- Improved UI and remote access reliability with the FastAPI-based UI server migration, dashboard cloud metric linking, and fixes for compatibility, proxy, and request-handling regressions (#309, #320, #323).
Changes
Added
- Add silent release notifications for less disruptive update prompts (#314).
- Add transcription support for inbound audio attachments (#319).
Changed
- Migrate the UI server to FastAPI (#309).
- Polish remote access cards for a cleaner remote access UI (#323).
- Enable ASR by default when a device is paired (#321).
Fixed
- Clarify user binding menus in the UI (#316).
- Defer the WeChat bind menu hint until the first message is received (#317).
- Rearm the WeChat bind menu hint after QR rebind, and retry pending hints after send failures (#318).
- Link the dashboard cloud metric correctly, and gate the cloud link on pairing state (#320).
- Restore and complete UI compatibility route/request handling, defer compat JSON parsing until after guards, and offload compat sync handlers (#309).
- Tighten UI loopback proxy host gating and reject spoofed test remote address headers (#309).
- Close SOCKS sockets on TLS failure and keep discovery helpers synchronous under ASGI (#309).
- Use installer-aware Codex upgrades and prefer Homebrew upgrades where applicable (#313).
- Isolate backend CLI upgrades and Claude auth config, and surface install/cleanup/refresh failure messages (#315).
- Deduplicate concurrent install jobs to avoid overlapping backend installs (#315).
- Preserve Claude auth tokens on save, harden settings JSON writes, and fail OAuth when settings cleanup fails (#315).
- Fix a regression in Claude state file mounting (#315).
- Atomically claim processed messages and improve session persistence, alias reloads, fallback handling, snapshot upserts, and processed-claim pruning/preservation (#322).
- Acknowledge Slack events before async processing and drain acknowledged event tasks on shutdown.
- Refresh audio config and ASR credentials before transcription, support Telegram voice files more reliably, and localize transcript echo labels (#319, #321).
Full Changelog: v2.3.3...v2.3.4
Highlights
- 现在你可以直接转写收到的音频附件;在已配对场景下,ASR 也默认开启,并补强了配置与凭证刷新流程(#319, #321)。
- 现在支持静默发布通知,更新提醒更不打扰使用流程(#314)。
- 修复了多项用户绑定与微信引导问题,包括更清晰的绑定菜单,以及首次消息、二维码重新绑定时更可靠的提示行为(#316, #317, #318)。
- 通过将 UI 服务迁移到 FastAPI,并修复仪表盘云指标链接、兼容路由、代理与请求处理相关问题,整体界面与远程访问稳定性进一步提升(#309, #320, #323)。
Changes
Added
Changed
Fixed
- 修复 UI 中用户绑定菜单表述不清的问题(#316)。
- 修复微信绑定菜单提示过早出现的问题,改为在收到第一条消息后再提示(#317)。
- 修复二维码重新绑定后微信绑定提示不会重新激活的问题,并补上发送失败后的重试逻辑(#318)。
- 修复仪表盘云指标链接,并根据配对状态控制云链接显示(#320)。
- 修复并补全 UI 兼容路由与请求处理逻辑,将兼容 JSON 解析延后到校验之后,并把兼容同步处理器移出主流程(#309)。
- 修复 UI 回环代理主机校验过宽的问题,并拒绝伪造的测试远端地址请求头(#309)。
- 修复 TLS 失败时 SOCKS 套接字未关闭的问题,并保持 ASGI 下发现辅助逻辑的同步行为(#309)。
- 修复 Codex 升级流程,支持识别安装方式,并在适用时优先使用 Homebrew 升级(#313)。
- 修复后端 CLI 升级与 Claude 认证配置互相影响的问题,并补充安装、清理、刷新失败时的错误提示(#315)。
- 修复并发安装任务可能重复执行的问题,避免后端安装互相冲突(#315)。
- 修复 Claude 设置保存时认证令牌丢失的问题,加固 settings JSON 写入,并在设置清理失败时让 OAuth 明确报错(#315)。
- 修复 Claude 状态文件挂载回归问题(#315)。
- 修复消息处理状态竞争问题,改为原子化认领已处理消息,并改进会话别名重载、回退逻辑、SQLite 快照更新以及处理记录的清理与保留(#322)。
- 修复 Slack 事件在异步处理前未及时确认的问题,并在关闭时正确清空已确认事件任务。
- 修复音频转写前配置与 ASR 凭证刷新问题,改进 Telegram 语音文件处理,并补全转写回显标签本地化(#319, #321)。
Full Changelog: v2.3.3...v2.3.4