What's Changed
- feat(web-shell): visualize and manage dynamic workflow runs by @qqqys in #10594
- perf(web-shell): derive the session workflow projection once by @yiliang114 in #10871
- test(integration): synchronize mid-turn /quit completion by @qwen-code-dev-bot in #10926
- feat(ipc): tell senders when a message is refused, and expire held ones by @qqqys in #10809
- fix(web-shell): make the 30 s overview-poll e2e deterministic by @yiliang114 in #10934
- feat(serve): add session resource catalog by @w9lsky in #10837
- fix(cli): submit exact slash commands from the live input by @yiliang114 in #10929
- fix(web-shell): disable Push while the branch is behind its upstream by @wenshao in #10754
- fix(cli): resolve session-management settings per request, not from the stale this.settings cache by @tomsen02 in #10095
- fix(ci): name the failing job when a main CI run reports no test result by @qwen-code-dev-bot in #10855
- test(cli): keep the redaction ReDoS guard asserting on the shared pool by @yiliang114 in #10912
- fix(cli): complete the live slash-submit deps and fixture (#10944) by @qwen-code-dev-bot in #10961
- fix(test): end interactive PTY sessions a test never closed by @qwen-code-dev-bot in #10971
- feat(web-shell): give running subagents a live status in the transcript by @wenshao in #10939
- ci(e2e): build once on a hosted runner and unpack it on every leg by @wenshao in #10894
- fix(cli): submit exact OpenTUI slash commands from live input by @yiliang114 in #10987
- fix(cli): resolve the OpenTUI slash submit from the live buffer on Enter by @wenshao in #10986
- docs(web-shell): align follow-up suggestion copy by @Theater-ahyeon in #10851
- fix(channels/dingtalk): keep SDK connect logging from printing clientSecret and stream ticket by @yiliang114 in #10945
- feat(cli): Open OSC 8 links with a plain click in VP mode by @chiga0 in #10979
- feat(channels): Add worktree-isolated named tasks by @doudouOUC in #10643
- feat(serve): add session turn navigation protocol by @doudouOUC in #10751
- fix(cli): OpenTUI transcript visibility for commands, /clear and steers by @chiga0 in #10947
- fix(docs): sync daemon capability count by @yiliang114 in #11012
- feat(web-shell): restore environment panel state by @ytahdn in #10627
- feat(ipc): keep the peer inbox reachable, and say so when it is not by @qqqys in #10800
- feat: chat transcript mr2a html export by @water-in-stone in #10076
- feat(serve): Fence Conversations writers with mandatory session leases by @doudouOUC in #10924
- fix(dws): recognize slash commands after bot mentions by @qqqys in #10930
- feat: load custom output styles from ~/.qwen/output-styles and .qwen/output-styles by @qqqys in #10761
- fix(ci): retry a registry-side npm audit failure instead of reporting it as a CVE by @yiliang114 in #11006
- fix(cli): allow quit before slash commands load by @yiliang114 in #11029
- fix(test): stop measuring model latency on the shared E2E pool by @qwen-code-dev-bot in #11004
- refactor(cli): route every per-request runtime-root pin through runWithPinnedRuntimeBaseDir by @tomsen02 in #10988
- docs(web-shell): add global turn navigation Phase 2 design by @doudouOUC in #11020
- fix(cli): keep input closed until chat initialization completes by @yiliang114 in #11000
- fix: restore ACP-related main CI checks by @yiliang114 in #11033
- refactor(rewind): unify the ACP and TUI user-prompt classifiers by @yiliang114 in #10959
- test(web-shell): render the Session Workflow cockpit in the visuals preview by @yiliang114 in #11014
- fix(web-shell): label usage-limited goal cards correctly by @yu-xin-c in #10553
- feat(ui): add ui.showToolCallArgs to render tool-call arguments inline by @TianYuan1024 in #10565
- fix(test): sync the pinned no-AK integration script list (#11050) by @qwen-code-dev-bot in #11052
- fix(web-shell): scope select-all in the cell value dialog to the value by @LizunovSergey in #10857
- fix(test): raise the ACP initialize budget for inline E2E daemon spawns (#11034) by @qwen-code-dev-bot in #11041
- fix(core): allow manual retry after auto mode blocks by @qqqys in #11025
- feat(ipc): hold peer messages across review classes, let repositories only tighten inbound settings by @qqqys in #11026
- fix(cli): route turn-index reads through runtime-root pin by @yiliang114 in #11036
- feat(skills): add built-in zvec-grep installer by @zhourrr in #10723
- docs(cli): mention Token Plan env setup in the qwen auth removal notice by @now-ing in #10993
- fix(core): coalesce concurrent Config.initialize() calls by @yiliang114 in #11037
- fix(cli): repair the live slash gate fallout on main by @qwen-code-dev-bot in #10940
- feat(core): send session ID to Routify endpoints by @DragonnZhang in #10896
- feat(core): make todo_write opt-in by @DragonnZhang in #10645
- perf(cli): avoid hashing invalid inline image cache hits by @zjunothing in #10626
- fix(core): reject ambiguous send_message destinations by @GCGH159 in #10090
- fix(core): strip reasoning_content from Cerebras requests by @yiliang114 in #11049
- feat(serve): add workspace-scoped Skills runtime by @ytahdn in #10697
- feat(channels): filter messages by configured prefix by @qqqys in #10817
- fix(goal): end daemon turns at verification checkpoints by @qqqys in #11011
- refactor!: retire @qwen-code/webui by @yiliang114 in #9812
- docs: record where a background agent shows up, and who owns it by @yiliang114 in #10951
- chore(ci): remove retired WebUI dependency guard by @yiliang114 in #11095
- docs(core): say why the Todo dependency semantics are not behind the flag by @yiliang114 in #11078
- fix(core): harden Config.initialize() join path by @yiliang114 in #11075
New Contributors
- @w9lsky made their first contribution in #10837
- @Theater-ahyeon made their first contribution in #10851
- @LizunovSergey made their first contribution in #10857
- @zhourrr made their first contribution in #10723
- @GCGH159 made their first contribution in #10090
Full Changelog: v0.23.0...v0.23.1-preview.0