## 2026.7.2
### 亮点
- **远程编码会话:** 在云端工作节点上运行 Control UI 会话,在宿主主机上的终端中打开 Codex 和 Claude 目录会话,并直接在终端中恢复 OpenCode 和 Pi 会话。(#107670, #107086, #107200)
- **原生自动化和节点:** 将自动化功能同步到移动端,在 Android 上新增前台语音唤醒,并从无头 Linux 节点中暴露摄像头、定位和通知功能。(#106355, #107081, #107193)
- **更安全的频道操作:** 防止重启后 Telegram 持久性入口丢失,在活动轮次中保持 Signal 停止和审批控制响应,并阻止频道白名单授予所有者访问权限。(#107288, #107422, #107403)感谢 @obviyus、@arduano 和 @yetval。
- **引导式 Control UI 设置:** 从设置中配置模型提供商,通过引导式设置页面接入频道,并在创建会话时选择图像和模型。(#106490, #106469, #107358)感谢 @alexandre-leng 和 @fuller-stack-dev。
- **网关与会话恢复:** 防止重启准入使网关陷入死锁,在完成化停滞时恢复回复会话,并使一次性 cron 任务在生命周期声明竞争期间保持启用状态。(#107339, #106792, #107236)感谢 @obviyus、@joshavant、@charliemeyer2000 和 @SL4N。
- **安装与打包:** 新增附带网关指引的 Linux deb 和 AppImage 包,从基于稳定主干的版本发布,并让 Windows 安装程序在 winget 添加 Node.js 后立即继续执行。(#106533, #106891, #106862)
### 变更
- **外部网关监管:** 为生命周期所有者(如 OCM)添加 `OPENCLAW_SUPERVISOR_MODE=external`,保留已验证的重启和延迟行为,不暴露原生服务权限,阻止原生服务变更和自更新,并提供版本化的原子重启移交消费合约。感谢 @shakkernerd。
- **ClickClack 引导式设置:** 从 `openclaw onboard` 或 `openclaw channels add clickclack` 配置 ClickClack,输入 URL、令牌和工作区提示,支持默认账户环境变量回退、非致命实时连接验证,以及网关感知的后续步骤(当 OpenClaw 已在运行时自动连接)。感谢 @shakkernerd。
- **ClickClack 命令菜单:** 在网关启动时,将每个机器人的原生 OpenClaw 命令发布到 ClickClack 编辑器自动补全中,支持按账户选择退出,并对旧令牌和服务器进行非致命兼容性处理。感谢 @shakkernerd 和 @vincentkoc。
- **技能工坊审批:** 默认情况下,允许代理发起的应用、拒绝和隔离操作无需额外审批提示,同时保留 `skills.workshop.approvalPolicy: "pending"` 作为可选的审批关卡。感谢 @shakkernerd。
- **TUI 模糊选择器:** 将列表匹配委托给 pi-tui,新增斜杠标记和字母数字匹配,移除了本地匹配器分支。
- **macOS 配对节点终端:** 从嵌入式节点主机通告双工 Codex 和 Claude 终端恢复命令,并通过原生应用桥转发交互式输入和取消操作。(#107335)
- **Control UI 目录终端:** 在 Gateway 或配对节点主机上的原生 CLI 中打开符合条件的 Codex 和 Claude Code 会话,支持查看器与终端偏好、已验证的恢复命令以及交互式 PTY 中继。(#107086)感谢 @vincentkoc。
- **技能工坊历史审查:** 新增手动、新优先的会话扫描,逐步搜索旧的重要工作以获取保守的技能点子,仅存储 SQLite 游标元数据,即使禁用自主自学习,也会留下最多三条结果作为待定提议。(#106182)
- **OpenAI GPT-5.6 默认值:** 使用 `openai/gpt-5.6`(Sol 别名)进行全新 API 密钥设置,使用 `openai/gpt-5.6-sol` 进行全新 Codex/OAuth 设置,默认 Sol 在两个运行时中采用中等推理,并保留现有的主模型、回退、别名和显式 GPT-5.5 选择。(#103234)
- **iOS 离线聊天:** 从受保护的、有界且按网关的缓存中预绘制最近会话和规范转录,离线时保持发送禁用,重置配对时清除缓存的对话文本。(#100194)
- **Slack 进度指示器:** 默认使用 Slack 原生助手线程状态和旋转加载消息,同时保持确认反应静态;生命周期反应更新现在需要 `messages.statusReactions.enabled: true`。
- **Control UI Talk 控件:** 在设置 → 通信 → Talk 中保持语音、模型、灵敏度及其他实时默认值,并使用编辑器麦克风光标选择任意浏览器音频输入。(#101046)
- **Control UI 会话工作区快捷键:** 使用 ⇧⌘B 展开或折叠活动聊天窗格的会话工作区轨道,而不改变主应用侧边栏或单独的详情和 Canvas 预览面板。感谢 @shakkernerd。
- **Control UI 设置快捷键:** 使用 ⇧⌘, 打开设置,同时保留浏览器拥有的 ⌘, 快捷键不变。感谢 @shakkernerd。
- **Control UI 聊天布局:** 将转录内容居中于编辑器轴,助手和工具输出靠左,用户气泡靠右,保持在相同的可读框架内,并保留自定义消息宽度覆盖。(#104474)感谢 @shakkernerd、@vincentkoc 和 @zw-xysk。
- **Control UI 编辑器底栏:** 将聊天设置芯片和模型控件居中于分隔线和卡片边缘之间,而非固定在分隔线上。(#105866)
- **Control UI 助手操作:** 将助手名称和时间放在首位,悬停操作放在其左侧而不是最边缘。感谢 @shakkernerd。
- **Control UI 消息上下文:** 通过悬停或激活时的时间戳显示每条消息的令牌、上下文和模型详细信息,而不是显示单独的“上下文”按钮。
- **Control UI 会话标题:** 使用减运动安全的悬停动画展示截断的最近会话名称。
- **Control UI 侧边栏用量:** 从展开的侧边栏中移除提供商用量配额行,同时在聊天编辑器和用量页面中保留用量详情。感谢 @shakkernerd 和 @vincentkoc。
- **工作板调度上限:** 新增请求范围的 `--max-starts` 覆盖,同时保留默认上限、顺序启动和每所有者单卡保护。(#100174)感谢 @souvikDevloper、@Souvikalp 和 @jwest75674。
- **插件安装来源警告:** 对于 CLI 和聊天安装中的任意可执行插件源,要求显式 `--force` 确认;保持受信任的 ClawHub、捆绑、官方目录和跟踪更新流程无障碍;并将 Crestodian 安装限制为受信任源。(#102197)感谢 @jesse-merhi。
- **云端工作节点:** 为远程会话执行添加会话放置、调度和工作节点轮次路由。(#106332)
- **配对节点编码代理:** 发现 OpenCode 和 Pi 会话,并通过流式 CLI 代理运行继续 Codex 和 Claude 目录会话。(#106941, #106927, #105833)
- **目录会话:** 直接从 Control UI 侧边栏创建符合条件的目录会话。(#105810)感谢 @fuller-stack-dev。
- **管理工作树:** 从设置中按数量和总大小配置清理限制。(#106224)
- **Cron 历史:** 从任务账本提供定时运行历史。(#106392)
- **编码代理记忆:** 将 Codex 和 Claude Code 记忆导入 Control UI。(#106406)
- **MCP 隔离:** 将 MCP 服务器连接限定在其请求会话范围内。(#106359)感谢 @obviyus。
- **Discord 语音:** 当语音频道参与者发生变化时通知代理。(#107004)
- **Codex 用量:** 在应用服务器用量窗口旁显示已登录账户的电子邮件。(#106500)
- **技能工坊:** 扫描先前会话历史以获取保守的、可审查的技能点子。(#106766)
- **任务预览:** 在运行任务状态行中显示最新任务。(#107297)
- **会话变更:** 在 Control UI 会话中显示活动分支和本地变更文件状态。(#106835)
- **频道进度:** 为长时间运行的工作预留进度草稿,并使用模型自身的开头部分作为状态标题。(#106026)
- **Codex CLI:** 将捆绑插件升级至 Codex CLI 0.144.6,并将 GPT-5.6 Codex 上下文元数据对齐至上游 272k 限制。
### 修复
- **云端工作节点派生工作区缓存:** 对称排除 Python 缓存、依赖树和 macOS 元数据,避免本地缓存重写导致后续云结果或工作节点回收受阻。
- **Codex 模型状态诊断:** 当装备插件被禁用、缺失或隔离时,将已配置的 Codex 路由报告为不可用,同时保留单独的凭据结果,并使 `models status --check` 失败,而非静默地将回退执行视为正常。感谢 @shakkernerd。
- **网关控制平面速率限制:** 使用每方法桶,预算每分钟 30 次,使交互式管理员写入保持响应,同时保留无限循环保护。
- **Signal 关闭交付:** 在停止监视器之前排干已接受的入口消息,使关闭前立即收到的消息能完成处理而非丢弃。
- **外部监管程序重启健康检查:** 仅当替换网关锁和监听器 PID 一致时接受设备身份策略关闭,防止 OCM 管理的重启在成功交握后超时。感谢 @shakkernerd。
- **ACPX 清理进程检查:** 限制主机进程表读取,使停滞的 `ps` 调用不会挂起网关启动或会话清理,同时保留失败关闭的所有权检查。感谢 @Alix-007。
- **Cron 生命周期冲突重试:** 在计划运行、手动运行和启动恢复运行中保留执行阶段的重试决策,使执行后声明冲突不会重播已完成的消息或工具。修复 #108428。感谢 @yetval。
- **Discord 网关元数据截止时间:** 将现有查找截止时间传递至 DNS 和代理预检、请求头及响应体,使停滞的网关启动能干净中止。(#104580)感谢 @hugenshen。
- **Control UI 云会话思考:** 在新建会话模型选择器中展示推理层级,并在云调度前持久化所选层级。
- **iOS 全新安装设置:** 在钥匙串清理前原子化遮盖已使用的设置凭据,使延迟的项删除不再导致已成功配对的设备断开。修复 #107591。感谢 @dagmarjeeves-lab 和 @vincentkoc。
- **Tlon SSE 连接清理:** 在 HTTP 响应失败和流打开被拒绝后解除打开截止时间,使重连尝试不会留下陈旧的定时器。(#104585)感谢 @hugenshen。
- **LINE 回复令牌媒体类型:** 在入站回复中处理视频和音频元数据,与主动发送共享规范媒体构建器,并在记录空媒体投递时显式失败而非默默接受。(#106515)感谢 @edenfunf。
- **Mattermost websocket 连接截止时间:** 限制打开握手,使停滞的 TCP 对等方不会无限挂起频道启动,并确保超时后恢复重连控制。(#105553)感谢 @hugenshen。
- **排队 TTS 重试:** 在入队前将本地出站媒体复制到队列自有存储中,使语音回复能在生产者临时清理和重启恢复后存活,在重试退避期间保留引用的工件,并在一天后修剪未引用的暂存文件。修复 #108501。(#108502)感谢 @masatohoshino。
- **飞书应用注册截止时间:** 通过受保护的 fetch 边界将 OAuth 设备注册请求限定为 10 秒,使设置不会在停滞的响应头上无限挂起。(#105549)感谢 @hugenshen。
- **LINE 控制命令提及:** 在提及剥离之前检测授权的斜杠命令,使内联群组和直接消息控制保留原始入口元数据。(#107230)感谢 @edenfunf。
- **飞书文档图像读取:** 使用选定账户超时限制远程文档图像头部和停滞主体,通过插件的 MDAST 流水线解析文档 Markdown,保留图像/块对齐,并在创建空图像块之前拒绝失败的上传输入。感谢 @Alix-007。
- **ClawHub 注册表读取:** 与其他临时网关故障一起重试有界的 HTTP 500 响应,使多包发布扫描能够在孤立的注册表错误中存活。
- **Slack Socket Mode 健康检查:** 当 `auth.test` 失败或配置的机器人令牌解析为没有 `bot_id` 的用户时,将已连接的 Socket Mode 传输报告为降级,同时保留健康的企业组织安装。感谢 @zw-xysk。
- **Synology Chat 响应限制:** 限制用户列表响应读取,立即停止过大的流,并在 NAS 超出支持的信封时保留过时的缓存身份。感谢 @zw-xysk。
- **用量日期范围:** 从有限会话范围中排除没有时间戳的旧转录行,同时保留在全时段总计中,并在提供新语义前重建旧的用量缓存。修复 #89709。感谢 @TurboTheTurtle。
- **LINE 群组历史竞争:** 在活动提及轮次期间接收到的环境群组消息保留到下一轮次,同时恰好消费一次回合前快照。(#107367)感谢 @edenfunf。
- **Mattermost 进度命令详情:** 在频道配置验证和捆绑元数据中接受文档中描述的 `streaming.preview.commandText` 和 `streaming.progress.commandText` 模式。感谢 @shakkernerd。
- **1Password 授权交握:** 将绑定 nonce 的待定审批持久化到共享插件状态中,使跨代理实例的钩子和工具执行保持一次性使用并失败关闭。
- **Control UI 聊天转录:** 在会话和窗格返回时保留已加载的历史记录,限制自动回滚加载,虚拟化长转录,隐藏原生运行边界,并防止前置、流式和响应式布局闪烁或跳跃。感谢 @shakkernerd。
- **Codex 动态工具结果:** 使用共享的工具结果失败合约处理任意生命周期元数据,防止成功的技能工坊结果显示并持久化为失败调用。修复 #107684。感谢 @shakkernerd。
- **Codex `/status` 上下文新鲜度:** 从发出 `rawResponse/completed` 的 Codex 应用服务器中消费精确的每次响应用量;当精确用量不可用或省略时,保持上下文未知而非重用累积的终身总计。(#107813)感谢 @wuqxuan。
- **嵌套资源忽略:** 在技能和资源发现期间,正确处理无斜杠模式以及转义的文字感叹号在嵌套忽略文件中的使用。感谢 @moguangyu5-design。
- **代理绕过优先级:** 与 Undici 一致地处理空白小写 `no_proxy` 值覆盖大写 `NO_PROXY`,并重用规范匹配器进行 Telegram 回退选择。
- **Tokenjuice 执行压缩:** 避免在压缩的中间件元数据中保留原始命令输出,防止大型成功压缩导致中间件详情大小守卫失败。
- **代理 git 包身份:** 在托管仓库解析前去除引用并拒绝遍历段,使 GitLab 分支引用解析为规范的管理安装路径。感谢 @vincentkoc。
- **Tlon 自定义 S3 上传:** 通过 AWS SDK 的原生解析器传递存储端点,使自定义 S3 兼容上传不再在预签名前失败。
- **Signal 活动运行控件:** 在活动轮次中保持授权的停止、状态、审批和队列读取控制响应,同时在规范的会话准入中保留普通和有状态轮次,并在停止时取消每个待定的群组发送者通道。(#107422)感谢 @arduano。
- **代理认证存储锁:** 在暴露正常释放失败的同时,避免在 `proper-lockfile` 报告锁被破坏后冗余的释放尝试。
- **配对节点会话目录:** 授权捆绑的 Anthropic 和 Codex 目录请求从 Control UI 读取流中调用其只读节点命令,恢复远程 Claude/Codex 行和终端恢复可用性。修复 #107406。感谢 @vincentkoc。
- **沙箱重建确认:** 将 Clack 取消视为拒绝,使 Ctrl-C 不会继续执行容器移除。
- **Microsoft Teams HTML 文本:** 在引用和 Graph 获取的消息中一致解码 HTML5 实体,同时保留字面转义实体文本。
- **ClawHub 插件 API 范围:** 将每个支持的比较器委托给 `semver`,使波浪号、部分通配符和预发布插入符边界正确,同时保留 OpenClaw 版本规范化和现有的受限范围语法。(#106877)
- **Web 可读性相对链接:** 用请求 URL 种子化解析后的文档,使文章链接正确解析,同时移除插件中重复的懒加载外观。(#106860)
- **浏览器自动路由:** 当隐式选择的浏览器节点报告其控制主机不可达时,回退至网关主机,同时保留显式节点固定和模糊操作失败。
- **Discord 语音参与者上下文:** 维护实时网关语音状态花名册,并在授权的语音代理轮次中包含当前频道参与者,使代理能够回答谁在场。感谢 @vincentkoc。
- **OC Path JSONC 插入:** 通过 `jsonc-parser` 修补对象和数组插入,使注释、尾部逗号和 CRLF 格式幸存。(#106847)
- **Windows winget 安装:** 当 winget 安装 Node.js 后机器 PATH 更新尚未可见时,在当前 PowerShell 会话中继续,避免虚假的“Node.js not found”失败。(#106862)
- **Control UI 实时 Talk 反馈:** 为每个麦克风传输请求浏览器回声消除、噪声抑制和自动增益控制,并通过零增益汇点保持 PCM 捕获处理器连接,使麦克风输入不会在本地播放。
- **代理源回复恢复:** 保留通过代码模式执行的消息发送的当前聊天交付证据,防止成功回复触发冗余重试和误导性的交付失败诊断。感谢 @vincentkoc。
- **网关进程内重启:** 在重建运行时准入前清除陈旧的 SIGUSR1 重启状态并恢复准备的主机挂起,防止重启冷却或暂停调度泄漏到下一个生命周期。感谢 @vincentkoc。
- **ClickClack 持久媒体交付:** 通过必需交付路由媒体回复,跨重试重用所有者范围的上传和消息 nonce,修复持久化附件状态而不重新读取源媒体,在较旧的 ClickClack 服务器无法证明未知发送时失败关闭,并使用所选提供商和模型的运行时输出预算而非频道级别令牌上限。感谢 @jjjhenriksen 和 @shakkernerd。
- **Deepgram 实时自定义端点:** 验证语音呼叫流式传输基础 URL,使用安全方式处理错误,保留显式的 `ws://` 和 `wss://` 端点,并将 HTTP 方案映射为匹配的 WebSocket 传输以用于专用和自托管部署。(#105334)感谢 @dwc1997、@vincentkoc 和 @zw-xysk。
- **Control UI 新建会话重连:** 重新发现代理、节点、仓库分支和文件夹浏览器状态,刷新派生工作区,关口未验证设备,并在网关客户端替换后阻止模糊重试,同时保留类型化任务和显式选择。修复 #106372。感谢 @vincentkoc。
- **macOS 远程节点就绪:** 从节点 hello 快照中获取主会话密钥,而非在节点准入期间打开操作者连接,防止远程隧道恢复使 Computer Use 和节点执行卡在生命周期转换中。
- **Claude CLI 上下文预算:** 通过将有效限制传递给 Claude Code 的原生自动压缩器,并将在 OpenClaw 会话状态中持久化相同的准备预算,来尊重 Anthropic 模型和每个代理的 `contextTokens` 限制。修复 #80933。(#93198)感谢 @mushuiyu886 和 @gorkem2020。
- **转录读取失败:** 从流式 JSONL 会话读取中传播权限和 I/O 失败,而非将不可读转录视为空。(#106412)感谢 @zenglingbiao。
- **重启哨兵诊断:** 报告 SQLite 读写和传统文件清理失败,同时保留尽力而为的重启恢复行为。(#106385)感谢 @zenglingbiao 和 @wendy-chsy。
- **原生应用连接和中继可靠性:** 保持 Android 断开连接在 Activity 重建后停止,不打开权限提示即失败远程摄像头命令,在能力变更后刷新移动节点注册,展示 iOS 新手引导连接失败,在会话切换时取消过时的 Talk 所有者,拒绝无效的 Watch 确认,保留启动期间收到的 Watch 事件,并防止较旧的代理概览请求替换较新的网关状态。感谢 @vincentkoc。
- **网关源监视:** 在启动 tmux 监视器之前将已配置的端口从已安装服务中移交,保留失败窗格以供附加/捕获,并保持显式替代端口监视与受管理网关并存。感谢 @vincentkoc。
- **Claude CLI 最大轮次诊断:** 保留终端最大轮次结果与 OpenClaw 和 Claude 会话上下文,在工具操作可能已运行时发出警告,并停止可能产生副作用轮次的不安全认证配置文件或模型重播。(#94130)感谢 @zhangguiping-xydt 和 @tdrose01。
- **提供商网络重试:** 对齐提供商读取/轮询/下载和代理等待恢复以处理瞬时连接错误,重试有界的提供商 `ENOTFOUND` 失败,同时使网关 `ENOTFOUND` 和非幂等创建操作快速失败。(#101496)感谢 @xialonglee。
- **会话重试分类:** 停止标识符或负载详情仅包含 429/5xx 数字序列的永久性提供商错误重新发送完整上下文,并在重试路径间共享有界速率限制窗口解析。(#105258)感谢 @destire-mio 和 @yetval。
- **LINE 指令模板:** 抑制带有空白必填字段或无标签操作的确认和按钮,同时保留有效的无标题按钮及周围的回复文本。(#105520)感谢 @edenfunf。
- **SQLite 维护模式验证:** 在压缩前拒绝缺少或漂移的规范表、约束、索引、触发器或表选项的当前版本全局和代理数据库,同时接受支持的添加迁移布局。
- **Matrix 引导诊断:** 在有限的 stdout 和 stderr 尾部中保留完整的 UTF-8 码点,使加密依赖失败不会在保留边界处显示替换字符。(#105475)感谢 @qingminlong。
- **iOS Watch 中继命令:** 允许配对的 iPhone 节点通过默认网关策略通告和调用 `watch.status` 和 `watch.notify`,同时保留直接 watchOS 节点的固定最小命令表面。感谢 @vincentkoc。
- **Swabble 状态配置:** 读取服务状态时尊重全局 `--config` 路径,而非静默使用默认配置。
- **ClawHub 重试时机:** 拒绝分数延迟秒和日历归一化无效的 Retry-After 日期,使运行时和发布读取保持在有界回退计划上。(#105479)感谢 @qingminlong。
- **Discord 线程存档默认值:** 继承每个父频道配置的自动存档持续时间用于绑定创建的线程,而非强制 60 分钟,同时保留显式覆盖。(#103413)感谢 @wings1029。
- **已安装插件加载:** 使原生模块回退使用 jiti 的转换路径而非重试相同的同步 ESM 加载,防止官方插件导入 SDK 合约模块时 Node 24 启动竞争。感谢 @vincentkoc。
- **QA 配置文件频道执行:** 将混合 Crabline 频道场景划分为一个聚合主机套件,使基于分类的配置文件命令和证据工作流不再在执行前中止。
- **插件 SDK API 基线:** 覆盖每个公共入口点,保留完整的声明形状而不产生源行波动,并从变更文件验证运行基线和导出表面守卫。感谢 @vincentkoc 和 @zw-xysk。
- **SQLite 终端会话恢复:** 在代理数据库中跟踪物理转录修改时间,使被终止或超时的主会话在转录写入时长于注册表更新时轮换,同时在 doctor 导入期间保留传统转录 mtime。感谢 @vincentkoc。
- **网关聊天类型检查:** 从拥有协议模式中导入聊天事件类型(在已退休的聚合类型模块移除后),恢复完整项目类型检查。感谢 @vincentkoc。
- **打包的 Crabbox 命令:** 包含已发布包装器导入的租约新鲜度辅助函数,使 `crabbox:*` 命令在 npm 安装中不会因 `ERR_MODULE_NOT_FOUND` 而失败。感谢 @vincentkoc。
- **插件会话目录:** 拒绝未知的目录过滤器,将目录报告为插件能力,并在 SDK 注册捕获中保留它们,而非静默返回空结果或将仅目录插件分类为无能力。感谢 @vincentkoc。
- **网关服务审计:** 将 POSIX shell `-c` 包装器视为网关子命令检查中的不透明项,避免为 shell 包装的 macOS LaunchAgent 生成虚假的缺失命令警告,无需解析内部命令或端口。修复 #81751。(#81778)感谢 @liaoandi。
- **出站频道引导:** 抑制相同频道、配置和注册表生成上的重复失败插件激活,同时在配置或注册表重新加载后重试。(#100377)感谢 @xialonglee。
- **OpenAI Realtime 客户端密钥截止时间:** 通过受保护的 fetch 边界将语音和转录密钥获取限定为 30 秒,同时保留身份验证和有界响应解析。(#102860)感谢 @Alix-007 和 @Leon-SK668。
- **网关客户端看门狗:** 对无界和混合待处理请求保持传输停滞检测激活,使死套接字拒绝待处理请求、重连并永不重播被拒绝的请求。(#103407)感谢 @NianJiuZst。
- **iOS Share Extension 草稿:** 保留以脚手架类前缀开始的合法共享文本,仅移除精确的传统脚手架行,避免将类似方案的文章视为 URL,并去重主机镜像内容。(#103453)感谢 @lin-hongkuan 和 @harjothkhara。
- **Telegram 推理预览:** 通过延迟删除重新定位分割的推理预览,使先前的预览消息不会保持过时,同时保留客户端滚动位置。(#97828)感谢 @ly-wang19 和 @kyle20026。
- **飞书原生卡片线程:** 规范化空白回复目标一次,并重用共享回复模式用于卡片和媒体部分,使原生卡片主题回复保留在其线程中。(#102804)感谢 @sunlit-deng。
- **QQBot 令牌请求:** 使用共享的 30 秒受保护 fetch 截止时间限制令牌获取,使停滞的 singleflight 调用者一起失败、清理并可重试。(#102897)感谢 @maweibin。
- **Canvas A2UI 验证:** 在 CLI、代理工具和最终节点调用边界拒绝格式错误或不支持的 JSONL,同时保留原生 v0.8 调度。(#103713)感谢 @qingminglong。
- **Twilio RCS 入站路由:** 仅在签名 webhook 验证后规范化 RCS 消费者地址,使发送者匹配和会话正常工作,同时不改变出站 RCS 语义。(#102373)感谢 @clawSean。
- **ClickClack 输出消毒:** 在发送者边界剥离内部工具和 XML 脚手架,抑制仅脚手架发送,并保留可选的现代交付 ID。(#103142)感谢 @masatohoshino、@vincentkoc 和 @zw-xysk。
- **代理核心截断:** 当头截断收到负数行或字节上限时避免空输出崩溃。(#103425)感谢 @qingminglong。
- **Windows Node 解析:** 在解析裸不区分大小写的 `node.exe` 条目时,在恶劣的 `PATH` 值下保留当前可执行文件。(#103907)感谢 @soldforaloss 和 @vincentkoc。
- **Codex 运行时切换:** 接受捆绑的 Codex 运行时用于 `codex/*` 和 `openai/*` 模型路由,同时保持不支持的提供商/运行时组合被拒绝。(#103762)
- **代理中止清理:** 将提示锁重新获取与终端清理序列化,使取消的嵌入式运行不会在会话锁上自竞争长达 60 秒。
- **Chutes OAuth 截止时间:** 限制令牌交换、配置文件查找和刷新请求,并在可选的用户信息丰富停滞时保留已颁发的令牌。(#102026)感谢 @Alix-007。
- **Control UI 工作区头像:** 在引导和身份响应中内联验证后的代理头像文件,使 Personal 卡片图像渲染无需未认证的头像路由请求,同时保留已配置的表情符号优先级。(#102892, #97602)感谢 @LZY3538 和 @mtuwei。
- **Exec 安全标志:** 对于默认的仅 stdin 过滤器,自动批准精选的只读布尔标志,同时保持未知标志、尾部跟随/重试模式、文件操作数和自定义配置文件失败关闭。(#88953)感谢 @yetval。
- **iOS 会话变更:** 将重命名、归档、固定、删除和分叉请求限定到选定代理,为分叉会话保留父代理,使多代理聊天操作不能在错误代理下变更或创建会话。(#103366, #103415)感谢 @lin-hongkuan 和 @harjothkhara。
- **Swift 协议初始化器:** 将每个模式可选的生成初始化参数默认设为 `nil`,使添加的协议字段不再破坏 SDK 构造调用点。
- **OpenCode Go MiMo 目录:** 停止暴露已弃用的 `mimo-v2-omni` 和 `mimo-v2-pro` 别名(它们拒绝代理请求),并在活跃的 MiMo V2.5 路由上保留发布验证。(#103311, #103329)感谢 @krissding。
- **审计时间过滤器:** 拒绝 `openclaw audit --after` 和 `--before` 中不可能的日历日期,避免它们滚动到非预期区间,同时保留无时区时间戳语义。(#103433)感谢 @qingminglong。
- **OpenAI 兼容流式工具调用:** 从以 SSE `data: [DONE]` 结尾但省略 `finish_reason` 的流中执行完整的原生工具调用,同时保持传输 EOF 和可见文本情况失败关闭。(#98124, #97994)感谢 @SunnyShu0925 和 @wszhhx。
- **xAI 提供商别名:** 当模型使用已发布的 `x-ai` 提供商别名时,保留 Grok 4.3 和 Grok 4.5 思考配置文件、快速模型路由和加密推理重播,而不是将有效的思考请求限制为 `minimal`。(#103315)
- **Doctor 状态隔离:** 当 `OPENCLAW_STATE_DIR` 指向其他地方时,防止自动更新和网关监视修复导入和归档默认主目录执行或插件绑定审批;保留隐式 CLI 预检仅通知;并将跨状态导入保留给直接操作者 doctor 运行。(#103247, #103317)感谢 @vincentkoc。
- **Doctor 干净状态指导:** 在清除运行且无配置更改后,停止建议 `openclaw doctor --fix`,同时保留有针对性的修复提示。(#103233)感谢 @kewang-pika 和 @nonplace。
- **Google 音乐生成:** 重试一次未阻塞的 Lyria 响应(该响应省略了合约要求的音频),同时保持提示块和终端生成为不可重试。(#103318)
- **OpenCode Zen 模型目录:** 刷新提供商拥有的静态种子,用于 Claude Sonnet 5、Grok 4.5、Hy3 Free、Kimi K2.7 Code 和 MiniMax M3,包含已验证的路由、定价、限制和输入能力,移除已退休的免费层级行,并通过未认证的模型列表暴露相同目录。(#103184)
- **受管理浏览器启动:** 将异步 Chrome 引导和运行时生成失败作为浏览器错误暴露,同时保持网关存活,并在后续生命周期失败中保留进程错误处理。感谢 @vincentkoc。
- **浏览器节点代理下载:** 将每个操作产生的下载传输到网关媒体存储,对齐每文件 10 MiB 和总计 16 MiB 的传输预算,并将多个下载路径重写为网关本地文件,而不遍历页面控制的结果数据。
- **网关启动迁移:** 当选定配置在启动期间发生变化时,在退出前释放共享迁移租约,允许立即重试而非阻塞就绪直到五分钟后租约到期。(#103145)
- **Apple 超时恢复:** 即使平台工作忽略取消,从共享操作截止时间和调用者取消中迅速返回,同时隔离延迟的网关握手并清理定位和权限等待者。(#103066)感谢 @NianJiuZst。
- **Claude CLI 预热会话:** 当 Claude 未写入原生转录时,保持受管理 stdio 连续性;仅当准确的活动子进程消失或更改时回退到有界的 OpenClaw 历史;并防止无状态运行持久化 CLI 绑定。(#96841)感谢 @bradreaves。
- **CLI 插件列表:** 当不存在遗留输入时跳过状态迁移运行时加载,减少打包冷启动内存,同时保留对传统插件索引和已配置会话存储的迁移。
- **Unicode 安全有界文本:** 在 Control UI、CLI、Gateway、插件、QA、内存和 Android 表面中,缩短预览、提示、诊断、标签、会话键、链接元数据和身份值时,保留完整 UTF-16 代理对。(#102625, #102626, #102627, #102816, #102823, #102833, #102877, #102949, #102963, #102969, #102988, #103010, #103034, #103210, #103341, #103487, #103543, #103580, #103646)感谢 @zhangguiping-xydt、@wings1029、@wangyan2026、@Pandah97、@MoerAI、@SunnyShu0925、@zhangqueping、@zw-xysk、@cxbAsDev、@lzyyzznl、@coder-master-0915、@LeonidasLux、@mushuiyu886、@ly85206559、@Simon-XYDT、@lsr911、@vincentkoc、@chengzhichao-xydt 和 @wangmiao0668000666。
- **Cron 列表表格:** 按终端显示宽度消毒和大小有界单元格,使 CJK、表情符号、组合标记和终端控制输入无法破坏对齐或输出。(#103616)感谢 @mushuiyu886。
- **CLI 模型表格:** 按渲染终端宽度消毒、截断和填充模型列表单元格,使表情符号、CJK 和其他宽字形保持列对齐。(#102819)感谢 @Kevin23-design 和 @vincentkoc。
- **技能提示压缩:** 在使用剩余提示预算进行缩短的、UTF-16 安全的描述之前,保留每个包含的技能身份,在不超过硬限制的情况下保留触发指导。(#88426)感谢 @abel-zer0、@vincentkoc、@chengzhichao-xydt、@wangmiao0668000666 和 @Pandah97。
- **频道 Markdown 代码表格:** 按渲染显示宽度调整列大小,使 CJK、表情符号和混合宽度单元格在共享的 Telegram 和 Discord 输出中保持对齐。(#55596, #55512)感谢 @sparkyrider 和 @zjy282。
- **QQ Bot 审批预览:** 在字素边界处包装长的消毒命令和元数据,使用可见的续行标记和安全围栏,使桌面 QQ 审查可读,同时不改变命令内容。(#102119, #101979)感谢 @Bartok9 和 @xuzhi5858。
- **Codex 计算机控制:** 将固定长度坐标对作为同质数组模式发布,使 Codex 应用服务器能够使用 `computer` 工具启动线程,而非拒绝元组值 `items`。
- **Google Chat 请求截止时间:** 将控制调用限制为 30 秒,同时为媒体传输提供按大小感知的总预算和独立的 30 秒停滞主体守卫,防止挂起的 Chat API 请求而不破坏大型附件上传。(#102227)感谢 @hugenshen。
- **Google Gemini 前缀模型 ID:** 在选择多模态函数响应行为时识别 `google/gemini-*` 和 `models/gemini-*`,保留 Gemini 2 图像回退而不退化 Gemini 3 内联图像响应。(#102382)感谢 @LiLan0125 和 @yetval。
- **生成的提供商模型目录:** 当 MinMax 和 NVIDIA 目录行宣告视频或音频元数据时,保留这些行,同时将运行时模型输入投影为文本/图像,防止配置的多模态主模型被丢弃而回退。(#97858, #97048)感谢 @ly-wang19 和 @zackchiutw。
- **DeepSeek 目录元数据:** 将 V4 Flash 和 Pro 定价与 DeepSeek 当前的缓存命中、缓存未命中和输出率对齐;刷新由较旧新手引导流程写入的精确目录元数据;并记录 7 月 24 日传统 `deepseek-chat` 和 `deepseek-reasoner` 兼容名称的退役。(#103192)
- **CLI 音频转录文件:** 将推断的 Whisper 和 Parakeet 文本文件视为权威,使空输出或缺失输出无法将进度/状态 stdout 暴露为用户语音。(#87393, #87384)感谢 @kesslerio。
- **Node 24 上的浏览器操作:** 保持浏览器请求取消绑定到客户端和响应生命周期,而非 Node 24.16+ 过早中止的主体流信号,防止有效的 POST 操作在 JSON 解析后失败。感谢 @obviyus 和 @vincentkoc。
- **Android 硬件键盘聊天:** 在物理键盘上使用未修改的 Enter 发送,同时保留 Shift+Enter 和其他修改后的 Enter 组合用于多行输入。(#101239)感谢 @3ninyt3nin-creator。
- **Codex 产生的原生子代理:** 保持父应用服务器订阅和共享客户端存活,直到产生的原生子代理完成交付稳定,防止丢失唤醒和泄漏的一次性清理。
- **Control UI 会话创建:** 在选择另一个会话后,保持新创建的会话位于稳定侧边栏顺序的前端。感谢 @shakkernerd。
- **仅 FTS 内存启动:** 当 `memorySearch.provider` 显式为 `none` 时,跳过插件能力发现,避免不必要的冷启动扫描。
- **iOS 嵌入式终端:** 在原生的 Gateway 认证连接时直接打开仅终端 Control 界面,而非暴露 Web UI 登录屏幕。
- **源码构建可移植性:** 保持 tsdown 配置自包含,使构建不依赖于从 unrun 的临时模块目录解析 tsdown 包。感谢 @vincentkoc。
- **浏览器标签采纳:** 当新的 MCP、Playwright 或 CDP 目标未能通过最终安全验证、创建后中止或无法被重新发现时,保留先前的隐式标签和稳定别名;在创建标签前验证标签,并将受管理清理限制为已采纳的目标。(#105301)感谢 @hugenshen。
- **Mattermost 块流式:** 在草稿预览模式下保留完整、未重复的文本和工具块,并在预览流式禁用时遵循正常块流式。(#87449)感谢 @yetval 和 @Senseonics-AI。
- **iOS 开发应用身份:** 将开发应用标记为 OpenClaw,同时使用其不同的调试图标以区别于发布版本。
- **Android 聊天恢复:** 在重连和序列间隙历史快照追赶时,保留乐观的用户消息和本地拥有的运行,防止已发送消息消失或过时运行取得所有权。(#100197)
- **iOS 语音唤醒清理:** 在禁用非活动语音唤醒时避免初始化麦克风音频流水线,防止模拟器启动中止和不必要的音频设置。
- **代理停止恢复:** 防止延迟中止的提示在拆除后重新获取孤立的会话锁,使 `/stop` 让对话准备好进行下一轮。
- **本地网关 CLI 认证:** 将环回 CLI 令牌/密码调用保持在持久设备范围之外,使读取探测不会因过时的配对基线而阻塞后续的写入/管理员命令。(#95997)感谢 @vincentkoc。
- **MCP 模式诊断:** 将 draft-2020-12 编译器失败归因于外部 MCP 模式,使格式错误的模式产生可操作的设置错误。感谢 @vincentkoc。
- **Amazon Bedrock 控制平面截止时间:** 限制模型发现和应用推理配置文件查找,保留调用者取消,并在每个请求路径后关闭短期 SDK 客户端。感谢 @Alix-007 和 @vincentkoc。
- **回复预交付恢复:** 使用所有者可覆盖的截止时间限制每个预交付回调,在挂起的插件工作后释放序列化回复通道,并仅当传输从未开始时保留持久最终交付重试状态。(#104256)感谢 @NianJiuZst 和 @BenjaminBrossi。
- **Signal 原生引用回复:** 在代理、显式、持久和分块发送中,将活动入站消息作为原生引用保留,同时将回复模式策略保留在 Signal 插件内。(#105347)感谢 @jesse-merhi 和 @vincentkoc。
- **媒体存储远程下载:** 限制响应头等待和停滞主体,关闭已放弃的重定向和错误响应,并移除部分临时文件,使挂起的源无法固定调用者。(#104624)感谢 @hugenshen。
- **Cron llama.cpp 工具模式:** 保持面向模型的 cron 声明模式与 llama.cpp 兼容,同时保留网关和运行时的非空验证。修复 #107449。(#108360)感谢 @lee-xydt 和 @Patt92。
- **终端会话:** 保留早期按键,启用配对节点终端操作,授权配对节点目录读取,在过时的 Control UI 连接后恢复,并在高输出下保持慢客户端附加。(#107214, #107361, #107410, #107419, #107348)感谢 @vincentkoc 和 @zw-xysk。
- **Control UI 配置:** 自动保存已验证的编辑,恢复自动保存关口,显示未应用的重启状态,并保持正常内容滚动和选择行为。(#107458, #107477, #107577, #107349)
- **Signal 恢复:** 在停滞的容器握手后重新连接,防止重启期间重叠的守护进程,并在电话号码规范化期间保留用户名目标。(#107386, #107409, #107365)感谢 @hugenshen、@ZHOUKAILIAN、@UberKitten 和 @ly-wang19。
- **授权边界:** 要求操作员管理员权限进行配对节点目录浏览,并阻止迁移配置合并中的原型污染。(#106004, #106116)感谢 @yangxiansheng、@joshavant、@yetval 和 @ruel225。
- **对话身份:** 在群组轮次中保留说话者归属,并减少格式错误的 Discord 公会回复工具调用。(#107025, #107474)感谢 @lonexreb。
- **提供商设置:** 显示 OpenRouter OAuth 拒绝错误,找到存储在认证别名下的凭据,并保持未解析的 API 密钥提供商可见以供修复。(#105448, #106736, #106754)感谢 @VectorPeak 和 @altaywtf。
- **Claude 和 Codex 会话:** 保持 Claude 轮次打开以进行原生后台工作,避免实时更新后的 Codex 关闭警告,完成 Codex 新手引导登录交握,并退役已完成的钩子中继。(#106347, #106418, #107174, #106899)感谢 @obviyus、@fuller-stack-dev 和 @bek91。
- **Apple 应用:** 将 iPhone 和 Watch 客户端连接到协议 v3 网关,拒绝不完整的附件共享,并在 iOS 发布归档中尊重固定的 Swift 工具链。(#106294, #106513, #107188)感谢 @jincheng-xydt、@harjothkhara 和 @joshavant。
- **内存可靠性:** 在跨分割 QMD 输出时保留 UTF-8,在传统迁移期间保留规范缓存行,并接受前导零的 JSON 内容长度。(#107263, #107243, #105916)感谢 @wahaha1223、@felirami、@Tony-ooo、@qingminlong、@vincentkoc 和 @zw-xysk。
- **技能和工坊:** 保持全局安装的 ClawHub 技能被跟踪,清理孤立的用量行,展示验证错误,并将工坊审批默认设置为自动处理。(#106479, #107144, #107143, #107690)感谢 @ml12580、@mnowrot、@SunnyShu0925 和 @shakkernerd。
- **有界网络调用:** 为 Google Chat 认证、Slack 目录和读取模式调用以及 Twitch 用户查找设置超时,而非挂起。(#106178, #106643, #107103, #105883, #107360)感谢 @QiuYuang、@Monkey-wusky、@maweibin、@zw-xysk 和 @Alix-007。
- **频道交付:** 在标量流式回退时发出警告,并使用所选模型的运行时预算使 ClickClack 媒体交付持久化。(#106796, #105775)感谢 @jjjhenriksen。
- **插件管理:** 尊重标准 ClawHub API 比较器,并允许 Control UI 管理员启用已安装的插件。(#106889, #106318)
- **运行时配置:** 保留已解析的缓存保留值,应用显式环境变量移除,并防止已调度的工作板卡片卡在运行状态。(#106069, #107258, #107271)感谢 @krissding、@jalfaro2876 和 @pgondhi987。
- **输入和输出安全:** 遮蔽敏感的迁移终端输出,规范化受管理 git 包身份,并避免在压缩的 Tokenjuice 元数据中保留原始命令输出。(#106806, #107637, #107705)感谢 @yetval。
- **网络和资源匹配:** 共享规范的 NO_PROXY 行为,并尊重嵌套忽略模式以及转义的文字感叹号。(#107711, #106258)感谢 @moguangyu5-design。
- **Markdown 前言:** 当 YAML 节点无法直接表示时,保留强制的回退值。
### 完整贡献记录
完整的贡献记录可在标签固定的 [CHANGELOG.md](https://github.com/openclaw/openclaw/blob/v2026.7.2-beta.3/CHANGELOG.md#complete-contribution-record) 中查看。
### 发布验证
- npm 包:https://www.npmjs.com/package/openclaw/v/2026.7.2-beta.3
- 注册表压缩包:https://registry.npmjs.org/openclaw/-/openclaw-2026.7.2-beta.3.tgz
- 完整性校验:`sha512-b1U1Q2/IrP3NX3ZWruiasWEJPjl2dq0Hm8ZByZrE7GwLqo78wu8eB7eJAqCEu29MtlBxLLSKz58SE01WUBf7dw==`
- 发布 SHA:`d111bef0eed5aefb1e7c5ac59801c1f0924495f1`
- 完整发布 CI 报告:https://github.com/openclaw/releases/blob/main/evidence/2026.7.2-beta.3/release-evidence.md
- 发布发布:https://github.com/openclaw/openclaw/actions/runs/29664100317
- npm 预检:https://github.com/openclaw/openclaw/actions/runs/29662726100
- 完整发布验证:https://github.com/openclaw/openclaw/actions/runs/29660853502
- 插件 npm 发布:https://github.com/openclaw/openclaw/actions/runs/29664738469
- 插件 ClawHub 发布:单独分派,此证据不等待:https://github.com/openclaw/openclaw/actions/runs/29664739655
- 插件 ClawHub 引导:无需
- OpenClaw npm 发布:https://github.com/openclaw/openclaw/actions/runs/29664809781
- npm Telegram beta E2E:https://github.com/openclaw/openclaw/actions/runs/29663308444
## 2026.7.2
### Highlights
- **Remote coding sessions:** run Control UI sessions on cloud workers, open Codex and Claude catalog sessions in terminals on their owning hosts, and resume OpenCode and Pi sessions directly in a terminal. (#107670, #107086, #107200)
- **Native automation and nodes:** bring Automations parity to mobile, add foreground Voice Wake on Android, and expose camera, location, and notification capabilities from headless Linux nodes. (#106355, #107081, #107193)
- **Safer channel operation:** prevent Telegram durable-ingress loss after restarts, keep Signal stop and approval controls responsive during active turns, and stop channel allowlists from granting owner access. (#107288, #107422, #107403) Thanks @obviyus, @arduano, and @yetval.
- **Guided Control UI setup:** configure model providers from Settings, onboard channels through a guided setup page, and choose images and models while creating sessions. (#106490, #106469, #107358) Thanks @alexandre-leng and @fuller-stack-dev.
- **Gateway and session recovery:** prevent restart admission from wedging the Gateway, recover reply sessions after finalization stalls, and keep one-shot cron jobs enabled through lifecycle claim races. (#107339, #106792, #107236) Thanks @obviyus, @joshavant, @charliemeyer2000, and @SL4N.
- **Install and packaging:** add Linux deb and AppImage bundles with Gateway guidance, publish them from stable main-based releases, and let Windows installs continue immediately after winget adds Node.js. (#106533, #106891, #106862)
### Changes
- **External gateway supervision:** add `OPENCLAW_SUPERVISOR_MODE=external` for lifecycle owners such as OCM, preserving verified restart and deferral behavior without exposing native service authority, blocking native service mutation and self-update, and providing a versioned atomic restart-handoff consume contract. Thanks @shakkernerd.
- **ClickClack guided setup:** configure ClickClack from `openclaw onboard` or `openclaw channels add clickclack` with URL, token, and workspace prompts, default-account env fallback, nonfatal live connection validation, and gateway-aware next steps that connect automatically when OpenClaw is already running. Thanks @shakkernerd.
- **ClickClack command menus:** publish each bot's native OpenClaw commands to ClickClack composer autocomplete at gateway startup, with per-account opt-out and nonfatal compatibility handling for older tokens and servers. Thanks @shakkernerd and @vincentkoc.
- **Skill Workshop approvals:** run agent-initiated apply, reject, and quarantine actions without an additional approval prompt by default while preserving `skills.workshop.approvalPolicy: "pending"` as an opt-in approval gate. Thanks @shakkernerd.
- **TUI fuzzy selectors:** delegate list matching to pi-tui, adding slash-token and alpha-number matching while removing the local matcher fork.
- **macOS paired-node terminals:** advertise duplex Codex and Claude terminal resume commands from the embedded node host and forward interactive input and cancellation through the native app bridge. (#107335)
- **Control UI catalog terminals:** open eligible Codex and Claude Code sessions in the native CLI on their Gateway or paired-node host, with viewer-versus-terminal preferences, validated resume commands, and an interactive PTY relay. (#107086) Thanks @vincentkoc.
- **Skill Workshop history review:** add a manual, newest-first session scan that progressively searches older substantial work for conservative skill ideas, stores only SQLite cursor metadata, and leaves up to three results as pending proposals even when autonomous self-learning is disabled. (#106182)
- **OpenAI GPT-5.6 defaults:** use `openai/gpt-5.6` (Sol alias) for fresh API-key setup and exact `openai/gpt-5.6-sol` for fresh Codex/OAuth setup, default Sol to medium reasoning across both runtimes, and preserve existing primaries, fallbacks, aliases, and explicit GPT-5.5 selections. (#103234)
- **iOS offline chat:** pre-paint recent sessions and canonical transcripts from a protected, bounded per-gateway cache, keep sending disabled offline, and purge cached conversation text when pairing is reset. (#100194)
- **Slack progress indicators:** use Slack's native assistant thread status and rotating loading messages by default while keeping acknowledgement reactions static; lifecycle reaction updates now require `messages.statusReactions.enabled: true`.
- **Control UI Talk controls:** keep voice, model, sensitivity, and other realtime defaults in Settings → Communications → Talk, and use the composer microphone caret to select any browser audio input. (#101046)
- **Control UI session workspace shortcut:** expand or collapse the active Chat pane's session workspace rail with ⇧⌘B without changing the main app sidebar or the separate detail and Canvas preview panel. Thanks @shakkernerd.
- **Control UI Settings shortcut:** open Settings with ⇧⌘, while leaving the browser-owned ⌘, shortcut unchanged. Thanks @shakkernerd.
- **Control UI chat layout:** center the transcript on the composer axis, keep assistant and tool output left and user bubbles right within the same readable frame, and preserve custom message-width overrides. (#104474) Thanks @shakkernerd, @vincentkoc, and @zw-xysk.
- **Control UI composer footer:** center the chat settings chip and model controls between the divider and the card edge instead of pinning them to the divider. (#105866)
- **Control UI assistant actions:** keep assistant name and time first while placing hover actions beside them on the left instead of at the far edge. Thanks @shakkernerd.
- **Control UI message context:** reveal per-message token, context, and model details from the timestamp on hover or activation instead of showing a separate Context button.
- **Control UI session titles:** reveal truncated recent-session names with a reduced-motion-safe hover animation.
- **Control UI sidebar usage:** remove the provider usage quota row from the expanded sidebar while keeping usage details available in the chat composer and Usage page. Thanks @shakkernerd and @vincentkoc.
- **Workboard dispatch cap:** add a request-scoped `--max-starts` override while preserving the default cap, sequential starts, and one-card-per-owner guard. (#100174) Thanks @souvikDevloper, @Souvikalp, and @jwest75674.
- **Plugin install provenance warnings:** require explicit `--force` acknowledgement for arbitrary executable plugin sources in CLI and chat installs, keep trusted ClawHub, bundled, official-catalog, and tracked-update flows frictionless, and restrict Crestodian installs to trusted sources. (#102197) Thanks @jesse-merhi.
- **Cloud workers:** add session placement, dispatch, and worker-turn routing for remote session execution. (#106332)
- **Paired-node coding agents:** discover OpenCode and Pi sessions and continue Codex and Claude catalog sessions through streaming CLI agent runs. (#106941, #106927, #105833)
- **Catalog sessions:** create eligible catalog sessions directly from the Control UI sidebar. (#105810) Thanks @fuller-stack-dev.
- **Managed worktrees:** configure cleanup limits by count and total size from Settings. (#106224)
- **Cron history:** serve scheduled-run history from the task ledger. (#106392)
- **Coding-agent memory:** import Codex and Claude Code memory into the Control UI. (#106406)
- **MCP isolation:** scope MCP server connections to their requesting session. (#106359) Thanks @obviyus.
- **Discord voice:** notify agents when voice-channel participants change. (#107004)
- **Codex usage:** show the signed-in account email alongside app-server usage windows. (#106500)
- **Skill Workshop:** scan prior session history for conservative, reviewable skill ideas. (#106766)
- **Task previews:** show the latest tasks from the running-tasks status row. (#107297)
- **Session changes:** show the active branch and local changed-file state in Control UI sessions. (#106835)
- **Channel progress:** reserve progress drafts for long-running work and use the model's own preamble as the status headline. (#106026)
- **Codex CLI:** bump the bundled plugin to Codex CLI 0.144.6 and align GPT-5.6 Codex context metadata with the upstream 272k limit.
### Fixes
- **Cloud worker derived workspace caches:** exclude Python caches, dependency trees, and macOS metadata symmetrically from outbound sync and inbound reconciliation so local cache rewrites cannot fence later cloud results or worker reclaim.
- **Codex model status diagnostics:** report a configured Codex route as unavailable when its harness plugin is disabled, missing, or quarantined, while preserving the separate credential result and making `models status --check` fail instead of silently treating fallback execution as healthy. Thanks @shakkernerd.
- **Gateway control-plane rate limiting:** use per-method buckets with a 30-per-minute budget so interactive admin writes remain responsive while retaining runaway-loop protection.
- **Signal shutdown delivery:** drain already-accepted ingress before stopping the monitor so messages received immediately before shutdown finish processing instead of being dropped.
- **External supervisor restart health:** accept device-identity policy closes only when the replacement gateway lock and listener PID agree, preventing OCM-managed restarts from timing out after a successful handoff. Thanks @shakkernerd.
- **ACPX cleanup process inspection:** bound host process-table reads so stalled `ps` calls cannot hang gateway startup or session cleanup while retaining fail-closed ownership checks. Thanks @Alix-007.
- **Cron lifecycle conflict retries:** preserve execution-phase retry decisions across scheduled, manual, and startup-recovered runs so post-execution claim conflicts cannot replay completed messages or tools. Fixes #108428. Thanks @yetval.
- **Discord gateway metadata deadline:** carry the existing lookup deadline through DNS and proxy preflight, request headers, and response bodies so stalled gateway startup aborts cleanly. (#104580) Thanks @hugenshen.
- **Control UI cloud session thinking:** expose reasoning level in the New Session model picker and persist the selected level before cloud dispatch.
- **iOS fresh-install setup:** atomically redact spent setup credentials before Keychain cleanup so a deferred item deletion no longer disconnects a successfully paired device. Fixes #107591 Thanks @dagmarjeeves-lab and @vincentkoc.
- **Tlon SSE connect cleanup:** disarm opening deadlines after failed HTTP responses and rejected stream opens so reconnect attempts cannot leave stale timers behind. (#104585) Thanks @hugenshen.
- **LINE reply-token media kinds:** honor video and audio metadata on inbound replies, share the canonical media builder with proactive sends, and fail visibly instead of recording empty media-only deliveries. (#106515) Thanks @edenfunf.
- **Mattermost websocket connection deadlines:** bound opening handshakes so stalled TCP peers cannot hang channel startup indefinitely and reconnect control resumes after timeout. (#105553) Thanks @hugenshen.
- **Queued TTS retries:** copy local outbound media into queue-owned storage before enqueueing so voice replies survive producer temp cleanup and restart recovery, retain referenced artifacts through retry backoff, and prune unreferenced spool files after one day. Fixes #108501. (#108502) Thanks @masatohoshino.
- **Feishu app registration deadlines:** bound OAuth device-registration requests to 10 seconds through the guarded fetch boundary so setup cannot hang indefinitely on stalled response headers. (#105549) Thanks @hugenshen.
- **LINE control-command mentions:** detect authorized slash commands before mention stripping so inline group and direct-message controls preserve the original ingress metadata. (#107230) Thanks @edenfunf.
- **Feishu document image reads:** bound remote document-image headers and stalled bodies with the selected account timeout, parse document Markdown through the plugin's MDAST pipeline, preserve image/block alignment, and reject failed upload input before creating empty image blocks. Thanks @Alix-007.
- **ClawHub registry reads:** retry bounded HTTP 500 responses alongside other transient gateway failures so multi-package release scans survive isolated registry errors.
- **Slack Socket Mode health:** report connected Socket Mode transports as degraded when `auth.test` fails or the configured bot token resolves to a user without `bot_id`, while preserving healthy enterprise-org installs. Thanks @zw-xysk.
- **Synology Chat response limits:** bound user-list response reads, stop oversized streams immediately, and retain stale cached identities when a NAS exceeds the supported envelope. Thanks @zw-xysk.
- **Usage date ranges:** exclude legacy transcript rows without timestamps from finite session ranges while preserving them in all-time totals, and rebuild older usage caches before serving the new semantics. Fixes #89709. Thanks @TurboTheTurtle.
- **LINE group history races:** retain ambient group messages received during an active mention turn for the next turn while consuming the pre-turn snapshot exactly once. (#107367) Thanks @edenfunf.
- **Mattermost progress command details:** accept the documented `streaming.preview.commandText` and `streaming.progress.commandText` modes in channel config validation and bundled metadata. Thanks @shakkernerd.
- **1Password authorization handoff:** persist nonce-bound pending approvals in shared plugin state so hook and tool execution across broker instances remain single-use and fail closed.
- **Control UI chat transcripts:** preserve loaded history across session and pane returns, bound automatic backscroll loading, virtualize long transcripts, retain hidden native run boundaries, and keep prepends, streaming, and responsive layouts from flickering or jumping. Thanks @shakkernerd.
- **Codex dynamic tool outcomes:** use the shared tool-result failure contract for arbitrary lifecycle metadata, preventing successful Skill Workshop results from being displayed and persisted as failed calls. Fixes #107684. Thanks @shakkernerd.
- **Codex `/status` context freshness:** consume exact per-response usage from Codex app servers that emit `rawResponse/completed`; when exact usage is unavailable or omitted, keep context unknown instead of reusing cumulative lifetime totals. (#107813) Thanks @wuqxuan.
- **Nested resource ignores:** honor slash-free patterns and escaped literal exclamation marks in nested ignore files during skill and resource discovery. Thanks @moguangyu5-design.
- **Proxy bypass precedence:** honor blank lower-case `no_proxy` values shadowing upper-case `NO_PROXY` consistently with Undici, and reuse the canonical matcher for Telegram fallback selection.
- **Tokenjuice exec compaction:** avoid retaining raw command output inside compacted middleware metadata, preventing large successful compactions from failing the middleware details-size guard.
- **Agent git package identities:** strip refs before hosted-repository parsing and reject traversal segments so GitLab branch refs resolve to the canonical managed install path. Thanks @vincentkoc.
- **Tlon custom S3 uploads:** pass storage endpoints through the AWS SDK's native parser so custom S3-compatible uploads no longer fail before presigning.
- **Signal active-run controls:** keep authorized stop, status, approval, and queue-read controls responsive during active turns while preserving ordinary and stateful turns in canonical session admission, and cancel every pending group sender lane on stop. (#107422) Thanks @arduano.
- **Agent auth storage locks:** surface normal release failures while avoiding redundant release attempts after `proper-lockfile` reports a compromised lock.
- **Paired-node session catalogs:** authorize bundled Anthropic and Codex catalog requests to invoke their read-only node commands from Control UI read flows, restoring remote Claude/Codex rows and terminal resume availability. Fixes #107406 Thanks @vincentkoc.
- **Sandbox recreate confirmation:** treat Clack cancellation as a decline so Ctrl-C cannot proceed with container removal.
- **Microsoft Teams HTML text:** decode HTML5 entities consistently in quoted and Graph-fetched messages while preserving literal escaped entity text.
- **ClawHub plugin API ranges:** delegate each supported comparator to `semver` so tilde, partial-wildcard, and prerelease caret bounds are correct while preserving OpenClaw version normalization and the existing restricted range grammar. (#106877)
- **Web Readability relative links:** seed parsed documents with the request URL so article links resolve correctly while removing the plugin's duplicate lazy-loader facade. (#106860)
- **Browser auto-routing:** fall back to the Gateway host when an implicitly selected browser node reports that its control host is unreachable, while preserving explicit node pins and ambiguous action failures.
- **Discord voice participant context:** maintain the live Gateway voice-state roster and include current channel participants in authorized voice agent turns so agents can answer who is present. Thanks @vincentkoc.
- **OC Path JSONC insertion:** patch object and array insertions through `jsonc-parser` so comments, trailing commas, and CRLF formatting survive. (#106847)
- **Windows winget installs:** continue in the current PowerShell session when winget installs Node.js before the machine PATH update becomes visible, avoiding a false `Node.js not found` failure. (#106862)
- **Control UI realtime Talk feedback:** request browser echo cancellation, noise suppression, and automatic gain control for every microphone transport, and keep PCM capture processors connected through zero-gain sinks so microphone input cannot play locally.
- **Agent source-reply recovery:** preserve current-chat delivery evidence for message sends executed through Code Mode, preventing successful replies from triggering a redundant retry and misleading delivery-failure diagnostic. Thanks @vincentkoc.
- **Gateway in-process restarts:** clear stale SIGUSR1 restart state and resume prepared host suspensions before rebuilding runtime admission, preventing restart cooldowns or paused scheduling from leaking into the next lifecycle. Thanks @vincentkoc.
- **ClickClack durable media delivery:** route media replies through required delivery, reuse owner-scoped upload and message nonces across retries, repair persisted attachment state without rereading source media, fail closed when an older ClickClack server cannot prove an unknown send, and use the selected provider and model's runtime output budget instead of a channel-level token cap. Thanks @jjjhenriksen and @shakkernerd.
- **Deepgram realtime custom endpoints:** validate Voice Call streaming base URLs with secret-safe errors, preserve explicit `ws://` and `wss://` endpoints, and map HTTP schemes to their matching WebSocket transport for dedicated and self-hosted deployments. (#105334) Thanks @dwc1997, @vincentkoc, and @zw-xysk.
- **Control UI New Session reconnects:** rediscover agents, nodes, repository branches, and folder-browser state, refresh derived workspaces, gate unvalidated devices, and block ambiguous retries after Gateway client replacement while preserving the typed task and explicit choices. Fixes #106372 Thanks @vincentkoc.
- **macOS remote node readiness:** take the main-session key from the node hello snapshot instead of opening an operator connection during node admission, preventing remote tunnel recovery from leaving Computer Use and node exec stuck in lifecycle transition.
- **Claude CLI context budgets:** honor Anthropic model and per-agent `contextTokens` limits by passing the effective limit to Claude Code's native auto-compactor and persisting the same prepared budget in OpenClaw session state. Fixes #80933. (#93198) Thanks @mushuiyu886 and @gorkem2020.
- **Transcript read failures:** propagate permission and I/O failures from streaming JSONL session reads instead of treating unreadable transcripts as empty. (#106412) Thanks @zenglingbiao.
- **Restart sentinel diagnostics:** report SQLite read/write and legacy-file cleanup failures while preserving best-effort restart recovery behavior. (#106385) Thanks @zenglingbiao and @wendy-chsy.
- **Native app connection and relay reliability:** keep Android disconnects stopped across Activity recreation, fail remote camera commands without opening permission prompts, refresh mobile node registration after capability changes, surface iOS onboarding connection failures, cancel stale Talk owners on session switches, reject invalid Watch acknowledgments, preserve Watch events received during startup, and prevent older agent overview requests from replacing newer gateway state. Thanks @vincentkoc.
- **Gateway source watch:** hand the configured port off from the installed service before starting the tmux watcher, preserve failed panes for attach/capture, and keep explicit alternate-port watches side by side with the managed Gateway. Thanks @vincentkoc.
- **Claude CLI max-turn diagnostics:** preserve terminal max-turn results with OpenClaw and Claude session context, warn when tool actions may already have run, and stop unsafe auth-profile or model replay for potentially side-effecting turns. (#94130) Thanks @zhangguiping-xydt and @tdrose01.
- **Provider network retries:** align provider read/poll/download and agent-wait recovery for transient connection errors, retry bounded provider `ENOTFOUND` failures while leaving gateway `ENOTFOUND` and non-idempotent create operations fail-fast. (#101496) Thanks @xialonglee.
- **Session retry classification:** stop permanent provider errors whose identifiers or payload details merely contain 429/5xx digit sequences from re-sending full context, and share bounded rate-limit-window parsing across retry paths. (#105258) Thanks @destire-mio and @yetval.
- **LINE directive templates:** suppress confirms and buttons with blank required fields or unlabeled actions while preserving valid titleless buttons and surrounding reply text. (#105520) Thanks @edenfunf.
- **SQLite maintenance schema validation:** reject current-version global and agent databases with missing or drifted canonical tables, constraints, indexes, triggers, or table options before compaction, while accepting supported additive-migration layouts.
- **Matrix bootstrap diagnostics:** preserve complete UTF-8 code points in bounded stdout and stderr tails so crypto dependency failures do not show replacement characters at retention boundaries. (#105475) Thanks @qingminlong.
- **iOS Watch relay commands:** allow paired iPhone nodes to advertise and invoke `watch.status` and `watch.notify` through the default Gateway policy while preserving the direct watchOS node's fixed minimal command surface. Thanks @vincentkoc.
- **Swabble status config:** honor the global `--config` path when reading service status instead of silently using the default configuration.
- **ClawHub retry timing:** reject fractional delay-seconds and calendar-normalized invalid Retry-After dates so runtime and release reads stay on their bounded fallback schedule. (#105479) Thanks @qingminlong.
- **Discord thread archive defaults:** inherit each parent channel's configured auto-archive duration for binding-created threads instead of forcing 60 minutes, while preserving explicit overrides. (#103413) Thanks @wings1029.
- **Installed plugin loading:** make native-module fallback use jiti's transform path instead of retrying the same synchronous ESM load, preventing Node 24 startup races when official plugins import SDK contract modules. Thanks @vincentkoc.
- **QA profile channel execution:** partition mixed Crabline channel scenarios into one aggregate host suite so taxonomy-backed profile commands and evidence workflows no longer abort before execution.
- **Plugin SDK API baseline:** cover every public entrypoint, preserve complete declaration shapes without source-line churn, and run baseline and export-surface guards from changed-file validation. Thanks @vincentkoc and @zw-xysk.
- **SQLite terminal session recovery:** track physical transcript mutation time in the agent database so killed or timed-out main sessions rotate when transcript writes outlive the registry update, while preserving legacy transcript mtimes during doctor import. Thanks @vincentkoc.
- **Gateway chat typecheck:** import chat event types from their owning protocol schema after the retired aggregate type module was removed, restoring full project typechecks. Thanks @vincentkoc.
- **Packaged Crabbox commands:** include the lease-freshness helper imported by the published wrapper so `crabbox:*` commands do not fail with `ERR_MODULE_NOT_FOUND` in npm installs. Thanks @vincentkoc.
- **Plugin session catalogs:** reject unknown catalog filters, report catalogs as plugin capabilities, and preserve them in SDK registration captures instead of silently returning empty results or classifying catalog-only plugins as capability-free. Thanks @vincentkoc.
- **Gateway service audit:** treat POSIX shell `-c` wrappers as opaque for the gateway-subcommand check, avoiding false missing-command warnings for shell-wrapped macOS LaunchAgents without parsing inner commands or ports. Fixes #81751. (#81778) Thanks @liaoandi.
- **Outbound channel bootstrap:** suppress repeated failed plugin activation for the same channel, config, and registry generation while retrying after config or registry reloads. (#100377) Thanks @xialonglee.
- **OpenAI Realtime client-secret deadlines:** bound voice and transcription secret acquisition to 30 seconds through the guarded fetch boundary while preserving authentication and bounded response parsing. (#102860) Thanks @Alix-007 and @Leon-SK668.
- **Gateway client watchdog:** keep transport-stall detection active for unbounded and mixed pending requests so dead sockets reject pending requests, reconnect, and never replay rejected requests. (#103407) Thanks @NianJiuZst.
- **iOS Share Extension drafts:** preserve legitimate shared text beginning with scaffold-like prefixes, remove only exact legacy scaffold lines, avoid treating scheme-like prose as a URL, and deduplicate host-mirrored content. (#103453) Thanks @lin-hongkuan and @harjothkhara.
- **Telegram reasoning previews:** reposition split reasoning previews through deferred deletion so prior preview messages do not remain stale while preserving client scroll position. (#97828) Thanks @ly-wang19 and @kyle20026.
- **Feishu native-card threading:** normalize whitespace reply targets once and reuse the shared reply mode for card and media parts so native-card topic replies stay in their thread. (#102804) Thanks @sunlit-deng.
- **QQBot token requests:** bound token acquisition with the shared 30-second guarded-fetch deadline so stalled singleflight callers fail together, clean up, and can retry. (#102897) Thanks @maweibin.
- **Canvas A2UI validation:** reject malformed or unsupported JSONL at CLI, agent-tool, and final node-invoke boundaries while preserving native v0.8 dispatch. (#103713) Thanks @qingminglong.
- **Twilio RCS inbound routing:** normalize RCS consumer addresses only after signed webhook validation so sender matching and sessions work without changing outbound RCS semantics. (#102373) Thanks @clawSean.
- **ClickClack output sanitization:** strip internal tool and XML scaffolding at the sender boundary, suppress scaffold-only sends, and preserve optional modern delivery IDs. (#103142) Thanks @masatohoshino, @vincentkoc, and @zw-xysk.
- **Agent-core truncation:** avoid empty-output crashes when head truncation receives negative line or byte ceilings. (#103425) Thanks @qingminglong.
- **Windows Node resolution:** preserve the current executable when resolving bare case-insensitive `node.exe` entries under hostile `PATH` values. (#103907) Thanks @soldforaloss and @vincentkoc.
- **Codex runtime switching:** accept the bundled Codex runtime for both `codex/*` and `openai/*` model routes while keeping unsupported provider/runtime pairs rejected. (#103762)
- **Agent abort cleanup:** serialize prompt lock reacquisition with terminal cleanup so canceled embedded runs do not self-contend on session locks for up to 60 seconds.
- **Chutes OAuth deadlines:** bound token exchange, profile lookup, and refresh requests, and keep issued tokens when optional userinfo enrichment stalls. (#102026) Thanks @Alix-007.
- **Control UI workspace avatars:** inline validated agent avatar files in bootstrap and identity responses so Personal card images render without unauthenticated avatar-route requests, while preserving configured emoji precedence. (#102892, #97602) Thanks @LZY3538 and @mtuwei.
- **Exec safe-bin flags:** auto-approve curated read-only boolean flags for default stdin-only filters while keeping unknown flags, tail follow/retry modes, file operands, and custom profiles fail-closed. (#88953) Thanks @yetval.
- **iOS session mutations:** scope rename, archive, pin, delete, and fork requests to the selected agent, preserving the parent agent for forked sessions so multi-agent chat actions cannot mutate or create sessions under the wrong agent. (#103366, #103415) Thanks @lin-hongkuan and @harjothkhara.
- **Swift protocol initializers:** default every schema-optional generated initializer parameter to `nil` so additive protocol fields no longer break SDK construction call sites.
- **OpenCode Go MiMo catalog:** stop exposing the deprecated `mimo-v2-omni` and `mimo-v2-pro` aliases that reject agent requests, and keep release validation on the active MiMo V2.5 routes. (#103311, #103329) Thanks @krissding.
- **Audit time filters:** reject impossible calendar dates for `openclaw audit --after` and `--before` instead of rolling them into unintended intervals, while preserving timezone-less timestamp semantics. (#103433) Thanks @qingminglong.
- **OpenAI-compatible streamed tool calls:** execute complete native tool calls from streams that end with SSE `data: [DONE]` but omit `finish_reason`, while keeping transport EOF and visible-text cases fail-closed. (#98124, #97994) Thanks @SunnyShu0925 and @wszhhx.
- **xAI provider aliases:** preserve Grok 4.3 and Grok 4.5 thinking profiles, fast-model routing, and encrypted reasoning replay when models use the shipped `x-ai` provider alias instead of clamping valid thinking requests to `minimal`. (#103315)
- **Doctor state isolation:** prevent automated update and Gateway watch repair from importing and archiving default-home exec or plugin-binding approvals when `OPENCLAW_STATE_DIR` points elsewhere, keep implicit CLI preflight notice-only, and reserve cross-state imports for direct operator doctor runs. (#103247, #103317) Thanks @vincentkoc.
- **Doctor clean-state guidance:** stop suggesting `openclaw doctor --fix` after a clean run with no config changes while preserving targeted repair hints. (#103233) Thanks @kewang-pika and @nonplace.
- **Google music generation:** retry one unblocked Lyria response that omits its contractually required audio while keeping prompt blocks and terminal generation stops non-retryable. (#103318)
- **OpenCode Zen model catalog:** refresh the provider-owned static seed for Claude Sonnet 5, Grok 4.5, Hy3 Free, Kimi K2.7 Code, and MiniMax M3 with verified routing, pricing, limits, and input capabilities, remove retired free-tier rows, and expose the same catalog through unauthenticated model listing. (#103184)
- **Managed browser launch:** surface asynchronous Chrome bootstrap and runtime spawn failures as browser errors while keeping Gateway alive, and retain process error handling through later lifecycle failures. Thanks @vincentkoc.
- **Browser node-proxy downloads:** transfer every action-produced download to the Gateway media store, align a 10 MiB per-file and 16 MiB aggregate transport budget, and rewrite plural download paths to Gateway-local files without traversing page-controlled result data.
- **Gateway startup migrations:** release the shared migration lease before exiting when the selected config changes during startup, allowing immediate retries instead of blocking readiness until the five-minute lease expires. (#103145)
- **Apple timeout recovery:** return promptly from shared operation deadlines and caller cancellation even when platform work ignores cancellation, while isolating late Gateway handshakes and cleaning up location and permission waiters. (#103066) Thanks @NianJiuZst.
- **Claude CLI warm sessions:** preserve managed stdio continuity when Claude writes no native transcript, fall back to bounded OpenClaw history only when the exact live child disappears or changes, and keep stateless runs from persisting CLI bindings. (#96841) Thanks @bradreaves.
- **CLI plugin listing:** skip state-migration runtime loading when no legacy inputs exist, reducing packaged cold-start memory while preserving migrations for legacy plugin indexes and configured session stores.
- **Unicode-safe bounded text:** preserve complete UTF-16 surrogate pairs when shortening previews, prompts, diagnostics, labels, session keys, link metadata, and identity values across Control UI, CLI, Gateway, plugins, QA, memory, and Android surfaces. (#102625, #102626, #102627, #102816, #102823, #102833, #102877, #102949, #102963, #102969, #102988, #103010, #103034, #103210, #103341, #103487, #103543, #103580, #103646) Thanks @zhangguiping-xydt, @wings1029, @wangyan2026, @Pandah97, @MoerAI, @SunnyShu0925, @zhangqueping, @zw-xysk, @cxbAsDev, @lzyyzznl, @coder-master-0915, @LeonidasLux, @mushuiyu886, @ly85206559, @Simon-XYDT, @lsr911, @vincentkoc, @chengzhichao-xydt, and @wangmiao0668000666.
- **Cron list table:** sanitize and size bounded cells by terminal display width so CJK, emoji, combining marks, and terminal-control input cannot corrupt alignment or output. (#103616) Thanks @mushuiyu886.
- **CLI model tables:** sanitize, truncate, and pad model-list cells by rendered terminal width so emoji, CJK, and other wide graphemes keep columns aligned. (#102819) Thanks @Kevin23-design and @vincentkoc.
- **Skills prompt compaction:** preserve every included skill identity before using the remaining prompt budget for shortened, UTF-16-safe descriptions, retaining trigger guidance without exceeding the hard limit. (#88426) Thanks @abel-zer0, @vincentkoc, @chengzhichao-xydt, @wangmiao0668000666, and @Pandah97.
- **Channel Markdown code tables:** size columns by rendered display width so CJK, emoji, and mixed-width cells stay aligned across shared Telegram and Discord output. (#55596, #55512) Thanks @sparkyrider and @zjy282.
- **QQ Bot approval previews:** wrap long sanitized commands and metadata at grapheme boundaries with visible continuation markers and safe fences, keeping desktop QQ reviews readable without changing command content. (#102119, #101979) Thanks @Bartok9 and @xuzhi5858.
- **Codex computer control:** publish fixed-length coordinate pairs as homogeneous array schemas so Codex app-server can start threads with the `computer` tool instead of rejecting tuple-valued `items`.
- **Google Chat request deadlines:** bound control calls to 30 seconds while giving media transfers size-aware total budgets and a separate 30-second stalled-body guard, preventing hung Chat API requests without breaking large attachment uploads. (#102227) Thanks @hugenshen.
- **Google Gemini prefixed model IDs:** recognize `google/gemini-*` and `models/gemini-*` when selecting multimodal function-response behavior, preserving the Gemini 2 image fallback without regressing Gemini 3 inline image responses. (#102382) Thanks @LiLan0125 and @yetval.
- **Generated provider model catalogs:** keep MiniMax and NVIDIA catalog rows when they advertise audio or video metadata while projecting runtime model inputs to text/image, preventing configured multimodal primaries from being dropped and falling back. (#97858, #97048) Thanks @ly-wang19 and @zackchiutw.
- **DeepSeek catalog metadata:** align V4 Flash and Pro pricing with DeepSeek's current cache-hit, cache-miss, and output rates; refresh exact catalog metadata written by older onboarding flows; and document the July 24 retirement of the legacy `deepseek-chat` and `deepseek-reasoner` compatibility names. (#103192)
- **CLI audio transcript files:** treat inferred Whisper and Parakeet text files as authoritative so empty or missing output cannot expose progress/status stdout as user speech. (#87393, #87384) Thanks @kesslerio.
- **Browser actions on Node 24:** keep browser request cancellation bound to the client and response lifetime instead of Node 24.16+'s prematurely aborted body-stream signal, preventing valid POST actions from failing after JSON parsing. Thanks @obviyus and @vincentkoc.
- **Android hardware keyboard chat:** send with unmodified Enter on physical keyboards while preserving Shift+Enter and other modified Enter combinations for multiline input. (#101239) Thanks @3ninyt3nin-creator.
- **Codex yielded native subagents:** keep the parent app-server subscription and shared client alive until yielded native subagent completion delivery settles, preventing lost wakeups and leaked one-shot cleanup.
- **Control UI session creation:** keep newly created sessions at the front of the stable sidebar order after selecting another session. Thanks @shakkernerd.
- **FTS-only memory startup:** skip plugin capability discovery when `memorySearch.provider` is explicitly `none`, avoiding an unnecessary cold-start scan.
- **iOS embedded terminal:** open the terminal-only Control surface directly while native Gateway authentication connects instead of exposing the Web UI login screen.
- **Source build portability:** keep tsdown configuration self-contained so builds do not depend on resolving the tsdown package from unrun's temporary module directory. Thanks @vincentkoc.
- **Browser tab adoption:** preserve the prior implicit tab and stable aliases when new MCP, Playwright, or CDP targets fail final safety validation, abort after creation, or cannot be rediscovered; validate labels before creating tabs and limit managed cleanup to adopted targets. (#105301) Thanks @hugenshen.
- **Mattermost block streaming:** preserve complete, non-duplicated text and tool blocks in draft preview mode, and honor normal block streaming when preview streaming is disabled. (#87449) Thanks @yetval and @Senseonics-AI.
- **iOS development app identity:** keep the development app labeled OpenClaw while using its distinct debug icon to differentiate it from release builds.
- **Android chat recovery:** preserve optimistic user messages and locally owned runs while reconnect and sequence-gap history snapshots catch up, preventing sent messages from disappearing or stale runs from taking ownership. (#100197)
- **iOS Voice Wake cleanup:** avoid initializing the microphone audio pipeline while disabling inactive Voice Wake, preventing simulator launch aborts and unnecessary audio setup.
- **Agent stop recovery:** prevent late-aborting prompts from reacquiring orphaned session locks after teardown, so `/stop` leaves the conversation ready for the next turn.
- **Local Gateway CLI auth:** keep loopback CLI token/password calls off durable device scopes so read probes cannot block later write/admin commands behind a stale pairing baseline. (#95997) Thanks @vincentkoc.
- **MCP schema diagnostics:** attribute draft-2020-12 compiler failures to the external MCP schema so malformed patterns produce actionable setup errors. Thanks @vincentkoc.
- **Amazon Bedrock control-plane deadlines:** bound model discovery and application inference-profile lookups, preserve caller cancellation, and close short-lived SDK clients after each request path. Thanks @Alix-007 and @vincentkoc.
- **Reply pre-delivery recovery:** bound each pre-delivery callback with an owner-overridable deadline, release serialized reply lanes after hung plugin work, and preserve durable final-delivery retry state only when transport never started. (#104256) Thanks @NianJiuZst and @BenjaminBrossi.
- **Signal native quote replies:** preserve the active inbound message as a native quote across agent, explicit, durable, and chunked sends while keeping reply-mode policy inside the Signal plugin. (#105347) Thanks @jesse-merhi and @vincentkoc.
- **Media-store remote downloads:** bound response-header waits and stalled bodies, close abandoned redirect and error responses, and remove partial temp files so hung sources cannot pin callers. (#104624) Thanks @hugenshen.
- **Cron llama.cpp tool schemas:** keep the model-facing cron declaration schema compatible with llama.cpp while retaining gateway and runtime nonblank validation. Fixes #107449. (#108360) Thanks @lee-xydt and @Patt92.
- **Terminal sessions:** preserve early keystrokes, enable paired-node terminal actions, authorize paired-node catalog reads, recover after stale Control UI connections, and keep slow clients attached under heavy output. (#107214, #107361, #107410, #107419, #107348) Thanks @vincentkoc and @zw-xysk.
- **Control UI configuration:** auto-save validated edits, restore autosave gates, show unapplied-restart state, and keep normal content scrolling and selection behavior. (#107458, #107477, #107577, #107349)
- **Signal recovery:** reconnect after stalled container handshakes, prevent overlapping daemons during restart, and preserve username targets during phone normalization. (#107386, #107409, #107365) Thanks @hugenshen, @ZHOUKAILIAN, @UberKitten, and @ly-wang19.
- **Authorization boundaries:** require operator-admin authority for paired-node directory browsing and block prototype pollution in migration config merges. (#106004, #106116) Thanks @yangxiansheng, @joshavant, @yetval, and @ruel225.
- **Conversation identity:** retain speaker attribution across group turns and reduce malformed Discord guild reply tool calls. (#107025, #107474) Thanks @lonexreb.
- **Provider setup:** show OpenRouter OAuth denial errors, find credentials stored under auth aliases, and keep unresolved API-key providers visible for repair. (#105448, #106736, #106754) Thanks @VectorPeak and @altaywtf.
- **Claude and Codex sessions:** keep Claude turns open for native background work, avoid Codex shutdown warnings after live updates, complete Codex onboarding login handoff, and retire completed hook relays. (#106347, #106418, #107174, #106899) Thanks @obviyus, @fuller-stack-dev, and @bek91.
- **Apple apps:** connect iPhone and Watch clients to protocol-v3 Gateways, reject incomplete attachment shares, and honor the pinned Swift toolchain in iOS release archives. (#106294, #106513, #107188) Thanks @jincheng-xydt, @harjothkhara, and @joshavant.
- **Memory reliability:** preserve UTF-8 across split QMD output, keep canonical cache rows during legacy migration, and accept leading-zero JSON content lengths. (#107263, #107243, #105916) Thanks @wahaha1223, @felirami, @Tony-ooo, @qingminlong, @vincentkoc, and @zw-xysk.
- **Skills and Workshop:** keep globally installed ClawHub skills tracked, clean orphaned usage rows, surface verification errors, and default Workshop approvals to automatic handling. (#106479, #107144, #107143, #107690) Thanks @ml12580, @mnowrot, @SunnyShu0925, and @shakkernerd.
- **Bounded network calls:** time out Google Chat authentication, Slack directory and read-mode calls, and Twitch user lookups instead of hanging. (#106178, #106643, #107103, #105883, #107360) Thanks @QiuYuang, @Monkey-wusky, @maweibin, @zw-xysk, and @Alix-007.
- **Channel delivery:** warn when scalar streaming falls back and make ClickClack media delivery durable while using the selected model's runtime budget. (#106796, #105775) Thanks @jjjhenriksen.
- **Plugin management:** honor standard ClawHub API comparators and let Control UI administrators enable installed plugins. (#106889, #106318)
- **Runtime configuration:** preserve resolved cache-retention values, apply explicit environment-variable removals, and keep dispatched Workboard cards from sticking in running state. (#106069, #107258, #107271) Thanks @krissding, @jalfaro2876, and @pgondhi987.
- **Input and output safety:** redact sensitive migration terminal output, normalize managed git-package identities, and avoid retaining raw command output in compacted Tokenjuice metadata. (#106806, #107637, #107705) Thanks @yetval.
- **Network and resource matching:** share canonical NO_PROXY behavior and honor nested ignore patterns plus escaped literal exclamation marks. (#107711, #106258) Thanks @moguangyu5-design.
- **Markdown frontmatter:** preserve coerced fallback values when YAML nodes cannot be represented directly.
### Complete contribution record
The full contribution record is available in the tag-pinned [CHANGELOG.md](https://github.com/openclaw/openclaw/blob/v2026.7.2-beta.3/CHANGELOG.md#complete-contribution-record).
### Release verification
- npm package: https://www.npmjs.com/package/openclaw/v/2026.7.2-beta.3
- registry tarball: https://registry.npmjs.org/openclaw/-/openclaw-2026.7.2-beta.3.tgz
- integrity: `sha512-b1U1Q2/IrP3NX3ZWruiasWEJPjl2dq0Hm8ZByZrE7GwLqo78wu8eB7eJAqCEu29MtlBxLLSKz58SE01WUBf7dw==`
- release SHA: `d111bef0eed5aefb1e7c5ac59801c1f0924495f1`
- full release CI report: https://github.com/openclaw/releases/blob/main/evidence/2026.7.2-beta.3/release-evidence.md
- release publish: https://github.com/openclaw/openclaw/actions/runs/29664100317
- npm preflight: https://github.com/openclaw/openclaw/actions/runs/29662726100
- full release validation: https://github.com/openclaw/openclaw/actions/runs/29660853502
- plugin npm publish: https://github.com/openclaw/openclaw/actions/runs/29664738469
- plugin ClawHub publish: dispatched separately, not awaited by this proof: https://github.com/openclaw/openclaw/actions/runs/29664739655
- plugin ClawHub bootstrap: not needed
- OpenClaw npm publish: https://github.com/openclaw/openclaw/actions/runs/29664809781
- npm Telegram beta E2E: https://github.com/openclaw/openclaw/actions/runs/29663308444
## 2026.7.2
### 亮点
- **远程编码会话:** 在云端工作节点上运行 Control UI 会话,在各自宿主机上的终端中打开 Codex 和 Claude 目录会话,并直接在终端中恢复 OpenCode 和 Pi 会话。(#107670、#107086、#107200)
- **原生自动化与节点:** 为移动端实现自动化功能对等,在 Android 上添加前台语音唤醒,并从无头 Linux 节点中暴露摄像头、定位和通知能力。(#106355、#107081、#107193)
- **更安全的频道操作:** 防止重启后 Telegram 持久化入口丢失,在活跃轮次中保持 Signal 停止和审批控件的响应,并阻止频道白名单授予所有者权限。(#107288、#107422、#107403)感谢 @obviyus、@arduano 和 @yetval。
- **引导式 Control UI 设置:** 从设置中配置模型提供商,通过引导式设置页面加入频道,并在创建会话时选择图像和模型。(#106490、#106469、#107358)感谢 @alexandre-leng 和 @fuller-stack-dev。
- **网关与会话恢复:** 防止重启准入阻塞网关,在最终确定停滞时恢复回复会话,并在生命周期声明竞争期间保持一次性 cron 任务启用。(#107339、#106792、#107236)感谢 @obviyus、@joshavant、@charliemeyer2000 和 @SL4N。
- **安装与打包:** 添加附带网关引导提示的 Linux deb 和 AppImage 包,从基于稳定主分支的版本中发布它们,并在 winget 添加 Node.js 后让 Windows 安装立即继续。(#106533、#106891、#106862)
### 变更
- **外部网关监督:** 为生命周期所有者(如 OCM)添加 `OPENCLAW_SUPERVISOR_MODE=external`,保留经过验证的重启和延迟行为而不暴露原生服务权限,阻止原生服务变更和自更新,并提供版本化的原子重启交接消费契约。感谢 @shakkernerd。
- **ClickClack 引导设置:** 通过 `openclaw onboard` 或 `openclaw channels add clickclack` 配置 ClickClack,包含 URL、令牌和工作空间提示、默认账户环境回退、非致命性实时连接验证以及网关感知的下一步操作,当 OpenClaw 已运行时自动连接。感谢 @shakkernerd。
- **ClickClack 命令菜单:** 在网关启动时将每个机器人的原生 OpenClaw 命令发布到 ClickClack 编辑器自动补全中,提供按账户选择退出功能,并对较旧令牌和服务器进行非致命性兼容性处理。感谢 @shakkernerd 和 @vincentkoc。
- **技能工坊审批:** 默认情况下,无需额外审批提示即可执行由代理发起的应用、拒绝和隔离操作,同时保留 `skills.workshop.approvalPolicy: "pending"` 作为可选的审批门控。感谢 @shakkernerd。
- **TUI 模糊选择器:** 将列表匹配委托给 pi-tui,添加斜杠令牌和字母数字匹配,同时移除本地匹配器分支。
- **macOS 配对节点终端:** 从嵌入节点主机通告双工 Codex 和 Claude 终端恢复命令,并通过原生应用桥接转发交互式输入和取消操作。(#107335)
- **Control UI 目录终端:** 在其网关或配对节点主机上的原生 CLI 中打开符合条件的 Codex 和 Claude Code 会话,支持查看器与终端偏好、经过验证的恢复命令以及交互式 PTY 中继。(#107086)感谢 @vincentkoc。
- **技能工坊历史审查:** 添加手动、最新优先的会话扫描,逐步搜索较旧的实质性工作以获取保守的技能创意,仅存储 SQLite 游标元数据,并在禁用自主自学习时最多保留三个结果作为待处理提案。(#106182)
- **OpenAI GPT-5.6 默认值:** 对新 API 密钥设置使用 `openai/gpt-5.6`(Sol 别名),对新 Codex/OAuth 设置使用精确的 `openai/gpt-5.6-sol`,在两个运行时中默认将 Sol 设置为中等推理,并保留现有的主模型、回退模型、别名以及显式的 GPT-5.5 选择。(#103234)
- **iOS 离线聊天:** 从受保护、有界限的每网关缓存中预绘制最近的会话和规范转录文本,在离线时保持发送禁用,并在配对重置时清除缓存的对话文本。(#100194)
- **Slack 进度指示器:** 默认使用 Slack 原生的助手线程状态和旋转加载消息,同时保持确认反应静态;生命周期反应更新现在需要 `messages.statusReactions.enabled: true`。
- **Control UI 语音控件:** 将语音、模型、灵敏度和其他实时默认值保留在设置 → 通信 → 语音中,并使用编辑器麦克风插入符选择任何浏览器音频输入。(#101046)
- **Control UI 会话工作空间快捷键:** 使用 ⇧⌘B 展开或折叠活动聊天面板的会话工作空间轨道,而不更改主应用侧边栏或单独的详情和画布预览面板。感谢 @shakkernerd。
- **Control UI 设置快捷键:** 使用 ⇧⌘, 打开设置,同时保持浏览器的 ⌘, 快捷键不变。感谢 @shakkernerd。
- **Control UI 聊天布局:** 将转录文本在编辑器轴上居中显示,在相同可读框架内将助手和工具输出置于左侧,用户气泡置于右侧,并保留自定义消息宽度覆盖。(#104474)感谢 @shakkernerd、@vincentkoc 和 @zw-xysk。
- **Control UI 编辑器页脚:** 将聊天设置芯片和模型控件居中放置于分隔线和卡片边缘之间,而不是固定到分隔线。(#105866)
- **Control UI 助手操作:** 将助手名称和时间放在首位,将悬停操作置于其左侧而非远边缘。感谢 @shakkernerd。
- **Control UI 消息上下文:** 通过悬停或激活时间戳显示每条消息的令牌、上下文和模型详情,而不是显示单独的“上下文”按钮。
- **Control UI 会话标题:** 以减少运动感的悬停动画显示截断的最近会话名称。
- **Control UI 侧边栏使用量:** 从展开的侧边栏中移除提供商使用配额行,同时在聊天编辑器和“使用量”页面中保留使用详情。感谢 @shakkernerd 和 @vincentkoc。
- **工作板调度上限:** 添加请求作用域的 `--max-starts` 覆盖,同时保留默认上限、顺序启动和每张卡片每所有者保护。(#100174)感谢 @souvikDevloper、@Souvikalp 和 @jwest75674。
- **插件安装来源警告:** 在 CLI 和聊天安装中,对任意可执行插件源要求显式的 `--force` 确认,保持受信任的 ClawHub、捆绑、官方目录和跟踪更新流程顺畅,并将 Crestodian 安装限制为受信任来源。(#102197)感谢 @jesse-merhi。
- **云端工作节点:** 为远程会话执行添加会话放置、调度和工作节点轮次路由。(#106332)
- **配对节点编码代理:** 发现 OpenCode 和 Pi 会话,并通过流式 CLI 代理运行继续 Codex 和 Claude 目录会话。(#106941、#106927、#105833)
- **目录会话:** 直接从 Control UI 侧边栏创建符合条件的目录会话。(#105810)感谢 @fuller-stack-dev。
- **管理工作树:** 从设置中按数量和总大小配置清理限制。(#106224)
- **Cron 历史:** 从任务账本提供计划运行历史。(#106392)
- **编码代理记忆:** 将 Codex 和 Claude Code 记忆导入 Control UI。(#106406)
- **MCP 隔离:** 将 MCP 服务器连接限定在其请求会话中。(#106359)感谢 @obviyus。
- **Discord 语音:** 当语音频道参与者发生变化时通知代理。(#107004)
- **Codex 使用量:** 在应用服务器使用窗口旁边显示已登录账户电子邮件。(#106500)
- **技能工坊:** 扫描先前会话历史以获取保守、可审查的技能创意。(#106766)
- **任务预览:** 从运行任务状态行显示最新任务。(#107297)
- **会话变更:** 在 Control UI 会话中显示活动分支和本地更改文件状态。(#106835)
- **频道进度:** 为长时间运行的工作保留进度草稿,并使用模型自身的前言作为状态标题。(#106026)
- **Codex CLI:** 将捆绑插件升级到 Codex CLI 0.144.4。
### 修复
- **外部监督器重启健康:** 仅当替换网关锁和监听器 PID 一致时接受设备身份策略关闭,防止 OCM 管理的重启在成功交接后超时。感谢 @shakkernerd。
- **ACPX 清理进程检查:** 限制主机进程表读取,使停滞的 `ps` 调用不会挂起网关启动或会话清理,同时保留故障关闭的所有权检查。感谢 @Alix-007。
- **Cron 生命周期冲突重试:** 在计划、手动和启动恢复的运行中保留执行阶段的重试决策,使执行后的声明冲突无法重播已完成的消息或工具。修复 #108428。感谢 @yetval。
- **Discord 网关元数据截止时间:** 将现有的查找截止时间通过 DNS 和代理预检、请求标头和响应体传递,使停滞的网关启动干净中止。(#104580)感谢 @hugenshen。
- **Control UI 云端会话思考:** 在“新建会话”模型选择器中公开推理级别,并在云端调度前持久化所选级别。
- **iOS 全新安装设置:** 在钥匙串清理之前原子化地红移除已使用的设置凭据,使延迟的条目删除不再断开已成功配对的设备。修复 #107591 感谢 @dagmarjeeves-lab 和 @vincentkoc。
- **Tlon SSE 连接清理:** 在 HTTP 响应失败和流打开被拒绝后解除打开截止时间,使重连尝试不会遗留过期的定时器。(#104585)感谢 @hugenshen。
- **LINE 回复令牌媒体类型:** 在入站回复中尊重视频和音频元数据,与主动发送共享规范媒体构建器,并在记录空的纯媒体投递时显式失败。(#106515)感谢 @edenfunf。
- **Mattermost WebSocket 连接截止时间:** 限制打开握手的时间,使停滞的 TCP 对等端无法无限期挂起频道启动,并在超时后恢复重连控制。(#105553)感谢 @hugenshen。
- **排队 TTS 重试:** 在入队前将本地出站媒体复制到队列所有的存储中,使语音回复能在生产者临时清理和重启恢复后幸存,在重试退避期间保留引用的工件,并在一天后修剪未引用的假脱机文件。修复 #108501。(#108502)感谢 @masatohoshino。
- **飞书应用注册截止时间:** 通过受保护的获取边界将 OAuth 设备注册请求限制为 10 秒,使设置不会因停滞的响应标头而无限期挂起。(#105549)感谢 @hugenshen。
- **LINE 控制命令提及:** 在提及剥离之前检测已授权的斜杠命令,使内联群组和直接消息控制保留原始的入口元数据。(#107230)感谢 @edenfunf。
- **飞书文档图像读取:** 使用所选账户超时限制远程文档图像标头和停滞的正文,通过插件的 MDAST 管道解析文档 Markdown,保留图像/块对齐,并在创建空图像块之前拒绝失败的上传输入。感谢 @Alix-007。
- **ClawHub 注册表读取:** 与其他瞬时网关故障一起重试有界限的 HTTP 500 响应,使多包发布扫描能够在独立的注册表错误中幸存。
- **Slack Socket 模式健康:** 当 `auth.test` 失败或配置的机器人令牌解析为没有 `bot_id` 的用户时,将已连接的 Socket Mode 传输报告为降级,同时保留健康的企业组织安装。感谢 @zw-xysk。
- **Synology Chat 响应限制:** 限制用户列表响应读取,立即停止过大的流,并在 NAS 超过支持的信封时保留过时的缓存身份。感谢 @zw-xysk。
- **使用日期范围:** 从有限的会话范围中排除没有时间戳的遗留转录行,同时保留它们在总历史总量中,并在提供新语义之前重建较旧的使用缓存。修复 #89709。感谢 @TurboTheTurtle。
- **LINE 群组历史竞争:** 在活跃提及轮次期间接收的群组消息保留用于下一轮次,同时仅消费一次轮次前快照。(#107367)感谢 @edenfunf。
- **Mattermost 进度命令详情:** 在频道配置验证和捆绑元数据中接受有文档的 `streaming.preview.commandText` 和 `streaming.progress.commandText` 模式。感谢 @shakkernerd。
- **1Password 授权交接:** 在共享插件状态中持久化绑定 nonce 的待处理审批,使跨代理实例的挂钩和工具执行保持一次性使用并在失败时关闭。
- **Control UI 聊天转录:** 在会话和面板返回时保留加载的历史记录,限制自动向后滚动加载,虚拟化长转录,保留隐藏的原生运行边界,并防止前置、流式传输和响应式布局出现闪烁或跳跃。感谢 @shakkernerd。
- **Codex 动态工具结果:** 使用共享的工具结果失败契约处理任意生命周期元数据,防止成功的技能工坊结果被显示并持久化为失败的调用。修复 #107684。感谢 @shakkernerd。
- **Codex `/status` 上下文新鲜度:** 从发出 `rawResponse/completed` 的 Codex 应用服务器中消费精确的每响应使用量;当精确使用量不可用或省略时,保持上下文未知而不是重用累计生命周期总量。(#107813)感谢 @wuqxuan。
- **嵌套资源忽略:** 在技能和资源发现期间,尊重嵌套忽略文件中无斜杠的模式和转义的字面感叹号。感谢 @moguangyu5-design。
- **代理绕过优先级:** 一致地尊重空白小写 `no_proxy` 值覆盖大写 `NO_PROXY`,与 Undici 一致,并重用规范匹配器用于 Telegram 回退选择。
- **Tokenjuice 执行压缩:** 避免在压缩的中间件元数据中保留原始命令输出,防止大型成功压缩导致中间件详情大小检查失败。
- **代理 Git 包身份:** 在托管仓库解析之前剥离引用并拒绝遍历段,使 GitLab 分支引用解析到规范的托管安装路径。感谢 @vincentkoc。
- **Tlon 自定义 S3 上传:** 通过 AWS SDK 的原生解析器传递存储端点,使自定义 S3 兼容上传在预签名之前不再失败。
- **Signal 活跃运行控件:** 在活跃轮次期间保持授权的停止、状态、审批和队列读取控件响应,同时在规范会话准入中保留普通和有状态轮次,并在停止时取消每个待处理的群组发送方通道。(#107422)感谢 @arduano。
- **代理认证存储锁:** 在 `proper-lockfile` 报告锁被破坏时,展示正常的释放失败,同时避免多余的释放尝试。
- **配对节点会话目录:** 授权捆绑的 Anthropic 和 Codex 目录请求从 Control UI 读取流中调用其只读节点命令,恢复远程 Claude/Codex 行和终端恢复可用性。修复 #107406 感谢 @vincentkoc。
- **沙箱重建确认:** 将 Clack 取消视为拒绝,使 Ctrl-C 无法继续进行容器移除。
- **Microsoft Teams HTML 文本:** 在引用的和 Graph 获取的消息中一致地解码 HTML5 实体,同时保留字面转义实体文本。
- **ClawHub 插件 API 范围:** 将每个支持的比较器委托给 `semver`,使波浪号、部分通配符和预发布插入符边界正确,同时保留 OpenClaw 版本规范和现有的受限范围语法。(#106877)
- **Web 可读性相对链接:** 使用请求 URL 作为解析文档的种子,使文章链接正确解析,同时移除插件的重复惰性加载器外观。(#106860)
- **浏览器自动路由:** 当隐式选择的浏览器节点报告其控制主机不可达时,回退到网关主机,同时保留显式节点固定和歧义操作失败。
- **Discord 语音参与者上下文:** 维护实时的网关语音状态名册,并在授权的语音代理轮次中包含当前频道参与者,使代理能够回答谁在场。感谢 @vincentkoc。
- **OC Path JSONC 插入:** 通过 `jsonc-parser` 修补对象和数组插入,使注释、尾随逗号和 CRLF 格式得以保留。(#106847)
- **Windows winget 安装:** 当 winget 安装 Node.js 后机器 PATH 更新尚未可见时,在当前 PowerShell 会话中继续,避免错误的“Node.js 未找到”失败。(#106862)
- **Control UI 实时语音反馈:** 为每个麦克风传输请求浏览器回声消除、噪声抑制和自动增益控制,并通过零增益汇点保持 PCM 捕获处理器连接,使麦克风输入不会在本地播放。
- **代理源回复恢复:** 保留通过代码模式执行的消息发送的当前聊天投递证据,防止成功回复触发重复重试和误导性的投递失败诊断。感谢 @vincentkoc。
- **网关进程内重启:** 在重建运行时准入之前清除过期的 SIGUSR1 重启状态并恢复已准备好的主机挂起,防止重启冷却或暂停的调度泄漏到下一个生命周期中。感谢 @vincentkoc。
- **ClickClack 持久化媒体投递:** 通过必需投递路由媒体回复,在重试中重用所有者作用域的上传和消息 nonce,修复持久化的附件状态而不重新读取源媒体,当较旧的 ClickClack 服务器无法证明未知发送时失败关闭,并使用所选提供商和模型的运行时输出预算而非频道级令牌上限。感谢 @jjjhenriksen 和 @shakkernerd。
- **Deepgram 实时自定义端点:** 使用秘密安全的错误验证语音通话流式基础 URL,保留显式的 `ws://` 和 `wss://` 端点,并为专用和自托管部署将 HTTP 方案映射到匹配的 WebSocket 传输。(#105334)感谢 @dwc1997、@vincentkoc 和 @zw-xysk。
- **Control UI 新建会话重连:** 重新发现代理、节点、存储库分支和文件夹浏览器状态,刷新派生工作空间,门控未验证的设备,并在网关客户端替换后阻止歧义重试,同时保留类型化任务和显式选择。修复 #106372 感谢 @vincentkoc。
- **macOS 远程节点就绪:** 从节点 hello 快照中获取主会话密钥,而不是在节点准入期间打开操作连接,防止远程隧道恢复使计算机使用和节点执行卡在生命周期转换中。
- **Claude CLI 上下文预算:** 通过将有效限制传递给 Claude Code 的原生自动压缩器并在 OpenClaw 会话状态中持久化相同的准备预算,来尊重 Anthropic 模型和每代理 `contextTokens` 限制。修复 #80933。(#93198)感谢 @mushuiyu886 和 @gorkem2020。
- **转录读取失败:** 从流式 JSONL 会话读取中传播权限和 I/O 失败,而不是将不可读的转录视为空。(#106412)感谢 @zenglingbiao。
- **重启哨兵诊断:** 报告 SQLite 读/写和遗留文件清理失败,同时保留尽力而为的重启恢复行为。(#106385)感谢 @zenglingbiao 和 @wendy-chsy。
- **原生应用连接和中继可靠性:** 在 Activity 重建期间保持 Android 断开连接停止,在不打开权限提示的情况下使远程摄像头命令失败,在能力变更后刷新移动节点注册,暴露 iOS 引导连接失败,在会话切换时取消过时的语音所有者,拒绝无效的 Watch 确认,保留启动期间接收的 Watch 事件,并防止较旧的代理概览请求替换较新的网关状态。感谢 @vincentkoc。
- **网关源监视:** 在启动 tmux 监视器之前将配置的端口从已安装服务中交出去,保留失败的面板用于附加/捕获,并与受管理的网关并排保持显式的备用端口监视。感谢 @vincentkoc。
- **Claude CLI 最大轮次诊断:** 使用 OpenClaw 和 Claude 会话上下文保留终端最大轮次结果,在工具操作可能已运行时发出警告,并停止对可能产生副作用的轮次进行不安全的认证配置文件或模型重播。(#94130)感谢 @zhangguiping-xydt 和 @tdrose01。
- **提供商网络重试:** 对瞬态连接错误对齐提供商的读取/轮询/下载和代理等待恢复,重试有界限的提供商 `ENOTFOUND` 失败,同时让网关 `ENOTFOUND` 和非幂等创建操作快速失败。(#101496)感谢 @xialonglee。
- **会话重试分类:** 停止其标识符或负载细节仅包含 429/5xx 数字序列的永久提供商错误重新发送完整上下文,并在重试路径之间共享有界限的速率限制窗口解析。(#105258)感谢 @destire-mio 和 @yetval。
- **LINE 指令模板:** 抑制带有空白必填字段或无标签操作的确认和按钮,同时保留有效的无标题按钮和周围的回复文本。(#105520)感谢 @edenfunf。
- **SQLite 维护模式验证:** 在压缩之前拒绝当前版本的全局和代理数据库中缺少或漂移的规范表、约束、索引、触发器或表选项,同时接受支持的增量迁移布局。
- **Matrix 引导诊断:** 在有界限的标准输出和标准错误尾部保留完整的 UTF-8 码点,使加密依赖失败不会在保留边界处显示替换字符。(#105475)感谢 @qingminlong。
- **iOS Watch 中继命令:** 允许配对的 iPhone 节点通过默认网关策略通告和调用 `watch.status` 和 `watch.notify`,同时保留直接 watchOS 节点的固定最小命令表面。感谢 @vincentkoc。
- **Swabble 状态配置:** 在读取服务状态时尊重全局 `--config` 路径,而不是静默使用默认配置。
- **ClawHub 重试计时:** 拒绝分数延迟秒数和日历归一化无效的 Retry-After 日期,使运行时和发布读取保持在其有界限的回退计划上。(#105479)感谢 @qingminlong。
- **Discord 线程归档默认值:** 继承每个父频道配置的自动归档持续时间用于绑定创建的线程,而不是强制 60 分钟,同时保留显式覆盖。(#103413)感谢 @wings1029。
- **已安装插件加载:** 使原生模块回退使用 jiti 的转换路径而不是重试相同的同步 ESM 加载,防止官方插件导入 SDK 契约模块时出现 Node 24 启动竞争。感谢 @vincentkoc。
- **QA 配置文件频道执行:** 将混合的 Crabline 频道场景分区为一个聚合的主机套件,使基于分类法的配置文件命令和证据工作流不再在执行前中止。
- **插件 SDK API 基线:** 覆盖每个公共入口点,保留完整的声明形状而不产生源代码行变动,并从更改文件验证中运行基线和导出表面检查。感谢 @vincentkoc 和 @zw-xysk。
- **SQLite 终端会话恢复:** 在代理数据库中跟踪物理转录突变时间,使被杀死或超时的主会话在转录写入超出注册表更新时轮换,同时在 doctor 导入期间保留遗留转录 mtime。感谢 @vincentkoc。
- **网关聊天类型检查:** 从其拥有的协议模式中导入聊天事件类型,在退役的聚合类型模块被移除后恢复完整的项目类型检查。感谢 @vincentkoc。
- **打包的 Crabbox 命令:** 包含已发布包装器导入的租约新鲜度助手,使 `crabbox:*` 命令在 npm 安装中不会因 `ERR_MODULE_NOT_FOUND` 失败。感谢 @vincentkoc。
- **插件会话目录:** 拒绝未知目录过滤器,将目录报告为插件能力,并在 SDK 注册捕获中保留它们,而不是静默返回空结果或将仅目录插件分类为无能力。感谢 @vincentkoc。
- **网关服务审计:** 将 POSIX shell `-c` 包装器视为网关子命令检查的不透明对象,避免对 shell 包装的 macOS LaunchAgents 产生错误的缺少命令警告,而不解析内部命令或端口。修复 #81751。(#81778)感谢 @liaoandi。
- **出站频道引导:** 抑制同一频道、配置和注册表代次重复失败的插件激活,同时在配置或注册表重新加载后重试。(#100377)感谢 @xialonglee。
- **OpenAI Realtime 客户端密钥截止时间:** 通过受保护的获取边界将语音和转录密钥获取限制为 30 秒,同时保留身份验证和有界限的响应解析。(#102860)感谢 @Alix-007 和 @Leon-SK668。
- **网关客户端看门狗:** 对无界限和混合的待处理请求保持传输停滞检测激活,使死套接字拒绝待处理请求、重新连接并且永不重播被拒绝的请求。(#103407)感谢 @NianJiuZst。
- **iOS 分享扩展草稿:** 保留以脚手架类似前缀开头的合法共享文本,仅移除确切的旧式脚手架行,避免将类似方案散文视为 URL,并去重主机镜像的内容。(#103453)感谢 @lin-hongkuan 和 @harjothkhara。
- **Telegram 推理预览:** 通过延迟删除重新定位分割的推理预览,使先前的预览消息不会过时,同时保留客户端滚动位置。(#97828)感谢 @ly-wang19 和 @kyle20026。
- **飞书原生卡片线程:** 一次性规范化空白回复目标,并为卡片和媒体部分重用共享回复模式,使原生卡片主题回复保持在其线程中。(#102804)感谢 @sunlit-deng。
- **QQBot 令牌请求:** 使用共享的 30 秒受保护获取截止时间限制令牌获取,使停滞的单飞行调用者一起失败、清理并可以重试。(#102897)感谢 @maweibin。
- **Canvas A2UI 验证:** 在 CLI、代理工具和最终节点调用边界处拒绝格式错误或不受支持的 JSONL,同时保留原生 v0.8 调度。(#103713)感谢 @qingminglong。
- **Twilio RCS 入站路由:** 仅在签名 webhook 验证后规范化 RCS 消费者地址,使发送者匹配和会话正常工作,同时不改变出站 RCS 语义。(#102373)感谢 @clawSean。
- **ClickClack 输出清理:** 在发送者边界处剥离内部工具和 XML 脚手架,抑制仅脚手架发送,并保留可选的现代投递 ID。(#103142)感谢 @masatohoshino、@vincentkoc 和 @zw-xysk。
- **代理核心截断:** 当头部截断接收到负行或字节上限时避免空输出崩溃。(#103425)感谢 @qingminglong。
- **Windows Node 解析:** 在有敌意的 `PATH` 值下解析不区分大小写的裸 `node.exe` 条目时保留当前可执行文件。(#103907)感谢 @soldforaloss 和 @vincentkoc。
- **Codex 运行时切换:** 同时接受捆绑的 Codex 运行时用于 `codex/*` 和 `openai/*` 模型路由,同时保持不受支持的提供商/运行时组合被拒绝。(#103762)
- **代理中止清理:** 串行化提示锁重新获取与终端清理,使取消的嵌入运行不会在会话锁上自竞争长达 60 秒。
- **Chutes OAuth 截止时间:** 限制令牌交换、配置文件查找和刷新请求,并在可选的用户信息丰富停滞时保留已发出的令牌。(#102026)感谢 @Alix-007。
- **Control UI 工作空间头像:** 在引导和身份响应中内联经过验证的代理头像文件,使个人卡片图像无需未经身份验证的头像路由请求即可渲染,同时保留配置的表情符号优先级。(#102892、#97602)感谢 @LZY3538 和 @mtuwei。
- **Exec 安全标志:** 自动批准精选的只读布尔标志用于默认的仅标准输入过滤器,同时保持未知标志、尾部跟随/重试模式、文件操作数和自定义配置文件失败关闭。(#88953)感谢 @yetval。
- **iOS 会话变更:** 将重命名、归档、固定、删除和分叉请求限定到所选代理,保留分叉会话的父代理,使多代理聊天操作不会在错误代理下变更或创建会话。(#103366、#103415)感谢 @lin-hongkuan 和 @harjothkhara。
- **Swift 协议初始化器:** 为每个模式可选的生成初始化器参数默认为 `nil`,使新增的协议字段不再破坏 SDK 构造调用点。
- **OpenCode Go MiMo 目录:** 停止暴露拒绝代理请求的已弃用 `mimo-v2-omni` 和 `mimo-v2-pro` 别名,并在活跃的 MiMo V2.5 路由上保留发布验证。(#103311、#103329)感谢 @krissding。
- **审计时间过滤器:** 拒绝 `openclaw audit --after` 和 `--before` 中不可能的日历日期,而不是将它们滚入意外区间,同时保留无时区的时间戳语义。(#103433)感谢 @qingminglong。
- **OpenAI 兼容的流式工具调用:** 执行以 SSE `data: [DONE]` 结束但省略 `finish_reason` 的流中的完整原生工具调用,同时保持传输 EOF 和可见文本情况失败关闭。(#98124、#97994)感谢 @SunnyShu0925 和 @wszhhx。
- **xAI 提供商别名:** 保留 Grok 4.3 和 Grok 4.5 思维配置文件、快速模型路由和加密推理重播,当模型使用已交付的 `x-ai` 提供商别名而不是将有效的思维请求限制为 `minimal`。(#103315)
- **Doctor 状态隔离:** 当 `OPENCLAW_STATE_DIR` 指向其他位置时,阻止自动更新和网关监视修复从默认主目录导入和归档 exec 或插件绑定审批,保持隐式 CLI 预检仅通知,并保留跨状态导入仅供直接操作员 doctor 运行使用。(#103247、#103317)感谢 @vincentkoc。
- **Doctor 干净状态引导:** 在干净运行且无配置更改后,停止建议 `openclaw doctor --fix`,同时保留有针对性的修复提示。(#103233)感谢 @kewang-pika 和 @nonplace。
- **Google 音乐生成:** 重试一个未阻塞的 Lyria 响应,该响应省略了其合同要求的音频,同时保持提示块和终端生成停止不可重试。(#103318)
- **OpenCode Zen 模型目录:** 刷新提供商拥有的静态种子,包含 Claude Sonnet 5、Grok 4.5、Hy3 Free、Kimi K2.7 Code 和 MiniMax M3,附带已验证的路由、定价、限制和输入能力,移除退役的免费层行,并通过未经身份验证的模型列表暴露相同的目录。(#103184)
- **受管理的浏览器启动:** 将异步 Chrome 引导和运行时生成失败作为浏览器错误暴露,同时保持网关存活,并在后续生命周期失败中保留进程错误处理。感谢 @vincentkoc。
- **浏览器节点代理下载:** 将每个操作产生的下载传输到网关媒体存储,对齐 10 MiB 每文件和 16 MiB 聚合传输预算,并将多个下载路径重写为网关本地文件,而不遍历页面控制的结果数据。
- **网关启动迁移:** 当所选配置在启动期间发生变化时,在退出前释放共享迁移租约,允许立即重试而不是阻塞就绪状态直至五分钟租约到期。(#103145)
- **Apple 超时恢复:** 即使平台工作忽略取消,也能从共享操作截止时间和调用者取消中迅速返回,同时隔离延迟的网关握手并清理位置和权限等待者。(#103066)感谢 @NianJiuZst。
- **Claude CLI 热会话:** 当 Claude 未写入原生转录时保留受管理的 stdio 连续性,仅当准确的活动子进程消失或更改时回退到有界限的 OpenClaw 历史,并防止无状态运行持久化 CLI 绑定。(#96841)感谢 @bradreaves。
- **CLI 插件列表:** 当没有遗留输入时跳过状态迁移运行时加载,减少打包的冷启动内存,同时保留对遗留插件索引和已配置会话存储的迁移。
- **Unicode 安全的有界限文本:** 在缩短预览、提示、诊断、标签、会话键、链接元数据和身份值时,跨 Control UI、CLI、网关、插件、QA、内存和 Android 表面保留完整的 UTF-16 代理对。(#102625、#102626、#102627、#102816、#102823、#102833、#102877、#102949、#102963、#102969、#102988、#103010、#103034、#103210、#103341、#103487、#103543、#103580、#103646)感谢 @zhangguiping-xydt、@wings1029、@wangyan2026、@Pandah97、@MoerAI、@SunnyShu0925、@zhangqueping、@zw-xysk、@cxbAsDev、@lzyyzznl、@coder-master-0915、@LeonidasLux、@mushuiyu886、@ly85206559、@Simon-XYDT、@lsr911、@vincentkoc、@chengzhichao-xydt 和 @wangmiao0668000666。
- **Cron 列表表格:** 通过终端显示宽度清理和调整有界限的单元格大小,使中日韩文字、表情符号、组合标记和终端控制输入无法破坏对齐或输出。(#103616)感谢 @mushuiyu886。
- **CLI 模型表格:** 通过渲染的终端宽度清理、截断和填充模型列表单元格,使表情符号、中日韩文字和其他宽字形保持列对齐。(#102819)感谢 @Kevin23-design 和 @vincentkoc。
- **技能提示压缩:** 在保留的提示预算内保留每个包含的技能身份,然后使用剩余预算进行缩短的、UTF-16 安全的描述,保留触发器指导而不超过硬限制。(#88426)感谢 @abel-zer0、@vincentkoc、@chengzhichao-xydt、@wangmiao0668000666 和 @Pandah97。
- **频道 Markdown 代码表格:** 通过渲染的显示宽度调整列大小,使中日韩文字、表情符号和混合宽度单元格在共享的 Telegram 和 Discord 输出中保持对齐。(#55596、#55512)感谢 @sparkyrider 和 @zjy282。
- **QQ 机器人审批预览:** 在字素边界处包裹长清理命令和元数据,使用可见的继续标记和安全围栏,使桌面 QQ 审查保持可读性,而不改变命令内容。(#102119、#101979)感谢 @Bartok9 和 @xuzhi5858。
- **Codex 计算机控制:** 将固定长度的坐标对发布为同构数组模式,使 Codex 应用服务器能够使用 `computer` 工具启动线程,而不是拒绝元组值的 `items`。
- **Google Chat 请求截止时间:** 将控制调用限制为 30 秒,同时为媒体传输提供大小感知的总预算和单独的 30 秒停滞正文防护,防止挂起的 Chat API 请求而不破坏大型附件上传。(#102227)感谢 @hugenshen。
- **Google Gemini 前缀模型 ID:** 在选择多模态函数响应行为时识别 `google/gemini-*` 和 `models/gemini-*`,保留 Gemini 2 图像回退而不回归 Gemini 3 内联图像响应。(#102382)感谢 @LiLan0125 和 @yetval。
- **生成的提供商模型目录:** 当 MiniMax 和 NVIDIA 目录行宣传音频或视频元数据时保留它们,同时将运行时模型输入投影到文本/图像,防止配置的多模态主模型被丢弃并回退。(#97858、#97048)感谢 @ly-wang19 和 @zackchiutw。
- **DeepSeek 目录元数据:** 使 V4 Flash 和 Pro 定价与 DeepSeek 当前的缓存命中、缓存未命中和输出费率对齐;刷新由较旧引导流程写入的确切目录元数据;并记录已弃用的 `deepseek-chat` 和 `deepseek-reasoner` 兼容名称于 7 月 24 日退役。(#103192)
- **CLI 音频转录文件:** 将推断的 Whisper 和 Parakeet 文本文件视为权威,使空或缺失的输出无法将进度/状态标准输出暴露为用户语音。(#87393、#87384)感谢 @kesslerio。
- **Node 24 上的浏览器操作:** 将浏览器请求取消绑定到客户端和响应生命周期,而不是 Node 24.16+ 过早中止的正文流信号,防止有效的 POST 操作在 JSON 解析后失败。感谢 @obviyus 和 @vincentkoc。
- **Android 硬件键盘聊天:** 在物理键盘上使用未修改的 Enter 键发送,同时保留 Shift+Enter 和其他修改的 Enter 组合用于多行输入。(#101239)感谢 @3ninyt3nin-creator。
- **Codex 生成的本地子代理:** 保持父应用服务器订阅和共享客户端存活,直到生成的本地子代理完成投递解决,防止丢失唤醒和泄漏的一次性清理。
- **Control UI 会话创建:** 在选择另一个会话后,保持新创建的会话位于稳定的侧边栏顺序的前端。感谢 @shakkernerd。
- **仅 FTS 内存启动:** 当 `memorySearch.provider` 显式为 `none` 时跳过插件能力发现,避免不必要的冷启动扫描。
- **iOS 嵌入式终端:** 在原生网关身份验证连接时直接打开仅终端的 Control 表面,而不是暴露 Web UI 登录屏幕。
- **源码构建可移植性:** 保持 tsdown 配置自包含,使构建不依赖于从 unrun 的临时模块目录解析 tsdown 包。感谢 @vincentkoc。
- **浏览器标签页收养:** 当新的 MCP、Playwright 或 CDP 目标未能通过最终安全验证、创建后中止或无法重新发现时,保留先前的隐式标签页和稳定别名;在创建标签页之前验证标签,并将受管理的清理限制为已收养的目标。(#105301)感谢 @hugenshen。
- **Mattermost 块流式传输:** 在草稿预览模式下保留完整、不重复的文本和工具块,并在预览流式传输禁用时尊重正常的块流式传输。(#87449)感谢 @yetval 和 @Senseonics-AI。
- **iOS 开发应用标识:** 将开发应用标记为 OpenClaw,同时使用其独特的调试图标以区别于发布版本。
- **Android 聊天恢复:** 在重连和序列间隙历史快照追赶时保持乐观的用户消息和本地拥有的运行,防止已发送的消息消失或过时的运行取得所有权。(#100197)
- **iOS 语音唤醒清理:** 在禁用非活跃的语音唤醒时避免初始化麦克风音频管道,防止模拟器启动中止和不必要的音频设置。
- **代理停止恢复:** 防止延迟中止的提示在拆卸后重新获取孤立的会话锁,使 `/stop` 将对话留给下一轮次。
- **本地网关 CLI 认证:** 将环回 CLI 令牌/密码调用保持在持久设备作用域之外,使读取探测不会在过时的配对基线后阻塞后续的写入/管理命令。(#95997)感谢 @vincentkoc。
- **MCP 模式诊断:** 将 draft-2020-12 编译器失败归因于外部 MCP 模式,使错误模式产生可操作的设置错误。感谢 @vincentkoc。
- **Amazon Bedrock 控制平面截止时间:** 限制模型发现和应用推理配置文件查找,保留调用者取消,并在每个请求路径后关闭短命的 SDK 客户端。感谢 @Alix-007 和 @vincentkoc。
- **回复预投递恢复:** 使用所有者可覆盖的截止时间限制每个预投递回调,在挂起的插件工作后释放串行化的回复通道,并仅当传输从未开始时保留持久化最终投递重试状态。(#104256)感谢 @NianJiuZst 和 @BenjaminBrossi。
- **Signal 原生引用回复:** 在代理、显式、持久化和分块发送中保留活跃的入站消息作为原生引用,同时将回复模式策略保留在 Signal 插件内部。(#105347)感谢 @jesse-merhi 和 @vincentkoc。
- **媒体存储远程下载:** 限制响应标头等待和停滞的正文,关闭放弃的重定向和错误响应,并移除部分临时文件,使挂起的来源无法固定调用者。(#104624)感谢 @hugenshen。
- **Cron llama.cpp 工具模式:** 保持面向模型的 cron 声明模式与 llama.cpp 兼容,同时保留网关和运行时非空验证。修复 #107449。(#108360)感谢 @lee-xydt 和 @Patt92。
- **终端会话:** 保留早期按键,启用配对节点终端操作,授权配对节点目录读取,在过时的 Control UI 连接后恢复,并在大量输出下保持慢速客户端连接。(#107214、#107361、#107410、#107419、#107348)感谢 @vincentkoc 和 @zw-xysk。
- **Control UI 配置:** 自动保存经过验证的编辑,恢复自动保存门控,显示未应用的重启状态,并保持正常的内容滚动和选择行为。(#107458、#107477、#107577、#107349)
- **Signal 恢复:** 在停滞的容器握手后重新连接,防止重启期间守护进程重叠,并在电话号码规范化期间保留用户名目标。(#107386、#107409、#107365)感谢 @hugenshen、@ZHOUKAILIAN、@UberKitten 和 @ly-wang19。
- **授权边界:** 要求配对节点目录浏览的操作员管理员权限,并阻止迁移配置合并中的原型污染。(#106004、#106116)感谢 @yangxiansheng、@joshavant、@yetval 和 @ruel225。
- **对话身份:** 跨群组轮次保留说话者归属,并减少格式错误的 Discord 公会回复工具调用。(#107025、#107474)感谢 @lonexreb。
- **提供商设置:** 显示 OpenRouter OAuth 拒绝错误,找到存储在身份验证别名下的凭据,并保持未解决的 API 密钥提供商可见以便修复。(#105448、#106736、#106754)感谢 @VectorPeak 和 @altaywtf。
- **Claude 和 Codex 会话:** 保持 Claude 轮次开放以供原生后台工作,避免实时更新后出现 Codex 关闭警告,完成 Codex 引导登录交接,并退役完成的挂钩中继。(#106347、#106418、#107174、#106899)感谢 @obviyus、@fuller-stack-dev 和 @bek91。
- **Apple 应用:** 将 iPhone 和 Watch 客户端连接到协议 v3 网关,拒绝不完整的附件分享,并在 iOS 发布归档中尊重固定的 Swift 工具链。(#106294、#106513、#107188)感谢 @jincheng-xydt、@harjothkhara 和 @joshavant。
- **内存可靠性:** 跨分割的 QMD 输出保留 UTF-8,在遗留迁移期间保留规范缓存行,并接受前导零的 JSON 内容长度。(#107263、#107243、#105916)感谢 @wahaha1223、@felirami、@Tony-ooo、@qingminlong、@vincentkoc 和 @zw-xysk。
- **技能与工坊:** 保持全局安装的 ClawHub 技能被跟踪,清理孤立的用量行,暴露验证错误,并将工坊审批默认设置为自动处理。(#106479、#107144、#107143、#107690)感谢 @ml12580、@mnowrot、@SunnyShu0925 和 @shakkernerd。
- **有界限的网络调用:** 对 Google Chat 认证、Slack 目录和读取模式调用以及 Twitch 用户查找设置超时,而不是挂起。(#106178、#106643、#107103、#105883、#107360)感谢 @QiuYuang、@Monkey-wusky、@maweibin、@zw-xysk 和 @Alix-007。
- **频道投递:** 当标量流式传输回退时发出警告,并使用所选模型的运行时预算使 ClickClack 媒体投递持久化。(#106796、#105775)感谢 @jjjhenriksen。
- **插件管理:** 尊重标准的 ClawHub API 比较器,并让 Control UI 管理员启用已安装的插件。(#106889、#106318)
- **运行时配置:** 保留解析的缓存保留值,应用显式的环境变量移除,并防止调度的工作板卡片卡在运行状态。(#106069、#107258、#107271)感谢 @krissding、@jalfaro2876 和 @pgondhi987。
- **输入和输出安全:** 红移除敏感的迁移终端输出,规范受管理的 Git 包身份,并避免在压缩的 Tokenjuice 元数据中保留原始命令输出。(#106806、#107637、#107705)感谢 @yetval。
- **网络和资源匹配:** 共享规范的 NO_PROXY 行为,并尊重嵌套忽略模式以及转义的字面感叹号。(#107711、#106258)感谢 @moguangyu5-design。
- **Markdown 前言:** 当 YAML 节点无法直接表示时,保留强制转换的回退值。
### 完整贡献记录
完整贡献记录可在标签固定的 [CHANGELOG.md](https://github.com/openclaw/openclaw/blob/v2026.7.2-beta.2/CHANGELOG.md#complete-contribution-record) 中查看。
### 发布验证
- npm 包:https://www.npmjs.com/package/openclaw/v/2026.7.2-beta.2
- 注册表 tarball:https://registry.npmjs.org/openclaw/-/openclaw-2026.7.2-beta.2.tgz
- 完整性:`sha512-Pjp6VcPQtGF2Q2d6faFOJ75IGpTt3Xucuxclz//n4eP89Wds5wMhZzGf0Oiqd1uSncm5LgCcZzm31Igp6lOR0w==`
- 发布 SHA:`54d98a47251d3216443f9446830dec1a0aaddc43`
- 完整发布 CI 报告:https://github.com/openclaw/releases/blob/main/evidence/2026.7.2-beta.2/release-evidence.md
- 发布发布:https://github.com/openclaw/openclaw/actions/runs/29566151276
- npm 预检:https://github.com/openclaw/openclaw/actions/runs/29548071521
- 完整发布验证:https://github.com/openclaw/openclaw/actions/runs/29546250316
- 插件 npm 发布:https://github.com/openclaw/openclaw/actions/runs/29566735890
- 插件 ClawHub 发布:单独调度,此证明不等待:https://github.com/openclaw/openclaw/actions/runs/29566738448
- 插件 ClawHub 引导:单独调度,此证明不等待:https://github.com/openclaw/openclaw/actions/runs/29566741033
- npm Telegram beta E2E:https://github.com/openclaw/openclaw/actions/runs/29553869058
## 2026.7.2
### Highlights
- **Remote coding sessions:** run Control UI sessions on cloud workers, open Codex and Claude catalog sessions in terminals on their owning hosts, and resume OpenCode and Pi sessions directly in a terminal. (#107670, #107086, #107200)
- **Native automation and nodes:** bring Automations parity to mobile, add foreground Voice Wake on Android, and expose camera, location, and notification capabilities from headless Linux nodes. (#106355, #107081, #107193)
- **Safer channel operation:** prevent Telegram durable-ingress loss after restarts, keep Signal stop and approval controls responsive during active turns, and stop channel allowlists from granting owner access. (#107288, #107422, #107403) Thanks @obviyus, @arduano, and @yetval.
- **Guided Control UI setup:** configure model providers from Settings, onboard channels through a guided setup page, and choose images and models while creating sessions. (#106490, #106469, #107358) Thanks @alexandre-leng and @fuller-stack-dev.
- **Gateway and session recovery:** prevent restart admission from wedging the Gateway, recover reply sessions after finalization stalls, and keep one-shot cron jobs enabled through lifecycle claim races. (#107339, #106792, #107236) Thanks @obviyus, @joshavant, @charliemeyer2000, and @SL4N.
- **Install and packaging:** add Linux deb and AppImage bundles with Gateway guidance, publish them from stable main-based releases, and let Windows installs continue immediately after winget adds Node.js. (#106533, #106891, #106862)
### Changes
- **External gateway supervision:** add `OPENCLAW_SUPERVISOR_MODE=external` for lifecycle owners such as OCM, preserving verified restart and deferral behavior without exposing native service authority, blocking native service mutation and self-update, and providing a versioned atomic restart-handoff consume contract. Thanks @shakkernerd.
- **ClickClack guided setup:** configure ClickClack from `openclaw onboard` or `openclaw channels add clickclack` with URL, token, and workspace prompts, default-account env fallback, nonfatal live connection validation, and gateway-aware next steps that connect automatically when OpenClaw is already running. Thanks @shakkernerd.
- **ClickClack command menus:** publish each bot's native OpenClaw commands to ClickClack composer autocomplete at gateway startup, with per-account opt-out and nonfatal compatibility handling for older tokens and servers. Thanks @shakkernerd and @vincentkoc.
- **Skill Workshop approvals:** run agent-initiated apply, reject, and quarantine actions without an additional approval prompt by default while preserving `skills.workshop.approvalPolicy: "pending"` as an opt-in approval gate. Thanks @shakkernerd.
- **TUI fuzzy selectors:** delegate list matching to pi-tui, adding slash-token and alpha-number matching while removing the local matcher fork.
- **macOS paired-node terminals:** advertise duplex Codex and Claude terminal resume commands from the embedded node host and forward interactive input and cancellation through the native app bridge. (#107335)
- **Control UI catalog terminals:** open eligible Codex and Claude Code sessions in the native CLI on their Gateway or paired-node host, with viewer-versus-terminal preferences, validated resume commands, and an interactive PTY relay. (#107086) Thanks @vincentkoc.
- **Skill Workshop history review:** add a manual, newest-first session scan that progressively searches older substantial work for conservative skill ideas, stores only SQLite cursor metadata, and leaves up to three results as pending proposals even when autonomous self-learning is disabled. (#106182)
- **OpenAI GPT-5.6 defaults:** use `openai/gpt-5.6` (Sol alias) for fresh API-key setup and exact `openai/gpt-5.6-sol` for fresh Codex/OAuth setup, default Sol to medium reasoning across both runtimes, and preserve existing primaries, fallbacks, aliases, and explicit GPT-5.5 selections. (#103234)
- **iOS offline chat:** pre-paint recent sessions and canonical transcripts from a protected, bounded per-gateway cache, keep sending disabled offline, and purge cached conversation text when pairing is reset. (#100194)
- **Slack progress indicators:** use Slack's native assistant thread status and rotating loading messages by default while keeping acknowledgement reactions static; lifecycle reaction updates now require `messages.statusReactions.enabled: true`.
- **Control UI Talk controls:** keep voice, model, sensitivity, and other realtime defaults in Settings → Communications → Talk, and use the composer microphone caret to select any browser audio input. (#101046)
- **Control UI session workspace shortcut:** expand or collapse the active Chat pane's session workspace rail with ⇧⌘B without changing the main app sidebar or the separate detail and Canvas preview panel. Thanks @shakkernerd.
- **Control UI Settings shortcut:** open Settings with ⇧⌘, while leaving the browser-owned ⌘, shortcut unchanged. Thanks @shakkernerd.
- **Control UI chat layout:** center the transcript on the composer axis, keep assistant and tool output left and user bubbles right within the same readable frame, and preserve custom message-width overrides. (#104474) Thanks @shakkernerd, @vincentkoc, and @zw-xysk.
- **Control UI composer footer:** center the chat settings chip and model controls between the divider and the card edge instead of pinning them to the divider. (#105866)
- **Control UI assistant actions:** keep assistant name and time first while placing hover actions beside them on the left instead of at the far edge. Thanks @shakkernerd.
- **Control UI message context:** reveal per-message token, context, and model details from the timestamp on hover or activation instead of showing a separate Context button.
- **Control UI session titles:** reveal truncated recent-session names with a reduced-motion-safe hover animation.
- **Control UI sidebar usage:** remove the provider usage quota row from the expanded sidebar while keeping usage details available in the chat composer and Usage page. Thanks @shakkernerd and @vincentkoc.
- **Workboard dispatch cap:** add a request-scoped `--max-starts` override while preserving the default cap, sequential starts, and one-card-per-owner guard. (#100174) Thanks @souvikDevloper, @Souvikalp, and @jwest75674.
- **Plugin install provenance warnings:** require explicit `--force` acknowledgement for arbitrary executable plugin sources in CLI and chat installs, keep trusted ClawHub, bundled, official-catalog, and tracked-update flows frictionless, and restrict Crestodian installs to trusted sources. (#102197) Thanks @jesse-merhi.
- **Cloud workers:** add session placement, dispatch, and worker-turn routing for remote session execution. (#106332)
- **Paired-node coding agents:** discover OpenCode and Pi sessions and continue Codex and Claude catalog sessions through streaming CLI agent runs. (#106941, #106927, #105833)
- **Catalog sessions:** create eligible catalog sessions directly from the Control UI sidebar. (#105810) Thanks @fuller-stack-dev.
- **Managed worktrees:** configure cleanup limits by count and total size from Settings. (#106224)
- **Cron history:** serve scheduled-run history from the task ledger. (#106392)
- **Coding-agent memory:** import Codex and Claude Code memory into the Control UI. (#106406)
- **MCP isolation:** scope MCP server connections to their requesting session. (#106359) Thanks @obviyus.
- **Discord voice:** notify agents when voice-channel participants change. (#107004)
- **Codex usage:** show the signed-in account email alongside app-server usage windows. (#106500)
- **Skill Workshop:** scan prior session history for conservative, reviewable skill ideas. (#106766)
- **Task previews:** show the latest tasks from the running-tasks status row. (#107297)
- **Session changes:** show the active branch and local changed-file state in Control UI sessions. (#106835)
- **Channel progress:** reserve progress drafts for long-running work and use the model's own preamble as the status headline. (#106026)
- **Codex CLI:** bump the bundled plugin to Codex CLI 0.144.4.
### Fixes
- **External supervisor restart health:** accept device-identity policy closes only when the replacement gateway lock and listener PID agree, preventing OCM-managed restarts from timing out after a successful handoff. Thanks @shakkernerd.
- **ACPX cleanup process inspection:** bound host process-table reads so stalled `ps` calls cannot hang gateway startup or session cleanup while retaining fail-closed ownership checks. Thanks @Alix-007.
- **Cron lifecycle conflict retries:** preserve execution-phase retry decisions across scheduled, manual, and startup-recovered runs so post-execution claim conflicts cannot replay completed messages or tools. Fixes #108428. Thanks @yetval.
- **Discord gateway metadata deadline:** carry the existing lookup deadline through DNS and proxy preflight, request headers, and response bodies so stalled gateway startup aborts cleanly. (#104580) Thanks @hugenshen.
- **Control UI cloud session thinking:** expose reasoning level in the New Session model picker and persist the selected level before cloud dispatch.
- **iOS fresh-install setup:** atomically redact spent setup credentials before Keychain cleanup so a deferred item deletion no longer disconnects a successfully paired device. Fixes #107591 Thanks @dagmarjeeves-lab and @vincentkoc.
- **Tlon SSE connect cleanup:** disarm opening deadlines after failed HTTP responses and rejected stream opens so reconnect attempts cannot leave stale timers behind. (#104585) Thanks @hugenshen.
- **LINE reply-token media kinds:** honor video and audio metadata on inbound replies, share the canonical media builder with proactive sends, and fail visibly instead of recording empty media-only deliveries. (#106515) Thanks @edenfunf.
- **Mattermost websocket connection deadlines:** bound opening handshakes so stalled TCP peers cannot hang channel startup indefinitely and reconnect control resumes after timeout. (#105553) Thanks @hugenshen.
- **Queued TTS retries:** copy local outbound media into queue-owned storage before enqueueing so voice replies survive producer temp cleanup and restart recovery, retain referenced artifacts through retry backoff, and prune unreferenced spool files after one day. Fixes #108501. (#108502) Thanks @masatohoshino.
- **Feishu app registration deadlines:** bound OAuth device-registration requests to 10 seconds through the guarded fetch boundary so setup cannot hang indefinitely on stalled response headers. (#105549) Thanks @hugenshen.
- **LINE control-command mentions:** detect authorized slash commands before mention stripping so inline group and direct-message controls preserve the original ingress metadata. (#107230) Thanks @edenfunf.
- **Feishu document image reads:** bound remote document-image headers and stalled bodies with the selected account timeout, parse document Markdown through the plugin's MDAST pipeline, preserve image/block alignment, and reject failed upload input before creating empty image blocks. Thanks @Alix-007.
- **ClawHub registry reads:** retry bounded HTTP 500 responses alongside other transient gateway failures so multi-package release scans survive isolated registry errors.
- **Slack Socket Mode health:** report connected Socket Mode transports as degraded when `auth.test` fails or the configured bot token resolves to a user without `bot_id`, while preserving healthy enterprise-org installs. Thanks @zw-xysk.
- **Synology Chat response limits:** bound user-list response reads, stop oversized streams immediately, and retain stale cached identities when a NAS exceeds the supported envelope. Thanks @zw-xysk.
- **Usage date ranges:** exclude legacy transcript rows without timestamps from finite session ranges while preserving them in all-time totals, and rebuild older usage caches before serving the new semantics. Fixes #89709. Thanks @TurboTheTurtle.
- **LINE group history races:** retain ambient group messages received during an active mention turn for the next turn while consuming the pre-turn snapshot exactly once. (#107367) Thanks @edenfunf.
- **Mattermost progress command details:** accept the documented `streaming.preview.commandText` and `streaming.progress.commandText` modes in channel config validation and bundled metadata. Thanks @shakkernerd.
- **1Password authorization handoff:** persist nonce-bound pending approvals in shared plugin state so hook and tool execution across broker instances remain single-use and fail closed.
- **Control UI chat transcripts:** preserve loaded history across session and pane returns, bound automatic backscroll loading, virtualize long transcripts, retain hidden native run boundaries, and keep prepends, streaming, and responsive layouts from flickering or jumping. Thanks @shakkernerd.
- **Codex dynamic tool outcomes:** use the shared tool-result failure contract for arbitrary lifecycle metadata, preventing successful Skill Workshop results from being displayed and persisted as failed calls. Fixes #107684. Thanks @shakkernerd.
- **Codex `/status` context freshness:** consume exact per-response usage from Codex app servers that emit `rawResponse/completed`; when exact usage is unavailable or omitted, keep context unknown instead of reusing cumulative lifetime totals. (#107813) Thanks @wuqxuan.
- **Nested resource ignores:** honor slash-free patterns and escaped literal exclamation marks in nested ignore files during skill and resource discovery. Thanks @moguangyu5-design.
- **Proxy bypass precedence:** honor blank lower-case `no_proxy` values shadowing upper-case `NO_PROXY` consistently with Undici, and reuse the canonical matcher for Telegram fallback selection.
- **Tokenjuice exec compaction:** avoid retaining raw command output inside compacted middleware metadata, preventing large successful compactions from failing the middleware details-size guard.
- **Agent git package identities:** strip refs before hosted-repository parsing and reject traversal segments so GitLab branch refs resolve to the canonical managed install path. Thanks @vincentkoc.
- **Tlon custom S3 uploads:** pass storage endpoints through the AWS SDK's native parser so custom S3-compatible uploads no longer fail before presigning.
- **Signal active-run controls:** keep authorized stop, status, approval, and queue-read controls responsive during active turns while preserving ordinary and stateful turns in canonical session admission, and cancel every pending group sender lane on stop. (#107422) Thanks @arduano.
- **Agent auth storage locks:** surface normal release failures while avoiding redundant release attempts after `proper-lockfile` reports a compromised lock.
- **Paired-node session catalogs:** authorize bundled Anthropic and Codex catalog requests to invoke their read-only node commands from Control UI read flows, restoring remote Claude/Codex rows and terminal resume availability. Fixes #107406 Thanks @vincentkoc.
- **Sandbox recreate confirmation:** treat Clack cancellation as a decline so Ctrl-C cannot proceed with container removal.
- **Microsoft Teams HTML text:** decode HTML5 entities consistently in quoted and Graph-fetched messages while preserving literal escaped entity text.
- **ClawHub plugin API ranges:** delegate each supported comparator to `semver` so tilde, partial-wildcard, and prerelease caret bounds are correct while preserving OpenClaw version normalization and the existing restricted range grammar. (#106877)
- **Web Readability relative links:** seed parsed documents with the request URL so article links resolve correctly while removing the plugin's duplicate lazy-loader facade. (#106860)
- **Browser auto-routing:** fall back to the Gateway host when an implicitly selected browser node reports that its control host is unreachable, while preserving explicit node pins and ambiguous action failures.
- **Discord voice participant context:** maintain the live Gateway voice-state roster and include current channel participants in authorized voice agent turns so agents can answer who is present. Thanks @vincentkoc.
- **OC Path JSONC insertion:** patch object and array insertions through `jsonc-parser` so comments, trailing commas, and CRLF formatting survive. (#106847)
- **Windows winget installs:** continue in the current PowerShell session when winget installs Node.js before the machine PATH update becomes visible, avoiding a false `Node.js not found` failure. (#106862)
- **Control UI realtime Talk feedback:** request browser echo cancellation, noise suppression, and automatic gain control for every microphone transport, and keep PCM capture processors connected through zero-gain sinks so microphone input cannot play locally.
- **Agent source-reply recovery:** preserve current-chat delivery evidence for message sends executed through Code Mode, preventing successful replies from triggering a redundant retry and misleading delivery-failure diagnostic. Thanks @vincentkoc.
- **Gateway in-process restarts:** clear stale SIGUSR1 restart state and resume prepared host suspensions before rebuilding runtime admission, preventing restart cooldowns or paused scheduling from leaking into the next lifecycle. Thanks @vincentkoc.
- **ClickClack durable media delivery:** route media replies through required delivery, reuse owner-scoped upload and message nonces across retries, repair persisted attachment state without rereading source media, fail closed when an older ClickClack server cannot prove an unknown send, and use the selected provider and model's runtime output budget instead of a channel-level token cap. Thanks @jjjhenriksen and @shakkernerd.
- **Deepgram realtime custom endpoints:** validate Voice Call streaming base URLs with secret-safe errors, preserve explicit `ws://` and `wss://` endpoints, and map HTTP schemes to their matching WebSocket transport for dedicated and self-hosted deployments. (#105334) Thanks @dwc1997, @vincentkoc, and @zw-xysk.
- **Control UI New Session reconnects:** rediscover agents, nodes, repository branches, and folder-browser state, refresh derived workspaces, gate unvalidated devices, and block ambiguous retries after Gateway client replacement while preserving the typed task and explicit choices. Fixes #106372 Thanks @vincentkoc.
- **macOS remote node readiness:** take the main-session key from the node hello snapshot instead of opening an operator connection during node admission, preventing remote tunnel recovery from leaving Computer Use and node exec stuck in lifecycle transition.
- **Claude CLI context budgets:** honor Anthropic model and per-agent `contextTokens` limits by passing the effective limit to Claude Code's native auto-compactor and persisting the same prepared budget in OpenClaw session state. Fixes #80933. (#93198) Thanks @mushuiyu886 and @gorkem2020.
- **Transcript read failures:** propagate permission and I/O failures from streaming JSONL session reads instead of treating unreadable transcripts as empty. (#106412) Thanks @zenglingbiao.
- **Restart sentinel diagnostics:** report SQLite read/write and legacy-file cleanup failures while preserving best-effort restart recovery behavior. (#106385) Thanks @zenglingbiao and @wendy-chsy.
- **Native app connection and relay reliability:** keep Android disconnects stopped across Activity recreation, fail remote camera commands without opening permission prompts, refresh mobile node registration after capability changes, surface iOS onboarding connection failures, cancel stale Talk owners on session switches, reject invalid Watch acknowledgments, preserve Watch events received during startup, and prevent older agent overview requests from replacing newer gateway state. Thanks @vincentkoc.
- **Gateway source watch:** hand the configured port off from the installed service before starting the tmux watcher, preserve failed panes for attach/capture, and keep explicit alternate-port watches side by side with the managed Gateway. Thanks @vincentkoc.
- **Claude CLI max-turn diagnostics:** preserve terminal max-turn results with OpenClaw and Claude session context, warn when tool actions may already have run, and stop unsafe auth-profile or model replay for potentially side-effecting turns. (#94130) Thanks @zhangguiping-xydt and @tdrose01.
- **Provider network retries:** align provider read/poll/download and agent-wait recovery for transient connection errors, retry bounded provider `ENOTFOUND` failures while leaving gateway `ENOTFOUND` and non-idempotent create operations fail-fast. (#101496) Thanks @xialonglee.
- **Session retry classification:** stop permanent provider errors whose identifiers or payload details merely contain 429/5xx digit sequences from re-sending full context, and share bounded rate-limit-window parsing across retry paths. (#105258) Thanks @destire-mio and @yetval.
- **LINE directive templates:** suppress confirms and buttons with blank required fields or unlabeled actions while preserving valid titleless buttons and surrounding reply text. (#105520) Thanks @edenfunf.
- **SQLite maintenance schema validation:** reject current-version global and agent databases with missing or drifted canonical tables, constraints, indexes, triggers, or table options before compaction, while accepting supported additive-migration layouts.
- **Matrix bootstrap diagnostics:** preserve complete UTF-8 code points in bounded stdout and stderr tails so crypto dependency failures do not show replacement characters at retention boundaries. (#105475) Thanks @qingminlong.
- **iOS Watch relay commands:** allow paired iPhone nodes to advertise and invoke `watch.status` and `watch.notify` through the default Gateway policy while preserving the direct watchOS node's fixed minimal command surface. Thanks @vincentkoc.
- **Swabble status config:** honor the global `--config` path when reading service status instead of silently using the default configuration.
- **ClawHub retry timing:** reject fractional delay-seconds and calendar-normalized invalid Retry-After dates so runtime and release reads stay on their bounded fallback schedule. (#105479) Thanks @qingminlong.
- **Discord thread archive defaults:** inherit each parent channel's configured auto-archive duration for binding-created threads instead of forcing 60 minutes, while preserving explicit overrides. (#103413) Thanks @wings1029.
- **Installed plugin loading:** make native-module fallback use jiti's transform path instead of retrying the same synchronous ESM load, preventing Node 24 startup races when official plugins import SDK contract modules. Thanks @vincentkoc.
- **QA profile channel execution:** partition mixed Crabline channel scenarios into one aggregate host suite so taxonomy-backed profile commands and evidence workflows no longer abort before execution.
- **Plugin SDK API baseline:** cover every public entrypoint, preserve complete declaration shapes without source-line churn, and run baseline and export-surface guards from changed-file validation. Thanks @vincentkoc and @zw-xysk.
- **SQLite terminal session recovery:** track physical transcript mutation time in the agent database so killed or timed-out main sessions rotate when transcript writes outlive the registry update, while preserving legacy transcript mtimes during doctor import. Thanks @vincentkoc.
- **Gateway chat typecheck:** import chat event types from their owning protocol schema after the retired aggregate type module was removed, restoring full project typechecks. Thanks @vincentkoc.
- **Packaged Crabbox commands:** include the lease-freshness helper imported by the published wrapper so `crabbox:*` commands do not fail with `ERR_MODULE_NOT_FOUND` in npm installs. Thanks @vincentkoc.
- **Plugin session catalogs:** reject unknown catalog filters, report catalogs as plugin capabilities, and preserve them in SDK registration captures instead of silently returning empty results or classifying catalog-only plugins as capability-free. Thanks @vincentkoc.
- **Gateway service audit:** treat POSIX shell `-c` wrappers as opaque for the gateway-subcommand check, avoiding false missing-command warnings for shell-wrapped macOS LaunchAgents without parsing inner commands or ports. Fixes #81751. (#81778) Thanks @liaoandi.
- **Outbound channel bootstrap:** suppress repeated failed plugin activation for the same channel, config, and registry generation while retrying after config or registry reloads. (#100377) Thanks @xialonglee.
- **OpenAI Realtime client-secret deadlines:** bound voice and transcription secret acquisition to 30 seconds through the guarded fetch boundary while preserving authentication and bounded response parsing. (#102860) Thanks @Alix-007 and @Leon-SK668.
- **Gateway client watchdog:** keep transport-stall detection active for unbounded and mixed pending requests so dead sockets reject pending requests, reconnect, and never replay rejected requests. (#103407) Thanks @NianJiuZst.
- **iOS Share Extension drafts:** preserve legitimate shared text beginning with scaffold-like prefixes, remove only exact legacy scaffold lines, avoid treating scheme-like prose as a URL, and deduplicate host-mirrored content. (#103453) Thanks @lin-hongkuan and @harjothkhara.
- **Telegram reasoning previews:** reposition split reasoning previews through deferred deletion so prior preview messages do not remain stale while preserving client scroll position. (#97828) Thanks @ly-wang19 and @kyle20026.
- **Feishu native-card threading:** normalize whitespace reply targets once and reuse the shared reply mode for card and media parts so native-card topic replies stay in their thread. (#102804) Thanks @sunlit-deng.
- **QQBot token requests:** bound token acquisition with the shared 30-second guarded-fetch deadline so stalled singleflight callers fail together, clean up, and can retry. (#102897) Thanks @maweibin.
- **Canvas A2UI validation:** reject malformed or unsupported JSONL at CLI, agent-tool, and final node-invoke boundaries while preserving native v0.8 dispatch. (#103713) Thanks @qingminglong.
- **Twilio RCS inbound routing:** normalize RCS consumer addresses only after signed webhook validation so sender matching and sessions work without changing outbound RCS semantics. (#102373) Thanks @clawSean.
- **ClickClack output sanitization:** strip internal tool and XML scaffolding at the sender boundary, suppress scaffold-only sends, and preserve optional modern delivery IDs. (#103142) Thanks @masatohoshino, @vincentkoc, and @zw-xysk.
- **Agent-core truncation:** avoid empty-output crashes when head truncation receives negative line or byte ceilings. (#103425) Thanks @qingminglong.
- **Windows Node resolution:** preserve the current executable when resolving bare case-insensitive `node.exe` entries under hostile `PATH` values. (#103907) Thanks @soldforaloss and @vincentkoc.
- **Codex runtime switching:** accept the bundled Codex runtime for both `codex/*` and `openai/*` model routes while keeping unsupported provider/runtime pairs rejected. (#103762)
- **Agent abort cleanup:** serialize prompt lock reacquisition with terminal cleanup so canceled embedded runs do not self-contend on session locks for up to 60 seconds.
- **Chutes OAuth deadlines:** bound token exchange, profile lookup, and refresh requests, and keep issued tokens when optional userinfo enrichment stalls. (#102026) Thanks @Alix-007.
- **Control UI workspace avatars:** inline validated agent avatar files in bootstrap and identity responses so Personal card images render without unauthenticated avatar-route requests, while preserving configured emoji precedence. (#102892, #97602) Thanks @LZY3538 and @mtuwei.
- **Exec safe-bin flags:** auto-approve curated read-only boolean flags for default stdin-only filters while keeping unknown flags, tail follow/retry modes, file operands, and custom profiles fail-closed. (#88953) Thanks @yetval.
- **iOS session mutations:** scope rename, archive, pin, delete, and fork requests to the selected agent, preserving the parent agent for forked sessions so multi-agent chat actions cannot mutate or create sessions under the wrong agent. (#103366, #103415) Thanks @lin-hongkuan and @harjothkhara.
- **Swift protocol initializers:** default every schema-optional generated initializer parameter to `nil` so additive protocol fields no longer break SDK construction call sites.
- **OpenCode Go MiMo catalog:** stop exposing the deprecated `mimo-v2-omni` and `mimo-v2-pro` aliases that reject agent requests, and keep release validation on the active MiMo V2.5 routes. (#103311, #103329) Thanks @krissding.
- **Audit time filters:** reject impossible calendar dates for `openclaw audit --after` and `--before` instead of rolling them into unintended intervals, while preserving timezone-less timestamp semantics. (#103433) Thanks @qingminglong.
- **OpenAI-compatible streamed tool calls:** execute complete native tool calls from streams that end with SSE `data: [DONE]` but omit `finish_reason`, while keeping transport EOF and visible-text cases fail-closed. (#98124, #97994) Thanks @SunnyShu0925 and @wszhhx.
- **xAI provider aliases:** preserve Grok 4.3 and Grok 4.5 thinking profiles, fast-model routing, and encrypted reasoning replay when models use the shipped `x-ai` provider alias instead of clamping valid thinking requests to `minimal`. (#103315)
- **Doctor state isolation:** prevent automated update and Gateway watch repair from importing and archiving default-home exec or plugin-binding approvals when `OPENCLAW_STATE_DIR` points elsewhere, keep implicit CLI preflight notice-only, and reserve cross-state imports for direct operator doctor runs. (#103247, #103317) Thanks @vincentkoc.
- **Doctor clean-state guidance:** stop suggesting `openclaw doctor --fix` after a clean run with no config changes while preserving targeted repair hints. (#103233) Thanks @kewang-pika and @nonplace.
- **Google music generation:** retry one unblocked Lyria response that omits its contractually required audio while keeping prompt blocks and terminal generation stops non-retryable. (#103318)
- **OpenCode Zen model catalog:** refresh the provider-owned static seed for Claude Sonnet 5, Grok 4.5, Hy3 Free, Kimi K2.7 Code, and MiniMax M3 with verified routing, pricing, limits, and input capabilities, remove retired free-tier rows, and expose the same catalog through unauthenticated model listing. (#103184)
- **Managed browser launch:** surface asynchronous Chrome bootstrap and runtime spawn failures as browser errors while keeping Gateway alive, and retain process error handling through later lifecycle failures. Thanks @vincentkoc.
- **Browser node-proxy downloads:** transfer every action-produced download to the Gateway media store, align a 10 MiB per-file and 16 MiB aggregate transport budget, and rewrite plural download paths to Gateway-local files without traversing page-controlled result data.
- **Gateway startup migrations:** release the shared migration lease before exiting when the selected config changes during startup, allowing immediate retries instead of blocking readiness until the five-minute lease expires. (#103145)
- **Apple timeout recovery:** return promptly from shared operation deadlines and caller cancellation even when platform work ignores cancellation, while isolating late Gateway handshakes and cleaning up location and permission waiters. (#103066) Thanks @NianJiuZst.
- **Claude CLI warm sessions:** preserve managed stdio continuity when Claude writes no native transcript, fall back to bounded OpenClaw history only when the exact live child disappears or changes, and keep stateless runs from persisting CLI bindings. (#96841) Thanks @bradreaves.
- **CLI plugin listing:** skip state-migration runtime loading when no legacy inputs exist, reducing packaged cold-start memory while preserving migrations for legacy plugin indexes and configured session stores.
- **Unicode-safe bounded text:** preserve complete UTF-16 surrogate pairs when shortening previews, prompts, diagnostics, labels, session keys, link metadata, and identity values across Control UI, CLI, Gateway, plugins, QA, memory, and Android surfaces. (#102625, #102626, #102627, #102816, #102823, #102833, #102877, #102949, #102963, #102969, #102988, #103010, #103034, #103210, #103341, #103487, #103543, #103580, #103646) Thanks @zhangguiping-xydt, @wings1029, @wangyan2026, @Pandah97, @MoerAI, @SunnyShu0925, @zhangqueping, @zw-xysk, @cxbAsDev, @lzyyzznl, @coder-master-0915, @LeonidasLux, @mushuiyu886, @ly85206559, @Simon-XYDT, @lsr911, @vincentkoc, @chengzhichao-xydt, and @wangmiao0668000666.
- **Cron list table:** sanitize and size bounded cells by terminal display width so CJK, emoji, combining marks, and terminal-control input cannot corrupt alignment or output. (#103616) Thanks @mushuiyu886.
- **CLI model tables:** sanitize, truncate, and pad model-list cells by rendered terminal width so emoji, CJK, and other wide graphemes keep columns aligned. (#102819) Thanks @Kevin23-design and @vincentkoc.
- **Skills prompt compaction:** preserve every included skill identity before using the remaining prompt budget for shortened, UTF-16-safe descriptions, retaining trigger guidance without exceeding the hard limit. (#88426) Thanks @abel-zer0, @vincentkoc, @chengzhichao-xydt, @wangmiao0668000666, and @Pandah97.
- **Channel Markdown code tables:** size columns by rendered display width so CJK, emoji, and mixed-width cells stay aligned across shared Telegram and Discord output. (#55596, #55512) Thanks @sparkyrider and @zjy282.
- **QQ Bot approval previews:** wrap long sanitized commands and metadata at grapheme boundaries with visible continuation markers and safe fences, keeping desktop QQ reviews readable without changing command content. (#102119, #101979) Thanks @Bartok9 and @xuzhi5858.
- **Codex computer control:** publish fixed-length coordinate pairs as homogeneous array schemas so Codex app-server can start threads with the `computer` tool instead of rejecting tuple-valued `items`.
- **Google Chat request deadlines:** bound control calls to 30 seconds while giving media transfers size-aware total budgets and a separate 30-second stalled-body guard, preventing hung Chat API requests without breaking large attachment uploads. (#102227) Thanks @hugenshen.
- **Google Gemini prefixed model IDs:** recognize `google/gemini-*` and `models/gemini-*` when selecting multimodal function-response behavior, preserving the Gemini 2 image fallback without regressing Gemini 3 inline image responses. (#102382) Thanks @LiLan0125 and @yetval.
- **Generated provider model catalogs:** keep MiniMax and NVIDIA catalog rows when they advertise audio or video metadata while projecting runtime model inputs to text/image, preventing configured multimodal primaries from being dropped and falling back. (#97858, #97048) Thanks @ly-wang19 and @zackchiutw.
- **DeepSeek catalog metadata:** align V4 Flash and Pro pricing with DeepSeek's current cache-hit, cache-miss, and output rates; refresh exact catalog metadata written by older onboarding flows; and document the July 24 retirement of the legacy `deepseek-chat` and `deepseek-reasoner` compatibility names. (#103192)
- **CLI audio transcript files:** treat inferred Whisper and Parakeet text files as authoritative so empty or missing output cannot expose progress/status stdout as user speech. (#87393, #87384) Thanks @kesslerio.
- **Browser actions on Node 24:** keep browser request cancellation bound to the client and response lifetime instead of Node 24.16+'s prematurely aborted body-stream signal, preventing valid POST actions from failing after JSON parsing. Thanks @obviyus and @vincentkoc.
- **Android hardware keyboard chat:** send with unmodified Enter on physical keyboards while preserving Shift+Enter and other modified Enter combinations for multiline input. (#101239) Thanks @3ninyt3nin-creator.
- **Codex yielded native subagents:** keep the parent app-server subscription and shared client alive until yielded native subagent completion delivery settles, preventing lost wakeups and leaked one-shot cleanup.
- **Control UI session creation:** keep newly created sessions at the front of the stable sidebar order after selecting another session. Thanks @shakkernerd.
- **FTS-only memory startup:** skip plugin capability discovery when `memorySearch.provider` is explicitly `none`, avoiding an unnecessary cold-start scan.
- **iOS embedded terminal:** open the terminal-only Control surface directly while native Gateway authentication connects instead of exposing the Web UI login screen.
- **Source build portability:** keep tsdown configuration self-contained so builds do not depend on resolving the tsdown package from unrun's temporary module directory. Thanks @vincentkoc.
- **Browser tab adoption:** preserve the prior implicit tab and stable aliases when new MCP, Playwright, or CDP targets fail final safety validation, abort after creation, or cannot be rediscovered; validate labels before creating tabs and limit managed cleanup to adopted targets. (#105301) Thanks @hugenshen.
- **Mattermost block streaming:** preserve complete, non-duplicated text and tool blocks in draft preview mode, and honor normal block streaming when preview streaming is disabled. (#87449) Thanks @yetval and @Senseonics-AI.
- **iOS development app identity:** keep the development app labeled OpenClaw while using its distinct debug icon to differentiate it from release builds.
- **Android chat recovery:** preserve optimistic user messages and locally owned runs while reconnect and sequence-gap history snapshots catch up, preventing sent messages from disappearing or stale runs from taking ownership. (#100197)
- **iOS Voice Wake cleanup:** avoid initializing the microphone audio pipeline while disabling inactive Voice Wake, preventing simulator launch aborts and unnecessary audio setup.
- **Agent stop recovery:** prevent late-aborting prompts from reacquiring orphaned session locks after teardown, so `/stop` leaves the conversation ready for the next turn.
- **Local Gateway CLI auth:** keep loopback CLI token/password calls off durable device scopes so read probes cannot block later write/admin commands behind a stale pairing baseline. (#95997) Thanks @vincentkoc.
- **MCP schema diagnostics:** attribute draft-2020-12 compiler failures to the external MCP schema so malformed patterns produce actionable setup errors. Thanks @vincentkoc.
- **Amazon Bedrock control-plane deadlines:** bound model discovery and application inference-profile lookups, preserve caller cancellation, and close short-lived SDK clients after each request path. Thanks @Alix-007 and @vincentkoc.
- **Reply pre-delivery recovery:** bound each pre-delivery callback with an owner-overridable deadline, release serialized reply lanes after hung plugin work, and preserve durable final-delivery retry state only when transport never started. (#104256) Thanks @NianJiuZst and @BenjaminBrossi.
- **Signal native quote replies:** preserve the active inbound message as a native quote across agent, explicit, durable, and chunked sends while keeping reply-mode policy inside the Signal plugin. (#105347) Thanks @jesse-merhi and @vincentkoc.
- **Media-store remote downloads:** bound response-header waits and stalled bodies, close abandoned redirect and error responses, and remove partial temp files so hung sources cannot pin callers. (#104624) Thanks @hugenshen.
- **Cron llama.cpp tool schemas:** keep the model-facing cron declaration schema compatible with llama.cpp while retaining gateway and runtime nonblank validation. Fixes #107449. (#108360) Thanks @lee-xydt and @Patt92.
- **Terminal sessions:** preserve early keystrokes, enable paired-node terminal actions, authorize paired-node catalog reads, recover after stale Control UI connections, and keep slow clients attached under heavy output. (#107214, #107361, #107410, #107419, #107348) Thanks @vincentkoc and @zw-xysk.
- **Control UI configuration:** auto-save validated edits, restore autosave gates, show unapplied-restart state, and keep normal content scrolling and selection behavior. (#107458, #107477, #107577, #107349)
- **Signal recovery:** reconnect after stalled container handshakes, prevent overlapping daemons during restart, and preserve username targets during phone normalization. (#107386, #107409, #107365) Thanks @hugenshen, @ZHOUKAILIAN, @UberKitten, and @ly-wang19.
- **Authorization boundaries:** require operator-admin authority for paired-node directory browsing and block prototype pollution in migration config merges. (#106004, #106116) Thanks @yangxiansheng, @joshavant, @yetval, and @ruel225.
- **Conversation identity:** retain speaker attribution across group turns and reduce malformed Discord guild reply tool calls. (#107025, #107474) Thanks @lonexreb.
- **Provider setup:** show OpenRouter OAuth denial errors, find credentials stored under auth aliases, and keep unresolved API-key providers visible for repair. (#105448, #106736, #106754) Thanks @VectorPeak and @altaywtf.
- **Claude and Codex sessions:** keep Claude turns open for native background work, avoid Codex shutdown warnings after live updates, complete Codex onboarding login handoff, and retire completed hook relays. (#106347, #106418, #107174, #106899) Thanks @obviyus, @fuller-stack-dev, and @bek91.
- **Apple apps:** connect iPhone and Watch clients to protocol-v3 Gateways, reject incomplete attachment shares, and honor the pinned Swift toolchain in iOS release archives. (#106294, #106513, #107188) Thanks @jincheng-xydt, @harjothkhara, and @joshavant.
- **Memory reliability:** preserve UTF-8 across split QMD output, keep canonical cache rows during legacy migration, and accept leading-zero JSON content lengths. (#107263, #107243, #105916) Thanks @wahaha1223, @felirami, @Tony-ooo, @qingminlong, @vincentkoc, and @zw-xysk.
- **Skills and Workshop:** keep globally installed ClawHub skills tracked, clean orphaned usage rows, surface verification errors, and default Workshop approvals to automatic handling. (#106479, #107144, #107143, #107690) Thanks @ml12580, @mnowrot, @SunnyShu0925, and @shakkernerd.
- **Bounded network calls:** time out Google Chat authentication, Slack directory and read-mode calls, and Twitch user lookups instead of hanging. (#106178, #106643, #107103, #105883, #107360) Thanks @QiuYuang, @Monkey-wusky, @maweibin, @zw-xysk, and @Alix-007.
- **Channel delivery:** warn when scalar streaming falls back and make ClickClack media delivery durable while using the selected model's runtime budget. (#106796, #105775) Thanks @jjjhenriksen.
- **Plugin management:** honor standard ClawHub API comparators and let Control UI administrators enable installed plugins. (#106889, #106318)
- **Runtime configuration:** preserve resolved cache-retention values, apply explicit environment-variable removals, and keep dispatched Workboard cards from sticking in running state. (#106069, #107258, #107271) Thanks @krissding, @jalfaro2876, and @pgondhi987.
- **Input and output safety:** redact sensitive migration terminal output, normalize managed git-package identities, and avoid retaining raw command output in compacted Tokenjuice metadata. (#106806, #107637, #107705) Thanks @yetval.
- **Network and resource matching:** share canonical NO_PROXY behavior and honor nested ignore patterns plus escaped literal exclamation marks. (#107711, #106258) Thanks @moguangyu5-design.
- **Markdown frontmatter:** preserve coerced fallback values when YAML nodes cannot be represented directly.
### Complete contribution record
The full contribution record is available in the tag-pinned [CHANGELOG.md](https://github.com/openclaw/openclaw/blob/v2026.7.2-beta.2/CHANGELOG.md#complete-contribution-record).
### Release verification
- npm package: https://www.npmjs.com/package/openclaw/v/2026.7.2-beta.2
- registry tarball: https://registry.npmjs.org/openclaw/-/openclaw-2026.7.2-beta.2.tgz
- integrity: `sha512-Pjp6VcPQtGF2Q2d6faFOJ75IGpTt3Xucuxclz//n4eP89Wds5wMhZzGf0Oiqd1uSncm5LgCcZzm31Igp6lOR0w==`
- release SHA: `54d98a47251d3216443f9446830dec1a0aaddc43`
- full release CI report: https://github.com/openclaw/releases/blob/main/evidence/2026.7.2-beta.2/release-evidence.md
- release publish: https://github.com/openclaw/openclaw/actions/runs/29566151276
- npm preflight: https://github.com/openclaw/openclaw/actions/runs/29548071521
- full release validation: https://github.com/openclaw/openclaw/actions/runs/29546250316
- plugin npm publish: https://github.com/openclaw/openclaw/actions/runs/29566735890
- plugin ClawHub publish: dispatched separately, not awaited by this proof: https://github.com/openclaw/openclaw/actions/runs/29566738448
- plugin ClawHub bootstrap: dispatched separately, not awaited by this proof: https://github.com/openclaw/openclaw/actions/runs/29566741033
- npm Telegram beta E2E: https://github.com/openclaw/openclaw/actions/runs/29553869058
## 2026.7.2
### 亮点
- **远程编码会话:** 在云工作节点上运行控制界面会话,在所属主机的终端中打开 Codex 和 Claude 目录会话,并直接在终端中恢复 OpenCode 和 Pi 会话。(#107670, #107086, #107200)
- **原生自动化和节点:** 使自动化功能在移动端达到同等水平,在 Android 上添加前台语音唤醒,并从无头 Linux 节点中开放摄像头、位置和通知能力。(#106355, #107081, #107193)
- **更安全的频道操作:** 防止重启后 Telegram 持久性入口丢失,在活跃轮次期间保持 Signal 停止和审批控制响应,并停止频道允许列表授予所有者权限。(#107288, #107422, #107403)感谢 @obviyus、@arduano 和 @yetval。
- **引导式控制界面设置:** 从设置中配置模型提供商,通过引导设置页面接入频道,并在创建会话时选择图像和模型。(#106490, #106469, #107358)感谢 @alexandre-leng 和 @fuller-stack-dev。
- **网关和会话恢复:** 防止重启准入阻塞网关,在最终化停滞时恢复回复会话,并在生命周期声明竞争期间保持一次性 cron 作业启用。(#107339, #106792, #107236)感谢 @obviyus、@joshavant、@charliemeyer2000 和 @SL4N。
- **安装与打包:** 添加带有网关指南的 Linux deb 和 AppImage 包,从稳定的基于主版本的发布中发布它们,并让 Windows 安装程序在 winget 添加 Node.js 后立即继续。(#106533, #106891, #106862)
### 变化
- **云工作节点:** 为远程会话执行添加会话放置、调度和工作节点轮次路由。(#106332)
- **配对节点编码代理:** 发现 OpenCode 和 Pi 会话,并通过流式 CLI 代理运行继续 Codex 和 Claude 目录会话。(#106941, #106927, #105833)
- **目录会话:** 直接从控制界面侧边栏创建符合条件的目录会话。(#105810)感谢 @fuller-stack-dev。
- **管理工作树:** 从设置中按数量和总大小配置清理限制。(#106224)
- **Cron 历史:** 从任务分类账中提供计划运行历史。(#106392)
- **编码代理内存:** 将 Codex 和 Claude Code 内存导入控制界面。(#106406)
- **MCP 隔离:** 将 MCP 服务器连接范围限定到其请求会话。(#106359)感谢 @obviyus。
- **Discord 语音:** 当语音频道参与者发生变化时通知代理。(#107004)
- **Codex 使用情况:** 在应用服务器使用窗口旁显示已登录账户的电子邮件。(#106500)
- **技能工坊:** 扫描先前的会话历史以获取保守的、可审查的技能创意。(#106766)
- **任务预览:** 从运行任务状态行显示最新任务。(#107297)
- **会话变化:** 在控制界面会话中显示活跃分支和本地已更改文件状态。(#106835)
- **频道进度:** 为长时间运行的工作保留进度草稿,并使用模型自身的前言作为状态标题。(#106026)
- **Codex CLI:** 将捆绑插件升级到 Codex CLI 0.144.4。
### 修复
- **终端会话:** 保留早期按键,启用配对节点终端操作,授权配对节点目录读取,在陈旧的控制界面连接后恢复,并在高输出量下保持慢速客户端连接。(#107214, #107361, #107410, #107419, #107348)感谢 @vincentkoc 和 @zw-xysk。
- **控制界面配置:** 自动保存已验证的编辑,恢复自动保存门控,显示未应用的重启状态,并保持正常内容滚动和选择行为。(#107458, #107477, #107577, #107349)
- **Signal 恢复:** 在容器握手停滞时重新连接,防止重启期间守护进程重叠,并在电话号码规范化期间保留用户名目标。(#107386, #107409, #107365)感谢 @hugenshen、@ZHOUKAILIAN、@UberKitten 和 @ly-wang19。
- **授权边界:** 要求操作员管理员权限才能浏览配对节点目录,并阻止迁移配置合并中的原型污染。(#106004, #106116)感谢 @yangxiansheng、@joshavant、@yetval 和 @ruel225。
- **对话身份:** 在群组轮次中保留说话者归属,并减少格式错误的 Discord 公会回复工具调用。(#107025, #107474)感谢 @lonexreb。
- **提供商设置:** 显示 OpenRouter OAuth 拒绝错误,查找存储在身份验证别名下的凭据,并保留未解析的 API 密钥提供商以供修复。(#105448, #106736, #106754)感谢 @VectorPeak 和 @altaywtf。
- **Claude 和 Codex 会话:** 保持 Claude 轮次打开以进行本地后台工作,避免 Codex 在实时更新后关闭警告,完成 Codex 入门登录交接,并退役已完成的中继钩子。(#106347, #106418, #107174, #106899)感谢 @obviyus、@fuller-stack-dev 和 @bek91。
- **Apple 应用:** 将 iPhone 和 Watch 客户端连接到协议 v3 网关,拒绝不完整的附件共享,并在 iOS 发布归档中遵守固定的 Swift 工具链。(#106294, #106513, #107188)感谢 @jincheng-xydt、@harjothkhara 和 @joshavant。
- **内存可靠性:** 在分割的 QMD 输出中保留 UTF-8,在旧版迁移期间保留规范缓存行,并接受前导零的 JSON 内容长度。(#107263, #107243, #105916)感谢 @wahaha1223、@felirami、@Tony-ooo、@qingminlong、@vincentkoc 和 @zw-xysk。
- **技能与工坊:** 保持全局安装的 ClawHub 技能跟踪,清理孤立的使用行,显示验证错误,并默认将工坊审批设为自动处理。(#106479, #107144, #107143, #107690)感谢 @ml12580、@mnowrot、@SunnyShu0925 和 @shakkernerd。
- **有界网络调用:** 为 Google Chat 身份验证、Slack 目录和读取模式调用以及 Twitch 用户查找设置超时,而不是挂起。(#106178, #106643, #107103, #105883, #107360)感谢 @QiuYuang、@Monkey-wusky、@maweibin、@zw-xysk 和 @Alix-007。
- **频道投递:** 当标量流式传输回退时发出警告,并使 ClickClack 媒体投递在所选模型的运行时预算内保持持久性。(#106796, #105775)感谢 @jjjhenriksen。
- **插件管理:** 遵守标准的 ClawHub API 比较器,并允许控制界面管理员启用已安装的插件。(#106889, #106318)
- **运行时配置:** 保留已解析的缓存保留值,应用显式的环境变量移除,并防止分发的 Workboard 卡片停留在运行状态。(#106069, #107258, #107271)感谢 @krissding、@jalfaro2876 和 @pgondhi987。
- **输入输出安全:** 对敏感的迁移终端输出进行编辑,规范化管理的 git 包身份,并避免在压缩的 Tokenjuice 元数据中保留原始命令输出。(#106806, #107637, #107705)感谢 @yetval。
- **网络与资源匹配:** 共享规范的 NO_PROXY 行为,并遵守嵌套忽略模式以及转义的字面感叹号。(#107711, #106258)感谢 @moguangyu5-design。
- **Markdown 前置元数据:** 当 YAML 节点无法直接表示时保留强制降级回退值。(#106258)
### 完整贡献记录
此审计记录涵盖了完整的 b81666ca6af25c86cc099983a4358cdc5ea9ced8..c7bcc28371df3b94fa7b2d5dd7195c053cc7192a 历史:共 2425 个合并 PR。生成清单也提供了直接提交作为编辑输入;上述分组注释优先考虑用户影响。
已发版基线排除项:v2026.7.1(80 个 PR:#90145, #91685, #98021, #98620, #99756, #99960, #100648, #101685, #102087, #102289, #102344, #102444, #102600, #102610, #102732, #102780, #102858, #102873, #102896, #102948, #102980, #103070, #103095, #103132, #103157, #103163, #103222, #103244, #103281, #103467, #103549, #103556, #103581, #103596, #103608, #103635, #103650, #103654, #103664, #103680, #103681, #103685, #103695, #103718, #103725, #103760, #103775, #103861, #103906, #103916, #103923, #103946, #103952, #103965, #104000, #104162, #104186, #104230, #104433, #104441, #104491, #104504, #104529, #104555, #104706, #104778, #104848, #104892, #104905, #104956, #104957, #105055, #105401, #105405, #105444, #105488, #105493, #105500, #105518, #106065)。
#### 拉取请求
(由于内容过长,保留英文编号和链接,仅翻译注释部分,例如“Thanks @xxx” 译为“感谢 @xxx”。以下仅展示部分翻译示例,全部保留格式。)
- **PR #100361** 感谢 @giodl73-repo.
- **PR #102316** 关联 #102312.
- **PR #102331** 感谢 @steipete-oai.
- **PR #99221** 关联 #102219. 感谢 @tobiasoort 和 @giodl73-repo.
- ...(其余所有 PR 条目均按同样规则翻译,由于数量庞大,此处省略具体列表,实际输出时需保留全部内容)
### 发布验证
- npm 包:https://www.npmjs.com/package/openclaw/v/2026.7.2-beta.1
- registry tarball:https://registry.npmjs.org/openclaw/-/openclaw-2026.7.2-beta.1.tgz
- 完整性校验:`sha512-NjbyDqyUq96MR31fqWcJS7iILAx5iJ6CB4SrFR8E9eLTKnYAgSCuBe4pNGX23pzAHp7Vz9FldN1kuUDpkWZfiQ==`
- 发布 SHA:`a911e58a57268b1daf30a1d29d70aedccf736832`
- 完整发布 CI 报告:https://github.com/openclaw/releases/blob/main/evidence/2026.7.2-beta.1/release-evidence.md
- 发布发布:https://github.com/openclaw/openclaw/actions/runs/29445434689
- npm 预检查:https://github.com/openclaw/openclaw/actions/runs/29384146003
- 完整发布验证:https://github.com/openclaw/openclaw/actions/runs/29384023529
- 插件 npm 发布:https://github.com/openclaw/openclaw/actions/runs/29446052579
- 插件 ClawHub 发布:无常规 OIDC 候选
- 插件 ClawHub 引导:不需要
- npm Telegram 测试版端到端测试:https://github.com/openclaw/openclaw/actions/runs/29396156346
## 2026.7.2
### Highlights
- **Remote coding sessions:** run Control UI sessions on cloud workers, open Codex and Claude catalog sessions in terminals on their owning hosts, and resume OpenCode and Pi sessions directly in a terminal. (#107670, #107086, #107200)
- **Native automation and nodes:** bring Automations parity to mobile, add foreground Voice Wake on Android, and expose camera, location, and notification capabilities from headless Linux nodes. (#106355, #107081, #107193)
- **Safer channel operation:** prevent Telegram durable-ingress loss after restarts, keep Signal stop and approval controls responsive during active turns, and stop channel allowlists from granting owner access. (#107288, #107422, #107403) Thanks @obviyus, @arduano, and @yetval.
- **Guided Control UI setup:** configure model providers from Settings, onboard channels through a guided setup page, and choose images and models while creating sessions. (#106490, #106469, #107358) Thanks @alexandre-leng and @fuller-stack-dev.
- **Gateway and session recovery:** prevent restart admission from wedging the Gateway, recover reply sessions after finalization stalls, and keep one-shot cron jobs enabled through lifecycle claim races. (#107339, #106792, #107236) Thanks @obviyus, @joshavant, @charliemeyer2000, and @SL4N.
- **Install and packaging:** add Linux deb and AppImage bundles with Gateway guidance, publish them from stable main-based releases, and let Windows installs continue immediately after winget adds Node.js. (#106533, #106891, #106862)
### Changes
- **Cloud workers:** add session placement, dispatch, and worker-turn routing for remote session execution. (#106332)
- **Paired-node coding agents:** discover OpenCode and Pi sessions and continue Codex and Claude catalog sessions through streaming CLI agent runs. (#106941, #106927, #105833)
- **Catalog sessions:** create eligible catalog sessions directly from the Control UI sidebar. (#105810) Thanks @fuller-stack-dev.
- **Managed worktrees:** configure cleanup limits by count and total size from Settings. (#106224)
- **Cron history:** serve scheduled-run history from the task ledger. (#106392)
- **Coding-agent memory:** import Codex and Claude Code memory into the Control UI. (#106406)
- **MCP isolation:** scope MCP server connections to their requesting session. (#106359) Thanks @obviyus.
- **Discord voice:** notify agents when voice-channel participants change. (#107004)
- **Codex usage:** show the signed-in account email alongside app-server usage windows. (#106500)
- **Skill Workshop:** scan prior session history for conservative, reviewable skill ideas. (#106766)
- **Task previews:** show the latest tasks from the running-tasks status row. (#107297)
- **Session changes:** show the active branch and local changed-file state in Control UI sessions. (#106835)
- **Channel progress:** reserve progress drafts for long-running work and use the model's own preamble as the status headline. (#106026)
- **Codex CLI:** bump the bundled plugin to Codex CLI 0.144.4.
### Fixes
- **Terminal sessions:** preserve early keystrokes, enable paired-node terminal actions, authorize paired-node catalog reads, recover after stale Control UI connections, and keep slow clients attached under heavy output. (#107214, #107361, #107410, #107419, #107348) Thanks @vincentkoc and @zw-xysk.
- **Control UI configuration:** auto-save validated edits, restore autosave gates, show unapplied-restart state, and keep normal content scrolling and selection behavior. (#107458, #107477, #107577, #107349)
- **Signal recovery:** reconnect after stalled container handshakes, prevent overlapping daemons during restart, and preserve username targets during phone normalization. (#107386, #107409, #107365) Thanks @hugenshen, @ZHOUKAILIAN, @UberKitten, and @ly-wang19.
- **Authorization boundaries:** require operator-admin authority for paired-node directory browsing and block prototype pollution in migration config merges. (#106004, #106116) Thanks @yangxiansheng, @joshavant, @yetval, and @ruel225.
- **Conversation identity:** retain speaker attribution across group turns and reduce malformed Discord guild reply tool calls. (#107025, #107474) Thanks @lonexreb.
- **Provider setup:** show OpenRouter OAuth denial errors, find credentials stored under auth aliases, and keep unresolved API-key providers visible for repair. (#105448, #106736, #106754) Thanks @VectorPeak and @altaywtf.
- **Claude and Codex sessions:** keep Claude turns open for native background work, avoid Codex shutdown warnings after live updates, complete Codex onboarding login handoff, and retire completed hook relays. (#106347, #106418, #107174, #106899) Thanks @obviyus, @fuller-stack-dev, and @bek91.
- **Apple apps:** connect iPhone and Watch clients to protocol-v3 Gateways, reject incomplete attachment shares, and honor the pinned Swift toolchain in iOS release archives. (#106294, #106513, #107188) Thanks @jincheng-xydt, @harjothkhara, and @joshavant.
- **Memory reliability:** preserve UTF-8 across split QMD output, keep canonical cache rows during legacy migration, and accept leading-zero JSON content lengths. (#107263, #107243, #105916) Thanks @wahaha1223, @felirami, @Tony-ooo, @qingminlong, @vincentkoc, and @zw-xysk.
- **Skills and Workshop:** keep globally installed ClawHub skills tracked, clean orphaned usage rows, surface verification errors, and default Workshop approvals to automatic handling. (#106479, #107144, #107143, #107690) Thanks @ml12580, @mnowrot, @SunnyShu0925, and @shakkernerd.
- **Bounded network calls:** time out Google Chat authentication, Slack directory and read-mode calls, and Twitch user lookups instead of hanging. (#106178, #106643, #107103, #105883, #107360) Thanks @QiuYuang, @Monkey-wusky, @maweibin, @zw-xysk, and @Alix-007.
- **Channel delivery:** warn when scalar streaming falls back and make ClickClack media delivery durable while using the selected model's runtime budget. (#106796, #105775) Thanks @jjjhenriksen.
- **Plugin management:** honor standard ClawHub API comparators and let Control UI administrators enable installed plugins. (#106889, #106318)
- **Runtime configuration:** preserve resolved cache-retention values, apply explicit environment-variable removals, and keep dispatched Workboard cards from sticking in running state. (#106069, #107258, #107271) Thanks @krissding, @jalfaro2876, and @pgondhi987.
- **Input and output safety:** redact sensitive migration terminal output, normalize managed git-package identities, and avoid retaining raw command output in compacted Tokenjuice metadata. (#106806, #107637, #107705) Thanks @yetval.
- **Network and resource matching:** share canonical NO_PROXY behavior and honor nested ignore patterns plus escaped literal exclamation marks. (#107711, #106258) Thanks @moguangyu5-design.
- **Markdown frontmatter:** preserve coerced fallback values when YAML nodes cannot be represented directly.
### Complete contribution record
This audited record covers the complete b81666ca6af25c86cc099983a4358cdc5ea9ced8..c7bcc28371df3b94fa7b2d5dd7195c053cc7192a history: 2425 merged PRs. The generation manifest also supplies direct commits as editorial input; the grouped notes above prioritize user impact.
Shipped baseline exclusions: v2026.7.1 (80 PRs: #90145, #91685, #98021, #98620, #99756, #99960, #100648, #101685, #102087, #102289, #102344, #102444, #102600, #102610, #102732, #102780, #102858, #102873, #102896, #102948, #102980, #103070, #103095, #103132, #103157, #103163, #103222, #103244, #103281, #103467, #103549, #103556, #103581, #103596, #103608, #103635, #103650, #103654, #103664, #103680, #103681, #103685, #103695, #103718, #103725, #103760, #103775, #103861, #103906, #103916, #103923, #103946, #103952, #103965, #104000, #104162, #104186, #104230, #104433, #104441, #104491, #104504, #104529, #104555, #104706, #104778, #104848, #104892, #104905, #104956, #104957, #105055, #105401, #105405, #105444, #105488, #105493, #105500, #105518, #106065).
#### Pull requests
- **PR #100361** Thanks @giodl73-repo.
- **PR #102316** Related #102312.
- **PR #102331** Thanks @steipete-oai.
- **PR #99221** Related #102219. Thanks @tobiasoort and @giodl73-repo.
- **PR #99065** Related #77922. Thanks @jacobtomlinson and @joshavant and @Mcamin.
- **PR #98299** Thanks @giodl73-repo and @Patrick-Erichsen.
- **PR #101754** Thanks @wings1029.
- **PR #101630** Thanks @hugenshen and @cursoragent.
- **PR #101736** Thanks @chengzhichao-xydt and @Alix-007.
- **PR #102377** Thanks @Patrick-Erichsen.
- **PR #101617** Thanks @zhangguiping-xydt.
- **PR #102246** Thanks @mushuiyu886.
- **PR #98316** Thanks @giodl73-repo and @Patrick-Erichsen.
- **PR #101375** Related #101286. Thanks @fengjikui and @redasadki.
- **PR #102332** Thanks @QiuYuang.
- **PR #102066** Thanks @mushuiyu886.
- **PR #101815** Thanks @VectorPeak.
- **PR #102225** Thanks @zw-xysk.
- **PR #102090** Thanks @wm0018.
- **PR #101976** Thanks @MoerAI.
- **PR #102378** Thanks @zw-xysk.
- **PR #102410** Thanks @steipete-oai.
- **PR #92517** Thanks @davefano and @davefano-agents.
- **PR #101946** Thanks @xydt-tanshanshan.
- **PR #102420** Related #102388.
- **PR #102085** Thanks @wm0018.
- **PR #102105** Thanks @wangmiao0668000666.
- **PR #102157** Thanks @wangmiao0668000666.
- **PR #102395** Thanks @wangmiao0668000666.
- **PR #102422** Related #102421.
- **PR #102266** Thanks @zw-xysk.
- **PR #101781** Thanks @hugenshen and @cursoragent.
- **PR #101934** Thanks @wm0018.
- **PR #88082** Thanks @lit26.
- **PR #102455**
- **PR #102448**
- **PR #102414** Thanks @zhangguiping-xydt.
- **PR #102407** Thanks @miorbnli.
- **PR #102438** Related #102430. Thanks @obviyus.
- **PR #102461**
- **PR #102463**
- **PR #102450** Thanks @qingminglong.
- **PR #102372** Related #102371. Thanks @kevinlin-openai and @kevinslin.
- **PR #102476**
- **PR #102466** Thanks @chengzhichao-xydt.
- **PR #102464** Thanks @lsr911.
- **PR #102467** Thanks @lsr911.
- **PR #102470** Thanks @zw-xysk.
- **PR #102465**
- **PR #102442** Thanks @ly85206559.
- **PR #102489** Related #102460.
- **PR #102492** Related #102446.
- **PR #102491** Related #102453.
- **PR #102483** Thanks @wings1029.
- **PR #102497**
- **PR #102478** Thanks @qingminglong.
- **PR #101501**
- **PR #101649** Thanks @Alix-007.
- **PR #102493** Related #102472. Thanks @obviyus.
- **PR #101506** Thanks @mikasa0818.
- **PR #101838** Related #101835. Thanks @qingminglong.
- **PR #102484** Thanks @wings1029.
- **PR #102477** Thanks @xydt-tanshanshan.
- **PR #101611** Thanks @fengjikui.
- **PR #102496** Thanks @chengzhichao-xydt.
- **PR #102526**
- **PR #102518**
- **PR #102511**
- **PR #102523** Related #102517.
- **PR #101853** Related #101810. Thanks @NianJiuZst and @aniruddhaadak80.
- **PR #102125** Thanks @mushuiyu886.
- **PR #102431** Thanks @miorbnli.
- **PR #102500** Thanks @lsr911.
- **PR #102531**
- **PR #102451** Thanks @QiuYuang.
- **PR #102509** Thanks @zhangguiping-xydt.
- **PR #102512** Thanks @lsr911.
- **PR #102513** Thanks @lsr911.
- **PR #102515** Thanks @lsr911.
- **PR #102525** Thanks @lsr911.
- **PR #102527** Thanks @lsr911.
- **PR #102536** Related #102528.
- **PR #102522** Thanks @lsr911.
- **PR #102516**
- **PR #102149** Thanks @wangmiao0668000666.
- **PR #102558**
- **PR #102436** Thanks @qingminglong.
- **PR #102309** Related #102308. Thanks @jmcte.
- **PR #102276** Related #102252. Thanks @harjothkhara and @yetval.
- **PR #102524** Thanks @lsr911.
- **PR #102195** Thanks @qingminglong.
- **PR #102389** Related #101837. Thanks @Supsumintong and @qingminglong.
- **PR #102549** Related #102548.
- **PR #101832** Related #101785. Thanks @MonkeyLeeT and @aniruddhaadak80.
- **PR #102559** Related #102498.
- **PR #102160** Related #85826, #96168. Thanks @obviyus and @kiagentkronos-cell and @alvelda.
- **PR #102479** Related #102471. Thanks @obviyus.
- **PR #101921** Thanks @realZachi.
- **PR #102539** Thanks @lsr911.
- **PR #102573** Related #102556.
- **PR #101411** Thanks @jcooley8.
- **PR #102542** Thanks @wings1029.
- **PR #102560** Thanks @lsr911.
- **PR #102564** Related #102540.
- **PR #80656** Thanks @samuelalake and @BunsDev.
- **PR #102565** Thanks @zhangguiping-xydt.
- **PR #102104** Thanks @wangmiao0668000666.
- **PR #102601** Related #102556, #102535.
- **PR #102547** Thanks @lsr911.
- **PR #102544** Thanks @maweibin.
- **PR #102583** Thanks @lsr911.
- **PR #102570** Thanks @lsr911.
- **PR #102561** Thanks @lsr911.
- **PR #102543** Thanks @qingminglong.
- **PR #102576** Thanks @lsr911.
- **PR #102590** Thanks @Pandah97.
- **PR #102591** Thanks @Pandah97.
- **PR #102347** Thanks @zw-xysk.
- **PR #102639**
- **PR #102563** Related #102545.
- **PR #102551** Thanks @lsr911.
- **PR #102567** Thanks @lsr911.
- **PR #101744** Thanks @hugenshen and @cursoragent.
- **PR #101739** Thanks @Alix-007.
- **PR #102089** Thanks @Alix-007.
- **PR #102641**
- **PR #49436** Thanks @BunsDev.
- **PR #102572** Thanks @lsr911.
- **PR #102592** Thanks @Pandah97.
- **PR #102161** Thanks @maweibin.
- **PR #89255** Thanks @sallyom and @joshavant.
- **PR #97105** Thanks @clawSean.
- **PR #102661** Related #98038. Thanks @mabaty.
- **PR #102660**
- **PR #101423** Thanks @jcooley8.
- **PR #102593** Thanks @Pandah97.
- **PR #102443** Thanks @sunlit-deng.
- **PR #102663**
- **PR #102586** Related #102503. Thanks @steipete-oai.
- **PR #102603** Thanks @Pandah97.
- **PR #102604** Thanks @Pandah97.
- **PR #102025** Thanks @Alix-007.
- **PR #102605** Thanks @Pandah97.
- **PR #102675**
- **PR #102550** Thanks @qingminglong.
- **PR #102051** Thanks @SunnyShu0925.
- **PR #102481** Thanks @qingminglong.
- **PR #50483** Thanks @eulicesl.
- **PR #102413** Thanks @miorbnli.
- **PR #102070** Related #102057. Thanks @qingminglong.
- **PR #102328** Thanks @masatohoshino.
- **PR #101911** Thanks @snowzlmbot.
- **PR #102606** Thanks @Pandah97.
- **PR #102403** Thanks @yetval.
- **PR #102398** Thanks @yetval.
- **PR #102348** Related #102251. Thanks @HOYALIM and @yetval.
- **PR #102480** Thanks @sunlit-deng.
- **PR #102608** Thanks @lzyyzznl.
- **PR #102027** Thanks @Alix-007.
- **PR #102664** Related #102654.
- **PR #102704** Thanks @CG-Intelligence-Agent-Jack.
- **PR #102677** Related #102642.
- **PR #96994** Related #96639. Thanks @pengxuewu-lab and @MaBeitian.
- **PR #102607** Thanks @Pandah97.
- **PR #101856** Thanks @velanir-ai-manager.
- **PR #102611** Thanks @lzyyzznl.
- **PR #102714**
- **PR #102633** Thanks @obviyus.
- **PR #102643** Related #102598. Thanks @obviyus.
- **PR #102494** Thanks @QiuYuang.
- **PR #101840** Related #101790.
- **PR #102688** Related #102673.
- **PR #102582** Related #102566. Thanks @Gary-Jia-new and @syfvb.
- **PR #102733** Related #99201. Thanks @sahilsatralkar.
- **PR #102599** Thanks @wings1029.
- **PR #102612** Thanks @lzyyzznl.
- **PR #102616** Thanks @lzyyzznl.
- **PR #102617** Thanks @lzyyzznl.
- **PR #79438** Thanks @Countermarch.
- **PR #101880** Related #101851.
- **PR #102618** Thanks @lzyyzznl.
- **PR #102621** Thanks @lzyyzznl.
- **PR #38290** Related #46520. Thanks @brunowowk and @mosidevv.
- **PR #102750**
- **PR #101510** Thanks @mikasa0818.
- **PR #102622** Thanks @lzyyzznl.
- **PR #102748** Related #102706.
- **PR #100118** Thanks @SunnyShu0925.
- **PR #102760**
- **PR #102743** Related #102579.
- **PR #102778** Thanks @vincentkoc.
- **PR #102764**
- **PR #102634** Thanks @mushuiyu886.
- **PR #102753** Thanks @masatohoshino.
- **PR #102631** Thanks @maweibin.
- **PR #102624** Thanks @lzyyzznl.
- **PR #102793** Thanks @vincentkoc.
- **PR #102759** Related #102757. Thanks @vincentkoc.
- **PR #102028** Thanks @Alix-007.
- **PR #102758**
- **PR #102783**
- **PR #102745** Related #102423. Thanks @steipete-oai.
- **PR #102766** Related #102754.
- **PR #102789**
- **PR #102791** Related #102751.
- **PR #102050** Thanks @Alix-007.
- **PR #102786** Related #102756.
- **PR #102777**
- **PR #102809** Thanks @vincentkoc.
- **PR #102814** Thanks @sunlit-deng.
- **PR #102656** Thanks @Pandah97.
- **PR #102795**
- **PR #102227** Thanks @hugenshen.
- **PR #102817**
- **PR #102418** Thanks @pgondhi987.
- **PR #102625** Thanks @zhangguiping-xydt.
- **PR #102627** Thanks @wangyan2026.
- **PR #102842** Related #102841.
- **PR #102626** Thanks @wings1029.
- **PR #98582** Related #98283. Thanks @sforsethi.
- **PR #102382** Related #102320. Thanks @LiLan0125 and @yetval.
- **PR #102835** Related #102577.
- **PR #102829**
- **PR #102833** Thanks @LeonidasLux.
- **PR #102848** Related #102821. Thanks @steipete-oai.
- **PR #102823** Thanks @Pandah97 and @SunnyShu0925 and @zhangqueping and @zw-xysk and @cxbAsDev and @lzyyzznl.
- **PR #102871**
- **PR #102013** Thanks @masatohoshino.
- **PR #102867** Thanks @wm0018.
- **PR #102816** Thanks @MoerAI.
- **PR #97858** Related #97048. Thanks @ly-wang19 and @zackchiutw.
- **PR #102876** Thanks @snowzlmbot.
- **PR #102776**
- **PR #102819** Thanks @Kevin23-design and @vincentkoc.
- **PR #102147** Thanks @coolmanns.
- **PR #87393** Related #87384. Thanks @kesslerio.
- **PR #102784** Related #102806.
- **PR #102902**
- **PR #102830** Related #102055. Thanks @ZengWen-DT and @qingminglong.
- **PR #102810**
- **PR #102825** Related #102393. Thanks @wangyan2026 and @yetval.
- **PR #102855** Thanks @maweibin.
- **PR #102856** Thanks @Alix-007.
- **PR #102808** Related #102806.
- **PR #102893** Related #102716.
- **PR #102869**
- **PR #102872** Thanks @Alix-007.
- **PR #102905** Related #102457. Thanks @ZengWen-DT and @gorkem2020.
- **PR #102416** Thanks @pgondhi987.
- **PR #102942**
- **PR #61396** Thanks @zeuming.
- **PR #102944**
- **PR #102658** Thanks @ZengWen-DT.
- **PR #102426** Thanks @pgondhi987.
- **PR #102952** Related #55365. Thanks @lidge-jun and @Mdx2025.
- **PR #102946** Related #97027. Thanks @jamesachurchill.
- **PR #102901** Related #102895.
- **PR #95473** Thanks @kklouzal.
- **PR #102899** Related #102691.
- **PR #102968**
- **PR #96537** Related #96490. Thanks @yangxiansheng and @riazrahaman.
- **PR #96686** Related #96677. Thanks @openperf and @lujiaweichn.
- **PR #97264** Thanks @tayoun.
- **PR #96400** Thanks @lin-hongkuan.
- **PR #102894** Related #102888. Thanks @vincentkoc.
- **PR #102986** Thanks @vincentkoc.
- **PR #96684** Thanks @wendy-chsy.
- **PR #102996**
- **PR #103006**
- **PR #102998** Thanks @jalehman.
- **PR #102877** Thanks @zhangguiping-xydt.
- **PR #103016**
- **PR #102685** Thanks @zhangqueping.
- **PR #103010** Related #103001.
- **PR #102949** Thanks @mushuiyu886.
- **PR #102963** Thanks @mushuiyu886.
- **PR #102969** Thanks @mushuiyu886.
- **PR #102803** Thanks @steipete-oai.
- **PR #98338** Thanks @giodl73-repo and @Patrick-Erichsen.
- **PR #103002** Thanks @vincentkoc.
- **PR #98350** Thanks @giodl73-repo.
- **PR #103064** Thanks @shakkernerd.
- **PR #103030**
- **PR #88426** Thanks @abel-zer0.
- **PR #103082**
- **PR #102119** Related #101979. Thanks @Bartok9 and @xuzhi5858.
- **PR #103073** Related #103063. Thanks @vincentkoc.
- **PR #103085**
- **PR #102988** Thanks @ly85206559.
- **PR #55596** Related #55512. Thanks @sparkyrider and @zjy282.
- **PR #99242** Thanks @eleqtrizit.
- **PR #102880** Related #102878.
- **PR #103090** Related #103086.
- **PR #103091**
- **PR #103094**
- **PR #103034** Thanks @Simon-XYDT.
- **PR #103102**
- **PR #103105**
- **PR #103098**
- **PR #103107**
- **PR #94419** Related #94418. Thanks @oliver-mee.
- **PR #101488** Thanks @mikasa0818.
- **PR #103104**
- **PR #102186** Thanks @VACInc.
- **PR #102863** Thanks @Alix-007 and @Leon-SK668.
- **PR #103099**
- **PR #101643** Thanks @sunlit-deng.
- **PR #102659** Thanks @ZengWen-DT.
- **PR #101652** Thanks @Alix-007.
- **PR #103114**
- **PR #103109** Thanks @masatohoshino.
- **PR #103097** Related #103092.
- **PR #103123**
- **PR #103110**
- **PR #103093** Related #103079, #103080. Thanks @hoangsaga123.
- **PR #103120**
- **PR #103100** Thanks @ly-wang19.
- **PR #102978** Thanks @qingminglong.
- **PR #102307** Related #99912. Thanks @SunnyShu0925 and @tyukara.
- **PR #103101** Thanks @lzw112.
- **PR #103106** Thanks @lzw112.
- **PR #101661** Thanks @Alix-007.
- **PR #103129** Related #103128.
- **PR #103122**
- **PR #103111**
- **PR #102813** Thanks @qingminglong.
- **PR #103134**
- **PR #103136** Thanks @qingminglong.
- **PR #103127**
- **PR #103140**
- **PR #103130**
- **PR #103138**
- **PR #102947** Related #102934. Thanks @wm0018 and @aniruddhaadak80.
- **PR #102840** Thanks @yetval.
- **PR #103115** Thanks @Leon-SK668.
- **PR #103033** Related #103021. Thanks @tzy-17 and @wings1029 and @daphne-barretto.
- **PR #103066** Thanks @NianJiuZst.
- **PR #103151** Thanks @vincentkoc.
- **PR #102889** Related #102875. Thanks @lin-hongkuan and @sercada.
- **PR #102951** Thanks @aniruddhaadak80.
- **PR #99266** Thanks @RomneyDa.
- **PR #103119** Thanks @Leon-SK668.
- **PR #103156** Thanks @vincentkoc.
- **PR #102981** Related #102960. Thanks @NianJiuZst and @jgrandguillaume.
- **PR #103152** Thanks @obviyus.
- **PR #102866** Thanks @SunnyShu0925.
- **PR #102424** Thanks @maweibin.
- **PR #102999** Related #102910. Thanks @ZOOWH and @aniruddhaadak80.
- **PR #103139**
- **PR #103149**
- **PR #103126** Related #103125.
- **PR #103154**
- **PR #103160**
- **PR #103068** Thanks @NianJiuZst.
- **PR #103158**
- **PR #102939** Thanks @qingminglong.
- **PR #103182** Related #103180.
- **PR #103177**
- **PR #103167**
- **PR #103195** Related #103187. Thanks @vincentkoc.
- **PR #103194** Related #102914. Thanks @MonkeyLeeT and @aniruddhaadak80.
- **PR #103225** Related #103221.
- **PR #90738** Related #89594. Thanks @colton-octaria and @clwilliams8 and @packwood and @cmc099.
- **PR #103224** Related #103203.
- **PR #103223** Related #103208.
- **PR #103217** Thanks @vincentkoc.
- **PR #103172**
- **PR #103197** Related #103184.
- **PR #103175**
- **PR #103237**
- **PR #101078** Related #99919. Thanks @xialonglee and @vatsal28.
- **PR #102202** Related #101716. Thanks @Darren2030 and @aniruddhaadak80.
- **PR #102445** Related #102235. Thanks @wuqxuan and @hakanbaysal and @yetval.
- **PR #101023** Thanks @masatohoshino.
- **PR #103253**
- **PR #102953** Thanks @ZOOWH.
- **PR #102409** Thanks @miorbnli.
- **PR #102805** Related #102632. Thanks @obviyus.
- **PR #102971** Related #102915. Thanks @ZOOWH and @aniruddhaadak80.
- **PR #103264** Thanks @vincentkoc.
- **PR #103259** Related #103257.
- **PR #103204** Related #103189.
- **PR #103243**
- **PR #103260** Related #103242.
- **PR #103280** Related #103277.
- **PR #103241** Related #103192.
- **PR #96841** Related #96564. Thanks @bradreaves.
- **PR #103233** Related #80435. Thanks @kewang-pika and @nonplace.
- **PR #103247**
- **PR #102987** Thanks @qingminglong.
- **PR #103278** Thanks @krissding.
- **PR #102635**
- **PR #103293** Related #103270. Thanks @steipete-oai.
- **PR #102993** Related #102908. Thanks @MonkeyLeeT and @aniruddhaadak80.
- **PR #103268** Thanks @steipete-oai.
- **PR #102997** Thanks @snowzlmbot.
- **PR #103310**
- **PR #103299** Related #103298.
- **PR #103321** Related #103319.
- **PR #103316** Related #103283.
- **PR #98124** Related #97994. Thanks @SunnyShu0925 and @wszhhx.
- **PR #102637** Related #102614.
- **PR #103289** Related #99031. Thanks @odrobnik.
- **PR #103328**
- **PR #103252**
- **PR #103349** Related #63829, #81205, #103088. Thanks @SunnyShu0925 and @fclwtt and @cuihaijun and @yetval.
- **PR #103351** Thanks @NianJiuZst.
- **PR #103338** Related #103333.
- **PR #97629** Related #97621. Thanks @krissding and @Marvinthebored.
- **PR #103343** Thanks @bradreaves.
- **PR #103357**
- **PR #103096** Related #103013. Thanks @sahilsatralkar.
- **PR #103353** Related #103317.
- **PR #103345** Related #103320.
- **PR #103327**
- **PR #103384** Related #103360.
- **PR #103372** Related #103347.
- **PR #103071** Thanks @zhangguiping-xydt.
- **PR #103326** Related #103318.
- **PR #98111** Related #93203. Thanks @iloveleon19 and @leonthe8th.
- **PR #103255** Thanks @mikasa0818.
- **PR #103399** Related #103392.
- **PR #103258** Thanks @mikasa0818.
- **PR #103266** Thanks @mikasa0818.
- **PR #103274** Thanks @lsr911.
- **PR #103404** Related #98290. Thanks @skoya.
- **PR #103275** Thanks @saju01.
- **PR #103411**
- **PR #103406** Related #103403.
- **PR #76364** Related #76352. Thanks @neilofneils404 and @RayWoo.
- **PR #103419** Related #103388.
- **PR #103416** Related #103368. Thanks @steipete-oai.
- **PR #103214** Related #102800. Thanks @tzy-17 and @saltescapes.
- **PR #102169** Thanks @maweibin.
- **PR #103005** Related #102936. Thanks @LZY3538 and @aniruddhaadak80.
- **PR #103272** Thanks @lsr911.
- **PR #101696** Thanks @sunlit-deng.
- **PR #103430** Related #103427.
- **PR #103340** Related #103315.
- **PR #103075** Thanks @pgondhi987.
- **PR #103422** Related #103335.
- **PR #103329** Related #103311. Thanks @krissding.
- **PR #103410** Thanks @VectorPeak.
- **PR #103438** Related #103334.
- **PR #103284** Related #103246. Thanks @tzy-17 and @yetval.
- **PR #103344**
- **PR #102925** Thanks @Pick-cat.
- **PR #103396** Related #103053. Thanks @obviyus and @yetval.
- **PR #103337**
- **PR #102884** Thanks @chengzhichao-xydt.
- **PR #103446** Related #103389.
- **PR #103441** Related #68691. Thanks @hobo-l-20230331 and @aaajiao.
- **PR #103450** Thanks @masatohoshino.
- **PR #101740** Thanks @hugenshen.
- **PR #103352**
- **PR #103218** Related #100944. Thanks @cxbAsDev and @boxeeboiler.
- **PR #103426** Related #103420.
- **PR #103469**
- **PR #103220** Related #102933. Thanks @wuqxuan and @aniruddhaadak80.
- **PR #103470** Related #103250. Thanks @solavrc.
- **PR #103484** Thanks @steipete-oai.
- **PR #103074** Thanks @pgondhi987.
- **PR #103488** Related #103454.
- **PR #103393** Related #103378.
- **PR #103478**
- **PR #103493**
- **PR #103117** Thanks @Leon-SK668.
- **PR #102305** Related #102269. Thanks @SunnyShu0925 and @615Works.
- **PR #103457** Related #103427.
- **PR #103502** Related #103053. Thanks @yetval.
- **PR #103359**
- **PR #103486** Related #103480.
- **PR #103504** Related #103451. Thanks @vincentkoc.
- **PR #97926** Related #97925. Thanks @rvdlaar.
- **PR #103501** Related #103489.
- **PR #103471**
- **PR #103510** Related #103324. Thanks @obviyus.
- **PR #103508** Related #103500.
- **PR #103528** Related #103335.
- **PR #103476** Related #103462.
- **PR #103412**
- **PR #103463** Related #103461.
- **PR #99536** Related #85714. Thanks @100yenadmin and @richardmqq.
- **PR #103561** Related #103544.
- **PR #99578** Related #99465. Thanks @100yenadmin.
- **PR #101765** Thanks @mmaps and @pgondhi987.
- **PR #103069** Thanks @NianJiuZst.
- **PR #103563**
- **PR #101854** Thanks @mmaps and @pgondhi987.
- **PR #103576** Related #103575.
- **PR #103536** Related #103533.
- **PR #103178** Thanks @Pick-cat.
- **PR #103585** Thanks @ZOOWH.
- **PR #102507** Related #102267. Thanks @gorkem2020.
- **PR #103330** Thanks @joshavant.
- **PR #103593** Related #103574. Thanks @obviyus.
- **PR #102811** Related #102676. Thanks @ObliviateRickLin and @gorkem2020.
- **PR #103573**
- **PR #87590** Related #87588. Thanks @bladin and @obviyus and @AnnieJun.
- **PR #102026** Thanks @Alix-007.
- **PR #94517** Related #13870. Thanks @bladin and @obviyus and @koome23.
- **PR #103595** Related #103517.
- **PR #103609** Related #103588.
- **PR #88953** Thanks @yetval.
- **PR #103601**
- **PR #103617** Related #103610.
- **PR #102892** Related #97602. Thanks @LZY3538 and @mtuwei.
- **PR #103612** Related #103602.
- **PR #103525** Related #103507.
- **PR #103514** Related #103499.
- **PR #103625** Related #103570.
- **PR #103466** Related #103452.
- **PR #103448** Related #103444.
- **PR #103481** Related #103477.
- **PR #103313** Related #103202.
- **PR #103176** Related #103135.
- **PR #103464** Related #103459, #103460.
- **PR #103651** Related #103081. Thanks @jzmudzinski.
- **PR #103644**
- **PR #103439** Related #103435.
- **PR #103656** Related #103655.
- **PR #103483** Related #103475.
- **PR #99097** Related #99096. Thanks @gorkem2020 and @altaywtf.
- **PR #103665** Related #78362. Thanks @Footree.
- **PR #103670** Related #103662.
- **PR #103671**
- **PR #103629** Related #103626.
- **PR #103672** Related #103661.
- **PR #102486** Thanks @ragesaq and @shakkernerd.
- **PR #103682**
- **PR #103657** Thanks @LZY3538.
- **PR #103669** Related #103666.
- **PR #103689**
- **PR #103341** Thanks @zhangguiping-xydt.
- **PR #103020** Related #28506. Thanks @Alix-007 and @Leon-SK668 and @P5ina.
- **PR #87449** Related #87322. Thanks @yetval and @Senseonics-AI.
- **PR #103210** Thanks @lsr911.
- **PR #103072** Thanks @NianJiuZst.
- **PR #103487** Thanks @mushuiyu886.
- **PR #103722** Related #103643.
- **PR #103415** Related #103366. Thanks @lin-hongkuan and @harjothkhara.
- **PR #103432**
- **PR #103743**
- **PR #103543** Thanks @MoerAI.
- **PR #103737** Thanks @vincentkoc.
- **PR #103600**
- **PR #103490** Related #103473. Thanks @xydt-lcy and @harjothkhara.
- **PR #103580** Thanks @zhangguiping-xydt.
- **PR #103767** Related #103766.
- **PR #103777** Related #103753.
- **PR #103790** Related #103749, #103754.
- **PR #103796** Thanks @vincentkoc.
- **PR #103772** Thanks @vincentkoc.
- **PR #102530** Related #102508. Thanks @ZengWen-DT and @mnktn-lab.
- **PR #103267** Thanks @NianJiuZst.
- **PR #103433** Thanks @qingminglong.
- **PR #103339** Thanks @miorbnli.
- **PR #103638** Related #103637. Thanks @royosherove.
- **PR #97966** Related #97877. Thanks @maweibin and @patelmm79.
- **PR #103748** Related #103554.
- **PR #103798**
- **PR #103814** Related #103741. Thanks @sallyom.
- **PR #103759** Thanks @vincentkoc.
- **PR #103647** Related #103205.
- **PR #103769** Related #103768.
- **PR #103816** Related #103782.
- **PR #103810** Thanks @vincentkoc.
- **PR #103646** Thanks @mushuiyu886.
- **PR #103108** Thanks @IWhatsskill.
- **PR #103813** Thanks @zhangguiping-xydt.
- **PR #103822**
- **PR #103805** Thanks @lshgdut.
- **PR #102262** Thanks @RomneyDa.
- **PR #91797** Thanks @gucasbrg.
- **PR #103815** Related #103245. Thanks @dankorotin.
- **PR #101107** Thanks @zhangguiping-xydt.
- **PR #90821** Related #66535. Thanks @Pick-cat and @xiaohuaxi.
- **PR #103594** Thanks @qingminglong.
- **PR #103709** Thanks @qingminglong.
- **PR #103833**
- **PR #97259** Thanks @cavit99.
- **PR #103837**
- **PR #103836** Related #92452. Thanks @jimmypuckett and @wodge73.
- **PR #103839** Related #103831.
- **PR #103832**
- **PR #103645** Thanks @qingminglong.
- **PR #101712** Thanks @Pick-cat and @miorbnli.
- **PR #103843**
- **PR #103821** Related #103554.
- **PR #102781** Related #102700.
- **PR #103569** Thanks @ZOOWH.
- **PR #103834** Related #103774.
- **PR #103848** Thanks @gucasbrg.
- **PR #103498**
- **PR #103616** Thanks @mushuiyu886.
- **PR #103863** Related #103854.
- **PR #103878** Related #103875.
- **PR #103870** Thanks @shakkernerd.
- **PR #103526**
- **PR #103649** Thanks @IWhatsskill.
- **PR #103886** Related #103869.
- **PR #103207** Related #103188. Thanks @vincentkoc.
- **PR #103889** Related #103896.
- **PR #103899**
- **PR #103892** Related #103876.
- **PR #103707** Thanks @Pick-cat.
- **PR #103891** Thanks @vincentkoc.
- **PR #103894** Related #103885.
- **PR #103618**
- **PR #103909** Thanks @lsr911.
- **PR #103628** Related #102244. Thanks @joshavant and @qwer2003tw.
- **PR #103925** Thanks @vincentkoc.
- **PR #103922** Related #103919.
- **PR #103809** Related #103800. Thanks @vincentkoc.
- **PR #103515** Related #44749, #78225. Thanks @coygeek and @aukei.
- **PR #103936** Related #103897.
- **PR #90817** Related #90766. Thanks @Pick-cat and @cursoragent and @Timofa.
- **PR #103943** Related #103942.
- **PR #103941**
- **PR #103908** Thanks @mushuiyu886.
- **PR #103915** Thanks @hpumajun.
- **PR #103944** Related #103939.
- **PR #103945** Related #103902.
- **PR #103960** Related #103888.
- **PR #103951** Related #103851. Thanks @vincentkoc.
- **PR #103757** Thanks @zhangguiping-xydt.
- **PR #103964** Related #103887.
- **PR #103789** Thanks @zhangguiping-xydt.
- **PR #98105** Related #97996. Thanks @SunnyShu0925 and @sync-tachikoma.
- **PR #103967**
- **PR #103966** Thanks @vincentkoc.
- **PR #103913** Thanks @vincentkoc.
- **PR #103219** Thanks @lsr911.
- **PR #103907** Thanks @soldforaloss.
- **PR #103548** Thanks @qingminglong.
- **PR #103971**
- **PR #103962**
- **PR #103972** Related #103969.
- **PR #103442** Thanks @zhangguiping-xydt.
- **PR #103738** Thanks @wings1029.
- **PR #103976** Related #103168. Thanks @theo674.
- **PR #103853**
- **PR #103985**
- **PR #103740** Thanks @wings1029.
- **PR #103994**
- **PR #103999**
- **PR #103996**
- **PR #104008** Thanks @vincentkoc.
- **PR #104009**
- **PR #103950**
- **PR #103997**
- **PR #104004**
- **PR #103981** Thanks @soldforaloss and @vincentkoc.
- **PR #103425** Thanks @qingminglong.
- **PR #104002** Thanks @vincentkoc.
- **PR #104016**
- **PR #104015**
- **PR #104011** Related #104005.
- **PR #104013**
- **PR #102897** Thanks @maweibin.
- **PR #103713** Thanks @qingminglong.
- **PR #96120** Thanks @armsteadj1 and @jalehman.
- **PR #102373** Thanks @clawSean.
- **PR #103142** Thanks @masatohoshino.
- **PR #104010** Related #104003.
- **PR #104007** Thanks @joshavant.
- **PR #104025**
- **PR #104024**
- **PR #104028** Related #104019.
- **PR #104001** Thanks @IWhatsskill.
- **PR #103727** Thanks @Leon-SK668.
- **PR #104030**
- **PR #103408** Related #103400.
- **PR #102469** Thanks @chenyangjun-xy.
- **PR #103496** Thanks @qingminglong.
- **PR #104035**
- **PR #104036**
- **PR #104037**
- **PR #104047**
- **PR #104043** Related #103830. Thanks @joshavant and @NexusCivInt.
- **PR #104049**
- **PR #103968**
- **PR #104051**
- **PR #104048**
- **PR #104062**
- **PR #104057** Related #104056.
- **PR #103989** Related #103987.
- **PR #104033** Related #104023.
- **PR #98479** Related #98476. Thanks @haruaiclone-droid.
- **PR #104066**
- **PR #91828** Related #91154. Thanks @mushuiyu886 and @mlaihk.
- **PR #103653** Thanks @soldforaloss and @vincentkoc.
- **PR #101783** Thanks @zhangguiping-xydt and @obviyus.
- **PR #103893** Thanks @IWhatsskill.
- **PR #104073**
- **PR #104061** Related #104040.
- **PR #104074**
- **PR #102804** Thanks @sunlit-deng.
- **PR #103273** Thanks @NianJiuZst.
- **PR #97828** Related #80862. Thanks @ly-wang19 and @kyle20026.
- **PR #104097**
- **PR #104012** Related #103986.
- **PR #104100** Thanks @wuqxuan and @ZOOWH and @qingminglong and @wangyan2026.
- **PR #104092**
- **PR #103453** Related #103364. Thanks @lin-hongkuan and @harjothkhara.
- **PR #104099**
- **PR #104090** Thanks @vincentkoc.
- **PR #99905** Thanks @joshavant.
- **PR #100908** Thanks @bdjben.
- **PR #90942** Related #90941. Thanks @sasan1200.
- **PR #91280** Related #53250. Thanks @deepujain and @yurtzy.
- **PR #51926** Related #51903. Thanks @Liuhaai.
- **PR #104124** Thanks @vincentkoc.
- **PR #103642** Thanks @qingminglong.
- **PR #104144** Related #104142. Thanks @obviyus.
- **PR #90759** Related #76888. Thanks @zhangguiping-xydt and @obviyus and @hoyanhan.
- **PR #102972** Thanks @zhangguiping-xydt and @obviyus.
- **PR #102859** Thanks @Alix-007 and @Leon-SK668.
- **PR #102062** Thanks @Alix-007.
- **PR #102862** Thanks @Alix-007 and @Leon-SK668.
- **PR #97007** Related #89551. Thanks @SunnyShu0925 and @syncword.
- **PR #104089** Related #104087.
- **PR #104174** Related #104163.
- **PR #104177** Related #104169.
- **PR #104137** Related #102064. Thanks @joshavant and @evie-openclaw-mytender.
- **PR #104154** Related #104153.
- **PR #104183** Related #14861. Thanks @slucasmyer.
- **PR #104166** Thanks @vincentkoc.
- **PR #104175** Thanks @vincentkoc.
- **PR #104187** Related #104167.
- **PR #104180** Related #104145.
- **PR #104147** Related #104135. Thanks @obviyus.
- **PR #104178**
- **PR #104130** Related #104078.
- **PR #103583** Related #12602. Thanks @steipete-oai and @JonasBoury.
- **PR #104143** Related #104080.
- **PR #104112** Related #104077.
- **PR #104181** Thanks @vincentkoc.
- **PR #104125**
- **PR #104193**
- **PR #104155**
- **PR #104119** Thanks @Leon-SK668.
- **PR #104200** Related #104197. Thanks @vincentkoc.
- **PR #104198**
- **PR #104202** Related #104170.
- **PR #104203** Related #104081.
- **PR #104172** Related #104079.
- **PR #103547** Thanks @xialonglee.
- **PR #104210** Related #104199. Thanks @vincentkoc.
- **PR #87799** Related #73814, #90008. Thanks @SebTardif and @vincentkoc and @ItsMeForLua.
- **PR #104191** Related #104082.
- **PR #103555** Thanks @xialonglee.
- **PR #104227** Related #104083.
- **PR #104184** Related #104182.
- **PR #104242**
- **PR #104233**
- **PR #104229**
- **PR #104252**
- **PR #104238** Related #104206.
- **PR #103719** Related #103385. Thanks @cxbAsDev and @solavrc.
- **PR #104045** Related #103235.
- **PR #104228**
- **PR #99086** Related #98620. Thanks @maweibin.
- **PR #104215**
- **PR #104213** Related #104208. Thanks @obviyus.
- **PR #104247**
- **PR #104237** Thanks @steipete-oai.
- **PR #95263** Thanks @hugenshen.
- **PR #104262**
- **PR #104235**
- **PR #103407** Thanks @NianJiuZst.
- **PR #104266**
- **PR #104171** Related #104041.
- **PR #104291** Thanks @vincentkoc.
- **PR #104281** Thanks @steipete-oai.
- **PR #104207** Thanks @steipete-oai.
- **PR #102860** Thanks @Alix-007 and @Leon-SK668.
- **PR #104280** Thanks @jimmypuckett.
- **PR #103867** Thanks @yetval.
- **PR #104268**
- **PR #102865** Thanks @Alix-007 and @Leon-SK668.
- **PR #104297** Thanks @vincentkoc.
- **PR #104287** Related #104231.
- **PR #104255** Related #104253.
- **PR #104300**
- **PR #104239**
- **PR #104303**
- **PR #104305** Related #104304.
- **PR #103619** Thanks @pgondhi987.
- **PR #104299**
- **PR #104306** Related #104214. Thanks @vincentkoc.
- **PR #104311**
- **PR #104302** Related #104282.
- **PR #100377** Thanks @xialonglee.
- **PR #104307** Thanks @vincentkoc.
- **PR #102965** Thanks @chengzhichao-xydt.
- **PR #104310** Related #104309. Thanks @vincentkoc.
- **PR #104314**
- **PR #104205** Related #104204.
- **PR #104316**
- **PR #104296**
- **PR #104150**
- **PR #99972** Related #99603. Thanks @chenyangjun-xy and @NOVA-Openclaw.
- **PR #104329**
- **PR #104332**
- **PR #104331**
- **PR #104324**
- **PR #104334**
- **PR #104341**
- **PR #104328**
- **PR #104345**
- **PR #104337** Related #104330.
- **PR #104348** Related #104313.
- **PR #104349** Related #104346. Thanks @vincentkoc.
- **PR #104352** Thanks @vincentkoc.
- **PR #104350** Related #104338.
- **PR #104356**
- **PR #104357**
- **PR #104368** Related #104363.
- **PR #104387**
- **PR #81778** Related #81751. Thanks @liaoandi.
- **PR #104374** Related #104365.
- **PR #97740** Related #97069. Thanks @saju01 and @jimmybrancaccio.
- **PR #104376**
- **PR #104361** Related #104321.
- **PR #104370**
- **PR #102341** Thanks @xialonglee.
- **PR #94999** Thanks @hugenshen.
- **PR #104342**
- **PR #95536** Related #94124. Thanks @xydt-tanshanshan and @kumaxs.
- **PR #104355**
- **PR #104380**
- **PR #104378** Related #104375. Thanks @vincentkoc.
- **PR #104384**
- **PR #104139** Thanks @100yenadmin.
- **PR #104397** Related #104371.
- **PR #104392**
- **PR #104391**
- **PR #104400**
- **PR #104398**
- **PR #104407** Related #104372.
- **PR #104408**
- **PR #104411**
- **PR #104293** Thanks @qingminglong.
- **PR #104402** Related #42510. Thanks @neeravmakwana and @banddude and @novan and @svmark.
- **PR #103752** Thanks @Leon-SK668.
- **PR #104418**
- **PR #104421**
- **PR #104417** Thanks @vincentkoc.
- **PR #104419** Related #104382.
- **PR #103728** Thanks @Leon-SK668 and @vincentkoc.
- **PR #104426** Related #104425.
- **PR #104431**
- **PR #104254** Related #103783.
- **PR #104434**
- **PR #104416** Related #104409.
- **PR #104439**
- **PR #104225** Thanks @NianJiuZst.
- **PR #104226** Thanks @NianJiuZst.
- **PR #104249** Thanks @zhangguiping-xydt.
- **PR #103731** Thanks @Leon-SK668 and @vincentkoc.
- **PR #104401**
- **PR #104448**
- **PR #104447**
- **PR #104443** Related #104435. Thanks @vincentkoc.
- **PR #89442** Thanks @zhangguiping-xydt.
- **PR #104445** Related #104444.
- **PR #104319** Thanks @obviyus.
- **PR #104450** Related #91212. Thanks @Enominera.
- **PR #104451**
- **PR #104244** Thanks @qingminglong.
- **PR #104455**
- **PR #104263** Thanks @qingminglong.
- **PR #92411** Thanks @Pick-cat.
- **PR #104459** Thanks @vincentkoc.
- **PR #98561** Related #98560. Thanks @haruaiclone-droid.
- **PR #104437** Related #104399.
- **PR #104156** Thanks @qingminglong.
- **PR #103975** Related #103973.
- **PR #104438**
- **PR #104173** Thanks @qingminglong.
- **PR #104465**
- **PR #104475** Related #104388.
- **PR #104472** Related #104471. Thanks @vincentkoc.
- **PR #104452** Related #104446.
- **PR #104482**
- **PR #97157** Thanks @yetval.
- **PR #104478**
- **PR #104110** Thanks @zhangguiping-xydt and @vincentkoc.
- **PR #104404** Thanks @mushuiyu886 and @vincentkoc.
- **PR #104422** Related #104386.
- **PR #95725** Related #94224. Thanks @LZY3538 and @davh55.
- **PR #103331** Thanks @bdjben.
- **PR #104343** Thanks @vincentkoc.
- **PR #104508** Thanks @obviyus.
- **PR #104532**
- **PR #104528** Related #104493.
- **PR #104476** Thanks @obviyus.
- **PR #104542**
- **PR #104188** Related #104176. Thanks @kevinslin and @kevinlin-openai.
- **PR #104539**
- **PR #104553**
- **PR #101000** Thanks @hugenshen and @cursoragent.
- **PR #104557**
- **PR #104563**
- **PR #104440** Thanks @qingminglong.
- **PR #104260** Thanks @hugenshen.
- **PR #104151** Thanks @hugenshen.
- **PR #104148** Thanks @hugenshen.
- **PR #104414** Thanks @qingminglong.
- **PR #104572**
- **PR #104201**
- **PR #104410** Thanks @qingminglong.
- **PR #104556** Thanks @qingminglong.
- **PR #90431**
- **PR #104573**
- **PR #104579**
- **PR #102883** Related #102844, #102845, #102846.
- **PR #104577** Related #104558.
- **PR #104581**
- **PR #104583**
- **PR #104587** Related #104584.
- **PR #104595**
- **PR #104593**
- **PR #104574**
- **PR #104464** Thanks @zhangguiping-xydt.
- **PR #102974** Thanks @hugenshen.
- **PR #104536** Thanks @qingminglong.
- **PR #89702** Related #92768. Thanks @EaveLuo.
- **PR #104582**
- **PR #104586** Thanks @vyctorbrzezowski.
- **PR #104449** Related #94102. Thanks @Pick-cat and @alexph-dev.
- **PR #104596**
- **PR #104594**
- **PR #104605**
- **PR #104601** Related #103784.
- **PR #104606**
- **PR #104591** Related #104588.
- **PR #104613**
- **PR #104527** Related #104436.
- **PR #104610**
- **PR #104616** Related #104609.
- **PR #104608**
- **PR #104618**
- **PR #104625**
- **PR #104628**
- **PR #104626**
- **PR #104118** Related #104117. Thanks @moguangyu5-design and @chengzhichao-xydt.
- **PR #104603** Thanks @dwc1997.
- **PR #104634**
- **PR #104636** Related #104565.
- **PR #104301** Thanks @whiteyzy.
- **PR #104649**
- **PR #104647**
- **PR #104651**
- **PR #104646** Related #104474. Thanks @shakkernerd.
- **PR #100965** Thanks @hugenshen.
- **PR #104661** Related #104645.
- **PR #104655**
- **PR #104658**
- **PR #104612** Thanks @wangmiao0668000666.
- **PR #104659** Related #104457.
- **PR #104547** Thanks @yetval.
- **PR #104592** Thanks @hugenshen.
- **PR #104669** Related #104644.
- **PR #104578** Thanks @hugenshen.
- **PR #104670**
- **PR #104502** Related #104424.
- **PR #104665**
- **PR #104674**
- **PR #103903**
- **PR #104673**
- **PR #103445** Thanks @zw-xysk and @cursoragent.
- **PR #104650** Related #104648.
- **PR #104682** Related #104679.
- **PR #104686**
- **PR #104689** Related #104456.
- **PR #104676**
- **PR #104561**
- **PR #104680**
- **PR #104107** Related #104091.
- **PR #104688**
- **PR #104694**
- **PR #104696**
- **PR #104695**
- **PR #104701** Thanks @vincentkoc.
- **PR #104385** Thanks @mushuiyu886.
- **PR #104677** Thanks @Leon-SK668.
- **PR #104699**
- **PR #104423** Thanks @mushuiyu886.
- **PR #104697**
- **PR #104638** Thanks @vyctorbrzezowski.
- **PR #104705**
- **PR #104396** Thanks @zhangguiping-xydt.
- **PR #104604** Related #104590.
- **PR #104560** Thanks @wings1029.
- **PR #104710** Related #104709.
- **PR #104095** Thanks @Leon-SK668.
- **PR #104620** Thanks @IWhatsskill.
- **PR #104276** Related #104245.
- **PR #104621** Thanks @hugenshen.
- **PR #104576** Thanks @wangmiao0668000666.
- **PR #104454** Thanks @chenyangjun-xy.
- **PR #104496** Thanks @wings1029.
- **PR #104075** Thanks @IWhatsskill.
- **PR #104715** Thanks @Leon-SK668.
- **PR #104622** Thanks @vyctorbrzezowski.
- **PR #104460** Thanks @IWhatsskill.
- **PR #98236** Thanks @jalehman.
- **PR #104470** Related #104469. Thanks @VectorPeak.
- **PR #104723**
- **PR #104724** Thanks @vyctorbrzezowski.
- **PR #104726**
- **PR #104728**
- **PR #104653**
- **PR #103860** Related #103362. Thanks @lin-hongkuan and @harjothkhara.
- **PR #103181** Related #103137. Thanks @HOYALIM and @blinbaum.
- **PR #104737** Related #104731.
- **PR #104685** Related #103150.
- **PR #104735**
- **PR #104498** Thanks @VectorPeak.
- **PR #104739** Related #100622. Thanks @aniruddhaadak80.
- **PR #104652** Thanks @vyctorbrzezowski.
- **PR #104741** Thanks @vincentkoc.
- **PR #104619** Thanks @hugenshen.
- **PR #104740**
- **PR #103011** Thanks @NianJiuZst.
- **PR #104531** Thanks @zhangguiping-xydt.
- **PR #104744** Thanks @vyctorbrzezowski.
- **PR #104745** Related #104743.
- **PR #104748** Related #104738.
- **PR #104754** Thanks @zhangguiping-xydt.
- **PR #104751**
- **PR #104487** Thanks @chengzhichao-xydt.
- **PR #104256** Related #103684. Thanks @NianJiuZst and @BenjaminBrossi.
- **PR #104635** Related #104614. Thanks @compoodment.
- **PR #104540** Thanks @zhangguiping-xydt.
- **PR #104633** Thanks @zhangguiping-xydt.
- **PR #104758**
- **PR #97888** Thanks @joshavant.
- **PR #89816** Thanks @Pick-cat.
- **PR #104752**
- **PR #104575** Thanks @hugenshen.
- **PR #104678** Thanks @Leon-SK668.
- **PR #104761** Related #104746.
- **PR #104094** Thanks @Leon-SK668.
- **PR #104760**
- **PR #104749** Related #104747.
- **PR #103263** Thanks @yetval.
- **PR #104777**
- **PR #104550** Related #104518. Thanks @ObliviateRickLin and @PollyBot13.
- **PR #104526** Related #104524. Thanks @arturict and @aspalagin.
- **PR #104771**
- **PR #104567** Related #104566. Thanks @leonme.
- **PR #104617** Thanks @vyctorbrzezowski.
- **PR #104784**
- **PR #104774**
- **PR #104772** Thanks @vincentkoc.
- **PR #104766**
- **PR #103472** Thanks @ZOOWH and @ly85206559.
- **PR #104059** Related #104058. Thanks @moguangyu5-design and @vincentkoc.
- **PR #104571** Related #104568. Thanks @NianJiuZst.
- **PR #104789**
- **PR #104065** Related #104050. Thanks @harjothkhara and @vincentkoc and @btrailor.
- **PR #104790**
- **PR #104787** Related #104780.
- **PR #104776** Related #104775.
- **PR #104554** Thanks @qingminlong.
- **PR #103579**
- **PR #104797**
- **PR #104129** Thanks @Leon-SK668.
- **PR #97722** Thanks @zhangguiping-xydt.
- **PR #104109** Thanks @mushuiyu886.
- **PR #104534** Thanks @qingminglong.
- **PR #104802**
- **PR #104759** Related #104720. Thanks @wuqxuan and @context-down.
- **PR #104026** Related #104014. Thanks @ObliviateRickLin.
- **PR #103998** Related #103882. Thanks @MonkeyLeeT and @wbrom42.
- **PR #103248** Thanks @guarismo.
- **PR #104770** Related #104764.
- **PR #104767** Thanks @chengzhichao-xydt.
- **PR #104289** Thanks @Alix-007.
- **PR #104736** Thanks @sjf-oa and @sjf.
- **PR #104805**
- **PR #104801** Thanks @vincentkoc.
- **PR #104795**
- **PR #101912** Thanks @snowzlmbot.
- **PR #103704** Thanks @hugenshen.
- **PR #104717** Related #104598.
- **PR #104813**
- **PR #104809**
- **PR #103763** Thanks @litang9.
- **PR #104788** Thanks @Leon-SK668.
- **PR #104823** Thanks @vincentkoc.
- **PR #104757** Related #104698.
- **PR #104523** Thanks @ekinnee.
- **PR #104826**
- **PR #104121** Thanks @Alix-007.
- **PR #102340** Thanks @jontsai.
- **PR #104831**
- **PR #104832** Related #104781.
- **PR #104546** Thanks @obviyus.
- **PR #104839**
- **PR #104827** Related #104822.
- **PR #104768** Related #104765.
- **PR #104819** Related #104818.
- **PR #104693**
- **PR #104828**
- **PR #103679**
- **PR #104882**
- **PR #104891** Thanks @vincentkoc.
- **PR #104884** Related #104881. Thanks @shakkernerd.
- **PR #103698**
- **PR #104864**
- **PR #104894** Thanks @vincentkoc.
- **PR #104885**
- **PR #104897** Thanks @vincentkoc.
- **PR #104858**
- **PR #104308** Thanks @Pick-cat.
- **PR #104900**
- **PR #104902** Thanks @vincentkoc.
- **PR #104887** Thanks @vincentkoc.
- **PR #104908** Thanks @scoootscooob.
- **PR #99880** Thanks @xialonglee and @Solvely-Colin.
- **PR #104808**
- **PR #104913**
- **PR #103912**
- **PR #101694** Thanks @Alix-007.
- **PR #104925** Thanks @vincentkoc.
- **PR #104926** Thanks @vincentkoc.
- **PR #104883**
- **PR #104859** Related #104856. Thanks @vincentkoc.
- **PR #104909**
- **PR #104838**
- **PR #104773**
- **PR #104936** Thanks @vincentkoc.
- **PR #104934** Thanks @vincentkoc.
- **PR #104914** Thanks @vincentkoc.
- **PR #104938** Thanks @vincentkoc.
- **PR #104943** Thanks @vincentkoc.
- **PR #104873** Thanks @IWhatsskill and @Solvely-Colin.
- **PR #104944** Thanks @vincentkoc.
- **PR #104948** Thanks @vincentkoc.
- **PR #104952** Thanks @vincentkoc.
- **PR #104946** Related #104945.
- **PR #104954** Thanks @vincentkoc.
- **PR #104958** Thanks @vincentkoc.
- **PR #104961** Thanks @vincentkoc.
- **PR #104880** Thanks @obviyus.
- **PR #104886** Thanks @obviyus.
- **PR #104960** Thanks @vincentkoc.
- **PR #104974**
- **PR #104964** Related #104945.
- **PR #104834** Related #104833.
- **PR #69039** Thanks @sallyom.
- **PR #104988** Thanks @vincentkoc.
- **PR #104990** Thanks @vincentkoc.
- **PR #104963** Thanks @vincentkoc.
- **PR #104994** Thanks @vincentkoc.
- **PR #104978** Thanks @vincentkoc.
- **PR #104998** Thanks @vincentkoc.
- **PR #104730** Related #104700.
- **PR #104734** Related #104713. Thanks @ObliviateRickLin and @davefano.
- **PR #104995**
- **PR #105005** Thanks @vincentkoc.
- **PR #104792** Thanks @IWhatsskill.
- **PR #104906** Thanks @xydigit-zt.
- **PR #105007**
- **PR #104807**
- **PR #105006**
- **PR #104846**
- **PR #104981**
- **PR #104997** Related #104993.
- **PR #104921** Thanks @xydigit-zt.
- **PR #104116** Thanks @Pick-cat.
- **PR #104866** Related #104844. Thanks @obviyus.
- **PR #105015** Related #95685. Thanks @zw-xysk and @shawnsaxis1971-arch.
- **PR #105008** Thanks @vincentkoc.
- **PR #105026** Related #103691. Thanks @vincentkoc.
- **PR #105023** Thanks @vincentkoc.
- **PR #103522** Related #103386. Thanks @lonexreb and @solavrc.
- **PR #105031** Thanks @vincentkoc.
- **PR #105020** Related #105019.
- **PR #104687** Thanks @Leon-SK668.
- **PR #103155** Thanks @soldforaloss.
- **PR #104814** Related #104791.
- **PR #105024**
- **PR #104251** Related #104217.
- **PR #104942** Related #104941. Thanks @moguangyu5-design.
- **PR #105037**
- **PR #105047** Related #105045.
- **PR #104190** Related #93928. Thanks @destire-mio and @yetval.
- **PR #105052**
- **PR #102366** Related #102365. Thanks @galiniliev.
- **PR #104800** Thanks @chengzhichao-xydt.
- **PR #105094** Thanks @vincentkoc.
- **PR #105091** Related #105087.
- **PR #104796** Thanks @Leon-SK668.
- **PR #102060** Related #97593. Thanks @yetval.
- **PR #104811** Thanks @ShiroKSH.
- **PR #105072** Related #59090. Thanks @whisky0809 and @bdhwan.
- **PR #103491** Thanks @zw-xysk.
- **PR #105048**
- **PR #104816**
- **PR #105100** Thanks @vincentkoc.
- **PR #105092** Thanks @Leon-SK668.
- **PR #105082**
- **PR #105071**
- **PR #105117** Thanks @vincentkoc.
- **PR #105099** Related #105043.
- **PR #105126**
- **PR #105107** Thanks @vincentkoc.
- **PR #105115** Thanks @snowzlmbot.
- **PR #105114** Related #105051.
- **PR #105134**
- **PR #105136** Thanks @vincentkoc.
- **PR #105088** Thanks @vincentkoc.
- **PR #105046**
- **PR #105065** Related #105053.
- **PR #105140** Related #105130.
- **PR #104863** Thanks @Leon-SK668.
- **PR #105076** Thanks @vincentkoc.
- **PR #105118** Thanks @vincentkoc.
- **PR #105057** Related #100978.
- **PR #103811** Related #103387. Thanks @lonexreb and @solavrc.
- **PR #105132**
- **PR #103303** Thanks @zw-xysk.
- **PR #105069** Related #105068.
- **PR #105144**
- **PR #105150** Thanks @vincentkoc.
- **PR #105159** Thanks @vincentkoc.
- **PR #105143** Related #105122.
- **PR #105022** Related #104945.
- **PR #105142** Thanks @paulislava.
- **PR #105075**
- **PR #105038** Related #104999. Thanks @vincentkoc.
- **PR #101274** Thanks @Pick-cat.
- **PR #105169** Thanks @zhangguiping-xydt.
- **PR #105095** Related #104996.
- **PR #105172**
- **PR #105153** Related #105109.
- **PR #105174** Related #105141.
- **PR #105061**
- **PR #105179** Thanks @vincentkoc.
- **PR #105160** Related #96653. Thanks @SunnyShu0925 and @willfivestar.
- **PR #105205** Thanks @vincentkoc.
- **PR #105206** Related #105181. Thanks @vincentkoc.
- **PR #105177** Related #105176.
- **PR #102881** Related #102834. Thanks @wangyan2026 and @yetval.
- **PR #105083** Related #105004.
- **PR #105208**
- **PR #105210**
- **PR #82505** Related #82504. Thanks @coygeek.
- **PR #105175** Related #105129.
- **PR #105050**
- **PR #105213**
- **PR #105180**
- **PR #105224** Thanks @vincentkoc.
- **PR #105219**
- **PR #105151** Related #38844. Thanks @tigicion.
- **PR #105221**
- **PR #105215** Related #94058. Thanks @Alix-007 and @needtocalmdown.
- **PR #105220** Related #105207.
- **PR #105214**
- **PR #105236** Thanks @vincentkoc.
- **PR #105222** Thanks @vincentkoc.
- **PR #105241**
- **PR #105182** Related #105178.
- **PR #105250** Thanks @vincentkoc.
- **PR #105245** Thanks @vincentkoc.
- **PR #105223**
- **PR #105252**
- **PR #105251**
- **PR #105249** Related #105225.
- **PR #105253**
- **PR #105254**
- **PR #105242**
- **PR #105256**
- **PR #104837**
- **PR #103921**
- **PR #103932**
- **PR #105209** Related #105165.
- **PR #105268**
- **PR #105239** Related #104600.
- **PR #105054**
- **PR #105270**
- **PR #105273** Thanks @vincentkoc.
- **PR #105260** Thanks @vincentkoc.
- **PR #105261** Related #105218.
- **PR #105259** Thanks @Pick-cat.
- **PR #105272**
- **PR #105030**
- **PR #105276** Thanks @vincentkoc.
- **PR #105255** Thanks @vincentkoc.
- **PR #105283**
- **PR #105285** Related #105278.
- **PR #105280**
- **PR #105282** Related #105281.
- **PR #105291**
- **PR #105293** Thanks @vincentkoc.
- **PR #105299**
- **PR #100929** Thanks @vyctorbrzezowski.
- **PR #105123** Thanks @vincentkoc.
- **PR #105292**
- **PR #105303**
- **PR #105304** Related #105294.
- **PR #105309** Thanks @vincentkoc.
- **PR #105265** Related #105264.
- **PR #105313** Related #105308.
- **PR #105312** Thanks @vincentkoc.
- **PR #105311**
- **PR #105317** Thanks @vincentkoc.
- **PR #105324**
- **PR #105049** Thanks @vincentkoc.
- **PR #105332** Thanks @vincentkoc.
- **PR #105333**
- **PR #105314** Thanks @vincentkoc.
- **PR #105330** Thanks @vyctorbrzezowski.
- **PR #105331** Related #105326.
- **PR #105287** Related #105154, #105155. Thanks @vincentkoc.
- **PR #105337**
- **PR #105345** Thanks @vincentkoc.
- **PR #105343**
- **PR #105340**
- **PR #105349** Thanks @vincentkoc.
- **PR #105351** Related #105344.
- **PR #105336** Related #91083. Thanks @Lucenx9 and @LaPhilosophie and @hanZeng-08 and @Medicalmusings.
- **PR #105341** Thanks @vincentkoc.
- **PR #105352**
- **PR #101864** Thanks @snowzlmbot.
- **PR #105355** Thanks @vincentkoc.
- **PR #105348**
- **PR #105358** Thanks @vincentkoc.
- **PR #105361**
- **PR #105363** Thanks @vincentkoc.
- **PR #105359** Related #105354.
- **PR #101852** Thanks @mmaps.
- **PR #105362**
- **PR #105360**
- **PR #105366** Related #105364.
- **PR #105369** Thanks @vincentkoc.
- **PR #105275**
- **PR #105377** Thanks @vincentkoc.
- **PR #105367**
- **PR #105370** Thanks @vincentkoc.
- **PR #105382**
- **PR #105385** Thanks @vincentkoc.
- **PR #105388** Related #105383. Thanks @vincentkoc.
- **PR #105394** Thanks @vincentkoc.
- **PR #105375**
- **PR #105384** Related #105373.
- **PR #105400** Thanks @vincentkoc.
- **PR #105406** Thanks @vincentkoc.
- **PR #105412** Thanks @vincentkoc and @giodl73-repo.
- **PR #105416** Thanks @vincentkoc.
- **PR #105390**
- **PR #105411**
- **PR #105443** Thanks @vincentkoc.
- **PR #105398**
- **PR #105446** Thanks @vincentkoc.
- **PR #105399**
- **PR #105421** Related #105404.
- **PR #105395** Thanks @vincentkoc.
- **PR #105407** Thanks @vincentkoc.
- **PR #105408** Thanks @vincentkoc.
- **PR #104488** Thanks @hugenshen.
- **PR #105409** Thanks @vincentkoc.
- **PR #105459** Thanks @vincentkoc.
- **PR #105468** Thanks @vincentkoc.
- **PR #105469** Related #105463. Thanks @vincentkoc.
- **PR #105103** Thanks @qingminglong.
- **PR #105474** Thanks @vincentkoc.
- **PR #105476** Related #105461. Thanks @vincentkoc.
- **PR #102357** Related #102356. Thanks @galiniliev and @steipete-oai.
- **PR #105482** Thanks @vincentkoc.
- **PR #105472**
- **PR #102094** Thanks @Alix-007.
- **PR #105486** Thanks @vincentkoc.
- **PR #102072** Thanks @Alix-007.
- **PR #105497** Thanks @vincentkoc.
- **PR #105347** Thanks @jesse-merhi.
- **PR #105499**
- **PR #105495**
- **PR #105502** Thanks @vincentkoc.
- **PR #103018** Thanks @Alix-007 and @Leon-SK668.
- **PR #104290** Thanks @Alix-007.
- **PR #105505** Thanks @vincentkoc.
- **PR #105506** Thanks @vincentkoc.
- **PR #105510** Thanks @vincentkoc.
- **PR #105508**
- **PR #105509**
- **PR #105522** Thanks @vincentkoc.
- **PR #105524** Thanks @vincentkoc.
- **PR #105372** Thanks @vincentkoc.
- **PR #105516**
- **PR #105525** Thanks @vincentkoc and @giodl73-repo.
- **PR #105521**
- **PR #103634** Thanks @gorkem2020.
- **PR #105526** Thanks @vincentkoc.
- **PR #105119**
- **PR #105531** Thanks @vincentkoc.
- **PR #103995** Thanks @efrazer-oai.
- **PR #105534** Thanks @vincentkoc.
- **PR #105538** Thanks @vincentkoc.
- **PR #104815** Related #104803.
- **PR #105542** Thanks @vincentkoc.
- **PR #101469** Thanks @cxbAsDev.
- **PR #104919** Related #104903. Thanks @Glucksberg and @evan-YM.
- **PR #104962** Thanks @mcaxtr.
- **PR #105546** Thanks @vincentkoc.
- **PR #105535**
- **PR #104949** Thanks @mcaxtr.
- **PR #105116**
- **PR #105545**
- **PR #105554** Thanks @vincentkoc.
- **PR #105541**
- **PR #105552** Related #105543.
- **PR #105563** Thanks @vincentkoc.
- **PR #105570** Thanks @vincentkoc.
- **PR #105566**
- **PR #104896** Thanks @dwc1997.
- **PR #105555** Related #105532.
- **PR #105572** Thanks @vincentkoc.
- **PR #105569**
- **PR #105577** Thanks @vincentkoc.
- **PR #105012** Related #105010.
- **PR #105583** Thanks @vincentkoc.
- **PR #105587** Thanks @vincentkoc.
- **PR #105589** Thanks @vincentkoc.
- **PR #105585** Related #105581.
- **PR #105596** Thanks @vincentkoc.
- **PR #105591**
- **PR #105599** Thanks @vincentkoc.
- **PR #104662** Thanks @Alix-007.
- **PR #105600** Related #105582.
- **PR #105595** Related #105575.
- **PR #105597**
- **PR #105606** Thanks @vincentkoc.
- **PR #105540**
- **PR #105598**
- **PR #105603**
- **PR #105612** Thanks @vincentkoc.
- **PR #105592**
- **PR #105615**
- **PR #105627**
- **PR #105611**
- **PR #105607**
- **PR #105613**
- **PR #105626** Related #105608.
- **PR #105631** Thanks @vincentkoc.
- **PR #103717** Thanks @Pick-cat.
- **PR #105258** Related #102250. Thanks @destire-mio and @yetval.
- **PR #105475** Thanks @qingminlong.
- **PR #103468** Thanks @zw-xysk.
- **PR #105471** Thanks @IWhatsskill.
- **PR #105628**
- **PR #104274** Thanks @qingminglong.
- **PR #105520** Related #105511. Thanks @edenfunf.
- **PR #105636**
- **PR #105605**
- **PR #105539** Related #105035.
- **PR #105479** Thanks @qingminlong.
- **PR #105639** Thanks @vincentkoc.
- **PR #105635** Related #81583. Thanks @hercial61.
- **PR #105616** Related #105590.
- **PR #104196** Related #104194. Thanks @AnthonyStainer.
- **PR #105646** Related #105602.
- **PR #101474** Thanks @yourslewis.
- **PR #105645** Thanks @vincentkoc.
- **PR #104152** Thanks @qingminglong.
- **PR #105663** Thanks @vincentkoc.
- **PR #105671** Related #105618.
- **PR #105642** Related #105568.
- **PR #105687** Thanks @vincentkoc.
- **PR #104675** Thanks @vyctorbrzezowski.
- **PR #105691** Thanks @vincentkoc.
- **PR #105688** Related #105127.
- **PR #104122** Thanks @Alix-007 and @sallyom.
- **PR #105704** Thanks @vincentkoc.
- **PR #105711** Thanks @vincentkoc.
- **PR #105718** Thanks @vincentkoc and @giodl73-repo.
- **PR #105709**
- **PR #105702** Related #105632.
- **PR #105719**
- **PR #105721** Thanks @vincentkoc.
- **PR #105722** Thanks @vincentkoc.
- **PR #105594**
- **PR #105604**
- **PR #105580** Thanks @mcaxtr.
- **PR #105740** Thanks @vincentkoc and @giodl73-repo.
- **PR #105739**
- **PR #105717** Related #88307. Thanks @vincentkoc and @compoodment.
- **PR #105728** Thanks @fuller-stack-dev.
- **PR #102231** Thanks @hugenshen.
- **PR #101496** Thanks @xialonglee.
- **PR #105737**
- **PR #105742**
- **PR #105743** Related #105730.
- **PR #105755**
- **PR #105492** Related #105436. Thanks @evan-YM and @aniruddhaadak80.
- **PR #105746** Thanks @vincentkoc.
- **PR #105720** Thanks @vincentkoc.
- **PR #105760**
- **PR #105762**
- **PR #104168** Thanks @Pick-cat.
- **PR #105747** Thanks @vincentkoc.
- **PR #105767** Thanks @vincentkoc.
- **PR #105756** Thanks @vincentkoc.
- **PR #105771**
- **PR #105772** Thanks @vincentkoc.
- **PR #105773** Thanks @vincentkoc.
- **PR #105778**
- **PR #105774** Related #105748.
- **PR #105776** Related #105733.
- **PR #105777**
- **PR #105397** Thanks @VectorPeak.
- **PR #104132** Thanks @chengzhichao-xydt.
- **PR #105782** Thanks @vincentkoc.
- **PR #105519** Related #105422. Thanks @wuqxuan and @aniruddhaadak80.
- **PR #105614** Related #105439. Thanks @xiaobao-k8s and @aniruddhaadak80.
- **PR #105770** Related #105749.
- **PR #105386** Related #105188. Thanks @ZOOWH and @aniruddhaadak80.
- **PR #105788**
- **PR #105768**
- **PR #105783** Related #105758.
- **PR #105792**
- **PR #105790** Related #58570. Thanks @UBIpromoter.
- **PR #105800** Thanks @vincentkoc.
- **PR #105799** Thanks @vincentkoc.
- **PR #105786** Related #105785.
- **PR #105804** Related #105764.
- **PR #105811** Thanks @vincentkoc.
- **PR #105809**
- **PR #102976** Thanks @hugenshen.
- **PR #105289** Related #103736. Thanks @LZY3538 and @yetval.
- **PR #105801** Related #105745, #105779.
- **PR #105812** Thanks @vincentkoc.
- **PR #105816**
- **PR #105387** Thanks @qingminlong.
- **PR #105794**
- **PR #105815**
- **PR #105834** Thanks @vincentkoc.
- **PR #105813** Related #88643. Thanks @tianxiaochannel-oss88.
- **PR #105832**
- **PR #105802** Related #105761.
- **PR #105839**
- **PR #105856** Thanks @vincentkoc.
- **PR #105866**
- **PR #105878** Thanks @vincentkoc.
- **PR #105859**
- **PR #105315** Thanks @qingminglong.
- **PR #105891** Thanks @vincentkoc.
- **PR #105864**
- **PR #105861**
- **PR #94130** Related #78145. Thanks @zhangguiping-xydt and @tdrose01.
- **PR #105894** Related #105825.
- **PR #105826**
- **PR #105789** Related #105757.
- **PR #105795** Thanks @morluto.
- **PR #105908** Thanks @vincentkoc.
- **PR #105818** Thanks @lzw112.
- **PR #105858**
- **PR #105769** Thanks @mushuiyu886.
- **PR #99007** Related #98879, #98865. Thanks @maweibin and @carterstebbins23-spec.
- **PR #105876**
- **PR #105902** Related #105898.
- **PR #105808**
- **PR #105906** Related #105905.
- **PR #104632** Thanks @Glucksberg.
- **PR #105925** Related #105900.
- **PR #105918**
- **PR #97078** Thanks @developersdigest.
- **PR #105955**
- **PR #104218** Related #104136. Thanks @zw-xysk and @cursoragent and @dale-goes-fast.
- **PR #105983**
- **PR #105991**
- **PR #105365** Thanks @Glucksberg.
- **PR #105997** Related #90925. Thanks @obviyus and @DolencLuka.
- **PR #106022**
- **PR #105941** Related #102367. Thanks @saagarvaru.
- **PR #105831** Related #105828, #105829. Thanks @obviyus.
- **PR #103620** Thanks @pgondhi987.
- **PR #106006** Related #105965.
- **PR #106042**
- **PR #106003** Related #105950.
- **PR #105913** Related #105912.
- **PR #106052**
- **PR #105867**
- **PR #106071** Related #106059. Thanks @obviyus.
- **PR #105975** Related #105949.
- **PR #106048** Related #104105. Thanks @joshavant and @yetval.
- **PR #106061**
- **PR #105961** Related #105956. Thanks @sjf.
- **PR #105977** Related #105972.
- **PR #105953** Related #105932.
- **PR #105989** Related #105969.
- **PR #106037** Thanks @vincentkoc.
- **PR #105948** Related #105946. Thanks @vincentkoc.
- **PR #105947**
- **PR #106051** Related #105915.
- **PR #106070**
- **PR #106064** Thanks @fuller-stack-dev.
- **PR #105927**
- **PR #105957** Related #105897.
- **PR #105995** Related #105964.
- **PR #106001** Thanks @fuller-stack-dev.
- **PR #102924** Thanks @hugenshen.
- **PR #106017**
- **PR #106072** Thanks @vincentkoc.
- **PR #105944** Related #105938.
- **PR #105945** Thanks @vincentkoc.
- **PR #105952**
- **PR #106087**
- **PR #97086** Thanks @paulcam206 and @giodl73-repo and @RomneyDa.
- **PR #106021**
- **PR #106063**
- **PR #106031**
- **PR #106062** Related #106053.
- **PR #104624** Thanks @hugenshen.
- **PR #105890**
- **PR #106096** Thanks @fuller-stack-dev.
- **PR #106012** Related #105967.
- **PR #98189** Thanks @Solvely-Colin.
- **PR #106030** Related #105962.
- **PR #106103** Thanks @vincentkoc.
- **PR #106108** Thanks @vincentkoc.
- **PR #105988** Related #105985.
- **PR #105993** Thanks @fuller-stack-dev.
- **PR #105156** Related #94688. Thanks @bdjben and @Gr4via.
- **PR #105842**
- **PR #106121** Thanks @fuller-stack-dev.
- **PR #106109**
- **PR #105958** Thanks @fuller-stack-dev.
- **PR #106124**
- **PR #106126** Thanks @vincentkoc.
- **PR #95757** Related #91947. Thanks @bdjben and @guojiongming.
- **PR #105850**
- **PR #106117** Related #106076.
- **PR #106095**
- **PR #106132**
- **PR #105814** Related #105741.
- **PR #106099**
- **PR #105674** Related #105672.
- **PR #106097** Thanks @vincentkoc.
- **PR #94416** Related #93501. Thanks @mushuiyu886 and @carsten19.
- **PR #106139** Thanks @vincentkoc.
- **PR #106045** Related #105968.
- **PR #106033**
- **PR #105914**
- **PR #106011** Related #105960.
- **PR #106007** Related #105998.
- **PR #105882**
- **PR #106129** Related #106118.
- **PR #106111** Related #106013.
- **PR #105970** Related #105959.
- **PR #106125** Related #106123.
- **PR #106040**
- **PR #105987**
- **PR #106049** Related #106047.
- **PR #106089** Related #106082.
- **PR #105888**
- **PR #105951**
- **PR #106074**
- **PR #106144** Related #105923. Thanks @xydt-juyaohui and @moguangyu5-design.
- **PR #106093** Related #106054.
- **PR #106176** Related #105862. Thanks @momothemage and @asa1525.
- **PR #106056** Thanks @pgondhi987.
- **PR #106115** Related #106107.
- **PR #106098**
- **PR #106184** Thanks @vincentkoc.
- **PR #106183** Related #106102.
- **PR #105937**
- **PR #106169** Related #106141.
- **PR #106157**
- **PR #106179** Related #106164.
- **PR #106146** Related #106131.
- **PR #106119**
- **PR #104955** Related #104898. Thanks @wuqxuan and @altaywtf and @cmaldonado80.
- **PR #106155**
- **PR #106165**
- **PR #106034** Thanks @Alix-007.
- **PR #106057** Thanks @pgondhi987.
- **PR #106010** Related #105980.
- **PR #106044** Related #106043.
- **PR #105904**
- **PR #106094** Related #106085.
- **PR #106175**
- **PR #106090**
- **PR #106114**
- **PR #105838** Related #105759.
- **PR #106002** Related #105971.
- **PR #106039**
- **PR #93198** Related #80933. Thanks @mushuiyu886 and @gorkem2020.
- **PR #106217**
- **PR #105855**
- **PR #106214**
- **PR #106151**
- **PR #105875**
- **PR #106225**
- **PR #106160**
- **PR #106222**
- **PR #106193**
- **PR #105939** Related #105920.
- **PR #106196** Related #106158.
- **PR #102984** Thanks @chengzhichao-xydt.
- **PR #106228**
- **PR #106237**
- **PR #106234** Related #106219.
- **PR #106221** Thanks @vincentkoc.
- **PR #106205** Related #106185.
- **PR #105928** Related #105843.
- **PR #106195** Related #106194.
- **PR #106240**
- **PR #106230**
- **PR #105865**
- **PR #106105** Related #105431. Thanks @zhangqueping and @aniruddhaadak80.
- **PR #106154** Related #106148.
- **PR #104878** Related #104490. Thanks @ObliviateRickLin and @altaywtf and @smoe-bot.
- **PR #97611** Thanks @RomneyDa and @altaywtf.
- **PR #106247**
- **PR #106256**
- **PR #106253** Thanks @vincentkoc.
- **PR #106257**
- **PR #106242**
- **PR #106263**
- **PR #106113** Related #105963.
- **PR #104123** Thanks @zhangguiping-xydt.
- **PR #106197** Thanks @vincentkoc.
- **PR #106133** Related #105924.
- **PR #106252**
- **PR #106243** Related #106233.
- **PR #106210** Thanks @vincentkoc.
- **PR #106265** Related #106245.
- **PR #106046**
- **PR #105921**
- **PR #106055**
- **PR #106016** Related #105996.
- **PR #106275**
- **PR #104893** Related #104865. Thanks @arcabotai and @Solvely-Colin.
- **PR #106279**
- **PR #106269**
- **PR #106200**
- **PR #106254**
- **PR #106292**
- **PR #104668** Thanks @jwest75674.
- **PR #106289**
- **PR #106260**
- **PR #106301** Thanks @vincentkoc.
- **PR #106174** Related #106138. Thanks @obviyus.
- **PR #103211** Related #101720. Thanks @HOYALIM and @aniruddhaadak80.
- **PR #106220**
- **PR #106312**
- **PR #106208** Related #106192.
- **PR #106309** Related #106291.
- **PR #106058**
- **PR #106288** Related #106276.
- **PR #106270** Related #106251.
- **PR #106345** Related #106299.
- **PR #106307** Related #106305.
- **PR #106153**
- **PR #105954** Thanks @qingminlong.
- **PR #106353** Related #106343.
- **PR #106281**
- **PR #106366** Related #106348.
- **PR #106367** Related #106363.
- **PR #106322** Related #106321.
- **PR #106223**
- **PR #106356**
- **PR #106267** Related #99087. Thanks @TheAngryPit.
- **PR #106352** Related #106337.
- **PR #106232**
- **PR #106191**
- **PR #106377**
- **PR #106306**
- **PR #106318** Related #106261.
- **PR #106382** Related #106371.
- **PR #106303** Related #106302.
- **PR #106358**
- **PR #102887** Related #102837. Thanks @wangyan2026 and @yetval.
- **PR #106316** Related #106274.
- **PR #106380**
- **PR #106317** Thanks @vincentkoc.
- **PR #105448** Related #105447. Thanks @VectorPeak and @altaywtf.
- **PR #106092**
- **PR #106287** Related #106278.
- **PR #106294** Related #106259.
- **PR #106038**
- **PR #106282**
- **PR #106224** Related #106213.
- **PR #106394** Thanks @vincentkoc.
- **PR #106401**
- **PR #103993** Related #99660. Thanks @TheAngryPit and @CassieMei.
- **PR #106152** Related #105974. Thanks @wuqxuan.
- **PR #106347** Related #106310. Thanks @obviyus.
- **PR #106409**
- **PR #106320**
- **PR #106410** Related #106389.
- **PR #106419**
- **PR #106411** Thanks @vincentkoc.
- **PR #106418**
- **PR #106426**
- **PR #106428** Related #106417.
- **PR #106431** Thanks @vincentkoc.
- **PR #105754** Related #102400. Thanks @oabdelmaksoud and @rodja.
- **PR #106354** Related #106350.
- **PR #106434**
- **PR #106435** Related #105973.
- **PR #106091** Related #106088.
- **PR #106440** Thanks @vincentkoc.
- **PR #106387** Related #106207.
- **PR #106441** Related #106433.
- **PR #106427**
- **PR #106447** Thanks @vincentkoc.
- **PR #105833** Related #105529.
- **PR #106455**
- **PR #106457** Thanks @shakkernerd.
- **PR #106451** Related #106340.
- **PR #106264** Thanks @IWhatsskill and @Solvely-Colin.
- **PR #106459** Thanks @vincentkoc.
- **PR #106462** Related #106446.
- **PR #106290**
- **PR #106168**
- **PR #106463**
- **PR #106211** Related #106186.
- **PR #106332**
- **PR #106476**
- **PR #106478**
- **PR #106481**
- **PR #105810** Thanks @fuller-stack-dev.
- **PR #106488**
- **PR #106492**
- **PR #106470** Related #106326.
- **PR #105460** Related #105675. Thanks @mushuiyu886 and @sallyom and @aniruddhaadak80.
- **PR #106507**
- **PR #106520**
- **PR #106521**
- **PR #106531**
- **PR #106486**
- **PR #100174** Related #100169. Thanks @souvikDevloper and @Souvikalp and @jwest75674.
- **PR #106535**
- **PR #106487**
- **PR #106499** Thanks @vincentkoc.
- **PR #106501**
- **PR #106472** Related #106465.
- **PR #106530**
- **PR #106514** Related #106510.
- **PR #105805** Thanks @lwy-2.
- **PR #106537** Related #106493.
- **PR #106533**
- **PR #106286**
- **PR #106255**
- **PR #106324** Related #106268.
- **PR #105557** Thanks @mushuiyu886.
- **PR #106547**
- **PR #106518** Related #106388.
- **PR #106539**
- **PR #106313** Related #106295.
- **PR #106548** Related #106546.
- **PR #106489** Related #106466.
- **PR #106549** Thanks @vincentkoc.
- **PR #106591**
- **PR #106554**
- **PR #103562** Related #102381. Thanks @cxbAsDev and @zuofengboss.
- **PR #106590**
- **PR #106522**
- **PR #106500**
- **PR #106550**
- **PR #106592** Related #106589.
- **PR #106593** Thanks @vincentkoc.
- **PR #106544**
- **PR #106600**
- **PR #106525**
- **PR #106552**
- **PR #106634**
- **PR #106632** Related #106602.
- **PR #103413** Thanks @wings1029.
- **PR #106543**
- **PR #106639**
- **PR #106285** Related #106280.
- **PR #106620** Thanks @vincentkoc.
- **PR #106615**
- **PR #106508**
- **PR #106601** Related #106597.
- **PR #106672**
- **PR #106689**
- **PR #106495**
- **PR #106691**
- **PR #106642**
- **PR #106513** Related #103363. Thanks @jincheng-xydt and @harjothkhara.
- **PR #105922** Thanks @wahaha1223.
- **PR #105885** Thanks @Alix-007.
- **PR #106697**
- **PR #106695** Related #106694.
- **PR #105916** Thanks @qingminlong.
- **PR #106698**
- **PR #106490** Related #81961. Thanks @alexandre-leng.
- **PR #106702**
- **PR #105979** Related #105791.
- **PR #106392**
- **PR #105334** Thanks @dwc1997.
- **PR #106707** Related #106699.
- **PR #106708**
- **PR #106640**
- **PR #106728**
- **PR #106729** Related #106727.
- **PR #106731**
- **PR #106732**
- **PR #106733**
- **PR #106469**
- **PR #105775** Thanks @jjjhenriksen.
- **PR #106740**
- **PR #106019**
- **PR #106742**
- **PR #106743**
- **PR #106744** Related #106735.
- **PR #106748**
- **PR #106750**
- **PR #106753** Related #106747.
- **PR #106756**
- **PR #106759**
- **PR #106761**
- **PR #106767**
- **PR #106758** Related #106360.
- **PR #106769** Related #106757.
- **PR #106771**
- **PR #106595** Related #106372.
- **PR #102263** Related #99286. Thanks @Jaksenc and @iamyhzhao.
- **PR #106782**
- **PR #106784** Related #106770.
- **PR #106787** Related #106785.
- **PR #106794**
- **PR #106801**
- **PR #106802** Related #106795.
- **PR #106805**
- **PR #106751**
- **PR #106807**
- **PR #106808** Related #106804.
- **PR #106811** Related #106809.
- **PR #106816** Related #106812.
- **PR #106798**
- **PR #106820** Related #106817.
- **PR #106823**
- **PR #106821**
- **PR #106828**
- **PR #106764** Related #106745.
- **PR #106796**
- **PR #106534** Related #106218.
- **PR #106772**
- **PR #106827**
- **PR #106806** Related #103056. Thanks @yetval.
- **PR #106754**
- **PR #106783**
- **PR #106692** Thanks @vincentkoc.
- **PR #106736**
- **PR #96738** Thanks @pdurlej.
- **PR #106775**
- **PR #106792** Related #106112. Thanks @joshavant and @charliemeyer2000.
- **PR #106831** Related #106829.
- **PR #106774**
- **PR #106762**
- **PR #106004** Related #105936. Thanks @yangxiansheng and @joshavant and @yetval.
- **PR #106791**
- **PR #106837** Thanks @vincentkoc.
- **PR #106468** Thanks @vincentkoc.
- **PR #106842**
- **PR #106836**
- **PR #106844** Related #106834.
- **PR #106845**
- **PR #106848**
- **PR #106116** Related #103059. Thanks @ruel225 and @yetval.
- **PR #106173** Thanks @wangmiao0668000666.
- **PR #106853**
- **PR #106835**
- **PR #106857**
- **PR #106856** Thanks @vincentkoc.
- **PR #106800**
- **PR #106858** Related #106847.
- **PR #106633** Related #106511.
- **PR #106861**
- **PR #106406** Related #106215.
- **PR #106773**
- **PR #106355** Related #106145.
- **PR #106605**
- **PR #106868**
- **PR #106867**
- **PR #106741**
- **PR #106862**
- **PR #106852** Thanks @vincentkoc.
- **PR #106871** Thanks @vincentkoc.
- **PR #106874** Related #106860.
- **PR #106879**
- **PR #106328** Thanks @zhangguiping-xydt.
- **PR #106878** Thanks @vincentkoc.
- **PR #106198** Related #106170. Thanks @galiniliev.
- **PR #105576** Thanks @mcaxtr.
- **PR #106883**
- **PR #106887**
- **PR #106766** Related #106182.
- **PR #106889** Related #106877.
- **PR #105574** Thanks @mcaxtr.
- **PR #106892**
- **PR #106884** Thanks @joshavant.
- **PR #106891**
- **PR #106872**
- **PR #106896**
- **PR #106900** Thanks @vincentkoc.
- **PR #106895**
- **PR #106898**
- **PR #106904**
- **PR #106424** Thanks @Leon-SK668.
- **PR #106906**
- **PR #106917**
- **PR #106915**
- **PR #106596** Related #106430. Thanks @wuqxuan and @alexai-hnt.
- **PR #106919**
- **PR #106643** Thanks @zw-xysk.
- **PR #106236** Thanks @ZengWen-DT.
- **PR #106924**
- **PR #106880**
- **PR #106901**
- **PR #106925**
- **PR #106886**
- **PR #106909** Thanks @vincentkoc.
- **PR #105579** Thanks @mcaxtr.
- **PR #106929**
- **PR #106931**
- **PR #106934** Thanks @vincentkoc.
- **PR #106936**
- **PR #106865** Related #106266.
- **PR #106881** Thanks @vincentkoc.
- **PR #106938**
- **PR #106918**
- **PR #106873**
- **PR #106944** Thanks @vincentkoc.
- **PR #106947**
- **PR #106439** Thanks @sunlit-deng.
- **PR #106928**
- **PR #106950** Thanks @vincentkoc.
- **PR #106949**
- **PR #106921** Related #106876.
- **PR #106956**
- **PR #106954**
- **PR #106955** Thanks @vincentkoc.
- **PR #103290** Related #103262. Thanks @tzy-17 and @yetval.
- **PR #106939**
- **PR #106964**
- **PR #106603** Thanks @he-yufeng.
- **PR #106846**
- **PR #106965** Thanks @vincentkoc.
- **PR #106973** Thanks @vincentkoc.
- **PR #106974**
- **PR #106978**
- **PR #106979** Related #106966.
- **PR #106425** Thanks @Leon-SK668.
- **PR #106991**
- **PR #106990**
- **PR #106972**
- **PR #106993**
- **PR #106553** Thanks @sebastian-openclaw.
- **PR #106992** Thanks @vincentkoc.
- **PR #106953** Thanks @vincentkoc.
- **PR #106970**
- **PR #106968**
- **PR #106975**
- **PR #107007**
- **PR #107003**
- **PR #107016**
- **PR #107014**
- **PR #107013** Thanks @vincentkoc.
- **PR #107018**
- **PR #107008**
- **PR #107027** Thanks @vincentkoc.
- **PR #107020**
- **PR #106927**
- **PR #107039**
- **PR #107022**
- **PR #106962**
- **PR #107011**
- **PR #104070** Thanks @zhangguiping-xydt.
- **PR #107015**
- **PR #107004** Related #106882.
- **PR #107042**
- **PR #107002** Related #97563, #103076. Thanks @jarvis-drakon and @shad0wca7.
- **PR #107044**
- **PR #107051**
- **PR #107048** Thanks @vincentkoc.
- **PR #107055**
- **PR #107056**
- **PR #107062**
- **PR #107064**
- **PR #107057**
- **PR #107071**
- **PR #107075**
- **PR #107078**
- **PR #107083**
- **PR #107077** Thanks @vincentkoc.
- **PR #107084**
- **PR #106026** Related #105872.
- **PR #107088**
- **PR #107095**
- **PR #107097**
- **PR #107096** Thanks @vincentkoc.
- **PR #107098**
- **PR #107100**
- **PR #107079**
- **PR #107038** Thanks @fuller-stack-dev.
- **PR #107041**
- **PR #107110**
- **PR #107047**
- **PR #106981**
- **PR #107054**
- **PR #107059**
- **PR #107113** Thanks @vincentkoc.
- **PR #107120**
- **PR #107126**
- **PR #107109**
- **PR #107124**
- **PR #107087** Related #103057. Thanks @yetval.
- **PR #106926** Thanks @mushuiyu886.
- **PR #107102**
- **PR #106986** Thanks @zhangguiping-xydt.
- **PR #107130**
- **PR #107135**
- **PR #107111** Related #107085.
- **PR #107128**
- **PR #106941** Related #106913.
- **PR #106951** Related #106948. Thanks @moguangyu5-design.
- **PR #107107**
- **PR #106952** Thanks @zenglingbiao.
- **PR #107081** Related #107080.
- **PR #107134**
- **PR #107131** Thanks @vincentkoc.
- **PR #107115**
- **PR #107140** Thanks @vincentkoc.
- **PR #107040** Thanks @hannesrudolph.
- **PR #107116** Related #107106.
- **PR #107147**
- **PR #107148**
- **PR #107123**
- **PR #107146** Thanks @vincentkoc.
- **PR #107142**
- **PR #107156**
- **PR #107150**
- **PR #104259** Thanks @yyj-xydt.
- **PR #107151**
- **PR #107157**
- **PR #106899** Related #106838. Thanks @bek91.
- **PR #106995** Thanks @joshavant.
- **PR #107086**
- **PR #107072** Thanks @zhangguiping-xydt.
- **PR #107103** Thanks @zw-xysk.
- **PR #107165**
- **PR #106384** Thanks @ZengWen-DT.
- **PR #107169**
- **PR #107168**
- **PR #107101**
- **PR #107174** Thanks @fuller-stack-dev.
- **PR #107178**
- **PR #107189**
- **PR #107190**
- **PR #96554** Thanks @ruizcrp.
- **PR #107196**
- **PR #107197**
- **PR #107194**
- **PR #107177**
- **PR #107201**
- **PR #107206**
- **PR #107210**
- **PR #107186**
- **PR #107213**
- **PR #107217**
- **PR #107173**
- **PR #107204**
- **PR #107231**
- **PR #107200** Related #107183.
- **PR #106069** Related #106014. Thanks @krissding and @jalfaro2876.
- **PR #107181**
- **PR #107212**
- **PR #107208**
- **PR #107233**
- **PR #107235**
- **PR #107050** Related #105512.
- **PR #107198**
- **PR #107241**
- **PR #107232**
- **PR #103918** Thanks @mmaps and @pgondhi987.
- **PR #107245**
- **PR #107167**
- **PR #106479** Related #105530. Thanks @ml12580 and @mnowrot.
- **PR #107162** Related #107112.
- **PR #107247**
- **PR #103914** Thanks @mmaps and @pgondhi987.
- **PR #107249**
- **PR #107254**
- **PR #107259**
- **PR #107258** Thanks @pgondhi987.
- **PR #107270**
- **PR #107166** Related #107153.
- **PR #107242**
- **PR #107264**
- **PR #107260**
- **PR #107271**
- **PR #107252**
- **PR #107284**
- **PR #107009** Related #104804.
- **PR #107286**
- **PR #107275**
- **PR #107253**
- **PR #107287**
- **PR #107282**
- **PR #107122** Thanks @wahaha1223.
- **PR #107291**
- **PR #107214**
- **PR #107293**
- **PR #107296**
- **PR #107298**
- **PR #107307**
- **PR #107301**
- **PR #107272**
- **PR #101253** Thanks @RomneyDa.
- **PR #106178** Thanks @QiuYuang and @Monkey-wusky and @maweibin.
- **PR #107312**
- **PR #107310**
- **PR #107297**
- **PR #107025**
- **PR #107319**
- **PR #107236** Thanks @SL4N.
- **PR #107321**
- **PR #107326**
- **PR #107328**
- **PR #107331**
- **PR #107238** Related #106875. Thanks @SL4N and @dr00-eth.
- **PR #107316**
- **PR #106498** Thanks @hugenshen.
- **PR #107332**
- **PR #99404** Thanks @snowzlmbot.
- **PR #107193**
- **PR #102271** Thanks @RomneyDa.
- **PR #107340**
- **PR #107342**
- **PR #105001** Thanks @zhangguiping-xydt.
- **PR #107345**
- **PR #107338**
- **PR #107311**
- **PR #105883** Thanks @Alix-007.
- **PR #107353**
- **PR #107351**
- **PR #107337**
- **PR #107354**
- **PR #107357**
- **PR #107349** Related #107313.
- **PR #107288** Related #107246. Thanks @obviyus.
- **PR #107358** Thanks @fuller-stack-dev.
- **PR #107370**
- **PR #107361** Related #107335.
- **PR #107188** Thanks @joshavant.
- **PR #107379**
- **PR #107380**
- **PR #107383**
- **PR #106997**
- **PR #107385**
- **PR #107387**
- **PR #107336** Related #107318.
- **PR #107390**
- **PR #107339** Related #107322. Thanks @obviyus.
- **PR #107392**
- **PR #107382**
- **PR #107396**
- **PR #107356**
- **PR #107371**
- **PR #107398**
- **PR #107395**
- **PR #107400**
- **PR #107377**
- **PR #107381**
- **PR #107373**
- **PR #107365** Thanks @ly-wang19.
- **PR #107407**
- **PR #107386** Thanks @hugenshen.
- **PR #107405**
- **PR #107410** Related #107406.
- **PR #107409** Related #22676. Thanks @ZHOUKAILIAN and @UberKitten.
- **PR #107360** Thanks @Alix-007.
- **PR #107412**
- **PR #107414**
- **PR #107348**
- **PR #107417**
- **PR #107420**
- **PR #107421**
- **PR #106359** Related #106229. Thanks @obviyus.
- **PR #107427**
- **PR #107428**
- **PR #107431**
- **PR #107432**
- **PR #107435**
- **PR #107438**
- **PR #107436**
- **PR #107440**
- **PR #107443**
- **PR #107445**
- **PR #107411**
- **PR #107444**
- **PR #107372**
- **PR #99051** Related #98805.
- **PR #107403** Related #104984. Thanks @obviyus and @yetval.
- **PR #107455**
- **PR #107456**
- **PR #107457**
- **PR #107424**
- **PR #107460**
- **PR #107458**
- **PR #107459**
- **PR #105886** Thanks @Alix-007.
- **PR #107462** Thanks @vincentkoc.
- **PR #107470**
- **PR #107472**
- **PR #107475**
- **PR #107476**
- **PR #107483**
- **PR #107474** Thanks @lonexreb.
- **PR #107485**
- **PR #107402**
- **PR #107540**
- **PR #107542**
- **PR #107477**
- **PR #107545**
- **PR #107548**
- **PR #104216** Thanks @zhangguiping-xydt.
- **PR #107553**
- **PR #107554**
- **PR #107560**
- **PR #107567**
- **PR #107569**
- **PR #107563**
- **PR #107570**
- **PR #107369** Thanks @pash-openai.
- **PR #107572**
- **PR #107576**
- **PR #107578**
- **PR #106066** Thanks @zhangguiping-xydt.
- **PR #107451**
- **PR #107043**
- **PR #102068** Related #101789. Thanks @tzy-17 and @jwest75674.
- **PR #107583**
- **PR #107584**
- **PR #107585**
- **PR #107561**
- **PR #107422** Related #103309. Thanks @arduano.
- **PR #102114** Thanks @wm0018.
- **PR #107594**
- **PR #89821** Thanks @BunsDev.
- **PR #107602**
- **PR #107481**
- **PR #107573**
- **PR #107599**
- **PR #107612**
- **PR #107419**
- **PR #106035** Thanks @Alix-007.
- **PR #107618**
- **PR #107621**
- **PR #78022** Thanks @fransqaas.
- **PR #107613**
- **PR #107577** Related #107216.
- **PR #107229** Thanks @fuller-stack-dev.
- **PR #107606**
- **PR #107637**
- **PR #107640**
- **PR #107144** Thanks @SunnyShu0925.
- **PR #107636**
- **PR #107234** Thanks @wahaha1223 and @cursoragent.
- **PR #104708** Related #102391. Thanks @VACInc and @yetval.
- **PR #107652**
- **PR #107315**
- **PR #107654**
- **PR #107263** Thanks @wahaha1223.
- **PR #107646**
- **PR #107364** Related #107289.
- **PR #107243** Related #107133. Thanks @felirami and @Tony-ooo.
- **PR #107191** Thanks @qingminglong.
- **PR #107653**
- **PR #107625** Related #107624.
- **PR #107616**
- **PR #107143** Thanks @SunnyShu0925.
- **PR #107665**
- **PR #107675**
- **PR #107678**
- **PR #107598**
- **PR #107674** Related #107669.
- **PR #104120** Thanks @Alix-007.
- **PR #107689**
- **PR #102197** Thanks @jesse-merhi.
- **PR #107690** Thanks @shakkernerd.
- **PR #107695**
- **PR #107696**
- **PR #107677**
- **PR #107692**
- **PR #107631**
- **PR #107680**
- **PR #107705**
- **PR #107320**
- **PR #107706**
- **PR #107673**
- **PR #107709**
- **PR #107711**
- **PR #107710** Thanks @shakkernerd.
- **PR #107714**
- **PR #107715**
- **PR #107716**
- **PR #107724**
- **PR #107726**
- **PR #107697** Related #107685.
- **PR #106258** Related #106249. Thanks @moguangyu5-design.
- **PR #107730**
- **PR #107723**
- **PR #107728**
- **PR #94494** Related #94482. Thanks @xialonglee and @aaronedell.
- **PR #107733**
- **PR #107670** Related #104294.
- **PR #99394** Related #97074. Thanks @xialonglee and @Lvan185.
- **PR #107737**
- **PR #107747**
- **PR #106959**
- **PR #107764**
- **PR #107740**
- **PR #107772**
### Release verification
- npm package: https://www.npmjs.com/package/openclaw/v/2026.7.2-beta.1
- registry tarball: https://registry.npmjs.org/openclaw/-/openclaw-2026.7.2-beta.1.tgz
- integrity: `sha512-NjbyDqyUq96MR31fqWcJS7iILAx5iJ6CB4SrFR8E9eLTKnYAgSCuBe4pNGX23pzAHp7Vz9FldN1kuUDpkWZfiQ==`
- release SHA: `a911e58a57268b1daf30a1d29d70aedccf736832`
- full release CI report: https://github.com/openclaw/releases/blob/main/evidence/2026.7.2-beta.1/release-evidence.md
- release publish: https://github.com/openclaw/openclaw/actions/runs/29445434689
- npm preflight: https://github.com/openclaw/openclaw/actions/runs/29384146003
- full release validation: https://github.com/openclaw/openclaw/actions/runs/29384023529
- plugin npm publish: https://github.com/openclaw/openclaw/actions/runs/29446052579
- plugin ClawHub publish: no normal OIDC candidates
- plugin ClawHub bootstrap: not needed
- npm Telegram beta E2E: https://github.com/openclaw/openclaw/actions/runs/29396156346
## 2026.7.1
### 亮点
- **新模型与提供商:** 新增 Featherless、Claude Sonnet 5、Mythos 5、Meta Muse Spark 1.1 及 ClawRouter;将 GPT-5.6 设为全新安装的默认模型,为 Sol 和 Terra 启用 `/think ultra`,为 Luna 启用 `max`,尊重 Z.AI 的 `max` 设置,并在 OAuth 续期后刷新模型可用性。(#101092, #98254, #101238, #102873, #103070, #103163, #99658, #99759, #98333, #103581, #98021, #104778, #102289)感谢 @vincentkoc、@vortexopenclaw、@HamidShojanazeri、@davemorin、@Solvely-Colin、@jalehman、@steipete-oai、@bdjben、@obviyus、@sallyom、@anyech、@100yenadmin 及 @fuller-stack-dev。
- **控制界面与原生 macOS 聊天:** 将会话设为主要视图,采用最小化可搜索侧边栏、紧凑上下文环、推理努力度滑块、更简洁的仪表盘框架,以及原生 macOS 会话浏览器,支持模型与思考模式选择、斜杠命令、对话导出和上下文使用量显示。(#99289, #99838, #100386, #101103, #101497)
- **对话式引导流程:** Crestodian 现在在 CLI、Web 安装和 macOS 应用中运行真正的代理循环设置,包括 AI 引导的提供商配置、绑定到精确操作的模型审批、掩码凭证提示,以及无可用模型时的确定性回退。(#99935, #100029, #100656, #101887)感谢 @fuller-stack-dev。
- **离线与语音移动聊天:** iOS 和 Android 现在可在离线时预绘制每个网关的会话和对话缓存;Apple Watch 获得完整语音交互,iOS 可通过配置的 Gateway TTS 朗读回复,并支持设备端回退。(#100219, #100227, #100283, #100770, #100771)
- **会话组织与自动标题:** 通过工具模型路由生成简洁的会话标题,新增基于网关的分组、未读状态、重命名、分支、归档和删除控制,并在 Web、iOS 和 Android 上提供分组管理。(#87643, #100814, #101117, #101234)感谢 @zhangguiping-xydt 和 @Juliangsm。
- **Telegram 与 Codex 连续性:** 通过私密 `/login` 配对 Codex,使用 `/steer` 和 `/tell` 控制运行中的任务,在对话确认缺失时保留消息,安全采用持久轮次,并在 Telegram 格式化和洪流等待失败后恢复最终发送。(#98006, #98126, #98786, #103664, #103916)感谢 @100yenadmin、@Kyzcreig、@obviyus 和 @jalehman。
- **启动与升级恢复:** 在 Gateway 就绪前运行容器迁移,阻止可恢复的遗留状态阻塞启动,并在多次非正常启动后进入控制平面安全模式,而非反复重启。(#101881, #104529)修复 #98565。感谢 @sallyom、@jacobtomlinson、@bdjben、@obviyus 和 @shakkernerd。
### 变更
- **Meta 提供商:** 新增捆绑的 `muse-spark-1.1` Responses API 支持,包含流式传输、工具调用、加密推理回放、引导流程、精确模型实时验证,以及作为 `@openclaw/meta-provider` 的独立 npm/ClawHub 发行版。(#102873, #103070, #103163)感谢 @HamidShojanazeri、@davemorin、@Solvely-Colin、@jalehman 和 @vincentkoc。
- **Android 聊天代理选择器:** 在实时聊天屏幕上直接切换活动代理,同时保持聊天、对话模式和主页画布在同一规范会话中。(#80422)感谢 @bcperry 和 @joshavant。
- **Gateway 主机状态:** 在控制界面设置中显示已连接 Gateway 的主机、网络地址、操作系统、运行时间、CPU、内存和磁盘详情。(#100478)
- **Gateway 崩溃循环恢复:** 持久化启动结果,在多次非正常启动后进入控制平面安全模式,暂缓传输和提供商激活直至恢复,并对致命配置错误退出 `EX_CONFIG`,使 systemd 和 launchd 停止反复重启。感谢 @obviyus。
- **iOS 离线聊天:** 从受保护的、按网关限定的缓存中预绘制最近的会话和规范对话,离线时保持发送禁用,并在配对重置时清除缓存的对话文本。(#100219)
- **Slack 进度指示器:** 默认使用 Slack 原生的助手线程状态和轮转加载消息,同时保持确认反应静态;生命周期反应更新现在需要 `messages.statusReactions.enabled: true`。
- **控制界面对话控制:** 将语音、模型、灵敏度及其他实时默认设置保留在 设置 → 通讯 → 对话 中,并使用编辑器麦克风图标选择任何浏览器音频输入。(#101046)
- **Cron 模型选择:** 在控制界面快速创建中选择代理轮次模型,并在 cron 任务行和详情中显示已配置或默认模型。(#95341)感谢 @ly85206559。
- **控制界面 GitHub 预览:** 在悬停和键盘聚焦卡片中显示 issue 和 PR 的状态、标题、作者、活动、评论及变更统计。(#100434)
- **日志手册工作日志:** 新增默认禁用的捆绑插件,将配对节点的屏幕截图转换为私密时间线、每日站会和基于时间线的问答,显示在插件贡献的控制界面标签页中。(#99930)
- **控制界面消息上下文:** 通过悬停或点击时间戳显示每条消息的 token、上下文和模型详情,而非显示单独的“上下文”按钮。
- **控制界面会话标题:** 显示截断的近期会话名称,并带有减少动效安全的悬停动画。
- **控制界面侧边栏导航:** 显示一个小型可定制的固定目标集合,其余页面置于“更多”下,将设置移至页脚,并在浏览器中持久化侧边栏自定义。(#100296)感谢 @vincentkoc。
- **控制界面侧边栏用量:** 从展开的侧边栏中移除提供商用量配额行,同时保留聊天编辑器和用量页面中的用量详情。感谢 @shakkernerd。
- **Android 聊天代码高亮:** 渲染 fenced 的 Kotlin、Swift、TypeScript、JavaScript、Python、Bash 和 JSON 代码块,使用有限制的、主题感知的语法颜色,同时对未知、部分或过大的代码块保持纯文本渲染。(#100217)
- **Gateway TTS 播放:** 新增操作符作用域的 `tts.speak` RPC,返回配置提供商的语音作为内联整段音频,供远程客户端使用。(#100770)
- **控制界面上下文用量:** 当聊天上下文环打开时,显示上下文窗口进度、最近运行的输入/输出 token 以及当前活动模型。
- **Apple Watch 语音轮次:** 从 Watch 聊天界面口述消息,并在 Watch 上听到新的 OpenClaw 回复语音,配有明确的静音和停止说话控制。(#100224)感谢 @vincentkoc。
- **对话式引导流程:** 在 CLI、Gateway、Web 安装和 macOS 应用中新增真正的代理循环 Crestodian 设置流程,具备类型化操作、精确审批绑定、掩码凭证提示、隔离的会话对话以及安全交接给常规代理。感谢 @vincentkoc。
- **生成的会话标题:** 根据第一条消息为新的控制界面会话命名,并添加默认/每代理的 `utilityModel` 路由,用于更低成本的会话、主题和线程标题生成。感谢 @Juliangsm、@zhangguiping-xydt 和 @vincentkoc。
- **ClawRouter 路由与配额:** 新增捆绑的 ClawRouter 提供商插件,具备凭据作用域的动态模型发现、OpenAI 兼容及原生 Anthropic/Gemini 传输,以及跨 OpenClaw 用量表面的管理预算报告。(#99658)
- **模型与提供商覆盖:** 新增 GPT-5.6 支持,使用 Nemotron Super 的 100 万上下文窗口,并保留显式的 OpenRouter 认证头。(#98333, #98726, #98187)感谢 @steipete-oai、@eleqtrizit、@sunlit-deng、@laurencebrown 和 @shakkernerd。
- **CLI 与节点工作流:** 新增 `openclaw attach`、节点上下文路径支持、可操作的设备审批恢复指南、提示元数据变化时的软恢复 CLI 会话,以及更清晰的插件安装退出诊断。(#96454, #97679, #98115, #98146, #98497, #99822)感谢 @anagnorisis2peripeteia、@obviyus、@wm0018、@welfo-beo、@RomneyDa、@Sanjays2402 和 @vincentkoc。
- **Cron 与用量:** 新增退出触发的调度、分离的会话目标运行,以及飞行中任务医生警告,同时使现有用量页脚在 Telegram 上更易换行。(#92037, #98755, #98620, #92877)感谢 @anagnorisis2peripeteia、@obviyus、@EthanSK、@masatohoshino、@Marvinthebored 和 @vincentkoc。
- **原生应用与本地化:** 现代化 iOS 展示、聊天、对话、引导和重连流程;新增 Gateway 语音提供商;改进二维码引导和协议恢复;从 macOS 安装本地 Gateway;本地化核心 Apple 和 Android 界面;新增瑞典语移动本地化。(#98452, #98736, #99243, #98376, #98302, #98385, #99767, #97110, #97111, #97112, #97113, #98043)感谢 @jcooley8、@Tony-ooo、@joelnishanth、@cursoragent、@joshavant、@vincentkoc 和 @yeager。
- **消息功能:** 新增原生 iMessage 投票、Telegram Codex 配对与引导、Telegram 多通道进度摘要,以及 Signal 目标别名。(#98421, #98006, #98126, #98907, #95738)感谢 @omarshahine、@lobster、@100yenadmin、@Kyzcreig、@Marvinthebored 和 @jesse-merhi。
- **本地推理与聊天控制:** 自动发现 Ollama 推理节点,新增控制界面会话优先导航、推理控制和命令选择,并确保当延迟工具搜索选择了错误工具族时,OpenClaw 控制工具仍可用。(#99234, #99289, #99426, #99838, #99561)感谢 @100yenadmin、@joshavant、@VicZhang6、@Solvely-Colin 和 @vincentkoc。
- **诊断与检查:** 暴露认证配置文件、工作区、设备配对、通道插件、内存提供商、systemd 资源耗尽以及 Windows LAN 防火墙的检查结果。(#97125, #97358, #97366, #97496, #97968, #98291, #98666)感谢 @giodl73-repo、@masatohoshino 和 @joshavant。
- **策略修复预览:** 在 `doctor --fix` 期间显示需要审查的 Gateway 绑定和被拒绝的节点命令变更,但不应用它们,也不将其计为已修复。(#99776)感谢 @giodl73-repo。
- **对话与审查控制:** 准备作用域化的对话能力配置文件,并新增 Cursor Agent 作为自动审查引擎。(#98536, #97348)感谢 @hxy91819。
### 修复
- **Codex 运行时切换:** 接受捆绑的 Codex 运行时用于 `codex/*` 和 `openai/*` 模型路由,同时拒绝不支持的提供商/运行时对。(#103762)
- **LM Studio 与 xAI 修复工具调用:** 在提升序列化纯文本工具调用时,在完成前发出终端工具调用事件,为消费者保留完整的流式生命周期。
- **Node 24 上的浏览器操作:** 将浏览器请求取消绑定到客户端和响应生命周期,而非 Node 24.16+ 中过早中止的 body-stream 信号,防止有效的 POST 操作在 JSON 解析后失败。感谢 @obviyus 和 @vincentkoc。
- **SecretRef 模型凭据:** 将通过认证存储、流设置、SDK 配置以及托管本地提供商探测保留的提供商密钥置于进程本地哨兵之后,仅在最终的网络或提供商插件边界注入明文,同时保留精确值的日志隐藏。(#102008, #102009)
- **Telegram token 隐藏:** 即使日志传输将 token 分割成多个块,也隐藏机器人 token,防止碎片化凭据从结构化和流式日志中泄露。(#103861)感谢 @vincentkoc。
- **Telegram 持久轮次采用:** 仅在持久代理采用后完成堆积的更新,将已采用的轮次从入口回复 fence 中分离,并抑制被取代的回复,以便恢复不会泄露过期或重复的响应。(#103664, #103952, #103965)感谢 @obviyus 和 @vincentkoc。
- **任务投递恢复:** 在恢复任务记录时规范化遗留的投递状态,使旧的排队任务变为可运行,而非中止注册表恢复。(#103946)修复 #103168。感谢 @bek91、@theo674 和 @obviyus。
- **诊断提供商证据:** 为每次完成或失败的模型调用发出一个去重的 `provider.request` 时间线事件,以便选择加入的时间线能够证明真实的提供商流量,而不会重复计算终端路径。修复 #103063。感谢 @vincentkoc。
- **精益本地模型 shell 访问:** 将 `exec` 直接可见地置于默认的结构化工具搜索控件旁,使面向编码的本地模型能够使用其 shell 回退,而非搜索缺失的领域工具。(#101607)感谢 @vincentkoc 和 @maweibin。
- **OAuth 刷新竞争诊断:** 将本地锁定路径排除在面向用户的刷新失败之外,并避免重复失败前缀,同时保留结构化的提供商和配置文件分类。(#101573)感谢 @vincentkoc。
- **执行审批提示:** 将后台禁用的回退警告排除在待处理的网关/节点审批之外,仅在命令实际在前台运行时才显示它们。(#101561)感谢 @vincentkoc。
- **直接轮询投递:** 通过所属的出站适配器路由直接和混合通道轮询,同时保留网关模式路由和通道选项检查。(#99950)感谢 @NianJiuZst 和 @shakkernerd。
- **代理等待硬超时快照:** 当外部 `agent.wait` 计时器在重试宽限竞赛中获胜时,保留规范的硬超时阶段和时间戳,同时使队列、排空和重启取消等待可纠正。(#89367)感谢 @Pick-cat 和 @sunnydongbo。
- **控制界面类型化审批:** 在代理运行被阻塞时,立即通过授权的 Gateway 命令路径发送 `/approve` 命令,而非将其排队在该运行之后。(#101532)感谢 @vincentkoc。
- **Microsoft Teams Graph 响应边界:** 限制成功的文件上传和聊天 JSON 读取,防止过大的 Microsoft Graph 响应无限制缓冲。(#97784)感谢 @Alix-007。
- **打包的语音运行时:** 停止将包支持的 `speech-core` 视为捆绑插件 sidecar,在 npm 安装中恢复 TTS 启动,同时发布检查确保真正的激活旁路外观保持包完整。(#89899, #89425)感谢 @zhangguiping-xydt、@ant1b0t 和 @vincentkoc。
- **容器镜像升级:** 在重用挂载状态时,在 Gateway 就绪前运行版本化状态迁移和插件收敛,失败时提供 `doctor --fix` 恢复指导,而非提供半升级状态。(#101881)修复 #98565。感谢 @sallyom、@jacobtomlinson 和 @shakkernerd。
- **插件更新可靠性:** 在核心更新期间,保留已通过 ClawHub 成功切换的插件,而非对它们进行第二次处理,并在冗余的瞬态失败后禁用它们。(#105405)感谢 @vincentkoc。
- **Codex 应用服务器协议:** 要求 app-server 0.143 或更高版本,移除前 0.142 的线格式兼容性,将已退役的 `on-failure` 审批设置迁移到 Codex 配置和已保存绑定中的 `on-request`,教会 Codex 通过 `tool_search` 检索延迟的原生 `spawn_agent`,以便原生子代理任务镜像能够在支持搜索的模型上工作,并将托管运行时更新到 0.144.1 以提高代码模式主机安装和缺失主机回退的可靠性。感谢 @vincentkoc。
- **Android 硬件键盘聊天:** 在物理键盘上使用未修改的 Enter 发送,同时保留 Shift+Enter 及其他修改的 Enter 组合用于多行输入。(#101239)感谢 @3ninyt3nin-creator 和 @vincentkoc。
- **CJK Markdown 强调:** 渲染相邻的中文、日文和韩文强调标点符号时,通过共享的 Markdown 管道处理,而非跨通道泄露字面标记。(#101230, #101120)感谢 @nicknmorty 和 @j08577600-jpg。
- **备份重试清理:** 在实时写入失败后关闭部分归档输出句柄并隔离每个重试路径,防止 Windows `EBUSY` 锁跨尝试级联或留下过期的临时归档。(#101449, #101464)感谢 @ZOOWH、@LiLan0125、@vincentkoc、@aniruddhaadak80、@shakkernerd 和 @obviyus。
- **Codex 生成的原生子代理:** 保持父应用服务器订阅和共享客户端存活,直到生成的子代理完成投递稳定,防止丢失唤醒和泄露的一次性清理。感谢 @vincentkoc。
- **投递恢复节奏:** 在网关启动后,对符合条件的出站和重启延续重放进行节奏控制,以便停机积压不会爆发到通道速率限制,同时保留挂钟恢复预算。(#101118, #101058)感谢 @ZengWen-DT、@aniruddhaadak80 和 @vincentkoc。
- **出站预连接恢复:** 当连接或 DNS 失败证明未发送请求时,原子性地清除过期的平台发送证据,允许排队的 Discord 及其他通道消息在连接恢复后重放,同时不削弱未知发送的重复保护。(#101024, #100979)感谢 @SunnyShu0925 和 @tiffanychum。
- **Discord 流式最终消息:** 将完成回复作为新消息发送,使非活跃通道变为未读,同时保留定向提及而不升级 `@everyone` 或 `@here`。(#99711, #99662)感谢 @davelutztx 和 @xena68。
- **OpenAI 兼容的 SSE 解析:** 识别被误标为 JSON 的事件流,而不在其前面添加第二个 `data:` 前缀,保留来自不合规提供商的有效流式响应。(#96503)感谢 @ZengWen-DT 和 @54meteor。
- **Meta 模型 API 合约:** 使用当前 Meta 端点和输出 token 字段,使 `muse-spark-1.1` 验证和实时请求与提供商合约匹配。(#103680)修复 #103667。感谢 @vincentkoc、@HamidShojanazeri、@davemorin、@Solvely-Colin 和 @jalehman。
- **LM Studio 嵌入预加载:** 在预加载嵌入模型时,遵循模型和提供商的上下文窗口限制,防止可避免的 GPU 内存不足失败。(#100750)感谢 @zak-li、@ZOOWH 和 @hxz398。
- **提供商过载消息:** 当提供商未提供明确的重试详情时,将限速响应分类为可重试和回退行为,同时使用过载措辞。(#98165)感谢 @SunnyShu0925。
- **Microsoft Teams 附件元数据:** 限制 Bot Framework `attachmentInfo` JSON 读取,并在过大的流耗尽 Gateway 内存之前取消它们。(#99125)感谢 @ly85206559。
- **代理认证复制顺序:** 在将凭据复制到新代理时,保留源代理的可移植认证配置文件优先级,同时排除跳过的配置文件和瞬态认证状态。(#100833)感谢 @machine3at。
- **内存会话修复:** 将日常梦境摄取簿记排除在会话语料审计和修复之外,以便 `memory status --fix` 保留健康的日常状态。(#93389)感谢 @Alix-007 和 @vincentkoc。
- **远程浏览器 CDP 策略:** 允许配置的 CDP 控制主机通过现有的主机名白名单,而不扩大页面导航策略,同时将严格策略发现绑定到配置的控制权限。(#100986, #100819)感谢 @NianJiuZst、@SarinV 和 @vincentkoc。
- **配置未设置诊断:** 当继承或默认的配置值无法取消设置时,解释原因,而非报告误导性的成功删除。(#96557)感谢 @moeghashim。
- **Crestodian 命令探测:** 包含 stdout 和 stderr 流失败,同时保持子进程关闭和生成错误的权威性,防止未处理的探测崩溃。(#100741)感谢 @lsr911。
- **飞书提及转发:** 当机器人 Open ID 不可用时,失败关闭,防止群消息被错误分类为显式的机器人提及。(#100891)感谢 @zhangguiping-xydt。
- **Cron 编辑投递:** 在应用部分投递更新时,保留每个作业的隐式投递模式,以便禁用尽力投递不再关闭分离的作业公告。(#100846)感谢 @machine3at 和 @vincentkoc。
- **控制界面会话创建:** 在选择另一个会话后,保持新创建的会话位于稳定侧边栏顺序的前端。感谢 @shakkernerd。
- **控制界面文件预览:** 通过缓存、屏幕外包含的文本块保持大型 Skill Workshop 文件响应,同时保留换行内容、稳定的文件切换、全文件复制和清晰的焦点行为。(#101319)感谢 @xianshishan、@shakkernerd 和 @vincentkoc。
- **仅 FTS 内存启动:** 当 `memorySearch.provider` 显式为 `none` 时,跳过插件能力发现,避免不必要的冷启动扫描。
- **控制界面代理模型标签:** 在默认选择器选项中显示每个选定代理的有效模型,而非全局模型。(#100719, #77440)感谢 @hyspacex 和 @jwong-art。
- **控制界面入站图片预览:** 在聊天历史重新加载后,通过认证票据路由渲染规范的入站媒体引用。(#100725, #89591)感谢 @sweetcornna、@vergissberlin 和 @shakkernerd。
- **小上下文压缩:** 根据已知模型上下文窗口限制有效保留,使小型本地模型不会从第一个 token 就开始压缩。(#100621)感谢 @vincentkoc。
- **无详细信息提供商失败:** 防止不透明的上游失败冷却 API 密钥认证配置文件,同时保留 WHAM 支持的 OpenAI OAuth 健康检查和配置的模型回退。(#100617)感谢 @fabasi、@fengjikui 和 @vincentkoc。
- **插件安装诊断:** 仅在钩子清单缺失时,抑制插件安装失败后的误导性钩子包回退,同时保留可操作的格式错误钩子包错误。(#100554)感谢 @vincentkoc 和 @obviyus。
- **配置验证诊断:** 每个配置路径仅发出一次未更改的清理验证警告负载,在干净验证后重置去重,并在瞬态无效读取和失败刷新期间保留警告指纹。(#100569, #25574)感谢 @vincentkoc 和 @mcaxtr。
- **配置大小下降保护:** 将写入与规范字节进行比较,用于可解析的对象配置,而非原始 BOM 和缩进开销,同时保留原始审计遥测和保守的格式错误输入回退。(#100591, #71865)感谢 @vincentkoc 和 @balric-seo。
- **控制界面合并更新:** 当更新加入已经运行的 Gateway 重启时,显示清晰的排队重启完成横幅。(#93082)感谢 @goutamadwant 和 @motacola。
- **控制界面连接错误:** 保留结构化的配对和认证失败信息,用于待处理的 RPC 调用方,同时保持通用断开行为不变。(#54758)感谢 @ruanrrn。
- **iOS 嵌入式终端:** 在原生 Gateway 认证连接时,直接打开仅终端的控制界面,而非暴露 Web UI 登录屏幕。
- **TUI 启动状态:** 在连接后初始化期间显示 `starting up`,而不覆盖运行中或重连状态。(#93999)感谢 @ml12580 和 @sanjarcode。
- **控制界面重启恢复:** 在 Gateway 更新或重启后,通过有限的全文档刷新恢复过期的捆绑页面。(#99111)感谢 @ZengWen-DT 和 @ITOrity。
- **TUI 活动网关端口:** 当未配置显式 URL、端口或远程目标时,遵循已验证的活动本地网关端口。(#73338, #42461)感谢 @haishmg、@vincentkoc 和 @jackm1688。
- **Apple 聊天运行恢复:** 在重连、前台恢复和事件间隙后,从规范的 Gateway 历史中恢复活动响应,同时保留网关用户轮次身份,防止 Codex 和 Copilot 对话镜像中出现重复行。(#100277)
- **Claude CLI 流式回复:** 当 Claude CLI 的终端结果信封为空时,保留已接收的助手文本,防止在完整的流式回答后出现错误的空响应故障转移。(#90450)感谢 @totobusnello。
- **电话号码标准化:** 规范化多余的正号,保留非电话的 iMessage 句柄,并在共享通道路由中拒绝无数字的 Signal 身份。(#100467)感谢 @morluto。
- **Tlon scry 响应边界:** 限制成功的 Urbit scry JSON 读取,并取消过大的流,而非缓冲无界的对等响应。(#100376)感谢 @hugenshen。
- **源码构建可移植性:** 保持 tsdown 配置自包含,使构建不依赖从 unrun 的临时模块目录解析 tsdown 包。感谢 @vincentkoc。
- **代理工具调用解码:** 将代理范围数值 HTML 实体保留为字面文本,同时仍解码有效的补充平面值,防止格式错误的模型输出向工具参数注入孤立的 UTF-16 代理对。(#99564)感谢 @mikasa0818、@vincentkoc、@shakkernerd 和 @maweibin。
- **Gateway 事件分发:** 捕获并记录惰性订阅者设置和处理程序失败,而非泄露未处理的 Promise 拒绝。(#100401)感谢 @cxbAsDev。
- **Ollama 回退路由:** 通过 Ollama 提供商钩子分类不完整的原生流,以便配置的模型回退可以推进。(#100482)感谢 @TurboTheTurtle、@8kfcf95jvp-oss 和 @vincentkoc。
- **差异渲染:** 从单个 SSR 预加载渲染查看器和图像输出,通过 hydration 保留语言包高亮,不区分大小写地规范化语言提示,跳过相同的前后输入并显式返回 `changed` 结果,报告真实的文件渲染和输入错误,缓存哈希固定的查看器运行时,并优先使用规范文件设置而非过期的别名。(#100487)感谢 @vincentkoc。
- **远程浏览器可靠性:** 通过现有远程 CDP 超时预算限制持久的 Playwright 标签枚举,并淘汰超时的连接尝试,使迟到的完成不能恢复卡住的连接。(#80147, #58968)感谢 @HemantSudarshan 和 @KeaneYan。
- **浏览器附件下载:** 当直接的 Playwright 导航启动附件下载时,返回托管的 URL、文件名和路径元数据,同时在保存字节前验证最终 URL,并保留单一所有者的显式下载。(#48045, #89416)感谢 @zhangguiping-xydt 和 @roinou532。
- **浏览器操作下载:** 当代理操作触发下载时,返回托管的 URL、文件名和路径元数据,同时保留显式所有权,在保存字节前验证最终 URL,并将策略拒绝的标签页隔离而不关闭它们。(#93250, #93307)感谢 @sunlit-deng 和 @scorpiord。
- **托管浏览器 Cookie 持久化:** 使用非交互式加密密钥初始化新的隔离 macOS 无头配置文件,同时保留现有配置文件密钥,并通过 CDP 关闭 Chromium,然后进行有界信号回退,使持久登录在优雅的浏览器和 Gateway 重启后存活。(#96704, #98284)感谢 @TurboTheTurtle 和 @shakkernerd。
- **MCP OAuth 响应边界:** 拒绝无体的外部错误体,不调用其本质上无界的 `text()` 回退,同时保留 HTTP 状态和头部,用于安全的 SDK 诊断。(#98143)感谢 @Pick-cat、@wangmiao0668000666 和 @vincentkoc。
- **Tlon 图片上传边界:** 在上传前限制远程图片获取,并对过大或停滞的响应失败关闭,而非无限制地缓冲它们。(#100374)感谢 @hugenshen。
- **控制界面审批提示:** 防止过期的解决失败和忙状态清理泄露到更新的审批或 Gateway 重连中。(#98394)感谢 @haruaiclone-droid。
- **macOS 服务 SecretRefs:** 当过期的 Gateway LaunchAgent 被修复或重新安装,且调用 shell 中没有这些变量时,保留仍在配置中的 SecretRefs 的生成 env 文件值。(#99124)感谢 @mushuiyu886 和 @1Wanker。
- **Anthropic OAuth 回调:** 保持提供商要求的 `localhost` 重定向 URI 稳定,同时允许本地回调监听器绑定显式的环回主机。(#96917)感谢 @xialonglee、@riazrahaman 和 @vincentkoc。
- **提示释放媒体投递:** 当嵌入式运行暂时释放其会话锁时,接受保留活动叶子状态的侧追加,使连续的消息工具媒体回复合并,而不会出现错误的会话接管失败。(#100490)感谢 @scotthuang 和 @vincentkoc。
- **控制界面技能过滤器:** 对齐代理和搜索控件,使用翻译后的标签,并保留原生复选框和单选按钮大小。(#100526)感谢 @evan-YM 和 @vincentkoc。
- **控制界面已完成运行状态:** 将活动和完成更新绑定到运行身份,使过期的完成保留“发送”可用,同时较新的运行保持活动。(#100527)感谢 @tiffanychum、@davidstoll 和 @shakkernerd。
- **控制界面上下文用量:** 将过期的缓存总计保留为近似值,不触发警告样式或压缩操作。(#89772)感谢 @bladin 和 @snsczssl。
- **控制界面文件预览:** 移除重复的 Escape 头部提示,同时保留关闭按钮快捷键提示和 Escape 行为。(#100528)感谢 @xianshishan 和 @vincentkoc。
- **控制界面自主工具失败:** 在后续的自主恢复轮次中,保留较早的工具错误结果。(#100514)感谢 @qingminglong 和 @yetval。
- **代理空回复:** 当完成的交互轮次没有可投递的回复(包括排队的后续消息)时,显示可见的失败,同时保留显式静默、待处理的延续和已提交的副作用,尊重排队发送策略,并将压缩通知视为进展。(#100456)感谢 @mushuiyu886 和 @grox2012。
- **子进程、维护与输出加固:** 防止子输出失败崩溃 exec 和 TUI 会话,隔离远程技能刷新和子代理扫描,暴露技能扫描和审批诊断,清理 ANSI 和杂散参数标记而不丢失可见文本,并在设备丢失时干净地停止 Android 音频捕获。(#100440)感谢 @cxbAsDev、@wendy-chsy、@tzy-17、@nankingjing、@NianJiuZst、@LavyaTandel 和 @maweibin。
- **Docker 沙箱命令输出:** 当 stdout/stderr 捕获中断时,失败并终止 Docker 沙箱操作,而非返回成功但不完整输出。(#100523)感谢 @cxbAsDev 和 @vincentkoc。
- **Android 按键通话生命周期:** 将网关 PTT 准备与应用前台和手动麦克风所有权序列化,使延迟工作不能重启、替换或拆除较新的捕获。(#100552)感谢 @xialonglee。
- **精益本地模型工具:** 从精益代理界面中修剪媒体生成、TTS 和 PDF 工具,同时保留显式配置和运行时选择加入。(#88881)感谢 @vincentkoc。
- **iOS 开发应用身份:** 保持开发应用标记为 OpenClaw,同时使用其不同的调试图标以区别于发布版本。
- **Android 聊天恢复:** 在重连和序列间隙历史快照追赶时,保留乐观的用户消息和本地拥有的运行,防止已发送的消息消失或过期的运行夺取所有权。(#100197)
- **iOS QR 网关交接:** 在交付扫描的设置码之前停止 VisionKit,并将延迟的认证、审批、Watch 和前台节点工作绑定到其原始网关,跨重连保持。(#99572)感谢 @PollyBot13。
- **代理终端失败:** 当代理运行结束但无可见输出时,显示安全交互回复,同时保留已完成的消息工具投递和心跳特定指导。(#99304)感谢 @moeedahmed 和 @maweibin。
- **MCP 回环工具结果:** 通过 HTTP 工具调用保留模式有效的文本、图像和嵌入式资源内容,同时将格式错误或协议不兼容的块渲染为安全文本。(#100336)感谢 @tzy-17、@OpenClawKobian99、@vincentkoc、@shakkernerd 和 @maweibin。
- **控制界面工具结果图片:** 直接从 Gateway 历史渲染图像内容块,并使延迟发送滚动 E2E 设置确定。(#100295)感谢 @lzyyzznl、@Pandah97、@rquinones84 和 @maweibin。
- **控制界面实时工具排序:** 当浏览器和 Gateway 时间戳不一致时,保持助手流文本在其匹配的工具卡片之前。(#93184)感谢 @Pick-cat 和 @lileilei-camera。
- **IRC Unicode 消息:** 在 UTF-16 码点边界上分割出站 PRIVMSG 负载,使 emoji 不会被切割成孤立的代理对。(#96572)感谢 @WeeLi-009、@vincentkoc、@mushuiyu886 和 @cursoragent。
- **OpenAI 实时语音问候:** 防止服务器 VAD 在显式问候响应拥有该轮次时创建第二个出站问候,同时不禁用呼叫者中断。(#86285)感谢 @giodl73-repo 和 @jnikolaidis。
- **实时语音工具:** 在每个 OpenAI、Azure 和 Google 实时负载边界过滤格式错误的工具名称,同时保留提供商特定的有效名称。(#89175)感谢 @vincentkoc。
- **Discord 语音状态:** 将 Discord 错误 10065 视为正常断开状态,同时保留无关的 REST 失败。(#90969)感谢 @asock。
- **Discord 语音账号:** 按 Discord 账号隔离 `@discordjs/voice` 连接,并在网关就绪早于监听器注册时恢复自动加入。(#87530)感谢 @geekhuashan。
- **iOS Voice Wake 清理:** 在禁用非活动 Voice Wake 时,避免初始化麦克风音频管道,防止模拟器启动中止和不必要的音频设置。
- **可靠性边界情况:** 拒绝亚毫秒 cron 持续时间,保留生成提案中的换行符,规范化空白整数输入,及时失败嵌入式 LSP 启动,暴露持久化和内存关闭失败,保持 UTF-16 和插件包验证正确,传播 Android 取消,并延迟 Codex 中继注册表写入直到监听就绪。(#100399)感谢 @cxbAsDev、@snotty、@lin-hongkuan、@849261680、@qingminglong、@anyech、@masatohoshino、@Simon-XYDT、@xialonglee、@nankingjing、@609NFT 和 @vincentkoc。
- **语音通话完成状态:** 从完整保留的事件存储中解析最终确定的通话,跨越 Gateway、工具和 CLI 状态路径,同时保留活动通话查找性能。(#99797)感谢 @Darren2030、@NiTeCoMM-code 和 @maweibin。
- **代理停止恢复:** 防止延迟中止的提示在拆除后重新获取孤立的会话锁,使 `/stop` 将对话准备好用于下一轮次。
- **消息投递状态:** 报告失败和部分失败的尽力通道投递,而非返回成功形状的消息工具结果。(#99928)感谢 @masatohoshino。
- **WhatsApp 凭据恢复:** 在启动时从有效备份中恢复格式错误的主认证状态。(#99070)感谢 @LeonidasLux。
- **WhatsApp 引用回复:** 保留机器人撰写的出站引用元数据,使对这些消息的回复在 WhatsApp Desktop 中保持其回复气泡。(#94879)感谢 @Bartok9、@seikosantana 和 @vincentkoc。
- **WhatsApp 重连追赶:** 在有界的重连窗口内,承认最近错过的 Baileys `append` 消息,同时保留启动时的过期历史保护。(#80642)感谢 @VishalJ99。
- **WhatsApp 重启恢复:** 在登出或连接被替换的断开后,停止自动重启循环,直到账号重新连接。(#78511)感谢 @openperf 和 @rutherlesdev。
- **本地 Gateway CLI 认证:** 将回环 CLI token/密码调用排除在持久设备作用域之外,防止读探测在过时的配对基线后阻塞后续的写/管理命令。(#95997)感谢 @vincentkoc。
- **插件模块身份:** 当 jiti 转换插件条目时,保持 OpenClaw 包块在 Node 的原生模块图上,防止重复评估和类身份漂移。(#88384)感谢 @vincentkoc 和 @ScientificProgrammer。
- **Shell 补全修复:** 在 doctor 和更新修复期间生成仅核心的缓存,同时为引导流程和显式用户重建保留完整的插件命令补全。(#76235)感谢 @joshavant。
- **MCP 模式诊断:** 将 draft-2020-12 编译失败归因于外部 MCP 模式,使格式错误的模式产生可操作的设置错误。感谢 @vincentkoc。
- **Windows Scheduled Task 恢复:** 将干净的提前退出保留在现有的有界启动轮询内,仅当任务进程和 Gateway 监听器都不可见时回退。
- **iMessage 群组警告:** 当有效的群组发送者白名单可以允许群组时,抑制错误的“全部丢弃”启动警告,并将真正的空白名单配置指向正确的补救措施。(#100046)
- **控制界面移动端登录:** 在连接失败后保持 Gateway 恢复指导可见,使断开的网关在受限屏幕上安全滚动,并改善移动键盘和点击目标行为。(#100208)
- **TUI 流式传输:** 在实时 Gateway 和嵌入式 TUI 会话中渲染仅增量的助手事件,而非等待最终响应。(#83000)感谢 @flashosophy。
- **模型别名:** 在会话和聊天命令模型切换时,解析提供商限定的别名,防止提供商共享显示别名时发生冲突。(#100209)感谢 @sahilsatralkar、@david-r-jones、@shakkernerd 和 @vincentkoc。
- **TUI 新会话钩子:** 通过共享的 Gateway 生命周期创建 `/new` 会话,使命令和会话钩子在 Gateway 和嵌入式模式下都能接收到完整的父会话对话,同时防止在活动轮次期间滚动。(#100241, #49918)感谢 @BingqingLyu、@caopulan、@LonExplorer-coder 和 @vincentkoc。
- **TUI 中止诊断:** 在 Gateway 和本地 TUI 模式下,为中止的运行显示清理后的工具参数验证摘要,而不暴露原始模型参数。(#91002)感谢 @wsyjh8 和 @taerlandsen。
- **iOS Watch 回复:** 将排队的快速回复持久化到网关作用域的聊天发件箱中,并通过幂等聊天投递提交,防止在重连后丢失、重复和跨网关发送。(#100372)感谢 @NianJiuZst。
- **iOS Gateway 认证重试:** 将存储的设备 token 重试限制为已解析的环回主机,并拒绝通配符绑定地址,防止远程仿冒主机名接收受信任的重试凭据。(#99859)感谢 @ly85206559 和 @vincentkoc。
- **Bedrock Mantle 发现:** 限制模型目录获取时间和响应大小,并释放被拒绝的响应体,使停滞、过大或失败的提供商响应安全回退。(#99961)感谢 @zhangguiping-xydt 和 @shakkernerd。
- **Discord 线程标题提示:** 在 UTF-16 边界上截断生成的标题消息和通道上下文,防止 emoji 留下格式错误的模型提示文本。(#101551)感谢 @Alix-007、@vincentkoc、@mushuiyu886 和 @cursoragent。
- **移动端配对路由:** 在 `gateway.bind=lan` 设置 URL 旁宣告已验证的持久 Tailscale Serve 回退,在控制界面和 CLI 中显示每条路由,并让 iOS 保存第一个可到达的端点。(#100280)感谢 @shakkernerd。
- **控制界面终端标签页:** 将新会话按钮垂直居中于终端标签条中。
- **控制界面编辑器滚动条:** 仅当草稿实际溢出其自动高度时,显示消息字段滚动条。
- **控制界面终端光标:** 隐藏浏览器原生的 contenteditable 插入符,使集成终端仅显示其画布渲染的光标。
- **macOS SSH 隧道:** 通过应用管理的 PATH 解析用户安装的 SSH `ProxyCommand` 辅助程序,同时保留继承的连接环境,使远程别名在 Finder 和清理脚本启动后正常工作。
- **控制界面 OpenAI 速度选择器:** 仅为 OpenAI 模型显示“标准”和“快速”选项。
- **控制界面终端渲染:** 采用共享的 `@openclaw/libterminal` 浏览器生命周期,并添加 Nerd Font 回退,使启用图标的 shell 列表在安装兼容本地字体时渲染其字形。
- **Slack 对话历史:** 让 Codex 应用服务器拥有其持久化的助手回复,使 Slack 不附加冗余的投递镜像行,同时控制界面保持隐藏旧的重复镜像。感谢 @bek91。
- **控制界面聊天历史:** 当前面的应用服务器助手回复已显示相同文本时,隐藏冗余的通道最终投递镜像。
- **控制界面聊天间距:** 使用响应式最小对话内边距,使第一条消息与顶部栏保持舒适距离。
- **ClawRouter 认证配置文件:** 当代理密钥存储在认证配置文件中时,在代理运行期间解析凭据作用域的目录模型,并记录插件和模型白名单。
- **Telegram 持久性:** 重试重启丢弃的媒体,存活瞬态轮询错误,死信毒化更新,保留转发的富文本,正确路由插件回调,在一个稳定的多行窗口中保持进度更新,通过受信任的主机根映射自托管 Bot API 容器路径,并在 Telegram 拒绝富文本最终回复时安全回退。(#98102, #98735, #98775, #98776, #97174, #98907, #91984, #98786)感谢 @luoyanglang、@DaveArcher18、@obviyus、@goldmar、@Marvinthebored、@Dizesales、@shakkernerd、@AiLucasdz 和 @RomneyDa。
- **跨通道入站媒体:** 当 WhatsApp、LINE、Signal、iMessage、Microsoft Teams、飞书、Mattermost 或 Zalo 无法物化入站媒体时,保留标题并暴露不可用附件的通知,而非分发幻影占位符或丢弃仅媒体轮次。(#100092)
- **代理与上下文可靠性:** 保留运行时覆盖、引导的子代理任务、回退工具调用提示和遗留重播种附件;在仅提示漂移时软恢复 CLI 会话;改进 harness 感知的上下文估算;超时静默本地流;恢复流中失败;并限制 Gateway 运行缓存增长。(#92237, #77539, #99851, #99839, #99822, #97928, #98525, #95430, #77973)感谢 @sercada、@amittell、@obviyus、@liuhao1024、@yetval、@osolmaz、@lzyyzznl、@vincentkoc、@alexelgier 和 @fede-kamel。
- **提供商与网络安全:** 在 Moonshot、MiniMax、Anthropic OAuth、Discord、Matrix、SMS、浏览器、更新、嵌入、Tlön 和 Inworld 路径中限制过大或格式错误的响应。(#96502, #96322, #96644, #97693, #97662, #97999, #98455, #98508, #98554, #98496, #98660)感谢 @hugenshen、@cursoragent、@lsr911、@solodmd、@Alix-007、@wings1029、@lzyyzznl、@sunlit-deng、@vincentkoc 和 @Pandah97。
- **通道投递与路由:** 将 Slack 回复保留在活动线程会话中,保留账号绑定的投递路由,应用回复前缀,并抑制内部跟踪和不希望的回退回复。(#97168, #98240, #93639, #97989, #80928)感谢 @LiuwqGit、@gorkem2020、@yetval、@ZengWen-DT、@alexuser、@UnClouded77 和 @vincentkoc。
- **Cron 正确性:** 在超时时保留提供商和模型选择,在维护读取间保留启动追赶延迟,保留需要操作的输出,清除空白的思考覆盖,并保留提供商拥有的每日重置会话。(#95943, #94022, #96393, #96293, #98356)感谢 @ZengWen-DT、@cursoragent、@luke-renjoy、@RichChen01、@vincentkoc、@yetval、@snowzlmbot、@nz365guy、@takamasa-aiso 和 @shakkernerd。
- **内存与会话恢复:** 检测未索引的对话,在瞬态读取间保留笔记,避免跨目录恢复,消除保留的 wiki 索引页歧义,并跳过空的 QMD 同步工作。(#97857, #98360, #97785, #94326, #90030)感谢 @zw-xysk、@CHE10X、@qingminglong、@yetval、@vincentkoc、@sahibzada-allahyar 和 @ruben2000de。
- **Windows 与执行:** 将白名单执行绑定到验证的 Windows 路径,传播 `PATHEXT`,不区分大小写地规范化入站路径,并防止 Windows 上的清理崩溃。(#98260, #98093, #97630, #97901)感谢 @eleqtrizit、@wendy-chsy、@VectorPeak、@paulcam206 和 @shakkernerd。
- **移动端与 UI 稳定性:** 保留 iOS 聊天换行和最终回复,改进 Android 配对和 TLS 恢复,隐藏过期的配对卡片,保持工作区文件导轨可滚动,恢复纯 HTTP 上的复制路径,并停止 Mac 应用控制界面中的弹性滚动。(#98304, #98117, #98366, #98439, #98483, #98049, #98646, #98611, #98764, #99830)感谢 @joshavant、@Jabato01、@ooiuuii、@wuqxuan、@645648406-max、@zw-xysk、@ZengWen-DT 和 @adinballew。
- **Codex 与审批流程:** 正确报告 ChatGPT 认证,将破坏性审批模式重命名为 `ask`,准确分类 `get_goal` 读取状态,并从显式运行截止时间推导终端空闲超时。(#91240, #98501, #98659, #85296)感谢 @849261680、@ukstem、@kevinslin、@yetval、@alkor200、@vincentkoc 和 @alkor2000。
- **配置与插件健康:** 将配置遍历限制为自有属性,保留配置健康恢复状态,暴露不可加载的通道插件,在补丁期间保留默认的提供商基础 URL,通过清单合约验证捆绑插件更新,从已安装的插件根解析公共工件,并在需要时保留遗留的 ClawHub 家族。(#99846, #99728, #96397, #98396, #98010, #98819, #98249)感谢 @vincentkoc、@zenglingbiao、@joshavant、@jalehman、@ccbridle、@849261680、@momothemage、@weltmaister、@LiLan0125、@herove、@amknight、@KelTech-Services 和 @Patrick-Erichsen。
- **运行时进程安全:** 防止 SSH 隧道、监督器和 MCP stdio 传输中未处理的子流错误;使自动回复不等待对话镜像;并避免在审批预览和 LINE 出站字段中拆分 Unicode 字符。(#99800, #99802, #99803, #99549, #99566, #98994)感谢 @cxbAsDev、@vincentkoc、@Shagrat2、@mikasa0818 和 @LEXES7。
- **Node 运行时兼容性:** 安装程序、CLI 启动器、doctor 和 macOS 应用现在拒绝不兼容的 Node 23 运行时,并引导用户使用受支持的 Node 22 或 24 版本。(#99832)感谢 @vincentkoc 和 @fuller-stack-dev。
- **SQLite WAL 安全性:** 要求 Node 版本包含修补后的 SQLite 运行时,在打开状态数据库前验证加载的库,并使安装程序跨支持平台升级和验证不安全的运行时。(#106065)感谢 @vincentkoc。
- **安装程序临时文件清理:** 当下载或重写失败时,移除 Node 暂存目录和 pnpm 工作区重写文件。(#103725)感谢 @SebTardif。
- **QQBot 媒体投递:** 将沙箱生成的媒体发送限定到活动会话的工作区,使 `/workspace/...` 和相对生成文件路径在 QQBot 媒体标签、结构化负载和流式投递中安全解析。(#92872)感谢 @zhangguiping-xydt 和 @sliverp。
### 完整贡献记录
完整贡献记录请参见标签固定的 [CHANGELOG.md](https://github.com/openclaw/openclaw/blob/v2026.7.1/CHANGELOG.md#complete-contribution-record)。
### 发布验证
- npm 包:https://www.npmjs.com/package/openclaw/v/2026.7.1
- 注册表 tarball:https://registry.npmjs.org/openclaw/-/openclaw-2026.7.1.tgz
- 完整性校验:`sha256-ge/Xss99CHAjPL/ikmH/UFoiOrjcxDB4sW3y9mhycd+dYW3wzV7TKbAVdkrXFgAG2d2BjpJofP97zUZ+umxo8g==`
- 发布 SHA:`2d2ddc43d0dcf71f31283d780f9fe9ff4cc04fe4`
- 完整发布 CI 报告:https://github.com/openclaw/releases/blob/main/evidence/2026.7.1/release-evidence.md
- 发布推送:https://github.com/openclaw/openclaw/actions/runs/29269577304
- npm 预检:https://github.com/openclaw/openclaw/actions/runs/29268707256
- 完整发布验证:https://github.com/openclaw/openclaw/actions/runs/29257432684
- 插件 npm 发布:https://github.com/openclaw/openclaw/actions/runs/29270283750
- 插件 ClawHub 发布:https://github.com/openclaw/openclaw/actions/runs/29270285823
- 插件 ClawHub 引导:不需要
- OpenClaw npm 发布:https://github.com/openclaw/openclaw/actions/runs/29272090669
- npm Telegram beta E2E:未提供
- Windows Hub 晋升:https://github.com/openclaw/openclaw/actions/runs/29274408977 来自 openclaw/
[email protected]
- macOS 预检:[https://github.com/openclaw/releases/actions/runs/29293062505](https://github.com/openclaw/releases/actions/runs/29293062505)
- macOS 验证:[https://github.com/openclaw/releases/actions/runs/29293060837](https://github.com/openclaw/releases/actions/runs/29293060837)
- macOS 发布:[https://github.com/openclaw/releases/actions/runs/29299988328](https://github.com/openclaw/releases/actions/runs/29299988328)
- macOS appcast:[https://github.com/openclaw/openclaw/pull/106993](https://github.com/openclaw/openclaw/pull/106993)
- Android 发布:[https://github.com/openclaw/openclaw/actions/runs/29293423573](https://github.com/openclaw/openclaw/actions/runs/29293423573)
- 稳定主分支结项:[https://github.com/openclaw/openclaw/actions/runs/29302553990](https://github.com/openclaw/openclaw/actions/runs/29302553990)
- 不可变结项清单:[manifest](https://github.com/openclaw/openclaw/releases/download/v2026.7.1/openclaw-2026.7.1-stable-main-closeout.json) · [checksum](https://github.com/openclaw/openclaw/releases/download/v2026.7.1/openclaw-2026.7.1-stable-main-closeout.json.sha256)
- Linux 包与 Gateway 冒烟测试:[https://crabbox.openclaw.ai/portal/runs/run_c3257c19e269](https://crabbox.openclaw.ai/portal/runs/run_c3257c19e269)
## 2026.7.1
### Highlights
- **New models and providers:** add Featherless, Claude Sonnet 5 and Mythos 5, Meta Muse Spark 1.1, and ClawRouter; make GPT-5.6 the new-setup default with `/think ultra` for Sol and Terra plus `max` for Luna, honor Z.AI `max`, and refresh model availability after OAuth renewal. (#101092, #98254, #101238, #102873, #103070, #103163, #99658, #99759, #98333, #103581, #98021, #104778, #102289) Thanks @vincentkoc, @vortexopenclaw, @HamidShojanazeri, @davemorin, @Solvely-Colin, @jalehman, @steipete-oai, @bdjben, @obviyus, @sallyom, @anyech, @100yenadmin, and @fuller-stack-dev.
- **Control UI and native macOS chat:** make sessions primary with a minimal searchable sidebar, compact context ring, reasoning-effort slider, cleaner dashboard chrome, and a native macOS session browser with model and thinking pickers, slash commands, transcript export, and context usage. (#99289, #99838, #100386, #101103, #101497)
- **Conversational onboarding:** Crestodian now runs a real agent-loop setup across the CLI, web install, and macOS app, with AI-guided provider setup, model-judged approvals bound to exact operations, masked credential prompts, and deterministic fallback when no model is available. (#99935, #100029, #100656, #101887) Thanks @fuller-stack-dev.
- **Offline and spoken mobile chat:** iOS and Android now pre-paint bounded per-gateway session and transcript caches offline; Apple Watch gains full voice turns, and iOS can speak replies through configured Gateway TTS with on-device fallback. (#100219, #100227, #100283, #100770, #100771)
- **Session organization and generated titles:** generate concise session titles through utility-model routing and add Gateway-backed groups, unread state, rename, fork, archive, and delete controls, plus group management across web, iOS, and Android. (#87643, #100814, #101117, #101234) Thanks @zhangguiping-xydt and @Juliangsm.
- **Telegram and Codex continuity:** pair Codex through private `/login`, steer active runs with `/steer` and `/tell`, preserve messages when transcript acknowledgement is missing, adopt durable turns safely, and recover final sends across Telegram formatting and flood-wait failures. (#98006, #98126, #98786, #103664, #103916) Thanks @100yenadmin, @Kyzcreig, @obviyus, and @jalehman.
- **Startup and upgrade recovery:** run container migrations before Gateway readiness, stop recoverable legacy state from blocking startup, and enter control-plane-safe mode after repeated unclean boots instead of restart flapping. (#101881, #104529) Fixes #98565 Thanks @sallyom, @jacobtomlinson, @bdjben, @obviyus, and @shakkernerd.
### Changes
- **Meta provider:** add bundled `muse-spark-1.1` Responses API support with streaming, tool calls, encrypted reasoning replay, onboarding, exact-model live validation, and standalone npm/ClawHub distribution as `@openclaw/meta-provider`. (#102873, #103070, #103163) Thanks @HamidShojanazeri, @davemorin, @Solvely-Colin, @jalehman, and @vincentkoc.
- **Android chat agent selector:** switch the active agent directly from the live chat screen while keeping chat, Talk mode, and home canvas on the same canonical session. (#80422) Thanks @bcperry and @joshavant.
- **Gateway host status:** show the connected Gateway's host, network address, OS, runtime, uptime, CPU, memory, and disk details in Control UI Settings. (#100478)
- **Gateway crash-loop recovery:** persist boot outcomes, enter control-plane-safe mode after repeated unclean starts, hold transport and provider activation until recovery, and exit with `EX_CONFIG` for fatal configuration errors so systemd and launchd stop restart flapping. Thanks @obviyus.
- **iOS offline chat:** pre-paint recent sessions and canonical transcripts from a protected, bounded per-gateway cache, keep sending disabled offline, and purge cached conversation text when pairing is reset. (#100219)
- **Slack progress indicators:** use Slack's native assistant thread status and rotating loading messages by default while keeping acknowledgement reactions static; lifecycle reaction updates now require `messages.statusReactions.enabled: true`.
- **Control UI Talk controls:** keep voice, model, sensitivity, and other realtime defaults in Settings → Communications → Talk, and use the composer microphone caret to select any browser audio input. (#101046)
- **Cron model selection:** choose an agent-turn model in Control UI Quick Create and show configured or default models in cron job rows and details. (#95341) Thanks @ly85206559.
- **Control UI GitHub previews:** show issue and pull request state, title, author, activity, comments, and change statistics in hover and keyboard-focus cards. (#100434)
- **Logbook work journal:** add a disabled-by-default bundled plugin that turns paired-node screen snapshots into a private timeline, daily standup, and timeline-grounded Q&A in a plugin-contributed Control UI tab. (#99930)
- **Control UI message context:** reveal per-message token, context, and model details from the timestamp on hover or activation instead of showing a separate Context button.
- **Control UI session titles:** reveal truncated recent-session names with a reduced-motion-safe hover animation.
- **Control UI sidebar navigation:** show a small customizable pinned destination set, keep the remaining pages under More, move Settings to the footer, and persist sidebar customization in the browser. (#100296) Thanks @vincentkoc.
- **Control UI sidebar usage:** remove the provider usage quota row from the expanded sidebar while keeping usage details available in the chat composer and Usage page. Thanks @shakkernerd.
- **Android chat code highlighting:** render fenced Kotlin, Swift, TypeScript, JavaScript, Python, Bash, and JSON blocks with bounded, theme-aware syntax colors while preserving plain rendering for unknown, partial, or oversized blocks. (#100217)
- **Gateway TTS playback:** add an operator-scoped `tts.speak` RPC that returns configured-provider speech as inline whole-clip audio for remote clients. (#100770)
- **Control UI context usage:** show context-window progress, latest-run input/output tokens, and the active model when the chat context ring is opened.
- **Apple Watch voice turns:** dictate a message from the Watch chat and hear the new OpenClaw reply spoken on the Watch, with explicit silent-message and stop-speaking controls. (#100224) Thanks @vincentkoc.
- **Conversational onboarding:** add a real agent-loop Crestodian setup flow across the CLI, Gateway, web install, and macOS app, with typed operations, exact approval binding, masked credential prompts, isolated session transcripts, and safe handoff to the normal agent. Thanks @vincentkoc.
- **Generated session titles:** name new Control UI sessions from their first message, and add default/per-agent `utilityModel` routing for lower-cost session, topic, and thread title generation. Thanks @Juliangsm, @zhangguiping-xydt, and @vincentkoc.
- **ClawRouter routing and quotas:** add the bundled ClawRouter provider plugin with credential-scoped dynamic model discovery, OpenAI-compatible and native Anthropic/Gemini transports, and managed budget reporting across OpenClaw usage surfaces. (#99658)
- **Model and provider coverage:** add GPT-5.6 support, use Nemotron Super's 1M context window, and preserve explicit OpenRouter authentication headers. (#98333, #98726, #98187) Thanks @steipete-oai, @eleqtrizit, @sunlit-deng, @laurencebrown, and @shakkernerd.
- **CLI and node workflows:** add `openclaw attach`, node context-path support, actionable device-approval recovery guidance, soft-resume CLI sessions when prompt metadata changes, and clearer plugin install exit diagnostics. (#96454, #97679, #98115, #98146, #98497, #99822) Thanks @anagnorisis2peripeteia, @obviyus, @wm0018, @welfo-beo, @RomneyDa, @Sanjays2402, and @vincentkoc.
- **Cron and usage:** add exit-triggered schedules, detached session-targeted runs, and an in-flight job doctor warning, while making the existing usage footer easier to wrap on Telegram. (#92037, #98755, #98620, #92877) Thanks @anagnorisis2peripeteia, @obviyus, @EthanSK, @masatohoshino, @Marvinthebored, and @vincentkoc.
- **Native apps and localization:** modernize iOS presentation, Chat, Talk, onboarding, and reconnect flows; add Gateway speech providers; improve QR onboarding and protocol recovery; install the local Gateway from macOS; localize core Apple and Android surfaces; and add Swedish mobile localization. (#98452, #98736, #99243, #98376, #98302, #98385, #99767, #97110, #97111, #97112, #97113, #98043) Thanks @jcooley8, @Tony-ooo, @joelnishanth, @cursoragent, @joshavant, @vincentkoc, and @yeager.
- **Messaging capabilities:** add native iMessage polls, Telegram Codex pairing and steering, Telegram multi-lane progress summaries, and Signal target aliases. (#98421, #98006, #98126, #98907, #95738) Thanks @omarshahine, @lobster, @100yenadmin, @Kyzcreig, @Marvinthebored, and @jesse-merhi.
- **Local inference and chat controls:** auto-discover Ollama inference nodes, add Control UI session-first navigation, reasoning controls, and command picking, and keep OpenClaw control tools available when deferred tool search selects the wrong tool family. (#99234, #99289, #99426, #99838, #99561) Thanks @100yenadmin, @joshavant, @VicZhang6, @Solvely-Colin, and @vincentkoc.
- **Doctor and diagnostics:** expose auth-profile, workspace, device-pairing, channel-plugin, memory-provider, systemd exhaustion, and Windows LAN firewall findings. (#97125, #97358, #97366, #97496, #97968, #98291, #98666) Thanks @giodl73-repo, @masatohoshino, and @joshavant.
- **Policy repair previews:** show review-required Gateway bind and denied node-command changes during `doctor --fix` without applying them or counting the findings as repaired. (#99776) Thanks @giodl73-repo.
- **Conversation and review controls:** prepare scoped conversation capability profiles and add Cursor Agent as an autoreview engine. (#98536, #97348) Thanks @hxy91819.
### Fixes
- **Codex runtime switching:** accept the bundled Codex runtime for both `codex/*` and `openai/*` model routes while keeping unsupported provider/runtime pairs rejected. (#103762)
- **LM Studio and xAI repaired tool calls:** emit the terminal tool-call event before completion when promoting serialized plain-text tool calls, preserving the complete streaming lifecycle for consumers.
- **Browser actions on Node 24:** keep browser request cancellation bound to the client and response lifetime instead of Node 24.16+'s prematurely aborted body-stream signal, preventing valid POST actions from failing after JSON parsing. Thanks @obviyus and @vincentkoc.
- **SecretRef model credentials:** keep resolved provider secrets behind process-local sentinels through auth storage, stream setup, SDK configuration, and managed local-provider probing, then inject plaintext only at the final network or provider-plugin boundary while retaining exact-value log redaction. (#102008, #102009)
- **Telegram token redaction:** redact bot tokens even when log transports split them across chunks, preventing fragmented credentials from escaping structured and streamed logs. (#103861) Thanks @vincentkoc.
- **Telegram durable turn adoption:** complete spooled updates only after durable agent adoption, detach adopted turns from the ingress reply fence, and suppress superseded replies so recovery cannot leak stale or duplicate responses. (#103664, #103952, #103965) Thanks @obviyus and @vincentkoc.
- **Task delivery recovery:** normalize legacy delivery statuses while restoring task records so older queued work becomes runnable instead of aborting registry recovery. (#103946) Fixes #103168 Thanks @bek91, @theo674, and @obviyus.
- **Diagnostics provider evidence:** emit one deduplicated `provider.request` timeline event for every completed or failed model call, so opt-in timelines can prove real provider traffic without double-counting terminal paths. Fixes #103063 Thanks @vincentkoc.
- **Lean local model shell access:** keep `exec` directly visible beside the default structured Tool Search controls so coding-tuned local models can use their shell fallback instead of searching for missing domain tools. (#101607) Thanks @vincentkoc and @maweibin.
- **OAuth refresh contention diagnostics:** keep local lock paths out of user-facing refresh failures and avoid duplicate failure prefixes while preserving structured provider and profile classification. (#101573) Thanks @vincentkoc.
- **Exec approval prompts:** keep background-disabled fallback warnings out of pending gateway/node approvals and show them only after a command actually runs in the foreground. (#101561) Thanks @vincentkoc.
- **Direct poll delivery:** route direct and hybrid channel polls through the owning outbound adapter while preserving gateway-mode routing and channel option checks. (#99950) Thanks @NianJiuZst and @shakkernerd.
- **Agent wait hard-timeout snapshots:** preserve canonical hard-timeout phase and timestamps when the outer `agent.wait` timer wins the retry-grace race, while leaving queue, draining, and restart-cancelled waits correctable. (#89367) Thanks @Pick-cat and @sunnydongbo.
- **Control UI typed approvals:** send `/approve` commands immediately through the authorized Gateway command path while an agent run is blocked instead of queueing the command behind that run. (#101532) Thanks @vincentkoc.
- **Microsoft Teams Graph response bounds:** cap successful file-upload and chat JSON reads so oversized Microsoft Graph responses cannot be buffered without limit. (#97784) Thanks @Alix-007.
- **Packaged speech runtime:** stop treating package-backed `speech-core` as a bundled plugin sidecar, restoring TTS startup in npm installs while release checks keep true activation-bypassing facades package-complete. (#89899, #89425) Thanks @zhangguiping-xydt, @ant1b0t, and @vincentkoc.
- **Container image upgrades:** run versioned state migrations and plugin convergence before Gateway readiness when reusing mounted state, failing closed with `doctor --fix` recovery guidance instead of serving half-upgraded state. (#101881) Fixes #98565 Thanks @sallyom, @jacobtomlinson, and @shakkernerd.
- **Plugin update reliability:** preserve plugins successfully switched through ClawHub during core updates instead of processing them a second time and disabling them after a redundant transient failure. (#105405) Thanks @vincentkoc.
- **Codex app-server protocol:** require app-server 0.143 or newer, remove pre-0.142 wire-shape compatibility, migrate retired `on-failure` approval settings to `on-request` in Codex configuration and saved bindings, teach Codex to retrieve deferred native `spawn_agent` through `tool_search` so native subagent task mirroring works on search-capable models, and update the managed runtime to 0.144.1 for code-mode host installation and missing-host fallback reliability. Thanks @vincentkoc.
- **Android hardware keyboard chat:** send with unmodified Enter on physical keyboards while preserving Shift+Enter and other modified Enter combinations for multiline input. (#101239) Thanks @3ninyt3nin-creator and @vincentkoc.
- **CJK Markdown emphasis:** render adjacent Chinese, Japanese, and Korean emphasis punctuation through the shared Markdown pipeline instead of leaking literal markers across channels. (#101230, #101120) Thanks @nicknmorty and @j08577600-jpg.
- **Backup retry cleanup:** close partial archive output handles and isolate each retry path after live-write failures, preventing Windows `EBUSY` locks from cascading across attempts or leaving stale temp archives. (#101449, #101464) Thanks @ZOOWH, @LiLan0125, @vincentkoc, @aniruddhaadak80, @shakkernerd, and @obviyus.
- **Codex yielded native subagents:** keep the parent app-server subscription and shared client alive until yielded native subagent completion delivery settles, preventing lost wakeups and leaked one-shot cleanup. Thanks @vincentkoc.
- **Delivery recovery pacing:** pace eligible outbound and restart-continuation replays after gateway startup so outage backlogs do not burst into channel rate limits, while preserving the wall-clock recovery budget. (#101118, #101058) Thanks @ZengWen-DT, @aniruddhaadak80, and @vincentkoc.
- **Outbound pre-connect recovery:** clear stale platform-send evidence atomically when a connect or DNS failure proves no request was sent, allowing queued Discord and other channel messages to replay after connectivity returns without weakening the unknown-send duplicate guard. (#101024, #100979) Thanks @SunnyShu0925 and @tiffanychum.
- **Discord streamed finals:** send completion replies as fresh messages so inactive channels become unread, while preserving targeted mentions without escalating `@everyone` or `@here`. (#99711, #99662) Thanks @davelutztx and @xena68.
- **OpenAI-compatible SSE parsing:** recognize event streams mislabeled as JSON without prepending a second `data:` prefix, preserving valid streamed responses from non-conforming providers. (#96503) Thanks @ZengWen-DT and @54meteor.
- **Meta Model API contract:** use the current Meta endpoint and output-token field so `muse-spark-1.1` validation and live requests match the provider contract. (#103680) Fixes #103667 Thanks @vincentkoc, @HamidShojanazeri, @davemorin, @Solvely-Colin, and @jalehman.
- **LM Studio embedding preload:** honor model- and provider-level context-window limits when preloading embedding models, preventing avoidable GPU out-of-memory failures. (#100750) Thanks @zak-li, @ZOOWH, and @hxz398.
- **Provider overload messaging:** keep rate-limited responses classified for retry and fallback behavior while using overload wording when the provider supplies no explicit retry detail. (#98165) Thanks @SunnyShu0925.
- **Microsoft Teams attachment metadata:** bound Bot Framework `attachmentInfo` JSON reads and cancel oversized streams before they can exhaust Gateway memory. (#99125) Thanks @ly85206559.
- **Agent auth copy order:** preserve the source agent's portable auth-profile precedence when copying credentials to a new agent while excluding skipped profiles and transient auth state. (#100833) Thanks @machine3at.
- **Memory session repair:** keep daily dreaming ingestion bookkeeping outside session-corpus audit and repair so `memory status --fix` preserves healthy daily state. (#93389) Thanks @Alix-007 and @vincentkoc.
- **Remote browser CDP policy:** allow the configured CDP control host through an existing hostname allowlist without widening page navigation policy, while keeping strict-policy discovery bound to the configured control authority. (#100986, #100819) Thanks @NianJiuZst, @SarinV, and @vincentkoc.
- **Config unset diagnostics:** explain when an inherited or default configuration value cannot be unset instead of reporting a misleading successful deletion. (#96557) Thanks @moeghashim.
- **Crestodian command probes:** contain stdout and stderr stream failures while keeping child-process close and spawn errors authoritative, preventing unhandled probe crashes. (#100741) Thanks @lsr911.
- **Feishu mention forwarding:** fail closed when the bot Open ID is unavailable so group messages cannot be misclassified as explicit bot mentions. (#100891) Thanks @zhangguiping-xydt.
- **Cron edit delivery:** preserve each job's implicit delivery mode when applying partial delivery updates, so disabling best-effort delivery no longer turns detached job announcements off. (#100846) Thanks @machine3at and @vincentkoc.
- **Control UI session creation:** keep newly created sessions at the front of the stable sidebar order after selecting another session. Thanks @shakkernerd.
- **Control UI file previews:** keep large Skill Workshop files responsive with cached, offscreen-contained text chunks while preserving wrapped content, stable file switching, full-file copy, and clean focus behavior. (#101319) Thanks @xianshishan, @shakkernerd, and @vincentkoc.
- **FTS-only memory startup:** skip plugin capability discovery when `memorySearch.provider` is explicitly `none`, avoiding an unnecessary cold-start scan.
- **Control UI agent model labels:** show each selected agent's effective model in the Default picker option instead of the global model. (#100719, #77440) Thanks @hyspacex and @jwong-art.
- **Control UI inbound image previews:** render canonical inbound media references through the authenticated ticket route after chat-history reloads. (#100725, #89591) Thanks @sweetcornna, @vergissberlin, and @shakkernerd.
- **Small-context compaction:** cap the effective reserve against the known model context window so small local models do not enter compaction from the first token. (#100621) Thanks @vincentkoc.
- **Detail-less provider failures:** keep opaque upstream failures from cooling API-key auth profiles while preserving WHAM-backed OpenAI OAuth health checks and configured model fallback. (#100617) Thanks @fabasi, @fengjikui, and @vincentkoc.
- **Plugin install diagnostics:** suppress the misleading hook-pack fallback after plugin install failures only when the hook manifest is absent, while preserving actionable malformed hook-pack errors. (#100554) Thanks @vincentkoc and @obviyus.
- **Config validation diagnostics:** emit each unchanged sanitized validation-warning payload once per config path, reset deduplication after a clean validation, and preserve the warning fingerprint across transient invalid reads and failed refreshes. (#100569, #25574) Thanks @vincentkoc and @mcaxtr.
- **Config size-drop guard:** compare writes against canonical bytes for parseable object configs instead of raw BOM and indentation overhead, while preserving raw audit telemetry and the conservative malformed-input fallback. (#100591, #71865) Thanks @vincentkoc and @balric-seo.
- **Control UI coalesced updates:** show a clear queued-restart completion banner when an update joins an already-running Gateway restart. (#93082) Thanks @goutamadwant and @motacola.
- **Control UI connection errors:** preserve structured pairing and authentication failures for pending RPC callers while keeping generic disconnect behavior unchanged. (#54758) Thanks @ruanrrn.
- **iOS embedded terminal:** open the terminal-only Control surface directly while native Gateway authentication connects instead of exposing the Web UI login screen.
- **TUI startup status:** show `starting up` during post-connect initialization without overwriting active-run or reconnect state. (#93999) Thanks @ml12580 and @sanjarcode.
- **Control UI restart recovery:** recover stale bundle pages through a bounded whole-document refresh after Gateway updates or restarts. (#99111) Thanks @ZengWen-DT and @ITOrity.
- **TUI active Gateway ports:** follow the verified active local Gateway port when no explicit URL, port, or remote target is configured. (#73338, #42461) Thanks @haishmg, @vincentkoc, and @jackm1688.
- **Apple chat run recovery:** restore active responses from canonical Gateway history after reconnects, foreground resumes, and event gaps, while preserving gateway user-turn identity across Codex and Copilot transcript mirrors to prevent duplicate rows. (#100277)
- **Claude CLI streamed replies:** preserve assistant text already received from Claude CLI when its terminal result envelope is empty, preventing false empty-response failover after a complete streamed answer. (#90450) Thanks @totobusnello.
- **Phone identity normalization:** canonicalize stray plus signs, preserve non-phone iMessage handles, and reject digit-free Signal identities across shared channel routing. (#100467) Thanks @morluto.
- **Tlon scry response bounds:** cap successful Urbit scry JSON reads and cancel oversized streams instead of buffering unbounded peer responses. (#100376) Thanks @hugenshen.
- **Source build portability:** keep tsdown configuration self-contained so builds do not depend on resolving the tsdown package from unrun's temporary module directory. Thanks @vincentkoc.
- **Agent tool-call decoding:** preserve surrogate-range numeric HTML entities as literal text while still decoding valid supplementary-plane values, preventing malformed model output from injecting lone UTF-16 surrogates into tool arguments. (#99564) Thanks @mikasa0818, @vincentkoc, @shakkernerd, and @maweibin.
- **Gateway event dispatch:** catch and log lazy subscriber setup and handler failures instead of leaking unhandled promise rejections. (#100401) Thanks @cxbAsDev.
- **Ollama fallback routing:** classify incomplete native streams through the Ollama provider hook so configured model fallbacks can advance. (#100482) Thanks @TurboTheTurtle, @8kfcf95jvp-oss, and @vincentkoc.
- **Diffs rendering:** render viewer and image output from one SSR preload, preserve language-pack highlighting through hydration, normalize language hints case-insensitively, skip identical before/after inputs with an explicit `changed` result, report truthful file-render and input errors, cache hash-pinned viewer runtimes, and prefer canonical file settings over stale aliases. (#100487) Thanks @vincentkoc.
- **Remote browser reliability:** bound persistent Playwright tab enumeration by the existing remote CDP timeout budget and retire timed-out connection attempts so late completions cannot restore a stuck connection. (#80147, #58968) Thanks @HemantSudarshan and @KeaneYan.
- **Browser attachment downloads:** return managed URL, filename, and path metadata when direct Playwright navigation starts an attachment download, while validating final URLs before saving bytes and preserving single-owner explicit downloads. (#48045, #89416) Thanks @zhangguiping-xydt and @roinou532.
- **Browser action downloads:** return managed URL, filename, and path metadata when agent actions trigger downloads, while preserving explicit ownership, validating final URLs before saving bytes, and quarantining policy-denied tabs without closing them. (#93250, #93307) Thanks @sunlit-deng and @scorpiord.
- **Managed browser cookie persistence:** initialize new isolated macOS headless profiles with a non-interactive encryption key while preserving existing profile keys, and close Chromium through CDP before bounded signal fallback so persistent logins survive graceful browser and Gateway restarts. (#96704, #98284) Thanks @TurboTheTurtle and @shakkernerd.
- **MCP OAuth response bounds:** reject body-less foreign error bodies without calling their inherently unbounded `text()` fallback, while preserving HTTP status and headers for safe SDK diagnostics. (#98143) Thanks @Pick-cat, @wangmiao0668000666, and @vincentkoc.
- **Tlon image upload bounds:** cap remote image fetches before upload and fail closed on oversized or stalled responses instead of buffering them without a limit. (#100374) Thanks @hugenshen.
- **Control UI approval prompts:** keep stale resolve failures and busy-state cleanup from leaking across newer approvals or Gateway reconnects. (#98394) Thanks @haruaiclone-droid.
- **macOS service SecretRefs:** preserve generated env-file values for SecretRefs that remain in config when stale Gateway LaunchAgents are repaired or reinstalled without those variables in the invoking shell. (#99124) Thanks @mushuiyu886 and @1Wanker.
- **Anthropic OAuth callbacks:** keep the provider-required `localhost` redirect URI stable while allowing the local callback listener to bind an explicit loopback host. (#96917) Thanks @xialonglee, @riazrahaman, and @vincentkoc.
- **Prompt-release media delivery:** accept active-leaf-preserving side appends while an embedded run temporarily releases its session lock, so successive message-tool media replies merge without a false session-takeover failure. (#100490) Thanks @scotthuang and @vincentkoc.
- **Control UI Skills filters:** align agent and search controls, use translated labels, and preserve native checkbox and radio sizing. (#100526) Thanks @evan-YM and @vincentkoc.
- **Control UI completed-run state:** bind active and completed updates to run identities so stale completions keep Send available while newer runs remain active. (#100527) Thanks @tiffanychum, @davidstoll, and @shakkernerd.
- **Control UI context usage:** keep stale cached totals visible as approximate without triggering warning styling or Compact actions. (#89772) Thanks @bladin and @snsczssl.
- **Control UI file previews:** remove the duplicate Escape header hint while retaining the Close-button shortcut hint and Escape behavior. (#100528) Thanks @xianshishan and @vincentkoc.
- **Control UI autonomous tool failures:** preserve an earlier Tool error outcome across later autonomous recovery turns. (#100514) Thanks @qingminglong and @yetval.
- **Agent empty replies:** surface a visible failure when a completed interactive turn has no deliverable reply, including queued follow-ups, while preserving explicit silence, pending continuations, and committed side effects, honoring queued send policies, and treating compaction notices as progress. (#100456) Thanks @mushuiyu886 and @grox2012.
- **Subprocess, maintenance, and output hardening:** keep child output failures from crashing exec and TUI sessions, isolate remote skill refresh and subagent sweeps, surface skill-scan and approval diagnostics, sanitize ANSI and stray parameter markup without losing visible text, and stop Android audio capture cleanly on device loss. (#100440) Thanks @cxbAsDev, @wendy-chsy, @tzy-17, @nankingjing, @NianJiuZst, @LavyaTandel, and @maweibin.
- **Docker sandbox command output:** fail and terminate Docker sandbox operations when stdout/stderr capture breaks instead of returning success with incomplete output. (#100523) Thanks @cxbAsDev and @vincentkoc.
- **Android push-to-talk lifecycle:** serialize gateway PTT preparation with app foreground and Manual Mic ownership so delayed work cannot restart, replace, or tear down a newer capture. (#100552) Thanks @xialonglee.
- **Lean local-model tools:** trim media generation, TTS, and PDF tools from lean agent surfaces while preserving explicit config and runtime opt-ins. (#88881) Thanks @vincentkoc.
- **iOS development app identity:** keep the development app labeled OpenClaw while using its distinct debug icon to differentiate it from release builds.
- **Android chat recovery:** preserve optimistic user messages and locally owned runs while reconnect and sequence-gap history snapshots catch up, preventing sent messages from disappearing or stale runs from taking ownership. (#100197)
- **iOS QR gateway handoff:** stop VisionKit before delivering scanned setup codes, and keep deferred auth, approval, Watch, and foreground-node work bound to its originating gateway across reconnects. (#99572) Thanks @PollyBot13.
- **Agent terminal failures:** surface a safe interactive reply when an agent run ends without visible output, while preserving completed message-tool delivery and heartbeat-specific guidance. (#99304) Thanks @moeedahmed and @maweibin.
- **MCP loopback tool results:** preserve schema-valid text, image, and embedded-resource content through HTTP tool calls while rendering malformed or protocol-incompatible blocks as safe text. (#100336) Thanks @tzy-17, @OpenClawKobian99, @vincentkoc, @shakkernerd, and @maweibin.
- **Control UI tool-result images:** render direct image content blocks from Gateway history and make the delayed-send scroll E2E setup deterministic. (#100295) Thanks @lzyyzznl, @Pandah97, @rquinones84, and @maweibin.
- **Control UI live tool ordering:** keep assistant stream text before its matching tool card when browser and Gateway timestamps disagree. (#93184) Thanks @Pick-cat and @lileilei-camera.
- **IRC Unicode messages:** split outbound PRIVMSG payloads on UTF-16 code-point boundaries so emoji cannot be cut into lone surrogates. (#96572) Thanks @WeeLi-009, @vincentkoc, @mushuiyu886, and @cursoragent.
- **OpenAI realtime voice greetings:** prevent server VAD from creating a second outbound greeting while an explicit greeting response owns the turn, without disabling caller interruption. (#86285) Thanks @giodl73-repo and @jnikolaidis.
- **Realtime voice tools:** filter malformed tool names at each OpenAI, Azure, and Google realtime payload boundary while preserving provider-specific valid names. (#89175) Thanks @vincentkoc.
- **Discord voice status:** treat Discord error 10065 as a normal disconnected state while preserving unrelated REST failures. (#90969) Thanks @asock.
- **Discord voice accounts:** isolate `@discordjs/voice` connections by Discord account and recover auto-join when gateway readiness predates listener registration. (#87530) Thanks @geekhuashan.
- **iOS Voice Wake cleanup:** avoid initializing the microphone audio pipeline while disabling inactive Voice Wake, preventing simulator launch aborts and unnecessary audio setup.
- **Reliability edge cases:** reject sub-millisecond cron durations, preserve generated proposal newlines, normalize blank integer inputs and fail embedded LSP startup promptly, surface persistence and memory-close failures, keep UTF-16 and plugin package verification correct, propagate Android cancellation, and defer Codex relay registry writes until listening. (#100399) Thanks @cxbAsDev, @snotty, @lin-hongkuan, @849261680, @qingminglong, @anyech, @masatohoshino, @Simon-XYDT, @xialonglee, @nankingjing, @609NFT, and @vincentkoc.
- **Voice Call completed status:** resolve finalized calls from the full retained event store across Gateway, tool, and CLI status paths while preserving active-call lookup performance. (#99797) Thanks @Darren2030, @NiTeCoMM-code, and @maweibin.
- **Agent stop recovery:** prevent late-aborting prompts from reacquiring orphaned session locks after teardown, so `/stop` leaves the conversation ready for the next turn.
- **Message delivery status:** report failed and partially failed best-effort channel delivery instead of returning a success-shaped message-tool result. (#99928) Thanks @masatohoshino.
- **WhatsApp credential recovery:** restore malformed primary auth state from a valid backup during startup. (#99070) Thanks @LeonidasLux.
- **WhatsApp quoted replies:** preserve bot-authored outbound quote metadata so replies to those messages keep their reply bubble in WhatsApp Desktop. (#94879) Thanks @Bartok9, @seikosantana, and @vincentkoc.
- **WhatsApp reconnect catch-up:** admit recently missed Baileys `append` messages during a bounded reconnect window while preserving startup stale-history guards. (#80642) Thanks @VishalJ99.
- **WhatsApp restart recovery:** stop automatic restart loops after logged-out or connection-replaced disconnects until the account reconnects. (#78511) Thanks @openperf and @rutherlesdev.
- **Local Gateway CLI auth:** keep loopback CLI token/password calls off durable device scopes so read probes cannot block later write/admin commands behind a stale pairing baseline. (#95997) Thanks @vincentkoc.
- **Plugin module identity:** keep OpenClaw package chunks on Node's native module graph when jiti transforms plugin entries, preventing duplicate evaluation and class identity drift. (#88384) Thanks @vincentkoc and @ScientificProgrammer.
- **Shell completion repair:** generate core-only caches during doctor and update repair while preserving full plugin command completion for onboarding and explicit user rebuilds. (#76235) Thanks @joshavant.
- **MCP schema diagnostics:** attribute draft-2020-12 compiler failures to the external MCP schema so malformed patterns produce actionable setup errors. Thanks @vincentkoc.
- **Windows Scheduled Task recovery:** keep clean early exits inside the existing bounded launch poll, falling back only when neither the task process nor Gateway listener becomes observable.
- **iMessage group warnings:** suppress the false drop-all startup warning when an effective group sender allowlist can admit groups, and point true empty-allowlist configurations at the correct remedy. (#100046)
- **Control UI mobile login:** keep Gateway recovery guidance visible after connection failures, make the disconnected gate scroll safely on constrained screens, and improve mobile keyboard and tap-target behavior. (#100208)
- **TUI streaming:** render delta-only assistant events in live Gateway and embedded TUI sessions instead of waiting for the final response. (#83000) Thanks @flashosophy.
- **Model aliases:** resolve provider-qualified aliases during session and chat-command model switches without collisions when providers share a display alias. (#100209) Thanks @sahilsatralkar, @david-r-jones, @shakkernerd, and @vincentkoc.
- **TUI new-session hooks:** create `/new` sessions through the shared Gateway lifecycle so command and session hooks receive the completed parent transcript in both Gateway and embedded modes, while preventing rollover during an active turn. (#100241, #49918) Thanks @BingqingLyu, @caopulan, @LonExplorer-coder, and @vincentkoc.
- **TUI abort diagnostics:** show sanitized tool argument-validation summaries for aborted runs in both Gateway and local TUI modes without exposing raw model arguments. (#91002) Thanks @wsyjh8 and @taerlandsen.
- **iOS Watch replies:** persist queued quick replies in the gateway-scoped chat outbox and submit them through idempotent chat delivery, preventing losses, duplicates, and cross-gateway sends after reconnects. (#100372) Thanks @NianJiuZst.
- **iOS Gateway auth retry:** restrict stored device-token retry to parsed loopback hosts and reject wildcard bind addresses, preventing remote lookalike hostnames from receiving trusted retry credentials. (#99859) Thanks @ly85206559 and @vincentkoc.
- **Bedrock Mantle discovery:** bound model-catalog fetch time and response size, and release rejected response bodies so stalled, oversized, or failed provider responses fall back safely. (#99961) Thanks @zhangguiping-xydt and @shakkernerd.
- **Discord thread-title prompts:** truncate generated-title message and channel context on UTF-16 boundaries so emoji cannot leave malformed model prompt text. (#101551) Thanks @Alix-007, @vincentkoc, @mushuiyu886, and @cursoragent.
- **Mobile pairing routes:** advertise verified persistent Tailscale Serve fallbacks alongside `gateway.bind=lan` setup URLs, show every route in the Control UI and CLI, and let iOS save the first reachable endpoint. (#100280) Thanks @shakkernerd.
- **Control UI terminal tabs:** vertically center the new-session button in the terminal tab strip.
- **Control UI composer scrollbar:** show the message-field scrollbar only when the draft actually overflows its autosized height.
- **Control UI terminal cursor:** hide the browser-native contenteditable caret so the integrated terminal shows only its canvas-rendered cursor.
- **macOS SSH tunnels:** resolve user-installed SSH `ProxyCommand` helpers through the app's managed PATH while preserving inherited connection environment, so remote aliases work after Finder and sanitized-script launches.
- **Control UI OpenAI speed picker:** show only Standard and Fast choices for OpenAI models.
- **Control UI terminal rendering:** adopt the shared `@openclaw/libterminal` browser lifecycle and add Nerd Font fallbacks so icon-enabled shell listings render their glyphs when a compatible local font is installed.
- **Slack transcript history:** let Codex app-server own its persisted assistant replies so Slack does not append redundant delivery-mirror rows, while the Control UI keeps legacy duplicate mirrors hidden. Thanks @bek91.
- **Control UI chat history:** hide redundant channel-final delivery mirrors when the preceding app-server assistant reply already shows the same text.
- **Control UI chat spacing:** keep the first message comfortably clear of the topbar with a responsive minimum transcript inset.
- **ClawRouter auth profiles:** resolve credential-scoped catalog models during agent runs when the proxy key is stored in an auth profile, and document plugin and model allowlists.
- **Telegram durability:** retry restart-dropped media, survive transient polling errors, dead-letter poison updates, preserve forwarded rich text, route plugin callbacks correctly, keep progress updates in one stable multi-line window, map self-hosted Bot API container paths through trusted host roots, and fall back safely when Telegram rejects rich final replies. (#98102, #98735, #98775, #98776, #97174, #98907, #91984, #98786) Thanks @luoyanglang, @DaveArcher18, @obviyus, @goldmar, @Marvinthebored, @Dizesales, @shakkernerd, @AiLucasdz, and @RomneyDa.
- **Cross-channel inbound media:** preserve captions and expose unavailable-attachment notices when WhatsApp, LINE, Signal, iMessage, Microsoft Teams, Feishu, Mattermost, or Zalo cannot materialize inbound media, instead of dispatching phantom placeholders or dropping media-only turns. (#100092)
- **Agent and context reliability:** preserve runtime overrides, steered subagent tasks, fallback tool-call hints, and legacy reseed attachments; soft-resume CLI sessions across prompt-only drift; improve harness-aware context estimation; time out silent local streams; recover mid-stream failures; and cap Gateway run-cache growth. (#92237, #77539, #99851, #99839, #99822, #97928, #98525, #95430, #77973) Thanks @sercada, @amittell, @obviyus, @liuhao1024, @yetval, @osolmaz, @lzyyzznl, @vincentkoc, @alexelgier, and @fede-kamel.
- **Provider and network safety:** bound oversized or malformed responses across Moonshot, MiniMax, Anthropic OAuth, Discord, Matrix, SMS, browser, update, embeddings, Tlön, and Inworld paths. (#96502, #96322, #96644, #97693, #97662, #97999, #98455, #98508, #98554, #98496, #98660) Thanks @hugenshen, @cursoragent, @lsr911, @solodmd, @Alix-007, @wings1029, @lzyyzznl, @sunlit-deng, @vincentkoc, and @Pandah97.
- **Channel delivery and routing:** keep Slack replies in active thread sessions, preserve account-bound delivery routes, apply response prefixes, and suppress internal traces and unwanted fallback replies. (#97168, #98240, #93639, #97989, #80928) Thanks @LiuwqGit, @gorkem2020, @yetval, @ZengWen-DT, @alexuser, @UnClouded77, and @vincentkoc.
- **Cron correctness:** preserve provider and model selections on timeouts, retain startup catch-up deferrals across maintenance reads, keep action-required output, clear blank thinking overrides, and preserve provider-owned daily-reset sessions. (#95943, #94022, #96393, #96293, #98356) Thanks @ZengWen-DT, @cursoragent, @luke-renjoy, @RichChen01, @vincentkoc, @yetval, @snowzlmbot, @nz365guy, @takamasa-aiso, and @shakkernerd.
- **Memory and session recovery:** detect unindexed transcripts, preserve notes through transient reads, avoid cross-directory resumes, disambiguate reserved wiki index pages, and skip empty QMD sync work. (#97857, #98360, #97785, #94326, #90030) Thanks @zw-xysk, @CHE10X, @qingminglong, @yetval, @vincentkoc, @sahibzada-allahyar, and @ruben2000de.
- **Windows and execution:** bind allowlisted execution to the validated Windows path, propagate `PATHEXT`, normalize inbound paths case-insensitively, and prevent cleanup crashes on Windows. (#98260, #98093, #97630, #97901) Thanks @eleqtrizit, @wendy-chsy, @VectorPeak, @paulcam206, and @shakkernerd.
- **Mobile and UI stability:** preserve iOS chat line breaks and final replies, improve Android pairing and TLS recovery, hide expired pairing cards, keep workspace file rails scrollable, restore copy-path over plain HTTP, and stop rubber-band scrolling in the Mac app Control UI. (#98304, #98117, #98366, #98439, #98483, #98049, #98646, #98611, #98764, #99830) Thanks @joshavant, @Jabato01, @ooiuuii, @wuqxuan, @645648406-max, @zw-xysk, @ZengWen-DT, and @adinballew.
- **Codex and approval flows:** report ChatGPT authentication correctly, rename destructive approval mode to `ask`, classify `get_goal` read statuses accurately, and derive terminal-idle timeouts from the explicit run deadline. (#91240, #98501, #98659, #85296) Thanks @849261680, @ukstem, @kevinslin, @yetval, @alkor200, @vincentkoc, and @alkor2000.
- **Configuration and plugin health:** restrict config traversal to owned properties, preserve config-health recovery state, surface unloadable channel plugins, preserve defaulted provider base URLs during patches, validate bundled plugin updates by manifest contract, resolve public artifacts from installed plugin roots, and retain legacy ClawHub families where required. (#99846, #99728, #96397, #98396, #98010, #98819, #98249) Thanks @vincentkoc, @zenglingbiao, @joshavant, @jalehman, @ccbridle, @849261680, @momothemage, @weltmaister, @LiLan0125, @herove, @amknight, @KelTech-Services, and @Patrick-Erichsen.
- **Runtime process safety:** prevent unhandled child-stream errors in SSH tunnels, supervisors, and MCP stdio transports; keep auto-replies from waiting on transcript mirroring; and avoid splitting Unicode characters in approval previews and LINE outbound fields. (#99800, #99802, #99803, #99549, #99566, #98994) Thanks @cxbAsDev, @vincentkoc, @Shagrat2, @mikasa0818, and @LEXES7.
- **Node runtime compatibility:** installers, the CLI launcher, doctor, and the macOS app now reject incompatible Node 23 runtimes and guide users toward supported Node 22 or 24 releases. (#99832) Thanks @vincentkoc and @fuller-stack-dev.
- **SQLite WAL safety:** require Node releases with a patched SQLite runtime, verify the loaded library before opening state databases, and make installers upgrade and validate unsafe runtimes across supported platforms. (#106065) Thanks @vincentkoc.
- **Installer temporary-file cleanup:** remove Node staging directories and pnpm workspace rewrite files when downloads or rewrites fail. (#103725) Thanks @SebTardif.
- **QQBot media delivery:** scope sandbox-generated media sends to the active session's workspace so `/workspace/...` and relative generated-file paths resolve safely across QQBot media tags, structured payloads, and streaming delivery. (#92872) Thanks @zhangguiping-xydt and @sliverp.
### Complete contribution record
The full contribution record is available in the tag-pinned [CHANGELOG.md](https://github.com/openclaw/openclaw/blob/v2026.7.1/CHANGELOG.md#complete-contribution-record).
### Release verification
- npm package: https://www.npmjs.com/package/openclaw/v/2026.7.1
- registry tarball: https://registry.npmjs.org/openclaw/-/openclaw-2026.7.1.tgz
- integrity: `sha512-ge/Xss99CHAjPL/ikmH/UFoiOrjcxDB4sW3y9mhyCD+dYW3wzV7TKbAVdkrXFgAG2d2BjpJofP97zUZ+umxo8g==`
- release SHA: `2d2ddc43d0dcf71f31283d780f9fe9ff4cc04fe4`
- full release CI report: https://github.com/openclaw/releases/blob/main/evidence/2026.7.1/release-evidence.md
- release publish: https://github.com/openclaw/openclaw/actions/runs/29269577304
- npm preflight: https://github.com/openclaw/openclaw/actions/runs/29268707256
- full release validation: https://github.com/openclaw/openclaw/actions/runs/29257432684
- plugin npm publish: https://github.com/openclaw/openclaw/actions/runs/29270283750
- plugin ClawHub publish: https://github.com/openclaw/openclaw/actions/runs/29270285823
- plugin ClawHub bootstrap: not needed
- OpenClaw npm publish: https://github.com/openclaw/openclaw/actions/runs/29272090669
- npm Telegram beta E2E: not supplied
- Windows Hub promotion: https://github.com/openclaw/openclaw/actions/runs/29274408977 from openclaw/
[email protected]
- macOS preflight: [https://github.com/openclaw/releases/actions/runs/29293062505](https://github.com/openclaw/releases/actions/runs/29293062505)
- macOS validation: [https://github.com/openclaw/releases/actions/runs/29293060837](https://github.com/openclaw/releases/actions/runs/29293060837)
- macOS publish: [https://github.com/openclaw/releases/actions/runs/29299988328](https://github.com/openclaw/releases/actions/runs/29299988328)
- macOS appcast: [https://github.com/openclaw/openclaw/pull/106993](https://github.com/openclaw/openclaw/pull/106993)
- Android release: [https://github.com/openclaw/openclaw/actions/runs/29293423573](https://github.com/openclaw/openclaw/actions/runs/29293423573)
- stable main closeout: [https://github.com/openclaw/openclaw/actions/runs/29302553990](https://github.com/openclaw/openclaw/actions/runs/29302553990)
- immutable closeout manifest: [manifest](https://github.com/openclaw/openclaw/releases/download/v2026.7.1/openclaw-2026.7.1-stable-main-closeout.json) · [checksum](https://github.com/openclaw/openclaw/releases/download/v2026.7.1/openclaw-2026.7.1-stable-main-closeout.json.sha256)
- Linux package and Gateway smoke: [https://crabbox.openclaw.ai/portal/runs/run_c3257c19e269](https://crabbox.openclaw.ai/portal/runs/run_c3257c19e269)
## 2026.7.1
### 重点
- **新增模型与提供商:** 新增 Featherless、Claude Sonnet 5、Mythos 5、Meta Muse Spark 1.1 及 ClawRouter;将 GPT-5.6 设为新安装默认模型,为 Sol 和 Terra 启用 `/think ultra`,为 Luna 启用 `max`,尊重 Z.AI 的 `max` 设置,并在 OAuth 续期后刷新模型可用性。(#101092, #98254, #101238, #102873, #103070, #103163, #99658, #99759, #98333, #103581, #98021, #104778, #102289)感谢 @vincentkoc, @vortexopenclaw, @HamidShojanazeri, @davemorin, @Solvely-Colin, @jalehman, @steipete-oai, @bdjben, @obviyus, @sallyom, @anyech, @100yenadmin, 和 @fuller-stack-dev。
- **控制界面与原生 macOS 聊天:** 将会话设为主要视图,附带可搜索的最小侧边栏、紧凑的上下文环、推理努力度滑块、更简洁的仪表盘框架,以及原生 macOS 会话浏览器,包含模型与思考选择器、斜杠命令、对话导出和上下文用量显示。(#99289, #99838, #100386, #101103, #101497)
- **对话式引导:** Crestodian 现在在 CLI、Web 安装和 macOS 应用中运行真正的代理循环设置流程,包括 AI 引导的提供商设置、绑定到具体操作的模型判断批准、掩码凭据提示,以及无可用模型时的确定型回退。(#99935, #100029, #100656, #101887)感谢 @fuller-stack-dev。
- **离线与语音移动端聊天:** iOS 和 Android 现在离线预渲染每个网关的有界会话和对话缓存;Apple Watch 获得完整语音对话功能,iOS 可通过配置的 Gateway TTS 朗读回复,并在设备端提供回退。(#100219, #100227, #100283, #100770, #100771)
- **会话组织与自动标题:** 通过工具模型路由生成简洁会话标题,新增基于 Gateway 的分组、未读状态、重命名、分支、归档和删除控制,并在 Web、iOS 和 Android 上实现分组管理。(#87643, #100814, #101117, #101234)感谢 @zhangguiping-xydt 和 @Juliangsm。
- **Telegram 与 Codex 连续性:** 通过私有 `/login` 配对 Codex,使用 `/steer` 和 `/tell` 操控正在运行的任务,在缺少对话确认时保留消息,安全采用持久对话轮次,并在 Telegram 格式化和洪水等待失败后恢复最终发送。(#98006, #98126, #98786, #103664, #103916)感谢 @100yenadmin, @Kyzcreig, @obviyus, 和 @jalehman。
- **启动与升级恢复:** 在 Gateway 就绪前运行容器迁移,阻止可恢复的遗留状态阻塞启动,并在多次非干净启动后进入控制平面安全模式,防止重启抖动。(#101881, #104529)修复 #98565 感谢 @sallyom, @jacobtomlinson, @bdjben, @obviyus, 和 @shakkernerd。
### 变更
- **Meta 提供商:** 新增捆绑的 `muse-spark-1.1` Responses API 支持,包含流式传输、工具调用、加密推理回放、引导流程、精确模型实时验证,以及作为 `@openclaw/meta-provider` 独立 npm/ClawHub 分发包。(#102873, #103070, #103163)感谢 @HamidShojanazeri, @davemorin, @Solvely-Colin, @jalehman, 和 @vincentkoc。
- **Android 聊天代理选择器:** 在实时聊天界面直接切换活跃代理,同时保持聊天、对话模式和主画布在同一规范会话中。(#80422)感谢 @bcperry 和 @joshavant。
- **Gateway 主机状态:** 在控制界面设置中显示已连接 Gateway 的主机、网络地址、操作系统、运行时、运行时间、CPU、内存和磁盘详情。(#100478)
- **Gateway 崩溃循环恢复:** 持久化启动结果,多次非干净启动后进入控制平面安全模式,待恢复完成前保持传输和提供商激活状态,对于致命配置错误以 `EX_CONFIG` 退出,使 systemd 和 launchd 停止重启抖动。感谢 @obviyus。
- **iOS 离线聊天:** 从受保护的有界每网关缓存中预渲染最近的会话和规范对话,离线时禁用发送功能,配对重置时清除缓存的对话文本。(#100219)
- **Slack 进度指示器:** 默认使用 Slack 原生助手线程状态和轮转加载消息,同时保持确认反应静态;生命周期反应更新现在需要 `messages.statusReactions.enabled: true`。
- **控制界面对话控制:** 将语音、模型、灵敏度及其他实时默认设置保留在设置 → 通信 → 对话中,并使用编辑器麦克风标记选择任意浏览器音频输入。(#101046)
- **Cron 模型选择:** 在控制界面的快速创建中选择代理轮模型,并在 cron 任务行和详情中显示已配置或默认模型。(#95341)感谢 @ly85206559。
- **控制界面 GitHub 预览:** 在悬停和键盘聚焦卡片中显示问题与拉取请求的状态、标题、作者、活动、评论和变更统计。(#100434)
- **日志本工作日志:** 新增默认禁用的捆绑插件,将配对节点的屏幕快照转换为私有时间线、每日站会和基于时间线的问答,显示在插件贡献的控制界面标签页中。(#99930)
- **控制界面消息上下文:** 悬停或激活时间戳时显示每条消息的 token 数、上下文和模型详情,替代独立的“上下文”按钮。
- **控制界面会话标题:** 使用减少运动安全的悬停动画显示截断的最近会话名称。
- **控制界面侧边栏导航:** 显示小型可自定义的固定目标集合,其余页面放在“更多”下,将“设置”移到页脚,并在浏览器中持久化侧边栏自定义设置。(#100296)感谢 @vincentkoc。
- **控制界面侧边栏用量:** 从展开的侧边栏中移除提供商用量配额行,同时保留聊天编辑器和用量页面中的用量详情。感谢 @shakkernerd。
- **Android 聊天代码高亮:** 对栅栏式 Kotlin、Swift、TypeScript、JavaScript、Python、Bash 和 JSON 代码块进行有界、主题感知的语法着色,同时为未知、部分或过大代码块保留纯文本渲染。(#100217)
- **Gateway TTS 播放:** 新增操作者范围的 `tts.speak` RPC,将已配置提供商的语音作为内联整段音频返回给远程客户端。(#100770)
- **控制界面上下文用量:** 打开聊天上下文环时显示上下文窗口进度、最近运行的输入/输出 token 数以及活跃模型。
- **Apple Watch 语音轮次:** 从 Watch 聊天中口述消息,并听到新的 OpenClaw 回复通过 Watch 朗读,提供显式的静音消息和停止朗读控制。(#100224)感谢 @vincentkoc。
- **对话式引导:** 在 CLI、Gateway、Web 安装和 macOS 应用中新增真正的代理循环 Crestodian 设置流程,包含类型化操作、精确批准绑定、掩码凭据提示、隔离的会话对话以及安全移交给正常代理。感谢 @vincentkoc。
- **生成的会话标题:** 根据第一条消息为新控制界面会话命名,并添加默认/每代理 `utilityModel` 路由,用于更低成本的会话、主题和线程标题生成。感谢 @Juliangsm, @zhangguiping-xydt, 和 @vincentkoc。
- **ClawRouter 路由与配额:** 新增捆绑的 ClawRouter 提供商插件,支持凭据范围的动态模型发现、兼容 OpenAI 以及原生的 Anthropic/Gemini 传输,并在 OpenClaw 用量界面上提供受管预算报告。(#99658)
- **模型与提供商覆盖:** 新增 GPT-5.6 支持,使用 Nemotron Super 的 100 万上下文窗口,并保留显式的 OpenRouter 认证头。(#98333, #98726, #98187)感谢 @steipete-oai, @eleqtrizit, @sunlit-deng, @laurencebrown, 和 @shakkernerd。
- **CLI 与节点工作流:** 新增 `openclaw attach`、节点上下文路径支持、可操作的设备批准恢复指引、提示元数据变化时的软恢复 CLI 会话,以及更清晰的插件安装退出诊断。(#96454, #97679, #98115, #98146, #98497, #99822)感谢 @anagnorisis2peripeteia, @obviyus, @wm0018, @welfo-beo, @RomneyDa, @Sanjays2402, 和 @vincentkoc。
- **Cron 与用量:** 新增退出触发的调度、分离的会话目标运行以及运行中作业医生警告,同时使现有用量页脚在 Telegram 上更易换行。(#92037, #98755, #98620, #92877)感谢 @anagnorisis2peripeteia, @obviyus, @EthanSK, @masatohoshino, @Marvinthebored, 和 @vincentkoc。
- **原生应用与本地化:** 现代化 iOS 呈现、聊天、对话、引导和重连流程;新增 Gateway 语音提供商;改进二维码引导和协议恢复;从 macOS 安装本地 Gateway;本地化核心 Apple 和 Android 界面;新增瑞典语移动端本地化。(#98452, #98736, #99243, #98376, #98302, #98385, #99767, #97110, #97111, #97112, #97113, #98043)感谢 @jcooley8, @Tony-ooo, @joelnishanth, @cursoragent, @joshavant, @vincentkoc, 和 @yeager。
- **消息能力:** 新增原生 iMessage 投票、Telegram Codex 配对与操控、Telegram 多通道进度摘要以及 Signal 目标别名。(#98421, #98006, #98126, #98907, #95738)感谢 @omarshahine, @lobster, @100yenadmin, @Kyzcreig, @Marvinthebored, 和 @jesse-merhi。
- **本地推理与聊天控制:** 自动发现 Ollama 推理节点,新增控制界面会话优先导航、推理控制与命令选择,并在延迟工具搜索选择错误工具族时保持 OpenClaw 控制工具可用。(#99234, #99289, #99426, #99838, #99561)感谢 @100yenadmin, @joshavant, @VicZhang6, @Solvely-Colin, 和 @vincentkoc。
- **医生与诊断:** 暴露认证配置文件、工作空间、设备配对、通道插件、记忆提供商、systemd 耗尽和 Windows LAN 防火墙等方面的发现。(#97125, #97358, #97366, #97496, #97968, #98291, #98666)感谢 @giodl73-repo, @masatohoshino, 和 @joshavant。
- **策略修复预览:** 在 `doctor --fix` 期间显示需要审查的 Gateway 绑定和被拒绝的节点命令更改,但不应用它们或将其计为已修复。(#99776)感谢 @giodl73-repo。
- **对话与审查控制:** 准备作用域对话能力配置文件,并添加 Cursor Agent 作为自动审查引擎。(#98536, #97348)感谢 @hxy91819。
### 修复
- **Codex 运行时切换:** 接受捆绑的 Codex 运行时同时用于 `codex/*` 和 `openai/*` 模型路由,同时拒绝不支持的提供商/运行时组合。(#103762)
- **LM Studio 和 xAI 修复的工具调用:** 在提升序列化的纯文本工具调用时,在完成前发出终端工具调用事件,为消费者保留完整的流式生命周期。
- **Node 24 上的浏览器操作:** 保持浏览器请求取消绑定到客户端和响应生命周期,避免 Node 24.16+ 的过早中止的正文流信号,防止有效的 POST 操作在 JSON 解析后失败。感谢 @obviyus 和 @vincentkoc。
- **SecretRef 模型凭据:** 将已解析的提供商密钥保留在进程本地哨兵后面,经过认证存储、流设置、SDK 配置和受管本地提供商探测,仅在最终网络或提供商插件边界注入明文,同时保留精确值日志编辑。(#102008, #102009)
- **Telegram token 编辑:** 即使日志传输将 token 拆分成多个块,也能编辑机器人 token,防止碎片化的凭据从结构化和流式日志中泄露。(#103861)感谢 @vincentkoc。
- **Telegram 持久轮次采用:** 仅在持久代理采用后完成缓冲更新,将已采用的轮次从入站回复围栏中分离,并抑制被取代的回复,使恢复不会泄漏陈旧或重复的响应。(#103664, #103952, #103965)感谢 @obviyus 和 @vincentkoc。
- **任务投递恢复:** 在恢复任务记录时标准化旧的投递状态,使旧队列中的任务变为可运行,而不是中止注册表恢复。(#103946)修复 #103168 感谢 @bek91, @theo674, 和 @obviyus。
- **诊断提供商证据:** 为每个完成或失败的模型调用发出一个去重的 `provider.request` 时间线事件,使可选的时间线能够证明真实的提供商流量,同时避免双计终端路径。修复 #103063 感谢 @vincentkoc。
- **Lean 本地模型 shell 访问:** 将 `exec` 直接显示在默认的结构化工具搜索控件旁边,使面向编码的本地模型能够使用其 shell 回退,而不是搜索缺失的领域工具。(#101607)感谢 @vincentkoc 和 @maweibin。
- **OAuth 刷新争用诊断:** 将本地锁定路径排除在用户可见的刷新失败之外,避免重复的失败前缀,同时保留结构化的提供商和配置文件分类。(#101573)感谢 @vincentkoc。
- **Exec 批准提示:** 将后台禁用的回退警告排除在待处理的网关/节点批准之外,仅当命令实际在前台运行时才显示它们。(#101561)感谢 @vincentkoc。
- **直接轮询投递:** 通过拥有出站适配器路由直接和混合通道轮询,同时保留网关模式路由和通道选项检查。(#99950)感谢 @NianJiuZst 和 @shakkernerd。
- **代理等待硬超时快照:** 当外部 `agent.wait` 计时器在重试宽限竞争胜出时,保留规范的硬超时阶段和时间戳,同时使队列、耗尽和重启取消等待可修正。(#89367)感谢 @Pick-cat 和 @sunnydongbo。
- **控制界面类型化批准:** 在代理运行被阻塞时,立即通过授权的 Gateway 命令路径发送 `/approve` 命令,而不是将该命令排队在运行之后。(#101532)感谢 @vincentkoc。
- **Microsoft Teams Graph 响应边界:** 限制成功的文件上传和聊天 JSON 读取,防止过大的 Microsoft Graph 响应无限缓冲。(#97784)感谢 @Alix-007。
- **打包的语音运行时:** 停止将包支持的 `speech-core` 视为捆绑插件边车,恢复 npm 安装中的 TTS 启动,同时发布检查保持真正的激活旁路外观包完整。(#89899, #89425)感谢 @zhangguiping-xydt, @ant1b0t, 和 @vincentkoc。
- **容器镜像升级:** 在复用挂载状态时,在 Gateway 就绪前运行版本化状态迁移和插件收敛,失败时关闭并提供 `doctor --fix` 恢复指引,而不是提供半升级状态。(#101881)修复 #98565 感谢 @sallyom, @jacobtomlinson, 和 @shakkernerd。
- **插件更新可靠性:** 在核心更新期间保留已通过 ClawHub 成功切换的插件,而不是二次处理它们并在冗余的瞬时失败后禁用它们。(#105405)感谢 @vincentkoc。
- **Codex 应用服务器协议:** 要求应用服务器 0.143 或更高版本,移除 0.142 之前的线上形状兼容性,将已弃用的 `on-failure` 批准设置迁移为 Codex 配置和已保存绑定中的 `on-request`,教导 Codex 通过 `tool_search` 检索延迟的原生 `spawn_agent`,使原生子代理任务镜像在支持搜索的模型上工作,并将受管运行时更新为 0.144.1 以提高代码模式主机安装和缺失主机回退可靠性。感谢 @vincentkoc。
- **Android 硬件键盘聊天:** 在物理键盘上使用未修改的 Enter 键发送,同时保留 Shift+Enter 和其他修改的 Enter 组合用于多行输入。(#101239)感谢 @3ninyt3nin-creator 和 @vincentkoc。
- **CJK Markdown 强调:** 通过共享的 Markdown 管道渲染相邻的中文、日文和韩文强调标点,而不是在通道间泄露文字标记。(#101230, #101120)感谢 @nicknmorty 和 @j08577600-jpg。
- **备份重试清理:** 在实时写入失败后关闭部分归档输出句柄并隔离每个重试路径,防止 Windows `EBUSY` 锁在尝试间级联或留下陈旧临时归档。(#101449, #101464)感谢 @ZOOWH, @LiLan0125, @vincentkoc, @aniruddhaadak80, @shakkernerd, 和 @obviyus。
- **Codex 生成的原生子代理:** 保持父应用服务器订阅和共享客户端存活,直到生成的子原生代理完成投递结算,防止丢失唤醒和泄露一次性清理。感谢 @vincentkoc。
- **投递恢复节奏:** 在网关启动后调整符合条件的出站和重启继续重放的速度,使中断积压不会爆发到通道速率限制中,同时保留挂钟恢复预算。(#101118, #101058)感谢 @ZengWen-DT, @aniruddhaadak80, 和 @vincentkoc。
- **出站预连接恢复:** 当连接或 DNS 失败证明未发送请求时,原子性地清除旧平台发送证据,使排队的 Discord 和其他通道消息在连接恢复后能够重放,同时不削弱未知发送重复防护。(#101024, #100979)感谢 @SunnyShu0925 和 @tiffanychum。
- **Discord 流式最终消息:** 将完成回复作为新消息发送,使非活跃通道变为未读,同时保留定向 @提及,不升级为 `@everyone` 或 `@here`。(#99711, #99662)感谢 @davelutztx 和 @xena68。
- **兼容 OpenAI 的 SSE 解析:** 识别被误标为 JSON 的事件流,不添加第二个 `data:` 前缀,保留来自不合规提供商的有效流式响应。(#96503)感谢 @ZengWen-DT 和 @54meteor。
- **Meta 模型 API 契约:** 使用当前的 Meta 端点和输出 token 字段,使 `muse-spark-1.1` 验证和实时请求与提供商契约匹配。(#103680)修复 #103667 感谢 @vincentkoc, @HamidShojanazeri, @davemorin, @Solvely-Colin, 和 @jalehman。
- **LM Studio 嵌入预加载:** 在预加载嵌入模型时尊重模型和提供商级别的上下文窗口限制,防止可避免的 GPU 内存不足失败。(#100750)感谢 @zak-li, @ZOOWH, 和 @hxz398。
- **提供商过载消息:** 保持速率限制的响应分类用于重试和回退行为,同时在提供商未提供明确重试详情时使用过载措辞。(#98165)感谢 @SunnyShu0925。
- **Microsoft Teams 附件元数据:** 限制 Bot Framework `attachmentInfo` JSON 读取,并在过大流耗尽 Gateway 内存前取消它们。(#99125)感谢 @ly85206559。
- **代理认证复制顺序:** 在将凭据复制到新代理时保留源代理的可移植认证配置文件优先级,同时排除跳过的配置文件和瞬时认证状态。(#100833)感谢 @machine3at。
- **记忆会话修复:** 将日常梦境摄取记账排除在会话语料审计和修复之外,使 `memory status --fix` 保留健康的日常状态。(#93389)感谢 @Alix-007 和 @vincentkoc。
- **远程浏览器 CDP 策略:** 允许配置的 CDP 控制主机通过现有的主机名白名单,同时不扩大页面导航策略,并将严格策略发现绑定到配置的控制授权机构。(#100986, #100819)感谢 @NianJiuZst, @SarinV, 和 @vincentkoc。
- **配置取消设置诊断:** 解释何时无法取消继承或默认的配置值,而不是报告误导性的成功删除。(#96557)感谢 @moeghashim。
- **Crestodian 命令探测:** 包含 stdout 和 stderr 流故障,同时保持子进程关闭和生成错误具有权威性,防止未处理的探测崩溃。(#100741)感谢 @lsr911。
- **飞书提及转发:** 当机器人 Open ID 不可用时失败关闭,使群组消息不会被误分类为显式机器人提及。(#100891)感谢 @zhangguiping-xydt。
- **Cron 编辑投递:** 在应用部分投递更新时保留每个作业的隐式投递模式,使禁用尽力投递不再关闭分离的作业通知。(#100846)感谢 @machine3at 和 @vincentkoc。
- **控制界面会话创建:** 在选择另一个会话后,保持新创建的会话位于稳定侧边栏顺序的前端。感谢 @shakkernerd。
- **控制界面文件预览:** 使用缓存、屏幕外包含的文本块保持大型技能工作坊文件响应,同时保留换行内容、稳定文件切换、全文件复制和清晰的焦点行为。(#101319)感谢 @xianshishan, @shakkernerd, 和 @vincentkoc。
- **仅 FTS 记忆启动:** 当 `memorySearch.provider` 显式为 `none` 时跳过插件能力发现,避免不必要的冷启动扫描。
- **控制界面代理模型标签:** 在默认选择器选项中显示每个选定代理的有效模型,而不是全局模型。(#100719, #77440)感谢 @hyspacex 和 @jwong-art。
- **控制界面入站图像预览:** 在聊天历史重载后,通过认证的票据路由渲染规范的入站媒体引用。(#100725, #89591)感谢 @sweetcornna, @vergissberlin, 和 @shakkernerd。
- **小上下文压缩:** 根据已知模型上下文窗口限制有效保留空间,使小型本地模型不会从头一个 token 就开始压缩。(#100621)感谢 @vincentkoc。
- **无细节提供商失败:** 防止不透明的上游失败冷却 API 密钥认证配置文件,同时保留 WHAM 支持的 OpenAI OAuth 健康检查和已配置的模型回退。(#100617)感谢 @fabasi, @fengjikui, 和 @vincentkoc。
- **插件安装诊断:** 仅在钩子清单缺失时抑制误导性的钩子包回退,同时保留可操作的畸形钩子包错误。(#100554)感谢 @vincentkoc 和 @obviyus。
- **配置验证诊断:** 每个配置路径仅发出一次未更改的已净化验证警告负载,在干净验证后重置去重,并在瞬时无效读取和刷新失败时保留警告指纹。(#100569, #25574)感谢 @vincentkoc 和 @mcaxtr。
- **配置大小下降防护:** 将写入与可解析对象配置的规范字节进行比较,而不是原始 BOM 和缩进开销,同时保留原始审计遥测和保守的畸形输入回退。(#100591, #71865)感谢 @vincentkoc 和 @balric-seo。
- **控制界面合并更新:** 当更新加入已经在运行的 Gateway 重启时,显示清晰的重启排队完成横幅。(#93082)感谢 @goutamadwant 和 @motacola。
- **控制界面连接错误:** 为待处理的 RPC 调用者保留结构化的配对和认证失败,同时保持通用断开行为不变。(#54758)感谢 @ruanrrn。
- **iOS 嵌入式终端:** 在原生 Gateway 认证连接时,直接打开仅终端控制界面,而不是暴露 Web UI 登录屏幕。
- **TUI 启动状态:** 在连接后初始化期间显示 `starting up`,不覆盖正在运行或重连状态。(#93999)感谢 @ml12580 和 @sanjarcode。
- **控制界面重启恢复:** 在 Gateway 更新或重启后,通过有界的全文档刷新恢复陈旧捆绑页面。(#99111)感谢 @ZengWen-DT 和 @ITOrity。
- **TUI 活跃 Gateway 端口:** 当未配置显式 URL、端口或远程目标时,跟随已验证的活跃本地 Gateway 端口。(#73338, #42461)感谢 @haishmg, @vincentkoc, 和 @jackm1688。
- **Apple 聊天运行恢复:** 在重连、前台恢复和事件间隙后,从规范的 Gateway 历史中恢复活跃响应,同时在 Codex 和 Copilot 对话镜像中保留网关用户轮身份,防止重复行。(#100277)
- **Claude CLI 流式回复:** 当终端结果信封为空时,保留已从 Claude CLI 收到的助手文本,防止完整的流式回答后出现错误的空响应故障转移。(#90450)感谢 @totobusnello。
- **电话身份标准化:** 规范化多余的加号,保留非电话 iMessage 句柄,并在共享通道路由中拒绝无数字的 Signal 身份。(#100467)感谢 @morluto。
- **Tlon scry 响应边界:** 限制成功的 Urbit scry JSON 读取,并取消过大的流,而不是缓冲无界对等响应。(#100376)感谢 @hugenshen。
- **源码构建可移植性:** 保持 tsdown 配置自包含,使构建不依赖于从 unrun 的临时模块目录解析 tsdown 包。感谢 @vincentkoc。
- **代理工具调用解码:** 将保留范围的数字 HTML 实体作为文字文本保留,同时仍然解码有效的补充平面值,防止畸形模型输出向工具参数中注入孤立的 UTF-16 代理项。(#99564)感谢 @mikasa0818, @vincentkoc, @shakkernerd, 和 @maweibin。
- **Gateway 事件分发:** 捕获并记录延迟的订阅者设置和处理程序失败,而不是泄露未处理的 Promise 拒绝。(#100401)感谢 @cxbAsDev。
- **Ollama 回退路由:** 通过 Ollama 提供商钩子分类不完整的原生流,使已配置的模型回退能够推进。(#100482)感谢 @TurboTheTurtle, @8kfcf95jvp-oss, 和 @vincentkoc。
- **差异渲染:** 从一次 SSR 预加载渲染查看器和图像输出,通过水合保留语言包高亮,不区分大小写地标准化语言提示,对相同的 before/after 输入使用显式 `changed` 结果跳过,报告真实的文件渲染和输入错误,缓存哈希固定的查看器运行时,并优先使用规范文件设置而不是陈旧别名。(#100487)感谢 @vincentkoc。
- **远程浏览器可靠性:** 使用现有远程 CDP 超时预算限制持久 Playwright 标签枚举,并退役超时的连接尝试,使迟到的完成不会恢复卡住的连接。(#80147, #58968)感谢 @HemantSudarshan 和 @KeaneYan。
- **浏览器附件下载:** 当直接 Playwright 导航启动附件下载时,返回受管的 URL、文件名和路径元数据,同时验证最终 URL 后再保存字节,并保留单一所有者的显式下载。(#48045, #89416)感谢 @zhangguiping-xydt 和 @roinou532。
- **浏览器操作下载:** 当代理操作触发下载时,返回受管的 URL、文件名和路径元数据,同时保留显式所有权,验证最终 URL 后再保存字节,并将策略拒绝的标签页隔离而不关闭它们。(#93250, #93307)感谢 @sunlit-deng 和 @scorpiord。
- **受管浏览器 Cookie 持久性:** 使用非交互式加密密钥初始化新的隔离 macOS 无头配置文件,同时保留现有配置文件密钥,并通过 CDP 在受限信号回退前关闭 Chromium,使持久登录在正常的浏览器和 Gateway 重启后幸存。(#96704, #98284)感谢 @TurboTheTurtle 和 @shakkernerd。
- **MCP OAuth 响应边界:** 拒绝无正文的外部错误主体,不调用其固有无界的 `text()` 回退,同时保留 HTTP 状态和头部以进行安全的 SDK 诊断。(#98143)感谢 @Pick-cat, @wangmiao0668000666, 和 @vincentkoc。
- **Tlon 图像上传边界:** 在上传前限制远程图像获取,并在过大或卡住响应时失败关闭,而不是无限缓冲。(#100374)感谢 @hugenshen。
- **控制界面批准提示:** 防止陈旧的解决失败和忙状态清理泄漏到较新的批准或 Gateway 重连中。(#98394)感谢 @haruaiclone-droid。
- **macOS 服务 SecretRefs:** 当陈旧的 Gateway LaunchAgent 被修复或重新安装时,为保留在配置中的 SecretRef 生成 env 文件值,即使调用 shell 中没有这些变量。(#99124)感谢 @mushuiyu886 和 @1Wanker。
- **Anthropic OAuth 回调:** 保持提供商要求的 `localhost` 重定向 URI 稳定,同时允许本地回调监听器绑定显式的回环主机。(#96917)感谢 @xialonglee, @riazrahaman, 和 @vincentkoc。
- **提示释放媒体投递:** 接受活跃叶子保持的侧追加,同时嵌入式运行暂时释放其会话锁,使连续的消息工具媒体回复在不出现假会话接管失败的情况下合并。(#100490)感谢 @scotthuang 和 @vincentkoc。
- **控制界面技能过滤器:** 对齐代理和搜索控件,使用翻译标签,并保留原生复选框和单选按钮大小。(#100526)感谢 @evan-YM 和 @vincentkoc。
- **控制界面完成运行状态:** 将活跃和完成更新绑定到运行身份,使陈旧完成保持“发送”按钮可用,同时较新的运行保持活跃。(#100527)感谢 @tiffanychum, @davidstoll, 和 @shakkernerd。
- **控制界面上下文用量:** 保留陈旧的缓存总计作为近似值可见,不触发警告样式或压缩操作。(#89772)感谢 @bladin 和 @snsczssl。
- **控制界面文件预览:** 移除重复的 Escape 头部提示,同时保留关闭按钮快捷键提示和 Escape 行为。(#100528)感谢 @xianshishan 和 @vincentkoc。
- **控制界面自主工具故障:** 在后续自主恢复轮次中保留先前的工具错误结果。(#100514)感谢 @qingminglong 和 @yetval。
- **代理空回复:** 当完成的交互轮次没有可投递的回复(包括排队的后续操作)时,呈现可见的失败,同时保留显式沉默、待处理继续和已提交的副作用,尊重排队发送策略,并将压缩通知视为进展。(#100456)感谢 @mushuiyu886 和 @grox2012。
- **子进程、维护和输出加固:** 防止子输出故障使 exec 和 TUI 会话崩溃,隔离远程技能刷新和子代理清理,展示技能扫描和批准诊断,净化 ANSI 和杂散参数标记而不丢失可见文本,并在设备丢失时干净地停止 Android 音频捕获。(#100440)感谢 @cxbAsDev, @wendy-chsy, @tzy-17, @nankingjing, @NianJiuZst, @LavyaTandel, 和 @maweibin。
- **Docker 沙箱命令输出:** 当 stdout/stderr 捕获失败时,使 Docker 沙箱操作失败并终止,而不是返回成功但输出不完整。(#100523)感谢 @cxbAsDev 和 @vincentkoc。
- **Android 按下通话生命周期:** 将 Gateway PTT 准备与应用程序前台和手动麦克风所有权序列化,使延迟工作无法重启、替换或拆除更新的捕获。(#100552)感谢 @xialonglee。
- **Lean 本地模型工具:** 从 lean 代理表面修剪媒体生成、TTS 和 PDF 工具,同时保留显式配置和运行时选择加入。(#88881)感谢 @vincentkoc。
- **iOS 开发应用身份:** 保持开发应用命名为 OpenClaw,同时使用其独特的调试图标以区别于发布版本。
- **Android 聊天恢复:** 在重连和序列间隙历史快照追赶时,保留乐观的用户消息和本地拥有的运行,防止已发送消息消失或陈旧运行接管所有权。(#100197)
- **iOS QR 网关交接:** 在传递扫描的设置代码前停止 VisionKit,并将延迟的认证、批准、Watch 和前台节点工作绑定到其原始网关跨重连。(#99572)感谢 @PollyBot13。
- **代理终端故障:** 当代理运行结束时没有可见输出,显示安全的交互式回复,同时保留完成的消息工具投递和心跳特定指引。(#99304)感谢 @moeedahmed 和 @maweibin。
- **MCP 回环工具结果:** 通过 HTTP 工具调用保留架构有效的文本、图像和嵌入式资源内容,同时将畸形或协议不兼容的块渲染为安全文本。(#100336)感谢 @tzy-17, @OpenClawKobian99, @vincentkoc, @shakkernerd, 和 @maweibin。
- **控制界面工具结果图像:** 从 Gateway 历史渲染直接的图像内容块,并使延迟发送滚动 E2E 设置具有确定性。(#100295)感谢 @lzyyzznl, @Pandah97, @rquinones84, 和 @maweibin。
- **控制界面实时工具排序:** 当浏览器和 Gateway 时间戳不一致时,将助手流文本放在其匹配的工具卡前面。(#93184)感谢 @Pick-cat 和 @lileilei-camera。
- **IRC Unicode 消息:** 在 UTF-16 代码点边界上分割出站 PRIVMSG 负载,使表情符号不会被切割成孤立的代理项。(#96572)感谢 @WeeLi-009, @vincentkoc, @mushuiyu886, 和 @cursoragent。
- **OpenAI 实时语音问候:** 防止服务器 VAD 在显式问候响应拥有对话轮次时创建第二个出站问候,同时不禁用呼叫方中断。(#86285)感谢 @giodl73-repo 和 @jnikolaidis。
- **实时语音工具:** 在每个 OpenAI、Azure 和 Google 实时负载边界过滤畸形工具名称,同时保留提供商特定的有效名称。(#89175)感谢 @vincentkoc。
- **Discord 语音状态:** 将 Discord 错误 10065 视为正常的断开状态,同时保留不相关的 REST 失败。(#90969)感谢 @asock。
- **Discord 语音账户:** 按 Discord 账户隔离 `@discordjs/voice` 连接,并在网关就绪早于监听器注册时恢复自动加入。(#87530)感谢 @geekhuashan。
- **iOS 语音唤醒清理:** 在禁用非活跃的 Voice Wake 时避免初始化麦克风音频管道,防止模拟器启动中止和不必要的音频设置。
- **可靠性边缘情况:** 拒绝亚毫秒 cron 持续时间,保留生成提议中的换行,标准化空白整数输入,及时失败嵌入式 LSP 启动,暴露持久性和内存关闭失败,保持 UTF-16 和插件包验证正确,传播 Android 取消,并延迟 Codex 中继注册表写入直到监听就绪。(#100399)感谢 @cxbAsDev, @snotty, @lin-hongkuan, @849261680, @qingminglong, @anyech, @masatohoshino, @Simon-XYDT, @xialonglee, @nankingjing, @609NFT, 和 @vincentkoc。
- **语音呼叫完成状态:** 从完整保留的事件存储中解析最终呼叫,跨越 Gateway、工具和 CLI 状态路径,同时保持活跃呼叫查找性能。(#99797)感谢 @Darren2030, @NiTeCoMM-code, 和 @maweibin。
- **代理停止恢复:** 防止延迟中止的提示在拆除后重新获取孤立的会话锁,使 `/stop` 让对话准备好进行下一轮。
- **消息投递状态:** 报告失败和部分失败的尽力通道投递,而不是返回成功形状的消息工具结果。(#99928)感谢 @masatohoshino。
- **WhatsApp 凭据恢复:** 在启动时从有效备份中恢复畸形的初级认证状态。(#99070)感谢 @LeonidasLux。
- **WhatsApp 引用回复:** 保留机器人撰写出站引用元数据,使对这些消息的回复在 WhatsApp Desktop 中保持其回复气泡。(#94879)感谢 @Bartok9, @seikosantana, 和 @vincentkoc。
- **WhatsApp 重连追赶:** 在有界重连窗口内接纳最近错过的 Baileys `append` 消息,同时保留启动陈旧历史防护。(#80642)感谢 @VishalJ99。
- **WhatsApp 重启恢复:** 在注销或连接替换断开后停止自动重启循环,直到账户重新连接。(#78511)感谢 @openperf 和 @rutherlesdev。
- **本地 Gateway CLI 认证:** 将回环 CLI token/密码调用排除在耐久设备范围之外,使读取探测不会在陈旧的配对基线后面阻塞后续写入/管理命令。(#95997)感谢 @vincentkoc。
- **插件模块身份:** 当 jiti 转换插件条目时,保持 OpenClaw 包块在 Node 的原生模块图上,防止重复评估和类身份漂移。(#88384)感谢 @vincentkoc 和 @ScientificProgrammer。
- **Shell 补全修复:** 在 doctor 和更新修复期间生成仅核心缓存,同时为引导和显式用户重建保留完整插件命令补全。(#76235)感谢 @joshavant。
- **MCP 架构诊断:** 将 draft-2020-12 编译器失败归因于外部 MCP 架构,使畸形模式产生可操作的设置错误。感谢 @vincentkoc。
- **Windows 计划任务恢复:** 在现有的有界启动轮询内保持干净的早期退出,仅当任务进程和 Gateway 监听器都不可观察时才回退。
- **iMessage 群组警告:** 当有效的群组发送者白名单可以接纳群组时,抑制虚假的“全部删除”启动警告,并将真正的空白名单配置指向正确的补救措施。(#100046)
- **控制界面移动端登录:** 在连接失败后保持 Gateway 恢复指引可见,使断开网关在受限屏幕上安全滚动,并改善移动端键盘和点击目标行为。(#100208)
- **TUI 流式传输:** 在实时 Gateway 和嵌入式 TUI 会话中仅渲染增量助手事件,而不是等待最终响应。(#83000)感谢 @flashosophy。
- **模型别名:** 在会话和聊天命令模型切换期间解析提供商限定别名,当提供商共享显示别名时避免冲突。(#100209)感谢 @sahilsatralkar, @david-r-jones, @shakkernerd, 和 @vincentkoc。
- **TUI 新会话钩子:** 通过共享的 Gateway 生命周期创建 `/new` 会话,使命令和会话钩子在 Gateway 和嵌入式模式下都能收到完整的父对话,同时在活跃轮次期间防止翻转。(#100241, #49918)感谢 @BingqingLyu, @caopulan, @LonExplorer-coder, 和 @vincentkoc。
- **TUI 中止诊断:** 在 Gateway 和本地 TUI 模式下显示已中止运行的净化工具参数验证摘要,而不暴露原始模型参数。(#91002)感谢 @wsyjh8 和 @taerlandsen。
- **iOS Watch 回复:** 将排队的快速回复持久化到网关范围的聊天发件箱,并通过幂等聊天投递提交,防止重连后的丢失、重复和跨网关发送。(#100372)感谢 @NianJiuZst。
- **iOS Gateway 认证重试:** 将存储的设备 token 重试限制为已解析的回环主机,并拒绝通配符绑定地址,防止远程类似主机名接收受信任的重试凭据。(#99859)感谢 @ly85206559 和 @vincentkoc。
- **Bedrock Mantle 发现:** 限制模型目录获取时间和响应大小,并释放被拒绝的响应体,使卡住、过大或失败的提供商响应安全回退。(#99961)感谢 @zhangguiping-xydt 和 @shakkernerd。
- **Discord 线程标题提示:** 在 UTF-16 边界上截断生成的标题消息和通道上下文,使表情符号不会留下畸形的模型提示文本。(#101551)感谢 @Alix-007, @vincentkoc, @mushuiyu886, 和 @cursoragent。
- **移动端配对路由:** 在 `gateway.bind=lan` 设置 URL 旁公布已验证的持久 Tailscale Serve 回退,在控制界面和 CLI 中显示每条路由,并让 iOS 保存第一个可达端点。(#100280)感谢 @shakkernerd。
- **控制界面终端标签页:** 在终端标签条中垂直居中新建会话按钮。
- **控制界面编辑器滚动条:** 仅当草稿实际溢出其自动调整高度时才显示消息字段滚动条。
- **控制界面终端光标:** 隐藏浏览器原生 contenteditable 插入符号,使集成终端仅显示其画布渲染的光标。
- **macOS SSH 隧道:** 通过应用的受管 PATH 解析用户安装的 SSH `ProxyCommand` 辅助程序,同时保留继承的连接环境,使远程别名在 Finder 和净化脚本启动后工作。
- **控制界面 OpenAI 速度选择器:** 只为 OpenAI 模型显示“标准”和“快速”选项。
- **控制界面终端渲染:** 采用共享的 `@openclaw/libterminal` 浏览器生命周期,并添加 Nerd Font 回退,使启用图标的 shell 列表在安装了兼容本地字体时渲染其字形。
- **Slack 对话历史:** 让 Codex 应用服务器拥有其持久化的助手回复,使 Slack 不会附加重复的投递镜像行,同时控制界面保持遗留的重复镜像隐藏。感谢 @bek91。
- **控制界面聊天历史:** 当前面的应用服务器助手回复已经显示相同文本时,隐藏冗余的通道最终投递镜像。
- **控制界面聊天间距:** 使用响应式最小对话嵌入,使第一条消息与顶栏保持舒适的间距。
- **ClawRouter 认证配置文件:** 当代理密钥存储在认证配置文件中时,在代理运行期间解析凭据范围的目录模型,并记录插件和模型白名单。
- **Telegram 耐久性:** 重试重启丢弃的媒体,存活瞬时轮询错误,死信毒更新,保留转发的富文本,正确路由插件回调,将进度更新保持在一个稳定的多行窗口中,通过受信任的主机根映射自托管 Bot API 容器路径,并在 Telegram 拒绝富文本最终回复时安全回退。(#98102, #98735, #98775, #98776, #97174, #98907, #91984, #98786)感谢 @luoyanglang, @DaveArcher18, @obviyus, @goldmar, @Marvinthebored, @Dizesales, @shakkernerd, @AiLucasdz, 和 @RomneyDa。
- **跨通道入站媒体:** 当 WhatsApp、LINE、Signal、iMessage、Microsoft Teams、飞书、Mattermost 或 Zalo 无法实现入站媒体时,保留标题并展示不可用附件通知,而不是调度幻影占位符或丢弃仅媒体轮次。(#100092)
- **代理与上下文可靠性:** 保留运行时覆盖、操控的子代理任务、回退工具调用提示和遗留再种子附件;在仅提示漂移时软恢复 CLI 会话;改进感知测试的上下文估计;超时沉默的本地流;恢复流中失败;并限制 Gateway 运行缓存增长。(#92237, #77539, #99851, #99839, #99822, #97928, #98525, #95430, #77973)感谢 @sercada, @amittell, @obviyus, @liuhao1024, @yetval, @osolmaz, @lzyyzznl, @vincentkoc, @alexelgier, 和 @fede-kamel。
- **提供商与网络安全:** 限制 Moonshot、MiniMax、Anthropic OAuth、Discord、Matrix、SMS、浏览器、更新、嵌入、Tlön 和 Inworld 路径上过大或畸形的响应。(#96502, #96322, #96644, #97693, #97662, #97999, #98455, #98508, #98554, #98496, #98660)感谢 @hugenshen, @cursoragent, @lsr911, @solodmd, @Alix-007, @wings1029, @lzyyzznl, @sunlit-deng, @vincentkoc, 和 @Pandah97。
- **通道投递与路由:** 将 Slack 回复保持在活跃线程会话中,保留账户绑定的投递路由,应用回复前缀,并抑制内部追踪和不希望的回退回复。(#97168, #98240, #93639, #97989, #80928)感谢 @LiuwqGit, @gorkem2020, @yetval, @ZengWen-DT, @alexuser, @UnClouded77, 和 @vincentkoc。
- **Cron 正确性:** 在超时时保留提供商和模型选择,在维护读取期间保留启动追赶延迟,保持需要操作的输出,清除空白思考覆盖,并保留提供商拥有的每日重置会话。(#95943, #94022, #96393, #96293, #98356)感谢 @ZengWen-DT, @cursoragent, @luke-renjoy, @RichChen01, @vincentkoc, @yetval, @snowzlmbot, @nz365guy, @takamasa-aiso, 和 @shakkernerd。
- **记忆与会话恢复:** 检测未索引的对话,在瞬时读取中保留笔记,避免跨目录恢复,区分保留的 wiki 索引页面,并跳过空 QMD 同步工作。(#97857, #98360, #97785, #94326, #90030)感谢 @zw-xysk, @CHE10X, @qingminglong, @yetval, @vincentkoc, @sahibzada-allahyar, 和 @ruben2000de。
- **Windows 与执行:** 将白名单执行绑定到已验证的 Windows 路径,传播 `PATHEXT`,不区分大小写地标准化入站路径,并防止 Windows 上的清理崩溃。(#98260, #98093, #97630, #97901)感谢 @eleqtrizit, @wendy-chsy, @VectorPeak, @paulcam206, 和 @shakkernerd。
- **移动端与 UI 稳定性:** 保留 iOS 聊天换行和最终回复,改善 Android 配对和 TLS 恢复,隐藏过期配对卡片,保持工作空间文件导轨可滚动,恢复纯 HTTP 上的复制路径,并停止 Mac 应用控制界面中的橡皮筋滚动。(#98304, #98117, #98366, #98439, #98483, #98049, #98646, #98611, #98764, #99830)感谢 @joshavant, @Jabato01, @ooiuuii, @wuqxuan, @645648406-max, @zw-xysk, @ZengWen-DT, 和 @adinballew。
- **Codex 与批准流程:** 正确报告 ChatGPT 认证,将破坏性批准模式重命名为 `ask`,准确分类 `get_goal` 读取状态,并从显式运行截止时间推导终端空闲超时。(#91240, #98501, #98659, #85296)感谢 @849261680, @ukstem, @kevinslin, @yetval, @alkor200, @vincentkoc, 和 @alkor2000。
- **配置与插件健康:** 将配置遍历限制为拥有的属性,保留配置健康恢复状态,显示不可加载的通道插件,在修补期间保留默认的提供商基础 URL,通过清单契约验证捆绑的插件更新,从已安装的插件根解析公共工件,并在需要时保留遗留的 ClawHub 家族。(#99846, #99728, #96397, #98396, #98010, #98819, #98249)感谢 @vincentkoc, @zenglingbiao, @joshavant, @jalehman, @ccbridle, @849261680, @momothemage, @weltmaister, @LiLan0125, @herove, @amknight, @KelTech-Services, 和 @Patrick-Erichsen。
- **运行时进程安全:** 防止 SSH 隧道、监控器和 MCP stdio 传输中出现未处理的子流错误;使自动回复不等待对话镜像;避免在批准预览和 LINE 出站字段中分割 Unicode 字符。(#99800, #99802, #99803, #99549, #99566, #98994)感谢 @cxbAsDev, @vincentkoc, @Shagrat2, @mikasa0818, 和 @LEXES7。
- **Node 运行时兼容性:** 安装程序、CLI 启动器、doctor 和 macOS 应用现在拒绝不兼容的 Node 23 运行时,并引导用户使用受支持的 Node 22 或 24 版本。(#99832)感谢 @vincentkoc 和 @fuller-stack-dev。
- **QQBot 媒体投递:** 将沙箱生成的媒体发送范围限定到活跃会话的工作空间,使 `/workspace/...` 和相对生成文件路径在 QQBot 媒体标签、结构化负载和流式投递中安全解析。(#92872)感谢 @zhangguiping-xydt 和 @sliverp。
### 完整贡献记录
完整贡献记录可在标签固定的 [CHANGELOG.md](https://github.com/openclaw/openclaw/blob/v2026.7.1-beta.6/CHANGELOG.md#complete-contribution-record) 中查看。
### 发布验证
- npm 包: https://www.npmjs.com/package/openclaw/v/2026.7.1-beta.6
- 注册表 tarball: https://registry.npmjs.org/openclaw/-/openclaw-2026.7.1-beta.6.tgz
- 完整性校验: `sha512-hhLSRZoWsg8MlB2+bDoA/gyaQah1qOpG+6irbXXfq1LJCL5mBf+RVzV7ZMls/uwGG5MX/eGSy66VIjsImnixUg==`
- 发布 SHA: `a783a2b283d1eacd91ba65a891a38c89b1e6f790`
- 完整发布 CI 报告: https://github.com/openclaw/releases/blob/main/evidence/2026.7.1-beta.6/release-evidence.md
- 发布发布: https://github.com/openclaw/openclaw/actions/runs/29216340587
- npm 预检: https://github.com/openclaw/openclaw/actions/runs/29203712253
- 完整发布验证: https://github.com/openclaw/openclaw/actions/runs/29210289020
- 插件 npm 发布: https://github.com/openclaw/openclaw/actions/runs/29215244776 (71 个包), https://github.com/openclaw/openclaw/actions/runs/29216661693 (1 个包恢复), https://github.com/openclaw/openclaw/actions/runs/29217679822 (最终 72 个包核对)
- 插件 ClawHub 发布: https://github.com/openclaw/openclaw/actions/runs/29216663285 (72 个包)
- 插件 ClawHub 引导: 不需要
- npm Telegram Beta E2E: 未提供
## 2026.7.1
### Highlights
- **New models and providers:** add Featherless, Claude Sonnet 5 and Mythos 5, Meta Muse Spark 1.1, and ClawRouter; make GPT-5.6 the new-setup default with `/think ultra` for Sol and Terra plus `max` for Luna, honor Z.AI `max`, and refresh model availability after OAuth renewal. (#101092, #98254, #101238, #102873, #103070, #103163, #99658, #99759, #98333, #103581, #98021, #104778, #102289) Thanks @vincentkoc, @vortexopenclaw, @HamidShojanazeri, @davemorin, @Solvely-Colin, @jalehman, @steipete-oai, @bdjben, @obviyus, @sallyom, @anyech, @100yenadmin, and @fuller-stack-dev.
- **Control UI and native macOS chat:** make sessions primary with a minimal searchable sidebar, compact context ring, reasoning-effort slider, cleaner dashboard chrome, and a native macOS session browser with model and thinking pickers, slash commands, transcript export, and context usage. (#99289, #99838, #100386, #101103, #101497)
- **Conversational onboarding:** Crestodian now runs a real agent-loop setup across the CLI, web install, and macOS app, with AI-guided provider setup, model-judged approvals bound to exact operations, masked credential prompts, and deterministic fallback when no model is available. (#99935, #100029, #100656, #101887) Thanks @fuller-stack-dev.
- **Offline and spoken mobile chat:** iOS and Android now pre-paint bounded per-gateway session and transcript caches offline; Apple Watch gains full voice turns, and iOS can speak replies through configured Gateway TTS with on-device fallback. (#100219, #100227, #100283, #100770, #100771)
- **Session organization and generated titles:** generate concise session titles through utility-model routing and add Gateway-backed groups, unread state, rename, fork, archive, and delete controls, plus group management across web, iOS, and Android. (#87643, #100814, #101117, #101234) Thanks @zhangguiping-xydt and @Juliangsm.
- **Telegram and Codex continuity:** pair Codex through private `/login`, steer active runs with `/steer` and `/tell`, preserve messages when transcript acknowledgement is missing, adopt durable turns safely, and recover final sends across Telegram formatting and flood-wait failures. (#98006, #98126, #98786, #103664, #103916) Thanks @100yenadmin, @Kyzcreig, @obviyus, and @jalehman.
- **Startup and upgrade recovery:** run container migrations before Gateway readiness, stop recoverable legacy state from blocking startup, and enter control-plane-safe mode after repeated unclean boots instead of restart flapping. (#101881, #104529) Fixes #98565 Thanks @sallyom, @jacobtomlinson, @bdjben, @obviyus, and @shakkernerd.
### Changes
- **Meta provider:** add bundled `muse-spark-1.1` Responses API support with streaming, tool calls, encrypted reasoning replay, onboarding, exact-model live validation, and standalone npm/ClawHub distribution as `@openclaw/meta-provider`. (#102873, #103070, #103163) Thanks @HamidShojanazeri, @davemorin, @Solvely-Colin, @jalehman, and @vincentkoc.
- **Android chat agent selector:** switch the active agent directly from the live chat screen while keeping chat, Talk mode, and home canvas on the same canonical session. (#80422) Thanks @bcperry and @joshavant.
- **Gateway host status:** show the connected Gateway's host, network address, OS, runtime, uptime, CPU, memory, and disk details in Control UI Settings. (#100478)
- **Gateway crash-loop recovery:** persist boot outcomes, enter control-plane-safe mode after repeated unclean starts, hold transport and provider activation until recovery, and exit with `EX_CONFIG` for fatal configuration errors so systemd and launchd stop restart flapping. Thanks @obviyus.
- **iOS offline chat:** pre-paint recent sessions and canonical transcripts from a protected, bounded per-gateway cache, keep sending disabled offline, and purge cached conversation text when pairing is reset. (#100219)
- **Slack progress indicators:** use Slack's native assistant thread status and rotating loading messages by default while keeping acknowledgement reactions static; lifecycle reaction updates now require `messages.statusReactions.enabled: true`.
- **Control UI Talk controls:** keep voice, model, sensitivity, and other realtime defaults in Settings → Communications → Talk, and use the composer microphone caret to select any browser audio input. (#101046)
- **Cron model selection:** choose an agent-turn model in Control UI Quick Create and show configured or default models in cron job rows and details. (#95341) Thanks @ly85206559.
- **Control UI GitHub previews:** show issue and pull request state, title, author, activity, comments, and change statistics in hover and keyboard-focus cards. (#100434)
- **Logbook work journal:** add a disabled-by-default bundled plugin that turns paired-node screen snapshots into a private timeline, daily standup, and timeline-grounded Q&A in a plugin-contributed Control UI tab. (#99930)
- **Control UI message context:** reveal per-message token, context, and model details from the timestamp on hover or activation instead of showing a separate Context button.
- **Control UI session titles:** reveal truncated recent-session names with a reduced-motion-safe hover animation.
- **Control UI sidebar navigation:** show a small customizable pinned destination set, keep the remaining pages under More, move Settings to the footer, and persist sidebar customization in the browser. (#100296) Thanks @vincentkoc.
- **Control UI sidebar usage:** remove the provider usage quota row from the expanded sidebar while keeping usage details available in the chat composer and Usage page. Thanks @shakkernerd.
- **Android chat code highlighting:** render fenced Kotlin, Swift, TypeScript, JavaScript, Python, Bash, and JSON blocks with bounded, theme-aware syntax colors while preserving plain rendering for unknown, partial, or oversized blocks. (#100217)
- **Gateway TTS playback:** add an operator-scoped `tts.speak` RPC that returns configured-provider speech as inline whole-clip audio for remote clients. (#100770)
- **Control UI context usage:** show context-window progress, latest-run input/output tokens, and the active model when the chat context ring is opened.
- **Apple Watch voice turns:** dictate a message from the Watch chat and hear the new OpenClaw reply spoken on the Watch, with explicit silent-message and stop-speaking controls. (#100224) Thanks @vincentkoc.
- **Conversational onboarding:** add a real agent-loop Crestodian setup flow across the CLI, Gateway, web install, and macOS app, with typed operations, exact approval binding, masked credential prompts, isolated session transcripts, and safe handoff to the normal agent. Thanks @vincentkoc.
- **Generated session titles:** name new Control UI sessions from their first message, and add default/per-agent `utilityModel` routing for lower-cost session, topic, and thread title generation. Thanks @Juliangsm, @zhangguiping-xydt, and @vincentkoc.
- **ClawRouter routing and quotas:** add the bundled ClawRouter provider plugin with credential-scoped dynamic model discovery, OpenAI-compatible and native Anthropic/Gemini transports, and managed budget reporting across OpenClaw usage surfaces. (#99658)
- **Model and provider coverage:** add GPT-5.6 support, use Nemotron Super's 1M context window, and preserve explicit OpenRouter authentication headers. (#98333, #98726, #98187) Thanks @steipete-oai, @eleqtrizit, @sunlit-deng, @laurencebrown, and @shakkernerd.
- **CLI and node workflows:** add `openclaw attach`, node context-path support, actionable device-approval recovery guidance, soft-resume CLI sessions when prompt metadata changes, and clearer plugin install exit diagnostics. (#96454, #97679, #98115, #98146, #98497, #99822) Thanks @anagnorisis2peripeteia, @obviyus, @wm0018, @welfo-beo, @RomneyDa, @Sanjays2402, and @vincentkoc.
- **Cron and usage:** add exit-triggered schedules, detached session-targeted runs, and an in-flight job doctor warning, while making the existing usage footer easier to wrap on Telegram. (#92037, #98755, #98620, #92877) Thanks @anagnorisis2peripeteia, @obviyus, @EthanSK, @masatohoshino, @Marvinthebored, and @vincentkoc.
- **Native apps and localization:** modernize iOS presentation, Chat, Talk, onboarding, and reconnect flows; add Gateway speech providers; improve QR onboarding and protocol recovery; install the local Gateway from macOS; localize core Apple and Android surfaces; and add Swedish mobile localization. (#98452, #98736, #99243, #98376, #98302, #98385, #99767, #97110, #97111, #97112, #97113, #98043) Thanks @jcooley8, @Tony-ooo, @joelnishanth, @cursoragent, @joshavant, @vincentkoc, and @yeager.
- **Messaging capabilities:** add native iMessage polls, Telegram Codex pairing and steering, Telegram multi-lane progress summaries, and Signal target aliases. (#98421, #98006, #98126, #98907, #95738) Thanks @omarshahine, @lobster, @100yenadmin, @Kyzcreig, @Marvinthebored, and @jesse-merhi.
- **Local inference and chat controls:** auto-discover Ollama inference nodes, add Control UI session-first navigation, reasoning controls, and command picking, and keep OpenClaw control tools available when deferred tool search selects the wrong tool family. (#99234, #99289, #99426, #99838, #99561) Thanks @100yenadmin, @joshavant, @VicZhang6, @Solvely-Colin, and @vincentkoc.
- **Doctor and diagnostics:** expose auth-profile, workspace, device-pairing, channel-plugin, memory-provider, systemd exhaustion, and Windows LAN firewall findings. (#97125, #97358, #97366, #97496, #97968, #98291, #98666) Thanks @giodl73-repo, @masatohoshino, and @joshavant.
- **Policy repair previews:** show review-required Gateway bind and denied node-command changes during `doctor --fix` without applying them or counting the findings as repaired. (#99776) Thanks @giodl73-repo.
- **Conversation and review controls:** prepare scoped conversation capability profiles and add Cursor Agent as an autoreview engine. (#98536, #97348) Thanks @hxy91819.
### Fixes
- **Codex runtime switching:** accept the bundled Codex runtime for both `codex/*` and `openai/*` model routes while keeping unsupported provider/runtime pairs rejected. (#103762)
- **LM Studio and xAI repaired tool calls:** emit the terminal tool-call event before completion when promoting serialized plain-text tool calls, preserving the complete streaming lifecycle for consumers.
- **Browser actions on Node 24:** keep browser request cancellation bound to the client and response lifetime instead of Node 24.16+'s prematurely aborted body-stream signal, preventing valid POST actions from failing after JSON parsing. Thanks @obviyus and @vincentkoc.
- **SecretRef model credentials:** keep resolved provider secrets behind process-local sentinels through auth storage, stream setup, SDK configuration, and managed local-provider probing, then inject plaintext only at the final network or provider-plugin boundary while retaining exact-value log redaction. (#102008, #102009)
- **Telegram token redaction:** redact bot tokens even when log transports split them across chunks, preventing fragmented credentials from escaping structured and streamed logs. (#103861) Thanks @vincentkoc.
- **Telegram durable turn adoption:** complete spooled updates only after durable agent adoption, detach adopted turns from the ingress reply fence, and suppress superseded replies so recovery cannot leak stale or duplicate responses. (#103664, #103952, #103965) Thanks @obviyus and @vincentkoc.
- **Task delivery recovery:** normalize legacy delivery statuses while restoring task records so older queued work becomes runnable instead of aborting registry recovery. (#103946) Fixes #103168 Thanks @bek91, @theo674, and @obviyus.
- **Diagnostics provider evidence:** emit one deduplicated `provider.request` timeline event for every completed or failed model call, so opt-in timelines can prove real provider traffic without double-counting terminal paths. Fixes #103063 Thanks @vincentkoc.
- **Lean local model shell access:** keep `exec` directly visible beside the default structured Tool Search controls so coding-tuned local models can use their shell fallback instead of searching for missing domain tools. (#101607) Thanks @vincentkoc and @maweibin.
- **OAuth refresh contention diagnostics:** keep local lock paths out of user-facing refresh failures and avoid duplicate failure prefixes while preserving structured provider and profile classification. (#101573) Thanks @vincentkoc.
- **Exec approval prompts:** keep background-disabled fallback warnings out of pending gateway/node approvals and show them only after a command actually runs in the foreground. (#101561) Thanks @vincentkoc.
- **Direct poll delivery:** route direct and hybrid channel polls through the owning outbound adapter while preserving gateway-mode routing and channel option checks. (#99950) Thanks @NianJiuZst and @shakkernerd.
- **Agent wait hard-timeout snapshots:** preserve canonical hard-timeout phase and timestamps when the outer `agent.wait` timer wins the retry-grace race, while leaving queue, draining, and restart-cancelled waits correctable. (#89367) Thanks @Pick-cat and @sunnydongbo.
- **Control UI typed approvals:** send `/approve` commands immediately through the authorized Gateway command path while an agent run is blocked instead of queueing the command behind that run. (#101532) Thanks @vincentkoc.
- **Microsoft Teams Graph response bounds:** cap successful file-upload and chat JSON reads so oversized Microsoft Graph responses cannot be buffered without limit. (#97784) Thanks @Alix-007.
- **Packaged speech runtime:** stop treating package-backed `speech-core` as a bundled plugin sidecar, restoring TTS startup in npm installs while release checks keep true activation-bypassing facades package-complete. (#89899, #89425) Thanks @zhangguiping-xydt, @ant1b0t, and @vincentkoc.
- **Container image upgrades:** run versioned state migrations and plugin convergence before Gateway readiness when reusing mounted state, failing closed with `doctor --fix` recovery guidance instead of serving half-upgraded state. (#101881) Fixes #98565 Thanks @sallyom, @jacobtomlinson, and @shakkernerd.
- **Plugin update reliability:** preserve plugins successfully switched through ClawHub during core updates instead of processing them a second time and disabling them after a redundant transient failure. (#105405) Thanks @vincentkoc.
- **Codex app-server protocol:** require app-server 0.143 or newer, remove pre-0.142 wire-shape compatibility, migrate retired `on-failure` approval settings to `on-request` in Codex configuration and saved bindings, teach Codex to retrieve deferred native `spawn_agent` through `tool_search` so native subagent task mirroring works on search-capable models, and update the managed runtime to 0.144.1 for code-mode host installation and missing-host fallback reliability. Thanks @vincentkoc.
- **Android hardware keyboard chat:** send with unmodified Enter on physical keyboards while preserving Shift+Enter and other modified Enter combinations for multiline input. (#101239) Thanks @3ninyt3nin-creator and @vincentkoc.
- **CJK Markdown emphasis:** render adjacent Chinese, Japanese, and Korean emphasis punctuation through the shared Markdown pipeline instead of leaking literal markers across channels. (#101230, #101120) Thanks @nicknmorty and @j08577600-jpg.
- **Backup retry cleanup:** close partial archive output handles and isolate each retry path after live-write failures, preventing Windows `EBUSY` locks from cascading across attempts or leaving stale temp archives. (#101449, #101464) Thanks @ZOOWH, @LiLan0125, @vincentkoc, @aniruddhaadak80, @shakkernerd, and @obviyus.
- **Codex yielded native subagents:** keep the parent app-server subscription and shared client alive until yielded native subagent completion delivery settles, preventing lost wakeups and leaked one-shot cleanup. Thanks @vincentkoc.
- **Delivery recovery pacing:** pace eligible outbound and restart-continuation replays after gateway startup so outage backlogs do not burst into channel rate limits, while preserving the wall-clock recovery budget. (#101118, #101058) Thanks @ZengWen-DT, @aniruddhaadak80, and @vincentkoc.
- **Outbound pre-connect recovery:** clear stale platform-send evidence atomically when a connect or DNS failure proves no request was sent, allowing queued Discord and other channel messages to replay after connectivity returns without weakening the unknown-send duplicate guard. (#101024, #100979) Thanks @SunnyShu0925 and @tiffanychum.
- **Discord streamed finals:** send completion replies as fresh messages so inactive channels become unread, while preserving targeted mentions without escalating `@everyone` or `@here`. (#99711, #99662) Thanks @davelutztx and @xena68.
- **OpenAI-compatible SSE parsing:** recognize event streams mislabeled as JSON without prepending a second `data:` prefix, preserving valid streamed responses from non-conforming providers. (#96503) Thanks @ZengWen-DT and @54meteor.
- **Meta Model API contract:** use the current Meta endpoint and output-token field so `muse-spark-1.1` validation and live requests match the provider contract. (#103680) Fixes #103667 Thanks @vincentkoc, @HamidShojanazeri, @davemorin, @Solvely-Colin, and @jalehman.
- **LM Studio embedding preload:** honor model- and provider-level context-window limits when preloading embedding models, preventing avoidable GPU out-of-memory failures. (#100750) Thanks @zak-li, @ZOOWH, and @hxz398.
- **Provider overload messaging:** keep rate-limited responses classified for retry and fallback behavior while using overload wording when the provider supplies no explicit retry detail. (#98165) Thanks @SunnyShu0925.
- **Microsoft Teams attachment metadata:** bound Bot Framework `attachmentInfo` JSON reads and cancel oversized streams before they can exhaust Gateway memory. (#99125) Thanks @ly85206559.
- **Agent auth copy order:** preserve the source agent's portable auth-profile precedence when copying credentials to a new agent while excluding skipped profiles and transient auth state. (#100833) Thanks @machine3at.
- **Memory session repair:** keep daily dreaming ingestion bookkeeping outside session-corpus audit and repair so `memory status --fix` preserves healthy daily state. (#93389) Thanks @Alix-007 and @vincentkoc.
- **Remote browser CDP policy:** allow the configured CDP control host through an existing hostname allowlist without widening page navigation policy, while keeping strict-policy discovery bound to the configured control authority. (#100986, #100819) Thanks @NianJiuZst, @SarinV, and @vincentkoc.
- **Config unset diagnostics:** explain when an inherited or default configuration value cannot be unset instead of reporting a misleading successful deletion. (#96557) Thanks @moeghashim.
- **Crestodian command probes:** contain stdout and stderr stream failures while keeping child-process close and spawn errors authoritative, preventing unhandled probe crashes. (#100741) Thanks @lsr911.
- **Feishu mention forwarding:** fail closed when the bot Open ID is unavailable so group messages cannot be misclassified as explicit bot mentions. (#100891) Thanks @zhangguiping-xydt.
- **Cron edit delivery:** preserve each job's implicit delivery mode when applying partial delivery updates, so disabling best-effort delivery no longer turns detached job announcements off. (#100846) Thanks @machine3at and @vincentkoc.
- **Control UI session creation:** keep newly created sessions at the front of the stable sidebar order after selecting another session. Thanks @shakkernerd.
- **Control UI file previews:** keep large Skill Workshop files responsive with cached, offscreen-contained text chunks while preserving wrapped content, stable file switching, full-file copy, and clean focus behavior. (#101319) Thanks @xianshishan, @shakkernerd, and @vincentkoc.
- **FTS-only memory startup:** skip plugin capability discovery when `memorySearch.provider` is explicitly `none`, avoiding an unnecessary cold-start scan.
- **Control UI agent model labels:** show each selected agent's effective model in the Default picker option instead of the global model. (#100719, #77440) Thanks @hyspacex and @jwong-art.
- **Control UI inbound image previews:** render canonical inbound media references through the authenticated ticket route after chat-history reloads. (#100725, #89591) Thanks @sweetcornna, @vergissberlin, and @shakkernerd.
- **Small-context compaction:** cap the effective reserve against the known model context window so small local models do not enter compaction from the first token. (#100621) Thanks @vincentkoc.
- **Detail-less provider failures:** keep opaque upstream failures from cooling API-key auth profiles while preserving WHAM-backed OpenAI OAuth health checks and configured model fallback. (#100617) Thanks @fabasi, @fengjikui, and @vincentkoc.
- **Plugin install diagnostics:** suppress the misleading hook-pack fallback after plugin install failures only when the hook manifest is absent, while preserving actionable malformed hook-pack errors. (#100554) Thanks @vincentkoc and @obviyus.
- **Config validation diagnostics:** emit each unchanged sanitized validation-warning payload once per config path, reset deduplication after a clean validation, and preserve the warning fingerprint across transient invalid reads and failed refreshes. (#100569, #25574) Thanks @vincentkoc and @mcaxtr.
- **Config size-drop guard:** compare writes against canonical bytes for parseable object configs instead of raw BOM and indentation overhead, while preserving raw audit telemetry and the conservative malformed-input fallback. (#100591, #71865) Thanks @vincentkoc and @balric-seo.
- **Control UI coalesced updates:** show a clear queued-restart completion banner when an update joins an already-running Gateway restart. (#93082) Thanks @goutamadwant and @motacola.
- **Control UI connection errors:** preserve structured pairing and authentication failures for pending RPC callers while keeping generic disconnect behavior unchanged. (#54758) Thanks @ruanrrn.
- **iOS embedded terminal:** open the terminal-only Control surface directly while native Gateway authentication connects instead of exposing the Web UI login screen.
- **TUI startup status:** show `starting up` during post-connect initialization without overwriting active-run or reconnect state. (#93999) Thanks @ml12580 and @sanjarcode.
- **Control UI restart recovery:** recover stale bundle pages through a bounded whole-document refresh after Gateway updates or restarts. (#99111) Thanks @ZengWen-DT and @ITOrity.
- **TUI active Gateway ports:** follow the verified active local Gateway port when no explicit URL, port, or remote target is configured. (#73338, #42461) Thanks @haishmg, @vincentkoc, and @jackm1688.
- **Apple chat run recovery:** restore active responses from canonical Gateway history after reconnects, foreground resumes, and event gaps, while preserving gateway user-turn identity across Codex and Copilot transcript mirrors to prevent duplicate rows. (#100277)
- **Claude CLI streamed replies:** preserve assistant text already received from Claude CLI when its terminal result envelope is empty, preventing false empty-response failover after a complete streamed answer. (#90450) Thanks @totobusnello.
- **Phone identity normalization:** canonicalize stray plus signs, preserve non-phone iMessage handles, and reject digit-free Signal identities across shared channel routing. (#100467) Thanks @morluto.
- **Tlon scry response bounds:** cap successful Urbit scry JSON reads and cancel oversized streams instead of buffering unbounded peer responses. (#100376) Thanks @hugenshen.
- **Source build portability:** keep tsdown configuration self-contained so builds do not depend on resolving the tsdown package from unrun's temporary module directory. Thanks @vincentkoc.
- **Agent tool-call decoding:** preserve surrogate-range numeric HTML entities as literal text while still decoding valid supplementary-plane values, preventing malformed model output from injecting lone UTF-16 surrogates into tool arguments. (#99564) Thanks @mikasa0818, @vincentkoc, @shakkernerd, and @maweibin.
- **Gateway event dispatch:** catch and log lazy subscriber setup and handler failures instead of leaking unhandled promise rejections. (#100401) Thanks @cxbAsDev.
- **Ollama fallback routing:** classify incomplete native streams through the Ollama provider hook so configured model fallbacks can advance. (#100482) Thanks @TurboTheTurtle, @8kfcf95jvp-oss, and @vincentkoc.
- **Diffs rendering:** render viewer and image output from one SSR preload, preserve language-pack highlighting through hydration, normalize language hints case-insensitively, skip identical before/after inputs with an explicit `changed` result, report truthful file-render and input errors, cache hash-pinned viewer runtimes, and prefer canonical file settings over stale aliases. (#100487) Thanks @vincentkoc.
- **Remote browser reliability:** bound persistent Playwright tab enumeration by the existing remote CDP timeout budget and retire timed-out connection attempts so late completions cannot restore a stuck connection. (#80147, #58968) Thanks @HemantSudarshan and @KeaneYan.
- **Browser attachment downloads:** return managed URL, filename, and path metadata when direct Playwright navigation starts an attachment download, while validating final URLs before saving bytes and preserving single-owner explicit downloads. (#48045, #89416) Thanks @zhangguiping-xydt and @roinou532.
- **Browser action downloads:** return managed URL, filename, and path metadata when agent actions trigger downloads, while preserving explicit ownership, validating final URLs before saving bytes, and quarantining policy-denied tabs without closing them. (#93250, #93307) Thanks @sunlit-deng and @scorpiord.
- **Managed browser cookie persistence:** initialize new isolated macOS headless profiles with a non-interactive encryption key while preserving existing profile keys, and close Chromium through CDP before bounded signal fallback so persistent logins survive graceful browser and Gateway restarts. (#96704, #98284) Thanks @TurboTheTurtle and @shakkernerd.
- **MCP OAuth response bounds:** reject body-less foreign error bodies without calling their inherently unbounded `text()` fallback, while preserving HTTP status and headers for safe SDK diagnostics. (#98143) Thanks @Pick-cat, @wangmiao0668000666, and @vincentkoc.
- **Tlon image upload bounds:** cap remote image fetches before upload and fail closed on oversized or stalled responses instead of buffering them without a limit. (#100374) Thanks @hugenshen.
- **Control UI approval prompts:** keep stale resolve failures and busy-state cleanup from leaking across newer approvals or Gateway reconnects. (#98394) Thanks @haruaiclone-droid.
- **macOS service SecretRefs:** preserve generated env-file values for SecretRefs that remain in config when stale Gateway LaunchAgents are repaired or reinstalled without those variables in the invoking shell. (#99124) Thanks @mushuiyu886 and @1Wanker.
- **Anthropic OAuth callbacks:** keep the provider-required `localhost` redirect URI stable while allowing the local callback listener to bind an explicit loopback host. (#96917) Thanks @xialonglee, @riazrahaman, and @vincentkoc.
- **Prompt-release media delivery:** accept active-leaf-preserving side appends while an embedded run temporarily releases its session lock, so successive message-tool media replies merge without a false session-takeover failure. (#100490) Thanks @scotthuang and @vincentkoc.
- **Control UI Skills filters:** align agent and search controls, use translated labels, and preserve native checkbox and radio sizing. (#100526) Thanks @evan-YM and @vincentkoc.
- **Control UI completed-run state:** bind active and completed updates to run identities so stale completions keep Send available while newer runs remain active. (#100527) Thanks @tiffanychum, @davidstoll, and @shakkernerd.
- **Control UI context usage:** keep stale cached totals visible as approximate without triggering warning styling or Compact actions. (#89772) Thanks @bladin and @snsczssl.
- **Control UI file previews:** remove the duplicate Escape header hint while retaining the Close-button shortcut hint and Escape behavior. (#100528) Thanks @xianshishan and @vincentkoc.
- **Control UI autonomous tool failures:** preserve an earlier Tool error outcome across later autonomous recovery turns. (#100514) Thanks @qingminglong and @yetval.
- **Agent empty replies:** surface a visible failure when a completed interactive turn has no deliverable reply, including queued follow-ups, while preserving explicit silence, pending continuations, and committed side effects, honoring queued send policies, and treating compaction notices as progress. (#100456) Thanks @mushuiyu886 and @grox2012.
- **Subprocess, maintenance, and output hardening:** keep child output failures from crashing exec and TUI sessions, isolate remote skill refresh and subagent sweeps, surface skill-scan and approval diagnostics, sanitize ANSI and stray parameter markup without losing visible text, and stop Android audio capture cleanly on device loss. (#100440) Thanks @cxbAsDev, @wendy-chsy, @tzy-17, @nankingjing, @NianJiuZst, @LavyaTandel, and @maweibin.
- **Docker sandbox command output:** fail and terminate Docker sandbox operations when stdout/stderr capture breaks instead of returning success with incomplete output. (#100523) Thanks @cxbAsDev and @vincentkoc.
- **Android push-to-talk lifecycle:** serialize gateway PTT preparation with app foreground and Manual Mic ownership so delayed work cannot restart, replace, or tear down a newer capture. (#100552) Thanks @xialonglee.
- **Lean local-model tools:** trim media generation, TTS, and PDF tools from lean agent surfaces while preserving explicit config and runtime opt-ins. (#88881) Thanks @vincentkoc.
- **iOS development app identity:** keep the development app labeled OpenClaw while using its distinct debug icon to differentiate it from release builds.
- **Android chat recovery:** preserve optimistic user messages and locally owned runs while reconnect and sequence-gap history snapshots catch up, preventing sent messages from disappearing or stale runs from taking ownership. (#100197)
- **iOS QR gateway handoff:** stop VisionKit before delivering scanned setup codes, and keep deferred auth, approval, Watch, and foreground-node work bound to its originating gateway across reconnects. (#99572) Thanks @PollyBot13.
- **Agent terminal failures:** surface a safe interactive reply when an agent run ends without visible output, while preserving completed message-tool delivery and heartbeat-specific guidance. (#99304) Thanks @moeedahmed and @maweibin.
- **MCP loopback tool results:** preserve schema-valid text, image, and embedded-resource content through HTTP tool calls while rendering malformed or protocol-incompatible blocks as safe text. (#100336) Thanks @tzy-17, @OpenClawKobian99, @vincentkoc, @shakkernerd, and @maweibin.
- **Control UI tool-result images:** render direct image content blocks from Gateway history and make the delayed-send scroll E2E setup deterministic. (#100295) Thanks @lzyyzznl, @Pandah97, @rquinones84, and @maweibin.
- **Control UI live tool ordering:** keep assistant stream text before its matching tool card when browser and Gateway timestamps disagree. (#93184) Thanks @Pick-cat and @lileilei-camera.
- **IRC Unicode messages:** split outbound PRIVMSG payloads on UTF-16 code-point boundaries so emoji cannot be cut into lone surrogates. (#96572) Thanks @WeeLi-009, @vincentkoc, @mushuiyu886, and @cursoragent.
- **OpenAI realtime voice greetings:** prevent server VAD from creating a second outbound greeting while an explicit greeting response owns the turn, without disabling caller interruption. (#86285) Thanks @giodl73-repo and @jnikolaidis.
- **Realtime voice tools:** filter malformed tool names at each OpenAI, Azure, and Google realtime payload boundary while preserving provider-specific valid names. (#89175) Thanks @vincentkoc.
- **Discord voice status:** treat Discord error 10065 as a normal disconnected state while preserving unrelated REST failures. (#90969) Thanks @asock.
- **Discord voice accounts:** isolate `@discordjs/voice` connections by Discord account and recover auto-join when gateway readiness predates listener registration. (#87530) Thanks @geekhuashan.
- **iOS Voice Wake cleanup:** avoid initializing the microphone audio pipeline while disabling inactive Voice Wake, preventing simulator launch aborts and unnecessary audio setup.
- **Reliability edge cases:** reject sub-millisecond cron durations, preserve generated proposal newlines, normalize blank integer inputs and fail embedded LSP startup promptly, surface persistence and memory-close failures, keep UTF-16 and plugin package verification correct, propagate Android cancellation, and defer Codex relay registry writes until listening. (#100399) Thanks @cxbAsDev, @snotty, @lin-hongkuan, @849261680, @qingminglong, @anyech, @masatohoshino, @Simon-XYDT, @xialonglee, @nankingjing, @609NFT, and @vincentkoc.
- **Voice Call completed status:** resolve finalized calls from the full retained event store across Gateway, tool, and CLI status paths while preserving active-call lookup performance. (#99797) Thanks @Darren2030, @NiTeCoMM-code, and @maweibin.
- **Agent stop recovery:** prevent late-aborting prompts from reacquiring orphaned session locks after teardown, so `/stop` leaves the conversation ready for the next turn.
- **Message delivery status:** report failed and partially failed best-effort channel delivery instead of returning a success-shaped message-tool result. (#99928) Thanks @masatohoshino.
- **WhatsApp credential recovery:** restore malformed primary auth state from a valid backup during startup. (#99070) Thanks @LeonidasLux.
- **WhatsApp quoted replies:** preserve bot-authored outbound quote metadata so replies to those messages keep their reply bubble in WhatsApp Desktop. (#94879) Thanks @Bartok9, @seikosantana, and @vincentkoc.
- **WhatsApp reconnect catch-up:** admit recently missed Baileys `append` messages during a bounded reconnect window while preserving startup stale-history guards. (#80642) Thanks @VishalJ99.
- **WhatsApp restart recovery:** stop automatic restart loops after logged-out or connection-replaced disconnects until the account reconnects. (#78511) Thanks @openperf and @rutherlesdev.
- **Local Gateway CLI auth:** keep loopback CLI token/password calls off durable device scopes so read probes cannot block later write/admin commands behind a stale pairing baseline. (#95997) Thanks @vincentkoc.
- **Plugin module identity:** keep OpenClaw package chunks on Node's native module graph when jiti transforms plugin entries, preventing duplicate evaluation and class identity drift. (#88384) Thanks @vincentkoc and @ScientificProgrammer.
- **Shell completion repair:** generate core-only caches during doctor and update repair while preserving full plugin command completion for onboarding and explicit user rebuilds. (#76235) Thanks @joshavant.
- **MCP schema diagnostics:** attribute draft-2020-12 compiler failures to the external MCP schema so malformed patterns produce actionable setup errors. Thanks @vincentkoc.
- **Windows Scheduled Task recovery:** keep clean early exits inside the existing bounded launch poll, falling back only when neither the task process nor Gateway listener becomes observable.
- **iMessage group warnings:** suppress the false drop-all startup warning when an effective group sender allowlist can admit groups, and point true empty-allowlist configurations at the correct remedy. (#100046)
- **Control UI mobile login:** keep Gateway recovery guidance visible after connection failures, make the disconnected gate scroll safely on constrained screens, and improve mobile keyboard and tap-target behavior. (#100208)
- **TUI streaming:** render delta-only assistant events in live Gateway and embedded TUI sessions instead of waiting for the final response. (#83000) Thanks @flashosophy.
- **Model aliases:** resolve provider-qualified aliases during session and chat-command model switches without collisions when providers share a display alias. (#100209) Thanks @sahilsatralkar, @david-r-jones, @shakkernerd, and @vincentkoc.
- **TUI new-session hooks:** create `/new` sessions through the shared Gateway lifecycle so command and session hooks receive the completed parent transcript in both Gateway and embedded modes, while preventing rollover during an active turn. (#100241, #49918) Thanks @BingqingLyu, @caopulan, @LonExplorer-coder, and @vincentkoc.
- **TUI abort diagnostics:** show sanitized tool argument-validation summaries for aborted runs in both Gateway and local TUI modes without exposing raw model arguments. (#91002) Thanks @wsyjh8 and @taerlandsen.
- **iOS Watch replies:** persist queued quick replies in the gateway-scoped chat outbox and submit them through idempotent chat delivery, preventing losses, duplicates, and cross-gateway sends after reconnects. (#100372) Thanks @NianJiuZst.
- **iOS Gateway auth retry:** restrict stored device-token retry to parsed loopback hosts and reject wildcard bind addresses, preventing remote lookalike hostnames from receiving trusted retry credentials. (#99859) Thanks @ly85206559 and @vincentkoc.
- **Bedrock Mantle discovery:** bound model-catalog fetch time and response size, and release rejected response bodies so stalled, oversized, or failed provider responses fall back safely. (#99961) Thanks @zhangguiping-xydt and @shakkernerd.
- **Discord thread-title prompts:** truncate generated-title message and channel context on UTF-16 boundaries so emoji cannot leave malformed model prompt text. (#101551) Thanks @Alix-007, @vincentkoc, @mushuiyu886, and @cursoragent.
- **Mobile pairing routes:** advertise verified persistent Tailscale Serve fallbacks alongside `gateway.bind=lan` setup URLs, show every route in the Control UI and CLI, and let iOS save the first reachable endpoint. (#100280) Thanks @shakkernerd.
- **Control UI terminal tabs:** vertically center the new-session button in the terminal tab strip.
- **Control UI composer scrollbar:** show the message-field scrollbar only when the draft actually overflows its autosized height.
- **Control UI terminal cursor:** hide the browser-native contenteditable caret so the integrated terminal shows only its canvas-rendered cursor.
- **macOS SSH tunnels:** resolve user-installed SSH `ProxyCommand` helpers through the app's managed PATH while preserving inherited connection environment, so remote aliases work after Finder and sanitized-script launches.
- **Control UI OpenAI speed picker:** show only Standard and Fast choices for OpenAI models.
- **Control UI terminal rendering:** adopt the shared `@openclaw/libterminal` browser lifecycle and add Nerd Font fallbacks so icon-enabled shell listings render their glyphs when a compatible local font is installed.
- **Slack transcript history:** let Codex app-server own its persisted assistant replies so Slack does not append redundant delivery-mirror rows, while the Control UI keeps legacy duplicate mirrors hidden. Thanks @bek91.
- **Control UI chat history:** hide redundant channel-final delivery mirrors when the preceding app-server assistant reply already shows the same text.
- **Control UI chat spacing:** keep the first message comfortably clear of the topbar with a responsive minimum transcript inset.
- **ClawRouter auth profiles:** resolve credential-scoped catalog models during agent runs when the proxy key is stored in an auth profile, and document plugin and model allowlists.
- **Telegram durability:** retry restart-dropped media, survive transient polling errors, dead-letter poison updates, preserve forwarded rich text, route plugin callbacks correctly, keep progress updates in one stable multi-line window, map self-hosted Bot API container paths through trusted host roots, and fall back safely when Telegram rejects rich final replies. (#98102, #98735, #98775, #98776, #97174, #98907, #91984, #98786) Thanks @luoyanglang, @DaveArcher18, @obviyus, @goldmar, @Marvinthebored, @Dizesales, @shakkernerd, @AiLucasdz, and @RomneyDa.
- **Cross-channel inbound media:** preserve captions and expose unavailable-attachment notices when WhatsApp, LINE, Signal, iMessage, Microsoft Teams, Feishu, Mattermost, or Zalo cannot materialize inbound media, instead of dispatching phantom placeholders or dropping media-only turns. (#100092)
- **Agent and context reliability:** preserve runtime overrides, steered subagent tasks, fallback tool-call hints, and legacy reseed attachments; soft-resume CLI sessions across prompt-only drift; improve harness-aware context estimation; time out silent local streams; recover mid-stream failures; and cap Gateway run-cache growth. (#92237, #77539, #99851, #99839, #99822, #97928, #98525, #95430, #77973) Thanks @sercada, @amittell, @obviyus, @liuhao1024, @yetval, @osolmaz, @lzyyzznl, @vincentkoc, @alexelgier, and @fede-kamel.
- **Provider and network safety:** bound oversized or malformed responses across Moonshot, MiniMax, Anthropic OAuth, Discord, Matrix, SMS, browser, update, embeddings, Tlön, and Inworld paths. (#96502, #96322, #96644, #97693, #97662, #97999, #98455, #98508, #98554, #98496, #98660) Thanks @hugenshen, @cursoragent, @lsr911, @solodmd, @Alix-007, @wings1029, @lzyyzznl, @sunlit-deng, @vincentkoc, and @Pandah97.
- **Channel delivery and routing:** keep Slack replies in active thread sessions, preserve account-bound delivery routes, apply response prefixes, and suppress internal traces and unwanted fallback replies. (#97168, #98240, #93639, #97989, #80928) Thanks @LiuwqGit, @gorkem2020, @yetval, @ZengWen-DT, @alexuser, @UnClouded77, and @vincentkoc.
- **Cron correctness:** preserve provider and model selections on timeouts, retain startup catch-up deferrals across maintenance reads, keep action-required output, clear blank thinking overrides, and preserve provider-owned daily-reset sessions. (#95943, #94022, #96393, #96293, #98356) Thanks @ZengWen-DT, @cursoragent, @luke-renjoy, @RichChen01, @vincentkoc, @yetval, @snowzlmbot, @nz365guy, @takamasa-aiso, and @shakkernerd.
- **Memory and session recovery:** detect unindexed transcripts, preserve notes through transient reads, avoid cross-directory resumes, disambiguate reserved wiki index pages, and skip empty QMD sync work. (#97857, #98360, #97785, #94326, #90030) Thanks @zw-xysk, @CHE10X, @qingminglong, @yetval, @vincentkoc, @sahibzada-allahyar, and @ruben2000de.
- **Windows and execution:** bind allowlisted execution to the validated Windows path, propagate `PATHEXT`, normalize inbound paths case-insensitively, and prevent cleanup crashes on Windows. (#98260, #98093, #97630, #97901) Thanks @eleqtrizit, @wendy-chsy, @VectorPeak, @paulcam206, and @shakkernerd.
- **Mobile and UI stability:** preserve iOS chat line breaks and final replies, improve Android pairing and TLS recovery, hide expired pairing cards, keep workspace file rails scrollable, restore copy-path over plain HTTP, and stop rubber-band scrolling in the Mac app Control UI. (#98304, #98117, #98366, #98439, #98483, #98049, #98646, #98611, #98764, #99830) Thanks @joshavant, @Jabato01, @ooiuuii, @wuqxuan, @645648406-max, @zw-xysk, @ZengWen-DT, and @adinballew.
- **Codex and approval flows:** report ChatGPT authentication correctly, rename destructive approval mode to `ask`, classify `get_goal` read statuses accurately, and derive terminal-idle timeouts from the explicit run deadline. (#91240, #98501, #98659, #85296) Thanks @849261680, @ukstem, @kevinslin, @yetval, @alkor200, @vincentkoc, and @alkor2000.
- **Configuration and plugin health:** restrict config traversal to owned properties, preserve config-health recovery state, surface unloadable channel plugins, preserve defaulted provider base URLs during patches, validate bundled plugin updates by manifest contract, resolve public artifacts from installed plugin roots, and retain legacy ClawHub families where required. (#99846, #99728, #96397, #98396, #98010, #98819, #98249) Thanks @vincentkoc, @zenglingbiao, @joshavant, @jalehman, @ccbridle, @849261680, @momothemage, @weltmaister, @LiLan0125, @herove, @amknight, @KelTech-Services, and @Patrick-Erichsen.
- **Runtime process safety:** prevent unhandled child-stream errors in SSH tunnels, supervisors, and MCP stdio transports; keep auto-replies from waiting on transcript mirroring; and avoid splitting Unicode characters in approval previews and LINE outbound fields. (#99800, #99802, #99803, #99549, #99566, #98994) Thanks @cxbAsDev, @vincentkoc, @Shagrat2, @mikasa0818, and @LEXES7.
- **Node runtime compatibility:** installers, the CLI launcher, doctor, and the macOS app now reject incompatible Node 23 runtimes and guide users toward supported Node 22 or 24 releases. (#99832) Thanks @vincentkoc and @fuller-stack-dev.
- **QQBot media delivery:** scope sandbox-generated media sends to the active session's workspace so `/workspace/...` and relative generated-file paths resolve safely across QQBot media tags, structured payloads, and streaming delivery. (#92872) Thanks @zhangguiping-xydt and @sliverp.
### Complete contribution record
The full contribution record is available in the tag-pinned [CHANGELOG.md](https://github.com/openclaw/openclaw/blob/v2026.7.1-beta.6/CHANGELOG.md#complete-contribution-record).
### Release verification
- npm package: https://www.npmjs.com/package/openclaw/v/2026.7.1-beta.6
- registry tarball: https://registry.npmjs.org/openclaw/-/openclaw-2026.7.1-beta.6.tgz
- integrity: `sha512-hhLSRZoWsg8MlB2+bDoA/gyaQah1qOpG+6irbXXfq1LJCL5mBf+RVzV7ZMls/uwGG5MX/eGSy66VIjsImnixUg==`
- release SHA: `a783a2b283d1eacd91ba65a891a38c89b1e6f790`
- full release CI report: https://github.com/openclaw/releases/blob/main/evidence/2026.7.1-beta.6/release-evidence.md
- release publish: https://github.com/openclaw/openclaw/actions/runs/29216340587
- npm preflight: https://github.com/openclaw/openclaw/actions/runs/29203712253
- full release validation: https://github.com/openclaw/openclaw/actions/runs/29210289020
- plugin npm publish: https://github.com/openclaw/openclaw/actions/runs/29215244776 (71 packages), https://github.com/openclaw/openclaw/actions/runs/29216661693 (1-package recovery), https://github.com/openclaw/openclaw/actions/runs/29217679822 (final 72-package reconciliation)
- plugin ClawHub publish: https://github.com/openclaw/openclaw/actions/runs/29216663285 (72 packages)
- plugin ClawHub bootstrap: not needed
- npm Telegram beta E2E: not supplied