What's Changed
- feat(managed-agent): register client filesystems into managed sessions by @wenshao in #16844
- test(web-shell): open the shadow overview from its footer entry by @qwen-code-dev-bot in #17067
- feat(managed-agent): plan long channel replies as ordered multi-segment deliveries by @wenshao in #17002
- fix(permissions): judge user authorization in the AUTO classifier by @yanyukang2003-ux in #16858
- feat(core): run each AgentCore round in one runAgentLoop call by @qqqys in #17059
- refactor(managed-agent): delete the redundant JdbcRuntimeBrokerSchema alias by @doudouOUC in #17075
- fix(web-shell): mark the selected Full Access trigger as dangerous by @callmeYe in #17100
- fix(managed-agent): drop the stale tenant guard from synchronous rename settlement by @doudouOUC in #17074
- fix(web-shell): preserve observer activity during recovery by @callmeYe in #17098
- refactor(managed-agent): drop the catalog probe and repeated root lock from binding control by @doudouOUC in #17072
- fix(web-shell): show timeline on narrower screens by @callmeYe in #16986
- feat(cli): run each OpenTUI round in one runAgentLoop call by @qqqys in #17104
- fix(deps): 修复 MCP、DOMPurify 和压缩请求解析漏洞 by @chiga0 in #17105
- fix(managed-agent): stop the legacy CSI guard from gap-locking other Sessions by @doudouOUC in #17069
- test(cli): compare the kernel off and on in every headless parity scenario by @qqqys in #17130
- feat(channels): add Feishu custom bot webhook delivery by @jkxiao in #17012
- fix(deps): 修复 qs、URI 和 Hono 等剩余安全依赖 by @chiga0 in #17134
- fix(core): avoid UNC lookups for HTTP URLs in AUTO mode by @callmeYe in #17127
- fix(core): recover native Anthropic unsigned thinking history by @callmeYe in #17031
- fix(deps): 修复独立 Electron 构建树安全依赖 by @chiga0 in #17147
- fix(web-shell): collapse goal status details by default by @callmeYe in #17133
- feat(core): review fast classifier timeouts with the session model by @callmeYe in #17146
- fix(web-shell): keep the composer editable for a foreign unconfirmed send by @yiliang114 in #17140
- fix(core): recover Unicode-escaped edit strings by @callmeYe in #17096
- refactor(acp): replace host turn flags with explicit inputs by @yiliang114 in #17070
- docs(managed-agent): inventory the lifecycle claim mirror and tenant guards by @doudouOUC in #17073
- chore(managed-agent): convergence alignment — embedding regression test, release repair removal, design by @doudouOUC in #17139
- fix(web-templates): align export budget with current main output by @chiga0 in #17153
- test(integration): deflake the TUI loop parity background notification (#17102) by @qwen-code-dev-bot in #17114
- fix(deps): 联合升级 glob 与 minimatch 安全依赖 by @chiga0 in #17149
- feat(sdk): expose workspace memory import API by @callmeYe in #17162
- feat(cli): run each Ink TUI round in one runAgentLoop call by @qqqys in #17160
- fix(web-shell): keep hover timestamps off message controls by @callmeYe in #17168
- fix(deps): remove obsolete ExcelJS archive dependency paths by @chiga0 in #17163
- feat(hooks): record and query per-turn executions by @callmeYe in #17015
- feat(core): publish loop.cancelled and bound a cancelled run on the event bus by @qqqys in #17145
- fix(deps): upgrade independent Electron matcher dependency paths by @chiga0 in #17165
- feat(web): add Feishu webhook connection method by @jkxiao in #17013
- test(integration): deflake the headless and TUI agent loop parity suites (#16710, #16505, #16787, #16947, #17131) by @yiliang114 in #17172
- perf(cli): skip interactive extension watching in ACP by @callmeYe in #17177
- feat(ci): add the kernel and OpenTUI nightly legs for the loop rollout by @wenshao in #17050
- docs(design): record the streaming tool dispatch decisions by @qqqys in #17171
- fix(external-context): deflake malformed proxy env test (#17176) by @qwen-code-dev-bot in #17179
- fix(web-shell): prevent selected table toolbar overlap by @Lilian0122 in #17020
- feat(serve): provision the PR watch's deps and deliver on resume by @wenshao in #17032
- feat(web-shell): improve session search experience by @deggs7 in #16779
- fix(cli): clear non-sensitive extension setting drafts by @chiga0 in #15951
- fix(cli): Prepare file watchers before final interactive exit by @chiga0 in #17148
- feat(managed-agent): add the Managed Web Terminal by @wenshao in #16866
- fix(core): guard Unicode recovery escape boundaries by @callmeYe in #17152
- feat(managed-agent): fixed-interval /loop schedules for Managed Sessions by @wenshao in #17088
- test(web-shell): run the mid-width toolbar test inside its container band by @wenshao in #17187
- test(cli): deflake managed runtime terminal replay test (#17192) by @qwen-code-dev-bot in #17194
- feat(cli): run each ACP round in one runAgentLoop call by @qqqys in #17181
- Verify agent loop execution across Managed entry points by @yiliang114 in #17180
- fix(ci): route classify_pr by association and admit dispatch to the fleet by @yiliang114 in #17178
- feat(core): run speculation's model rounds through the shared agent loop by @wenshao in #17029
- fix(web-shell): keep terminal and local commands working over plain HTTP by @wenshao in #17196
- docs(readme): rewrite Capabilities as a grouped feature overview by @wenshao in #17226
- fix(managed-agent): address the post-merge review notes on the loop schedule slice by @wenshao in #17197
- test(integration): deflake the maximum export document budget (#17203) by @qwen-code-dev-bot in #17205
- feat(core): resolve the loop switches per surface with env force on/off by @wenshao in #17055
- test(managed-agent): cover the nullable creator key and tenant predicate in the creator-actor read by @wenshao in #17235
- feat(channels): add WeCom group webhook delivery by @jkxiao in #17223
- test(external-context): clear lowercase proxy vars in the fail-fast pack test by @wenshao in #17240
- test(integration): deflake queued-input parity case (#17217) by @qwen-code-dev-bot in #17220
- fix(cli): size the agent tab context usage against the agent's own model window by @Shizoqua in #13614
- perf(cli): reduce cold ACP initialization work by @callmeYe in #17209
- feat(web): add WeCom webhook connection method by @jkxiao in #17224
- feat(serve): make the PR watch operator-owned and retire the channel's by @wenshao in #17214
- test(ci): name the shape the tree-ref encoder actually guards by @wenshao in #17191
- test(external-context): make the fail-fast pack test self-contained (#17243) by @qwen-code-dev-bot in #17246
- test(web-shell): aim the retention wheel at the transcript, not the timeline rail by @wenshao in #17242
- fix(cli): preserve feedback input and refresh workflow catalog by @qqqys in #17233
- feat(cli): restore native Memory controls and file actions by @chiga0 in #17213
- fix(managed-agent): accept PUBLISHED as the settled state for Agent configuration reads by @yiliang114 in #17207
- test(integration): count ACP's loop rounds by a marker of their own by @qqqys in #17227
- docs(design): evaluate the Hosted Harness agent-loop migration by @wenshao in #17248
- docs(readme): fix availability claims and expand channel coverage by @wenshao in #17263
- fix(integration): give the memory-manager suite an output root of its own by @wenshao in #17265
- refactor(web-shell): drop the never-supplied per-call QR-login client id by @wenshao in #16999
- docs(readme): dedupe pitch labels and link /resume to its reference by @wenshao in #17277
- perf(java): share immutable transcript page snapshots by @Afloat16 in #17115
- fix(java): return correlated errors for control callback failures by @Afloat16 in #17113
- feat(web-shell): aggregate Goals page across workspaces by @wenshao in #17230
- perf(core): speed up usage-dashboard replay with a per-transcript cache by @wenshao in #17239
- docs(serve): settle the PR watch design's status and answered questions by @wenshao in #17250
- feat(serve): run the Hosted Harness model round on the shared agent loop by @wenshao in #17264
- fix(integration): load the memory-manager editor fixtures as CommonJS by @qwen-code-dev-bot in #17294
- fix(managed-agent): read inherited extension configuration at its committed state by @yiliang114 in #17281
- ci: route trusted PR jobs off the disposable pool by @yiliang114 in #17279
Full Changelog: desktop-v0.27.3...desktop-v0.27.4