What's Changed
- feat(vscode): add native context menu copy actions for webview chat by @dreamWB in #3477
- perf(core): cut runtime sync I/O on tool hot path by 91% by @wenshao in #3581
- feat(cli): add Traditional Chinese (zh-TW) as a UI language option by @MikeWang0316tw in #3569
- docs(github): tighten PR template validation guidance by @pomelo-nwu in #3522
- fix(cli): memoize useHistory() return to avoid unnecessary re-renders by @qqqys in #3547
- feat(vscode): expose /skills as slash command with secondary picker by @yiliang114 in #2548
- feat(SDK) Add Python SDK implementation for #3010 by @doudouOUC in #3494
- fix(cli): respect OPENAI_MODEL precedence in CLI model resolution by @B-A-M-N in #3567
- fix(cli): add TUI flicker foundation fixes by @chiga0 in #3591
- fix(cli): drain runExitCleanup before process.exit in error handlers by @wenshao in #3602
- feat(cli): add conversation rewind feature with double-ESC and /rewind command by @doudouOUC in #3441
- fix(review): respect /language output setting for local reviews by @yiliang114 in #3611
- test(arena): cover select dialog key actions by @reidliu41 in #3614
- feat: adds a Space-to-preview affordance to the /resume session picker by @qqqys in #3605
- fix(test): update rewind E2E Test 1 assertion after isRealUserTurn fix by @doudouOUC in #3622
- fix(core): preserve settings-sourced apiKey when registry model envKey is absent by @doudouOUC in #3495
- docs(telemetry): clarify Alibaba Cloud console entry by @doudouOUC in #3498
- feat(cli): add sticky todo panel to app layouts by @shenyankm in #3507
- fix(telemetry): use safeJsonStringify in FileExporter to avoid circular reference crash by @wenshao in #3630
- fix(core): match DeepSeek provider by model name for sglang/vllm (#3613) by @wenshao in #3620
- revert(cli): undo OPENAI_MODEL precedence change in modelProviders lookup (#3567) by @tanzhenxin in #3633
- feat: Adds Catalan language support by @jordimas in #3643
- fix(vscode-companion): slash command completion not triggering after message submit by @yiliang114 in #3609
- fix(cli): guard gradient rendering without colors by @yiliang114 in #3640
- fix(config): support QWEN_CODE_API_TIMEOUT_MS across OAuth and non-OAuth paths by @B-A-M-N in #3629
- feat(cli): add API preconnect to reduce first-call latency by @doudouOUC in #3318
- feat(cli): Add argument-hint support for slash commands by @DragonnZhang in #3593
- refactor(config): dedupe QWEN_CODE_API_TIMEOUT_MS env override logic by @B-A-M-N in #3653
- chore(gitignore): add .codex directory by @doudouOUC in #3665
- Feat/openrouter auth by @pomelo-nwu in #3576
- feat(cli,core): LLM-generated summary labels for tool-call batches by @wenshao in #3538
- feat(cli): add OSC notification support for iTerm2, Kitty, and Ghostty by @dreamWB in #3562
- feat(vscode): add tab dot indicator and notification system (#3106) by @dreamWB in #3661
- feat(core): model-facing agent control (task_stop, send_message, per-agent transcript) by @tanzhenxin in #3471
- fix(cli): add API Key option to
qwen authinteractive menu by @doudouOUC in #3624 - fix(core): recover from
}{glued records on session JSONL load (#3606) by @qqqys in #3656 - fix(core): split tool-result media into follow-up user message for strict OpenAI compat by @mohitsoni48 in #3617
- fix(core): handle shell line continuations in command splitting by @Jerry2003826 in #3600
- fix(cli): recognize OpenAI-compatible providers in
qwen auth statusby @doudouOUC in #3623 - fix(core,cli): stop stripping reasoning on model switch/history load by @fyc09 in #3682
- feat(cli): background-agent UI — pill, combined dialog, detail view by @tanzhenxin in #3488
- feat(core): managed background shell pool with /tasks command by @wenshao in #3642
- fix(ci): use squash merge for SDK release auto-merge by @tanzhenxin in #3690
- chore(release): sdk-typescript v0.1.7 by @qwen-code-ci-bot in #3688
- test(cli): remove 8 flaky TUI input tests surfaced by CI history mining by @tanzhenxin in #3694
- fix(cli): preserve description in subject-bearing thought chunks by @tanzhenxin in #3691
- fix(core): treat ask_user_question multiSelect as optional by @tanzhenxin in #3699
- fix(core): set DeepSeek V4 context to 1M and output to 384K by @tanzhenxin in #3693
- fix(ci): preserve preview version overrides by @doudouOUC in #3705
- chore(release): bump version to 0.15.3 by @yiliang114 in #3708
- mcp config as cli by @eliird in #1279
- fix(cli): refresh static header on model switch by @pomelo-nwu in #3667
- feat(core): wire background shells into the task_stop tool by @wenshao in #3687
- feat(skills): add tmux-real-user-testing skill for readable TUI test logs by @pomelo-nwu in #3577
- feat(cli): wire background shells into combined Background tasks dialog by @wenshao in #3720
- fix(core): inject reasoning_content on DeepSeek tool-call replays by @tanzhenxin in #3729
- fix(memory): use project transcript path for dream by @LaZzyMan in #3722
- fix(cli): bound SubAgent display by visual height to prevent flicker by @wenshao in #3721
- fix(cli): keep sticky todo panel compact by @shenyankm in #3647
- fix(core): replay DeepSeek reasoning_content on all assistant turns by @tanzhenxin in #3747
- fix(cli): correct model precedence — argv > settings > auth env vars by @B-A-M-N in #3645
- fix(core): preserve reasoning_content in rewind, compression, and merge paths (#3579) by @fyc09 in #3737
- fix(cli): persist directory add entries by @cyphercodes in #3752
- fix(lsp): 修复 LSP 文档、isPathSafe 限制,并提升 LSP 工具调用率 by @yiliang114 in #3615
- fix(vscode-companion): fill slash commands into input on Enter instead of auto-submitting by @yiliang114 in #3618
- fix(ci): add merge-back PR for stable releases in release workflow by @yiliang114 in #3764
- chore(core): drop tool token usage tracking by @tanzhenxin in #3727
- chore(release): v0.15.6 by @qwen-code-ci-bot in #3766
- feat(core): add FileReadCache and short-circuit unchanged Reads by @wenshao in #3717
- fix(cli): honor proxy setting by @cyphercodes in #3753
- chore: remove legacy Gemini workflows by @pomelo-nwu in #3725
- feat(core): add shared permission flow for tool execution unification by @B-A-M-N in #3723
- fix(cli): restore SubAgent shortcut focus by @yiliang114 in #3771
- Add background agent resume and continuation by @doudouOUC in #3739
- feat(review): expand review pipeline + qwen review CLI subcommands by @wenshao in #3754
- feat(telemetry): define HTTP OTLP endpoint behavior and signal routing by @doudouOUC in #3779
- fix(vscode-companion): align package eslint config with root and style cleanup by @B-A-M-N in #3782
- feat(core): event monitor tool with throttled stdout streaming (Phase C) by @doudouOUC in #3684
- fix(test): restore abort-and-lifecycle stdin-close test to pre-#3723 version by @wenshao in #3777
- feat(cli): add MCP health pill to footer by @wenshao in #3741
- fix(core): inject thinking blocks for DeepSeek anthropic-compatible provider by @wenshao in #3788
- Feat/stats model cost estimation rebase by @B-A-M-N in #3780
- fix(cli): stop double-wrapping and double-printing API errors in non-interactive mode by @umut-polat in #3749
- feat(cli): wire Monitor entries into combined Background tasks dialog by @wenshao in #3791
- feat(cli): include monitors in /tasks + add interactive-mode hint by @wenshao in #3801
- fix(telemetry): suppress async resource attribute warning on startup by @doudouOUC in #3807
- feat(sdk-python): add PyPI release workflow by @doudouOUC in #3685
- fix(core): address post-merge monitor tool and UI routing issues by @doudouOUC in #3792
- docs(core): point background-shell + monitor guidance at both /tasks and the dialog by @wenshao in #3808
- fix(core): clear FileReadCache on every history rewrite path by @wenshao in #3810
- feat(core): support reasoning effort 'max' tier (DeepSeek extension) by @wenshao in #3800
- feat(core): hint to background long-running foreground bash commands by @wenshao in #3809
- feat(skills): parallelize loading + add path-conditional activation by @wenshao in #3604
- fix(core): unescape shell-escaped file paths in Edit, WriteFile, and ReadFile tools by @qiuqiuwen25 in #3820
- fix(openai): parse MiniMax thinking tags by @shenyankm in #3677
- refactor: extract shared release helper utilities by @doudouOUC in #3834
- fix(telemetry): add bounded shutdown timeout and fix service.version resource attribute by @doudouOUC in #3813
- fix(acp): run auto compression before model sends by @Jerry2003826 in #3698
- fix(core): coalesce MCP server rediscovery by @cyphercodes in #3818
- feat(sdk-python): add network timeouts to release version helper by @doudouOUC in #3833
- feat(cli): improve export format completion navigation by @shenyankm in #3701
- feat(cli): Add ability to switch models non-interactively from the cli by @alex-musick in #3783
- feat(weixin): add image sending support via CDN upload by @Mr-Maidong in #3781
- fix(core): activate skills from discovered result paths by @qiuqiuwen25 in #3852
- fix(core): use per-model settings for fast model side queries by @B-A-M-N in #3815
- fix(core): prevent auto-memory recall from blocking main request by @B-A-M-N in #3814
- feat(core,cli): surface and cancel auto-memory dream tasks by @wenshao in #3836
- fix(sdk-python): standardize TAG_PREFIX to include v suffix by @doudouOUC in #3832
- fix(cli): prevent file paths from being treated as slash commands by @yiliang114 in #3743
- feat(cli): route foreground subagents through pill+dialog while running by @tanzhenxin in #3768
- fix(core): auto-compact subagent context to prevent overflow by @tanzhenxin in #3735
- feat(core): enforce prior read before Edit / WriteFile mutates a file by @wenshao in #3774
- fix(core): shrink file diff session records by @doudouOUC in #3872
- feat(cli): customize banner area (logo, title, hide) by @chiga0 in #3710
- feat(core): add signal.reason convention for ShellExecutionService (#3831 PR-1 of 3) by @wenshao in #3842
- fix(core): rebuild tool registry on subagent Config overrides so bound tools resolve to the subagent by @wenshao in #3873
- fix(core): create temp dir before saving truncated shell output by @kkhomej33-netizen in #3875
- fix(core): improve stream rate-limit retry handling by @yiliang114 in #3790
- docs(cli): document new banner customization settings by @wenshao in #3885
- fix(core): address @tanzhenxin's PR-1 review notes (post-merge follow-up to #3842) by @wenshao in #3886
- fix(core): stop per-subagent ToolRegistry on foreground-fork path by @wenshao in #3887
- ci: add Qwen Code issue follow-up bot workflow by @yiliang114 in #3854
- fix(cli): warn on ignored provider generation config by @doudouOUC in #3883
- feat(cli): expand TUI markdown rendering by @chiga0 in #3680
- chore(release): v0.15.7 by @qwen-code-ci-bot in #3907
- test(sdk): align tool-control E2E with prior-read enforcement by @wenshao in #3898
- fix(skills): allow symlinks pointing outside the skills directory by @yiliang114 in #3915
- feat(web-templates): add light theme and toggle to /export HTML by @dreamWB in #3908
- feat(cli): replace inline AgentExecutionDisplay with always-on LiveAgentPanel by @wenshao in #3909
- ci(issue-followup-bot): render bot comment newlines correctly by @yiliang114 in #3918
- ci(release): skip CI on the version-bump squash commit on main by @yiliang114 in #3912
- fix(core): foreground agent entry lingering in status bar after completion by @huww98 in #3921
- fix(cli): prevent ESC in background tasks dialog from cancelling running request by @huww98 in #3922
- fix(memory): address code review feedback for auto-memory recall by @B-A-M-N in #3866
- fix(cli): use tmux-safe dots spinner to reduce redraw pressure by @chiga0 in #3903
- feat(telemetry): add sensitive span attribute opt-in by @doudouOUC in #3893
- chore(release): v0.15.8 [skip ci] by @qwen-code-ci-bot in #3928
- feat: add commit attribution with per-file AI contribution tracking by @wenshao in #3115
- fix(core): per-agent ContentGenerator view via AsyncLocalStorage by @tanzhenxin in #3707
- refactor(cli): provider-first auth registry with unified install pipeline by @pomelo-nwu in #3864
- fix(core): accept partial reads in prior-read enforcement by @wenshao in #3932
- fix(cli,core): live-phase panel-ownership filter + post-delete statusChange emit by @wenshao in #3919
- fix(core): close bound-tool gap on runForkedAgent's YOLO wrapper by @wenshao in #3892
- feat(sdk-python): replace verbatim release notes inheritance with --generate-notes by @doudouOUC in #3835
- ci(release): keep skip-ci out of release PR titles by @yiliang114 in #3950
- fix(vscode): mark Qwen OAuth coder-model as Discontinued in model picker by @dreamWB in #3948
- chore: Add bilingual requirement to create-issue command by @pomelo-nwu in #3952
- feat(cli): add Idealab as third-party provider by @pomelo-nwu in #3955
- feat(session): add /branch to fork the current conversation by @qqqys in #3539
- feat(core): foreground → background promote integration (#3831 PR-2 of 3) by @wenshao in #3894
- fix(cli): show tool details in subagent approval banner by @tanzhenxin in #3956
- [codex] Persist ACP model selection by @DragonnZhang in #3947
- fix(cli): trim blank streaming tails from live preview by @chiga0 in #3965
- feat(cli): searchable /resume picker with focus-aware modes by @qqqys in #3880
- fix(core): route countSessionMessages through parseLineTolerant by @qqqys in #3692
- feat(skills): reload slash commands when SkillManager fires change event by @yiliang114 in #3923
- ci: reduce PR test matrix runtime by @yiliang114 in #3962
- chore(release): v0.15.9 by @qwen-code-ci-bot in #3971
- fix(cli): validate /model command arguments by @yiliang114 in #3963
- fix(core): log the OpenAI request actually sent on the wire by @tanzhenxin in #3767
- fix(core): drop disabled MCP server from health status registry by @BZ-D in #3916
- test(cli): drop wait-dependent SessionPicker search tests (closes #3977) by @qqqys in #3978
- feat(core): add reactive compression on context overflow by @doudouOUC in #3879
- fix(core): filter Mistral reasoning content at request boundary by @cyphercodes in #3882
- fix(cli): preserve comments and formatting in settings.json during migration write-back by @B-A-M-N in #3861
- [codex] fix monitor notifications for subagents by @doudouOUC in #3933
- feat(memory): add autoSkill background project skill extraction by @LaZzyMan in #3673
- feat(cli): improve slash command discovery by @LaZzyMan in #3736
- fix(cli): unfreeze Ctrl+O compact-mode toggle on long conversations by @chiga0 in #3905
- feat(core): support QWEN_HOME env var to customize config directory by @tanzhenxin in #2953
- feat(vscode): add message edit/rewind and message metadata UI by @DragonnZhang in #3762
- fix(cli): replace clearTerminal with targeted repaint on resize by @chiga0 in #3967
- feat(telemetry) suppress OpenTelemetry diagnostics from UI by @doudouOUC in #3986
- fix(core): harden reactive compression follow-ups by @doudouOUC in #3985
- fix(core): throttle shell tool live text updates by @chiga0 in #3902
- feat: add /diff command and git diff statistics utility by @BZ-D in #3491
- fix(core): unify Edit/WriteFile prior-read with Claude Code; close #3964 + #3945 by @wenshao in #4002
- feat(tools): add ToolSearch for on-demand loading of deferred tool schemas by @wenshao in #3589
- chore(release): v0.15.10 by @qwen-code-ci-bot in #4019
- perf(core): bound session-list metadata reads to head/tail 64KB; pool buffer; lazy message count by @qqqys in #3897
- test: stabilize main e2e flakes by @yiliang114 in #3992
- feat(cli): core built-in i18n coverage by @shenyankm in #3871
- feat(core): write runtime.json sidecar for active sessions by @yeelam-gordon in #3714
- feat(telemetry): inject traceId/spanId into debug log files for OTel correlation by @doudouOUC in #3847
- feat(tools): defer low-frequency built-in tools to reduce initial prompt size by @wenshao in #4022
- ci: skip unnecessary release and SDK checks by @yiliang114 in #3984
- feat(installer): add standalone archive installation by @yiliang114 in #3776
- feat(cli): Ctrl+B promote keybind (#3831 PR-3 of 3) by @wenshao in #3969
- feat(cli): add --json-schema for structured output in headless mode by @wenshao in #3598
- refactor(cli): remove legacy
qwen authCLI subcommand, redirect to /auth TUI dialog by @pomelo-nwu in #3959 - chore(deps): upgrade ink 6.2.3 → 7.0.2 + bump Node engine to 22 by @chiga0 in #3860
- feat(skills): Add codegraph skill for PR review risk analysis and conflict detection by @BingqingLyu in #3910
- refactor(core): route side-query LLM calls through runSideQuery chokepoint by @tanzhenxin in #3775
- feat(tools): keep ask_user_question always-visible to surface clarification UX by @tanzhenxin in #4041
- feat(core): improve Anthropic proxy compatibility and enable global prompt cache scope by @wenshao in #4020
- fix(cli): keep long model stats header on one line by @Jerry2003826 in #4032
- refactor(telemetry): remove dead useCollector setting and unreachable TelemetryTarget.QWEN by @doudouOUC in #4061
- chore(core): runtime.json sidecar follow-ups from #3714 review by @wenshao in #4030
- fix(test): repair stale --json-schema integration assertion by @tanzhenxin in #4075
- feat(cli): add tools.toolSearch.enabled setting for prefix-caching models by @wenshao in #4069
- feat(core): replace fdir crawler with git ls-files + ripgrep fallback by @scrollDynasty in #3214
- fix(cli): improve rendering on narrow terminals by @chiga0 in #3968
- feat(dashscope): support DASHSCOPE_PROXY_BASE_URL for prompt cache via API gateway by @HeZiGang in #3991
- Upgrade GitHub Actions for Node 24 compatibility by @salmanmkc in #1876
- doc[sdk-python] Expand Python SDK usage documentation by @doudouOUC in #3995
- ci(e2e): stabilize MCP/CLI flows and cancel stale main runs by @yiliang114 in #4039
- fix(channels): expand tilde in channel cwd config by @qqqys in #4045
- fix(cli): preserve table ANSI color across wrapped lines by @chiga0 in #4050
- revert(deps): downgrade ink 7 → 6 to fix Static-remount TUI regression from #3860 by @chiga0 in #4083
- feat(telemetry): add hierarchical session tracing spans by @doudouOUC in #4071
- docs(telemetry): align config and docs semantics for target, outfile, and CLI flags by @doudouOUC in #4066
- fix(core): log internal OpenAI JSON requests by @tanzhenxin in #4081
- feat(cli): wrap markdown links in OSC 8 so wrapped URLs stay clickable by @BZ-D in #4037
- fix(core): normalize cumulative OpenAI stream deltas to suffixes by @chiga0 in #3896
- fix(cli): auto-restore prompt and preserve queue on cancel by @wenshao in #4023
- docs(auth): add custom API key wizard PRD by @pomelo-nwu in #3583
- feat(cli): support batch deletion of sessions in /delete by @qqqys in #3733
- fix(core): tag subagent OpenAI JSON logs by @tanzhenxin in #4099
- feat(subagents): use fastModel for Explore subagent by @tanzhenxin in #4086
- fix(dashscope): use URL hostname check instead of regex to avoid ReDoS (CodeQL) by @qqqys in #4112
- fix(core): improve runtime fetch options error handling and documentation by @ZevGit in #3997
- fix(telemetry): address PR #3847 review follow-ups for trace correlation by @doudouOUC in #4058
- feat(perf): progressive MCP availability — MCP no longer blocks first input by @chiga0 in #3994
- fix(search): make empty-query exit synchronous and normalize Windows Backspace by @B-A-M-N in #3981
- chore(release): v0.15.11 by @qwen-code-ci-bot in #4100
- fix(anthropic): allow cache_control on tool_result blocks by @tanzhenxin in #4121
- feat(core): strip inline media before chat compaction summary by @LaZzyMan in #4101
- ci(deps): bump docker/* actions to Node 24 majors (silences GitHub Node 20 deprecation warning) by @chiga0 in #4131
- fix(core): merge IDE context into user prompt by @yiliang114 in #3980
- fix(cli): apply /language output to running session without restart by @chiga0 in #4143
- feat(tools): add generic worktree support — EnterWorktree/ExitWorktree + Agent isolation by @LaZzyMan in #4073
- feat(cli): add ModelScope as a built-in third-party API provider by @Col0ring in #4150
- fix(core): correct context-usage Footer for prompt size and Anthropic caches by @tanzhenxin in #4109
- fix(core): support cross-auth fast side queries by @tanzhenxin in #4117
- test(integration): pin simple-mcp-server to legacy MCP path until #4163 is fixed by @tanzhenxin in #4164
- fix(vscode): preserve thinking state and recover missing edit snapshots by @DragonnZhang in #4147
- fix(cli): handle MinTTY Ctrl+Backspace as delete-previous-word by @dreamWB in #4059
- fix(cli): preserve debug session across sandbox relaunch by @kkhomej33-netizen in #4060
- feat(core): add image+video support for Qwen3.6-35B-A3B quant variants by @Dinsmoor in #4106
- fix(hooks): inject SessionStart additionalContext into chat context by @DennisYu07 in #4115
- fix(i18n): Correct zh-TW translations to match Traditional Chinese conventions by @MikeWang0316tw in #4129
- feat(hooks): Add TodoCreated and TodoCompleted hooks for todo lifecycle events by @DennisYu07 in #3378
- refactor(cli): revert dynamic slash command LLM translation by @tanzhenxin in #4145
- chore(deps): re-upgrade ink 6 → 7.0.3 (upstream Static remount fix landed) by @chiga0 in #4119
- feat(hooks): add prompt hook type with LLM evaluation support by @DennisYu07 in #3388
- perf(cli): code-split lowlight to cut startup V8 parse cost by @chiga0 in #4070
- fix(core): refresh systemInstruction in setTools() so progressive MCP tools reach the model by @chiga0 in #4166
- feat(core,cli): add generic atomicWriteFile, wire into Write/Edit tools, upgrade @types/node by @doudouOUC in #4096
- fix(vscode-ide-companion): use existing editor group for diff instead of forcing a new one by @yiliang114 in #4130
- feat(cli): warn users that rewind is disabled in IDE mode by @doudouOUC in #4122
- feat(cli): argument hint + --auto completion for /rename by @qqqys in #4048
- feat(cli): add baseline /doctor memory diagnostics by @qqqys in #4180
- feat(cli): add session-scoped /goal command with judge-driven turn continuation by @qqqys in #4123
- feat(rewind): add file restoration support to /rewind command by @doudouOUC in #4064
- feat(skills): add /stuck diagnostic skill for frozen sessions by @doudouOUC in #4133
- feat(telemetry): unify span creation paths for hierarchical trace tree by @doudouOUC in #4126
- refactor(core): TaskBase envelope + foreground subagent persistence by @tanzhenxin in #3970
- feat(cli): readline Ctrl+P/N for history and selection navigation by @dreamWB in #4082
- feat(cli): add built-in status line presets with interactive dialog by @DragonnZhang in #4120
- fix(core): add heap-pressure auto-compaction safety net by @yiliang114 in #4186
- fix(cli): pass rewind selector test props by @wenshao in #4211
- feat(cli): add fork-session resume flag by @qqqys in #4159
- feat(telemetry): add interaction span and detailed sensitive attributes by @doudouOUC in #4097
- fix(lsp): expose status and startup diagnostics by @yiliang114 in #3649
- fix(rewind): restore upstream TOCTOU ordering + heal sticky failed marker by @doudouOUC in #4216
- Add stop hook blocking cap by @qqqys in #4208
- fix(test): clear boundedPromise timers to prevent unhandled rejections in abort-and-lifecycle test by @wenshao in #4220
- fix(ui): trim background task results and show newest first (#4094) by @wenshao in #4125
- [codex] Allow custom output directory for /export by @qqqys in #4193
- fix(core): align shell tool description with configured shell by @kkhomej33-netizen in #4170
- fix(cli): include skill base dir in slash commands by @kkhomej33-netizen in #4224
- test(perf): skip daemon baseline harness under sandbox by @tanzhenxin in #4234
- feat(core): PR-2.5 — post-promote stream redirect + natural-exit registry settle (#3831 follow-up) by @wenshao in #4102
- fix(cli): restore ACP prompt counter on resume by @kkhomej33-netizen in #4233
- fix(core): extend DashScope provider detection with additional hostname rules by @yiliang114 in #4157
- fix(core): apply tool name migrations at dispatch by @Jerry2003826 in #4213
- feat(cli): add configurable plansDirectory for Plan Mode by @shenyankm in #4062
- feat(cli): add structured memory diagnostics JSON by @yiliang114 in #3785
- fix(cli): record mid-turn queued user prompts by @Jerry2003826 in #4215
- fix: add cache limits to prevent OOM during build/test by @xmillogx-cmd in #4188
- docs: user + design docs for --json-schema structured output by @wenshao in #4051
- feat(core): fail impossible goals by @qqqys in #4230
- fix(core): preserve read-before-write state across idle microcompaction by @tanzhenxin in #4243
- test: reduce wait-dependent UI test delays by @yiliang114 in #3987
- feat(serve): add /demo debug page for qwen serve daemon by @jifeng in #4132
- chore(vscode): run development ACP CLI from source by @DragonnZhang in #4283
- fix(telemetry): Phase 1.5 polish — fallback order, abort-as-result, log/span consistency by @doudouOUC in #4302
- Support active goal stream events and non-interactive goals by @qqqys in #4273
- fix(cli): /status preserves prior error history items (#4169) by @LaZzyMan in #4265
- fix(core): decouple auto-memory recall from main-agent request path by @LaZzyMan in #4172
- feat(worktree): Phase C — session persistence, hooksPath, Footer + WorktreeExitDialog, three-mode --resume restore by @LaZzyMan in #4174
- fix(core): apply defaultModalities() on env-var-only model config (#4219) by @LaZzyMan in #4262
- fix(cli): block Windows Tab approval-mode toggle when input has a Tab consumer by @LaZzyMan in #4308
- fix(core): mirror Qwen3 reasoning on outbound history by @Alexxigang in #4294
- feat(core): extend cross-auth fast models to agents by @tanzhenxin in #4153
- feat(cli,core): add Auto approval mode with LLM classifier by @LaZzyMan in #4151
- fix(test): count result messages instead of assistant messages in multi-model E2E test by @wenshao in #4341
- feat(cli): per-turn /diff with interactive dialog by @BZ-D in #4277
- feat(cli): add session path status command by @kkhomej33-netizen in #4124
- fix(test): raise timeout for Windows installer end-to-end tests by @wenshao in #4352
- Pin fetch to bundled undici for undici higher versions compatibility by @ideal in #4238
- fix(review): harden SKILL.md against weak-model rule skipping by @wenshao in #4340
- chore: add .github/release.yml to support skip-changelog label by @yiliang114 in #4327
- feat(core): inject git status into system prompt and refine Explore/git-log guidance by @DennisYu07 in #4110
- refactor(auth): unify provider config in core, simplify /auth as "Connect a Provider" by @pomelo-nwu in #4287
- feat(core): add NotebookEdit tool for Jupyter notebooks by @zhangxy-zju in #3900
- fix(cli): remove QWEN_OAUTH gate from feedback dialog by @pomelo-nwu in #4316
- fix(core): replace structuredClone with shallow copy to prevent OOM in long sessions by @yiliang114 in #4286
- fix(core): align session hook matcher targets by @qqqys in #4354
- Expose active goal in stream JSON by @qqqys in #4314
- feat(cli): respect /editor preference in Ctrl+X external editor by @dreamWB in #4310
- feat(telemetry): Phase 2 — tool.blocked_on_user + hook spans (#3731) by @doudouOUC in #4321
- feat(installer): add standalone hosted install and uninstall flow by @yiliang114 in #3828
- fix(core): handle MiMo tool-result media by @DragonnZhang in #4281
- feat(telemetry): support custom resource attributes and add metric cardinality controls by @doudouOUC in #4367
- fix(core): deduplicate geminiChat recovery continuation text by @chiga0 in #3966
- feat(skills): support priority field in SKILL.md for sorting skill display order by @yiliang114 in #4155
- fix(ci): resolve TS5055 release build failure since May 19 by @yiliang114 in #4383
- revert(core): undo x-api-key + Authorization double-emit (#4342) — regresses IdeaLab-style proxies by @LaZzyMan in #4385
- chore(release): v0.16.0 by @yiliang114 in #4404
- fix(core,cli): close tool_use↔tool_result invariant across all failure paths by @wenshao in #4176
- fix(vscode): skip redundant tsc build in prepackage to prevent TS5055 by @yiliang114 in #4401
- fix(core): preserve tab-indented notebook formatting by @zhangxy-zju in #4373
- feat(telemetry): Phase 4a — TTFT capture + GenAI semconv dual-emit (#3731) by @doudouOUC in #4417
- fix(scripts): renormalize CRLF storage for install-qwen-standalone.bat by @wenshao in #4427
- fix(build): tree-shake React reconciler dev build to prevent PerformanceMeasure leak by @huww98 in #4462
- chore(deps): update express from 4.21.2 to 5.2.1 by @yiliang114 in #4458
- fix(cli): stabilize flaky sticky-todo remeasure test by @pomelo-nwu in #4416
- fix(cli): gate mintty OSC 8 detection on TERM_PROGRAM_VERSION ≥ 3.3 (#4420) by @wenshao in #4451
- fix(release): move constants above entry point to avoid TDZ error by @yiliang114 in #4398
- fix(build): clean stale outputs before tsc --build to prevent TS5055 by @doudouOUC in #4453
- chore(release): v0.16.1 by @qwen-code-ci-bot in #4467
- feat(cli): do not append trailing space for directory completions (#4092) by @dykebo in #4288
- feat(skills): add memory-leak-debug skill for heap snapshot diagnosis by @huww98 in #4468
- fix(cli): resolve stale closure race in text buffer submit handler by @huww98 in #4470
- fix(weixin): allow Windows image paths inside workspace by @yiliang114 in #4465
- fix(weixin): send decryptable image payloads by @yiliang114 in #4464
- feat(memory): load .qwen/QWEN.local.md as project-local context (#4091) by @LaZzyMan in #4394
- fix(core): preserve duplicate object references in safeJsonStringify by @ihubanov in #4407
- fix(extension): redact credentialed source diagnostics by @qqqys in #4426
- feat(core): limit background agent concurrency by @kkhomej33-netizen in #4324
- fix(core): strip additional dangerous interpreter rules by @qqqys in #4371
- docs(tools): document monitor tool by @DragonnZhang in #4356
- docs(agents,pr-template): add Working Principles and restructure PR template by @pomelo-nwu in #4496
- ci: split Aliyun OSS sync into a separate post-release workflow by @yiliang114 in #4492
- feat(core): enable Token Plan cache control by @DragonnZhang in #4495
- feat(core)!: redesign auto-compaction thresholds with three-tier ladder by @LaZzyMan in #4345
- feat(telemetry): client-side HTTP span + opt-in W3C traceparent propagation (#4384) by @doudouOUC in #4390
- feat(cli): headless / non-interactive runaway-protection guardrails (#4103) by @BZ-D in #4502
- fix(cli): require whitespace before @ to trigger file completion by @wenshao in #4487
- fix(auth): align Token Plan model defaults with ModelStudio by @YingchaoX in #4478
- fix(extension): populate resources when Claude marketplace points at whole folder by @LaZzyMan in #4497
- fix(cli): align /context token breakdown with actual API request by @pomelo-nwu in #4512
- fix(sdk): honor canUseTool timeout in CLI control requests by @DragonnZhang in #4491
- fix(core): stop AbortSignal listener leak in long sessions (MaxListenersExceededWarning) by @doudouOUC in #4366
- feat(cli): dense inline panel + keyboard navigation for parallel agent fan-out by @wenshao in #4477
- fix(core): prevent auto-skill creation from overwriting existing skills (#4437) by @LaZzyMan in #4489
- fix(sdk): Include CLI chunks in SDK package by @DragonnZhang in #4541
- fix(cli): persist MCP server removals by @Jerry2003826 in #4535
- fix(models): refresh raw model-derived defaults by @Jerry2003826 in #4517
- fix(vscode-ide-companion): exclude workspace packages from NOTICES.txt generation by @yiliang114 in #4455
- fix(telemetry): attach interaction span to session root context by @doudouOUC in #4499
- fix(cli): auto-prepend @ when pasting or dropping multiple file paths by @MikeWang0316tw in #4544
- feat(prompt): move new app prompt from system prompt to skills by @DennisYu07 in #4567
- feat(worktree): Phase D — startup --worktree flag + symlinkDirectories + PR refs by @LaZzyMan in #4381
- fix(permissions): make command substitution ask, not deny (#4093) by @LaZzyMan in #4386
- feat(cli): default auto-dream/auto-skill to on and add /memory toggle by @LaZzyMan in #4547
- fix(cli): surface startup warnings on stderr before TUI render (#4448) by @kagura-agent in #4461
- fix(telemetry): improve LogToSpan bridge error info and TUI handling by @doudouOUC in #4482
- feat(channels): add Feishu (Lark) channel adapter by @yuanyuanAli in #4379
- feat(telemetry): foundation for skill-based RT optimization (P0+P1) by @gwinthis in #4565
- fix(cli): track model-sent slash command history by @yiliang114 in #3826
- feat(computer-use): zero-config built-in via open-computer-use MCP by @LaZzyMan in #4590
- refactor(core)!: replace tail-preservation compaction with summary + restoration attachments by @LaZzyMan in #4599
- Emit PermissionDenied hooks for AUTO classifier blocks by @qqqys in #4376
- chore(release): v0.16.2 by @qwen-code-ci-bot in #4571
- fix(core): use undici fetch for IDE proxy requests by @he-yufeng in #4607
- fix(core,cli): label screenshot-triggered compaction accurately in the auto-compact notice by @LaZzyMan in #4623
- chore(release): v0.17.0 by @qwen-code-ci-bot in #4626
- fix(rewind): false "compressed turn" error when mid-turn messages exist by @doudouOUC in #4580
- fix(core): emit enable_thinking on DashScope when reasoning is disabled by @doudouOUC in #4505
- fix(core): surface Anthropic empty stream provider errors by @DragonnZhang in #4540
- feat(core): add memory pressure monitor by @ZevGit in #4403
- fix(core): guard oversized resumed history sends by @Jerry2003826 in #4531
- fix(cli): stabilize statusline preset ordering by @shenyankm in #4634
- fix(config): load home .env vars before settings ${VAR} resolution (#4466) by @kagura-agent in #4474
- fix(acp): drop discontinued Qwen OAuth method by @he-yufeng in #4639
- fix(core): enforce adjacent tool results by @he-yufeng in #4622
- fix(cli): hide completed sticky todos by @he-yufeng in #4635
- feat(cli): Add settings JSON corrupted warning dialog by @zzhenyao in #4560
- fix(core): harden context error text collection by @he-yufeng in #4632
- fix(core): apply output language to side queries by @he-yufeng in #4636
- fix(cli): persist /memory toggle state across dialog reopen by @LaZzyMan in #4650
- fix(docs): Hide internal docs from docs site by @DragonnZhang in #4357
- fix(core): preserve uid in atomicWriteFile to avoid breaking shared-write files by @doudouOUC in #4431
- Improve hooks matcher display by @qqqys in #4545
- fix(cli): use session channel when closing ACP sessions by @Jerry2003826 in #4522
- fix(core,cli): replace full-history structuredClone with shallow/tail variants to prevent OOM on resume by @yiliang114 in #4644
- feat(cli): add respectUserColors and hideContextIndicator options for statusline by @zzhenyao in #4670
- fix(core): tolerate unsupported Streamable HTTP GET SSE by @Jerry2003826 in #4521
- fix(insight): Harden insight facet normalization and empty qualitative handling by @DragonnZhang in #3557
- feat(cli): notify when background shells finish by @DragonnZhang in #4355
- feat(core): add simplify bundled skill by @pomelo-nwu in #3570
- feat(skills): add agent reproduction workflows by @DragonnZhang in #4118
- feat(cli): virtual viewport for long conversations on ink 7 by @chiga0 in #4146
- feat(cli): background housekeeping for stale file-history dirs by @doudouOUC in #4414
- fix(core): loosen auto-mode classifier timeouts, disable stage-2 thinking by @qqqys in #4680
- fix(core): coerce hostile-provider usage token counts (#4350 part 1) by @DragonnZhang in #4439
- feat(core): inject context env vars (session/agent/prompt ID) into shell subprocesses by @yiliang114 in #4649
- Add AUTO mode denial observability and caps by @qqqys in #4476
- feat(core): auto-dump memory diagnostics to disk on pressure detection by @yiliang114 in #4654
- feat(core): atomic write rollout for credentials, memory, config, JSONL (closes #3681, #4095 Phase 2) by @doudouOUC in #4333
- docs: add /diff command and auto theme detection documentation by @BZ-D in #4699
- feat(cli): Add searchable MiniMax-M3 model setup by @shenyankm in #4668
- feat(core,cli): auto-compact follow-up — /compress instructions, PreCompact hook plumb, plan/subagent attachments by @LaZzyMan in #4688
- fix(cli): honor list extensions flag by @he-yufeng in #4673
- feat(input): move physical cursor to visual cursor for IME input by @zzhenyao in #4652
- feat(core): add post tool batch hooks by @qqqys in #4454
- fix(ui): distinguish auto approval mode indicators by @he-yufeng in #4600
- fix(core): disable undici 300s bodyTimeout for no-proxy Node.js path by @Pepograminger in #4605
- feat(prompt): deduplicate tool guidance between system prompt and tool descriptions by @DennisYu07 in #4569
- chore(deps): update @google/genai from 1.30.0 to 2.6.0 by @InfiniteUselessness in #4485
- feat(cli): add CPU profiling support for Chrome DevTools analysis by @yiliang114 in #4620
- feat(prompt): enhance system prompts with global reasoning discipline and iterative planning by @DennisYu07 in #4436
- refactor(cli): rename "Default" approval mode to "Ask permissions" (#4625) by @LaZzyMan in #4674
- fix(cli): suppress completion menu for history-restored text until edited by @DragonnZhang in #4558
- fix(cli): statusline not re-rendering when switching from preset to command type by @BZ-D in #4706
- fix(cli): avoid exit-time history deep clones by @he-yufeng in #4717
- feat(subagent): add fork subagent feature gate and "Don't peek / Don't race" prompt discipline by @DennisYu07 in #4574
- fix(telemetry): clear span dedup state after chat compression (#3731) by @doudouOUC in #4660
- feat(core):strengthen system prompts for reading code before editing, dedicated tool priority, and step-by-step communication by @DennisYu07 in #4375
- fix(core): remove proactive subagent system-reminder injection by @DennisYu07 in #4587
- fix(cli): fix Space key not working in Arena model selection dialog by @ZijianZhang989 in #4701
- feat(skills): add triage skill for issue/PR gatekeeping by @pomelo-nwu in #4577
- feat(computer-use): use @qwen-code/open-computer-use fork (signed + notarized) by @LaZzyMan in #4726
- chore(release): v0.17.1 by @qwen-code-ci-bot in #4742
- fix(cli): skip thought parts in copy output by @he-yufeng in #4738
- feat(installer): verify release assets + switch public docs to standalone entrypoint by @yiliang114 in #3855
- feat(ci): add @qwen /triage workflow for automated issue and PR triage by @yiliang114 in #4768
- fix(cli): Improve approval mode display text by @BZ-D in #4753
- fix(ui): display model name instead of id in statusline and startup banner by @zzhenyao in #4741
- feat(cli): add standalone auto-update support by @yiliang114 in #4629
- fix(ci): fix triage prompt variable expansion, bot identity, and model secret by @yiliang114 in #4778
- feat(telemetry): Phase 4b — retry visibility for qwen-code.llm_request (#3731) by @doudouOUC in #4432
- feat(core): add user prompt expansion hooks by @qqqys in #4377
- fix(computer-use): auto-approve install in auto-approve modes (YOLO/AUTO_EDIT/AUTO) by @LaZzyMan in #4756
- fix(cli): implement --list-extensions flag handler (#4450) by @kagura-agent in #4456
- feat(telemetry): Phase 3 — qwen-code.subagent span with concurrent isolation (#3731) by @doudouOUC in #4410
- feat(skills): /skills picker dialog — browse, search, toggle, pick (#4532) by @callmeYe in #4533
- fix(core): handle error variant in disabled skill command delegation by @yiliang114 in #4804
- fix(cli): remove dead --list-extensions handler from #4456 by @yiliang114 in #4800
- feat(cli): enable /remember, /forget, /dream in ACP mode by @doudouOUC in #4811
- ci(triage): Fix Qwen triage workflow prompt by @yiliang114 in #4787
- Revert "feat(cli): enable /remember, /forget, /dream in ACP mode" by @doudouOUC in #4818
- feat(vscode): surface ACP background notifications by @DragonnZhang in #4358
- feat(cli): support /copy N to copy Nth-last AI message by @LaZzyMan in #4761
- fix(core): recurse into submodule files when crawling git repos by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/4596
- Harden auto mode self-modification checks by @qqqys in https://github.com/QwenLM/qwen-code/pull/4572
- fix(clipboard): use platform-native tools for image paste on Linux by @CNCSMonster in https://github.com/QwenLM/qwen-code/pull/4647
- fix(core): add multimodal support for qwen3.7-plus by @pomelo-nwu in https://github.com/QwenLM/qwen-code/pull/4803
- feat(cli): prevent system sleep while running by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/4434
- feat(ci): add PR review workflow using bundled /review skill by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/4549
- fix(core): scope boolean coercion to boolean-typed schema fields by @Pluviobyte in https://github.com/QwenLM/qwen-code/pull/4618
- fix(cli): bundle extension examples by @kkhomej33-netizen in https://github.com/QwenLM/qwen-code/pull/4719
- fix(cli): fix vim mode Esc leak, Enter submit, render lag and implement missing VIM commands by @zzhenyao in https://github.com/QwenLM/qwen-code/pull/4677
- fix(core): allow intentional foreground sleep for backoff by @kkhomej33-netizen in https://github.com/QwenLM/qwen-code/pull/4708
- fix(core): honor runtime output dir for auto memory by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/4715
- feat(cli): add /fork background-agent command by @qqqys in https://github.com/QwenLM/qwen-code/pull/4780
- fix(tui): skip cross-group tool merge in mode to eliminate screen flash by @zzhenyao in https://github.com/QwenLM/qwen-code/pull/4795
- Move startup context into system reminders by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4053
- feat(core): honor skill allowedTools by auto-approving declared tools by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4704
- Add InstructionsLoaded hook for instruction file loading by @qqqys in https://github.com/QwenLM/qwen-code/pull/4665
- fix(cli): prevent selection dialog flicker by @ZevGit in https://github.com/QwenLM/qwen-code/pull/4755
- feat(skills): enforce auto-skill- directory prefix for auto-generated skills by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/4839
- fix(core): inject current date on every user query to prevent stale date by @Alex-ai-future in https://github.com/QwenLM/qwen-code/pull/4798
- Align automated PR review with bundled skill by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/4843
- fix(ci): coordinate qwen triage and review automation by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/4570
- fix(core): add missing closing braces in formatDateForContext test block by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/4863
- fix(core): prevent OOM by compacting API history, UI history, and triggering under memory pressure by @zzhenyao in https://github.com/QwenLM/qwen-code/pull/4824
- fix(core): don't kill a failed-spawn sleep inhibitor child (sandbox abort on tool use) by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4865
- fix(skills): add bundled skill doc-index validation to docs skills by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/4851
- feat(memory): add user-level auto-memory at ~/.qwen/memories/ (#4747) by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/4764
- fix(sdk): correct npm package name in SDK install instructions by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/4860
- test(integration): drop tight 30s timeout in sleep-interception e2e tests by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4878
- fix: strip runtime snapshot prefix before persisting model.name by @Rakson0209 in https://github.com/QwenLM/qwen-code/pull/4734
- test: cover rewind selector restore options by @han-dreamer in https://github.com/QwenLM/qwen-code/pull/4784
- fix(cli): handle background auto-update breaking cross-authType model switching by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/4760
- fix(core): preserve shared baseUrl on auth refresh by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/4828
- refactor(core): remove GitService, migrate /restore to FileHistoryService by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4871
- feat(acp): support desktop qwen integration by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/4728
- feat(extension): add description field to ExtensionConfig by @callmeYe in https://github.com/QwenLM/qwen-code/pull/4857
- fix(ci): acknowledge queued qwen review requests by @qqqys in https://github.com/QwenLM/qwen-code/pull/4847
- fix(core): fix qc-helper skill docs index and config categories by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/4848
- feat(telemetry): inject TRACEPARENT env var into shell child processes by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4906
- fix(ci): normalize dev launcher path assertions on Windows by @wenshao in https://github.com/QwenLM/qwen-code/pull/4915
- fix(installer): correct broken (404) 'for more info' URL in post-install message by @pomelo-nwu in https://github.com/QwenLM/qwen-code/pull/4916
- fix(core): isolate OpenAI SDK abort listener leak with per-request child controllers by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/4810
- feat(hooks): support terminal sequence notifications by @DennisYu07 in https://github.com/QwenLM/qwen-code/pull/4895
- feat(core): Workflow tool P1 — minimal node:vm sandbox + sequential agent() (#4721) by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/4732
- fix(acp): prevent session/prompt hang when client ignores mid-turn drain requests by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4925
- fix(core): remove greeting-responder example from agent tool prompt by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4923
- feat(ci): add auto-generated CHANGELOG.md synced from releases (#4872) by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/4881
- feat(stats): add interactive /stats dashboard with cross-session tracking by @BenGuanRan in https://github.com/QwenLM/qwen-code/pull/4779
- fix(core): remove
envfrom read-only shell command allowlist by @pomelo-nwu in https://github.com/QwenLM/qwen-code/pull/4932 - fix(core): prevent cron scheduler from firing on creation minute by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4946
- fix(core): ensure hard threshold always exceeds auto threshold by @DennisYu07 in https://github.com/QwenLM/qwen-code/pull/4949
- fix(installer): auto-detect SYSTEM account and default PATH scope to machine by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/4903
- fix(skills): use full YAML parser for frontmatter to support block scalars by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/4870
- fix(core): give complete intentional-sleep guidance on first rejection for sleep chains by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4948
- fix(core): add qwen3.7-plus to Coding Plan model list by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/4953
- ci: extend qwen PR review timeout to 90min and queue delay to 30min by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/4962
- test: cover rewind selector fallback states by @han-dreamer in https://github.com/QwenLM/qwen-code/pull/4905
- feat(core): enable loop/cron tools by default by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4950
- test(integration): harden flaky sleep-interception e2e against skipped tool calls by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4936
- fix(openai): default splitToolMedia so tool-returned images reach strict OpenAI-compatible backends by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/4917
- fix(cli): fix cursor left-move stalling at hard-wrapped line boundary by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/4852
- feat(core): declarative agent frontmatter v1 — permissionMode bridge + maxTurns wiring + color allowlist (CC 2.1.168 parity) by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/4842
- fix(core): microcompact hook continuations by @qqqys in https://github.com/QwenLM/qwen-code/pull/4840
- feat: add Agent Team experimental feature for parallel sub-agent coordination by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4844
- Fix release workspace test failures by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4980
- fix(core): preserve teammate identity when resuming a tool call after approval by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4979
- refactor(skills): remove redundant commands and sync e2e-testing skill by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4992
- fix(installer): print shell reload hint when new qwen is not picked up by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/4960
- feat(desktop): Add desktop app package with Qwen ACP SDK integration by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/3778
- feat(daemon): merge daemon-mode feature batch into main by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4490
- feat(core): layered tool-output truncation, per-message budget, per-tool limits by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/4880
- fix(auth): time out Qwen OAuth refresh by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/4829
- fix(cli): route down-arrow straight to the live agent panel (#4907) by @thegoldenflow in https://github.com/QwenLM/qwen-code/pull/4911
- fix(core): harden experimental agent-team messaging by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4988
- feat(telemetry): add runtime memory/CPU sampling with OTel metric reporting by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/4868
- fix(cli): enable VP scroll at idle prompt and fix viewport height by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4959
- fix(core): parse comma-separated tools/disallowedTools in agent frontmatter by @callmeYe in https://github.com/QwenLM/qwen-code/pull/4935
- perf(filesearch): move AsyncFzf index construction to a worker thread by @callmeYe in https://github.com/QwenLM/qwen-code/pull/4621
- feat(cli): add /compress-fast command for no-LLM rule-based context compression by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/4893
- fix(cli): make extensions new work when bundled examples are missing by @BZ-D in https://github.com/QwenLM/qwen-code/pull/5009
- feat(web-shell): add Option+Enter and Cmd+Enter newline shortcuts by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5005
- chore(daemon): remove dead code and simplify control flow by @qqqys in https://github.com/QwenLM/qwen-code/pull/4789
- fix(goal): persist iteration count across resume so MAX_GOAL_ITERATIONS bounds the whole session by @qqqys in https://github.com/QwenLM/qwen-code/pull/5000
- Add /cd command by @qqqys in https://github.com/QwenLM/qwen-code/pull/4890
- ci(desktop): mac code-signing + App Store Connect API-key notarization by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/5013
- feat(core): persist file history snapshots for cross-session /rewind (T2.1) by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4897
- fix(desktop): keep composer sendable after idle escape by @puneetdixit200 in https://github.com/QwenLM/qwen-code/pull/4788
- fix(cli): avoid headless browser open crashes by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/4716
- fix(cli): debounce resize repaint and clear stale scrollback on settle by @thegoldenflow in https://github.com/QwenLM/qwen-code/pull/4919
- feat(core): port declarative-agent mcpServers + hooks (CC 2.1.168 parity follow-up) by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/4996
- feat(core): Workflow P2 — parallel() + pipeline() concurrent fan-out (#4721) by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/4947
- fix(core): add Tool Fallback rule to system prompt by @pomelo-nwu in https://github.com/QwenLM/qwen-code/pull/4931
- fix(docs): correct stale settings keys, wrong defaults, and missing commands by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/4969
- fix(core): stabilize truncated tool retry keys by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/4970
- fix(core): stabilize prompt-cache prefix against MCP/skills churn by @callmeYe in https://github.com/QwenLM/qwen-code/pull/4896
- fix(core): fix Windows startup error caused by missing printf command by @zzhenyao in https://github.com/QwenLM/qwen-code/pull/5012
- feat(core): add enter_plan_mode tool and Plan Approval Gate by @callmeYe in https://github.com/QwenLM/qwen-code/pull/4853
- docs(desktop): use main for brand builder skill by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/5021
- perf(desktop): add --cli-only flag to skip non-CLI packages during vendor build by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/5025
- fix(desktop): allow unsigned Windows auto-updates by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/5028
- fix(cli): join previous line when Ctrl+U pressed at column 0 by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/5011
- fix(tui): Tighten message and tool spacing by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4595
- fix(core): serialize team task claims per agent and add mailbox lock parity by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4981
- fix(core): support .toml command files in extension command discovery by @callmeYe in https://github.com/QwenLM/qwen-code/pull/5017
- test(i18n): raise timeout for slow must-translate locale suites on Windows CI by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5024
- fix(stats): dedup usage records by sessionId and skip in-progress writes by @BenGuanRan in https://github.com/QwenLM/qwen-code/pull/4995
- fix(test): unbreak qwen serve integration suites after the daemon batch merge by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/5041
- feat(acp): broadcast session title updates to daemon clients by @qqqys in https://github.com/QwenLM/qwen-code/pull/5035
- fix(release): allow fzfWorker.js in standalone dist allowlist by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5049
- chore(release): v0.18.0 by @qwen-code-ci-bot in https://github.com/QwenLM/qwen-code/pull/5050
- feat(daemon): gate direct session shell behind explicit opt-in by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5031
- fix(telemetry): Propagate daemon ACP trace context by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5047
- feat(core): persist oversized tool results to disk (#4095 Phase 4) by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5042
- fix(docs): update Coding Plan model list and fix stale references in developer docs by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/5054
- feat(core,cli): bubble background subagent permission prompts to the parent session by @qqqys in https://github.com/QwenLM/qwen-code/pull/4955
- feat(core): let grep results satisfy prior-read checks by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5043
- chore: sync package-lock.json with packages/cli ws dependencies by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/5023
- feat(skills): support user-invocable frontmatter by @kkhomej33-netizen in https://github.com/QwenLM/qwen-code/pull/5037
- fix(daemon): Sanitize logs and type MCP restarts by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5006
- fix(memory): avoid stale tool schema recall by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5058
- fix(core): eliminate OOM from debugResponses accumulation by @zzhenyao in https://github.com/QwenLM/qwen-code/pull/4982
- feat(serve): deliver A2UI surfaces over MCP — bridge extraction and action endpoint by @qqqys in https://github.com/QwenLM/qwen-code/pull/4961
- fix: enable fork subagents by default by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/4963
- refactor(web-shell): remove duplicate agents panel, contain SubAgent views by @wenshao in https://github.com/QwenLM/qwen-code/pull/5059
- feat(mcp): project .mcp.json + workspace approval gating with aligned scope precedence (#4615) by @qqqys in https://github.com/QwenLM/qwen-code/pull/4713
- fix(core): preserve background agent launch flags by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5061
- feat(web-shell): daemon web-shell improvements — token usage, settings, retry, streaming metrics, hidden commands by @ytahdn in https://github.com/QwenLM/qwen-code/pull/5066
- feat(web-shell): revamp floating todo panel interactions by @wenshao in https://github.com/QwenLM/qwen-code/pull/5069
- fix(web-shell): improve slash command panel layering by @ytahdn in https://github.com/QwenLM/qwen-code/pull/5078
- feat(web-shell): show message time on hover by @wenshao in https://github.com/QwenLM/qwen-code/pull/5079
- fix(serve): Add prompt queue backpressure by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5033
- feat(core): durable cron jobs — /loop tasks that survive restarts by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/5004
- fix(cli): show full plan for gate failures by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5077
- feat(web-shell): show time on parallel-agents box and sub-agent tools by @wenshao in https://github.com/QwenLM/qwen-code/pull/5084
- feat(sdk,serve): DaemonTransport abstraction + ACP standard compliance by @chiga0 in https://github.com/QwenLM/qwen-code/pull/5040
- fix(cli): submit fast tool results after stream end by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5071
- feat(core): Workflow P3 — agent({schema, agentType, model, isolation:'worktree'}) (#4721) by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/5034
- fix(cli): ignore expired live agents in focus navigation by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5070
- fix(cli): drop tool calls after cancellation by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5020
- fix(core): Persist file history snapshot updates by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5057
- test(cli): Cover rewind selection and confirm flow by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5044
- fix(cli): add OSC 52 clipboard fallback for SSH environments by @zzhenyao in https://github.com/QwenLM/qwen-code/pull/4929
- fix(webui): defer DaemonClient disposal to survive React StrictMode by @wenshao in https://github.com/QwenLM/qwen-code/pull/5091
- feat(core): migrate Computer Use to cua-driver (cross-platform) by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/5051
- feat(web-shell): reveal full tool detail and auto-collapse finished tools by @wenshao in https://github.com/QwenLM/qwen-code/pull/5088
- fix(cli,core): harden OOM prevention — idempotent compaction tests, explicit GC, debug log defaults by @zzhenyao in https://github.com/QwenLM/qwen-code/pull/4914
- fix(cli): wrap long status lines by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5093
- fix(acp): add internal Kind.Agent, keep ACP wire on 'other' (no-regression) by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5085
- feat(web-shell): make input shortcuts discoverable and clickable by @wenshao in https://github.com/QwenLM/qwen-code/pull/5096
- fix(ci): fail PR review job when the run aborts mid-review by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5053
- feat(cli,web-shell): persist goal status in daemon transcript events by @ytahdn in https://github.com/QwenLM/qwen-code/pull/5098
- fix(core): default GLM-5.2+ and GLM-6.x onward to 1M context by @wenshao in https://github.com/QwenLM/qwen-code/pull/5103
- refactor(core): unify retry delay policy by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/3827
- feat(acp): dedicated agent permission dialog via _meta.toolName (follow-up to #5085) by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5105
- fix(daemon): Avoid replaying truncated session diffs by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5108
- feat(cli): import Claude MCP servers by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5095
- fix(core): Repair duplicate tool call IDs by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5107
- feat(cli): improve /copy command argumentHint and description by @huww98 in https://github.com/QwenLM/qwen-code/pull/5110
- feat(web-shell): collapsible TodoWrite history with status diff by @wenshao in https://github.com/QwenLM/qwen-code/pull/5109
- test: stabilize simple MCP integration check by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5072
- fix(core): hard-stop repeated identical tool calls by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5036
- fix(core): keep token escalation warm across agent rounds by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5062
- fix(core): bound hard rescue compression retries by @Jerry2003826 in https://github.com/QwenLM/qwen-code/pull/4526
- fix(core): bound foreground shell output capture by @Jerry2003826 in https://github.com/QwenLM/qwen-code/pull/4524
- fix(core): compress when usage metadata is missing by @Jerry2003826 in https://github.com/QwenLM/qwen-code/pull/4528
- docs: Refresh daemon developer docs by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4412
- fix(core): ignore agent names without active teams by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5115
- fix(core): include response tokens in prompt estimate by @Jerry2003826 in https://github.com/QwenLM/qwen-code/pull/4525
- fix(dual-output): prevent FIFO blocking on startup when no reader connected by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4894
- ci: add scheduled autofix workflow for stale bug issues by @qqqys in https://github.com/QwenLM/qwen-code/pull/4989
- fix(core): honor skipLoopDetection for the deterministic tool-call loop by @wenshao in https://github.com/QwenLM/qwen-code/pull/5128
- docs: rewrite CLAUDE.md to point to AGENTS.md as authoritative source by @pomelo-nwu in https://github.com/QwenLM/qwen-code/pull/5138
- feat(computer-use): configurable screenshot max dimension (setting + env) by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/5122
- fix(core): Bound active tool result history by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5111
- fix(desktop): isolate update feed from CLI releases by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/5139
- feat(web-shell): per-task token & time detail on completed todos by @wenshao in https://github.com/QwenLM/qwen-code/pull/5118
- fix(web-shell): remove redundant sanitizeSvg, fix mermaid render failure by @ytahdn in https://github.com/QwenLM/qwen-code/pull/5123
- fix release integration env controls by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5121
- feat(web-shell): collapse completed turns to prompt + final answer by @wenshao in https://github.com/QwenLM/qwen-code/pull/5125
- fix(core): skip auto-title generation when history has no user message by @yuanyuanAli in https://github.com/QwenLM/qwen-code/pull/5120
- feat(desktop): show git branch in working directory badge by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5082
- feat(triage): make minimal-change an explicit PR review check by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5146
- fix(release): allow cli-entry.js in standalone dist allowlist by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5153
- fix: warn on oversized context instructions by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5073
- docs: fix stale defaults, CLI syntax, and tool naming drift by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/5158
- chore(release): desktop desktop-v0.0.4 by @qwen-code-ci-bot in https://github.com/QwenLM/qwen-code/pull/5127
- chore(release): v0.18.1 by @qwen-code-ci-bot in https://github.com/QwenLM/qwen-code/pull/5164
- feat(web-shell): support custom footer renderer by @ytahdn in https://github.com/QwenLM/qwen-code/pull/5166
- fix(core): simplify edit tool description to path only by @huww98 in https://github.com/QwenLM/qwen-code/pull/5140
- fix(monitor): batch-drain notifications to reduce token waste by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5165
- feat(web-shell): add imperative composer API for external text, tag, and submit control by @ytahdn in https://github.com/QwenLM/qwen-code/pull/5161
- feat(web-shell): per-turn time & tokens on the collapse seam, below the prompt by @wenshao in https://github.com/QwenLM/qwen-code/pull/5163
- docs(daemon): Refresh daemon docs in English by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5144
- fix(core): coerce numeric string params in SchemaValidator for MCP tools by @pomelo-nwu in https://github.com/QwenLM/qwen-code/pull/4967
- fix(channels): match sender id as a full segment in SessionRouter by @Osamaali313 in https://github.com/QwenLM/qwen-code/pull/5116
- docs(design): DaemonTransport abstraction — pluggable transport for SDK by @chiga0 in https://github.com/QwenLM/qwen-code/pull/5026
- ci: publish autofix PRs as qwen-code-ci-bot by @qqqys in https://github.com/QwenLM/qwen-code/pull/5137
- fix(agent): make forking explicit; keep omitted subagent_type awaitable by @wenshao in https://github.com/QwenLM/qwen-code/pull/5155
- fix(core): auto-retry transport stream errors before the first chunk by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5171
- docs: add Qwen Code Desktop release link by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/5152
- docs: fix MCP token path, daemon UI event count, add Feishu channel by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/5172
- docs(channels): add screenshots to Feishu setup guide by @joeytoday in https://github.com/QwenLM/qwen-code/pull/4983
- feat(cli): Add daemon status API by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5174
- docs: fix missing spaces before parentheses in README by @marko1olo in https://github.com/QwenLM/qwen-code/pull/4796
- fix: Qwen PR review proxy bypass, stale-worktree cleanup, and footer line break by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5168
- feat(core+cli): Workflow P4 — meta + /workflows + phase-tree (#4721) by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/5094
- feat(daemon): deliver web-shell mid-turn messages into the running turn by @wenshao in https://github.com/QwenLM/qwen-code/pull/5175
- feat(tui): collapsible thinking blocks with duration timer by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4598
- feat(web-shell): expose transcript event changes by @ytahdn in https://github.com/QwenLM/qwen-code/pull/5193
- Polish web-shell execution display by @ytahdn in https://github.com/QwenLM/qwen-code/pull/5190
- Fix completed prompt lifecycle race by @ytahdn in https://github.com/QwenLM/qwen-code/pull/5192
- fix(dingtalk): reopen code fences without inserting a blank line by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5204
- fix(cli): hide unconfigured discontinued OAuth model by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5167
- fix(permissions): do not model /dev/tcp and /dev/udp redirects as file I/O by @warmjademe in https://github.com/QwenLM/qwen-code/pull/5196
- fix(core): strengthen exit_plan_mode descriptions to prevent empty plan parameter by @Alex-ai-future in https://github.com/QwenLM/qwen-code/pull/5188
- fix(desktop): keep latest feed stable-only by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/5149
- fix(core): read SHORT-typed TIFF dimensions correctly on big-endian files by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5209
- fix(cli): skip highlightAuto for unlabeled code blocks with box-drawing/CJK content by @yuanyuanAli in https://github.com/QwenLM/qwen-code/pull/5198
- fix: coerce non-string tool params to strings for self-hosted LLMs by @launchswitch in https://github.com/QwenLM/qwen-code/pull/4793
- ci(autofix): prioritize recent unattended bugs over stale ones by @qqqys in https://github.com/QwenLM/qwen-code/pull/5178
- fix(cli): keep sudo-required npm installs on npm instead of migrating to standalone by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5207
- Revert "fix(core): skip auto-title generation when history has no user message" by @yuanyuanAli in https://github.com/QwenLM/qwen-code/pull/5200
- fix(e2e): add daemon_status to serve capabilities baseline; run E2E on PRs by @wenshao in https://github.com/QwenLM/qwen-code/pull/5211
- fix(web-shell): localize remaining hardcoded UI strings by @carffuca in https://github.com/QwenLM/qwen-code/pull/5189
- fix(acp): load extension commands in daemon sessions by @ytahdn in https://github.com/QwenLM/qwen-code/pull/5216
- fix(web-shell): simplify collapse metadata display by @ytahdn in https://github.com/QwenLM/qwen-code/pull/5223
- fix(ci): gate PR review and triage on write permission by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5191
- ci: run CLI integration tests in the merge queue by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5224
- ci(autofix): unify issue-fix and review-response into one lifecycle workflow by @qqqys in https://github.com/QwenLM/qwen-code/pull/5233
- feat(cli): add sessions list command with --json and --limit flags by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/5187
- ci(e2e): stop running the E2E matrix on every PR push by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5238
- chore(release): v0.18.2 by @qwen-code-ci-bot in https://github.com/QwenLM/qwen-code/pull/5243
- fix(cli): Stop after cancelled ask_user_question by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5218
- fix(cli): render slash suggestion descriptions on a single truncated line by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5236
- ci(release): report required Test checks on release PRs and auto-approve by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5250
- fix(core): always declare exit_plan_mode so plan mode can call it (#5210) by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5251
- chore(release): v0.18.3 by @qwen-code-ci-bot in https://github.com/QwenLM/qwen-code/pull/5255
- fix(core): Track supported sed edits in file history by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5141
- fix(vscode-ide-companion): create independent McpServer per IDE session by @huww98 in https://github.com/QwenLM/qwen-code/pull/5264
- fix(core): read BMP height as signed int32 for top-down bitmaps by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5227
- docs: add CLI subcommands section with qwen sessions list by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/5254
- feat(serve): make ACP permission timeout configurable by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5260
- fix(cli): Preserve mid-turn image messages by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5183
- docs: fix SSE ring size errors and add /workflows command by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/5205
- fix(core): detect dat files by content by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5256
- fix(model): remember selected provider when multiple share a model id (#5173) by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5179
- docs: Revamp README for clarity and focus by @pomelo-nwu in https://github.com/QwenLM/qwen-code/pull/5257
- feat(i18n): localize tool display names in TUI and web-shell badges by @wenshao in https://github.com/QwenLM/qwen-code/pull/5220
- fix(daemon): centralize mid-turn event constant + recover timed-out drains by @wenshao in https://github.com/QwenLM/qwen-code/pull/5266
- fix(core): keep DeepSeek presets text-only by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5268
- fix(cli): drop AgentView cleanup setState that can trip React #185 (#5199) by @wenshao in https://github.com/QwenLM/qwen-code/pull/5286
- fix(core): read WebP VP8X canvas height from the correct byte offset by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5194
- fix(cli): support Ctrl+P/N in completions by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5259
- feat(serve): add daemon idle detection to GET /health?deep=true by @jifeng in https://github.com/QwenLM/qwen-code/pull/4934
- fix(core): never let telemetry file exporters crash the process by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/5246
- fix(cli): correct context filename settings schema by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5269
- feat(hooks): pass original API call ID (toolCallId) to hook system by @shiloong in https://github.com/QwenLM/qwen-code/pull/4918
- fix(core): per-turn tool-call circuit breaker — always-on cap + opt-in loop heuristics (#5234) by @wenshao in https://github.com/QwenLM/qwen-code/pull/5279
- fix(desktop): handle git branch badge edge cases by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5247
- feat(core,cli): Workflow tool token budget + per-run UI surfacing (P5) by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/5231
- feat(extensions): add i18n support for extension displayName and description by @callmeYe in https://github.com/QwenLM/qwen-code/pull/5289
- feat(loop): wire prompt-only /loop to self-paced wakeups by @qqqys in https://github.com/QwenLM/qwen-code/pull/5197
- fix(cli): correct sandbox settings schema by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5272
- test(cli): enable load config model selection coverage by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5274
- docs(cli): document tmux scroll workaround by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5248
- test(cli): cover selection list scroll up by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5276
- fix(weixin): show allowed image directories by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5296
- fix(cli): reject malformed OSC rgb colors by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5307
- test(cli): enable table foreground reset coverage by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5278
- test(core): enable agent headless termination coverage by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5282
- fix(web-shell): summarize grep_search results by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5294
- fix(core): read short VP8L WebP dimensions by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5292
- fix(core): track attached stdout fd redirects by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5317
- fix(dingtalk): split oversized markdown lines by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5299
- fix(cli): preserve multiline shell history by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5335
- fix(cli): validate GitHub remote hosts by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5327
- test(cli): enable command search long suggestion coverage by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5283
- fix(core): preserve migrated command description strings by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5321
- fix(cli): enforce stdin byte limit by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5331
- fix(core): respect home path boundary when tildeifying by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5333
- fix(cli): truncate session picker text by display width by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5338
- fix(core): support GIF image token metadata by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5340
- fix(cli): handle session search graphemes by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5342
- fix(cli): normalize english output language by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5346
- fix(core): parse OAuth resource metadata params by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5344
- fix(core): handle stale worktree session markers by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5229
- feat(loop): add second-resolution session wakeup engine by @qqqys in https://github.com/QwenLM/qwen-code/pull/5182
- fix(core): ignore duplicate provider tool-call ids by @YingchaoX in https://github.com/QwenLM/qwen-code/pull/5038
- fix(cli): show thinking in full transcript mode by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5354
- feat(desktop): compile macOS 26+ Liquid Glass Assets.car in brand-create by @pomelo-nwu in https://github.com/QwenLM/qwen-code/pull/5284
- fix(cli): return fresh empty mcp json results by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5349
- fix(weixin): normalize markdown image syntax by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5297
- fix(core): skip sleep inhibitor in headless ssh by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5295
- fix(cli): reject malformed terminal sequences by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5305
- fix(cli): expand windows-style tilde paths by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5298
- fix(core): validate oauth expires_in values by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5356
- fix(core): reject malformed cron numeric fields by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5352
- fix(cli): parse sandbox image registry ports by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5325
- fix(cli): preserve empty MCP prompt args by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5323
- fix(core): reject invalid cron task entries by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5309
- fix(cli): avoid agent composer unmount reset by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5302
- fix(cli): validate channel service pidfile by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5300
- fix(core): preserve invalid schema length strings by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5312
- fix(weixin): confirm the WEBP signature, not just the RIFF prefix by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5285
- feat(channel): add QQ Bot (QQ机器人) channel adapter by @Eric-GoodBoy-Tech in https://github.com/QwenLM/qwen-code/pull/5202
- fix(cli): reject malformed ACP timeout strings by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5315
- fix(cli): import extension channels via file urls by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5301
- fix(cli): bound streaming thought render buffers by @kkhomej33-netizen in https://github.com/QwenLM/qwen-code/pull/5314
- feat(core): auto-reveal exit_plan_mode tool when entering plan mode by @aspnmy in https://github.com/QwenLM/qwen-code/pull/5311
- fix(cli): window title shows session name instead of model activity status by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/5288
- fix(core): keep qwen3.6-flash and kimi-k2.6 presets text-only by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5328
- feat(skills): add desktop-pet skill for creating pixel-art companions by @xxlaura in https://github.com/QwenLM/qwen-code/pull/4808
- fix(cli): render a sub-minute duration that rounds to 60s as "1m" by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5287
- fix: Expand Windows ~\ home paths and hide phantom (session) entries in the desktop session list by @mvanhorn in https://github.com/QwenLM/qwen-code/pull/5253
- feat(stats): expose token usage for cost visibility by @shenyankm in https://github.com/QwenLM/qwen-code/pull/4564
- fix(plan-gate): isolate gate agent AbortSignal from parent signal chain by @CubeLander in https://github.com/QwenLM/qwen-code/pull/5185
- fix(core): honor output language in side queries by @Jerry2003826 in https://github.com/QwenLM/qwen-code/pull/4519
- fix(cli): avoid stale git branch watcher setup by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5271
- fix(desktop): detect WebP and AVI in RIFF magic-byte sniffing by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5336
- fix(input): restore IME cursor positioning reverted in #4779 by @BenGuanRan in https://github.com/QwenLM/qwen-code/pull/4993
- fix(cli): close @path completion dropdown on Enter accept by @Alex-ai-future in https://github.com/QwenLM/qwen-code/pull/4841
- fix(core): fall back to encrypted-file storage for extension secrets when keychain is unavailable by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/5221
- fix(core): support whitespace in session metadata fields by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5353
- fix(core): prevent OOM in auto-memory extraction during /quit (#5147) by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/5181
- refactor(tools): rename TodoWrite tool display name to TodoList by @wenshao in https://github.com/QwenLM/qwen-code/pull/5319
- fix(core): expire tokens at buffer boundary by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5360
- fix(cli): validate restore checkpoints before mutation by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5358
- fix(core): honor ripgrep builtin setting at runtime by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5362
- fix(core): create token file on first save by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5367
- fix(cli): preserve workspace trust state for extensions by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5369
- fix(cli): Stop after cancelled permissions by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5258
- fix(core): resolve tilde paths before search permission checks by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5378
- fix(cli): respect sandbox path boundaries by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5375
- fix(cli): update acp cancel test flag by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5384
- fix(core): avoid reconnecting on MCP tool errors by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5382
- fix(core): accept uppercase web fetch schemes by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5391
- fix(cli): preserve equals in mcp env values by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5377
- feat(cli): show follow-up suggestion in input placeholder by @MikeWang0316tw in https://github.com/QwenLM/qwen-code/pull/5145
- fix(core): avoid glob prefix cache reuse by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5364
- fix(core): validate grep result limits by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5389
- fix(core): parse grep results with colon paths by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5372
- feat(config): add settings file change detection via chokidar watcher… by @water-in-stone in https://github.com/QwenLM/qwen-code/pull/4933
- fix(acp): scrub simple env for spawned children by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5395
- fix(core): pass --no-ask-password to systemd-inhibit to prevent TUI corruption by @OrbitZore in https://github.com/QwenLM/qwen-code/pull/5318
- fix(cli): parse sandbox mounts with windows drives by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5388
- fix(core): add GLM-5.2 to Z.AI preset by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5397
- fix(openai): add string tool result compatibility mode by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5399
- fix(cli): clarify cumulative statusline token labels by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5400
- feat(cli): show optional response token rate by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5401
- fix(cli): reduce retained interactive tool output memory by @kkhomej33-netizen in https://github.com/QwenLM/qwen-code/pull/4971
- fix(cli): calculate response rate from phase token delta by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5402
- fix(cli): clarify unavailable model configuration hint by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5403
- feat(cli): serve the Web Shell UI from
qwen serveby @wenshao in https://github.com/QwenLM/qwen-code/pull/5392 - fix(cli): gate cron scheduler startup on config initialization (#5022) by @qwen-code-ci-bot in https://github.com/QwenLM/qwen-code/pull/5230
- fix(core): keep estimated token split summing to total by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5420
- fix(core): share memory filename config state by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5419
- fix(channel): scope qqbot session backup path by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5417
- fix(channel): track qqbot close reconnect timer by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5416
- fix(auth): preserve custom provider models on install by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5404
- fix(core): target microcompaction cache disarms by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5407
- fix(channel): keep qqbot token refresh retrying by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5414
- fix(cli): keep keypress handlers current by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5421
- refactor(serve): unify session title/displayName into single displayName field by @chiga0 in https://github.com/QwenLM/qwen-code/pull/5002
- feat(cli): add persistent history collapse on resume with refined commands by @Gove2004 in https://github.com/QwenLM/qwen-code/pull/4085
- fix(cli): narrow settings enum schemas by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5418
- fix(channel): bound qqbot gateway reconnect retries by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5415
- fix(core): block broad shell self-kill commands by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5409
- fix(cli): preserve trustedFolders comments on save by @Zoean-z in https://github.com/QwenLM/qwen-code/pull/4746
- fix(hooks): remove the dead updatedMCPToolOutput field (#5422) by @ken-jo in https://github.com/QwenLM/qwen-code/pull/5423
- feat(web-shell): add extension management by @ytahdn in https://github.com/QwenLM/qwen-code/pull/5398
- fix(cli): accept uppercase URL schemes in mcp add transport detection by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5426
- fix(extensions): accept uppercase URL schemes when parsing install sources by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5429
- fix(core): provide escape path when plan gate is unavailable by @Alex-ai-future in https://github.com/QwenLM/qwen-code/pull/5430
- feat(extensions): interactive multi-tab /extensions manager (Installed / Discover / Sources) by @BZ-D in https://github.com/QwenLM/qwen-code/pull/4850
- fix(cli): stabilize extension list spacing by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5445
- fix(weixin): handle uppercase CDN upload schemes by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5439
- fix(core): require opt-in for plan mode prompt by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5433
- test(core): drop duplicate gitdiff untracked count case by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5468
- fix(core): evaluate ignore files named with dot prefixes by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5458
- fix(core): enforce shell directory workspace boundary by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5454
- fix(core): validate lsp socket ports by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5493
- fix(core): parse max output token env strictly by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5491
- fix(core): detect providers by hostname by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5450
- fix(cli): validate ACP glob max results by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5480
- fix(core): allow dot-prefixed plans directories by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5460
- fix(extensions): fetch http marketplaces with http client by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5452
- fix(cli): parse FORCE_HYPERLINK strictly by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5489
- fix(core): parse tool concurrency env strictly by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5496
- fix(cli): enforce custom theme home boundary by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5456
- fix(dingtalk): skip uppercase webhook reaction targets by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5466
- fix(desktop): accept uppercase icon URL schemes by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5470
- fix(cli): reject partial session size values by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5475
- fix(telegram): clear typing intervals on disconnect by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5477
- fix(cli): respect installation path boundaries by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5441
- fix: accept uppercase endpoint URL schemes by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5443
- fix(core): reject fractional computer-use integer strings by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5500
- fix(core): match provider base URL slash variants by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5448
- fix(cli): enforce temp path boundaries for at-file by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5446
- fix(desktop): preserve uppercase favicon URLs by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5463
- fix(desktop): parse NO_PROXY ports strictly by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5498
- fix(serve): validate session reaper timeouts by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5484
- fix(extensions): handle uppercase npm registry schemes by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5437
- fix(core): add missing Token Plan models (qwen3.7-plus, glm-5.2, kimi-k2.7-code) by @huww98 in https://github.com/QwenLM/qwen-code/pull/5505
- fix(cli): wire ACP model-invocable commands by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5504
- fix(cli): reject partial cpu profile durations by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5486
- test(desktop): update blocked scheme open-url assertion by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5529
- fix(desktop): restore locale parity by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5537
- fix(extension): accept uppercase URL schemes in Claude plugin sources by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5461
- fix(desktop): parse server ports strictly by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5509
- fix(desktop): validate generic oauth token responses by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5511
- fix(core): don't treat an empty-parts message as a function call/response by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5494
- fix(desktop): allow double dots in bundle filenames by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5515
- feat(core): add Requesty provider by @Thibaultjaigu in https://github.com/QwenLM/qwen-code/pull/5478
- fix(cli): handle truncated remote input files by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5473
- test(core): wait for cron lock probe takeover by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5535
- perf(core): read current git branch directly from .git instead of spawning git by @wenshao in https://github.com/QwenLM/qwen-code/pull/5432
- fix(vscode): keep UNC paths absolute by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5542
- chore(release): v0.18.4 by @qwen-code-ci-bot in https://github.com/QwenLM/qwen-code/pull/5464
- feat(ci): on-demand tmux real-user testing for PRs by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5203
- test(desktop): align interceptor packaging contract by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5531
- fix(desktop): keep sibling paths absolute by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5517
- test(desktop): enable feedback flag in permission tests by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5533
- fix(cli): allow dotfile paths in Web Shell sendFile by @wenshao in https://github.com/QwenLM/qwen-code/pull/5541
- fix(cli): allow double dots in update archives by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5521
- fix(desktop): separate transform data output lines by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5525
- fix(desktop): handle Windows file mentions by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5523
- ci(release): trigger CI from release branch pushes by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5543
- fix(desktop): consolidate path boundary checks by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5545
- fix(desktop): reject fractional transfer sizes by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5527
- docs(triage): Add reuse-before-new-code review check by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5547
- fix(cli): validate ACP file read windows by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5482
- fix(extensions): accept uppercase marketplace source schemes by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5435
- Use VS Code theme tokens for companion scrollbar by @interconnectedMe in https://github.com/QwenLM/qwen-code/pull/5488
- feat(mcp): support MCP resources and reliably surface prompts by @wenshao in https://github.com/QwenLM/qwen-code/pull/5544
- chore(release): v0.18.5 by @qwen-code-ci-bot in https://github.com/QwenLM/qwen-code/pull/5558
- ci(release): Auto-publish VSCode companion after stable releases by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5572
- fix(cli): render full resume preview history by @cyphercodes in https://github.com/QwenLM/qwen-code/pull/5565
- fix(cli): fill content area background on wrapped input lines by @lcheng321 in https://github.com/QwenLM/qwen-code/pull/5568
- fix(cli): fail non-interactive runs on loop detection by @cyphercodes in https://github.com/QwenLM/qwen-code/pull/5564
- fix(core): respect zero OpenAI log file limit by @russeell in https://github.com/QwenLM/qwen-code/pull/5569
- fix(core): keep bare fast model on current auth by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5553
- feat(lint): enforce kebab-case filenames with ESLint by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/4797
- [codex] Fix legacy filename allowlist for kebab-case lint by @qqqys in https://github.com/QwenLM/qwen-code/pull/5578
- refactor(cli): Rename serve files to kebab-case by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5592
- feat(extensions): support archive install sources by @kkhomej33-netizen in https://github.com/QwenLM/qwen-code/pull/4909
- fix(cli): prefer command name over alias in slash completion ranking by @Alex-ai-future in https://github.com/QwenLM/qwen-code/pull/5577
- test(integration): add fake OpenAI server for no-AK daemon tests by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5560
- refactor(core): replace OpenRouter/Requesty provider classes with customHeaders in preset by @pomelo-nwu in https://github.com/QwenLM/qwen-code/pull/5539
- feat(voice): voice dictation with native capture, streaming, and biasing by @qqqys in https://github.com/QwenLM/qwen-code/pull/5502
- feat: revivable background sub-agents and subagent transcript TTL by @qqqys in https://github.com/QwenLM/qwen-code/pull/5556
- feat(core): add Artifact tool to publish interactive HTML pages by @qqqys in https://github.com/QwenLM/qwen-code/pull/5557
- feat(cli): add optional [HH:MM:SS] timestamp before each assistant turn by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/5001
- fix(core): require confirmation when user manually enters plan mode by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/5595
- fix(core): always-on guard for consecutive identical tool calls (#5019) by @wenshao in https://github.com/QwenLM/qwen-code/pull/5573
- fix(ci): harden tmux triage reporting by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5548
- fix(voice): surface native recorder fallback so missing prebuilds aren't silent by @qqqys in https://github.com/QwenLM/qwen-code/pull/5605
- fix(core): prevent GLM on DashScope from dropping web_fetch content by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/5599
- Fix native voice recorder retry after stop errors by @qqqys in https://github.com/QwenLM/qwen-code/pull/5609
- [codex] ci(triage): acknowledge slash triage requests by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5594
- [codex] Support artifact auto-open setting by @qqqys in https://github.com/QwenLM/qwen-code/pull/5617
- feat(tui): remove tool group borders and collapse completed tool results by @chiga0 in https://github.com/QwenLM/qwen-code/pull/5003
- feat(workflows): finish Dynamic Workflows port — resume, saved workflows, keyword trigger, notifications (#4721) by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/5600
- feat(web-shell): support daemon session branching by @ytahdn in https://github.com/QwenLM/qwen-code/pull/5613
- fix(core): backend-aware artifact publish confirmation + cancel handling by @qqqys in https://github.com/QwenLM/qwen-code/pull/5615
- test(integration): run no-AK smoke tests on PRs by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5607
- fix(cli): Fail dangling replayed tool calls by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5624
- fix(voice): bundle native audio addon into standalone archives by @qqqys in https://github.com/QwenLM/qwen-code/pull/5628
- ci: route in-repo PRs' Linux test to self-hosted runner by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5620
- ci(release): queue release failures for autofix by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5551
- feat(cli): browse MCP server resources in the /mcp dialog by @wenshao in https://github.com/QwenLM/qwen-code/pull/5635
- refactor(cli): Finish serve kebab-case filenames by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5604
- feat(core): default-on preserve_thinking for DashScope provider by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/5637
- ci(audio-capture): cross-compile darwin-x64 prebuild on arm64, drop macos-13 runner by @qqqys in https://github.com/QwenLM/qwen-code/pull/5643
- ci: harden self-hosted runner routing (follow-up to #5620 review) by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5644
- fix(cli): harden ACP session list pagination params by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5618
- docs(mcp): correct mcp add scope default by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5593
- feat(tui): add thinking block viewer with Alt+T expand/collapse by @chiga0 in https://github.com/QwenLM/qwen-code/pull/5627
- fix(cli): parse serve rate limit env strictly by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5612
- fix(core): parse API timeout env strictly by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5602
- fix(serve): validate readText line limits by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5639
- fix(core): escape backslashes and quotes in emacs ediff paths by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5630
- fix(cli): detect USE_OPENAI auth when the model is set via QWEN_MODEL by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5647
- test(integration): skip qwen serve streaming suite under container sandbox by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5655
- refactor(core): extract Protocol enum and decouple model identity from auth type by @zzhenyao in https://github.com/QwenLM/qwen-code/pull/5089
- fix(webui): stop auto-recreating session on user-initiated delete by @yuanyuanAli in https://github.com/QwenLM/qwen-code/pull/5633
- fix(cli): keep settings v5 migration idempotent by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5676
- fix(test): restore openai model selection in ACP set_config_option test by @wenshao in https://github.com/QwenLM/qwen-code/pull/5721
- fix(test): isolate ACP integration agents via QWEN_HOME to end parallel-settings race by @wenshao in https://github.com/QwenLM/qwen-code/pull/5724
- fix(test): make ACP set_config_option test use a deterministic openai provider model by @wenshao in https://github.com/QwenLM/qwen-code/pull/5728
- fix(core): keep active runtime model in default getAllConfiguredModels listing by @wenshao in https://github.com/QwenLM/qwen-code/pull/5729
- feat(desktop): show file preview in a resizable side panel instead of fullscreen by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/5730
- fix(core): remove redundant reportSuggestionUsage causing double-counted stats by @huww98 in https://github.com/QwenLM/qwen-code/pull/5684
- fix(core): validate ask_user_question answer indexes by @russeell in https://github.com/QwenLM/qwen-code/pull/5622
- feat(core): respect configurable agent ignore files by @shenyankm in https://github.com/QwenLM/qwen-code/pull/4653
- fix(daemon): Refresh workspace provider defaults by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5638
- feat(core): add fastOnly/voiceOnly flags to hide models from main model list by @callmeYe in https://github.com/QwenLM/qwen-code/pull/5632
- feat(cli): match MCP resource completions by name and discover servers by @wenshao in https://github.com/QwenLM/qwen-code/pull/5733
- chore(release): v0.19.0 by @qwen-code-ci-bot in https://github.com/QwenLM/qwen-code/pull/5739
- fix(cli): skip unusable A2UI configs by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5685
- fix(cli): avoid duplicate ACP write BOM by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5688
- fix(cli): enable /lsp in ACP mode by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5689
- fix(core): require integer inline media byte limit by @tt-a1i in https://github.com/Qwe
Release notes were truncated. Full changelog: v0.22.1...v0.22.2