What's Changed
- 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 #4596
- Harden auto mode self-modification checks by @qqqys in #4572
- fix(clipboard): use platform-native tools for image paste on Linux by @CNCSMonster in #4647
- fix(core): add multimodal support for qwen3.7-plus by @pomelo-nwu in #4803
- feat(cli): prevent system sleep while running by @DragonnZhang in #4434
- feat(ci): add PR review workflow using bundled /review skill by @yiliang114 in #4549
- fix(core): scope boolean coercion to boolean-typed schema fields by @Pluviobyte in #4618
- fix(cli): bundle extension examples by @kkhomej33-netizen in #4719
- fix(cli): fix vim mode Esc leak, Enter submit, render lag and implement missing VIM commands by @zzhenyao in #4677
- fix(core): allow intentional foreground sleep for backoff by @kkhomej33-netizen in #4708
- fix(core): honor runtime output dir for auto memory by @he-yufeng in #4715
- feat(cli): add /fork background-agent command by @qqqys in #4780
- fix(tui): skip cross-group tool merge in mode to eliminate screen flash by @zzhenyao in #4795
- Move startup context into system reminders by @tanzhenxin in #4053
- feat(core): honor skill allowedTools by auto-approving declared tools by @tanzhenxin in #4704
- Add InstructionsLoaded hook for instruction file loading by @qqqys in #4665
- fix(cli): prevent selection dialog flicker by @ZevGit in #4755
- feat(skills): enforce auto-skill- directory prefix for auto-generated skills by @LaZzyMan in #4839
- fix(core): inject current date on every user query to prevent stale date by @Alex-ai-future in #4798
- Align automated PR review with bundled skill by @yiliang114 in #4843
- fix(ci): coordinate qwen triage and review automation by @yiliang114 in #4570
- fix(core): add missing closing braces in formatDateForContext test block by @yiliang114 in #4863
- fix(core): prevent OOM by compacting API history, UI history, and triggering under memory pressure by @zzhenyao in #4824
- fix(core): don't kill a failed-spawn sleep inhibitor child (sandbox abort on tool use) by @tanzhenxin in #4865
- fix(skills): add bundled skill doc-index validation to docs skills by @DragonnZhang in #4851
- feat(memory): add user-level auto-memory at ~/.qwen/memories/ (#4747) by @LaZzyMan in #4764
- fix(sdk): correct npm package name in SDK install instructions by @ZijianZhang989 in #4860
- test(integration): drop tight 30s timeout in sleep-interception e2e tests by @tanzhenxin in #4878
- fix: strip runtime snapshot prefix before persisting model.name by @Rakson0209 in #4734
- test: cover rewind selector restore options by @han-dreamer in #4784
- fix(cli): handle background auto-update breaking cross-authType model switching by @yiliang114 in #4760
- fix(core): preserve shared baseUrl on auth refresh by @he-yufeng in #4828
- refactor(core): remove GitService, migrate /restore to FileHistoryService by @doudouOUC in #4871
- feat(acp): support desktop qwen integration by @DragonnZhang in #4728
- feat(extension): add description field to ExtensionConfig by @callmeYe in #4857
- fix(ci): acknowledge queued qwen review requests by @qqqys in #4847
- fix(core): fix qc-helper skill docs index and config categories by @DragonnZhang in #4848
- feat(telemetry): inject TRACEPARENT env var into shell child processes by @doudouOUC in #4906
- fix(ci): normalize dev launcher path assertions on Windows by @wenshao in #4915
- fix(installer): correct broken (404) 'for more info' URL in post-install message by @pomelo-nwu in #4916
- fix(core): isolate OpenAI SDK abort listener leak with per-request child controllers by @yiliang114 in #4810
- feat(hooks): support terminal sequence notifications by @DennisYu07 in #4895
- feat(core): Workflow tool P1 — minimal node:vm sandbox + sequential agent() (#4721) by @LaZzyMan in #4732
- fix(acp): prevent session/prompt hang when client ignores mid-turn drain requests by @tanzhenxin in #4925
- fix(core): remove greeting-responder example from agent tool prompt by @tanzhenxin in #4923
- feat(ci): add auto-generated CHANGELOG.md synced from releases (#4872) by @LaZzyMan in #4881
- feat(stats): add interactive /stats dashboard with cross-session tracking by @BenGuanRan in #4779
- fix(core): remove
envfrom read-only shell command allowlist by @pomelo-nwu in #4932 - fix(core): prevent cron scheduler from firing on creation minute by @tanzhenxin in #4946
- fix(core): ensure hard threshold always exceeds auto threshold by @DennisYu07 in #4949
- fix(installer): auto-detect SYSTEM account and default PATH scope to machine by @yiliang114 in #4903
- fix(skills): use full YAML parser for frontmatter to support block scalars by @yiliang114 in #4870
- fix(core): give complete intentional-sleep guidance on first rejection for sleep chains by @tanzhenxin in #4948
- fix(core): add qwen3.7-plus to Coding Plan model list by @ZijianZhang989 in #4953
- ci: extend qwen PR review timeout to 90min and queue delay to 30min by @yiliang114 in #4962
- test: cover rewind selector fallback states by @han-dreamer in #4905
- feat(core): enable loop/cron tools by default by @tanzhenxin in #4950
- test(integration): harden flaky sleep-interception e2e against skipped tool calls by @tanzhenxin in #4936
- fix(openai): default splitToolMedia so tool-returned images reach strict OpenAI-compatible backends by @LaZzyMan in #4917
- fix(cli): fix cursor left-move stalling at hard-wrapped line boundary by @DragonnZhang in #4852
- feat(core): declarative agent frontmatter v1 — permissionMode bridge + maxTurns wiring + color allowlist (CC 2.1.168 parity) by @LaZzyMan in #4842
- fix(core): microcompact hook continuations by @qqqys in #4840
- feat: add Agent Team experimental feature for parallel sub-agent coordination by @tanzhenxin in #4844
- Fix release workspace test failures by @tanzhenxin in #4980
- fix(core): preserve teammate identity when resuming a tool call after approval by @tanzhenxin in #4979
- refactor(skills): remove redundant commands and sync e2e-testing skill by @tanzhenxin in #4992
- fix(installer): print shell reload hint when new qwen is not picked up by @yiliang114 in #4960
- feat(desktop): Add desktop app package with Qwen ACP SDK integration by @DragonnZhang in #3778
- feat(daemon): merge daemon-mode feature batch into main by @doudouOUC in #4490
- feat(core): layered tool-output truncation, per-message budget, per-tool limits by @LaZzyMan in #4880
- fix(auth): time out Qwen OAuth refresh by @he-yufeng in #4829
- fix(cli): route down-arrow straight to the live agent panel (#4907) by @wsyjh8 in #4911
- fix(core): harden experimental agent-team messaging by @tanzhenxin in #4988
- feat(telemetry): add runtime memory/CPU sampling with OTel metric reporting by @yiliang114 in #4868
- fix(cli): enable VP scroll at idle prompt and fix viewport height by @chiga0 in #4959
- fix(core): parse comma-separated tools/disallowedTools in agent frontmatter by @callmeYe in #4935
- perf(filesearch): move AsyncFzf index construction to a worker thread by @callmeYe in #4621
- feat(cli): add /compress-fast command for no-LLM rule-based context compression by @ZijianZhang989 in #4893
- fix(cli): make extensions new work when bundled examples are missing by @BZ-D in #5009
- feat(web-shell): add Option+Enter and Cmd+Enter newline shortcuts by @yiliang114 in #5005
- chore(daemon): remove dead code and simplify control flow by @qqqys in #4789
- fix(goal): persist iteration count across resume so MAX_GOAL_ITERATIONS bounds the whole session by @qqqys in #5000
- Add /cd command by @qqqys in #4890
- ci(desktop): mac code-signing + App Store Connect API-key notarization by @LaZzyMan in #5013
- feat(core): persist file history snapshots for cross-session /rewind (T2.1) by @doudouOUC in #4897
- fix(desktop): keep composer sendable after idle escape by @puneetdixit200 in #4788
- fix(cli): avoid headless browser open crashes by @he-yufeng in #4716
- fix(cli): debounce resize repaint and clear stale scrollback on settle by @wsyjh8 in #4919
- feat(core): port declarative-agent mcpServers + hooks (CC 2.1.168 parity follow-up) by @LaZzyMan in #4996
- feat(core): Workflow P2 — parallel() + pipeline() concurrent fan-out (#4721) by @LaZzyMan in #4947
- fix(core): add Tool Fallback rule to system prompt by @pomelo-nwu in #4931
- fix(docs): correct stale settings keys, wrong defaults, and missing commands by @DragonnZhang in #4969
- fix(core): stabilize truncated tool retry keys by @he-yufeng in #4970
- fix(core): stabilize prompt-cache prefix against MCP/skills churn by @callmeYe in #4896
- fix(core): fix Windows startup error caused by missing printf command by @zzhenyao in #5012
- feat(core): add enter_plan_mode tool and Plan Approval Gate by @callmeYe in #4853
- docs(desktop): use main for brand builder skill by @DragonnZhang in #5021
- perf(desktop): add --cli-only flag to skip non-CLI packages during vendor build by @DragonnZhang in #5025
- fix(desktop): allow unsigned Windows auto-updates by @DragonnZhang in #5028
- fix(cli): join previous line when Ctrl+U pressed at column 0 by @ZijianZhang989 in #5011
- fix(tui): Tighten message and tool spacing by @chiga0 in #4595
- fix(core): serialize team task claims per agent and add mailbox lock parity by @tanzhenxin in #4981
- fix(core): support .toml command files in extension command discovery by @callmeYe in #5017
- test(i18n): raise timeout for slow must-translate locale suites on Windows CI by @yiliang114 in #5024
- fix(stats): dedup usage records by sessionId and skip in-progress writes by @BenGuanRan in #4995
- fix(test): unbreak qwen serve integration suites after the daemon batch merge by @tanzhenxin in #5041
- feat(acp): broadcast session title updates to daemon clients by @qqqys in #5035
- fix(release): allow fzfWorker.js in standalone dist allowlist by @yiliang114 in #5049
New Contributors
- @callmeYe made their first contribution in #4533
- @CNCSMonster made their first contribution in #4647
- @Pluviobyte made their first contribution in #4618
- @Alex-ai-future made their first contribution in #4798
- @Rakson0209 made their first contribution in #4734
- @han-dreamer made their first contribution in #4784
- @BenGuanRan made their first contribution in #4779
- @wsyjh8 made their first contribution in #4911
- @puneetdixit200 made their first contribution in #4788
Full Changelog: v0.17.1...v0.18.0