What's Changed
- fix(cli): scope the ACP permission queue to the session by @chiga0 in #11802
- feat(channels): add shared output modes with DingTalk support by @qqqys in #11822
- feat(web-shell): slide the active pill between tabs by @callmeYe in #11844
- refactor(goal): delete the first-generation Stop-hook Goal implementation by @qqqys in #11900
- fix(ci): separate autofix runner labels from queued reviews by @yiliang114 in #11912
- feat(daemon): enumerate installed extension skills locally by @callmeYe in #11281
- feat(web-shell): follow the reading position in the global turn navigation by @callmeYe in #11801
- feat(workflows): share a per-turn token budget from a +Nk directive by @qqqys in #11917
- feat(serve): add budget-based ACP child admission by @doudouOUC in #11911
- feat(cli): add bwrap kernel sandbox backend for Linux by @doudouOUC in #11614
- fix(cli): restore shared Skill status and runner CI checks by @qqqys in #11933
- fix(vscode): retire legacy ACP input bridges by @yiliang114 in #11928
- feat(core): support external reasoning profiles and defaults by @callmeYe in #11856
- feat(settings): turn cross-session messaging on by default by @qqqys in #11840
- fix(web-shell): show Qwen Live tasks in session sidebar by @qqqys in #11830
- fix(ci): isolate runner schedule fixture module scope by @doudouOUC in #11938
- feat(core): run saved workflows by name and pin workflow grants to script content by @qqqys in #11943
- feat(workflow): preserve source references across runs and resumes by @qqqys in #11931
- refactor(vscode): remove unused token limit mirror by @yiliang114 in #11946
- fix(core): carry the PTY load reason on the call, not in module state by @yiliang114 in #11923
- feat(workflow): correlate agent dispatches and nested workflow calls by @qqqys in #11932
- docs(goal): retire the Stop-hook era prose after the implementation was removed by @qqqys in #11922
- fix(core): keep escaped trailing whitespace when trimming hook matchers by @yiliang114 in #11871
- feat(workflows): size guideline, structure preview and large-run warning by @qqqys in #11939
- fix(core): expand ${session_id} and stamp User-Agent on the Responses wire by @yiliang114 in #11947
- feat(workflows): let the model invoke extension workflows that declare whenToUse by @qqqys in #11957
- feat(daemon): support summary projection for prompt and replay APIs by @ytahdn in #11920
- ci(desktop): publish the desktop app when the CLI releases by @yiliang114 in #11575
- test(cli): unbreak the bwrap sandbox suites on the Windows lane (#11968) by @qwen-code-dev-bot in #11970
- fix(core): keep tool parameters on the MiniMax chat-completions wire by @yiliang114 in #11842
- fix(web-shell): stop the approval sheet resizing while reading by @ytahdn in #11930
- fix(release): gate pool-routed validation jobs on a disk floor by @qwen-code-dev-bot in #11972
- feat(web-shell): add footnote previews and per-turn sources by @callmeYe in #11480
- fix(web-shell): preserve separators in tool description paths by @ytahdn in #11977
- feat(telemetry): emit a Goal lifecycle event and metrics by @qqqys in #11927
- feat(cli): reload hook registry when /hooks opens by @qqqys in #11904
- fix(core): persist Goal turn endings outside model history by @qqqys in #11924
- feat(serve): reclaim idle ACP children when admission is full by @doudouOUC in #11940
- feat(web-shell): connect to a selected remote daemon by @yiliang114 in #11548
- fix(web-shell): keep the recap below a turn's outputs and dedupe it by @ytahdn in #11986
- feat(web-shell): preview files from expanded tool details by @ytahdn in #11982
- fix(ci): heal the docker lock cache ownership in e2e-test-linux (#11990) by @qwen-code-dev-bot in #11992
- feat(serve): start workflow runs with args, sourceRef and a caller-supplied script by @qqqys in #11979
- refactor(serve): separate ACP control plane and channel harness by @wenshao in #11916
- fix(cli): register model-invocable commands before headless turns by @qqqys in #11994
- fix(vscode): reach the workspace daemon from a remote window's webview by @yiliang114 in #11983
- feat(web-shell): customize context details and collapse snapshots by @ytahdn in #11996
- docs(serve): clarify daemon event recovery contracts by @wenshao in #12015
- test(serve): harden REST docs contract checks by @yiliang114 in #12009
- feat(goal): bill foreground subagents and verifier token usage by @qqqys in #11998
- docs(users): point onboarding at Token Plan instead of Coding Plan by @wenshao in #11980
- feat(dingtalk): carry sender identity in direct messages by @BenGuanRan in #12017
- feat(goal): show turn and active-time budgets by @qqqys in #11999
- fix(cli): make the ink useBoxMetrics loop guard independent of machine speed by @yiliang114 in #11835
- fix(ci): skip completed desktop releases by @yiliang114 in #12013
- fix(web-shell): honor ui.theme and general.language in the standalone Web Shell by @yiliang114 in #11961
- feat(omni): integrate multimodal media pipeline into main by @LaZzyMan in #12019
- docs(daemon): complete integration path guide by @yiliang114 in #12005
Full Changelog: cua-driver-rs-v0.20.9...desktop-v0.24.0