<!-- Release notes generated using configuration in .github/release.yml at 2800e9bb4f4536f421116a8e1e12740113e1063f -->
## What's Changed
* fix(cli): 将 ACP 权限队列的作用域限制在会话内 by @chiga0 in https://github.com/QwenLM/qwen-code/pull/11802
* feat(channels): 新增支持钉钉的共享输出模式 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11822
* feat(web-shell): 在标签页之间滑动显示当前激活的指示条 by @callmeYe in https://github.com/QwenLM/qwen-code/pull/11844
* refactor(goal): 删除第一代 Stop-hook Goal 实现 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11900
* fix(ci): 将自动修复运行器标签与排队审查分离 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11912
* feat(daemon): 本地枚举已安装的扩展技能 by @callmeYe in https://github.com/QwenLM/qwen-code/pull/11281
* feat(web-shell): 在全局轮次导航中跟随阅读位置 by @callmeYe in https://github.com/QwenLM/qwen-code/pull/11801
* feat(workflows): 通过 +Nk 指令共享每轮次 Token 预算 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11917
* feat(serve): 新增基于预算的 ACP 子进程准入机制 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/11911
* feat(cli): 为 Linux 新增 bwrap 内核沙箱后端 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/11614
* fix(cli): 恢复共享 Skill 状态及运行器 CI 检查 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11933
* fix(vscode): 弃用旧版 ACP 输入桥接 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11928
* feat(core): 支持外部推理配置及默认值 by @callmeYe in https://github.com/QwenLM/qwen-code/pull/11856
* feat(settings): 默认开启跨会话消息传递 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11840
* fix(web-shell): 在会话侧边栏显示 Qwen Live 任务 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11830
* fix(ci): 隔离运行器计划测试夹具的模块作用域 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/11938
* feat(core): 按名称运行已保存的工作流,并将工作流权限绑定至脚本内容 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11943
* feat(workflow): 在运行和恢复期间保留源引用 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11931
* refactor(vscode): 移除未使用的 Token 限制镜像 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11946
* fix(core): 将 PTY 加载原因作为参数传递,而非保存在模块状态中 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11923
* feat(workflow): 关联智能体调度与嵌套工作流调用 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11932
* docs(goal): 实现已移除,同步废弃 Stop-hook 时代的文档说明 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11922
* fix(core): 在修剪钩子匹配器时保留转义的后导空格 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11871
* feat(workflows): 新增规模指导、结构预览及大规模运行警告 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11939
* fix(core): 展开 ${session_id} 并在 Responses 协议线上添加 User-Agent by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11947
* feat(workflows): 允许模型调用声明了 whenToUse 的扩展工作流 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11957
* feat(daemon): 为 prompt 和 replay API 支持摘要投影 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11920
* ci(desktop): CLI 发布时同步发布桌面应用 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11575
* test(cli): 修复 Windows 环境下的 bwrap 沙箱测试套件 (#11968) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/11970
* fix(core): 在 MiniMax chat-completions 协议线上保留工具参数 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11842
* fix(web-shell): 阅读时停止审批面板的自动调整大小 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11930
* fix(release): 基于磁盘最低容量限制池路由验证任务 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/11972
* feat(web-shell): 新增脚注预览及每轮次来源 by @callmeYe in https://github.com/QwenLM/qwen-code/pull/11480
* fix(web-shell): 保留工具描述路径中的分隔符 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11977
* feat(telemetry): 生成 Goal 生命周期事件及指标 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11927
* feat(cli): 打开 /hooks 时重新加载钩子注册表 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11904
* fix(core): 将 Goal 轮次结束状态持久化至模型历史记录之外 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11924
* feat(serve): 准入满载时回收空闲的 ACP 子进程 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/11940
* feat(web-shell): 连接至选定的远程守护进程 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11548
* fix(web-shell): 将摘要保持在轮次输出下方并去重 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11986
* feat(web-shell): 从展开的工具详情中预览文件 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11982
* fix(ci): 修复 e2e-test-linux 中的 docker 锁缓存所有权问题 (#11990) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/11992
* feat(serve): 使用参数、sourceRef 及调用方提供的脚本启动工作流运行 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11979
* refactor(serve): 分离 ACP 控制平面与通道组件 by @wenshao in https://github.com/QwenLM/qwen-code/pull/11916
* fix(cli): 在无头轮次执行前注册模型可调用命令 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11994
* fix(vscode): 从远程窗口的 webview 访问工作区守护进程 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11983
* feat(web-shell): 自定义上下文详情并折叠快照 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11996
* docs(serve): 明确守护进程事件恢复契约 by @wenshao in https://github.com/QwenLM/qwen-code/pull/12015
* test(serve): 强化 REST 文档契约检查 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12009
* feat(goal): 对前台子代理和验证器令牌使用进行计费 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11998
* docs(users): 将新用户引导指向 Token 计划而非 Coding 计划 by @wenshao in https://github.com/QwenLM/qwen-code/pull/11980
* feat(dingtalk): 在私信中携带发送者身份 by @BenGuanRan in https://github.com/QwenLM/qwen-code/pull/12017
* feat(goal): 显示轮次和活跃时间预算 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11999
* fix(cli): 使 ink useBoxMetrics 循环保护机制独立于机器速度 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11835
* fix(ci): 跳过已完成的桌面版发布 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12013
* fix(web-shell): 在独立 Web Shell 中遵循 ui.theme 和 general.language 设置 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11961
* feat(omni): 将多模态媒体管线集成到主分支 by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/12019
* docs(daemon): 完善集成路径指南 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12005
* docs(serve): 记录已合并的 ACP 边界接受情况 by @wenshao in https://github.com/QwenLM/qwen-code/pull/12024
* fix(ci): 在打包 VSIX 前等待已发布的导出渲染器 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12036
* fix(web-shell): 修复在两条导航路径中丢失守护进程凭据的问题 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12011
* fix(acp): 恢复托管的自动记忆提取 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12018
* fix(cli): 修复与 ink 对比发现的 12 项 OpenTUI 功能差异 by @chiga0 in https://github.com/QwenLM/qwen-code/pull/11806
* fix(core): 跨工具往返调用统计 Stop-hook 阻塞 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12062
* feat(workflows): 允许 agent() 将子代理限制为显式工具白名单 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12051
* fix(core): 避免在斜杠命令完成后出现误中断 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12052
* test(cli): 将循环保护注释刷新为已交付的机制 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12065
* fix(web-shell): 页面刷新后恢复上下文使用 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12070
* docs(hooks): 合并重复的 Browsing 章节 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12071
* feat: 按模型选择 OpenAI wire API by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/11538
* fix(desktop): 在删除冒烟测试工作区前等待守护进程排空 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12049
* fix(core,cli): 修复 Windows 环境剩余的三项测试失败 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12063
* fix(ci): 在分派基准测试前等待 npm 发布 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12086
* feat(core): 在进度事件中识别钩子调用并公布消息总线 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12075
* feat(external-context): 支持可配置的 Mem0 提供商 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9952
* fix(extensions): 更新后显示进度并清除更新标志 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11886
* fix(acp): 在回放转录时保留用户资源链接 by @XIQIXIQIXIQI in https://github.com/QwenLM/qwen-code/pull/12088
* feat(web-shell): 支持主机设置项排除 by @Lilian0122 in https://github.com/QwenLM/qwen-code/pull/11975
* feat(web-shell): 将过大粘贴内容折叠为附件卡片 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12084
* feat(browser-use): 添加基于 Playwright 的浏览器 SDK by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/11241
* feat(workflows): 添加仅名称锁定,限制 Workflow 工具仅用于命名工作流 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12078
* fix(core): 按各自源加载系统范围钩子 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12077
* fix(core): 报告 http、prompt 和 function 钩子运行器的真实结果 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12081
* fix(core): 修复文件系统路径重拼写导致的已知路径问题 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12087
* fix(vscode): 拒绝不支持的 IPv6 远程 webview URL by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12092
* feat(web-shell): 从工作区分支选择器管理 git 远程仓库 by @wenshao in https://github.com/QwenLM/qwen-code/pull/11163
* fix(web-shell): 为 tools.workflowNameOnly 设置项添加别名 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12100
* test(core): 在不包含调用 ID 的情况下比较钩子进度结果 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12104
* fix(web-shell): 在设置面板中为 tools.workflowNameOnly 添加别名 (#12094) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/12103
* docs(core): 告知 /goal-draft propose_goal 强制的目标限制 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12101
* feat(cli): 将 Goal 状态记录写入会话导出 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12099
* feat(goal): 根据对话记录尾部判断终端提案 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12105
* fix(cli): 在 /context 中优先使用按会话缓存的 token 数量 by @kabishou11 in https://github.com/QwenLM/qwen-code/pull/12066
* refactor(goal): 停止在所有界面显示检查点状态 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12114
* feat(web-shell): 添加 PWA 安装支持及 Android 开发终端 by @jabrailkhalil in https://github.com/QwenLM/qwen-code/pull/11722
* fix(core): 在记录的对话中保留 MCP App 的 HTML 以便回放渲染 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12131
* fix(core): 在 V4 限制下解析 DeepSeek 官方 API 的 deepseek-flash 名称 by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/11909
* refactor(goal): 删除证据检查点及目录相关代码 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12120
* refactor(cli): 使用 OpenTUI 已使用的视图绘制 ink Goal 卡片 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12110
* test(serve): 将指南操作绑定到对应的协议章节 by @mohammedmessaoudene-cmd in https://github.com/QwenLM/qwen-code/pull/11808
* fix(core): 在模型名称标准化过程中保留 DeepSeek V4 的生成后缀 by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/12124
* fix(core): 在 isAsyncOperator 中仅将空格/制表符/换行符视为单词分隔符 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11865
* fix(mcp): 显示 MCP App 资源加载警告 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/11960
* fix(serve): 当工作区为 home 时从用户范围读取频道设置 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11083
* fix(core): 从日志历史中清除已删除会话的提示词 by @L4XB in https://github.com/QwenLM/qwen-code/pull/11769
* fix(workflows): 拒绝无日志的恢复请求,并在重启时保持运行的 sourceRef by @qqqys in https://github.com/QwenLM/qwen-code/pull/12097
* refactor(goal): 将 Goal 工具每次模型请求的开销降低五分之二 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12123
* feat(core): 在钩子列表中定义 enabled 和 disabledReason by @qqqys in https://github.com/QwenLM/qwen-code/pull/12139
* test(cli): 在提供商顺序测试中先遍历 Grok 再遍历 MiniMax by @harjothkhara in https://github.com/QwenLM/qwen-code/pull/10089
* feat(core): 导出钩子事件显示元数据及纯超时辅助函数 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12138
* docs(ci): 说明为何 review-pr 扫描需要整个工作区隔离 by @CanReader in https://github.com/QwenLM/qwen-code/pull/10493
* docs(daemon): 完善 REST 集成覆盖说明 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12144
* docs(config): 注明 baseUrl 是托管 OpenAI 兼容网关的 /v1 根路径 (#10362) by @now-ing in https://github.com/QwenLM/qwen-code/pull/11155
* fix(web-shell): 在 attach 被替代时保留首次提示会话 by @cactuser-Lu in https://github.com/QwenLM/qwen-code/pull/12149
* feat(browser-use): 添加 Chrome Native Messaging 中继 by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/11242
* fix(goal): 说明恢复过程中跳过了哪些较新记录 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12148
* fix(review): 将 PR worktree 绝对路径放入 dimension-agent 简报 by @kabishou11 in https://github.com/QwenLM/qwen-code/pull/11926
* feat(workflows): 为每次运行记录检查点,并展示被重启中断的运行 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12159
* fix(web-shell): 允许在会话创建期间进行顺序 SDK 请求 by @shenyankm in https://github.com/QwenLM/qwen-code/pull/11913
* feat(web-shell): 从结构化元数据渲染压缩结果 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12141
* test(sdk): 按消息验证内容块停止行为 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12158
* feat(core): 为子代理添加容器执行支持 by @wenshao in https://github.com/QwenLM/qwen-code/pull/11711
* feat(web-shell): 跨所有分支以车道图形式绘制提交历史并支持搜索 by @wenshao in https://github.com/QwenLM/qwen-code/pull/12152
* refactor(goal): 停止恢复在 Goal 状态记录之前记录的 Goal by @qqqys in https://github.com/QwenLM/qwen-code/pull/12155
* feat(live): 将 Web Shell 接纳为浏览器 Live Host by @qqqys in https://github.com/QwenLM/qwen-code/pull/12166
* fix(web-shell): 缩小画布时保持 mermaid 画布位置固定 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12177
* fix(core): 停止在会话恢复中标记未回复的通知 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12007
* fix(cli): 将完整轮次的工具取消操作排除在错误路径之外 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11154
* feat(web-shell): 添加每轮满意/不满意标记 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12174
* feat(live): 从 realtimeOnly modelProviders 路由解析 Live Voice 模型 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12173
* refactor(goal)!: 停止触发 active_goal 流事件 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12181
* feat(web-shell): 随 CLI 版本发布该包 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12178
* refactor(goal): 在 ACP 线上保留一个 Goal 卡片并为其命名模块 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12187
* perf(core): 为扩展目录路由实现仅清单刷新 by @callmeYe in https://github.com/QwenLM/qwen-code/pull/12153
* feat(core): 从常驻工具集组装系统提示词 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12145
* feat(web-shell): 支持在浏览器中保持 Live Voice 语音通话 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12189
* refactor(goal): 通过核心阅读器读取不可读状态的运行卡片 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12194
* fix(release): 暂时暂停 web-shell 的发布 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12202
* test(core): 在 authoring-hint 测试中恢复前等待完整运行退出 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12196
* feat(web-shell): 在状态栏显示 Goal 的回合数和活跃时间上限 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12201
* feat(serve): 允许用户停止工作区运行时以释放 ACP 容量 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/12008
* fix(core): 按字节长度解析 LSP 帧,防止非 ASCII 响应被丢弃 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12210
* fix(desktop): 将 node-pty 预构建文件打包到捆绑运行时中 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12225
* docs(verify-pr): 添加本地后续发现、发布路径和构建配方 by @wenshao in https://github.com/QwenLM/qwen-code/pull/12232
* feat(web-shell): 将 Plan 入口移至 composer 添加菜单 by @wenshao in https://github.com/QwenLM/qwen-code/pull/12218
* fix(ci): 回收 Docker 缓存并清理 review 临时目录 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12135
* fix(core): 处理权限规则中的简单 Bash 注释 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12096
* fix(ci): 向失败监视器的 job-log 下载传递 --allow-escape-sequences 参数 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/12117
* feat(web-shell): 恢复远程工作区添加流程 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12085
* feat(web-shell): 公开助手回合结算生命周期 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11251
* fix(cli): 对未决工作区要求显式信任 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12198
* fix(web-shell): 使发布的包对消费者可解析 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12188
* docs(session-recovery): 将 shape-B 声明与已落地的 provenance 通道同步 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12203
* docs(vscode): 记录远程 webview URL 拒绝带方括号的 IPv6 字面量的原因 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12140
* fix(web-shell): 为活跃的 Plan 芯片使用中性色 by @wenshao in https://github.com/QwenLM/qwen-code/pull/12241
* feat(core): 添加 bwrap 执行基础 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/12067
* fix(web-shell): 为 Git 模式芯片使用中性色 by @wenshao in https://github.com/QwenLM/qwen-code/pull/12251
* fix(cli): 使 /context 分类累加至提供者的总量 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12119
* test(ci): 在 yaml 导入 ratchet 中覆盖 review-scratch 套件 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12259
* test(core): 在 win32 上保持 scp 风格的移除见证逻辑 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12263
* refactor(web-shell): 简化远程工作区流程 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12264
* fix(ci): 重试一次瞬态 E2E 构建工件下载失败问题 (#12125) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/12128
* fix(web-shell): 当 Plan 芯片消失时移交键盘焦点 by @wenshao in https://github.com/QwenLM/qwen-code/pull/12248
* fix(web-shell): 在窄面板中限制内联消息编辑器的显示 by @Lilian0122 in https://github.com/QwenLM/qwen-code/pull/12175
* test(core): 在 win32 上跳过 bwrap 执行套件 (#12281) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/12282
* ci(shepherd): 关闭合并后不会有任何更改的机器人 PR by @wenshao in https://github.com/QwenLM/qwen-code/pull/12150
* ci(pnpm): 全面使用 pnpm 安装并弃用 package-lock.json by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11859
* feat(web-shell): 从设置卡片中选择 Live Voice 模型和语音 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12199
* feat(web-shell): 将 slash-command 导出公开为工件 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12050
* feat(browser-use): 支持共享 Chrome 配置文件的并发会话 by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/12229
* docs(serve): 记录 ACP 子堆校准 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/12265
* fix(export): 提高转录增长时的文档运行时预算 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12298
* feat(web-shell): 简化移动端 composer 操作 by @wenshao in https://github.com/QwenLM/qwen-code/pull/12252
* fix(web-shell): 将 Live Voice 字符串排除在导出的 transcript 渲染器之外 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12305
* test(web-shell): 在构建的 transcript 包上保护 Live 字符串,而非源代码树 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12316
* fix(web-shell): 将 Live Voice 入口保留在 live boundary 中 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12319
* feat(cli,docs): 将每个上下文文件归属到其扩展名,并说明单个文件的成本 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12318
* fix(core): 隐藏不可用的图像缩放指引 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12271
* fix(core): 限制队友指引和大工具界面的预算 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12142
* feat(core): 根据目标会话判断每条入站跨会话消息 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12292
* feat(web-shell): 在新页面中打开链接产物 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12317
* feat(web-shell): 在浏览器实时语音通话期间显示麦克风音量 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12294
* feat(acp-bridge): 在分页转录回放中显示请求和工具耗时 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12304
* feat(serve): 从持久化历史记录中重试和重新运行工作流 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12291
* feat(web-shell): 将工作区和 Git 标签移出组合器工具栏 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12299
* fix(web-shell): 避免不必要的表格水平滚动 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12312
* refactor(browser-use): 接受一组 Chrome 扩展 ID by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/12300
* feat(core,docs): 添加条件扩展规则并限制上下文警告 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12034
* test(core): 报告工具表面配置实际限制的内容 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12346
* fix(web-shell): 根据 npm pack 列表校验发布产物 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12343
* feat(web-shell): 将分页转录事件投影到轨迹中 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12337
* feat(core): 为延迟工具保留提示词缓存 by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/10410
* feat(core): 允许后台轮次携带来自其他会话的消息 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12342
* fix(workflows): 原子化写入运行快照 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12341
* feat(web-shell): 使用 AudioWorklet 捕获实时语音麦克风 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12338
* feat(core): 通过 bwrap 路由运行时工具 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/12269
* fix(review): 限制在挂载外保留状态时的基础树复用 by @wenshao in https://github.com/QwenLM/qwen-code/pull/11540
* feat(review): 在关键状态下将重新审查轮次切换为修复审计形状 by @wenshao in https://github.com/QwenLM/qwen-code/pull/10136
* perf(sdk): 按解析后的 URL 对进行中的工作区提供程序请求去重 by @Willam2004 in https://github.com/QwenLM/qwen-code/pull/12327
* feat(chrome-extension): 将扩展发布到 Chrome 应用商店 by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/12329
* docs(chrome): 披露浏览器数据处理及有限使用情况 by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/12330
* feat(web-shell): 支持主机设置项的白名单 by @Lilian0122 in https://github.com/QwenLM/qwen-code/pull/12328
* fix(web-shell): 恢复移动端历史记录导航 by @wenshao in https://github.com/QwenLM/qwen-code/pull/12362
* fix(workflows): 在注册前写入恢复运行的检查点 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12347
* fix(live): 当实时语音因非 Error 类型原因启动失败时报告具体原因 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12377
* fix(core): 拒绝支持广播的钩子进程 ID (PID) by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12344
* feat(java): 添加托管运行时状态基础 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/12301
* fix(web-shell): 防止标题显示新建会话占位符 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12379
* feat(core): 添加托管会话记录基础 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/12302
* feat(live): 允许浏览器主机响应来自共享屏幕的屏幕请求 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12378
* fix(ci): 在 e2e.yml 安装步骤中重试瞬态 npm ci 失败 (#11726) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/11731
* fix(release): 重试瞬态独立运行时下载 (#11870) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/11879
* feat(serve): 让频道分组接受所有权提示并跳过可容忍的名称 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12383
* fix(cli): 当输出语言文件不可写时不导致启动崩溃 (#10453) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/10455
* fix(serve): 告知客户端哪些历史记录条目无法重试 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12349
* perf(cli): 优化一次性无头执行 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12340
* feat(serve): 启动时恢复每个受信任工作区各自的 serve.channels by @qqqys in https://github.com/QwenLM/qwen-code/pull/12385
* feat(java): 添加 JDBC 绑定与会话持久化 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/12390
* feat(web-shell): 展示结构化的 Shell 执行结果 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12311
* feat(web-shell): 展示运行耗时分布的轨迹表格 by @qqqys in https://github.com/QwenLM/qwen-code/pull/12388
* feat(desktop): 集成 macOS 标题栏 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12393
* test(integration): 在 SDK 端到端测试中支持延迟 MCP 工具调用 by @dvd233 in https://github.com/QwenLM/qwen-code/pull/12365
* feat(serve): 定义托管测试框架私有协议 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/12409
* test(cli): 防止环境中的 GIT_CONFIG_GLOBAL 劫持 withHome by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12407
* fix(release): 恢复自动化 web-shell 发布 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12387
* feat(core): 在系统提示词指导中添加监控工具 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12408
* feat(daemon):添加批量工作区会话目录 by @samuelhsin in https://github.com/QwenLM/qwen-code/pull/12254
* refactor(build,release):使用 pnpm workspace 进行构建和发布 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12400
## 新增贡献者
* @Lilian0122 在 https://github.com/QwenLM/qwen-code/pull/11975 中首次贡献
* @jabrailkhalil 在 https://github.com/QwenLM/qwen-code/pull/11722 中首次贡献
* @mohammedmessaoudene-cmd 在 https://github.com/QwenLM/qwen-code/pull/11808 中首次贡献
* @L4XB 在 https://github.com/QwenLM/qwen-code/pull/11769 中首次贡献
**完整更新日志**:https://github.com/QwenLM/qwen-code/compare/cua-driver-rs-v0.20.9...desktop-v0.24.3
<!-- Release notes generated using configuration in .github/release.yml at 2800e9bb4f4536f421116a8e1e12740113e1063f -->
## What's Changed
* fix(cli): scope the ACP permission queue to the session by @chiga0 in https://github.com/QwenLM/qwen-code/pull/11802
* feat(channels): add shared output modes with DingTalk support by @qqqys in https://github.com/QwenLM/qwen-code/pull/11822
* feat(web-shell): slide the active pill between tabs by @callmeYe in https://github.com/QwenLM/qwen-code/pull/11844
* refactor(goal): delete the first-generation Stop-hook Goal implementation by @qqqys in https://github.com/QwenLM/qwen-code/pull/11900
* fix(ci): separate autofix runner labels from queued reviews by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11912
* feat(daemon): enumerate installed extension skills locally by @callmeYe in https://github.com/QwenLM/qwen-code/pull/11281
* feat(web-shell): follow the reading position in the global turn navigation by @callmeYe in https://github.com/QwenLM/qwen-code/pull/11801
* feat(workflows): share a per-turn token budget from a +Nk directive by @qqqys in https://github.com/QwenLM/qwen-code/pull/11917
* feat(serve): add budget-based ACP child admission by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/11911
* feat(cli): add bwrap kernel sandbox backend for Linux by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/11614
* fix(cli): restore shared Skill status and runner CI checks by @qqqys in https://github.com/QwenLM/qwen-code/pull/11933
* fix(vscode): retire legacy ACP input bridges by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11928
* feat(core): support external reasoning profiles and defaults by @callmeYe in https://github.com/QwenLM/qwen-code/pull/11856
* feat(settings): turn cross-session messaging on by default by @qqqys in https://github.com/QwenLM/qwen-code/pull/11840
* fix(web-shell): show Qwen Live tasks in session sidebar by @qqqys in https://github.com/QwenLM/qwen-code/pull/11830
* fix(ci): isolate runner schedule fixture module scope by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/11938
* feat(core): run saved workflows by name and pin workflow grants to script content by @qqqys in https://github.com/QwenLM/qwen-code/pull/11943
* feat(workflow): preserve source references across runs and resumes by @qqqys in https://github.com/QwenLM/qwen-code/pull/11931
* refactor(vscode): remove unused token limit mirror by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11946
* fix(core): carry the PTY load reason on the call, not in module state by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11923
* feat(workflow): correlate agent dispatches and nested workflow calls by @qqqys in https://github.com/QwenLM/qwen-code/pull/11932
* docs(goal): retire the Stop-hook era prose after the implementation was removed by @qqqys in https://github.com/QwenLM/qwen-code/pull/11922
* fix(core): keep escaped trailing whitespace when trimming hook matchers by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11871
* feat(workflows): size guideline, structure preview and large-run warning by @qqqys in https://github.com/QwenLM/qwen-code/pull/11939
* fix(core): expand ${session_id} and stamp User-Agent on the Responses wire by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11947
* feat(workflows): let the model invoke extension workflows that declare whenToUse by @qqqys in https://github.com/QwenLM/qwen-code/pull/11957
* feat(daemon): support summary projection for prompt and replay APIs by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11920
* ci(desktop): publish the desktop app when the CLI releases by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11575
* test(cli): unbreak the bwrap sandbox suites on the Windows lane (#11968) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/11970
* fix(core): keep tool parameters on the MiniMax chat-completions wire by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11842
* fix(web-shell): stop the approval sheet resizing while reading by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11930
* fix(release): gate pool-routed validation jobs on a disk floor by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/11972
* feat(web-shell): add footnote previews and per-turn sources by @callmeYe in https://github.com/QwenLM/qwen-code/pull/11480
* fix(web-shell): preserve separators in tool description paths by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11977
* feat(telemetry): emit a Goal lifecycle event and metrics by @qqqys in https://github.com/QwenLM/qwen-code/pull/11927
* feat(cli): reload hook registry when /hooks opens by @qqqys in https://github.com/QwenLM/qwen-code/pull/11904
* fix(core): persist Goal turn endings outside model history by @qqqys in https://github.com/QwenLM/qwen-code/pull/11924
* feat(serve): reclaim idle ACP children when admission is full by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/11940
* feat(web-shell): connect to a selected remote daemon by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11548
* fix(web-shell): keep the recap below a turn's outputs and dedupe it by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11986
* feat(web-shell): preview files from expanded tool details by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11982
* fix(ci): heal the docker lock cache ownership in e2e-test-linux (#11990) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/11992
* feat(serve): start workflow runs with args, sourceRef and a caller-supplied script by @qqqys in https://github.com/QwenLM/qwen-code/pull/11979
* refactor(serve): separate ACP control plane and channel harness by @wenshao in https://github.com/QwenLM/qwen-code/pull/11916
* fix(cli): register model-invocable commands before headless turns by @qqqys in https://github.com/QwenLM/qwen-code/pull/11994
* fix(vscode): reach the workspace daemon from a remote window's webview by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11983
* feat(web-shell): customize context details and collapse snapshots by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11996
* docs(serve): clarify daemon event recovery contracts by @wenshao in https://github.com/QwenLM/qwen-code/pull/12015
* test(serve): harden REST docs contract checks by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12009
* feat(goal): bill foreground subagents and verifier token usage by @qqqys in https://github.com/QwenLM/qwen-code/pull/11998
* docs(users): point onboarding at Token Plan instead of Coding Plan by @wenshao in https://github.com/QwenLM/qwen-code/pull/11980
* feat(dingtalk): carry sender identity in direct messages by @BenGuanRan in https://github.com/QwenLM/qwen-code/pull/12017
* feat(goal): show turn and active-time budgets by @qqqys in https://github.com/QwenLM/qwen-code/pull/11999
* fix(cli): make the ink useBoxMetrics loop guard independent of machine speed by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11835
* fix(ci): skip completed desktop releases by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12013
* fix(web-shell): honor ui.theme and general.language in the standalone Web Shell by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11961
* feat(omni): integrate multimodal media pipeline into main by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/12019
* docs(daemon): complete integration path guide by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12005
* docs(serve): record merged ACP boundary acceptance by @wenshao in https://github.com/QwenLM/qwen-code/pull/12024
* fix(ci): wait for the published export renderer before packaging the VSIX by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12036
* fix(web-shell): stop dropping the daemon credential on two navigation paths by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12011
* fix(acp): restore managed auto-memory extraction by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12018
* fix(cli): close twelve OpenTUI parity gaps found against ink by @chiga0 in https://github.com/QwenLM/qwen-code/pull/11806
* fix(core): count Stop-hook blocks across tool round trips by @qqqys in https://github.com/QwenLM/qwen-code/pull/12062
* feat(workflows): let agent() narrow a subagent to an explicit tool allowlist by @qqqys in https://github.com/QwenLM/qwen-code/pull/12051
* fix(core): avoid false interruption after completed slash commands by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12052
* test(cli): refresh the loop-guard comments to the shipped mechanism by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12065
* fix(web-shell): restore context usage after page refresh by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12070
* docs(hooks): merge the duplicated Browsing sections by @qqqys in https://github.com/QwenLM/qwen-code/pull/12071
* feat: select the OpenAI wire API per model by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/11538
* fix(desktop): wait out the daemon drain before removing the smoke workspace by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12049
* fix(core,cli): green the Windows lane's three remaining failures by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12063
* fix(ci): wait for the release on npm before dispatching the benchmark by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12086
* feat(core): identify hook invocations in progress events and announce the message bus by @qqqys in https://github.com/QwenLM/qwen-code/pull/12075
* feat(external-context): Support configurable Mem0 providers by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9952
* fix(extensions): show progress and clear the update flag after an update by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11886
* fix(acp): preserve user resource links in transcript replay by @XIQIXIQIXIQI in https://github.com/QwenLM/qwen-code/pull/12088
* feat(web-shell): support host settings item exclusions by @Lilian0122 in https://github.com/QwenLM/qwen-code/pull/11975
* feat(web-shell): fold oversized pastes into an attachment card by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12084
* feat(browser-use): add Playwright-based Browser SDK by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/11241
* feat(workflows): add a name-only lock that restricts the Workflow tool to named workflows by @qqqys in https://github.com/QwenLM/qwen-code/pull/12078
* fix(core): load system-scope hooks under their own source by @qqqys in https://github.com/QwenLM/qwen-code/pull/12077
* fix(core): report real outcomes from the http, prompt and function hook runners by @qqqys in https://github.com/QwenLM/qwen-code/pull/12081
* fix(core): scrub a known path the filesystem re-spells by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12087
* fix(vscode): reject unsupported IPv6 remote webview URLs by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12092
* feat(web-shell): manage git remotes from the workspace branch picker by @wenshao in https://github.com/QwenLM/qwen-code/pull/11163
* fix(web-shell): alias the tools.workflowNameOnly settings row by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12100
* test(core): compare hook progress outcomes without the invocation id by @qqqys in https://github.com/QwenLM/qwen-code/pull/12104
* fix(web-shell): alias tools.workflowNameOnly in the settings panel (#12094) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/12103
* docs(core): tell /goal-draft the objective limit propose_goal enforces by @qqqys in https://github.com/QwenLM/qwen-code/pull/12101
* feat(cli): write Goal state records into session exports by @qqqys in https://github.com/QwenLM/qwen-code/pull/12099
* feat(goal): judge terminal proposals from the transcript tail by @qqqys in https://github.com/QwenLM/qwen-code/pull/12105
* fix(cli): prefer per-session cached token count in /context by @kabishou11 in https://github.com/QwenLM/qwen-code/pull/12066
* refactor(goal): stop showing checkpoint health on every surface by @qqqys in https://github.com/QwenLM/qwen-code/pull/12114
* feat(web-shell): add PWA installability and Android development shell by @jabrailkhalil in https://github.com/QwenLM/qwen-code/pull/11722
* fix(core): keep MCP App html in recorded transcripts so replay can render by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12131
* fix(core): resolve DeepSeek's official API deepseek-flash name at V4 limits by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/11909
* refactor(goal): delete the evidence checkpoint and catalog code by @qqqys in https://github.com/QwenLM/qwen-code/pull/12120
* refactor(cli): draw the ink Goal cards from the view OpenTUI already uses by @qqqys in https://github.com/QwenLM/qwen-code/pull/12110
* test(serve): bind guide operations to their protocol sections by @mohammedmessaoudene-cmd in https://github.com/QwenLM/qwen-code/pull/11808
* fix(core): keep the DeepSeek V4 generation suffix through model-name normalization by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/12124
* fix(core): treat only space/tab/newline as word separators in isAsyncOperator by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11865
* fix(mcp): show MCP App resource load warnings by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/11960
* fix(serve): read channel settings from user scope when workspace is home by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11083
* fix(core): purge a deleted session's prompts from the log history by @L4XB in https://github.com/QwenLM/qwen-code/pull/11769
* fix(workflows): refuse a resume that has no journal, and keep a run's sourceRef across restarts by @qqqys in https://github.com/QwenLM/qwen-code/pull/12097
* refactor(goal): cut what the Goal tools cost every model request by two fifths by @qqqys in https://github.com/QwenLM/qwen-code/pull/12123
* feat(core): define enabled and disabledReason in the hooks listing by @qqqys in https://github.com/QwenLM/qwen-code/pull/12139
* test(cli): step through Grok before MiniMax in the provider-order test by @harjothkhara in https://github.com/QwenLM/qwen-code/pull/10089
* feat(core): export hook event display metadata and pure timeout helpers by @qqqys in https://github.com/QwenLM/qwen-code/pull/12138
* docs(ci): explain why the review-pr sweep needs a whole-workspace quarantine by @CanReader in https://github.com/QwenLM/qwen-code/pull/10493
* docs(daemon): complete REST integration coverage by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12144
* docs(config): note baseUrl is the /v1 root for hosted OpenAI-compatible gateways (#10362) by @now-ing in https://github.com/QwenLM/qwen-code/pull/11155
* fix(web-shell): keep first-prompt session when its attach is superseded by @cactuser-Lu in https://github.com/QwenLM/qwen-code/pull/12149
* feat(browser-use): add Chrome Native Messaging relay by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/11242
* fix(goal): say which newer records recovery walked past by @qqqys in https://github.com/QwenLM/qwen-code/pull/12148
* fix(review): put PR worktree absolute path in dimension-agent briefs by @kabishou11 in https://github.com/QwenLM/qwen-code/pull/11926
* feat(workflows): record a checkpoint for every run and surface runs a restart interrupted by @qqqys in https://github.com/QwenLM/qwen-code/pull/12159
* fix(web-shell): allow sequential SDK requests during session creation by @shenyankm in https://github.com/QwenLM/qwen-code/pull/11913
* feat(web-shell): render the compression outcome from structured meta by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12141
* test(sdk): validate content block stops per message by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12158
* feat(core): add container execution for subagents by @wenshao in https://github.com/QwenLM/qwen-code/pull/11711
* feat(web-shell): draw the commit history as a lane graph, across all branches, with search by @wenshao in https://github.com/QwenLM/qwen-code/pull/12152
* refactor(goal): retire recovery of Goals recorded before Goal state was journaled by @qqqys in https://github.com/QwenLM/qwen-code/pull/12155
* feat(live): admit the Web Shell as a browser Live Host by @qqqys in https://github.com/QwenLM/qwen-code/pull/12166
* fix(web-shell): keep the mermaid canvas fixed while zooming out by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12177
* fix(core): stop session recovery from flagging unanswered notifications by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12007
* fix(cli): keep full-turn tool cancellation out of the error path by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11154
* feat(web-shell): add per-turn satisfied / not satisfied marks by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12174
* feat(live): resolve the Live Voice model from a realtimeOnly modelProviders route by @qqqys in https://github.com/QwenLM/qwen-code/pull/12173
* refactor(goal)!: stop emitting the active_goal stream event by @qqqys in https://github.com/QwenLM/qwen-code/pull/12181
* feat(web-shell): publish the package with the cli release by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12178
* refactor(goal): keep one Goal card on the ACP wire and name the module for it by @qqqys in https://github.com/QwenLM/qwen-code/pull/12187
* perf(core): manifest-only refresh for the extension catalog route by @callmeYe in https://github.com/QwenLM/qwen-code/pull/12153
* feat(core): assemble the system prompt from the resident tool set by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12145
* feat(web-shell): hold a Live Voice call from the browser by @qqqys in https://github.com/QwenLM/qwen-code/pull/12189
* refactor(goal): read the unreadable-state running card through the core reader by @qqqys in https://github.com/QwenLM/qwen-code/pull/12194
* fix(release): temporarily pause web-shell publishing by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12202
* test(core): await full run exit before resuming in the authoring-hint test by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12196
* feat(web-shell): show a Goal's turn and active-time ceilings on the status strip by @qqqys in https://github.com/QwenLM/qwen-code/pull/12201
* feat(serve): let users stop workspace runtimes to release ACP capacity by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/12008
* fix(core): parse LSP frames by byte length so non-ASCII responses are not dropped by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12210
* fix(desktop): stage the node-pty prebuild into the bundled runtime by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12225
* docs(verify-pr): add local follow-up discovery, publish path, and build recipes by @wenshao in https://github.com/QwenLM/qwen-code/pull/12232
* feat(web-shell): move the Plan entry into the composer add menu by @wenshao in https://github.com/QwenLM/qwen-code/pull/12218
* fix(ci): reclaim Docker cache and clean review scratch directories by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12135
* fix(core): handle simple Bash comments in permission rules by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12096
* fix(ci): pass --allow-escape-sequences to the failure watcher's job-log download by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/12117
* feat(web-shell): restore remote workspace add flow by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12085
* feat(web-shell): expose assistant turn settlement lifecycle by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11251
* fix(cli): require explicit trust for undecided workspaces by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12198
* fix(web-shell): make the published package resolvable for consumers by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12188
* docs(session-recovery): sync shape-B claims with the landed provenance channel by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12203
* docs(vscode): record why the remote-webview URL refuses a bracketed IPv6 literal by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12140
* fix(web-shell): Use neutral colors for the active Plan chip by @wenshao in https://github.com/QwenLM/qwen-code/pull/12241
* feat(core): Add the bwrap execution foundation by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/12067
* fix(web-shell): Use neutral colors for Git mode chips by @wenshao in https://github.com/QwenLM/qwen-code/pull/12251
* fix(cli): make /context categories add up to the provider total by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12119
* test(ci): cover the review-scratch suite in the yaml import ratchet by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12259
* test(core): keep the scp-like removal witness scp-like on win32 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12263
* refactor(web-shell): simplify remote workspace flow by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12264
* fix(ci): retry transient E2E build artifact download failures once (#12125) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/12128
* fix(web-shell): hand keyboard focus on when the Plan chip goes by @wenshao in https://github.com/QwenLM/qwen-code/pull/12248
* fix(web-shell): contain the inline message editor in narrow panes by @Lilian0122 in https://github.com/QwenLM/qwen-code/pull/12175
* test(core): skip the bwrap execution suite on win32 (#12281) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/12282
* ci(shepherd): close bot PRs whose merge would change nothing by @wenshao in https://github.com/QwenLM/qwen-code/pull/12150
* ci(pnpm): install with pnpm everywhere and retire package-lock.json by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11859
* feat(web-shell): choose the Live Voice model and voice from the setup card by @qqqys in https://github.com/QwenLM/qwen-code/pull/12199
* feat(web-shell): expose slash-command exports as artifacts by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12050
* feat(browser-use): support concurrent sessions sharing a Chrome profile by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/12229
* docs(serve): Document ACP child heap calibration by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/12265
* fix(export): raise the document runtime budget for transcript growth by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12298
* feat(web-shell): simplify mobile composer actions by @wenshao in https://github.com/QwenLM/qwen-code/pull/12252
* fix(web-shell): keep Live Voice strings out of the exported transcript renderer by @qqqys in https://github.com/QwenLM/qwen-code/pull/12305
* test(web-shell): guard Live strings on the built transcript bundle, not the source tree by @qqqys in https://github.com/QwenLM/qwen-code/pull/12316
* fix(web-shell): keep Live Voice entry in live boundary by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12319
* feat(cli,docs): attribute each context file to its extension, and say what one costs by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12318
* fix(core): hide unavailable image zoom guidance by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12271
* fix(core): gate teammate guidance and budget large tool surfaces by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12142
* feat(core): judge each inbound cross-session message for the session it is addressed to by @qqqys in https://github.com/QwenLM/qwen-code/pull/12292
* feat(web-shell): open link artifacts in a new page by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12317
* feat(web-shell): show the microphone level during a browser Live Voice call by @qqqys in https://github.com/QwenLM/qwen-code/pull/12294
* feat(acp-bridge): surface request and tool timing on paged transcript replay by @qqqys in https://github.com/QwenLM/qwen-code/pull/12304
* feat(serve): retry and rerun workflow runs from persisted history by @qqqys in https://github.com/QwenLM/qwen-code/pull/12291
* feat(web-shell): move the workspace and git chips out of the composer toolbar by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12299
* fix(web-shell): avoid unnecessary table horizontal scrolling by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12312
* refactor(browser-use): accept a set of Chrome extension ids by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/12300
* feat(core,docs): add conditional extension rules and cap context warnings by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12034
* test(core): report what a tool-surface configuration actually withholds by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12346
* fix(web-shell): check publish artifacts against the npm pack list by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12343
* feat(web-shell): project paged transcript events into a trajectory by @qqqys in https://github.com/QwenLM/qwen-code/pull/12337
* feat(core): preserve prompt cache for deferred tools by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/10410
* feat(core): let a background turn carry a message from another session by @qqqys in https://github.com/QwenLM/qwen-code/pull/12342
* fix(workflows): write run snapshots atomically by @qqqys in https://github.com/QwenLM/qwen-code/pull/12341
* feat(web-shell): capture the Live Voice microphone with an AudioWorklet by @qqqys in https://github.com/QwenLM/qwen-code/pull/12338
* feat(core): Route runtime tools through bwrap by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/12269
* fix(review): fence base-tree reuse on state kept outside the mount by @wenshao in https://github.com/QwenLM/qwen-code/pull/11540
* feat(review): swap re-review rounds to a fix-audit shape under the critical posture by @wenshao in https://github.com/QwenLM/qwen-code/pull/10136
* perf(sdk): dedupe in-flight workspace-providers requests per resolved URL by @Willam2004 in https://github.com/QwenLM/qwen-code/pull/12327
* feat(chrome-extension): publish the extension to the Chrome Web Store by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/12329
* docs(chrome): disclose browser data handling and limited use by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/12330
* feat(web-shell): support host settings item allowlists by @Lilian0122 in https://github.com/QwenLM/qwen-code/pull/12328
* fix(web-shell): restore mobile history navigation by @wenshao in https://github.com/QwenLM/qwen-code/pull/12362
* fix(workflows): write a resumed run's checkpoint before it registers by @qqqys in https://github.com/QwenLM/qwen-code/pull/12347
* fix(live): report the cause when Live Voice fails to start with a non-Error by @qqqys in https://github.com/QwenLM/qwen-code/pull/12377
* fix(core): reject broadcast-capable hook PIDs by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12344
* feat(java): Add managed runtime state foundation by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/12301
* fix(web-shell): stop the header title from showing the new-session placeholder by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12379
* feat(core): Add managed session record foundation by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/12302
* feat(live): let a browser Host answer a screen request from a shared screen by @qqqys in https://github.com/QwenLM/qwen-code/pull/12378
* fix(ci): retry transient npm ci failures in e2e.yml install steps (#11726) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/11731
* fix(release): retry transient standalone runtime downloads (#11870) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/11879
* feat(serve): let channel grouping take an ownership hint and skip tolerated names by @qqqys in https://github.com/QwenLM/qwen-code/pull/12383
* fix(cli): don't crash startup when the output-language file is unwritable (#10453) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/10455
* fix(serve): tell clients which history entries cannot be retried by @qqqys in https://github.com/QwenLM/qwen-code/pull/12349
* perf(cli): optimize one-shot headless execution by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12340
* feat(serve): restore every trusted workspace's own serve.channels at boot by @qqqys in https://github.com/QwenLM/qwen-code/pull/12385
* feat(java): Add JDBC binding and session persistence by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/12390
* feat(web-shell): present structured shell execution results by @ytahdn in https://github.com/QwenLM/qwen-code/pull/12311
* feat(web-shell): trajectory table showing where a run spent its time by @qqqys in https://github.com/QwenLM/qwen-code/pull/12388
* feat(desktop): integrate the macOS title bar by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12393
* test(integration): support deferred MCP tool calls in SDK E2E by @dvd233 in https://github.com/QwenLM/qwen-code/pull/12365
* feat(serve): Define Hosted Harness private protocol by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/12409
* test(cli): keep an ambient GIT_CONFIG_GLOBAL from hijacking withHome by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12407
* fix(release): resume automated web-shell publishing by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12387
* feat(core): add monitor tool to system prompt guidance by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12408
* feat(daemon): Add batched workspace session catalogs by @samuelhsin in https://github.com/QwenLM/qwen-code/pull/12254
* refactor(build,release): Use pnpm workspace builds and publishing by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12400
## New Contributors
* @Lilian0122 made their first contribution in https://github.com/QwenLM/qwen-code/pull/11975
* @jabrailkhalil made their first contribution in https://github.com/QwenLM/qwen-code/pull/11722
* @mohammedmessaoudene-cmd made their first contribution in https://github.com/QwenLM/qwen-code/pull/11808
* @L4XB made their first contribution in https://github.com/QwenLM/qwen-code/pull/11769
**Full Changelog**: https://github.com/QwenLM/qwen-code/compare/cua-driver-rs-v0.20.9...desktop-v0.24.3