<!-- qwen-release-notes:v1 -->
## 亮点
_详见下方的完整变更列表。_
## 破坏性变更
暂无已知的破坏性变更。
## 完整变更列表
### 新功能
- feat(daemon): 追踪首次冷启动 ([#6907](https://github.com/QwenLM/qwen-code/pull/6907)) by @doudouOUC
- feat(web-shell): 添加归档会话导出功能 ([#6910](https://github.com/QwenLM/qwen-code/pull/6910)) by @doudouOUC
- feat(serve): 添加工作区会话信息聚合端点 ([#7077](https://github.com/QwenLM/qwen-code/pull/7077)) by @samuelhsin
- feat(web-shell): 添加技能管理页面 ([#7018](https://github.com/QwenLM/qwen-code/pull/7018)) by @ytahdn
- feat(cli): 在 VP 模式下支持鼠标文本选择与复制 ([#6937](https://github.com/QwenLM/qwen-code/pull/6937)) by @chiga0
- feat(channels): 在创建的会话中,将通道实例名称标记到 daemon 的 sourceId ([#7078](https://github.com/QwenLM/qwen-code/pull/7078)) by @xurik
- feat(channels): 确认自然记忆变更 ([#7066](https://github.com/QwenLM/qwen-code/pull/7066)) by @qqqys
- feat(channels): 安全保存显式多事实记忆 ([#7092](https://github.com/QwenLM/qwen-code/pull/7092)) by @qqqys
- feat(serve): 完成旧版会话工作区遥测 ([#7003](https://github.com/QwenLM/qwen-code/pull/7003)) by @doudouOUC
- feat(core): 启用工件默认值与写入提醒 ([#7068](https://github.com/QwenLM/qwen-code/pull/7068)) by @chiga0
- feat(web-shell): 建议在会话中发送新主题草稿 ([#7098](https://github.com/QwenLM/qwen-code/pull/7098)) by @carffuca
- feat(tools): 添加 formatDisplayPath() 并关联 grep/glob/ripGrep 描述 ([#7050](https://github.com/QwenLM/qwen-code/pull/7050)) by @zjunothing
- feat(daemon): 将提示词 ID 传播至轮次事件 ([#7082](https://github.com/QwenLM/qwen-code/pull/7082)) by @makwingchi
- feat(web-shell): 分页显示恢复的会话历史 ([#7064](https://github.com/QwenLM/qwen-code/pull/7064)) by @ytahdn
- feat(web-shell): 使用 Cmd+B / Ctrl+B 切换会话侧边栏 ([#7135](https://github.com/QwenLM/qwen-code/pull/7135)) by @zjunothing
- feat(web-shell): 在添加工作区对话框中增加目录自动补全 ([#7125](https://github.com/QwenLM/qwen-code/pull/7125)) by @zjunothing
- feat(cli): 支持同轮次消息引导 ([#7090](https://github.com/QwenLM/qwen-code/pull/7090)) by @LaZzyMan
- feat: 支持图像提示词的全轮次多模态路由 ([#7045](https://github.com/QwenLM/qwen-code/pull/7045)) by @yiliang114
- feat(agents): 支持按模型设置子代理并发限制 ([#6984](https://github.com/QwenLM/qwen-code/pull/6984)) by @qwen-code-dev-bot
- feat(cli): 添加 daemon Todo 停止守卫 ([#6945](https://github.com/QwenLM/qwen-code/pull/6945)) by @doudouOUC
- feat(cli): 在紧凑工具摘要中显示活动路径 ([#7043](https://github.com/QwenLM/qwen-code/pull/7043)) by @zjunothing
- feat(vscode): 将日志路由至 Qwen Code Companion 输出通道 ([#7121](https://github.com/QwenLM/qwen-code/pull/7121)) by @yiliang114
- feat(core): 重构 web_fetch — 提升内容保真度、二进制处理、安全性与韧性 ([#7146](https://github.com/QwenLM/qwen-code/pull/7146)) by @tanzhenxin
- feat(channels): 暴露工作区范围的已观察联系人 ([#7109](https://github.com/QwenLM/qwen-code/pull/7109)) by @BenGuanRan
- feat(web-shell): 按标签页在刷新时保持分屏视图状态 ([#7136](https://github.com/QwenLM/qwen-code/pull/7136)) by @wenshao
- feat(web-shell): 添加工作区目标页面,并修复 daemon 恢复时丢失 /goal 的问题 ([#6561](https://github.com/QwenLM/qwen-code/pull/6561)) by @wenshao
- feat(core): 改进子代理委托默认值与安全护栏 ([#7048](https://github.com/QwenLM/qwen-code/pull/7048)) by @DragonnZhang
- feat(review): 在一次调用中构建每轮的所有第 5 步审核器,优先身份验证 ([#7150](https://github.com/QwenLM/qwen-code/pull/7150)) by @wenshao
- feat(channels): 从入站消息中观察群组名称 ([#7155](https://github.com/QwenLM/qwen-code/pull/7155)) by @BenGuanRan
- feat(web-shell): 添加 git 状态标签、可视化工作区差异及侧边栏 git 状态 ([#7054](https://github.com/QwenLM/qwen-code/pull/7054)) by @wenshao
- feat(channels): 按消息召回相关记忆 ([#7157](https://github.com/QwenLM/qwen-code/pull/7157)) by @qwen-code-dev-bot
### 错误修复
- fix(serve): 强化多工作区所有权守卫 ([#7005](https://github.com/QwenLM/qwen-code/pull/7005)) by @doudouOUC
- fix: 限制仅用于计量的流并在退出时中止 ([#7038](https://github.com/QwenLM/qwen-code/pull/7038)) by @yiliang114
- fix(acp): 消除模型路由歧义 ([#7028](https://github.com/QwenLM/qwen-code/pull/7028)) by @yiliang114
- fix(web-shell): 批量分发转录记录以避免 Tab 键返回时卡死 ([#7012](https://github.com/QwenLM/qwen-code/pull/7012)) by @wenshao
- fix(core): 退出计划模式需显式确认 ([#6967](https://github.com/QwenLM/qwen-code/pull/6967)) by @doudouOUC
- fix(web-shell): 使用 formatSettingCategory 处理回退 UI 分类 ([#7055](https://github.com/QwenLM/qwen-code/pull/7055)) by @wenshao
- fix(integration): 在端到端能力基线中添加缺失的 session_info ([#7091](https://github.com/QwenLM/qwen-code/pull/7091)) by @qwen-code-dev-bot
- fix(tui): 固定 MaxSizedBox 的行数并限制“显示更多”差异的待处理后备机制 (#6809) ([#6957](https://github.com/QwenLM/qwen-code/pull/6957)) by @azurecgx
- fix(integration): 强化不稳定的交互式先读后写测试 ([#7105](https://github.com/QwenLM/qwen-code/pull/7105)) by @wenshao
- fix(core): 重试空工具结果续传 ([#7039](https://github.com/QwenLM/qwen-code/pull/7039)) by @yiliang114
- fix(core): 对齐规划与响应引导逻辑 ([#7085](https://github.com/QwenLM/qwen-code/pull/7085)) by @DragonnZhang
- fix(web-shell): 渲染内置标签图标 ([#7024](https://github.com/QwenLM/qwen-code/pull/7024)) by @callmeYe
- fix(core): 在 generateJson 中强制指定 tool_choice 以防止自动模式分类器死锁 ([#6929](https://github.com/QwenLM/qwen-code/pull/6929)) by @qwen-code-dev-bot
- fix(ci): 通知静默分类重试 ([#7079](https://github.com/QwenLM/qwen-code/pull/7079)) by @yiliang114
- fix(cli): 离开备用屏幕后弹出 kitty 键盘协议 ([#7115](https://github.com/QwenLM/qwen-code/pull/7115)) by @zjunothing
- fix(web-shell): 在提示词准入后选择性重启 SSE ([#7080](https://github.com/QwenLM/qwen-code/pull/7080)) by @ytahdn
- fix(core): 接受启动后创建的子智能体,而非因缓存过期而拒绝 ([#7112](https://github.com/QwenLM/qwen-code/pull/7112)) by @zjunothing
- fix(cli): 跨提交拆分时保持流式代码块完整 ([#7020](https://github.com/QwenLM/qwen-code/pull/7020)) by @MikeWang0316tw
- fix(i18n): 修正扩展启用/禁用范围帮助中的 "extenison" 拼写错误 ([#7057](https://github.com/QwenLM/qwen-code/pull/7057)) by @chinesepowered
- fix(core): 使每轮工具调用上限自适应 ([#7052](https://github.com/QwenLM/qwen-code/pull/7052)) by @wenshao
- fix(vscode): 保留 ACP 启动时的 Electron Node 模式 ([#7106](https://github.com/QwenLM/qwen-code/pull/7106)) by @yiliang114
- fix(core): 保留完整的技能描述 ([#7032](https://github.com/QwenLM/qwen-code/pull/7032)) by @callmeYe
- fix(core): 将已解析的子智能体模型持久化到元数据中 ([#7104](https://github.com/QwenLM/qwen-code/pull/7104)) by @ARE404
- fix(web-shell): 恢复提示词文本时停止堆叠重复副本 ([#7134](https://github.com/QwenLM/qwen-code/pull/7134)) by @zjunothing
- fix(core): 重试格式错误的重复思考标签 ([#7100](https://github.com/QwenLM/qwen-code/pull/7100)) by @yiliang114
- fix(cli): 修正拼写错误的 handleUpdateRecieved -> handleUpdateReceived ([#7132](https://github.com/QwenLM/qwen-code/pull/7132)) by @chinesepowered
- fix(cli): 智能体空闲时隐藏粘性任务面板 ([#7062](https://github.com/QwenLM/qwen-code/pull/7062)) by @qwen-code-dev-bot
- fix(cli): 后台通知耗尽时保留模型覆盖设置 ([#7119](https://github.com/QwenLM/qwen-code/pull/7119)) by @zjunothing
- fix(core): 使提示词工具示例与模式对齐 ([#7088](https://github.com/QwenLM/qwen-code/pull/7088)) by @DragonnZhang
- fix(cli): 在 TUI 真正退出前,要求 1 秒内连续按两次 Ctrl+C ([#7129](https://github.com/QwenLM/qwen-code/pull/7129)) by @zjunothing
- fix: 保持退出和流式日志记录的可靠性 ([#7124](https://github.com/QwenLM/qwen-code/pull/7124)) by @yiliang114
- fix(ui): 使 SkillReviewDialog 右边框保持在对话框容器内 ([#7047](https://github.com/QwenLM/qwen-code/pull/7047)) by @zjunothing
- fix(core): 在系统提示词中保留现有工作内容 ([#7087](https://github.com/QwenLM/qwen-code/pull/7087)) by @DragonnZhang
- fix(mcp): 发现超时后终止子进程 ([#6926](https://github.com/QwenLM/qwen-code/pull/6926)) by @morluto
- fix(review): 报告转录记录所证明的内容;单次调用构建名单 ([#7033](https://github.com/QwenLM/qwen-code/pull/7033)) by @wenshao
- fix(cli): 首次读取时建立扩展存储生成基线 ([#7072](https://github.com/QwenLM/qwen-code/pull/7072)) by @qwen-code-dev-bot
- fix(core): 从探索智能体的工具集中移除 ask_user_question ([#7133](https://github.com/QwenLM/qwen-code/pull/7133)) by @zjunothing
- fix(web-shell): 限制高级表格覆盖层的范围 ([#7097](https://github.com/QwenLM/qwen-code/pull/7097)) by @ytahdn
- fix(core): 修正计划模式系统提示词中的 "supercedes" 拼写错误 ([#7058](https://github.com/QwenLM/qwen-code/pull/7058)) by @chinesepowered
- fix(ask-user-question): 接受长标题并将尺寸芯片适配容器宽度 ([#7063](https://github.com/QwenLM/qwen-code/pull/7063)) by @tanzhenxin
- fix(core): 规范化受限权限路径 ([#6923](https://github.com/QwenLM/qwen-code/pull/6923)) by @morluto
- fix(core): 使系统提示词与交互模式对齐 ([#7089](https://github.com/QwenLM/qwen-code/pull/7089)) by @DragonnZhang
- fix(memory): 在创建前解析 isAllowedMemoryPath 中的根符号链接 ([#6842](https://github.com/QwenLM/qwen-code/pull/6842)) by @wenshao
- fix(core): 添加 kimi-k3 令牌限制(1M 上下文,128K 输出) ([#7144](https://github.com/QwenLM/qwen-code/pull/7144)) by @tanzhenxin
- fix(integration): 在交互式文件系统测试中使用宽松断言并强化轮询机制 ([#7113](https://github.com/QwenLM/qwen-code/pull/7113)) by @qwen-code-dev-bot
- fix(core): 将命令位置的参数扩展解析为其命令根目录 ([#7143](https://github.com/QwenLM/qwen-code/pull/7143)) by @wenshao
- fix(cli): 使自动输出语言跟随用户输入 ([#6953](https://github.com/QwenLM/qwen-code/pull/6953)) by @han-dreamer
- fix(core): 在内存可用性检查中遵循 enableManagedAutoMemory 配置 ([#6941](https://github.com/QwenLM/qwen-code/pull/6941)) by @han-dreamer
- fix(cli): 缩小 VP 模式控件的占用空间,并修复 Shell 工具指示器重叠问题 ([#6931](https://github.com/QwenLM/qwen-code/pull/6931)) by @chiga0
- fix(acp): 解析文本形式的 @ 图片路径 ([#7123](https://github.com/QwenLM/qwen-code/pull/7123)) by @yiliang114
- fix: 修正注释、工具描述及文档中的拼写错误 ([#7131](https://github.com/QwenLM/qwen-code/pull/7131)) by @chinesepowered
- fix: 强化桌面端 MCP 权限请求的生命周期,确保待处理提示符永不卡死或泄漏 ([#7013](https://github.com/QwenLM/qwen-code/pull/7013)) by @mvanhorn
- fix(cli): 修正拼写错误的变量名 migratedInMemorScopes -> migratedInMemoryScopes ([#7140](https://github.com/QwenLM/qwen-code/pull/7140)) by @chinesepowered
- fix(web-shell): 恢复被包裹在普通文本或代码块中的新建会话决策 ([#7122](https://github.com/QwenLM/qwen-code/pull/7122)) by @wenshao
- fix(web-shell): 使审批和提问覆盖层支持键盘操作 ([#7074](https://github.com/QwenLM/qwen-code/pull/7074)) by @wenshao
- fix(cli): 在流式输出后恢复已取消的提示符 ([#7149](https://github.com/QwenLM/qwen-code/pull/7149)) by @barry166
- fix(channels): 按工作区范围隔离配对和允许列表状态 ([#7065](https://github.com/QwenLM/qwen-code/pull/7065)) by @zjunothing
### 性能
- feat(daemon): 对 ACP 通道初始化进行性能分析 ([#7145](https://github.com/QwenLM/qwen-code/pull/7145)) by @doudouOUC
### 文档
- docs(serve): 补全多工作区加固相关的文档说明 ([#7019](https://github.com/QwenLM/qwen-code/pull/7019)) by @doudouOUC
- docs(cua-driver): 修复损坏的相对坐标设计文档链接 ([#7130](https://github.com/QwenLM/qwen-code/pull/7130)) by @chinesepowered
- docs(autofix): 使机器人 PR 评论支持中英双语,并默认折叠中文内容 ([#7137](https://github.com/QwenLM/qwen-code/pull/7137)) by @wenshao
### 内部变更
- refactor(web-shell): 移除冗余的 primary-workspace 标签 ([#7035](https://github.com/QwenLM/qwen-code/pull/7035)) by @wenshao
- test(web-shell): 使视觉预览截图结果确定化,并添加 workspace-sidebar 测试场景 ([#7041](https://github.com/QwenLM/qwen-code/pull/7041)) by @wenshao
- ci(autofix): 从生成的制品 CI 门禁中恢复,并停止静默停滞 ([#6998](https://github.com/QwenLM/qwen-code/pull/6998)) by @wenshao
- ci(autofix): 从可信的暂存副本运行模式门禁,而非分支树 ([#7076](https://github.com/QwenLM/qwen-code/pull/7076)) by @wenshao
- test(web-shell): 对齐 workspace sidebar 的视觉冒烟测试 ([#7107](https://github.com/QwenLM/qwen-code/pull/7107)) by @yiliang114
- test(cli): 将 sandbox-relaunch 测试与环境变量 QWEN_SANDBOX_IMAGE 隔离 ([#7093](https://github.com/QwenLM/qwen-code/pull/7093)) by @wenshao
- ci(autofix): 根据 AGENTS.md 将 Suggestion 级别的审查意见视为可执行项 ([#7094](https://github.com/QwenLM/qwen-code/pull/7094)) by @wenshao
- test(serve): 补充 session-info 回归测试 ([#7083](https://github.com/QwenLM/qwen-code/pull/7083)) by @samuelhsin
- test(cli): 实际触发 useKeypress 中的粘贴变通路径 ([#7141](https://github.com/QwenLM/qwen-code/pull/7141)) by @chinesepowered
- ci(autofix): 分发审查目标,并停止路由扫描饥饿问题 ([#7127](https://github.com/QwenLM/qwen-code/pull/7127)) by @wenshao
- ci(shepherd): 新增 Fleet Shepherd —— 自动化解除机器人 PR 队列阻塞 ([#7142](https://github.com/QwenLM/qwen-code/pull/7142)) by @wenshao
- refactor(core): 将 Shell 安全性分类为只读、写入或未知 ([#7053](https://github.com/QwenLM/qwen-code/pull/7053)) by @doudouOUC
## 新贡献者
- @azurecgx 在 [#6957](https://github.com/QwenLM/qwen-code/pull/6957) 中首次贡献
- @makwingchi 在 [#7082](https://github.com/QwenLM/qwen-code/pull/7082) 中首次贡献
- @ARE404 在 [#7104](https://github.com/QwenLM/qwen-code/pull/7104) 中首次贡献
**完整更新日志**: https://github.com/QwenLM/qwen-code/compare/v0.19.11...v0.19.12
<!-- qwen-release-notes:v1 -->
## Highlights
_See the complete change list below._
## Breaking Changes
No known breaking changes.
## Complete Change List
### Features
- feat(daemon): Trace cold first-session startup ([#6907](https://github.com/QwenLM/qwen-code/pull/6907)) by @doudouOUC
- feat(web-shell): add archived session export ([#6910](https://github.com/QwenLM/qwen-code/pull/6910)) by @doudouOUC
- feat(serve): add workspace session-info aggregate endpoint ([#7077](https://github.com/QwenLM/qwen-code/pull/7077)) by @samuelhsin
- feat(web-shell): add skill management pages ([#7018](https://github.com/QwenLM/qwen-code/pull/7018)) by @ytahdn
- feat(cli): mouse text selection and copy in VP mode ([#6937](https://github.com/QwenLM/qwen-code/pull/6937)) by @chiga0
- feat(channels): stamp daemon sourceId with channel instance name on created sessions ([#7078](https://github.com/QwenLM/qwen-code/pull/7078)) by @xurik
- feat(channels): confirm natural memory mutations ([#7066](https://github.com/QwenLM/qwen-code/pull/7066)) by @qqqys
- feat(channels): save explicit multi-fact memory safely ([#7092](https://github.com/QwenLM/qwen-code/pull/7092)) by @qqqys
- feat(serve): Complete legacy session workspace telemetry ([#7003](https://github.com/QwenLM/qwen-code/pull/7003)) by @doudouOUC
- feat(core): Enable artifact defaults and write reminders ([#7068](https://github.com/QwenLM/qwen-code/pull/7068)) by @chiga0
- feat(web-shell): suggest sending new-topic drafts in a new session ([#7098](https://github.com/QwenLM/qwen-code/pull/7098)) by @carffuca
- feat(tools): add formatDisplayPath() and wire grep/glob/ripGrep descriptions ([#7050](https://github.com/QwenLM/qwen-code/pull/7050)) by @zjunothing
- feat(daemon): propagate prompt IDs to turn events ([#7082](https://github.com/QwenLM/qwen-code/pull/7082)) by @makwingchi
- feat(web-shell): paginate restored session history ([#7064](https://github.com/QwenLM/qwen-code/pull/7064)) by @ytahdn
- feat(web-shell): toggle the session sidebar with Cmd+B / Ctrl+B ([#7135](https://github.com/QwenLM/qwen-code/pull/7135)) by @zjunothing
- feat(web-shell): add directory autocomplete to the Add Workspace dialog ([#7125](https://github.com/QwenLM/qwen-code/pull/7125)) by @zjunothing
- feat(cli): support same-turn message steering ([#7090](https://github.com/QwenLM/qwen-code/pull/7090)) by @LaZzyMan
- feat: support full-turn multimodal routing for image prompts ([#7045](https://github.com/QwenLM/qwen-code/pull/7045)) by @yiliang114
- feat(agents): support per-model sub-agent concurrency limits ([#6984](https://github.com/QwenLM/qwen-code/pull/6984)) by @qwen-code-dev-bot
- feat(cli): add daemon Todo stop guard ([#6945](https://github.com/QwenLM/qwen-code/pull/6945)) by @doudouOUC
- feat(cli): show active path in compact tool summaries ([#7043](https://github.com/QwenLM/qwen-code/pull/7043)) by @zjunothing
- feat(vscode): route logs to the Qwen Code Companion output channel ([#7121](https://github.com/QwenLM/qwen-code/pull/7121)) by @yiliang114
- feat(core): overhaul web_fetch — content fidelity, binary handling, security, and resilience ([#7146](https://github.com/QwenLM/qwen-code/pull/7146)) by @tanzhenxin
- feat(channels): expose workspace-scoped observed contacts ([#7109](https://github.com/QwenLM/qwen-code/pull/7109)) by @BenGuanRan
- feat(web-shell): persist the split view across refresh, per tab ([#7136](https://github.com/QwenLM/qwen-code/pull/7136)) by @wenshao
- feat(web-shell): add a workspace Goals page, and stop losing /goal on daemon resume ([#6561](https://github.com/QwenLM/qwen-code/pull/6561)) by @wenshao
- feat(core): improve subagent delegation defaults and guardrails ([#7048](https://github.com/QwenLM/qwen-code/pull/7048)) by @DragonnZhang
- feat(review): build every Step 5 auditor of a round in one call, identity first ([#7150](https://github.com/QwenLM/qwen-code/pull/7150)) by @wenshao
- feat(channels): observe group names from inbound messages ([#7155](https://github.com/QwenLM/qwen-code/pull/7155)) by @BenGuanRan
- feat(web-shell): git status chip, visual working-tree diff, and sidebar git status ([#7054](https://github.com/QwenLM/qwen-code/pull/7054)) by @wenshao
- feat(channels): recall relevant memory per message ([#7157](https://github.com/QwenLM/qwen-code/pull/7157)) by @qwen-code-dev-bot
### Bug Fixes
- fix(serve): Harden multi-workspace ownership guards ([#7005](https://github.com/QwenLM/qwen-code/pull/7005)) by @doudouOUC
- fix: bound usage-only streams and abort on quit ([#7038](https://github.com/QwenLM/qwen-code/pull/7038)) by @yiliang114
- fix(acp): disambiguate model routes ([#7028](https://github.com/QwenLM/qwen-code/pull/7028)) by @yiliang114
- fix(web-shell): batch transcript dispatch to avoid tab-return freeze ([#7012](https://github.com/QwenLM/qwen-code/pull/7012)) by @wenshao
- fix(core): Require explicit approval to exit Plan mode ([#6967](https://github.com/QwenLM/qwen-code/pull/6967)) by @doudouOUC
- fix(web-shell): use formatSettingCategory for fallback UI category ([#7055](https://github.com/QwenLM/qwen-code/pull/7055)) by @wenshao
- fix(integration): add missing session_info to E2E capabilities baseline ([#7091](https://github.com/QwenLM/qwen-code/pull/7091)) by @qwen-code-dev-bot
- fix(tui): pin MaxSizedBox rows and gate the pending backstop for show-more diff (#6809) ([#6957](https://github.com/QwenLM/qwen-code/pull/6957)) by @azurecgx
- fix(integration): harden flaky interactive read-then-write test ([#7105](https://github.com/QwenLM/qwen-code/pull/7105)) by @wenshao
- fix(core): retry empty tool-result continuations ([#7039](https://github.com/QwenLM/qwen-code/pull/7039)) by @yiliang114
- fix(core): align planning and response guidance ([#7085](https://github.com/QwenLM/qwen-code/pull/7085)) by @DragonnZhang
- fix(web-shell): render built-in tag icons ([#7024](https://github.com/QwenLM/qwen-code/pull/7024)) by @callmeYe
- fix(core): force tool_choice in generateJson to prevent auto-mode classifier deadlock ([#6929](https://github.com/QwenLM/qwen-code/pull/6929)) by @qwen-code-dev-bot
- fix(ci): notify silent triage re-runs ([#7079](https://github.com/QwenLM/qwen-code/pull/7079)) by @yiliang114
- fix(cli): pop the kitty keyboard protocol after leaving the alternate screen ([#7115](https://github.com/QwenLM/qwen-code/pull/7115)) by @zjunothing
- fix(web-shell): optionally restart SSE after prompt admission ([#7080](https://github.com/QwenLM/qwen-code/pull/7080)) by @ytahdn
- fix(core): accept subagents created after startup instead of rejecting on stale cache ([#7112](https://github.com/QwenLM/qwen-code/pull/7112)) by @zjunothing
- fix(cli): keep streaming code blocks intact when split across commits ([#7020](https://github.com/QwenLM/qwen-code/pull/7020)) by @MikeWang0316tw
- fix(i18n): correct "extenison" typo in extension enable/disable scope help ([#7057](https://github.com/QwenLM/qwen-code/pull/7057)) by @chinesepowered
- fix(core): make the per-turn tool-call cap adaptive ([#7052](https://github.com/QwenLM/qwen-code/pull/7052)) by @wenshao
- fix(vscode): preserve Electron Node mode for ACP launch ([#7106](https://github.com/QwenLM/qwen-code/pull/7106)) by @yiliang114
- fix(core): preserve complete skill descriptions ([#7032](https://github.com/QwenLM/qwen-code/pull/7032)) by @callmeYe
- fix(core): persist resolved subagent model in metadata ([#7104](https://github.com/QwenLM/qwen-code/pull/7104)) by @ARE404
- fix(web-shell): stop stacking duplicate copies when restoring prompt text ([#7134](https://github.com/QwenLM/qwen-code/pull/7134)) by @zjunothing
- fix(core): retry malformed repeated thinking tags ([#7100](https://github.com/QwenLM/qwen-code/pull/7100)) by @yiliang114
- fix(cli): correct misspelled handleUpdateRecieved -> handleUpdateReceived ([#7132](https://github.com/QwenLM/qwen-code/pull/7132)) by @chinesepowered
- fix(cli): hide sticky task panel when agent is idle ([#7062](https://github.com/QwenLM/qwen-code/pull/7062)) by @qwen-code-dev-bot
- fix(cli): keep the model override when a background notification drains ([#7119](https://github.com/QwenLM/qwen-code/pull/7119)) by @zjunothing
- fix(core): align prompt tool examples with schemas ([#7088](https://github.com/QwenLM/qwen-code/pull/7088)) by @DragonnZhang
- fix(cli): require a second Ctrl+C within 1s before a real SIGINT exits the TUI ([#7129](https://github.com/QwenLM/qwen-code/pull/7129)) by @zjunothing
- fix: keep quit and stream logging reliable ([#7124](https://github.com/QwenLM/qwen-code/pull/7124)) by @yiliang114
- fix(ui): keep SkillReviewDialog right border inside the dialog container ([#7047](https://github.com/QwenLM/qwen-code/pull/7047)) by @zjunothing
- fix(core): preserve existing work in system prompt ([#7087](https://github.com/QwenLM/qwen-code/pull/7087)) by @DragonnZhang
- fix(mcp): terminate descendants after discovery timeout ([#6926](https://github.com/QwenLM/qwen-code/pull/6926)) by @morluto
- fix(review): report what the transcripts prove; build the roster in one call ([#7033](https://github.com/QwenLM/qwen-code/pull/7033)) by @wenshao
- fix(cli): establish extension store generation baseline on first read ([#7072](https://github.com/QwenLM/qwen-code/pull/7072)) by @qwen-code-dev-bot
- fix(core): remove ask_user_question from the Explore agent's toolset ([#7133](https://github.com/QwenLM/qwen-code/pull/7133)) by @zjunothing
- fix(web-shell): scope advanced table overlays ([#7097](https://github.com/QwenLM/qwen-code/pull/7097)) by @ytahdn
- fix(core): correct "supercedes" typo in plan-mode system prompt ([#7058](https://github.com/QwenLM/qwen-code/pull/7058)) by @chinesepowered
- fix(ask-user-question): accept long headers and size chips to the container width ([#7063](https://github.com/QwenLM/qwen-code/pull/7063)) by @tanzhenxin
- fix(core): canonicalize restrictive permission paths ([#6923](https://github.com/QwenLM/qwen-code/pull/6923)) by @morluto
- fix(core): align system prompt with interaction mode ([#7089](https://github.com/QwenLM/qwen-code/pull/7089)) by @DragonnZhang
- fix(memory): resolve root symlinks in isAllowedMemoryPath before creation ([#6842](https://github.com/QwenLM/qwen-code/pull/6842)) by @wenshao
- fix(core): add kimi-k3 token limits (1M context, 128K output) ([#7144](https://github.com/QwenLM/qwen-code/pull/7144)) by @tanzhenxin
- fix(integration): use lenient assertion and harden poll in interactive file-system test ([#7113](https://github.com/QwenLM/qwen-code/pull/7113)) by @qwen-code-dev-bot
- fix(core): resolve a parameter expansion in command position to its command root ([#7143](https://github.com/QwenLM/qwen-code/pull/7143)) by @wenshao
- fix(cli): make auto output language follow user input ([#6953](https://github.com/QwenLM/qwen-code/pull/6953)) by @han-dreamer
- fix(core): respect enableManagedAutoMemory in memory availability ([#6941](https://github.com/QwenLM/qwen-code/pull/6941)) by @han-dreamer
- fix(cli): tighten VP-mode controls footprint and fix shell tool indicator overlap ([#6931](https://github.com/QwenLM/qwen-code/pull/6931)) by @chiga0
- fix(acp): resolve textual @ image paths ([#7123](https://github.com/QwenLM/qwen-code/pull/7123)) by @yiliang114
- fix: correct typos in comments, a tool description, and docs ([#7131](https://github.com/QwenLM/qwen-code/pull/7131)) by @chinesepowered
- fix: harden desktop MCP permission-request lifecycle so pending prompts never hang or leak ([#7013](https://github.com/QwenLM/qwen-code/pull/7013)) by @mvanhorn
- fix(cli): correct misspelled migratedInMemorScopes -> migratedInMemoryScopes ([#7140](https://github.com/QwenLM/qwen-code/pull/7140)) by @chinesepowered
- fix(web-shell): recover new-session decisions wrapped in prose or fences ([#7122](https://github.com/QwenLM/qwen-code/pull/7122)) by @wenshao
- fix(web-shell): make approval and question overlays keyboard accessible ([#7074](https://github.com/QwenLM/qwen-code/pull/7074)) by @wenshao
- fix(cli): restore cancelled prompt after streamed output ([#7149](https://github.com/QwenLM/qwen-code/pull/7149)) by @barry166
- fix(channels): scope pairing and allowlist state by workspace ([#7065](https://github.com/QwenLM/qwen-code/pull/7065)) by @zjunothing
### Performance
- feat(daemon): Profile ACP channel initialization ([#7145](https://github.com/QwenLM/qwen-code/pull/7145)) by @doudouOUC
### Documentation
- docs(serve): Close multi-workspace hardening gaps ([#7019](https://github.com/QwenLM/qwen-code/pull/7019)) by @doudouOUC
- docs(cua-driver): fix broken relative-coordinate design link ([#7130](https://github.com/QwenLM/qwen-code/pull/7130)) by @chinesepowered
- docs(autofix): make bot PR comments bilingual with collapsed Chinese ([#7137](https://github.com/QwenLM/qwen-code/pull/7137)) by @wenshao
### Internal Changes
- refactor(web-shell): drop redundant primary-workspace label ([#7035](https://github.com/QwenLM/qwen-code/pull/7035)) by @wenshao
- test(web-shell): make visual-preview captures deterministic + add workspace-sidebar scenario ([#7041](https://github.com/QwenLM/qwen-code/pull/7041)) by @wenshao
- ci(autofix): recover from generated-artifact CI gates and stop silent stalls ([#6998](https://github.com/QwenLM/qwen-code/pull/6998)) by @wenshao
- ci(autofix): run the schema gate from a trusted staged copy, not the branch tree ([#7076](https://github.com/QwenLM/qwen-code/pull/7076)) by @wenshao
- test(web-shell): align workspace sidebar visual smoke ([#7107](https://github.com/QwenLM/qwen-code/pull/7107)) by @yiliang114
- test(cli): isolate sandbox-relaunch tests from ambient QWEN_SANDBOX_IMAGE ([#7093](https://github.com/QwenLM/qwen-code/pull/7093)) by @wenshao
- ci(autofix): treat Suggestion-level review findings as actionable per AGENTS.md ([#7094](https://github.com/QwenLM/qwen-code/pull/7094)) by @wenshao
- test(serve): cover session-info regressions ([#7083](https://github.com/QwenLM/qwen-code/pull/7083)) by @samuelhsin
- test(cli): actually exercise the paste-workaround path in useKeypress ([#7141](https://github.com/QwenLM/qwen-code/pull/7141)) by @chinesepowered
- ci(autofix): fan out review targets and stop route-scan starvation ([#7127](https://github.com/QwenLM/qwen-code/pull/7127)) by @wenshao
- ci(shepherd): add Fleet Shepherd — automated unblocking of the bot-PR fleet ([#7142](https://github.com/QwenLM/qwen-code/pull/7142)) by @wenshao
- refactor(core): Classify shell safety as read-only, write, or unknown ([#7053](https://github.com/QwenLM/qwen-code/pull/7053)) by @doudouOUC
## New Contributors
- @azurecgx made their first contribution in [#6957](https://github.com/QwenLM/qwen-code/pull/6957)
- @makwingchi made their first contribution in [#7082](https://github.com/QwenLM/qwen-code/pull/7082)
- @ARE404 made their first contribution in [#7104](https://github.com/QwenLM/qwen-code/pull/7104)
**Full Changelog**: https://github.com/QwenLM/qwen-code/compare/v0.19.11...v0.19.12