qwen-code/CHANGELOG.md
qwen-code-ci-bot 3144046c6b
chore(release): v0.21.1 (#7958)
* chore(release): v0.21.1

* docs(changelog): sync for v0.21.1

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-29 00:25:30 +00:00

402 KiB
Raw Permalink Blame History

Changelog

All notable changes to Qwen Code are documented in this file.

The format is based on Keep a Changelog, and the project follows Semantic Versioning. Only stable releases are listed; nightly and preview pre-releases are intentionally omitted.

This file is generated automatically from GitHub Releases. Do not edit it by hand — run npm run changelog to regenerate.

0.21.1 - 2026-07-28

Highlights

See the complete change list below.

Breaking Changes

No known breaking changes.

Complete Change List

Features

  • feat(core): Align GenAI content telemetry fields (#7667) by @doudouOUC
  • feat(core): add Goal v3 runtime orchestration (#7664) by @qqqys
  • feat(triage): stop in-agent CI polling, finalize evidence and approval after CI completes (#7693) by @wenshao
  • feat(serve): expose workspace Channel management API (#7637) by @qqqys
  • feat(web-shell): add read-only GitHub pull requests panel (#7683) by @wenshao
  • Adds a retrieval-only context_search tool for external corpora, configured by administrators without automatic recall or write capabilities. (#7586) by @doudouOUC
  • Introduces the qwen review comment-status subcommand to quickly triage existing inline comments and reduce API calls during review runs. (#7690) by @wenshao
  • Enforces a strict write contract for review submissions and adds a tripwire to detect and flag any bypass attempts via terminal commands. (#7691) by @wenshao
  • Enables hot-reloading of workspace trust changes in the running daemon, applying new policies immediately without requiring a process restart. (#7268) by @doudouOUC
  • Adds retryInitialDelayMs and retryMaxDelayMs settings to configure stream-side rate-limit retry delays for better provider compatibility. (#7674) by @jay666mnj
  • Updates the /stats command and Session tab to display generation timing metrics including TTFT, duration, output tokens, and TPS. (#7677) by @destire-mio
  • Adds a GitHub channel adapter that polls notifications and responds to mentions by posting comments using a signal-based wakeup architecture. (#7632) by @OrbitZore
  • Adds optional retryInitialDelayMs and retryMaxDelayMs settings to configure SSE stream rate-limit retry delays for specific provider quota windows. (#7666) by @hogeheer499-commits
  • Introduces an overridable default-disabled state for skills, allowing soft defaults that yield to explicit enablement while hard disables remain absolute. (#7357) by @samuelhsin
  • feat(webui): add workspace Channel management hook (#7728) by @qqqys
  • feat(review): redefine medium effort as a balanced verified pass (#7733) by @wenshao
  • feat(review): mutation-test the tests in the test-coverage pass (Agent 5) (#7735) by @wenshao
  • feat(review): borrow maintainer review lenses into the agent briefs (#7736) by @wenshao
  • feat(web-shell): persist terminal history pagination errors (#7709) by @PratikWayase
  • feat(triage): add sandboxed /verify deep-verification lane (#7710) by @wenshao
  • feat(review): give the verifier a probe capability — run a runnable claim, don't just read it (#7756) by @wenshao
  • feat(core): add model grade selection for subagent spawn (#7685) (#7702) by @yiliang114
  • feat(dingtalk): support outbound image delivery (#7698) by @qqqys
  • feat(web-shell): allow widening sidebar up to half the window width (#7778) by @wenshao
  • feat(core): add Goal v3 worker tools (#7729) by @qqqys
  • feat(review): script-lint as a deterministic gate — compose-review reads the report, no agent (#7751) by @wenshao
  • feat(web-shell): add monitor task details (#7817) by @ytahdn
  • feat(web-shell): Scope voice to composer workspace (#7754) by @doudouOUC
  • feat(hooks): Add submitted prompt provenance (#7762) by @doudouOUC
  • feat(autofix): retry deterministic rejection once (#7796) by @qqqys
  • feat(web-shell): add Channel management page (#7793) by @qqqys
  • feat(acp): add session-scoped runtime MCP (#7847) by @qqqys
  • feat(core): persist and replay Goal v3 state (#7815) by @qqqys
  • feat(core): add full-resolution image zoom tool (#7809) by @qqqys
  • feat(web-shell): add composer footer renderer (#7856) by @dreamWB
  • feat: Gate session writer lease behind opt-in (#7894) by @doudouOUC
  • feat(ci): Deduplicate E2E failure issues by commenting on existing issue (#7792) by @yiliang114
  • feat(triage): add revert-pattern high-risk path detection (#7414) by @yiliang114
  • feat(web-shell): add native workspace folder picker (#7849) by @qqqys
  • feat(web-shell): add Channel configuration flows (#7893) by @qqqys
  • feat(core): Add ARMS session user ID (#7921) by @doudouOUC
  • feat(channels): expose loop tools in daemon sessions (#7891) by @qqqys
  • feat(web-shell): honor voice hold mode (#7839) by @callmeYe
  • feat(web-shell): manage Channel pairing requests (#7909) by @qqqys
  • feat(channels): dispatch GitHub notifications by reason (#7826) by @yiliang114
  • feat(web-shell): add git branch picker, commit dialog, and create PR flow (#7731) by @wenshao
  • feat(triage): surface the sandboxed lanes on the CI path (#7917) by @wenshao
  • feat(web-shell): suggest BTW for side questions (#7935) by @carffuca
  • feat(triage): make the verify report readable in Chinese (#7918) by @wenshao

Bug Fixes

  • fix(cli): measure insight days and hours in local time everywhere (#7670) by @ComplexSimply
  • fix(ci): don't fail triage cleanup when there is nothing to clean (#7688) by @wenshao
  • fix(ci): update qwen in the runner's active npm prefix (#7689) by @yiliang114
  • fix(acp): sweep review worktree leases at the end of each prompt turn (#7694) by @wenshao
  • fix(core): write a status sidecar so models stop misreading quiet background shells (#7669) by @ComplexSimply
  • fix(core): exit_plan_mode returns guidance error from execute() instead of permission deny (#7673) by @qwen-code-dev-bot
  • fix(core): tell the model when the user manually exits plan mode (#7682) by @zjunothing
  • fix(core): give plugins from the same repository distinct extension ids (#7676) by @zjunothing
  • fix(core): allow reading saved plan files without a confirmation prompt (#7678) by @zjunothing
  • fix(cli): clear stale retry error when agent auto-recovers mid-turn (#7681) by @qwen-code-dev-bot
  • fix(mcp): harden OAuth callback handling (#7510) by @gauravyad86
  • fix(web-shell): add :focus-visible outline to GitHub PR list rows (#7704) by @wenshao
  • fix(triage): resolve stage comment ids by marker at patch time, harden model injection (#7703) by @wenshao
  • fix(triage): resolve finalize PRs from the open-PR list, not the commit association (#7706) by @wenshao
  • Fixes inline math recognition to correctly handle single-character expressions, escaped dollars, and code spans across prose and tables. (#7701) by @CubeLander
  • Fixes desktop file size display to correctly render terabyte and larger values instead of showing undefined for huge files. (#7623) by @chinesepowered
  • Ensures const-derived enums are correctly stringified during OpenAPI 3.0 conversion to meet strict schema requirements. (#7547) by @chinesepowered
  • Fixes schema conversion to properly handle nested objects even when property names match JSON Schema constraint keywords like maximum. (#7546) by @chinesepowered
  • Silences xterm.js parser diagnostic logs in headless shell terminals to prevent error messages from leaking when commands emit invalid ANSI escape sequences. (#7663) by @mvanhorn
  • Hardens the review skill by declaring the optional host argument in CommentStatusArgs and improving error handling for authentication or network failures. (#7708) by @wenshao
  • Ensures StopFailure hooks fire correctly when loop detection triggers an early return during the streaming loop instead of only on API errors. (#7592) by @qwen-code-dev-bot
  • Enables the Changes and History dialogs for worktree sessions in the Web Shell by threading the correct git working directory through the entire stack. (#7695) by @wenshao
  • Strictly parses the heatmapDays query parameter to reject malformed values like negative numbers or decimals, falling back to the default instead of clamping invalid input. (#7218) by @VectorPeak
  • Raises default live journal caps to 10,000 events and 8 MiB while exposing --max-journal-events and --max-journal-bytes flags for configuration. (#7715) by @wenshao
  • Allows pinning and grouping secondary workspace sessions in the Web Shell sidebar without requiring the workspace to be locked first. (#7716) by @wenshao
  • Corrects the review submit-gate audit to avoid falsely claiming a bypass when detecting valid same-account writes from other sources like triage bots. (#7718) by @wenshao
  • Fixes QQ Bot session restoration by returning the input session ID from AcpBridge and ensuring session patching runs even when validation fails. (#7722) by @Eric-GoodBoy-Tech
  • fix(core): prevent updates to extension-provided agents (#7245) by @destire-mio
  • fix(core): fall back to system rg when bundled ripgrep cannot run (#7203) by @harjothkhara
  • fix(core): avoid required tools in DashScope thinking (#7661) by @hogeheer499-commits
  • fix(channels): use username as senderId in GitHub adapter to fix allowlist gate (#7727) by @OrbitZore
  • fix(web-shell): parse 256-color and truecolor SGR sequences in parseAnsi (#7620) by @chinesepowered
  • fix(triage): only the bot's own approval counts as already approved (#7737) by @wenshao
  • fix(core): stop humanReadableCron naming intervals that never happen (#7529) by @chinesepowered
  • fix(cli): keep IME cursor aligned after footer updates (#7711) by @water-in-stone
  • fix(core): redact the plan argument from history after an approved exit_plan_mode (#7197) by @zjunothing
  • fix(review): correct the borrowed lenses and vacuous-test severity (follow-up to #7735/#7736) (#7746) by @wenshao
  • fix(core): reliably deliver manual plan-exit notices (#7744) by @doudouOUC
  • fix(review): recover bilingual register from the live PR when the plan omits the Han flag (#7739) by @wenshao
  • fix(cli): complete repeated skill slash commands (#7720) by @Sparkle6979
  • fix(cli): handle escaped dollars around inline math (#7741) by @CubeLander
  • fix(cli): show tool descriptions in multi-tool compact summaries (#7589) by @ovochouovo
  • fix(ci): rename triage status marker to avoid duplicate-guard collision (#7723) by @yiliang114
  • fix(core): route id-less continuation chunks to a colliding tool-call opener's slot (#6981) by @he-yufeng
  • fix(autofix): answer every review thread, resolve the ones actually fixed (#7758) by @wenshao
  • fix(core): treat properties as a name map in toOpenAPI30 (#7760) by @chinesepowered
  • fix(core): keep leading whitespace in gitignore patterns (#7763) by @chinesepowered
  • fix(core): stop trailing slash from anchoring nested gitignore patterns (#7764) by @chinesepowered
  • fix(core): keep the model name when a model id carries a variant tag (#7766) by @chinesepowered
  • fix(weixin): create the account credential file already private (#7726) by @chinesepowered
  • fix(core): stop rewriting backslash escapes in gitignore patterns (#7765) by @chinesepowered
  • fix(core): scope the timeout veto to the fragment it appears in (#7776) by @chinesepowered
  • fix(core): decline sed patterns whose bracket expression starts with ] (#7775) by @chinesepowered
  • fix(web-shell): stabilize mobile voice input (#7806) by @ytahdn
  • fix(test): give every E2E case a clean directory again (#7811) by @wenshao
  • fix(web-shell): allow shell commands in new tasks without a session (#7724) by @wenshao
  • fix(triage): carry the /verify lane's hardening across to /tmux (#7753) by @wenshao
  • fix(web-shell): render task notifications as system messages (#7822) by @ytahdn
  • fix(ci): add default bash shell to container jobs in qwen-triage (#7838) by @qwen-code-dev-bot
  • fix(web-shell): preserve pasted text in composer (#7824) by @ytahdn
  • fix(ci): add git safe.directory for container jobs (#7843) by @qwen-code-dev-bot
  • fix(ci): add --init to container jobs to reap zombie processes (#7848) by @qwen-code-dev-bot
  • fix(core): wait for output stream flush before settling background shells (#7833) by @ComplexSimply
  • fix(scripts): retry model calls and surface degraded release notes (#7535) by @he-yufeng
  • fix(ci): prevent worktree cleanup from failing the verify job (#7857) by @qwen-code-dev-bot
  • fix(release): publish all channel packages, not just channel-base (#7845) by @yiliang114
  • fix(scripts): harden retry classification and preserve deadline error context (#7854) by @yiliang114
  • fix(core): fast-fail permanent quota-exhaustion 429s instead of silent retry (#7842) by @yiliang114
  • fix(web-shell): isolate history and session drafts (#7810) by @ytahdn
  • fix(triage): retry a transient npm ci before blaming the PR for it (#7884) by @wenshao
  • fix(webui): fall back to history_truncated marker recordId for transcript pagination anchor (#7829) by @wenshao
  • fix(review): give the review retry the remaining time budget (#7852) by @wenshao
  • fix(integration): configure Docker sandbox networking for submitted-prompt provenance test (#7879) (#7881) by @qwen-code-dev-bot
  • fix(cli): report a genuine $0.00 cost instead of N/A (#7784) by @chinesepowered
  • fix(core): reject socks5h and socks4a proxy URLs (#7786) by @chinesepowered
  • fix(core): correct the character classes in checkContentLoop (#7788) by @chinesepowered
  • fix(web-shell): make /copy with a bare index work (#7789) by @chinesepowered
  • fix(core): decline combined sed flags where -i is not last (#7790) by @chinesepowered
  • fix(core): pass the Grep pattern behind -e so a leading dash is not an option (#7863) by @chinesepowered
  • fix(core): cap a bare Error's message like every other getErrorMessage path (#7865) by @chinesepowered
  • fix(cli): make wrapToVisualLines count zero-width characters like its sibling (#7873) by @chinesepowered
  • fix(core): charge the separator and ellipsis to the preview budget (#7874) by @chinesepowered
  • fix(cli): do not count a partial trailing line when re-opening a split fence (#7875) by @chinesepowered
  • fix(cli): make /copy select the code block (#7883) by @chinesepowered
  • fix(test): Restore first-output benchmark measurement validity and correct its artifact schema (#7820) by @doudouOUC
  • fix(daemon): harden Todo Stop Guard continuations (#7821) by @doudouOUC
  • fix(core): read the stash reflog from the common git dir (#7774) by @chinesepowered
  • fix(core): keep Draft 4 boolean exclusive bounds in toOpenAPI30 (#7782) by @chinesepowered
  • fix(core): apply maxDepth to flat-format memory imports (#7851) by @chinesepowered
  • fix(core): render a thought part's reasoning instead of the boolean flag (#7866) by @chinesepowered
  • fix(core): bridge tool-result images for text-only models (#7484) by @LaZzyMan
  • fix(cli): patch ink to clear staticNode on indirect subtree removal (#7816) by @chiga0
  • fix(core): auto-retry transient network errors during API calls (#7898) by @chiga0
  • fix(cli): hide stale sticky todos from previous turns (#7900) by @chiga0
  • fix(serve): Release managed session writer locks on shutdown (#7812) by @doudouOUC
  • fix(cli): add polling fallback for git branch name display (#7830) by @qwen-code-dev-bot
  • fix(cli): remove redundant 'Read file' prefix from @mention tool card (#7902) by @qwen-code-dev-bot
  • fix(safe-mode): preserve caller-supplied top-tier MCP servers (#7827) by @VitaliBabkin
  • fix(ci): keep the post-merge E2E signal on main alive (#7795) by @wenshao
  • fix(core): short-circuit the flush wait when the output stream cannot flush (#7905) by @ComplexSimply
  • fix(core): track quotes inside a command substitution in splitCommands (#7870) by @chinesepowered
  • fix(core): count the per-server and per-tool always-allow outcomes as approvals (#7869) by @chinesepowered
  • fix(web-shell): report intended workspace to host when starting a new chat (#7910) by @wenshao
  • fix(cli): default to virtualized terminal history (#5738) by @ZevGit
  • fix(ci): restore workspace ownership in cleanup to prevent EACCES (#7931) by @qwen-code-dev-bot
  • fix(review): recover the resolved effort when --effort is not re-threaded (#7855) by @wenshao
  • fix(scripts): slim release-note model prompts and log request timing (#7941) by @yiliang114
  • fix(release): pin channel-base dep to exact version during release bump (#7953) by @yiliang114
  • fix(triage): make the build-process guard diagnosable and zombie-aware (#7858) by @wenshao
  • fix(ci): give each job its own proxy wrapper directory (#7951) by @wenshao

Performance

  • perf(cli): cache GitHub PR list in the daemon route with a 60s TTL (#7705) by @wenshao
  • perf(core): keep the volatile auto-memory section last in the system prompt (#7651) by @DragonnZhang
  • perf(web-shell): paint the composer git chip before git status completes (#7680) by @wenshao
  • perf(core): Lazy-load first-use dependencies (#7686) by @doudouOUC
  • perf(cli): replace comment-json settings parser (#7747) by @doudouOUC
  • perf(acp): Preload providers after session creation (#7767) by @doudouOUC
  • perf(core): add early Anthropic cache breakpoint on the stable system prefix (#7912) by @DragonnZhang
  • perf(ci): cut the E2E suite from ~40min to ~24min (#7798) by @wenshao

Documentation

  • docs(channels): Document loops and proactive delivery (#7628) by @wenshao

Internal Changes

  • refactor(autofix): extract review verification runner (#7644) by @qqqys
  • test(web-shell): capture the git-mode new-branch sub-state in the visuals suite (#7672) by @wenshao
  • Refactors system prompt assembly into a layered builder to explicitly manage stable, context, and volatile instruction layers. (#7707) by @DragonnZhang
  • Adds regression tests to verify that restored-session transcript pagination correctly URL-encodes boundaries and preserves state during retry attempts. (#7657) by @jay666mnj
  • test(cli): cover bottom-stuck virtualized list behavior (#7652) by @jay666mnj
  • ci: keep the critical-audit gate honest when npm cannot answer (#7743) by @wenshao
  • test(integration): deflake tool-control permission cases (#7725) by @yiliang114
  • revert: drop the stale-base un-park recovery (#7602) (#7640) by @wenshao
  • test(serve): Add first-output latency benchmark (#7761) by @doudouOUC
  • test(channels): run the feishu, weixin and qqbot suites in CI (#7853) by @chinesepowered

New Contributors

  • @jay666mnj made their first contribution in #7674
  • @harjothkhara made their first contribution in #7203
  • @PratikWayase made their first contribution in #7709
  • @Sparkle6979 made their first contribution in #7720
  • @VitaliBabkin made their first contribution in #7827

Full Changelog: https://github.com/QwenLM/qwen-code/compare/v0.21.0...v0.21.1

0.21.0 - 2026-07-24

Highlights

See the complete change list below.

Breaking Changes

No known breaking changes.

Complete Change List

Features

  • feat(web-shell): add workspace selector button with add/switch dropdown in composer toolbar (#7390) by @water-in-stone
  • feat(web-shell): show subagent sessions in detail panel (#7380) by @ytahdn
  • feat(web-shell): add rendered file previews (#7467) by @ytahdn
  • feat(core): add memory recall delivery telemetry (#7393) by @ZijianZhang989
  • feat(core): keep completed background agents resident (#7426) by @DragonnZhang
  • feat(serve): support forced MCP reconnects (#7488) by @BZ-D
  • feat(prompts): allow overriding core identity via QWEN_SYSTEM_IDENTITY_MD (#7478) by @zjgzx1988
  • feat(autofix): stop a PR that fails to push for N rounds in a row (#7482) by @wenshao
  • feat(core): restore background agent roster (#7459) by @DragonnZhang
  • feat(cli): support custom skill directories via settings (#7395) by @qwen-code-dev-bot
  • feat(cli): preserve semantic text when copying VP selections (#7286) by @chiga0
  • feat(web-shell): add selective Shadow DOM isolation (#7551) by @ytahdn
  • feat(web-shell): add renderChatHeader slot for custom session header (#7553) by @yuanyuanAli
  • feat(serve): add workspace-level generation (#7552) by @ytahdn
  • feat(serve): persist workspace channel configuration (#7514) by @qqqys
  • feat(core): propagate trusted daemon invocation context (#7279) by @callmeYe
  • feat(cli): post the review body bilingually when the PR description is Chinese (#7564) by @wenshao
  • feat(autofix): auto-rerun a check that died on infrastructure, once (#7562) by @wenshao
  • feat(core): Align GenAI telemetry with ARMS (#7536) by @doudouOUC
  • feat(web-shell): add workspace agent management (#7572) by @ytahdn
  • feat(autofix): update a stale base when the gate rejects a behind-main fix (#7595) by @wenshao
  • feat(sdk-java): Add daemon transport (#7463) by @doudouOUC
  • feat(autofix): auto-update a PR red only from a stale, since-fixed base (#7554) by @wenshao
  • feat(autofix): auto-recover a PR parked on a stale base (#7602) by @wenshao
  • feat(core): add Goal v3 state protocol (#7517) by @qqqys
  • feat(daemon): add explicit channel delivery (#7388) by @BenGuanRan
  • feat(serve): scope channel lifecycle to workspace runtimes (#7577) by @qqqys
  • feat(cli): add usage statistics environment override (#7579) by @tanzhenxin
  • feat(core): emit OAuth login URL as a single OSC 8 hyperlink (#7255) by @chinesepowered
  • feat(web-shell): add git mode selector for new session creation (#7471) by @wenshao
  • feat(cli): support native video input in /learn (#7497) by @LaZzyMan
  • feat(core): Align GenAI request telemetry with ARMS (#7635) by @doudouOUC
  • feat(cli): reference prior sessions via @ and add completion tabs (#7302) by @LaZzyMan
  • feat(review): follow the session output language for runtime task names (#7653) by @wenshao
  • feat(channels): run loops in daemon workers (#7641) by @qqqys
  • feat(core): add configurable image generation models (#7607) by @qqqys
  • feat(core): add bounded Goal evidence verification (#7639) by @qqqys

Bug Fixes

  • fix(autofix): keep a still-red check visible until its head is judged (#7438) by @wenshao
  • fix: normalize empty working_dir to unset when isolation:worktree is set on AgentTool (#7403) by @mvanhorn
  • fix(core): Advertise completed task revival (#7454) by @DragonnZhang
  • fix(cli): narrow update-check error classification (#7431) by @yiliang114
  • fix(web-shell): isolate component styles from host CSS (#7466) by @ytahdn
  • fix(web-shell): polish embedded shell interactions (#7477) by @ytahdn
  • fix(release): exclude mobile-mcp from core version bump (#7474) by @yiliang114
  • fix(ci): inject actual model name into triage signature (#7475) by @yiliang114
  • fix(core): align stepped day fields with Vixie cron semantics (#7464) by @destire-mio
  • fix(acp-bridge): close prompt-terminal follow-ups from the PR #7400 self-review (#7453) by @doudouOUC
  • fix(core): strip Qwen-internal daemon secrets from agent-spawned child env (#7256) by @chinesepowered
  • fix(cli): insert newline on Shift+Enter and stop streaming thinking-block flicker (#7397) by @chiga0
  • fix(web-shell): open singleton subagent details (#7495) by @ytahdn
  • fix(web-shell): avoid redundant Git status requests (#7496) by @ytahdn
  • fix(agent): ignore empty working_dir placeholders (#7343) by @Truraly
  • fix(cli): yield to single-slot background agents (#7258) by @hogeheer499-commits
  • fix(core): add image modality support for qwen3.8-max and kimi-k3 models (#7491) by @yiliang114
  • fix(dingtalk): preserve non-bot mention context (#7473) by @qwen-code-dev-bot
  • fix(core): harden the usage salvage around session deletion (#7425) by @zjunothing
  • fix(core): make fork subagents discoverable (#7460) by @DragonnZhang
  • fix(ci): autofix route checks existing labels on non-trigger label events (#7481) by @yiliang114
  • fix(vscode): use file picker image paths for vision input (#7493) by @yiliang114
  • fix(cli): open the actual serve fallback port (#7501) by @yiliang114
  • fix(ci): don't let one failing scenario sink the whole visual preview (#7511) by @wenshao
  • fix(cli): say review coverage gaps in the author's units, not chunk ids (#7550) by @wenshao
  • fix(autofix): retry a skipped-Prepare instead of stranding the PR terminal (#7490) by @wenshao
  • fix(cli): keep role codenames and brief paths out of the posted review body (#7560) by @wenshao
  • fix(autofix): retry an agent timeout instead of advancing past its feedback (#7563) by @wenshao
  • fix(web-shell): expose managedId in artifact open requests (#7570) by @ytahdn
  • fix(sdk-python): require canonical form in validate_session_id (#7532) by @chinesepowered
  • fix(web-shell): sync background agent status (#7561) by @ytahdn
  • fix(feishu): await stream cancels in media download teardown (#7465) by @chinesepowered
  • fix(autofix): make the review-address report comment fully bilingual (#7569) by @wenshao
  • fix(serve): detect stale SSE cursors across daemon restarts via epoch token; preserve turn attribution and surface compaction failures in replay (#7458) by @doudouOUC
  • fix(serve): avoid TOCTOU race dropping live sessions from list response (#7556) by @yiliang114 with @Copilot
  • fix(cli): prevent monitor notifications after task_stop (#7573) by @yiliang114
  • Fix(cli): use npm view for update check instead of update-notifier (#7515) (#7528) by @dtometzki
  • fix(core): avoid empty transcript history pages (#7582) by @ytahdn
  • fix(cli): surface unhandled rejections and render errors instead of swallowing them (#7406) by @chiga0
  • fix(web-shell): isolate slash command plugin pages (#7581) by @ytahdn
  • fix(sdk-python): validate max_tool_calls and max_subagent_depth as integers (#7548) by @chinesepowered
  • fix(cli): correct queued message display style and ordering (#7381) by @chiga0
  • fix(core): persist usage for tool-only subagent rounds (#7557) by @DragonnZhang
  • fix(core): retry requests when providers require thinking (#7534) by @yiliang114
  • fix(core): record auto-memory index reads in FileReadCache (#7468) by @han-dreamer
  • fix(web-shell): initialize workspace selector from ID (#7518) by @patrick-andstar
  • fix(core): reject nested background requests (#7593) by @patrick-andstar
  • fix(web-shell): prevent React measure detail OOM (#7596) by @ytahdn
  • fix(core): jsonl write([]) should leave an empty file, not a stray newline (#7533) by @chinesepowered
  • fix(core): strip daemon secrets from hook and tool-discovery child env (#7527) by @chinesepowered
  • fix(core): preserve disabled reasoning effort (#7541) by @WladmirJunior
  • fix(web-shell): render a plain textarea composer on touch devices (#7587) by @ComplexSimply
  • fix(core): treat backslash as literal inside single quotes in splitCommands (#7526) by @chinesepowered
  • fix(cli): stop treating version-manager npm shims as npm-cli.js (#7545) by @nerdalytics
  • fix(core,cli): isolate teammate leader turns from agent context (#7576) by @yiliang114
  • fix(sdk-java): let a terminal continuation start the next prompt (#7615) by @wenshao
  • fix(channels): route Telegram replies to forum topics (#7612) by @hogeheer499-commits
  • fix(acp): hide discontinued OAuth model for other auth types (#7522) by @hogeheer499-commits
  • fix(channels): stop dropping multi-task messages when a channel memory is saved (#7608) by @zjunothing
  • fix(channels): ignore idle ACP cancellation errors (#7598) by @patrick-andstar
  • fix(cli): optimize large paste performance and add progress indicator (#6506) by @LaZzyMan
  • fix(mcp): use a dedicated undici fetch for Streamable HTTP transports (#7195) by @zjunothing
  • fix(daemon): address epoch cursor review follow-ups (#7619) by @doudouOUC
  • fix(sdk-java): Harden daemon transport reliability (#7603) by @doudouOUC
  • fix(acp-bridge): resource hardening for the session event pipeline (DAEMON-009/010/011) (#7622) by @doudouOUC
  • fix(cli): clean orphaned managed npm update artifacts (#7539) by @patrick-andstar
  • fix(web-shell): honor locked workspace session actions (#7629) by @dreamWB
  • fix(core): Preserve usage after empty OpenAI stream frames (#7650) by @doudouOUC
  • fix(triage): make unattended PR review static — read CI via API, never run PR code (#7646) by @wenshao
  • fix(triage): actually restrict the CI review agent's tools (#7647) by @wenshao
  • fix(cli): align all TUI icon columns to a uniform 2-col width (#7633) by @chiga0
  • fix(web-shell): show full session names on hover (#7662) by @wenshao
  • fix(web-shell): keep git mode popover open when picking branch/worktree (#7668) by @wenshao

Performance

  • perf(startup): Load undici lazily behind package-local dynamic imports (#7455) by @doudouOUC
  • perf(web-shell): optimize long session rendering (#7408) by @ytahdn
  • perf(startup): lazy-load Google GenAI SDK on first use (#7512) by @doudouOUC
  • perf(cli): Defer ACP telemetry initialization (#7558) by @doudouOUC
  • perf(cli): Propagate compile cache to ACP children (#7594) by @doudouOUC

Documentation

  • docs(core): align JSDoc @param names with actual function signatures (#7492) by @ovochouovo
  • docs(autofix): require evidenced pre-commit verification, not a bare "verified" (#7486) by @wenshao
  • docs: refresh subagent lifecycle guidance (#7624) by @wenshao
  • docs(autofix): apply Simplicity First when addressing review feedback (#7643) by @wenshao
  • docs(autofix): let the agent escalate a maintainer's decision, not decide it (#7636) by @wenshao
  • docs(triage): scale PR verification to the change, add real-run depth (#7648) by @wenshao

Internal Changes

  • test(telemetry): Cover daemon metrics init ordering and document metricReader asymmetry (#7456) by @doudouOUC
  • test(core): Cover Shell truncation without an artifact (#7470) by @doudouOUC
  • test(core): stub the registry methods agent.ts actually calls (#7538) by @chinesepowered
  • test(autofix): single-source the infra-signature list from the workflow (#7565) by @wenshao
  • test: deflake write_file content assertion in tool-control E2E test (#7613) by @yiliang114 with @Copilot
  • test(sdk-java): widen the SSE idle-watchdog margins in the slow-line test (#7617) by @wenshao
  • test(core): pin the archived-copy usage salvage in the conflict deletion test (#7604) by @zjunothing
  • test(triage): regression-guard the triage workflow, and make the git cleanup an allowlist (#7660) by @wenshao

New Contributors

  • @ovochouovo made their first contribution in #7492
  • @Truraly made their first contribution in #7343
  • @zjgzx1988 made their first contribution in #7478
  • @hogeheer499-commits made their first contribution in #7258
  • @dtometzki made their first contribution in #7528
  • @patrick-andstar made their first contribution in #7518
  • @WladmirJunior made their first contribution in #7541
  • @nerdalytics made their first contribution in #7545

Full Changelog: https://github.com/QwenLM/qwen-code/compare/v0.20.1...v0.21.0

0.20.1 - 2026-07-21

Highlights

See the complete change list below.

Breaking Changes

No known breaking changes.

Complete Change List

Features

  • feat(autofix): label-driven takeover and release; fix forced-dispatch green no-op (#7165) by @wenshao
  • feat(autofix): direct takeover of maintainer-fork PRs (#7213) by @wenshao
  • feat(daemon): Advertise ACP preheat readiness (#7200) by @doudouOUC
  • feat(autofix): surface the running model in every autofix report (#7226) by @wenshao
  • feat(review): retry transient API failures once; surface quota clearly (#7233) by @wenshao
  • feat(core): inspect persisted conversation branches (#7185) by @doudouOUC
  • feat(core): Route Plan-mode shell commands by safety (#7172) by @doudouOUC
  • feat(ci): auto-open a deflake fix issue for confirmed flaky tests (#7231) by @wenshao
  • feat(autofix): auto-manage the bot's own fork PRs without a label (#7243) by @wenshao
  • feat(web-shell): worktree-isolated sessions for parallel tasks (#7221) by @wenshao
  • feat(i18n): update catalan translaiton (#7253) by @jordimas
  • feat: add CODEOWNERS for core harness modules (#7304) by @pomelo-nwu
  • feat(web-shell): support custom slash command actions (#7267) by @ytahdn
  • feat(web-shell): add git commit history browser (#7204) by @wenshao
  • feat: support workspace display names (#7179) by @samuelhsin
  • feat(channels): add content-safe memory recall telemetry (#7338) by @qqqys
  • feat(daemon): restore worktree isolation on session load/resume (#7262) by @wenshao
  • feat(autofix): re-arm a stranded PR with @qwen-code /retry instead of deleting a marker (#7354) by @wenshao
  • feat(serve): make ACP initialize handshake timeout configurable (#7246) by @qwen-code-dev-bot
  • feat(autofix): pick up managed fork PRs in real time instead of waiting for the throttled schedule (#7350) by @wenshao
  • feat(autofix): resolve the review threads whose findings it implemented (#7364) by @wenshao
  • feat(autofix): render the managed fleet into the scan's run summary (#7355) by @wenshao
  • feat(core): add fork_turns to fork subagents (#7346) by @DragonnZhang
  • feat(auth): add Singapore Token Plan region (#7280) by @han-dreamer
  • feat(web-shell): surface worktree isolation in the new-session empty state (#7365) by @wenshao
  • feat(core): add opt-in built-in web_search backed by the DashScope Responses API (#7215) by @tanzhenxin
  • feat(web-shell): Add sidebar customization API for branding, navigation, session actions, and footer (#7379) by @yuanyuanAli
  • feat(autofix): raise the strict round cap from 5 to 10 (#7412) by @wenshao
  • feat(autofix): feed the gate's rejection back so the retry can fix what it broke (#7368) by @wenshao

Bug Fixes

  • fix(autofix): stage SKILL.md beside run-agent.mjs so review-address boots (P0, regression from #7165) (#7225) by @wenshao
  • fix(ci): consolidate issue triage ownership (#7180) by @yiliang114
  • fix(cli): allow goal controls during active loops (#7202) by @yiliang114
  • fix(cli): show mode indicator alongside steering hint during streaming (#7219) by @qwen-code-dev-bot
  • fix(scripts): allow multiple dev:daemon instances by probing Vite port (#7212) by @wenshao
  • fix(review): say an unread chunk once, under its cause (#7234) by @wenshao
  • fix(autofix): a no-output crash must not advance the review watermark (#7229) by @wenshao
  • fix(review): prohibit isolation param in roster output and SKILL.md (#7235) by @wenshao
  • fix(cli): align npm update checks with global registry (#7224) by @yiliang114
  • fix(test): deflake tool-control E2E content assertions (#7261) by @qwen-code-dev-bot
  • fix(sdk): abort SSE request on iterator exit to release daemon subscriber (#7257) by @chinesepowered
  • fix(core): Enforce Plan mode entry boundary (#7248) by @doudouOUC
  • fix(channels): exclude discrete ACP messages from replies (#7223) by @qwen-code-dev-bot
  • fix(ci): create remote-tracking ref for fork PRs in autofix verify gate (#7281) by @wenshao
  • fix(sdk): clean up SSE requests on errors and dispose (#7269) by @doudouOUC
  • fix(cli): repaint the TUI after OS sleep/wake or SIGCONT (#7265) by @wenshao
  • fix(mobile-mcp): restore bounds in UI hierarchy dumps (#7321) by @LaZzyMan
  • fix(test): stabilize 3 flaky tests (serve startup, usage-stats TTL, TasksStatusMessage keypress) (#7319) by @qwen-code-dev-bot
  • fix(cli): Preserve cancellation during permission prompts (#7295) by @doudouOUC
  • fix(core): estimate reasoning_tokens when completion_tokens_details is missing (#7239) by @yiliang114
  • fix(ci): tighten API error detection to avoid false positive on review prose (#7328) by @wenshao
  • fix(web-shell): localize extension tag labels (#7337) by @callmeYe
  • fix(test): stabilize list_directory E2E — accept text output when model skips tool call (#7342) by @qwen-code-dev-bot
  • fix(autofix): resolve owning package for nested paths; report verify-failed handoffs as not pushed (#7330) by @wenshao
  • fix(review): retry gh CLI on transient GitHub errors (5xx) and keyring failures (#7291) by @wenshao
  • fix(channels): deliver background agent replies (#7336) by @qwen-code-dev-bot
  • fix(web-shell): proxy extension APIs without intercepting modules (#7294) by @ytahdn
  • fix(dingtalk): retry transient emotion failures (#7329) by @qwen-code-dev-bot
  • fix(web-shell): respect voice enabled setting (#7345) by @callmeYe
  • fix(cli): map positional args to optional MCP prompt parameters (#7317) by @qwen-code-dev-bot
  • fix(cli): include typed directory in /cd tab completion (#7320) by @qwen-code-dev-bot
  • fix(review): make agent launches and cleanup resilient (#7259) by @wenshao
  • fix(ci): stop a slow patrol classifier from killing every flaky rerun (#7358) by @wenshao
  • fix(ci): tell a visuals coverage gap apart from "no visual change" (#7375) by @wenshao
  • fix: ask when Auto Mode classifier is unavailable (#7331) by @LaZzyMan
  • fix(autofix): retry a verification-gate crash instead of burying the agent's fix (#7351) by @wenshao
  • fix(core): validate goal judge terminal evidence (#7208) by @qwen-code-dev-bot
  • fix(core): hide interaction tools in plain headless mode (#7285) by @DragonnZhang
  • fix(cli): show worktree branch in status line instead of workspace branch (#7367) by @wenshao
  • fix(acp-bridge): make detachClient idempotent via per-clientId attach-ref ledger (#7386) by @doudouOUC
  • fix(autofix): refuse a non-main takeover out loud instead of only in the job log (#7382) by @wenshao
  • fix(cli): update npm installs safely in background (#7322) by @yiliang114
  • fix(core): support qwen3.8 side queries on DashScope (#7303) by @yiliang114
  • fix(autofix): retry a model API error instead of stranding the PR (#7247) by @wenshao
  • fix(ci): stop /resolve reports from being guillotined mid-sentence (#7389) by @wenshao
  • fix(web-shell): restore scheduled task reference interactions (#7313) by @BZ-D
  • fix(core): bound web-fetch post-processing and preserve fetched content on failure (#7305) by @tanzhenxin
  • fix(core): Fence concurrent ACP session writers (#7237) by @doudouOUC
  • fix(ci): serialise the two workflows that push to a PR head branch (#7392) by @wenshao
  • fix(web-shell): persist the daemon bearer token per-tab so it survives refresh (#7374) by @zjunothing
  • fix(core,cli): drain background notifications outside the subagent's ALS frame (#7194) by @zjunothing
  • fix(acp-bridge): map Windows-shaped workspace paths to their sandbox mount (#7228) by @zjunothing
  • fix(core): salvage session usage into the history before deleting transcripts (#7391) by @zjunothing
  • fix(core): clarify background agent continuation (#7300) by @DragonnZhang
  • fix(transcript): mark dangling tool history incomplete (#7340) by @cxruan
  • fix(mcp): add opt-in model payload filtering (#7413) by @LaZzyMan
  • fix(ci): tell a triage action crash apart from a silent agent (#7418) by @wenshao
  • fix(acp-bridge): guarantee exactly-once prompt terminal events in daemon serve mode (#7400) by @doudouOUC
  • fix(dingtalk): anchor @mention strip regex to start of text (#7401) by @qwen-code-dev-bot
  • fix: support context-inheriting subagents in headless mode (#7378) by @DragonnZhang
  • fix(cli): soften update-check failure UX — warning instead of error, raise timeout to 5s (#7409) by @ComplexSimply
  • fix(test): widen daemon boot timeout from 10s to 25s for docker sandbox (#7419) by @qwen-code-dev-bot
  • fix: worktree sessions unopenable in Web Shell while actively running (#7424) by @wenshao
  • fix(web-shell): restore context tags in queued and recalled prompts (#7312) by @dreamWB
  • fix(core): resolve artifact workspacePath against workspace root in worktree sessions (#7429) by @wenshao
  • fix(cli): classify nested update-check network errors (#7428) by @yiliang114
  • Fixed intermittent Docker CI test failures caused by session lock files resolving outside the isolated test directory. (#7439) by @wenshao
  • Regenerated the ink@7.0.3 patch to ensure it applies cleanly during fresh installations and prevents build errors. (#7407) by @chiga0
  • Relaxed OpenAI wire schema constraints for optional fields to prevent models from being forced to provide mutually exclusive arguments. (#7344) by @zjunothing
  • Added a 50MB size cap and 30-second timeout to DingTalk media downloads to match Feishu adapter behavior. (#7361) by @chinesepowered
  • Allowed simple-git to accept restricted protocol and global config settings required for public Git extension installations. (#7293) by @ytahdn
  • Enforced deterministic aggregate budgeting for batches of tool responses to prevent exceeding character limits across all runtimes. (#7323) by @doudouOUC
  • Fixed Docker CI session conflicts by clearing inherited sandbox session IDs to ensure each sub-session generates a unique identifier. (#7443) by @wenshao

Performance

  • perf(autofix): raise fleet simultaneity from 3 to 5 (#7396) by @wenshao
  • perf(telemetry): lazy-load the SDK and split OTLP exporter chains by protocol (#7276) by @doudouOUC
  • perf(autofix): stop the feedback gate waiting on the LLM review check (#7416) by @wenshao

Documentation

  • docs(cli): remove stale include directories limit (#7326) by @ZijianZhang989

Internal Changes

  • test: raise timeout ceiling for I/O-bound tests flaky under CI contention (#7230) by @wenshao
  • test(autofix): exercise the SKILL stage↔resolve contract end-to-end (#7227) by @wenshao
  • test(channels): add memory recall evaluation baseline (#7220) by @qwen-code-dev-bot
  • test(autofix): sync workflow assertions with split model vars (#7297) by @yiliang114
  • test(feishu): enforce markdown chunk limit assertion (#7324) by @ZijianZhang989
  • ci: move release-note classifier from per-PR workflow to release-time batch (#7339) by @yiliang114
  • chore: add CODEOWNERS for cua-driver and mobile-mcp (#7369) by @qwen-code-dev-bot
  • chore: simplify CODEOWNERS to package-level rules (#7376) by @pomelo-nwu
  • chore(docs,test): batch three small docs and test fixes (#7373) by @ZijianZhang989
  • Added tests to verify that artifact file paths resolve correctly in both ordinary and worktree sessions. (#7434) by @wenshao

Full Changelog: https://github.com/QwenLM/qwen-code/compare/v0.20.0...v0.20.1

0.20.0 - 2026-07-19

Highlights

See the complete change list below.

Breaking Changes

No known breaking changes.

Complete Change List

Features

  • feat(cli): Add bounded daemon log rotation (#6969) by @doudouOUC
  • feat(review): bake the round label into a findings role's identity line and key (#7171) by @wenshao
  • feat(webshell): replay ChatRecord history in readonly WebShell (#6999) by @cxruan
  • feat(ui): let the user read the full plan from the exit_plan_mode confirmation (#7060) by @zjunothing
  • feat(providers): add qwen3.8-max-preview to Token Plan model list (#7199) by @qwen-code-dev-bot

Bug Fixes

  • fix(sdk-java): preserve exception cause in AcpClient init failures (#7189) by @chinesepowered
  • fix(web-shell): proxy /goals route in Vite dev server (#7187) by @wenshao
  • fix(sdk-java): correct TIMEOUT_30_MINUTES to actually be 30 minutes (#7188) by @chinesepowered
  • fix(cli): emit deferred stream-json startup warnings (#7174) by @barry166
  • fix(review): judge a CI check by its name's latest run, not by any leftover (#7183) by @wenshao
  • fix(review): count Step 6's inline findings from the drafted comments, never from typed numbers (#7173) by @wenshao
  • fix(web-shell): dedupe restored images and harden the sidebar shortcut handler (#7169) by @zjunothing
  • fix(mcp): normalize tool names for strict providers (#6976) by @ran411285752
  • fix(core): apply native tool calling schema for gemma 4 (#7177) by @ghisguth
  • fix(cli): share one process.stdout resize listener in useTerminalSize (#7186) by @mvanhorn
  • fix: surface underlying .cause of OpenAI-compatible connection errors in debug log and API error message (#7010) by @mvanhorn
  • fix(web-shell): prevent toolbar label clipping (#7196) by @carffuca
  • fix(review): one disclosure per subject — dedupe Not-reviewed, collapse an all-built-none-launched roster (#7190) by @wenshao
  • fix(review): an unverified Critical must not become a public blocker — soften the Request changes it rides (#7191) by @wenshao

Performance

  • perf(channels): cache channel memory recall (#7175) by @qwen-code-dev-bot
  • perf(cli): Defer TUI runtime from ACP startup (#7182) by @doudouOUC

Internal Changes

  • chore(vscode-ide-companion): sync third-party notices and guard against future drift (#7161) by @wenshao
  • ci(autofix): harden the address path against stale targets and untrusted route events (#7163) by @wenshao

New Contributors

  • @ghisguth made their first contribution in #7177

Full Changelog: https://github.com/QwenLM/qwen-code/compare/v0.19.12...v0.20.0

0.19.12 - 2026-07-18

Highlights

See the complete change list below.

Breaking Changes

No known breaking changes.

Complete Change List

Features

  • feat(daemon): Trace cold first-session startup (#6907) by @doudouOUC
  • feat(web-shell): add archived session export (#6910) by @doudouOUC
  • feat(serve): add workspace session-info aggregate endpoint (#7077) by @samuelhsin
  • feat(web-shell): add skill management pages (#7018) by @ytahdn
  • feat(cli): mouse text selection and copy in VP mode (#6937) by @chiga0
  • feat(channels): stamp daemon sourceId with channel instance name on created sessions (#7078) by @xurik
  • feat(channels): confirm natural memory mutations (#7066) by @qqqys
  • feat(channels): save explicit multi-fact memory safely (#7092) by @qqqys
  • feat(serve): Complete legacy session workspace telemetry (#7003) by @doudouOUC
  • feat(core): Enable artifact defaults and write reminders (#7068) by @chiga0
  • feat(web-shell): suggest sending new-topic drafts in a new session (#7098) by @carffuca
  • feat(tools): add formatDisplayPath() and wire grep/glob/ripGrep descriptions (#7050) by @zjunothing
  • feat(daemon): propagate prompt IDs to turn events (#7082) by @makwingchi
  • feat(web-shell): paginate restored session history (#7064) by @ytahdn
  • feat(web-shell): toggle the session sidebar with Cmd+B / Ctrl+B (#7135) by @zjunothing
  • feat(web-shell): add directory autocomplete to the Add Workspace dialog (#7125) by @zjunothing
  • feat(cli): support same-turn message steering (#7090) by @LaZzyMan
  • feat: support full-turn multimodal routing for image prompts (#7045) by @yiliang114
  • feat(agents): support per-model sub-agent concurrency limits (#6984) by @qwen-code-dev-bot
  • feat(cli): add daemon Todo stop guard (#6945) by @doudouOUC
  • feat(cli): show active path in compact tool summaries (#7043) by @zjunothing
  • feat(vscode): route logs to the Qwen Code Companion output channel (#7121) by @yiliang114
  • feat(core): overhaul web_fetch — content fidelity, binary handling, security, and resilience (#7146) by @tanzhenxin
  • feat(channels): expose workspace-scoped observed contacts (#7109) by @BenGuanRan
  • feat(web-shell): persist the split view across refresh, per tab (#7136) by @wenshao
  • feat(web-shell): add a workspace Goals page, and stop losing /goal on daemon resume (#6561) by @wenshao
  • feat(core): improve subagent delegation defaults and guardrails (#7048) by @DragonnZhang
  • feat(review): build every Step 5 auditor of a round in one call, identity first (#7150) by @wenshao
  • feat(channels): observe group names from inbound messages (#7155) by @BenGuanRan
  • feat(web-shell): git status chip, visual working-tree diff, and sidebar git status (#7054) by @wenshao
  • feat(channels): recall relevant memory per message (#7157) by @qwen-code-dev-bot

Bug Fixes

  • fix(serve): Harden multi-workspace ownership guards (#7005) by @doudouOUC
  • fix: bound usage-only streams and abort on quit (#7038) by @yiliang114
  • fix(acp): disambiguate model routes (#7028) by @yiliang114
  • fix(web-shell): batch transcript dispatch to avoid tab-return freeze (#7012) by @wenshao
  • fix(core): Require explicit approval to exit Plan mode (#6967) by @doudouOUC
  • fix(web-shell): use formatSettingCategory for fallback UI category (#7055) by @wenshao
  • fix(integration): add missing session_info to E2E capabilities baseline (#7091) by @qwen-code-dev-bot
  • fix(tui): pin MaxSizedBox rows and gate the pending backstop for show-more diff (#6809) (#6957) by @azurecgx
  • fix(integration): harden flaky interactive read-then-write test (#7105) by @wenshao
  • fix(core): retry empty tool-result continuations (#7039) by @yiliang114
  • fix(core): align planning and response guidance (#7085) by @DragonnZhang
  • fix(web-shell): render built-in tag icons (#7024) by @callmeYe
  • fix(core): force tool_choice in generateJson to prevent auto-mode classifier deadlock (#6929) by @qwen-code-dev-bot
  • fix(ci): notify silent triage re-runs (#7079) by @yiliang114
  • fix(cli): pop the kitty keyboard protocol after leaving the alternate screen (#7115) by @zjunothing
  • fix(web-shell): optionally restart SSE after prompt admission (#7080) by @ytahdn
  • fix(core): accept subagents created after startup instead of rejecting on stale cache (#7112) by @zjunothing
  • fix(cli): keep streaming code blocks intact when split across commits (#7020) by @MikeWang0316tw
  • fix(i18n): correct "extenison" typo in extension enable/disable scope help (#7057) by @chinesepowered
  • fix(core): make the per-turn tool-call cap adaptive (#7052) by @wenshao
  • fix(vscode): preserve Electron Node mode for ACP launch (#7106) by @yiliang114
  • fix(core): preserve complete skill descriptions (#7032) by @callmeYe
  • fix(core): persist resolved subagent model in metadata (#7104) by @ARE404
  • fix(web-shell): stop stacking duplicate copies when restoring prompt text (#7134) by @zjunothing
  • fix(core): retry malformed repeated thinking tags (#7100) by @yiliang114
  • fix(cli): correct misspelled handleUpdateRecieved -> handleUpdateReceived (#7132) by @chinesepowered
  • fix(cli): hide sticky task panel when agent is idle (#7062) by @qwen-code-dev-bot
  • fix(cli): keep the model override when a background notification drains (#7119) by @zjunothing
  • fix(core): align prompt tool examples with schemas (#7088) by @DragonnZhang
  • fix(cli): require a second Ctrl+C within 1s before a real SIGINT exits the TUI (#7129) by @zjunothing
  • fix: keep quit and stream logging reliable (#7124) by @yiliang114
  • fix(ui): keep SkillReviewDialog right border inside the dialog container (#7047) by @zjunothing
  • fix(core): preserve existing work in system prompt (#7087) by @DragonnZhang
  • fix(mcp): terminate descendants after discovery timeout (#6926) by @morluto
  • fix(review): report what the transcripts prove; build the roster in one call (#7033) by @wenshao
  • fix(cli): establish extension store generation baseline on first read (#7072) by @qwen-code-dev-bot
  • fix(core): remove ask_user_question from the Explore agent's toolset (#7133) by @zjunothing
  • fix(web-shell): scope advanced table overlays (#7097) by @ytahdn
  • fix(core): correct "supercedes" typo in plan-mode system prompt (#7058) by @chinesepowered
  • fix(ask-user-question): accept long headers and size chips to the container width (#7063) by @tanzhenxin
  • fix(core): canonicalize restrictive permission paths (#6923) by @morluto
  • fix(core): align system prompt with interaction mode (#7089) by @DragonnZhang
  • fix(memory): resolve root symlinks in isAllowedMemoryPath before creation (#6842) by @wenshao
  • fix(core): add kimi-k3 token limits (1M context, 128K output) (#7144) by @tanzhenxin
  • fix(integration): use lenient assertion and harden poll in interactive file-system test (#7113) by @qwen-code-dev-bot
  • fix(core): resolve a parameter expansion in command position to its command root (#7143) by @wenshao
  • fix(cli): make auto output language follow user input (#6953) by @han-dreamer
  • fix(core): respect enableManagedAutoMemory in memory availability (#6941) by @han-dreamer
  • fix(cli): tighten VP-mode controls footprint and fix shell tool indicator overlap (#6931) by @chiga0
  • fix(acp): resolve textual @ image paths (#7123) by @yiliang114
  • fix: correct typos in comments, a tool description, and docs (#7131) by @chinesepowered
  • fix: harden desktop MCP permission-request lifecycle so pending prompts never hang or leak (#7013) by @mvanhorn
  • fix(cli): correct misspelled migratedInMemorScopes -> migratedInMemoryScopes (#7140) by @chinesepowered
  • fix(web-shell): recover new-session decisions wrapped in prose or fences (#7122) by @wenshao
  • fix(web-shell): make approval and question overlays keyboard accessible (#7074) by @wenshao
  • fix(cli): restore cancelled prompt after streamed output (#7149) by @barry166
  • fix(channels): scope pairing and allowlist state by workspace (#7065) by @zjunothing

Performance

  • feat(daemon): Profile ACP channel initialization (#7145) by @doudouOUC

Documentation

  • docs(serve): Close multi-workspace hardening gaps (#7019) by @doudouOUC
  • docs(cua-driver): fix broken relative-coordinate design link (#7130) by @chinesepowered
  • docs(autofix): make bot PR comments bilingual with collapsed Chinese (#7137) by @wenshao

Internal Changes

  • refactor(web-shell): drop redundant primary-workspace label (#7035) by @wenshao
  • test(web-shell): make visual-preview captures deterministic + add workspace-sidebar scenario (#7041) by @wenshao
  • ci(autofix): recover from generated-artifact CI gates and stop silent stalls (#6998) by @wenshao
  • ci(autofix): run the schema gate from a trusted staged copy, not the branch tree (#7076) by @wenshao
  • test(web-shell): align workspace sidebar visual smoke (#7107) by @yiliang114
  • test(cli): isolate sandbox-relaunch tests from ambient QWEN_SANDBOX_IMAGE (#7093) by @wenshao
  • ci(autofix): treat Suggestion-level review findings as actionable per AGENTS.md (#7094) by @wenshao
  • test(serve): cover session-info regressions (#7083) by @samuelhsin
  • test(cli): actually exercise the paste-workaround path in useKeypress (#7141) by @chinesepowered
  • ci(autofix): fan out review targets and stop route-scan starvation (#7127) by @wenshao
  • ci(shepherd): add Fleet Shepherd — automated unblocking of the bot-PR fleet (#7142) by @wenshao
  • refactor(core): Classify shell safety as read-only, write, or unknown (#7053) by @doudouOUC

New Contributors

  • @azurecgx made their first contribution in #6957
  • @makwingchi made their first contribution in #7082
  • @ARE404 made their first contribution in #7104

Full Changelog: https://github.com/QwenLM/qwen-code/compare/v0.19.11...v0.19.12

0.19.11 - 2026-07-16

Highlights

See the complete change list below.

Breaking Changes

No known breaking changes.

Complete Change List

Features

  • feat(web-shell): add workspace path lock (#6853) by @ytahdn
  • feat(web-shell): add extension management page (#6815) by @ytahdn
  • feat(core): emit liveness heartbeats for silent foreground shell commands (#6876) by @doudouOUC
  • feat(cli): VP mode UX improvements (#6885) by @chiga0
  • feat(acp): expose tool-call preparation lifecycle (#6819) by @ran411285752
  • feat(channels): add structured channel memory management (#6860) by @qqqys
  • feat(ci): add automated PR failure patrol (#6766) by @yiliang114
  • feat(scripts): add local PR verification gate (#6873) by @callmeYe
  • feat(web-shell): expose session controls to hosts (#6906) by @dreamWB
  • feat(channels): support DingTalk webhook delivery to direct messages (#6891) by @BenGuanRan
  • feat(core): add PDF vision bridge fallback (#6846) by @doudouOUC
  • feat(cli): add general.notificationMode to silence per-approval notifications (#6898) (#6922) by @C0d3N1nja97342
  • feat(web-shell): use popovers for composer controls (#6877) by @ytahdn
  • feat(cli): change default approval mode from default to auto (#6899) by @pomelo-nwu
  • feat(cli): add /learn command for user-initiated skill creation (#6440) by @LaZzyMan
  • feat(web-shell): auto-post visual previews (screenshots + flow GIFs) on PRs (#6880) by @wenshao
  • feat(daemon): add immutable session source metadata (#6932) by @ytahdn
  • feat(web-shell): add zoom, pan and drag controls to Mermaid diagrams (#6881) by @yuanyuanAli
  • feat(review): build the Step 4 verifier and Step 5 reverse-audit prompts in code (#6942) by @wenshao
  • feat(web-shell): maximize a single split pane (#6951) by @wenshao
  • feat(cli): Add archived session export (#6911) by @doudouOUC
  • feat(web-shell): show sessions awaiting user action (#6956) by @ytahdn
  • feat(review): prove Step 4 (verify) and Step 5 (reverse audit) actually ran (#6965) by @wenshao
  • feat(channels): support natural memory references (#6952) by @qqqys
  • feat(daemon): add stateless generation SSE (#6947) by @ytahdn
  • feat(daemon): Aggregate deep health across workspaces (#6961) by @doudouOUC
  • feat(serve): add workspace MCP management (#6954) by @ytahdn
  • feat(web-shell): color-code each split pane by workspace (#6971) by @wenshao
  • feat(review): fold the findings list into the verify/reverse-audit prompt (#6994) by @wenshao
  • feat(channels): tag daemon sessions with channel source (#6991) by @xurik

Bug Fixes

  • fix(web-shell): improve file search and composer focus (#6845) by @ytahdn
  • fix(web-shell): prevent composer tag update loop (#6859) by @ytahdn
  • fix(web-shell): make composer height adaptive (#6872) by @dreamWB
  • fix(web-shell): remove duplicate useWebShellPortalRoot import in ChatEditor (#6890) by @C0d3N1nja97342
  • fix(ci): skip empty SDK release PR (#6861) by @yiliang114
  • fix(ci): avoid apt on self-hosted Playwright smoke (#6865) by @yiliang114
  • fix(webui): honor follow-up accept callback suppression (#6862) by @yiliang114
  • fix(cli): wrap long compact tool summaries (#6847) by @han-dreamer
  • fix(web-shell): persist collapsed session group sections across reload (#6878) by @samuelhsin
  • fix(cli): avoid updating active CLI processes (#6874) by @yiliang114
  • fix(dingtalk): refresh token for inbound media (#6903) by @qqqys
  • fix(vscode): run ACP process in Electron Node mode (#6866) by @yiliang114
  • fix(cli): keep exit_plan_mode plan visible inside the pending viewport clamp (#6867) (#6882) by @C0d3N1nja97342
  • fix(test): isolate WeCom temporary files across concurrent CI jobs (#6908) by @yiliang114
  • fix(core): preserve display output for malformed tool results (#6925) by @morluto
  • fix(vscode-companion): accurate image-size messages and formatFileSize units (#6904) by @chinesepowered
  • fix(vscode-companion): don't let a non-boundary @ suppress / completion (#6902) by @chinesepowered
  • fix(cli): don't mutate cached trusted-folders config on preview trust check (#6900) by @AriaZhao-coder
  • fix(mcp): require trust for read-only auto-approval (#6924) by @morluto
  • fix(cli): apply FETCH_TIMEOUT_MS to /update version check and log fetchInfo results (#6857) (#6887) by @C0d3N1nja97342
  • fix(core): include skill results in microcompaction (#6788) by @han-dreamer
  • fix(core): handle unsigned Claude thinking from proxies (#6893) by @yiliang114
  • fix(config): reject fractional session and tool-call limits (#6920) by @morluto
  • fix(web-shell): Harden non-primary session archive actions (#6912) by @doudouOUC
  • fix(core): sanitize standalone closing thinking tags (#6854) by @yiliang114
  • fix(webui): route useLocalStorage functional updates through prev state (#6905) by @chinesepowered
  • fix(core): Classify shell timeouts as tool errors (#6864) by @doudouOUC
  • fix(web-shell): restore portal root hook import (#6934) by @yiliang114
  • fix(review): prove the diff was read, build every agent's prompt, and compute the verdict (#6892) by @wenshao
  • fix(core): roll back failed max-token continuation attempts (#6921) by @morluto
  • fix(cli): isolate submit tests from inherited QWEN_CODE_SESSION_ID (#6944) by @qwen-code-dev-bot
  • fix(web-shell): show workspace chip tooltip on narrow composer (#6958) by @wenshao
  • fix(test): widen second-turn phase timeouts in stdin-close E2E test (#6966) (#6973) by @qwen-code-dev-bot
  • fix(wecom): prevent requireMention from disabling group chat (#6948) by @BenGuanRan
  • fix(cua-driver): harden MCP tool reliability (#6968) by @LaZzyMan
  • fix(cron): add deterministic test seam for cron-interactive E2E (#6987) by @yiliang114
  • fix(test): widen model-response timeouts in SDK E2E tests for CI stability (#6979) (#6985) by @qwen-code-dev-bot
  • fix(cli): Preserve channel startup failure details (#6950) by @doudouOUC
  • fix(web-shell): filter sessions by source (#6995) by @ytahdn
  • fix(web-shell): land on the split's first pane when a shrink folds the split (#7000) by @wenshao
  • fix(headless): run concurrency-safe tool calls in parallel (#6993) by @wenshao
  • fix(shell): handle command-specific exit codes (#7011) by @ytahdn
  • fix(core): preserve MCP OAuth challenges from HTTP handshakes (#7022) by @ytahdn

Performance

  • perf(review): scope Agent 7's build/test to the workspaces the diff changed (#6955) by @wenshao

Documentation

  • docs(review): cap PR scope after repeated review rounds (#6848) by @wenshao
  • docs: make local PR verification optional (#7025) by @callmeYe

Internal Changes

  • ci(release): finalize stable releases asynchronously (#6868) by @yiliang114
  • ci(web-shell): stop visual previews firing on SDK-only PRs (#6959) by @wenshao
  • ci: quarantine cron-interactive from push E2E to nightly-only (#6986) by @yiliang114
  • chore: update default model to qwen3.7-max (#6978) by @qwen-code-dev-bot
  • test(web-shell): add mermaid, split-view + sidebar visual scenarios (#6964) by @wenshao
  • ci(serve): daemon A/B before/after preview on response-surface PRs (#6975) by @wenshao
  • ci(web-shell): before/after visual previews, showing only changed views (#6963) by @wenshao
  • revert: remove local PR verification gate (#7031) by @callmeYe
  • Added a new visual test scenario for the Extensions manager page to detect layout regressions in dark and light themes. (#6997) by @wenshao

New Contributors

  • @ran411285752 made their first contribution in #6819
  • @morluto made their first contribution in #6925
  • @AriaZhao-coder made their first contribution in #6900
  • @xurik made their first contribution in #6991

Full Changelog: https://github.com/QwenLM/qwen-code/compare/v0.19.10...v0.19.11

0.19.10 - 2026-07-14

Highlights

  • Multi-workspace support now spans ACP transport, daemon workers, split-view sessions, and workspace-aware actions. (#6621, #6635, #6746, #6724)
  • Web Shell gains an artifact panel, a modernized sidebar and settings experience, and editable user-level model configuration. (#6591, #6804, #6817, #6768)
  • Session and model recovery is more resilient to malformed streams, leaked protocol turns, OAuth expiry, and daemon restarts. (#6794, #6683, #6732, #6680)
  • Subagents are easier to follow with richer live command context, transcript paths, a chronological timeline, and inherited Explore models. (#6580, #6772, #6807)
  • CLI workflows gain project-scoped prompt stashes, visible Git branches, configurable shell timeouts, and safer memory-pressure handling. (#6709, #6725, #6628, #6682)
  • SDK and daemon integrations can now control effort, models, usage, context, transport options, and runtime channels. (#6492, #6491, #6741)

Breaking Changes

No known breaking changes.

Complete Change List

Features

  • SDK-hosted agents now forward user answers from ask_user_question tool approvals back to the model, enabling interactive question flows in TypeScript and Python SDK integrations. (#6655) by @TianYuan1024
  • DingTalk channels can now optionally mention group message senders in bot replies using visible @ tokens, with Markdown rendering preserved for replies without mentions. (#6679) by @qqqys
  • Web shell now includes a right-side review panel for inspecting edited files, artifacts, and scheduled tasks with diffs, file navigation, and session-scoped tabs. (#6591) by @ytahdn
  • Daemon now supports workspace-qualified ACP endpoints, allowing SDK and web shell clients to open sessions scoped to specific workspaces in multi-workspace deployments. (#6621) by @doudouOUC
  • Adds a composer header render slot and an opt-in mobile welcome footer placement so embedders can show custom content above the composer on small screens. (#6584) by @yuanyuanAli
  • Adds SDK methods to control reasoning effort, list available models, and query account and context usage statistics at runtime. (#6492) by @juhuan
  • Expanding thinking blocks with Alt+T during streaming now displays the full reasoning content in real-time instead of a truncated preview. (#6678) by @huww98
  • Scheduled task prompts now support inline extension, skill, and MCP reference tags via floating pickers that serialize cleanly into the saved prompt text. (#6589) by @BZ-D
  • Pressing Ctrl+S with a non-empty prompt now stashes it for the current project and restores it on the next launch, clearing the stash upon submission. (#6709) by @destire-mio
  • Session recovery now uses a unified plan across all entrypoints, consistently handling interrupted prompts, dangling tool calls, and degraded history. (#6731) by @water-in-stone
  • Subagent views now show untruncated live commands, deeper progress history, execution transcript paths, and recent tool context on inline approvals. (#6580) by @TianYuan1024
  • The qwen serve daemon can now host channel workers for multiple trusted workspaces, binding each worker to its respective workspace directory. (#6635) by @doudouOUC
  • A new MessageDisplay hook fires incrementally during assistant streaming, allowing observers to track reply text before the turn completes. (#6489) by @yanchenko
  • Double-clicking a cell in a rendered Markdown table now opens a dialog with the full cell value for easy reading and copying. (#6530) by @jifeng
  • The daemon now exposes read-only session catalogs for untrusted workspaces, letting clients browse sessions without write access. (#6717) by @doudouOUC
  • Workspace registrations added at runtime are now persisted so they survive daemon restarts without manual reconfiguration. (#6716) by @doudouOUC
  • User messages in the web shell now render extension, skill, and MCP reference tags inline, matching the composer preview. (#6537) by @ever-o
  • Channel workers now reconnect automatically when the daemon restarts, restoring DingTalk and Feishu sessions without manual intervention. (#6680) by @qqqys
  • The composer toolbar now displays the current Git branch as a chip so you always know which branch you're working on. (#6725) by @han-dreamer
  • Foreground shell commands now respect a configurable default timeout, preventing long-running commands from blocking indefinitely. (#6628) by @Nas01010101
  • Both the TypeScript and Python SDKs now expose transport selection and query options for finer control over daemon communication. (#6491) by @juhuan
  • The web shell session sidebar is now configurable, letting embedders choose which session metadata and actions to display. (#6750) by @dreamWB
  • Workspace transcript reader now provides persisted conversation history per workspace for server-side session browsing. (#6740) by @doudouOUC
  • Session groups in the web shell now support custom Hex color codes for easier visual organization. (#6752) by @samuelhsin
  • The composer model selector has been redesigned with clearer model metadata and faster switching. (#6758) by @dreamWB
  • Code review now includes procedural correctness checks, adjustable effort levels, and guardrails that verify findings before posting. (#6711) by @wenshao
  • Multi-workspace split view now supports cross-workspace sessions, workspace labels, and a responsive layout for side-by-side editing. (#6746) by @wenshao
  • Scheduled tasks from all workspaces are now aggregated into a single view in the web shell for easier monitoring. (#6759) by @wenshao
  • The composer now accepts custom placeholder text, allowing embedders to show context-specific prompts to users. (#6765) by @dreamWB
  • Release notes are now drafted with AI assistance, summarizing changes from the full commit range into categorized, user-facing bullets. (#6756) by @yiliang114
  • Web shell now ships a shadcn-based UI foundation with consistent design tokens and accessible component primitives. (#6760) by @ytahdn
  • Sub-agent activity is now shown as a chronological transcript with a parallel-agent timeline for easier multi-task inspection. (#6772) by @wenshao
  • The CLI can now start, stop, and list daemon channel workers at runtime without restarting the daemon process. (#6741) by @doudouOUC
  • Persisted conversation transcripts are now bounded to prevent unbounded disk growth. (#6769) by @doudouOUC
  • Web shell fires a callback when a new session is created, enabling custom integrations. (#6703) by @ytahdn
  • Skill installation paths are now exposed so users can see where skills are stored. (#6811) by @callmeYe
  • Multi-workspace sidebar redesigned with a cleaner, more modern layout. (#6804) by @ytahdn
  • Settings page refreshed with a modern component library for a polished look and feel. (#6817) by @ytahdn
  • User-scope settings can now be edited directly in the panel, with in-panel model management. (#6768) by @wenshao
  • Rewind and shell actions now work across multiple workspaces. (#6826) by @doudouOUC
  • Workspaces can now be removed at runtime without restarting the server. (#6745) by @doudouOUC
  • Code review now captures untracked files, resolves anchors from snippets, and gates posting in code. (#6771) by @wenshao
  • PR triage comments now include a confidence score, sequence diagram, files overview, and review footer. (#6789) by @wenshao
  • Explore subagent now inherits the main model by default instead of using a fixed smaller model. (#6807) by @tanzhenxin
  • Daemon status now reports model API error counts and retry metrics. (#6837) by @wenshao
  • New API endpoint lets you toggle workspace skills programmatically. (#6816) by @callmeYe
  • Added xAI Grok as a built-in model provider preset. (#6805) by @TianYuan1024
  • Extension management upgraded to v2 with improved install, update, and removal flows. (#6825) by @doudouOUC
  • Voice input is now qualified per workspace for better multi-workspace support. (#6839) by @doudouOUC
  • Session export is now workspace-qualified so exports stay organized across workspaces. (#6844) by @doudouOUC
  • Markdown tables in web shell now show row, column, and cell selection statistics. (#6838) by @jifeng

Bug Fixes

  • YOLO approval mode is no longer silently disabled when the model enters plan mode. (#6630) by @Nas01010101
  • Approval mode UI labels and notices are now localized, preventing mixed-language output when cycling modes with Shift+Tab in non-English interfaces. (#6592) by @han-dreamer
  • Channel delivery now filters out nested subagent output, preventing intermediate research reports from being sent to messaging platforms before the root agent's final answer. (#6696) by @qqqys
  • Raised prepared npm package size limit from 80 MB to 96 MB to accommodate natural growth and unblock Docker sandbox builds. (#6691) by @qwen-code-dev-bot
  • Fixed Docker sandbox networking for protocol tag retry tests, enabling CLI to reach test servers via host.docker.internal when running in container sandbox mode. (#6692) by @qwen-code-dev-bot
  • Fixed cursor position being incorrectly overridden when set to the start of a line in VS Code. (#2971) by @chinesepowered
  • Fixes out-of-memory crashes on exit during long interactive sessions by running periodic memory-pressure checks even when no tool calls occur. (#6682) by @yiliang114
  • Reduces token usage in mobile UI dumps by stripping bounds attributes with negative coordinates for partially off-screen elements. (#6624) by @chinesepowered
  • Fixes leaked protocol tags in responses by discarding and retrying invalid assistant turns during max-token escalation and continuation recovery. (#6683) by @yiliang114
  • Updates test expectations to match the new automated PR review workflow timeout values, resolving continuous integration failures. (#6720) by @yiliang114
  • Improves plan mode reliability by returning a clear error response when non-read-only tools are blocked, preventing the model from attempting workarounds. (#6667) by @Alex-ai-future
  • Adds an Approve button to the /mcp server detail view, allowing users to approve pending or previously rejected workspace servers. (#6518) by @LaZzyMan
  • Fixes remote MCP connection failures by preserving URL query parameters and fragments that end with a trailing slash during normalization. (#6587) by @VectorPeak
  • Fixes subagent startup failures by restricting template placeholders to valid identifiers, treating numeric patterns like ${0} as literal text. (#6672) by @ksws00684315
  • When running as an ACP agent, the user's typed instruction is now placed after attached file content so models prioritize the actual request. (#6607) by @kaymeer
  • The ACP readTextFile fallback now rejects fractional line and limit values, returning consistent invalid parameter errors for malformed read windows. (#6704) by @VectorPeak
  • The Add Workspace dialog now respects light and dark themes, and multi-workspace session lists restore full row features and per-session actions. (#6705) by @wenshao
  • DingTalk Stream connections are now treated as ready when the socket is open, preventing healthy sessions from being disconnected due to missing registration frames. (#6715) by @qqqys
  • Trusted non-primary workspaces can now update session pin, group, and color state via a new workspace-scoped organization endpoint. (#6724) by @doudouOUC
  • Claude Opus 4.6, 4.7, and 4.8 models now default to a 1M context window and 128K output limit, preventing premature compaction. (#6718) by @yiliang114
  • Clipboard image pasting now works correctly in standalone desktop builds. (#6708) by @zjunothing
  • Saved memory instructions are now refreshed immediately after using the remember command. (#6497) by @han-dreamer
  • Goal evaluation is now lifecycle-safe, preventing errors during session teardown. (#6681) by @qqqys
  • Managed memory entries are now preserved during microcompaction instead of being dropped. (#6714) by @yiliang114
  • Claude output token limits now use decimal values for more accurate context budgeting. (#6735) by @yiliang114
  • Model and approval-mode changes now apply correctly to non-primary workspace sessions in the web shell. (#6737) by @wenshao
  • The agent no longer crashes when receiving repeated invalid model streams and recovers gracefully. (#6712) by @yiliang114
  • OAuth authentication for MCP servers now recovers automatically after an HTTP 401 response. (#6732) by @yiliang114
  • Inline tag tooltips in the web shell no longer appear as duplicates. (#6729) by @dreamWB
  • Goal judge verdicts now ignore reasoning content and evaluate only the final answer. (#6738) by @qqqys
  • The Scheduled Tasks dialog now shows correct tag icons instead of stale references. (#6748) by @wenshao
  • The Git branch chip in the composer no longer pushes toolbar controls off-screen on narrow windows. (#6753) by @wenshao
  • Chat recording failures are now persisted and surfaced to the user instead of failing silently. (#6743) by @doudouOUC
  • Malformed streamed responses from the model are now retried automatically. (#6754) by @yiliang114
  • When plan mode blocks write actions the agent is guided to use read-only tools instead of stopping. (#6764) by @Alex-ai-future
  • Feishu credentials are now validated before starting the WebSocket connection, preventing silent failures. (#6780) by @BenGuanRan
  • Desktop release notes are now truncated to avoid oversized payloads in CI. (#6792) by @DragonnZhang
  • Session actions are now routed to the correct owning workspace in multi-workspace setups. (#6798) by @doudouOUC
  • The web UI now links to the workspace-local SDK package, unblocking SDK publishing. (#6823) by @qwen-code-dev-bot
  • Code review no longer drops live blockers and now verifies that new tests actually gate the changed code. (#6790) by @wenshao
  • Slash-command output in channels is now visually distinguished from regular messages. (#6818) by @qqqys
  • Packaged dialog styles are restored under React 18 in the web shell. (#6827) by @ytahdn
  • Reasoning duration displays now show more accurate and refined timing information. (#6793) by @tanzhenxin
  • Session continue, language selection, and artifact actions are now routed to the correct workspace owner. (#6833) by @doudouOUC
  • LRU cache entries are now correctly reordered on access even when the stored value is falsy. (#6787) by @chinesepowered
  • The latest-active timestamp for sessions is now computed from the real activity time, not the current wall clock. (#6834) by @chinesepowered
  • Rewrites queued while waiting for pending rewrites to finish are now fully drained before proceeding. (#6800) by @chinesepowered
  • The LLM rewriter now limits its output history to the configured context turn window. (#6799) by @chinesepowered
  • Only a trailing .git suffix is stripped from GitHub repo names, preserving internal .git segments. (#6797) by @chinesepowered
  • Dotfiles such as .eslintrc are now detected and assigned the correct language from their file path. (#6785) by @chinesepowered
  • Fixed a security issue where angle brackets in insight report data could break out of script contexts. (#6802) by @chinesepowered
  • Review chunk agents now receive properly constructed prompts so they no longer run without context. (#6840) by @wenshao
  • Reintroduced retry logic for malformed streaming responses with more precise detection to avoid false positives. (#6794) by @yiliang114
  • Review coverage is now verified using the test harness's own records for accurate results. (#6843) by @wenshao
  • Increased the browser daemon bundle size limit to 156 KB to accommodate larger builds. (#6852) by @qwen-code-dev-bot

Performance

  • Improved startup performance by lazy-loading the tree-sitter parser runtime. (#6747) by @dexhunter
  • Reduced the number of Git snapshot processes spawned during sessions for better performance. (#6784) by @dexhunter

Documentation

  • Development workflow now includes a bounded self-audit step between build and review, requiring authors to verify changes with full context before declaring work complete. (#6685) by @wenshao
  • Corrected inaccurate token limit comment and fixed typos in core package code comments with no behavior changes. (#6698) by @chinesepowered

Internal Changes

  • Increases the default automated PR review timeout to 180 minutes and allows overrides up to 240 minutes to prevent timeouts on large pull requests. (#6706) by @wenshao
  • Removed obsolete DingTalk planning integration artifacts. (#6722) by @qqqys
  • Reverted the malformed streamed response retry logic due to issues. (#6783) by @wenshao
  • Stabilized end-to-end test cases for tool control and subagent scenarios. (#6803) by @yiliang114
  • Removed a flaky headless child-process recording test. (#6830) by @yiliang114
  • Review test-efficacy probes now run in isolated disposable worktrees. (#6836) by @wenshao
  • Shared a common worktree path helper across review probes and improved stale worktree cleanup. (#6841) by @wenshao

New Contributors

  • @juhuan made their first contribution in #6492
  • @ksws00684315 made their first contribution in #6672
  • @kaymeer made their first contribution in #6607
  • @destire-mio made their first contribution in #6709
  • @yanchenko made their first contribution in #6489
  • @ever-o made their first contribution in #6537

Full Changelog: https://github.com/QwenLM/qwen-code/compare/v0.19.9...v0.19.10

0.19.9 - 2026-07-10

Added

  • memory: make background memory agent timeouts configurable (#6459)
  • cli: Add session owner index for workspace runtimes (#6540)
  • web-shell: polish stats table layout and todo panel UI (#6559)
  • cli: List persisted sessions for trusted workspaces (#6558)
  • core: render PDF pages to images when text extraction overflows or fails (#6585)
  • scheduled-tasks: add isolated run mode via create_sub_session tool (#6535)
  • cli: VP mode — inline thought expand on click + auto-hiding scrollbar (#6079)
  • review: post Suggestion findings as inline comments (#6593)
  • daemon: persist session artifacts across restarts (#6557)
  • cli: Add channel worker settings reload for serve --channel (#6598)
  • web-shell: add bottom status items (#6613)
  • cli: Add workspace-qualified core REST routes (#6567)
  • add qwen update and /update commands with auto-update support (#5780)
  • tui: Ctrl+O frozen transcript view and unified tool output rendering (#5666)
  • web-shell: add assistant turn footer slot (#6611)
  • scheduled-tasks: gate an isolated run behind a precondition (#6619)
  • cli: List archived and organized sessions for non-primary workspaces (#6631)
  • web-shell: add context mention customization (#6578)
  • daemon: expose session runtime status (#6645)
  • web-shell: add collapse/expand toggle to AskUserQuestion panel (#6588)
  • cli: allow long /goal conditions (#6665)
  • channels: support webhook-triggered channel tasks (#6495)
  • review: give every line of a large diff an accountable reviewer (#6612)
  • web-shell: improve markdown table readability (#6626)
  • web-shell: workspace management sidebar with dynamic registration (daemon multi-workspace phase 4) (#6625)
  • serve: Add cursor-paged transcript replay endpoint (#6525)
  • core: add forceGlobalCacheScope for Anthropic proxy providers (#6643)
  • qqbot: group message handling and cron-msg-experimental (#6457)
  • daemon: record & query sub-session parentSessionId; drop isolated scheduled-task mode (#6676)

Fixed

  • session: detect and mark broken history chains instead of silently truncating (#6502)
  • cli: prefer command name match over alias match regardless of recentScore (#6504)
  • channels: add chat payload diagnostics (#6539)
  • core: configurable vision bridge timeout + retry with fresh budget (#6541)
  • shell: avoid self-kill from pgrep selectors (#6544)
  • extension: clean tempDir before fallback git clone on Windows (#6545)
  • cli: align memory dialog with managed memory (#6434)
  • daemon: surface workspace memory task error details (#6431)
  • serve: stop cdp-mcp-command reading process.env directly (#6562)
  • mobile-mcp: strip bounds from UI hierarchy dump (#6568)
  • web-shell: make dialog backdrop z-index configurable (#6572)
  • ci: add retry logic to VSCode IDE Companion publish steps (#6574)
  • ci: detect silent triage failures with empty-response check (#6566)
  • cli: forward user input to MCP prompts with no declared arguments (#6571)
  • cua-driver: complete coordinate normalization for zoom/scroll/mouse tools (#6610)
  • channels: align memory access with channel gates (#6620)
  • vscode: normalize NOTICES.txt line endings to LF (#6634)
  • web-shell: align split view chat interactions (#6633)
  • cli: stabilize flaky UI tests (#6622)
  • mobile-mcp: reject out-of-range normalized coordinates (#6656)
  • channels: return only final ACP response text (#6615)
  • mobile-mcp: coord-norm audit fixes for 0.1.3 (#6659)
  • triage: require explicit defer comment and prevent hygiene-based defer on re-runs (#6652)
  • cli,core: Restore default debug log file output (#6605)
  • sdk: escalate process abort termination (#6653)
  • core: honor NO_PROXY for model requests (#6640)
  • core: apply cron step to a single starting value (N/step) (#6627)
  • channels: enable DingTalk stream keepalive (#6668)
  • dingtalk: preserve markdown tables (#6673)
  • channels: cap channel memory recall prompt (#6617)
  • core: fix tool_use/tool_result pairing for Anthropic-compatible providers (#6651)
  • channels: manage stale DingTalk Stream connections (#6675)
  • core: clamp max_tokens to the context window; retire the output reservation (#6556)
  • web-shell: polyfill Range layout APIs in tests (#6677)
  • core: retry leaked protocol turns (#6603)
  • release: raise package size budget to 85 MiB (#6688)
  • interactive: configure Docker sandbox networking for protocol tag retry test (#6689)

Performance

  • core: add pure-ASCII fast path to text token estimation (#6551)

Documentation

  • fix model-provider config shape and refresh feature/setting drift (#6552)
  • core: fix typos in ide notification comments (#6623)
  • document tools.disabled and tools.visible settings (#6641)
  • channels: add setup screenshots to WeCom robot guide (#6648)

Other

  • Stop repeated subagent tool-call loops (#6543)
  • Gate browser automation MCP on external adapter (#6472)
  • chore(core): remove stale refreshStartupContextReminder mocks from tool-search tests (#6423)
  • ci(autofix): Add single-target scheduler (#6547)
  • Add harness infrastructure for web-shell package (#6517)
  • Fix workspace skills for disabled extensions and ACP preheat (#6534)
  • Fix long session timeline scrolling (#6526)
  • Support voiceBridge for ACP audio prompts (#6576)
  • ci(autofix): per-issue concurrency, route cancel-in-progress, assigned trigger (#6609)
  • chore(cua-driver): update version refs to 0.7.1 + add fix doc (#6616)
  • ci: route full CI follow-up jobs to selected runner (#6608)
  • test(core): stabilize file history eviction test (#6637)
  • test(cli): isolate cli entry fallback fixture (#6658)
  • ci: add suspicious comment attachment guard (#6599)
  • Bound glob result collection (#6618)
  • test(mobile-mcp): fix coord-norm tests for 0.1.3 (#6664)

0.19.8 - 2026-07-08

Added

  • cli: Add serve env isolation and total admission (#6416)
  • cli: review auto-generated skills with an inline preview, editor handoff, and an in-dialog off switch (#6393)
  • cli: Show permission mode badge in footer for DEFAULT mode (#6498)
  • serve: Bound replay snapshot history (#6482)
  • web-shell: restore the full composer in split-view panes (#6510)
  • hooks: inject background tasks and cron jobs status into Stop/SubagentStop hook payloads (#6531)
  • cli: Enable multi-workspace session routing (#6511)
  • cli: auto-retry next port when serve port is in use (#6513)
  • extension file reload — watch for plugin changes and hot-reload runtime (#6347)
  • channels: add dmPolicy config to disable private/DM messages (#6521)
  • web-shell: expose external split controls (#6523)
  • core: add working_dir to the Agent tool for pinning subagents to an existing worktree (#6456)
  • autofix: extend review loop to all dev-bot PRs, add real-time triggers (#6528)

Fixed

  • core: reject fractional LSP limit inputs (#6455)
  • core: Match hook display-name matchers to tool ids (#6373)
  • web-shell: hide sidebar settings text when width is insufficient (#6494)
  • web-shell: count daemon sessions in Daemon Status usage dashboard (#6493)
  • channel: Relay ACP permission requests (#6446)
  • core: reject Windows-style workspace artifact paths (#6483)
  • cli: show file path in compact tool summary for single collapsible tools (#6448)
  • cua-driver: migrate Windows scripts + README rewrite (#6515)
  • cli: bound the live streaming-table pending height (fix scroll-to-top lock, stall-then-dump, header flash) (#6421)
  • cli: clean up IDE client after deferred timeout (#6509)
  • web-shell: prevent sidebar footer overflow (#6522)
  • web-shell: refine markdown table interactions (#6500)
  • web-shell: i18n for ~43 hardcoded English strings across 15 files (#6516)
  • cli: keep status line on session model (#6514)
  • cli: allow approval-mode changes without bearer token (#6527)
  • memory: allow forget to remove user managed memory (#6432)
  • core: omit deprecated temperature param for Claude 4.8+ (#6520)
  • core: detect non-SSE HTTP 200 responses in OpenAI streaming pipeline (#6466)
  • scripts: handle missing NPM dist-tags gracefully in release versioning (#6476) (#6481)
  • cli: fixed-width elapsed time below one minute to stop status-line jitter (#6533)
  • memory: give each linked git worktree its own auto-memory root (#6462)
  • cli: unblock /clear after task cancellation and surface the blocked reason (#6499)
  • web-shell: stabilize slash command i18n in split-view panes (#6546)

Documentation

  • channels: add WeCom to channels overview (#6490)

0.19.7 - 2026-07-07

Added

  • review: route suggestion-level findings to an updatable PR comment (#5786)
  • serve: Add runtime.activity fields to daemon status API (#6270)
  • web-shell: add a daemon status page backed by GET /daemon/status (#6272)
  • web-shell: add MCP mentions and iconized @ references (#6279)
  • web-shell: manage sessions from the sidebar (archive, unarchive, delete) (#6293)
  • daemon: Add session export endpoint (#6297)
  • acp: advertise vision-bridge image capability in initialize response (#6269)
  • web-shell: support compact echarts full data blocks (#6232)
  • acp: Batch session load replay (#6309)
  • web-shell: add custom at mention panel (#6242)
  • acp-bridge: Add EventBus subscriber byte cap (#6314)
  • web-shell: time-series metrics charts on Daemon Status (#6307)
  • daemon: Add session organization (#6305)
  • cli: Surface daemon prompt queue status (#6325)
  • scheduler: opt-in per-tool-call execution timeout (#6124)
  • web-shell: add onSessionChange and onSubmitBefore callbacks (#6333)
  • core: stabilize tool schema declaration order (#6339)
  • core: model fallback chain — auto-switch to backup models on overload (#6273)
  • cli: support multi-folder workspaces in file system boundary checks (#6278)
  • web-shell: support icon chips for mention tags (#6337)
  • LSP Server support hot reload (#5953)
  • cli: Add large pipe frame measurement (#6335)
  • web-shell: named session groups and color tags in the sidebar (#6350)
  • web-shell: add a Scheduled Tasks management page (#6348)
  • web-shell: show Settings and Daemon Status as an in-place panel (#6341)
  • web-shell: add token-usage analytics dashboard to Daemon Status (#6388)
  • cli: Add Phase 1 workspace runtime registry (#6394)
  • core: surface PreToolUse hook 'ask' as a TUI confirmation (#5629)
  • review: add issue-fidelity and root-cause ownership gate to /review (#6395)
  • cli: Add Phase 2a workspace foundation (#6410)
  • web-shell: add Session Overview panel and in-window split view (#6400)
  • cli: add --project and --global flags to /model for per-project model persistence (#6060)
  • core: add maxSubAgents setting to limit parallel sub-agent count (#6354)
  • scheduled-tasks: run each task in its own dedicated, named session (#6389)
  • cli: support stacked slash-skill invocations (#6361)
  • core: add Tool(param:value) permission syntax for parameter-level access control (#6106)
  • core: add tools.visible config for selective deferred-tool visibility at startup (#6372)
  • web-shell: add Qwen logo beside the sidebar new-chat button (#6437)
  • web-shell: add column reorder, resize, and freeze controls to markdown table (#6444)
  • channels: add WeCom intelligent robot channel (#6436)
  • web-shell: unify scheduled task sessions — bind chat-created tasks + clock icon (#6453)

Changed

  • core: centralize extension runtime refresh (#6152)

Fixed

  • triage: strengthen PR gate with batch detection, problem existence check, and red flag patterns (#5723)
  • autofix: unconditionally restore tracked files before branch checkout (#6281) (#6286)
  • vscode: keep auth quick inputs open on focus loss (#6274)
  • cache: preserve tools prefix in side-query for Anthropic prompt-cache hits (#6225)
  • core: give Stop-hook continuations a fresh per-turn tool-call budget; make the cap configurable (#6238)
  • web-shell: use theme color for @ group titles (#6294)
  • acp: pass per-session settings explicitly instead of racing on this.settings (#6292)
  • core: improve debug txt diagnostics (#6277)
  • ci: require maintainer-applied autofix/approved label for tier-1 fast-path (#6276)
  • auth: prevent persistent 401 after API key change (#6284)
  • cli: stream long responses into scrollback to stop scroll-to-top lock (#6170)
  • qqbot: streaming idle-flush with tool-call and stale-callback protection (#6204)
  • openai: preserve descriptionless tools (#6243)
  • core: enforce agent concurrency cap on foreground sub-agents (#6300)
  • ci: Stop review bots for closed PRs (#6304)
  • core: skip abbreviations in multiple_sentences filter (#6077) (#6193)
  • ci: skip stale PR review runs (#6313)
  • core: treat request timeout of 0 as disabled instead of aborting immediately (#6288)
  • serve: resolve false auth warning in preflight when API key is set via settings (#6296)
  • core: treat @-attached files as read for prior-read enforcement (#6295)
  • cli: preserve partial remote input JSONL records (#6317)
  • core: disable qwen thinking via chat_template_kwargs on non-DashScope servers (#6271)
  • web-shell: keep skill slash commands after starting a new session (#6319)
  • web-shell: localize built-in command and skill descriptions in the slash menu (#6326)
  • desktop: enforce transform_data isolation (#6285)
  • core: skip no-op max_tokens escalation (#6234)
  • core: avoid null OpenAPI schema types (#6323)
  • core: preserve OpenAI reasoning as raw thoughts (#6192)
  • core: add UTF-8 prefix for cmd.exe on Windows (#6216)
  • cli: allow queued input during compression (#6336)
  • web-shell: finalize deferred gated submissions (#6342)
  • cli: smoother live streaming preview — drop "generating more" cue, hold back partial table rows (#6340)
  • desktop: preserve glued automation history records (#6344)
  • web-shell: suppress stale pending prompt refresh errors (#6352)
  • web-shell: constrain virtual scroll rows (#6362)
  • cli: Allow ACP local fallback reads from /tmp (#6370)
  • core: default context windows to 200k (#6387)
  • triage: exclude test files from core module size gate and distinguish feat from refactor (#6369)
  • cli: Keep model picker entries contiguous in short terminals (#6359)
  • core: Include request IDs in OpenAI error logs (#6379)
  • cli: ignore current review run in presubmit CI (#6397)
  • autofix: improve review addressing and verification (#6382)
  • core: require integer ReadFile pagination params (#6381)
  • core: resolve symlinks when matching conditional rules and skills (#6371)
  • web-shell: refine tool detail presentation (#6399)
  • core: preserve no-argument tool calls that stream an empty arguments string (#6250)
  • cli: use EnvHttpProxyAgent in channel proxy to respect NO_PROXY (#6401) (#6405)
  • daemon: Handle settings reload events outside transcript (#6407)
  • memory: don't advance AutoMemory extract cursor when the agent makes zero tool calls (#6398)
  • core: gate image payload replacement behind threshold (#6380)
  • review: remove qwen-code-specific core-infra gate from bundled /review (#6412)
  • web-shell: polish scheduled task timeline UI (#6386)
  • cli: smoother streaming table rendering (#6345)
  • core: Gate large PDF text extraction (#6409)
  • core: allow rewind after compressed history (#6358)
  • core: align monitor limit parameter schemas (#6413)
  • core: prevent KV-cache invalidation on tool_search by reordering reminderParts (#6420)
  • shell: avoid Unix pager default on Windows (#6390)
  • daemon: preserve user message source metadata (#6385)
  • core: prevent re-invoking loaded skill from appending duplicate content (#6430)
  • web-shell: keep split-view session list fresh and preserve panes across view switches (#6418)
  • web-shell: Improve user tags and mobile menu layout (#6441)
  • web-shell: keep errored turns expanded (#6424)
  • web-shell: clear stale floating todos (#6425)
  • web-shell: hide rotating loading phrase in split-view pane status (#6447)
  • core: Support large text range reads (#6404)
  • core: strip system-reminder blocks from session title and recap side-query prompts (#6435)
  • autofix: report review handoff failures (#6415)
  • monitor: preserve inherited git pager (#6429)
  • serve: classify interrupted model stream errors (#6422)
  • web-shell: refine tool call summaries (#6450)
  • web-shell: split-view pane fixes (remove "current" badge, clear composer on send) (#6454)

Performance

  • glob: prune ignored directories during traversal, not just post-filter (#6123)
  • cli: cache LoadedSettings per workspace with stat-based invalidation (#6310)
  • ci: optimize autofix pipeline — fast-track, skip duplicate build, scoped tests (#6315)
  • memoize skill scans, debounce sleep-inhibitor log, guard IDE readdir (#6155)
  • core: Add session start profiler (#6349)
  • cli: defer startup prefetch tasks (#6303)

Documentation

  • design: daemon side-channel coordination (A1/A2/A4/A5) (#4511)
  • fix skill invocation syntax and include Feishu in channel lists (#6320)
  • fix settings.json reference drift against schema (#6351)
  • web-shell: document chart renderer integration (#6353)
  • document PreToolUse hook permissionDecision "ask" behavior (#6411)
  • consolidate design docs and plans under docs/ (#6417)

Other

  • ci(audio): clarify macOS prebuild artifact suffix (#6275)
  • test(e2e): make fake OpenAI reachable from Docker sandbox (#6302)
  • test(core): cover full:false branch of recordAttachedFileRead for truncated @-attachments (#6324)
  • Notify model when extension capabilities change (#6245)
  • Restart stalled ACP bridge for channels (#6330)
  • Fix incorrect context window calculation for custom models (#6266)
  • [codex] add proactive channel loop tools (#6287)
  • ci(autofix): move agent prompts into a project skill (#6306)
  • test(core): keep context warning test aligned with default token limit (#6391)
  • Handle missing web-shell sessions without redirecting (#6357)
  • Avoid refreshing session activity on load (#6439)
  • Upgrade GitHub Actions for Node 24 compatibility (#5157)
  • [codex] add natural channel memory intents (#6376)

0.19.6 - 2026-07-03

Added

  • core: add dataviz bundled skill (#6198)
  • core: allow sub-agents to spawn nested sub-agents up to a configurable depth (#6189)
  • web-shell: add daemon UI support for vision model selection (#6209)
  • cua-driver: sync vendored cua-driver 0.6.8 → 0.7.0 (#6212)
  • scheduler: make recurring cron/loop job expiration configurable (#6173)
  • mobile-mcp: vendor mobile-mcp with opt-in 0-1000 relative coordinates (#6235)
  • web-shell: show the qwen-code version in the sidebar footer (#6222)
  • daemon: add session artifact APIs (#5895)
  • web-shell: display nested sub-agents as a tree in the tasks panel (#6239)
  • web-shell: improve slash command discovery (taller menu, group counts, fuzzy search) (#6267)
  • daemon: expose visionModelId in workspace provider status and web-shell model dialog (#6262)

Fixed

  • web-shell: cut mobile session-switch jank (memoized timeline signature, replay-first dispatch) (#6183)
  • resolve macOS seatbelt profile path from bundle dir, not chunks/ (#6172)
  • cli: add bootstrap fast paths (#6188)
  • core: Reduce multimodal history payload size (#6045)
  • core: prevent subagent crash when ${hook_context} placeholder has no hook configured (#6180)
  • scheduler: add opt-in per-tool-call execution timeout (#6136)
  • web-shell: keep the user-selectable wrapper out of flex layout (#6229)
  • core: raise stream idle timeout default and hint the env knob (#6107)
  • serve: respect disabled skill settings (#6223)
  • align vscode-ide-companion curly rule with root config (#6221)
  • qqbot: security hardening — gateway validation, atomic state, sanitized logging (#6200)
  • cua-driver: bump BAKED_VERSION to 0.7.0 (#6241)
  • web-shell: improve session restore and loading feedback (#6220)
  • avoid vsce secret scanner false positive on regex patterns (#6247)
  • web-shell: encode vision model picker selection & polish dispatch (#6236)
  • serve: Optimize daemon NDJSON stream handling (#6263)
  • qqbot: markdown-first send, replyMsgId TTL, and dead code removal (#6201)

Documentation

  • correct stale CLI flags/keybinding and document model.reasoningEffort (#6219)

Other

  • [codex] Revert GLM tagged thinking parsing for DashScope (#6248)
  • Add sessionless workspace memory forget and dream (#6227)
  • ci(autofix): restore sandbox image flow (#6261)

0.19.5 - 2026-07-02

Added

  • cli: Harden daemon-managed channel worker (#6098)
  • serve: support HTTPS/TLS via --tls-cert and --tls-key flags (#6032)
  • cli: show description and level in /skills ACP output (#6117)
  • core,cli: unified reasoning effort with /effort command (#6072)
  • core: Add leader approval for plan-required teammates (#6138)
  • channels: add DingTalk proactive send for channel loops (#6174)
  • channels: add identity and task lifecycle metadata (#6105)
  • core: add retry with backoff for MCP capability discovery (#6158)
  • channels: add listSessions to ChannelAgentBridge (#6182)
  • channels: show lifecycle status in adapters (#6114)
  • web-shell: overhaul list-dialog interaction, keyboard nav & a11y (#6128)
  • cli: add credential redaction for worker stderr forwarding (#6146)

Fixed

  • web-shell: defer session creation until first prompt (#6066)
  • cli: clip live markdown to the viewport to stop non-VP scrollback replay (#6081)
  • cli: yield to React after addItem to reduce input lag (#6059)
  • diff: show whitespace-only edits instead of 'No changes detected' (#6141)
  • ci: grant PR review precheck permissions (#6147)
  • ci: list workflow comments with GET (#6148)
  • ci: use CI_BOT_PAT for precheck comment on fork PRs (#6151)
  • cli: Avoid blocking WebUI sessions on MCP readiness (#6161)
  • ci: allow prechecked fork PR automation (#6160)
  • ci: fall back to latest autofix sandbox image (#6159)
  • ci: create precheck comments via REST (#6156)
  • web-shell: show skill slash commands (e.g. /review) before first prompt (#6153)
  • web-shell: only show scroll-to-bottom button when content overflows (#6150)
  • web-shell: improve disconnected composer handling (#6166)
  • ci: diagnose autofix publish credentials (#6162)
  • release: reduce npm package scan triggers (#6164)
  • channels: replace setTimeout(0) drain with turn_complete SSE barrier (#6165)
  • lazy-load memory prompt when indexes are empty (#6097) (#6104)
  • cli: skip MCP approval dialogs in YOLO mode (#6177)
  • serve: keep skill slash commands available when the ACP child is unavailable (#6169)
  • web-shell: polish session timeline rail (#6171)
  • web-shell: mobile UX — safe areas, overscroll, native-app feel (#6142)
  • cli: drop /effort tier autocompletion for an argument-hint placeholder (#6179)
  • ci: limit fork PR precheck to safety signals (#6178)

Documentation

  • document model/auth settings, /model --vision, and --safe-mode (#6028)
  • document the /config slash command (#6145)

Other

  • ci: add fork PR safety precheck (#5926)
  • ci: persist npm cache on self-hosted runners (#6130)
  • Add compact session timeline rail (#6078)
  • ci: Add prepare-pr skill for autofix PR bodies (#6184)
  • test: stabilize plan mode tool-control E2E (#6176)

0.19.4 - 2026-07-01

Added

  • core: add configurable auto-compact threshold and Stop hook context usage (#4025) (#5868)
  • core,cli,sdk: resume an interrupted turn without a synthetic "continue" message (#5030)
  • desktop: voice dictation in the desktop app (#5856)
  • browser-ext: revive Chrome extension via daemon-direct architecture (#5777)
  • loop: inject a .qwen/loop.md task file at fire time via sentinels (#5890)
  • channels: qwen tag — RFC + Phase 0 (multiplayer channel-resident agent) (#5888)
  • channels: Add channel agent bridge abstraction (#5978)
  • core: add --insecure flag to skip TLS verification for self-signed endpoints (#3535) (#5962)
  • cli: add --safe-mode flag to disable all customizations for troubleshooting (#4943)
  • daemon: support @extension mentions (#6008)
  • web-shell: friendlier Esc interruption + queued-prompt UX (#6025)
  • daemon,sdk: resumable /acp session stream (Last-Event-ID) + opt-in SDK transports export (#5852)
  • ui: add ui.history.collapsePreviewCount to show last N turns when resuming collapsed sessions (#5848)
  • core: support glob patterns in mcp.allowed and mcp.excluded (#6012)
  • loop: add autonomous mode for a bare /loop (#5991)
  • web-shell: queue prompts while turns are running (#6005)
  • web-shell: add mobile sidebar drawer with session list (#6003)
  • cli: support inline one-shot model override in /model (#5967) (#6022)
  • cli: Add daemon-managed channel worker for serve --channel (#6031)
  • serve: add sessionless workspace remember (#5884)
  • ui: add mouse click & hover in alternate-screen mode (#6011)
  • web-shell: add browser tab favicon (#6091)
  • cli: add /config key=value slash command to set any setting from the prompt (#5773)
  • core: Disallow plan lifecycle tools in subagents (#6087)
  • channel: add channel loop support (#6073)
  • web-shell: polish chat UI and table rendering (#6099)
  • auto-mode: add classifyAllShell setting to route all shell commands through classifier (#6040)
  • channels: add group history backfill (#6074)
  • daemon: Add session archive support (#6058)
  • cli: add tabbed Settings dialog with Status and Stats tabs (#6044)
  • core: add configurable idle timeout for MCP tool calls (#6061)

Changed

  • cli: Remove serve bridge re-export shims (#5955)
  • review: drop deterministic-analysis and autofix steps (#6092)

Fixed

  • core: halt repeated shell inspection variants (#5944)
  • cli: auto-select custom input on Enter in multi-select questions (#5791)
  • core: only spawn memory recall when auto-memory is enabled (#5963)
  • release: use relative postinstall patch dir (#5973)
  • standalone: Route serve shim through cli-entry (#5977)
  • ui: display output tokens instead of cumulative API throughput for subagents (#5972)
  • cli: Avoid ACP runtime preload on serve fast path (#5989)
  • web-shell: prefer raw file diffs in tool output (#5992)
  • web-shell: improve follow-up suggestion handling (#5996)
  • ci: cover release integration regressions (#5994)
  • core: filter thought parts from Stop hook last_assistant_message (#6009)
  • cli: fix thought viewer truncation, layout gaps, and choppy scrolling in VP mode (#6002)
  • cli: Guard serve fast-path bundle closure (#5995)
  • cli: make the non-VP transcript scrollable during multi-agent runs (#6015)
  • core: Allow subagents to exit plan mode (#6026)
  • ci: stabilize merge queue checks (#6056)
  • cli: Keep serve health responsive before runtime load (#6013)
  • cli: Handle ACP read_file for managed local paths (#6021)
  • ci: create isolated home before tests (#6071)
  • channels: structure DingTalk stream logs (#5998)
  • cli: Support Windows-style tilde paths (#6029)
  • cli: replace all emoji with Unicode text symbols in TUI rendering (#5999)
  • daemon: resolve ACP permission votes across connections (#5912)
  • cli: switch TUI prefix ✦→◆ to fix glyph overflow on some terminals (#5974)
  • core: Parse tagged thinking for GLM responses (#6033)
  • core: subtract reserved output tokens from context window for compression thresholds (#5957)
  • cli: validate ask_user_question TUI option input (#6042)
  • core: keep plan mode and require approval when plan gate is unavailable (#6046)
  • deps: clear critical runtime audit findings (#6065)
  • remove accidentally committed OpenClaw-Query-Submit submodule (#6109)
  • scripts: avoid shell injection in sandbox command detection (#6108)
  • web-shell: fix InsightProgress layout and clean up UI elements (#6115)
  • daemon: Route ACP images through the vision bridge (#6111)
  • ci: stabilize Windows loop tests (#6082)
  • cli: load browser MCP tools by default (#6006)
  • model: disambiguate vision model endpoints (#6070)

Documentation

  • daemon: refresh daemon docs for recent PRs (wave 2) (#5954)
  • telemetry: comprehensive documentation update to match current implementation (#5960)
  • qc-helper: add daemon mode docs and fix system settings path (#5981)
  • refresh settings, MCP glob, auth alias, and autonomous loop docs (#6090)

Other

  • ci(review): increase PR review timeout from 90 to 120 minutes (#5959)
  • ci: allow longer PR review timeout retries (#5961)
  • ci(autofix): loosen issue candidate filters so the agent finds work (#5860)
  • [codex] fix daemon specialized model filtering (#5993)
  • test(ci): stabilize cron interactive release check (#6016)
  • Sanitize subagent result tags (#6027)
  • Avoid full-history clones in OOM-prone paths (#6018)
  • Stop repeated invalid tool parameter loops in ACP (#6076)
  • ci(workflows): remind authors not to force-push active PRs (#6035)
  • Fix ACP daemon loop review follow-ups (#6085)
  • ci(autofix): fix scheduled and labeled issue triggers (#6080)
  • ci: stabilize actionlint on self-hosted runners (#6113)
  • [codex] Add explicit channel memory for messaging channels (#6051)
  • test(core): fix MCP idle timeout config stubs (#6120)

0.19.3 - 2026-06-28

Added

  • serve: Add daemon workspace voice and control APIs (#5765)
  • cli: Add skill usage stats (#5826)
  • memory: confirm auto-generated skills before persisting (#5616)
  • cli: Show model thinking intent in loading indicator (#5668)
  • core: decouple /remember from auto-extract, stop writing to QWEN.md (#5814)
  • web-shell: enhance assistant markdown tables with Excel-style interactions (#5650)
  • cli: enable built-in status line preset by default for new users (#5792)
  • config: map provider id to SDK protocol via providerProtocol (#5758) (#5793)
  • telemetry: Make sensitive span attribute limit configurable (#5804)
  • core: QWEN_STREAM_IDLE_TIMEOUT_MS env knob for the stream idle timeout (#5845)
  • cli: support a user-configurable keyterms file for voice dictation (#5817)
  • cli: simplify auto mode startup text and remove emoji (#4584) (#5824)
  • web-shell: show duration on finished thinking summary (#5864)
  • tui: partition tool display by type — collapse read/search, show mutation tools individually (#5661)
  • mcp: reconcile MCP servers live on settings change (#5561)
  • serve: query a single session's status by id (#5857)
  • core: make self-paced /loop lean on monitor/background-task notifications (#5844)
  • cli: tighten response timestamp consistency and tests (#5850)
  • core: add bundled extension creator skill (#5828)
  • cli: support @extension mention in input autocomplete (#5849)
  • cua-driver: vendor qwen-cua-driver with opt-in 01000 relative coordinates (#5896)
  • web-shell: polish chat UI (#5893)
  • telemetry: wire recordApiRequestBreakdown into endLLMRequestSpan (Phase 4c) (#5904)
  • web-shell: browse MCP server resources in the /mcp dialog (#5879)
  • web-shell: allow host to override streaming loading phrases (#5900)
  • web-shell: stream-highlight code blocks and fix fence-language aliases (#5869)
  • core: warn before foreground shell timeout (#5918)
  • web-shell: add manual toggle for enhanced markdown tables (#5917)
  • memory: add a git-shared team memory tier (#5886)
  • web-shell: add workspace session sidebar (#5931)
  • cli: add /model --vision for a fallback vision model (#5778)
  • cli: show scheduled task count in footer (#5921)
  • acp: support /cd command in ACP sessions (#5903)
  • channels: register Telegram bot command menu (#5919)
  • web-shell: add error boundaries so a render crash can't white-screen the embed (#5943)
  • web-shell: add mobile responsive view for TodoPanel (#5948)
  • web-shell: add 'voice' to ComposerToolbarAction for external visibility control (#5947)

Changed

  • cli: Split serve server routes (#5809)
  • cli: Split serve server assembly (#5937)

Fixed

  • core: allow web_fetch JSON fallback (#5660)
  • ide: validate QWEN_CODE_IDE_SERVER_PORT before reading lock file (#5805)
  • core: add streaming inactivity timeout to the OpenAI pipeline (#5827)
  • cli: prevent scroll snap-back and flicker in non-VP mode during multi-agent runs (#5799)
  • cli: cancel pending self-paced loop wakeups on user abort (#5808)
  • core: preserve reasoning_content when merging assistant turns (#5815)
  • web-shell: stabilize active prompt loading state (#5818)
  • cli: stop repeated duplicate provider responses (#5657)
  • web-shell: defer transcript-appending local commands while a turn streams (#5822)
  • packaging: bundle audio capture for mirror installs (#5747)
  • core: reject userinfo URLs in WebFetch validation (#5783)
  • cli: make alt+t expand thinking on macOS Option-compose terminals (#5872)
  • cli: show ⌥T instead of alt+T on macOS for thinking expansion (#5802)
  • cli: improve token speed accounting (#5811)
  • core: stream chat-compression side-query to survive gateway timeout (#5865)
  • web-shell: reword the Chinese tool-group summary (执行了 → 调用了) (#5876)
  • release: skip dist/node_modules when building standalone archives (#5878)
  • test: raise timeout for cold-import suites to stop CI flake (#5880)
  • core: tree-kill PTY shell tree on Windows to stop pwsh leak (#5873) (#5892)
  • core: ignore IDE configs from other workspaces (#5807)
  • cli: wrap tool call descriptions instead of truncating (#5891)
  • serve: reject negative cleanupPeriodDays values (#5906)
  • desktop: reject unsafe source slugs before deletion (#5829)
  • core: clear tool display after completion errors (#5916)
  • desktop: harden remaining source path validation (#5914)
  • core: preserve rewind parents after resume (#5923)
  • core: parse workflow stall env as decimal seconds (#5930)
  • cli: align MCP dialog border (#5935)
  • core: improve cron tool search intents (#5927)
  • core: silence unknown schema format warnings (#5915)
  • core: stop computer use driver when idle (#5925)
  • core: stop repeated truncated write_file/edit retries from looping (#5934)
  • core: preserve the selected model when re-applying a provider install plan (#5835)
  • serve: reject non-positive sessionRecapAwayThresholdMinutes values (#5945)
  • core: isolate Anthropic SDK abort listener leak with per-request child controllers (#5946)
  • desktop: normalize source slug validation errors (#5911)

Performance

  • cli: skip spawnSync wrapper for qwen serve (#5874)
  • cli: enable compile cache and defer getCliVersion for serve (#5938)

Documentation

  • add vertex-ai auth, missing commands, and qc-helper index entries (#5727)
  • add provider preset governance policy to CONTRIBUTING.md (#5631)

Other

  • ci: split platform test matrix into named jobs so PRs can enter the merge queue (#5833)
  • ci: give each CI job one home in the merge-queue flow (#5842)
  • Revert "feat(cli): Show model thinking intent in loading indicator" (#5846)
  • ci(release): make release flow merge-queue-safe and keep release PRs out of notes (#5832)
  • ci: add @qwen-code /resolve (#5779)
  • test(cli): add daemon startup benchmark (#5825)
  • ci(triage): run triage on the self-hosted ECS pool instead of GitHub-hosted (#5851)
  • ci: route the merge queue's Linux jobs onto ECS (#5854)
  • test(cli): raise i18n ToolMessage test timeout to 15s to stop merge-queue flake (#5858)
  • ci: take CodeQL and E2E off the per-merge push path (#5859)
  • ci(qwen-resolve): run the /resolve job on a hosted runner (#5862)
  • ci(qwen-resolve): support fork PRs and slim /resolve to conflict-only (#5870)
  • chore(cli): drop redundant home-directory startup warning (#5839)
  • ci: isolate per-run agent state for triage and PR review (#5885)
  • [codex] test(ci): cover post-merge review follow-ups (#5899)
  • Fix mid-input skill command completion (#5898)
  • Upgrade GitHub Actions to latest versions (#3683)

0.19.2 - 2026-06-24

Added

  • serve: Add remote LSP status route (#5741)
  • vision-bridge: transcribe images to text for text-only models (#5126)
  • core: add deterministic guards for destructive commands in auto mode (#5754)
  • cli: add extension operation polling (#5753)
  • cli: match MCP resources globally on bare @ and show full references (#5774)
  • cli: Add workspace permissions rules API (#5743)
  • serve: voice dictation over the daemon for the Web Shell (#5755)
  • voice: refine ASR transcripts with the fast model before insert (#5794)

Changed

  • web-shell: restructure chat UI (#5775)

Fixed

  • agent: cap fork turns and bubble fork permission prompts (#5737)
  • vscode: always show chat view in the Activity Bar sidebar (#5757)
  • cli: source /context token total from the per-session chat (#5764)
  • core: Disambiguate duplicate model display names (#5769)
  • cli: remove theme background fills from input box and user messages (#5772)
  • cli: stabilize VP mouse interactions (#5751)
  • vscode: clamp open file positions (#5711)
  • config: fall back to user env files (#5731)
  • core: require integer stop hook cap (#5667)
  • core: require integer microcompaction keep count (#5652)
  • core: Align MCP OAuth guidance and docs (#5589)
  • cli: replace emoji thinking/summary icons with Unicode text symbols (#5788)
  • cli: restore saved custom model IDs when re-entering the auth wizard (#5654)
  • daemon: Reject stale prompt client admission (#5784)
  • core: parse QWEN_SERVE_MCP_CLIENT_BUDGET strictly as a decimal integer (#5752)
  • sdk: self-heal stale clientId on invalid_client_id prompts (#5797)
  • cli: promote pasted image paths to attachments (#5803)
  • sdk: raise browser daemon bundle budget to 126 KiB (#5801)
  • cli: correctly map Claude MCP server transport types on import and in .mcp.json (#5812)

Performance

  • cli: Optimize serve daemon startup (#5785)

Documentation

  • fix config/command/auth drift and surface the model-providers page (#5735)

Other

  • ci: collapse PR checks into Ubuntu gate (#5767)
  • ci: harden Linux CI reliability (shallow ECS checkout + CodeQL timeout) (#5810)
  • Expose MCP resource read tool (#5781)
  • ci: move macOS/Windows tests and CodeQL off the per-PR path (#5813)

0.19.1 - 2026-06-23

Added

  • cli: match MCP resource completions by name and discover servers (#5733)

Changed

  • core: revert Protocol enum & model-identity decoupling (#5089) (#5745)

Fixed

  • cli: skip unusable A2UI configs (#5685)
  • cli: avoid duplicate ACP write BOM (#5688)
  • cli: enable /lsp in ACP mode (#5689)
  • core: require integer inline media byte limit (#5671)
  • cli: reject invalid session list cursors (#5709)
  • cli: reject unsupported extension scopes (#5714)
  • core: reject blank cron prompts (#5716)
  • cli: validate channel credential types (#5718)
  • cli: use high-contrast software cursor (#5720)
  • core: require integer compaction counts (#5646)
  • core: parse agent & workflow integer env vars strictly (#5679)
  • serve: validate list maxEntries as a positive integer (#5719)
  • workflows: validate runId before recursive prune delete (path-traversal dir wipe) (#5740)
  • triage: never auto-approve cross-repo refactor PRs (#5744)
  • cli: only paint theme background when it matches the terminal (#5746)

Other

  • ci: retry merge-ref checkout to fix transient "not our ref" failures (#5732)

0.19.0 - 2026-06-23

Added

  • lint: enforce kebab-case filenames with ESLint (#4797)
  • extensions: support archive install sources (#4909)
  • voice: voice dictation with native capture, streaming, and biasing (#5502)
  • revivable background sub-agents and subagent transcript TTL (#5556)
  • core: add Artifact tool to publish interactive HTML pages (#5557)
  • cli: add optional [HH:MM:SS] timestamp before each assistant turn (#5001)
  • tui: remove tool group borders and collapse completed tool results (#5003)
  • workflows: finish Dynamic Workflows port — resume, saved workflows, keyword trigger, notifications (#4721) (#5600)
  • web-shell: support daemon session branching (#5613)
  • cli: browse MCP server resources in the /mcp dialog (#5635)
  • core: default-on preserve_thinking for DashScope provider (#5637)
  • tui: add thinking block viewer with Alt+T expand/collapse (#5627)
  • desktop: show file preview in a resizable side panel instead of fullscreen (#5730)
  • core: respect configurable agent ignore files (#4653)
  • core: add fastOnly/voiceOnly flags to hide models from main model list (#5632)

Changed

  • cli: Rename serve files to kebab-case (#5592)
  • core: replace OpenRouter/Requesty provider classes with customHeaders in preset (#5539)
  • cli: Finish serve kebab-case filenames (#5604)
  • core: extract Protocol enum and decouple model identity from auth type (#5089)

Fixed

  • cli: render full resume preview history (#5565)
  • cli: fill content area background on wrapped input lines (#5568)
  • cli: fail non-interactive runs on loop detection (#5564)
  • core: respect zero OpenAI log file limit (#5569)
  • core: keep bare fast model on current auth (#5553)
  • cli: prefer command name over alias in slash completion ranking (#5577)
  • core: require confirmation when user manually enters plan mode (#5595)
  • core: always-on guard for consecutive identical tool calls (#5019) (#5573)
  • ci: harden tmux triage reporting (#5548)
  • voice: surface native recorder fallback so missing prebuilds aren't silent (#5605)
  • core: prevent GLM on DashScope from dropping web_fetch content (#5599)
  • core: backend-aware artifact publish confirmation + cancel handling (#5615)
  • cli: Fail dangling replayed tool calls (#5624)
  • voice: bundle native audio addon into standalone archives (#5628)
  • cli: harden ACP session list pagination params (#5618)
  • cli: parse serve rate limit env strictly (#5612)
  • core: parse API timeout env strictly (#5602)
  • serve: validate readText line limits (#5639)
  • core: escape backslashes and quotes in emacs ediff paths (#5630)
  • cli: detect USE_OPENAI auth when the model is set via QWEN_MODEL (#5647)
  • webui: stop auto-recreating session on user-initiated delete (#5633)
  • cli: keep settings v5 migration idempotent (#5676)
  • test: restore openai model selection in ACP set_config_option test (#5721)
  • test: isolate ACP integration agents via QWEN_HOME to end parallel-settings race (#5724)
  • test: make ACP set_config_option test use a deterministic openai provider model (#5728)
  • core: keep active runtime model in default getAllConfiguredModels listing (#5729)
  • core: remove redundant reportSuggestionUsage causing double-counted stats (#5684)
  • core: validate ask_user_question answer indexes (#5622)
  • daemon: Refresh workspace provider defaults (#5638)

Documentation

  • mcp: correct mcp add scope default (#5593)

Other

  • ci(release): Auto-publish VSCode companion after stable releases (#5572)
  • [codex] Fix legacy filename allowlist for kebab-case lint (#5578)
  • test(integration): add fake OpenAI server for no-AK daemon tests (#5560)
  • Fix native voice recorder retry after stop errors (#5609)
  • [codex] ci(triage): acknowledge slash triage requests (#5594)
  • [codex] Support artifact auto-open setting (#5617)
  • test(integration): run no-AK smoke tests on PRs (#5607)
  • ci: route in-repo PRs' Linux test to self-hosted runner (#5620)
  • ci(release): queue release failures for autofix (#5551)
  • ci(audio-capture): cross-compile darwin-x64 prebuild on arm64, drop macos-13 runner (#5643)
  • ci: harden self-hosted runner routing (follow-up to #5620 review) (#5644)
  • test(integration): skip qwen serve streaming suite under container sandbox (#5655)

0.18.5 - 2026-06-21

Added

  • core: add Requesty provider (#5478)
  • ci: on-demand tmux real-user testing for PRs (#5203)
  • mcp: support MCP resources and reliably surface prompts (#5544)

Fixed

  • core: require opt-in for plan mode prompt (#5433)
  • core: evaluate ignore files named with dot prefixes (#5458)
  • core: enforce shell directory workspace boundary (#5454)
  • core: validate lsp socket ports (#5493)
  • core: parse max output token env strictly (#5491)
  • core: detect providers by hostname (#5450)
  • cli: validate ACP glob max results (#5480)
  • core: allow dot-prefixed plans directories (#5460)
  • extensions: fetch http marketplaces with http client (#5452)
  • cli: parse FORCE_HYPERLINK strictly (#5489)
  • core: parse tool concurrency env strictly (#5496)
  • cli: enforce custom theme home boundary (#5456)
  • dingtalk: skip uppercase webhook reaction targets (#5466)
  • desktop: accept uppercase icon URL schemes (#5470)
  • cli: reject partial session size values (#5475)
  • telegram: clear typing intervals on disconnect (#5477)
  • cli: respect installation path boundaries (#5441)
  • accept uppercase endpoint URL schemes (#5443)
  • core: reject fractional computer-use integer strings (#5500)
  • core: match provider base URL slash variants (#5448)
  • cli: enforce temp path boundaries for at-file (#5446)
  • desktop: preserve uppercase favicon URLs (#5463)
  • desktop: parse NO_PROXY ports strictly (#5498)
  • serve: validate session reaper timeouts (#5484)
  • extensions: handle uppercase npm registry schemes (#5437)
  • core: add missing Token Plan models (qwen3.7-plus, glm-5.2, kimi-k2.7-code) (#5505)
  • cli: wire ACP model-invocable commands (#5504)
  • cli: reject partial cpu profile durations (#5486)
  • desktop: restore locale parity (#5537)
  • extension: accept uppercase URL schemes in Claude plugin sources (#5461)
  • desktop: parse server ports strictly (#5509)
  • desktop: validate generic oauth token responses (#5511)
  • core: don't treat an empty-parts message as a function call/response (#5494)
  • desktop: allow double dots in bundle filenames (#5515)
  • cli: handle truncated remote input files (#5473)
  • vscode: keep UNC paths absolute (#5542)
  • desktop: keep sibling paths absolute (#5517)
  • cli: allow dotfile paths in Web Shell sendFile (#5541)
  • cli: allow double dots in update archives (#5521)
  • desktop: separate transform data output lines (#5525)
  • desktop: handle Windows file mentions (#5523)
  • desktop: consolidate path boundary checks (#5545)
  • desktop: reject fractional transfer sizes (#5527)
  • cli: validate ACP file read windows (#5482)
  • extensions: accept uppercase marketplace source schemes (#5435)

Performance

  • core: read current git branch directly from .git instead of spawning git (#5432)

Documentation

  • triage: Add reuse-before-new-code review check (#5547)

Other

  • test(core): drop duplicate gitdiff untracked count case (#5468)
  • test(desktop): update blocked scheme open-url assertion (#5529)
  • test(core): wait for cron lock probe takeover (#5535)
  • test(desktop): align interceptor packaging contract (#5531)
  • test(desktop): enable feedback flag in permission tests (#5533)
  • ci(release): trigger CI from release branch pushes (#5543)
  • Use VS Code theme tokens for companion scrollbar (#5488)

0.18.4 - 2026-06-20

Added

  • serve: make ACP permission timeout configurable (#5260)
  • i18n: localize tool display names in TUI and web-shell badges (#5220)
  • serve: add daemon idle detection to GET /health?deep=true (#4934)
  • hooks: pass original API call ID (toolCallId) to hook system (#4918)
  • core,cli: Workflow tool token budget + per-run UI surfacing (P5) (#5231)
  • extensions: add i18n support for extension displayName and description (#5289)
  • loop: wire prompt-only /loop to self-paced wakeups (#5197)
  • loop: add second-resolution session wakeup engine (#5182)
  • desktop: compile macOS 26+ Liquid Glass Assets.car in brand-create (#5284)
  • channel: add QQ Bot (QQ机器人) channel adapter (#5202)
  • core: auto-reveal exit_plan_mode tool when entering plan mode (#5311)
  • skills: add desktop-pet skill for creating pixel-art companions (#4808)
  • stats: expose token usage for cost visibility (#4564)
  • cli: show follow-up suggestion in input placeholder (#5145)
  • config: add settings file change detection via chokidar watcher… (#4933)
  • cli: show optional response token rate (#5401)
  • cli: serve the Web Shell UI from qwen serve (#5392)
  • cli: add persistent history collapse on resume with refined commands (#4085)
  • web-shell: add extension management (#5398)
  • extensions: interactive multi-tab /extensions manager (Installed / Discover / Sources) (#4850)

Changed

  • tools: rename TodoWrite tool display name to TodoList (#5319)
  • serve: unify session title/displayName into single displayName field (#5002)

Fixed

  • core: Track supported sed edits in file history (#5141)
  • vscode-ide-companion: create independent McpServer per IDE session (#5264)
  • core: read BMP height as signed int32 for top-down bitmaps (#5227)
  • cli: Preserve mid-turn image messages (#5183)
  • core: detect dat files by content (#5256)
  • model: remember selected provider when multiple share a model id (#5173) (#5179)
  • daemon: centralize mid-turn event constant + recover timed-out drains (#5266)
  • core: keep DeepSeek presets text-only (#5268)
  • cli: drop AgentView cleanup setState that can trip React #185 (#5199) (#5286)
  • core: read WebP VP8X canvas height from the correct byte offset (#5194)
  • cli: support Ctrl+P/N in completions (#5259)
  • core: never let telemetry file exporters crash the process (#5246)
  • cli: correct context filename settings schema (#5269)
  • core: per-turn tool-call circuit breaker — always-on cap + opt-in loop heuristics (#5234) (#5279)
  • desktop: handle git branch badge edge cases (#5247)
  • cli: correct sandbox settings schema (#5272)
  • weixin: show allowed image directories (#5296)
  • cli: reject malformed OSC rgb colors (#5307)
  • web-shell: summarize grep_search results (#5294)
  • core: read short VP8L WebP dimensions (#5292)
  • core: track attached stdout fd redirects (#5317)
  • dingtalk: split oversized markdown lines (#5299)
  • cli: preserve multiline shell history (#5335)
  • cli: validate GitHub remote hosts (#5327)
  • core: preserve migrated command description strings (#5321)
  • cli: enforce stdin byte limit (#5331)
  • core: respect home path boundary when tildeifying (#5333)
  • cli: truncate session picker text by display width (#5338)
  • core: support GIF image token metadata (#5340)
  • cli: handle session search graphemes (#5342)
  • cli: normalize english output language (#5346)
  • core: parse OAuth resource metadata params (#5344)
  • core: handle stale worktree session markers (#5229)
  • core: ignore duplicate provider tool-call ids (#5038)
  • cli: show thinking in full transcript mode (#5354)
  • cli: return fresh empty mcp json results (#5349)
  • weixin: normalize markdown image syntax (#5297)
  • core: skip sleep inhibitor in headless ssh (#5295)
  • cli: reject malformed terminal sequences (#5305)
  • cli: expand windows-style tilde paths (#5298)
  • core: validate oauth expires_in values (#5356)
  • core: reject malformed cron numeric fields (#5352)
  • cli: parse sandbox image registry ports (#5325)
  • cli: preserve empty MCP prompt args (#5323)
  • core: reject invalid cron task entries (#5309)
  • cli: avoid agent composer unmount reset (#5302)
  • cli: validate channel service pidfile (#5300)
  • core: preserve invalid schema length strings (#5312)
  • weixin: confirm the WEBP signature, not just the RIFF prefix (#5285)
  • cli: reject malformed ACP timeout strings (#5315)
  • cli: import extension channels via file urls (#5301)
  • cli: bound streaming thought render buffers (#5314)
  • cli: window title shows session name instead of model activity status (#5288)
  • core: keep qwen3.6-flash and kimi-k2.6 presets text-only (#5328)
  • cli: render a sub-minute duration that rounds to 60s as "1m" (#5287)
  • Expand Windows ~\ home paths and hide phantom (session) entries in the desktop session list (#5253)
  • plan-gate: isolate gate agent AbortSignal from parent signal chain (#5185)
  • core: honor output language in side queries (#4519)
  • cli: avoid stale git branch watcher setup (#5271)
  • desktop: detect WebP and AVI in RIFF magic-byte sniffing (#5336)
  • input: restore IME cursor positioning reverted in #4779 (#4993)
  • cli: close @path completion dropdown on Enter accept (#4841)
  • core: fall back to encrypted-file storage for extension secrets when keychain is unavailable (#5221)
  • core: support whitespace in session metadata fields (#5353)
  • core: prevent OOM in auto-memory extraction during /quit (#5147) (#5181)
  • core: expire tokens at buffer boundary (#5360)
  • cli: validate restore checkpoints before mutation (#5358)
  • core: honor ripgrep builtin setting at runtime (#5362)
  • core: create token file on first save (#5367)
  • cli: preserve workspace trust state for extensions (#5369)
  • cli: Stop after cancelled permissions (#5258)
  • core: resolve tilde paths before search permission checks (#5378)
  • cli: respect sandbox path boundaries (#5375)
  • cli: update acp cancel test flag (#5384)
  • core: avoid reconnecting on MCP tool errors (#5382)
  • core: accept uppercase web fetch schemes (#5391)
  • cli: preserve equals in mcp env values (#5377)
  • core: avoid glob prefix cache reuse (#5364)
  • core: validate grep result limits (#5389)
  • core: parse grep results with colon paths (#5372)
  • acp: scrub simple env for spawned children (#5395)
  • core: pass --no-ask-password to systemd-inhibit to prevent TUI corruption (#5318)
  • cli: parse sandbox mounts with windows drives (#5388)
  • core: add GLM-5.2 to Z.AI preset (#5397)
  • openai: add string tool result compatibility mode (#5399)
  • cli: clarify cumulative statusline token labels (#5400)
  • cli: reduce retained interactive tool output memory (#4971)
  • cli: calculate response rate from phase token delta (#5402)
  • cli: clarify unavailable model configuration hint (#5403)
  • cli: gate cron scheduler startup on config initialization (#5022) (#5230)
  • core: keep estimated token split summing to total (#5420)
  • core: share memory filename config state (#5419)
  • channel: scope qqbot session backup path (#5417)
  • channel: track qqbot close reconnect timer (#5416)
  • auth: preserve custom provider models on install (#5404)
  • core: target microcompaction cache disarms (#5407)
  • channel: keep qqbot token refresh retrying (#5414)
  • cli: keep keypress handlers current (#5421)
  • cli: narrow settings enum schemas (#5418)
  • channel: bound qqbot gateway reconnect retries (#5415)
  • core: block broad shell self-kill commands (#5409)
  • cli: preserve trustedFolders comments on save (#4746)
  • hooks: remove the dead updatedMCPToolOutput field (#5422) (#5423)
  • cli: accept uppercase URL schemes in mcp add transport detection (#5426)
  • extensions: accept uppercase URL schemes when parsing install sources (#5429)
  • core: provide escape path when plan gate is unavailable (#5430)
  • cli: stabilize extension list spacing (#5445)
  • weixin: handle uppercase CDN upload schemes (#5439)

Documentation

  • add CLI subcommands section with qwen sessions list (#5254)
  • fix SSE ring size errors and add /workflows command (#5205)
  • Revamp README for clarity and focus (#5257)
  • cli: document tmux scroll workaround (#5248)

Other

  • test(cli): enable load config model selection coverage (#5274)
  • test(cli): cover selection list scroll up (#5276)
  • test(cli): enable table foreground reset coverage (#5278)
  • test(core): enable agent headless termination coverage (#5282)
  • test(cli): enable command search long suggestion coverage (#5283)

0.18.3 - 2026-06-17

Fixed

  • cli: Stop after cancelled ask_user_question (#5218)
  • cli: render slash suggestion descriptions on a single truncated line (#5236)
  • core: always declare exit_plan_mode so plan mode can call it (#5210) (#5251)

Other

  • ci(release): report required Test checks on release PRs and auto-approve (#5250)

0.18.2 - 2026-06-17

Added

  • web-shell: support custom footer renderer (#5166)
  • web-shell: add imperative composer API for external text, tag, and submit control (#5161)
  • web-shell: per-turn time & tokens on the collapse seam, below the prompt (#5163)
  • cli: Add daemon status API (#5174)
  • core+cli: Workflow P4 — meta + /workflows + phase-tree (#4721) (#5094)
  • daemon: deliver web-shell mid-turn messages into the running turn (#5175)
  • tui: collapsible thinking blocks with duration timer (#4598)
  • web-shell: expose transcript event changes (#5193)
  • cli: add sessions list command with --json and --limit flags (#5187)

Fixed

  • warn on oversized context instructions (#5073)
  • core: simplify edit tool description to path only (#5140)
  • monitor: batch-drain notifications to reduce token waste (#5165)
  • core: coerce numeric string params in SchemaValidator for MCP tools (#4967)
  • channels: match sender id as a full segment in SessionRouter (#5116)
  • agent: make forking explicit; keep omitted subagent_type awaitable (#5155)
  • core: auto-retry transport stream errors before the first chunk (#5171)
  • Qwen PR review proxy bypass, stale-worktree cleanup, and footer line break (#5168)
  • dingtalk: reopen code fences without inserting a blank line (#5204)
  • cli: hide unconfigured discontinued OAuth model (#5167)
  • permissions: do not model /dev/tcp and /dev/udp redirects as file I/O (#5196)
  • core: strengthen exit_plan_mode descriptions to prevent empty plan parameter (#5188)
  • desktop: keep latest feed stable-only (#5149)
  • core: read SHORT-typed TIFF dimensions correctly on big-endian files (#5209)
  • cli: skip highlightAuto for unlabeled code blocks with box-drawing/CJK content (#5198)
  • coerce non-string tool params to strings for self-hosted LLMs (#4793)
  • cli: keep sudo-required npm installs on npm instead of migrating to standalone (#5207)
  • e2e: add daemon_status to serve capabilities baseline; run E2E on PRs (#5211)
  • web-shell: localize remaining hardcoded UI strings (#5189)
  • acp: load extension commands in daemon sessions (#5216)
  • web-shell: simplify collapse metadata display (#5223)
  • ci: gate PR review and triage on write permission (#5191)

Documentation

  • fix stale defaults, CLI syntax, and tool naming drift (#5158)
  • daemon: Refresh daemon docs in English (#5144)
  • design: DaemonTransport abstraction — pluggable transport for SDK (#5026)
  • add Qwen Code Desktop release link (#5152)
  • fix MCP token path, daemon UI event count, add Feishu channel (#5172)
  • channels: add screenshots to Feishu setup guide (#4983)
  • fix missing spaces before parentheses in README (#4796)

Other

  • ci: publish autofix PRs as qwen-code-ci-bot (#5137)
  • Polish web-shell execution display (#5190)
  • Fix completed prompt lifecycle race (#5192)
  • ci(autofix): prioritize recent unattended bugs over stale ones (#5178)
  • Revert "fix(core): skip auto-title generation when history has no user message" (#5200)
  • ci: run CLI integration tests in the merge queue (#5224)
  • ci(autofix): unify issue-fix and review-response into one lifecycle workflow (#5233)
  • ci(e2e): stop running the E2E matrix on every PR push (#5238)

0.18.1 - 2026-06-15

Added

  • daemon: gate direct session shell behind explicit opt-in (#5031)
  • core: persist oversized tool results to disk (#4095 Phase 4) (#5042)
  • core,cli: bubble background subagent permission prompts to the parent session (#4955)
  • core: let grep results satisfy prior-read checks (#5043)
  • skills: support user-invocable frontmatter (#5037)
  • serve: deliver A2UI surfaces over MCP — bridge extraction and action endpoint (#4961)
  • mcp: project .mcp.json + workspace approval gating with aligned scope precedence (#4615) (#4713)
  • web-shell: daemon web-shell improvements — token usage, settings, retry, streaming metrics, hidden commands (#5066)
  • web-shell: revamp floating todo panel interactions (#5069)
  • web-shell: show message time on hover (#5079)
  • core: durable cron jobs — /loop tasks that survive restarts (#5004)
  • web-shell: show time on parallel-agents box and sub-agent tools (#5084)
  • sdk,serve: DaemonTransport abstraction + ACP standard compliance (#5040)
  • core: Workflow P3 — agent({schema, agentType, model, isolation:'worktree'}) (#4721) (#5034)
  • core: migrate Computer Use to cua-driver (cross-platform) (#5051)
  • web-shell: reveal full tool detail and auto-collapse finished tools (#5088)
  • web-shell: make input shortcuts discoverable and clickable (#5096)
  • cli,web-shell: persist goal status in daemon transcript events (#5098)
  • acp: dedicated agent permission dialog via _meta.toolName (follow-up to #5085) (#5105)
  • cli: import Claude MCP servers (#5095)
  • cli: improve /copy command argumentHint and description (#5110)
  • web-shell: collapsible TodoWrite history with status diff (#5109)
  • computer-use: configurable screenshot max dimension (setting + env) (#5122)
  • web-shell: per-task token & time detail on completed todos (#5118)
  • web-shell: collapse completed turns to prompt + final answer (#5125)
  • desktop: show git branch in working directory badge (#5082)
  • triage: make minimal-change an explicit PR review check (#5146)

Changed

  • web-shell: remove duplicate agents panel, contain SubAgent views (#5059)
  • core: unify retry delay policy (#3827)

Fixed

  • telemetry: Propagate daemon ACP trace context (#5047)
  • docs: update Coding Plan model list and fix stale references in developer docs (#5054)
  • daemon: Sanitize logs and type MCP restarts (#5006)
  • memory: avoid stale tool schema recall (#5058)
  • core: eliminate OOM from debugResponses accumulation (#4982)
  • enable fork subagents by default (#4963)
  • core: preserve background agent launch flags (#5061)
  • web-shell: improve slash command panel layering (#5078)
  • serve: Add prompt queue backpressure (#5033)
  • cli: show full plan for gate failures (#5077)
  • cli: submit fast tool results after stream end (#5071)
  • cli: ignore expired live agents in focus navigation (#5070)
  • cli: drop tool calls after cancellation (#5020)
  • core: Persist file history snapshot updates (#5057)
  • cli: add OSC 52 clipboard fallback for SSH environments (#4929)
  • webui: defer DaemonClient disposal to survive React StrictMode (#5091)
  • cli,core: harden OOM prevention — idempotent compaction tests, explicit GC, debug log defaults (#4914)
  • cli: wrap long status lines (#5093)
  • acp: add internal Kind.Agent, keep ACP wire on 'other' (no-regression) (#5085)
  • ci: fail PR review job when the run aborts mid-review (#5053)
  • core: default GLM-5.2+ and GLM-6.x onward to 1M context (#5103)
  • daemon: Avoid replaying truncated session diffs (#5108)
  • core: Repair duplicate tool call IDs (#5107)
  • core: hard-stop repeated identical tool calls (#5036)
  • core: keep token escalation warm across agent rounds (#5062)
  • core: bound hard rescue compression retries (#4526)
  • core: bound foreground shell output capture (#4524)
  • core: compress when usage metadata is missing (#4528)
  • core: ignore agent names without active teams (#5115)
  • core: include response tokens in prompt estimate (#4525)
  • dual-output: prevent FIFO blocking on startup when no reader connected (#4894)
  • core: honor skipLoopDetection for the deterministic tool-call loop (#5128)
  • core: Bound active tool result history (#5111)
  • desktop: isolate update feed from CLI releases (#5139)
  • web-shell: remove redundant sanitizeSvg, fix mermaid render failure (#5123)
  • core: skip auto-title generation when history has no user message (#5120)
  • release: allow cli-entry.js in standalone dist allowlist (#5153)

Documentation

  • Refresh daemon developer docs (#4412)
  • rewrite CLAUDE.md to point to AGENTS.md as authoritative source (#5138)

Other

  • chore: sync package-lock.json with packages/cli ws dependencies (#5023)
  • test(cli): Cover rewind selection and confirm flow (#5044)
  • test: stabilize simple MCP integration check (#5072)
  • ci: add scheduled autofix workflow for stale bug issues (#4989)
  • fix release integration env controls (#5121)

0.18.0 - 2026-06-12

Added

  • installer: verify release assets + switch public docs to standalone entrypoint (#3855)
  • ci: add @qwen /triage workflow for automated issue and PR triage (#4768)
  • cli: add standalone auto-update support (#4629)
  • telemetry: Phase 4b — retry visibility for qwen-code.llm_request (#3731) (#4432)
  • core: add user prompt expansion hooks (#4377)
  • telemetry: Phase 3 — qwen-code.subagent span with concurrent isolation (#3731) (#4410)
  • skills: /skills picker dialog — browse, search, toggle, pick (#4532) (#4533)
  • cli: enable /remember, /forget, /dream in ACP mode (#4811)
  • vscode: surface ACP background notifications (#4358)
  • cli: support /copy N to copy Nth-last AI message (#4761)
  • cli: prevent system sleep while running (#4434)
  • ci: add PR review workflow using bundled /review skill (#4549)
  • cli: add /fork background-agent command (#4780)
  • core: honor skill allowedTools by auto-approving declared tools (#4704)
  • skills: enforce auto-skill- directory prefix for auto-generated skills (#4839)
  • memory: add user-level auto-memory at ~/.qwen/memories/ (#4747) (#4764)
  • acp: support desktop qwen integration (#4728)
  • extension: add description field to ExtensionConfig (#4857)
  • telemetry: inject TRACEPARENT env var into shell child processes (#4906)
  • hooks: support terminal sequence notifications (#4895)
  • core: Workflow tool P1 — minimal node:vm sandbox + sequential agent() (#4721) (#4732)
  • ci: add auto-generated CHANGELOG.md synced from releases (#4872) (#4881)
  • stats: add interactive /stats dashboard with cross-session tracking (#4779)
  • core: enable loop/cron tools by default (#4950)
  • core: declarative agent frontmatter v1 — permissionMode bridge + maxTurns wiring + color allowlist (CC 2.1.168 parity) (#4842)
  • add Agent Team experimental feature for parallel sub-agent coordination (#4844)
  • desktop: Add desktop app package with Qwen ACP SDK integration (#3778)
  • daemon: merge daemon-mode feature batch into main (#4490)
  • core: layered tool-output truncation, per-message budget, per-tool limits (#4880)
  • telemetry: add runtime memory/CPU sampling with OTel metric reporting (#4868)
  • cli: add /compress-fast command for no-LLM rule-based context compression (#4893)
  • web-shell: add Option+Enter and Cmd+Enter newline shortcuts (#5005)
  • core: persist file history snapshots for cross-session /rewind (T2.1) (#4897)
  • core: port declarative-agent mcpServers + hooks (CC 2.1.168 parity follow-up) (#4996)
  • core: Workflow P2 — parallel() + pipeline() concurrent fan-out (#4721) (#4947)
  • core: add enter_plan_mode tool and Plan Approval Gate (#4853)
  • acp: broadcast session title updates to daemon clients (#5035)

Changed

  • core: remove GitService, migrate /restore to FileHistoryService (#4871)
  • skills: remove redundant commands and sync e2e-testing skill (#4992)

Fixed

  • cli: skip thought parts in copy output (#4738)
  • cli: Improve approval mode display text (#4753)
  • ui: display model name instead of id in statusline and startup banner (#4741)
  • ci: fix triage prompt variable expansion, bot identity, and model secret (#4778)
  • computer-use: auto-approve install in auto-approve modes (YOLO/AUTO_EDIT/AUTO) (#4756)
  • cli: implement --list-extensions flag handler (#4450) (#4456)
  • core: handle error variant in disabled skill command delegation (#4804)
  • cli: remove dead --list-extensions handler from #4456 (#4800)
  • core: recurse into submodule files when crawling git repos (#4596)
  • clipboard: use platform-native tools for image paste on Linux (#4647)
  • core: add multimodal support for qwen3.7-plus (#4803)
  • core: scope boolean coercion to boolean-typed schema fields (#4618)
  • cli: bundle extension examples (#4719)
  • cli: fix vim mode Esc leak, Enter submit, render lag and implement missing VIM commands (#4677)
  • core: allow intentional foreground sleep for backoff (#4708)
  • core: honor runtime output dir for auto memory (#4715)
  • tui: skip cross-group tool merge in mode to eliminate screen flash (#4795)
  • cli: prevent selection dialog flicker (#4755)
  • core: inject current date on every user query to prevent stale date (#4798)
  • ci: coordinate qwen triage and review automation (#4570)
  • core: add missing closing braces in formatDateForContext test block (#4863)
  • core: prevent OOM by compacting API history, UI history, and triggering under memory pressure (#4824)
  • core: don't kill a failed-spawn sleep inhibitor child (sandbox abort on tool use) (#4865)
  • skills: add bundled skill doc-index validation to docs skills (#4851)
  • sdk: correct npm package name in SDK install instructions (#4860)
  • strip runtime snapshot prefix before persisting model.name (#4734)
  • cli: handle background auto-update breaking cross-authType model switching (#4760)
  • core: preserve shared baseUrl on auth refresh (#4828)
  • ci: acknowledge queued qwen review requests (#4847)
  • core: fix qc-helper skill docs index and config categories (#4848)
  • ci: normalize dev launcher path assertions on Windows (#4915)
  • installer: correct broken (404) 'for more info' URL in post-install message (#4916)
  • core: isolate OpenAI SDK abort listener leak with per-request child controllers (#4810)
  • acp: prevent session/prompt hang when client ignores mid-turn drain requests (#4925)
  • core: remove greeting-responder example from agent tool prompt (#4923)
  • core: remove env from read-only shell command allowlist (#4932)
  • core: prevent cron scheduler from firing on creation minute (#4946)
  • core: ensure hard threshold always exceeds auto threshold (#4949)
  • installer: auto-detect SYSTEM account and default PATH scope to machine (#4903)
  • skills: use full YAML parser for frontmatter to support block scalars (#4870)
  • core: give complete intentional-sleep guidance on first rejection for sleep chains (#4948)
  • core: add qwen3.7-plus to Coding Plan model list (#4953)
  • openai: default splitToolMedia so tool-returned images reach strict OpenAI-compatible backends (#4917)
  • cli: fix cursor left-move stalling at hard-wrapped line boundary (#4852)
  • core: microcompact hook continuations (#4840)
  • core: preserve teammate identity when resuming a tool call after approval (#4979)
  • installer: print shell reload hint when new qwen is not picked up (#4960)
  • auth: time out Qwen OAuth refresh (#4829)
  • cli: route down-arrow straight to the live agent panel (#4907) (#4911)
  • core: harden experimental agent-team messaging (#4988)
  • cli: enable VP scroll at idle prompt and fix viewport height (#4959)
  • core: parse comma-separated tools/disallowedTools in agent frontmatter (#4935)
  • cli: make extensions new work when bundled examples are missing (#5009)
  • goal: persist iteration count across resume so MAX_GOAL_ITERATIONS bounds the whole session (#5000)
  • desktop: keep composer sendable after idle escape (#4788)
  • cli: avoid headless browser open crashes (#4716)
  • cli: debounce resize repaint and clear stale scrollback on settle (#4919)
  • core: add Tool Fallback rule to system prompt (#4931)
  • docs: correct stale settings keys, wrong defaults, and missing commands (#4969)
  • core: stabilize truncated tool retry keys (#4970)
  • core: stabilize prompt-cache prefix against MCP/skills churn (#4896)
  • core: fix Windows startup error caused by missing printf command (#5012)
  • desktop: allow unsigned Windows auto-updates (#5028)
  • cli: join previous line when Ctrl+U pressed at column 0 (#5011)
  • tui: Tighten message and tool spacing (#4595)
  • core: serialize team task claims per agent and add mailbox lock parity (#4981)
  • core: support .toml command files in extension command discovery (#5017)
  • stats: dedup usage records by sessionId and skip in-progress writes (#4995)
  • test: unbreak qwen serve integration suites after the daemon batch merge (#5041)
  • release: allow fzfWorker.js in standalone dist allowlist (#5049)

Performance

  • filesearch: move AsyncFzf index construction to a worker thread (#4621)
  • desktop: add --cli-only flag to skip non-CLI packages during vendor build (#5025)

Documentation

  • desktop: use main for brand builder skill (#5021)

Other

  • ci(triage): Fix Qwen triage workflow prompt (#4787)
  • Revert "feat(cli): enable /remember, /forget, /dream in ACP mode" (#4818)
  • Harden auto mode self-modification checks (#4572)
  • Move startup context into system reminders (#4053)
  • Add InstructionsLoaded hook for instruction file loading (#4665)
  • Align automated PR review with bundled skill (#4843)
  • test(integration): drop tight 30s timeout in sleep-interception e2e tests (#4878)
  • test: cover rewind selector restore options (#4784)
  • ci: extend qwen PR review timeout to 90min and queue delay to 30min (#4962)
  • test: cover rewind selector fallback states (#4905)
  • test(integration): harden flaky sleep-interception e2e against skipped tool calls (#4936)
  • Fix release workspace test failures (#4980)
  • chore(daemon): remove dead code and simplify control flow (#4789)
  • Add /cd command (#4890)
  • ci(desktop): mac code-signing + App Store Connect API-key notarization (#5013)
  • test(i18n): raise timeout for slow must-translate locale suites on Windows CI (#5024)

0.17.1 - 2026-06-03

Added

  • core: add memory pressure monitor (#4403)
  • cli: Add settings JSON corrupted warning dialog (#4560)
  • cli: add respectUserColors and hideContextIndicator options for statusline (#4670)
  • cli: notify when background shells finish (#4355)
  • core: add simplify bundled skill (#3570)
  • skills: add agent reproduction workflows (#4118)
  • cli: virtual viewport for long conversations on ink 7 (#4146)
  • cli: background housekeeping for stale file-history dirs (#4414)
  • core: inject context env vars (session/agent/prompt ID) into shell subprocesses (#4649)
  • core: auto-dump memory diagnostics to disk on pressure detection (#4654)
  • core: atomic write rollout for credentials, memory, config, JSONL (closes #3681, #4095 Phase 2) (#4333)
  • cli: Add searchable MiniMax-M3 model setup (#4668)
  • core,cli: auto-compact follow-up — /compress instructions, PreCompact hook plumb, plan/subagent attachments (#4688)
  • input: move physical cursor to visual cursor for IME input (#4652)
  • core: add post tool batch hooks (#4454)
  • prompt: deduplicate tool guidance between system prompt and tool descriptions (#4569)
  • cli: add CPU profiling support for Chrome DevTools analysis (#4620)
  • prompt: enhance system prompts with global reasoning discipline and iterative planning (#4436)
  • subagent: add fork subagent feature gate and "Don't peek / Don't race" prompt discipline (#4574)
  • core: strengthen system prompts for reading code before editing, dedicated tool priority, and step-by-step communication (#4375)
  • skills: add triage skill for issue/PR gatekeeping (#4577)
  • computer-use: use @qwen-code/open-computer-use fork (signed + notarized) (#4726)

Changed

  • cli: rename "Default" approval mode to "Ask permissions" (#4625) (#4674)

Fixed

  • rewind: false "compressed turn" error when mid-turn messages exist (#4580)
  • core: emit enable_thinking on DashScope when reasoning is disabled (#4505)
  • core: surface Anthropic empty stream provider errors (#4540)
  • core: guard oversized resumed history sends (#4531)
  • cli: stabilize statusline preset ordering (#4634)
  • config: load home .env vars before settings ${VAR} resolution (#4466) (#4474)
  • acp: drop discontinued Qwen OAuth method (#4639)
  • core: enforce adjacent tool results (#4622)
  • cli: hide completed sticky todos (#4635)
  • core: harden context error text collection (#4632)
  • core: apply output language to side queries (#4636)
  • cli: persist /memory toggle state across dialog reopen (#4650)
  • docs: Hide internal docs from docs site (#4357)
  • core: preserve uid in atomicWriteFile to avoid breaking shared-write files (#4431)
  • cli: use session channel when closing ACP sessions (#4522)
  • core,cli: replace full-history structuredClone with shallow/tail variants to prevent OOM on resume (#4644)
  • core: tolerate unsupported Streamable HTTP GET SSE (#4521)
  • insight: Harden insight facet normalization and empty qualitative handling (#3557)
  • core: loosen auto-mode classifier timeouts, disable stage-2 thinking (#4680)
  • core: coerce hostile-provider usage token counts (#4350 part 1) (#4439)
  • cli: honor list extensions flag (#4673)
  • ui: distinguish auto approval mode indicators (#4600)
  • core: disable undici 300s bodyTimeout for no-proxy Node.js path (#4605)
  • cli: suppress completion menu for history-restored text until edited (#4558)
  • cli: statusline not re-rendering when switching from preset to command type (#4706)
  • cli: avoid exit-time history deep clones (#4717)
  • telemetry: clear span dedup state after chat compression (#3731) (#4660)
  • core: remove proactive subagent system-reminder injection (#4587)
  • cli: fix Space key not working in Arena model selection dialog (#4701)

Documentation

  • add /diff command and auto theme detection documentation (#4699)

Other

  • Improve hooks matcher display (#4545)
  • Add AUTO mode denial observability and caps (#4476)
  • chore(deps): update @google/genai from 1.30.0 to 2.6.0 (#4485)

0.17.0 - 2026-05-29

Added

  • channels: add Feishu (Lark) channel adapter (#4379)
  • telemetry: foundation for skill-based RT optimization (P0+P1) (#4565)
  • computer-use: zero-config built-in via open-computer-use MCP (#4590)

Changed

  • BREAKING core: replace tail-preservation compaction with summary + restoration attachments (#4599)

Fixed

  • cli: surface startup warnings on stderr before TUI render (#4448) (#4461)
  • telemetry: improve LogToSpan bridge error info and TUI handling (#4482)
  • cli: track model-sent slash command history (#3826)
  • core: use undici fetch for IDE proxy requests (#4607)
  • core,cli: label screenshot-triggered compaction accurately in the auto-compact notice (#4623)

Other

  • Emit PermissionDenied hooks for AUTO classifier blocks (#4376)

0.16.2 - 2026-05-27

Added

  • cli: do not append trailing space for directory completions (#4092) (#4288)
  • skills: add memory-leak-debug skill for heap snapshot diagnosis (#4468)
  • memory: load .qwen/QWEN.local.md as project-local context (#4091) (#4394)
  • core: limit background agent concurrency (#4324)
  • core: enable Token Plan cache control (#4495)
  • BREAKING core: redesign auto-compaction thresholds with three-tier ladder (#4345)
  • telemetry: client-side HTTP span + opt-in W3C traceparent propagation (#4384) (#4390)
  • cli: headless / non-interactive runaway-protection guardrails (#4103) (#4502)
  • cli: dense inline panel + keyboard navigation for parallel agent fan-out (#4477)
  • prompt: move new app prompt from system prompt to skills (#4567)
  • worktree: Phase D — startup --worktree flag + symlinkDirectories + PR refs (#4381)
  • cli: default auto-dream/auto-skill to on and add /memory toggle (#4547)

Fixed

  • build: clean stale outputs before tsc --build to prevent TS5055 (#4453)
  • cli: resolve stale closure race in text buffer submit handler (#4470)
  • weixin: allow Windows image paths inside workspace (#4465)
  • weixin: send decryptable image payloads (#4464)
  • core: preserve duplicate object references in safeJsonStringify (#4407)
  • extension: redact credentialed source diagnostics (#4426)
  • core: strip additional dangerous interpreter rules (#4371)
  • cli: require whitespace before @ to trigger file completion (#4487)
  • auth: align Token Plan model defaults with ModelStudio (#4478)
  • extension: populate resources when Claude marketplace points at whole folder (#4497)
  • cli: align /context token breakdown with actual API request (#4512)
  • sdk: honor canUseTool timeout in CLI control requests (#4491)
  • core: stop AbortSignal listener leak in long sessions (MaxListenersExceededWarning) (#4366)
  • core: prevent auto-skill creation from overwriting existing skills (#4437) (#4489)
  • sdk: Include CLI chunks in SDK package (#4541)
  • cli: persist MCP server removals (#4535)
  • models: refresh raw model-derived defaults (#4517)
  • vscode-ide-companion: exclude workspace packages from NOTICES.txt generation (#4455)
  • telemetry: attach interaction span to session root context (#4499)
  • cli: auto-prepend @ when pasting or dropping multiple file paths (#4544)
  • permissions: make command substitution ask, not deny (#4093) (#4386)

Documentation

  • tools: document monitor tool (#4356)
  • agents,pr-template: add Working Principles and restructure PR template (#4496)

Other

  • ci: split Aliyun OSS sync into a separate post-release workflow (#4492)

0.16.1 - 2026-05-23

Added

  • telemetry: Phase 4a — TTFT capture + GenAI semconv dual-emit (#3731) (#4417)

Fixed

  • core,cli: close tool_use↔tool_result invariant across all failure paths (#4176)
  • vscode: skip redundant tsc build in prepackage to prevent TS5055 (#4401)
  • core: preserve tab-indented notebook formatting (#4373)
  • scripts: renormalize CRLF storage for install-qwen-standalone.bat (#4427)
  • build: tree-shake React reconciler dev build to prevent PerformanceMeasure leak (#4462)
  • cli: stabilize flaky sticky-todo remeasure test (#4416)
  • cli: gate mintty OSC 8 detection on TERM_PROGRAM_VERSION ≥ 3.3 (#4420) (#4451)
  • release: move constants above entry point to avoid TDZ error (#4398)

Other

  • chore(deps): update express from 4.21.2 to 5.2.1 (#4458)

0.16.0 - 2026-05-21

Added

  • cli: wrap markdown links in OSC 8 so wrapped URLs stay clickable (#4037)
  • cli: support batch deletion of sessions in /delete (#3733)
  • subagents: use fastModel for Explore subagent (#4086)
  • perf: progressive MCP availability — MCP no longer blocks first input (#3994)
  • core: strip inline media before chat compaction summary (#4101)
  • tools: add generic worktree support — EnterWorktree/ExitWorktree + Agent isolation (#4073)
  • cli: add ModelScope as a built-in third-party API provider (#4150)
  • core: add image+video support for Qwen3.6-35B-A3B quant variants (#4106)
  • hooks: Add TodoCreated and TodoCompleted hooks for todo lifecycle events (#3378)
  • hooks: add prompt hook type with LLM evaluation support (#3388)
  • core,cli: add generic atomicWriteFile, wire into Write/Edit tools, upgrade @types/node (#4096)
  • cli: warn users that rewind is disabled in IDE mode (#4122)
  • cli: argument hint + --auto completion for /rename (#4048)
  • cli: add baseline /doctor memory diagnostics (#4180)
  • cli: add session-scoped /goal command with judge-driven turn continuation (#4123)
  • rewind: add file restoration support to /rewind command (#4064)
  • skills: add /stuck diagnostic skill for frozen sessions (#4133)
  • telemetry: unify span creation paths for hierarchical trace tree (#4126)
  • cli: readline Ctrl+P/N for history and selection navigation (#4082)
  • cli: add built-in status line presets with interactive dialog (#4120)
  • cli: add fork-session resume flag (#4159)
  • telemetry: add interaction span and detailed sensitive attributes (#4097)
  • core: PR-2.5 — post-promote stream redirect + natural-exit registry settle (#3831 follow-up) (#4102)
  • cli: add configurable plansDirectory for Plan Mode (#4062)
  • cli: add structured memory diagnostics JSON (#3785)
  • core: fail impossible goals (#4230)
  • serve: add /demo debug page for qwen serve daemon (#4132)
  • worktree: Phase C — session persistence, hooksPath, Footer + WorktreeExitDialog, three-mode --resume restore (#4174)
  • core: extend cross-auth fast models to agents (#4153)
  • cli,core: add Auto approval mode with LLM classifier (#4151)
  • cli: per-turn /diff with interactive dialog (#4277)
  • cli: add session path status command (#4124)
  • core: inject git status into system prompt and refine Explore/git-log guidance (#4110)
  • core: add NotebookEdit tool for Jupyter notebooks (#3900)
  • cli: respect /editor preference in Ctrl+X external editor (#4310)
  • telemetry: Phase 2 — tool.blocked_on_user + hook spans (#3731) (#4321)
  • installer: add standalone hosted install and uninstall flow (#3828)
  • telemetry: support custom resource attributes and add metric cardinality controls (#4367)
  • skills: support priority field in SKILL.md for sorting skill display order (#4155)

Changed

  • cli: revert dynamic slash command LLM translation (#4145)
  • core: TaskBase envelope + foreground subagent persistence (#3970)
  • auth: unify provider config in core, simplify /auth as "Connect a Provider" (#4287)
  • core: undo x-api-key + Authorization double-emit (#4342) — regresses IdeaLab-style proxies (#4385)

Fixed

  • core: normalize cumulative OpenAI stream deltas to suffixes (#3896)
  • cli: auto-restore prompt and preserve queue on cancel (#4023)
  • core: tag subagent OpenAI JSON logs (#4099)
  • dashscope: use URL hostname check instead of regex to avoid ReDoS (CodeQL) (#4112)
  • core: improve runtime fetch options error handling and documentation (#3997)
  • telemetry: address PR #3847 review follow-ups for trace correlation (#4058)
  • search: make empty-query exit synchronous and normalize Windows Backspace (#3981)
  • anthropic: allow cache_control on tool_result blocks (#4121)
  • core: merge IDE context into user prompt (#3980)
  • cli: apply /language output to running session without restart (#4143)
  • core: correct context-usage Footer for prompt size and Anthropic caches (#4109)
  • core: support cross-auth fast side queries (#4117)
  • vscode: preserve thinking state and recover missing edit snapshots (#4147)
  • cli: handle MinTTY Ctrl+Backspace as delete-previous-word (#4059)
  • cli: preserve debug session across sandbox relaunch (#4060)
  • hooks: inject SessionStart additionalContext into chat context (#4115)
  • i18n: Correct zh-TW translations to match Traditional Chinese conventions (#4129)
  • core: refresh systemInstruction in setTools() so progressive MCP tools reach the model (#4166)
  • vscode-ide-companion: use existing editor group for diff instead of forcing a new one (#4130)
  • core: add heap-pressure auto-compaction safety net (#4186)
  • cli: pass rewind selector test props (#4211)
  • lsp: expose status and startup diagnostics (#3649)
  • rewind: restore upstream TOCTOU ordering + heal sticky failed marker (#4216)
  • test: clear boundedPromise timers to prevent unhandled rejections in abort-and-lifecycle test (#4220)
  • ui: trim background task results and show newest first (#4094) (#4125)
  • core: align shell tool description with configured shell (#4170)
  • cli: include skill base dir in slash commands (#4224)
  • cli: restore ACP prompt counter on resume (#4233)
  • core: extend DashScope provider detection with additional hostname rules (#4157)
  • core: apply tool name migrations at dispatch (#4213)
  • cli: record mid-turn queued user prompts (#4215)
  • add cache limits to prevent OOM during build/test (#4188)
  • core: preserve read-before-write state across idle microcompaction (#4243)
  • telemetry: Phase 1.5 polish — fallback order, abort-as-result, log/span consistency (#4302)
  • cli: /status preserves prior error history items (#4169) (#4265)
  • core: decouple auto-memory recall from main-agent request path (#4172)
  • core: apply defaultModalities() on env-var-only model config (#4219) (#4262)
  • cli: block Windows Tab approval-mode toggle when input has a Tab consumer (#4308)
  • core: mirror Qwen3 reasoning on outbound history (#4294)
  • test: count result messages instead of assistant messages in multi-model E2E test (#4341)
  • test: raise timeout for Windows installer end-to-end tests (#4352)
  • review: harden SKILL.md against weak-model rule skipping (#4340)
  • cli: remove QWEN_OAUTH gate from feedback dialog (#4316)
  • core: replace structuredClone with shallow copy to prevent OOM in long sessions (#4286)
  • core: align session hook matcher targets (#4354)
  • core: handle MiMo tool-result media (#4281)
  • core: deduplicate geminiChat recovery continuation text (#3966)
  • ci: resolve TS5055 release build failure since May 19 (#4383)

Performance

  • cli: code-split lowlight to cut startup V8 parse cost (#4070)

Documentation

  • auth: add custom API key wizard PRD (#3583)
  • user + design docs for --json-schema structured output (#4051)

Other

  • ci(deps): bump docker/* actions to Node 24 majors (silences GitHub Node 20 deprecation warning) (#4131)
  • test(integration): pin simple-mcp-server to legacy MCP path until #4163 is fixed (#4164)
  • chore(deps): re-upgrade ink 6 → 7.0.3 (upstream Static remount fix landed) (#4119)
  • Add stop hook blocking cap (#4208)
  • [codex] Allow custom output directory for /export (#4193)
  • test(perf): skip daemon baseline harness under sandbox (#4234)
  • test: reduce wait-dependent UI test delays (#3987)
  • chore(vscode): run development ACP CLI from source (#4283)
  • Support active goal stream events and non-interactive goals (#4273)
  • Pin fetch to bundled undici for undici higher versions compatibility (#4238)
  • chore: add .github/release.yml to support skip-changelog label (#4327)
  • Expose active goal in stream JSON (#4314)

0.15.11 - 2026-05-13

Added

  • cli: core built-in i18n coverage (#3871)
  • core: write runtime.json sidecar for active sessions (#3714)
  • telemetry: inject traceId/spanId into debug log files for OTel correlation (#3847)
  • tools: defer low-frequency built-in tools to reduce initial prompt size (#4022)
  • installer: add standalone archive installation (#3776)
  • cli: Ctrl+B promote keybind (#3831 PR-3 of 3) (#3969)
  • cli: add --json-schema for structured output in headless mode (#3598)
  • skills: Add codegraph skill for PR review risk analysis and conflict detection (#3910)
  • tools: keep ask_user_question always-visible to surface clarification UX (#4041)
  • core: improve Anthropic proxy compatibility and enable global prompt cache scope (#4020)
  • cli: add tools.toolSearch.enabled setting for prefix-caching models (#4069)
  • core: replace fdir crawler with git ls-files + ripgrep fallback (#3214)
  • dashscope: support DASHSCOPE_PROXY_BASE_URL for prompt cache via API gateway (#3991)
  • telemetry: add hierarchical session tracing spans (#4071)

Changed

  • cli: remove legacy qwen auth CLI subcommand, redirect to /auth TUI dialog (#3959)
  • core: route side-query LLM calls through runSideQuery chokepoint (#3775)
  • telemetry: remove dead useCollector setting and unreachable TelemetryTarget.QWEN (#4061)
  • deps: downgrade ink 7 → 6 to fix Static-remount TUI regression from #3860 (#4083)

Fixed

  • cli: keep long model stats header on one line (#4032)
  • test: repair stale --json-schema integration assertion (#4075)
  • cli: improve rendering on narrow terminals (#3968)
  • channels: expand tilde in channel cwd config (#4045)
  • cli: preserve table ANSI color across wrapped lines (#4050)
  • core: log internal OpenAI JSON requests (#4081)

Performance

  • core: bound session-list metadata reads to head/tail 64KB; pool buffer; lazy message count (#3897)

Documentation

  • telemetry: align config and docs semantics for target, outfile, and CLI flags (#4066)

Other

  • test: stabilize main e2e flakes (#3992)
  • ci: skip unnecessary release and SDK checks (#3984)
  • chore(deps): upgrade ink 6.2.3 → 7.0.2 + bump Node engine to 22 (#3860)
  • chore(core): runtime.json sidecar follow-ups from #3714 review (#4030)
  • Upgrade GitHub Actions for Node 24 compatibility (#1876)
  • doc[sdk-python] Expand Python SDK usage documentation (#3995)
  • ci(e2e): stabilize MCP/CLI flows and cancel stale main runs (#4039)

0.15.10 - 2026-05-10

Added

  • core: add reactive compression on context overflow (#3879)
  • memory: add autoSkill background project skill extraction (#3673)
  • cli: improve slash command discovery (#3736)
  • core: support QWEN_HOME env var to customize config directory (#2953)
  • vscode: add message edit/rewind and message metadata UI (#3762)
  • add /diff command and git diff statistics utility (#3491)
  • tools: add ToolSearch for on-demand loading of deferred tool schemas (#3589)

Fixed

  • cli: validate /model command arguments (#3963)
  • core: log the OpenAI request actually sent on the wire (#3767)
  • core: drop disabled MCP server from health status registry (#3916)
  • core: filter Mistral reasoning content at request boundary (#3882)
  • cli: preserve comments and formatting in settings.json during migration write-back (#3861)
  • cli: unfreeze Ctrl+O compact-mode toggle on long conversations (#3905)
  • cli: replace clearTerminal with targeted repaint on resize (#3967)
  • core: harden reactive compression follow-ups (#3985)
  • core: throttle shell tool live text updates (#3902)
  • core: unify Edit/WriteFile prior-read with Claude Code; close #3964 + #3945 (#4002)

Other

  • test(cli): drop wait-dependent SessionPicker search tests (closes #3977) (#3978)
  • [codex] fix monitor notifications for subagents (#3933)
  • feat(telemetry) suppress OpenTelemetry diagnostics from UI (#3986)

0.15.9 - 2026-05-08

Added

  • telemetry: add sensitive span attribute opt-in (#3893)
  • add commit attribution with per-file AI contribution tracking (#3115)
  • sdk-python: replace verbatim release notes inheritance with --generate-notes (#3835)
  • cli: add Idealab as third-party provider (#3955)
  • session: add /branch to fork the current conversation (#3539)
  • core: foreground → background promote integration (#3831 PR-2 of 3) (#3894)
  • cli: searchable /resume picker with focus-aware modes (#3880)
  • skills: reload slash commands when SkillManager fires change event (#3923)

Changed

  • cli: provider-first auth registry with unified install pipeline (#3864)

Fixed

  • core: per-agent ContentGenerator view via AsyncLocalStorage (#3707)
  • core: accept partial reads in prior-read enforcement (#3932)
  • cli,core: live-phase panel-ownership filter + post-delete statusChange emit (#3919)
  • core: close bound-tool gap on runForkedAgent's YOLO wrapper (#3892)
  • vscode: mark Qwen OAuth coder-model as Discontinued in model picker (#3948)
  • cli: show tool details in subagent approval banner (#3956)
  • cli: trim blank streaming tails from live preview (#3965)
  • core: route countSessionMessages through parseLineTolerant (#3692)

Other

  • ci(release): keep skip-ci out of release PR titles (#3950)
  • chore: Add bilingual requirement to create-issue command (#3952)
  • [codex] Persist ACP model selection (#3947)
  • ci: reduce PR test matrix runtime (#3962)

0.15.8 - 2026-05-07

Added

  • web-templates: add light theme and toggle to /export HTML (#3908)
  • cli: replace inline AgentExecutionDisplay with always-on LiveAgentPanel (#3909)

Fixed

  • skills: allow symlinks pointing outside the skills directory (#3915)
  • core: foreground agent entry lingering in status bar after completion (#3921)
  • cli: prevent ESC in background tasks dialog from cancelling running request (#3922)
  • memory: address code review feedback for auto-memory recall (#3866)
  • cli: use tmux-safe dots spinner to reduce redraw pressure (#3903)

Other

  • test(sdk): align tool-control E2E with prior-read enforcement (#3898)
  • ci(issue-followup-bot): render bot comment newlines correctly (#3918)
  • ci(release): skip CI on the version-bump squash commit on main (#3912)

0.15.7 - 2026-05-07

Added

  • core: add FileReadCache and short-circuit unchanged Reads (#3717)
  • core: add shared permission flow for tool execution unification (#3723)
  • review: expand review pipeline + qwen review CLI subcommands (#3754)
  • telemetry: define HTTP OTLP endpoint behavior and signal routing (#3779)
  • core: event monitor tool with throttled stdout streaming (Phase C) (#3684)
  • cli: add MCP health pill to footer (#3741)
  • cli: wire Monitor entries into combined Background tasks dialog (#3791)
  • cli: include monitors in /tasks + add interactive-mode hint (#3801)
  • sdk-python: add PyPI release workflow (#3685)
  • core: support reasoning effort 'max' tier (DeepSeek extension) (#3800)
  • core: hint to background long-running foreground bash commands (#3809)
  • skills: parallelize loading + add path-conditional activation (#3604)
  • sdk-python: add network timeouts to release version helper (#3833)
  • cli: improve export format completion navigation (#3701)
  • cli: Add ability to switch models non-interactively from the cli (#3783)
  • weixin: add image sending support via CDN upload (#3781)
  • core,cli: surface and cancel auto-memory dream tasks (#3836)
  • cli: route foreground subagents through pill+dialog while running (#3768)
  • core: enforce prior read before Edit / WriteFile mutates a file (#3774)
  • cli: customize banner area (logo, title, hide) (#3710)
  • core: add signal.reason convention for ShellExecutionService (#3831 PR-1 of 3) (#3842)
  • cli: expand TUI markdown rendering (#3680)

Changed

  • extract shared release helper utilities (#3834)

Fixed

  • cli: honor proxy setting (#3753)
  • cli: restore SubAgent shortcut focus (#3771)
  • vscode-companion: align package eslint config with root and style cleanup (#3782)
  • test: restore abort-and-lifecycle stdin-close test to pre-#3723 version (#3777)
  • core: inject thinking blocks for DeepSeek anthropic-compatible provider (#3788)
  • cli: stop double-wrapping and double-printing API errors in non-interactive mode (#3749)
  • telemetry: suppress async resource attribute warning on startup (#3807)
  • core: address post-merge monitor tool and UI routing issues (#3792)
  • core: clear FileReadCache on every history rewrite path (#3810)
  • core: unescape shell-escaped file paths in Edit, WriteFile, and ReadFile tools (#3820)
  • openai: parse MiniMax thinking tags (#3677)
  • telemetry: add bounded shutdown timeout and fix service.version resource attribute (#3813)
  • acp: run auto compression before model sends (#3698)
  • core: coalesce MCP server rediscovery (#3818)
  • core: activate skills from discovered result paths (#3852)
  • core: use per-model settings for fast model side queries (#3815)
  • core: prevent auto-memory recall from blocking main request (#3814)
  • sdk-python: standardize TAG_PREFIX to include v suffix (#3832)
  • cli: prevent file paths from being treated as slash commands (#3743)
  • core: auto-compact subagent context to prevent overflow (#3735)
  • core: shrink file diff session records (#3872)
  • core: rebuild tool registry on subagent Config overrides so bound tools resolve to the subagent (#3873)
  • core: create temp dir before saving truncated shell output (#3875)
  • core: improve stream rate-limit retry handling (#3790)
  • core: address @tanzhenxin's PR-1 review notes (post-merge follow-up to #3842) (#3886)
  • core: stop per-subagent ToolRegistry on foreground-fork path (#3887)
  • cli: warn on ignored provider generation config (#3883)

Documentation

  • core: point background-shell + monitor guidance at both /tasks and the dialog (#3808)
  • cli: document new banner customization settings (#3885)

Other

  • chore: remove legacy Gemini workflows (#3725)
  • Add background agent resume and continuation (#3739)
  • Feat/stats model cost estimation rebase (#3780)
  • ci: add Qwen Code issue follow-up bot workflow (#3854)

0.15.6 - 2026-04-30

Fixed

  • memory: use project transcript path for dream (#3722)
  • cli: bound SubAgent display by visual height to prevent flicker (#3721)
  • cli: keep sticky todo panel compact (#3647)
  • core: replay DeepSeek reasoning_content on all assistant turns (#3747)
  • cli: correct model precedence — argv > settings > auth env vars (#3645)
  • core: preserve reasoning_content in rewind, compression, and merge paths (#3579) (#3737)
  • cli: persist directory add entries (#3752)
  • lsp: 修复 LSP 文档、isPathSafe 限制,并提升 LSP 工具调用率 (#3615)
  • vscode-companion: fill slash commands into input on Enter instead of auto-submitting (#3618)
  • ci: add merge-back PR for stable releases in release workflow (#3764)

Other

  • chore(core): drop tool token usage tracking (#3727)

0.15.5 - 2026-04-29

Added

  • core: wire background shells into the task_stop tool (#3687)
  • skills: add tmux-real-user-testing skill for readable TUI test logs (#3577)
  • cli: wire background shells into combined Background tasks dialog (#3720)

Fixed

  • cli: refresh static header on model switch (#3667)
  • core: inject reasoning_content on DeepSeek tool-call replays (#3729)

Other

  • mcp config as cli (#1279)

0.15.4 - 2026-04-28

Added

  • Adds Catalan language support (#3643)
  • cli: add API preconnect to reduce first-call latency (#3318)
  • cli: Add argument-hint support for slash commands (#3593)
  • cli,core: LLM-generated summary labels for tool-call batches (#3538)
  • cli: add OSC notification support for iTerm2, Kitty, and Ghostty (#3562)
  • vscode: add tab dot indicator and notification system (#3106) (#3661)
  • core: model-facing agent control (task_stop, send_message, per-agent transcript) (#3471)
  • cli: background-agent UI — pill, combined dialog, detail view (#3488)
  • core: managed background shell pool with /tasks command (#3642)

Changed

  • config: dedupe QWEN_CODE_API_TIMEOUT_MS env override logic (#3653)

Fixed

  • vscode-companion: slash command completion not triggering after message submit (#3609)
  • cli: guard gradient rendering without colors (#3640)
  • config: support QWEN_CODE_API_TIMEOUT_MS across OAuth and non-OAuth paths (#3629)
  • cli: add API Key option to qwen auth interactive menu (#3624)
  • core: recover from }{ glued records on session JSONL load (#3606) (#3656)
  • core: split tool-result media into follow-up user message for strict OpenAI compat (#3617)
  • core: handle shell line continuations in command splitting (#3600)
  • cli: recognize OpenAI-compatible providers in qwen auth status (#3623)
  • core,cli: stop stripping reasoning on model switch/history load (#3682)
  • ci: use squash merge for SDK release auto-merge (#3690)
  • cli: preserve description in subject-bearing thought chunks (#3691)
  • core: treat ask_user_question multiSelect as optional (#3699)
  • core: set DeepSeek V4 context to 1M and output to 384K (#3693)
  • ci: preserve preview version overrides (#3705)

Other

  • chore(gitignore): add .codex directory (#3665)
  • Feat/openrouter auth (#3576)
  • test(cli): remove 8 flaky TUI input tests surfaced by CI history mining (#3694)

0.15.3 - 2026-04-26

Added

  • vscode: add native context menu copy actions for webview chat (#3477)
  • cli: add Traditional Chinese (zh-TW) as a UI language option (#3569)
  • vscode: expose /skills as slash command with secondary picker (#2548)
  • cli: add conversation rewind feature with double-ESC and /rewind command (#3441)
  • adds a Space-to-preview affordance to the /resume session picker (#3605)
  • cli: add sticky todo panel to app layouts (#3507)

Changed

  • cli: undo OPENAI_MODEL precedence change in modelProviders lookup (#3567) (#3633)

Fixed

  • cli: memoize useHistory() return to avoid unnecessary re-renders (#3547)
  • cli: respect OPENAI_MODEL precedence in CLI model resolution (#3567)
  • cli: add TUI flicker foundation fixes (#3591)
  • cli: drain runExitCleanup before process.exit in error handlers (#3602)
  • review: respect /language output setting for local reviews (#3611)
  • test: update rewind E2E Test 1 assertion after isRealUserTurn fix (#3622)
  • core: preserve settings-sourced apiKey when registry model envKey is absent (#3495)
  • telemetry: use safeJsonStringify in FileExporter to avoid circular reference crash (#3630)
  • core: match DeepSeek provider by model name for sglang/vllm (#3613) (#3620)

Performance

  • core: cut runtime sync I/O on tool hot path by 91% (#3581)

Documentation

  • github: tighten PR template validation guidance (#3522)
  • telemetry: clarify Alibaba Cloud console entry (#3498)

Other

  • feat(SDK) Add Python SDK implementation for #3010 (#3494)
  • test(arena): cover select dialog key actions (#3614)

0.15.2 - 2026-04-24

Added

  • session: auto-title sessions via fast model, add /rename --auto (#3540)
  • web-search: remove built-in web_search tool, replace with MCP-based approach (#3502)
  • docs: add qwen-code skills, agents, and updated AGENTS.md (#3575)
  • vscode-companion: support /export session command (#2592)

Changed

  • core: make OpenAI converter stateless (follow-up to #3525) (#3550)
  • vscode-ide-companion: undo #3450 split-stream timestamp sharing (#3573)

Fixed

  • core: treat empty 'pages' parameter as unset in ReadFile (#3559)
  • i18n: sync mismatched keys between en.js and zh.js (#3534)
  • cli: remove residual blank lines after MCP init completes (#3509)
  • sdk-java: pass custom env to CLI process (#3543)
  • cli: promote resubmitted history prompt to most recent (#3531)
  • Strengthen error handling in qwenOAuth2.ts to prevent unhandled 'error' event (#3481)
  • acp: support SSE and HTTP MCP servers in ACP mode (#3574)
  • cli: run ACP Agent tool calls concurrently (#2516) (#3463)
  • cli: disable Kitty keyboard protocol on SIGINT to prevent garbled 9;5u output (#3544)
  • cli: dispatch queued slash commands through the slash path (#3523)
  • core: preserve reasoning_content during session resume and active sessions (GH#3579) (#3590)

0.15.1 - 2026-04-23

Added

  • cli: combine elapsed + timeout in shell time indicator (#3512)

Fixed

  • core: scope StreamingToolCallParser per stream, not per Converter (#3516) (#3525)
  • cli: stop slash completion render loop (#3533)

Other

  • chore: bump version to 0.15.1 (#3541)

0.15.0 - 2026-04-22

Added

  • acp: add complete hooks support for ACP integration (#3248)
  • optimize compact mode UX — shortcuts, settings sync, and safety (#3100)
  • hooks: Add HTTP Hook, Function Hook and Async Hook support (#2827)
  • memory: managed auto-memory and auto-dream system (#3087)
  • cli: support multi-line status line output (#3311)
  • skills: add /batch skill for parallel batch operations (#3079)
  • background subagents with headless and SDK support (#3076)
  • core: add path-based context rule injection from .qwen/rules/ (#3339)
  • cli: add dual-output sidecar mode for TUI (#3352)
  • bind M-d to a reasonable (Emacs-like) default (#3358)
  • core: detect tool validation retry loops and inject stop directive (#3178)
  • mcp: add OSC 52 copy hotkey for OAuth authorization URL (#3393)
  • vscode-ide-companion: add dedicated agent execution display (#2590)
  • cli: add early input capture to prevent keystroke loss during startup (#3319)
  • cli: support refreshInterval in statusLine for periodic refresh (#3383)
  • core: add dynamic swarm worker tool (#3433)
  • tools: add Markdown for Agents support to WebFetch tool (#2734)
  • core: enhanced loop detection with stagnation + validation-retry checks (#3236)
  • cli: add /doctor diagnostic command (#3404)
  • vscode-companion: enable Plan Mode toggle and approval UI (#2551)
  • cli: add session recap with /recap and auto-show on return (#3434)
  • cli: add bare startup mode (#3448)
  • vscode-ide-companion: support /insight command (#2593)
  • cli: add slashCommands.disabled setting to gate slash commands (#3445)
  • core: PDF text extraction fallback and Jupyter notebook parsing (#3160)
  • cli: add OAuth configuration flags to mcp add (#3442)
  • cli: add tool execution progress messages (#3155)
  • cli: make ACP message rewrite timeout configurable (#3475)
  • cli: attribute /stats rows to the originating subagent (#3229)
  • webui: render markdown in generic and web-fetch tool outputs (#3469)
  • cli: display real-time token consumption during streaming (#2742) (#3329)
  • retry: add persistent retry mode for unattended CI/CD environments (#3080)
  • vscode: replace OAuth with Coding Plan / API Key provider setup (#3398)
  • arena: add comparison summary for agent results (#3394)
  • session: add rename, delete, and auto-title generation for session (#3093)
  • cli: cap inline shell output with configurable line limit (#3508)
  • cli: auto-detect terminal theme ('auto' or unset) (#3460)
  • cli: Phase 2 — slash command multi-mode expansion, ACP fixes, and UX improvements (#3377)

Changed

  • core: move fork subagent params from execute() to construction time (#3255)
  • cli: replace slash command whitelist with capability-based filtering (Phase 1) (#3283)

Fixed

  • sdk: avoid leaking process exit listeners in ProcessTransport (#3295)
  • cli: prevent statusline spawn EBADF from crashing CLI (#3264) (#3310)
  • cli: remember "Start new chat session" until summary changes (#3308)
  • cli: defer update notifications until model response completes (#3321)
  • core: limit skill watcher depth to prevent FD exhaustion (#3320)
  • core: strip thinking blocks from history on model switch (#3315)
  • core: add shell argument quoting guidance to prevent special char errors (#3327)
  • cli: reduce terminal redraw cursor movement (#3381)
  • dingtalk: only suffix '(cont.)' on continuation chunks, not the first (#2977)
  • dingtalk: preserve empty text after @mention strip instead of falling back (#2978)
  • dingtalk: remove reactionContext map to stop leak on blocked messages (#2979)
  • sandbox: fall back to 'latest' tag when image name has no colon (#2962)
  • scripts: remove duplicate bundle rmSync in clean script (#2964)
  • integration-tests: honor stdinDoesNotEnd option (#2966)
  • scripts: Fix "undefined Options: ..." in generated JSON schema for enum settings without descriptions. (#2963)
  • text-buffer: unify offset-to-position logic (#2969)
  • weixin: check full 4-byte PNG magic signature (#2970)
  • cli: re-arm disconnected listener on rebuilt AcpBridge after crash (#2975)
  • sdk: settle pending next() promise in Stream.return() to prevent hangs (#2981)
  • cli: auto-submit on number key press in AskUserQuestionDialog (#3407)
  • tool-registry: add lazy factory registration with inflight concurrency dedup (#3297)
  • cli: wait for dual output stream shutdown (#3416)
  • build: invoke tsx directly via node --import instead of npx (#3237)
  • core: support older Git during repository initialization (#3436)
  • cli: /clear dismisses active /btw side-question dialog (#3431)
  • cli: let /btw use live conversation context (#3429)
  • display ">100%" when context usage exceeds limit (#2766)
  • ui: constrain shell output width to prevent box overflow (#2857)
  • core: remove abort listener during cleanup (#3438)
  • vscode-ide-companion: preserve split stream message ordering (#3450)
  • core: normalize Windows PATH for MCP stdio servers (#3451)
  • core: prevent malformed permission rules from becoming tool-wide catch-alls (#3467)
  • cli: pin /recap above input and align defaults with fastModel (#3478)
  • cli: rework session recap rendering and add blur threshold setting (#3482)
  • mcp: make the OAuth authorization URL clickable when wrapped (#3489)
  • core: recover from truncated tool calls via multi-turn continuation (#3313)
  • editor: detect Zed.app on macOS when CLI is not in PATH (#3303)
  • openai: when samplingParams is set, pass it through verbatim (#3458)
  • Handle missing xdg-open (ENOENT) gracefully to prevent crash (#1675)
  • core: use empty string instead of null for reasoning-only assistant content (#3499)
  • cli: inject plan/subagent/arena system reminders in ACP (#1151) (#3479)
  • core: reject truncated subagent write_file calls (#3505)

Performance

  • vscode: fix input lag in long conversations (#2550)

Documentation

  • fix Windows install command to work in both CMD and PowerShell (#3252)
  • update authentication methods to reflect OAuth discontinuation (#3325)

Other

  • test(core): stabilize glob truncation tests (#3322)
  • test(integration): match new cron notification format in interactive tests (#3402)
  • Fix typo in class name (#2189)
  • test(core): update scheduler registry mock (#3415)
  • ci(stale): enable 60+30 stale/close policy for pull requests (#3375)
  • Revert "feat(core): add dynamic swarm worker tool" (#3468)
  • test(integration): switch settings-migration probe from --help to mcp list (#3486)

0.14.5 - 2026-04-15

Added

  • cli/sdk: expose /context usage data in non-interactive mode and SDK API (#2916)
  • cli: add startup performance profiler (#3232)
  • core: implement fork subagent for context sharing (#2936)
  • vscode-ide-companion: add /account for account display (#2984)
  • acp: LLM-based message rewrite middleware with custom prompts (#3191)
  • auth: discontinue Qwen OAuth free tier (2026-04-15 cutoff) (#3291)

Fixed

  • core: detect rate-limit errors from streamed SSE frames (#3246)
  • vscode: limit session tab title length to prevent tab bar overflow (#3249)
  • core: respect custom Gemini baseUrl from modelProviders (#3212)
  • core: allow thought-only responses in GeminiChat stream validation (#3251)
  • cli: make /bug easier to open in terminals without hyperlink support (#3257)
  • cli: ignore literal Tab input in BaseTextInput (#3270)
  • channels/dingtalk: prioritize senderStaffId over senderId for allowedUsers matching (#3294)
  • cli: block discontinued qwen-oauth model selection in ModelDialog (#3299)

0.14.4 - 2026-04-13

Added

  • cli: CJK word segmentation and Ctrl+arrow navigation optimization (#2942)
  • replace text input with model picker for Fast Model in /settings (#3120)
  • show description for active setting in /settings dialog (#3116)
  • i18n: add French (fr-FR) locale support (#3126)
  • cli: queue input editing — pop queued messages for editing via ↑/ESC (#2871)
  • channels: add voice message support in TelegramAdapter (#3150)
  • cli: support tools.sandboxImage in settings (#3146)
  • cli: warn when workspace overrides global modelProviders (#3148)
  • hooks: Add StopFailure and PostCompact hook events (#2825)
  • core: intelligent tool parallelism with Kind-based batching and shell read-only detection (#2864)
  • add contextual tips system with post-response context awareness (#2904)
  • subagents: propagate approval mode to sub-agents (#3066)
  • skills: add model override support via skill frontmatter (#2949)
  • cli: support bare exit/quit commands to exit the CLI (#3201)
  • subagents: add disallowedTools field to agent definitions (#3064)
  • core: add microcompaction for idle context cleanup (#3006)

Changed

  • merge test-utils package into core (#3200)

Fixed

  • vscode: force fresh ACP session on new-session action (#2874)
  • cli: prioritize slash command completions (#3104)
  • cli: improve markdown table rendering in terminal (#2914)
  • prevent statusline script from corrupting settings.json (#3091)
  • cli: check NEWLINE before SUBMIT in TextInput multiline mode (#3094)
  • input: preserve tab characters in pasted content (#3045)
  • use latest assistant token count on resume instead of stale compression checkpoint (#3109)
  • upgrade normalize-package-data to 7.0.1 (fixes DEP0169 warning) (#2865)
  • core: cap recursive file crawler at 100k entries to prevent OOM (#3138)
  • channels: apply proxy settings to channel start command (#3136)
  • lazy-load channel plugins to eliminate DEP0040 startup warning (#3134)
  • core: fall back to CLI confirmation when IDE diff open fails (#3031)
  • core: handle empty OAuth refresh response body (#3123)
  • followup: fix follow-up suggestions not working on OpenAI-compatible providers (#3151)
  • cli: recover from stuck bracketed-paste mode and keep Ctrl+C reachable (#3181)
  • cli: set qwen3.5-plus as default model for Coding Plan (#3193)
  • core: respect respectGitIgnore setting in @file injection path (#3197)
  • core: show clear error when MCP server cwd does not exist (#3192)
  • cli: honor --openai-api-key in non-interactive auth validation (#3187)
  • cli: stop refilling input with prior prompt on cancel (#3208)
  • core: allow Unicode characters in agent names (#3194)

Documentation

  • readme: Add announcement for Qwen OAuth free tier policy adjustment (#3207)
  • update quota exceeded alternatives to OpenRouter and Fireworks (#3217)

Other

  • chore: remove legacy directories (.gcp, .aoneci, hello, .allstar) (#3199)
  • ci(release): parallelize release validation (#3132)
  • chore: bump version to 0.14.4 (#3209)

0.14.3 - 2026-04-10

Added

  • plan: add "Yes, restore previous mode" option when exiting plan mode (#3008)
  • review: enhance /review with deterministic analysis, autofix, and security hardening (#2932)
  • ui: add customizable status line with /statusline command (#2923)

Changed

  • centralize IDE diff interaction in CoreToolScheduler (#2728)
  • rename verboseMode to compactMode for better UX clarity (#3075)

Fixed

  • ui: Remove dead dirs state and unused hook parameter from InputPrompt (#2891)
  • followup: prevent tool call UI leak and Enter accept buffer race (#2872)
  • core: add getDefaultPermission and allowExternalPaths to ripGrep tool (#2948)
  • webui: fix chat input scrollbar not draggable in VS Code plugin (#3038)
  • bundle: inline tree-sitter WASM for bundled installs (#2985)
  • cli: serialize subagent confirmation focus to prevent concurrent input conflicts (#2930)
  • permissions: match env-prefixed shell commands against saved permission rules (#2850)
  • prevent Shift+Tab from accepting prompt placeholder suggestion (#3060)
  • weixin: add missing iLink headers to QR code login flow (#3044)
  • improve /model --fast description clarity (#3077)
  • cli: add 'detail' subcommand to /context command (#3042)
  • persist ProceedAlways permission outcome in compact mode (#3069)
  • add --fast hint to /model description for discoverability (#3086)

Other

  • chore: remove outdated pr-review skill (#3028)
  • test: add tests for confirmation-bus, prompt-registry, and cli/core modules (#2272)
  • [codex] fix checkpointing init in non-repo directories (#3041)
  • chore: bump version to 0.14.3 (#3112)

0.14.2 - 2026-04-08

Added

  • cli: implement /plan command for plan mode (#2921)
  • core: thinking block cross-turn retention with idle cleanup (#2897)
  • core: adaptive output token escalation (8K default + 64K retry) (#2898)
  • add bugfix workflow, test-engineer agent, and debugging skills (#2881)
  • add qwen3.6-plus model to ModelStudio Coding Plan (#3015)

Fixed

  • vscode-ide-companion: fix blank screen in VS Code 0.14.1 webview (#2959)
  • hooks: preserve null exit code from signal kills instead of collapsing to 0 (#2976)
  • cli: disable follow-up suggestions by default (#2954)
  • cli: fix csiUPrefix error in Linux/Wayland (#2995)
  • cli: sync packages/cli version and sandboxImageUri to 0.14.2 (#3026)

Other

  • bump version to 0.14.2 (#3020)

0.14.1 - 2026-04-07

Added

  • cli: enhance /btw side question with improved prompt and Ctrl+C/D cancel (#2776)
  • cli, webui: add follow-up suggestions feature (#2525)
  • webui: unify remaining tool display labels (#2595)
  • allow Ctrl+Y to skip rate-limit retry delay immediately (#2420)
  • prompt: add dangerous actions behavior guidance in system prompt (#2889)
  • core: implement mid-turn queue drain for agent execution (#2854)
  • to #2767, support verbose and compact mode swither with ctrl-o (#2770)

Changed

  • tools: remove duplicate proxy setup in WebFetchTool (#2888)

Fixed

  • hooks: clean up abort listener in error handler (#2841)
  • cli: commit pending AI response before adding hook system message (#2848)
  • subagents: preserve session subagents during cache refresh (#2895)
  • telegram: send only failed chunk as plaintext fallback (#2894)
  • auth: only release token refresh lock if it was acquired (#2893)
  • extensions: handle individual extension update check failures (#2892)
  • mcp: clear OAuth callback timeout on all completion paths (#2890)
  • mcp: clean up directory listener on connect failure (#2896)
  • permissions: allow non-core tools to bypass coreTools allowlist (#2843)
  • prevent output-language.md from being overwritten on startup (#2842)
  • cli: restore ? shortcuts in vim normal mode (#2884)
  • cli: prevent ideCommand failure from breaking all slash commands… (#2822)
  • improve ACP connection reliability with spawn retry and auto-reconnect (#2804)
  • vscode: inherit model selection for new chat tabs (#2802)
  • hooks: parse JSON output on exit code 2 to preserve hook additionalContext (#2815)
  • cli: remove quote-based drag detection to prevent input lag (#2837)
  • cli: restore previous theme on /theme cancel (refs #2833) (#2834)
  • extensions: await async calls in extension refresh chain (#2835)
  • cli: preserve runtime-added models when saving settings (#2455)
  • tools: exit_plan_mode now exits correctly in YOLO mode (#2586)
  • vscode: remove @vscode/vsce from devDependencies to fix local build (#2824)
  • webui: remove @qwen-code/qwen-code-core dependency (#2902)
  • core: coerce stringified JSON values for anyOf/oneOf MCP tool schemas (#2858)
  • weixin: add missing iLink-App-Id and iLink-App-ClientVersion headers (#2943)

Other

  • chore: bump version to 0.14.1 (#2849)
  • Fix Markdown table cell separator escaping in MarkdownDisplay.tsx (#2463)
  • Remove CODEOWNERS file (#2937)

0.14.0 - 2026-04-03

Added

  • hooks: remove experimental flag and add disabled state UI (#2781)
  • vscode: add retry logic and auto-reconnect for ACP connection (#2666)
  • add cross-provider model selection for subagents (#2698)
  • extension: Add npm registry support for extension installation (#2719)
  • cron: add in-session loop scheduling with cron tools (#2731)
  • channels: add extensible Channels platform with plugin system and Telegram/WeChat/DingTalk channels (#2628)
  • mcp: add reconnect command and implement auto-reconnect logic (#2428)

Changed

  • ui: improve hook event handling with dedicated history items (#2696)
  • PR #2666 ACP retry/reconnect logic (#2792)

Fixed

  • add .qwen path replacement in markdown files during extension install (#2769)
  • normalize proxy URLs to support addresses without protocol prefix (#2745)
  • make /compress handle tool-heavy conversations correctly (#2659)
  • core: robustly resolve tree-sitter WASM path for symlinked CLI installations (#2764)
  • prevent subagent telemetry from overwriting main agent footer context (#2765)
  • upgrade @lydell/node-pty to 1.2.0-beta.10 to fix PTY FD leak on macOS (#2777)
  • allow web fetch approvals in plan mode (#2763)
  • prevent orphan ACP processes on tab close and clean up MCP subprocesses on shutdown (#2662)
  • cli: enhance KeypressProvider with kitty sequence timeout manage… (#2612)
  • delete design doc (#2789)
  • resolve punycode to userland package and skip env var test in sandbox (#2796)
  • hide skills with cron allowedTools when cron is disabled (#2811)

Other

  • Enhance /review: add verification, false positive control, and PR comments (#2687)
  • chore(channels): make plugin-example private and remove from release workflow (#2801)
  • 🎉 feat: add Qwen3.6-Plus model support (#2820)

0.13.2 - 2026-03-30

Added

  • add bundled qc-helper skill, qwen-code-claw reference, and README claw guide (#2623)

Fixed

  • docs: update references from Bailian to ModelStudio in README an… (#2714)
  • shell: resolve Git Bash path for node-pty on Windows (#2733)
  • resolve /clear command and ESC key lag caused by hooks system (#2656)
  • preserve original line endings (CRLF/LF) when editing files (#2707)
  • core: resolve tree-sitter wasm path for symlinked CLI (#2744)
  • cli: prevent terminal response leakage on high-latency SSH (#2718)
  • shell: remove command substitution deny check from getDefaultPermission (#2747)
  • make list_directory integration test more deterministic (#2752)

Documentation

  • clarify envKey usage and add env field examples (#2715)

Other

  • chore: bump version to 0.13.1 (#2716)
  • chore: release v0.13.2 (#2750)

0.13.1 - 2026-03-27

Added

  • hooks: Add comprehensive hook execution telemetry (#2421)
  • hooks ui: refactor ui for Qwen Code hooks (#2602)
  • human-readable permission labels, deny rule feedback, and multi-dir search improvements (#2637)
  • auth: implement Alibaba Cloud Standard API Key support (#2668)

Fixed

  • extensions: support non-GitHub git URLs for extension installation (#2539)
  • cli: /memory show --project and --global now display all configured context files (#2368)
  • mcp: restore trust+isTrustedFolder permission check in getDefaultPermission (#2642)
  • cli: preserve selected auth type on startup auth failure (#2080)
  • vscode-ide-companion: improve ACP error handling to prevent silent loading hangs (#2546)
  • vscode-ide-companion: silence secondary sidebar warning on older VS Code versions (#2545)
  • lsp: improve C++/Java/Python language server support (#2547)
  • vscode-ide-companion: preserve model metadata on switch (#2591)
  • windows: support git bash/MSYS2 shell detection on Windows (#2645)
  • shell: handle PTY race condition errors gracefully (#2611)
  • acp-integration/agent: clear stale subagent diff confirmation after IDE accept (#2631)
  • use config working directory for OpenAI logger path resolution in ACP mode (#2675)
  • @ file search stops working after selecting a slash command (#2694)
  • acp: align permission flow across clients (#2690)

Documentation

  • add hooks documentation and fix JSON schema (#2679)

Other

  • test(sdk): improve tool control docs and add pattern matching tests (#2644)
  • test(sdk): improve permission message pattern matching (#2712)

0.13.0 - 2026-03-23

Added

  • add system prompt customization options in SDK and CLI (#2400)
  • hooks: implement hooks extension mechanism (#2352)
  • core: execute task tools concurrently for improved performance (#2434)
  • arena: Add agent collaboration arena with multi-model competitive execution (#1912)
  • ui: Display token usage in the loading/progress indicator (#2445)
  • vscode-ide-companion: add Tab key fill-only behavior for completions (#2431)
  • add /context command to display context window token usage breakdown (#1835)
  • support skills in .agents directory and other provider directories (#2202)
  • add auth CLI command and Qwen Code Claw skill (#2440)
  • export: add metadata and statistics tracking (#2328)
  • hooks: Implement 10 core event hooks for session lifecycle and tool execution (#2203)
  • support permission (#2283)
  • add .agents/skills as a skill provider directory (#2476)
  • vscode-ide-companion: add image paste support (#1978)
  • storage: support configurable runtime output directory (#2127)
  • core: add Explore agent and rename TaskTool to AgentTool (#2489)
  • hooks: use extension dir files instead of tmp dir files (#2478)
  • cli: add /btw slash command for ephemeral side questions (#2371)

Changed

  • core: improve error handling and quota detection (#2458)
  • Refactors the VS Code file completion system to use fuzzy search (#2437)

Fixed

  • pipeline: handle duplicate finish_reason chunks from OpenRouter (#2403)
  • cli: show newest-first history for Ctrl+R command search (#2425)
  • Ensure message_start and message_stop events are paired in SDK streaming (#2448)
  • core: add truncation support for MCP tool output (#2446)
  • vscode-ide-companion: update URI handling for Windows paths (#2457)
  • test: update LoadingIndicator snapshot for correct output alignment (#2469)
  • correct token limits for MiniMax-M2.5 and GLM models (#2470)
  • update TOS link in VS Code extension README (#2495)
  • preserve modalities during OpenAI logging request conversion (#2473)
  • clean up ACP connection state when child process exits (#2472)
  • vscode-ide-companion: pass proxy configuration to CLI (#2501)
  • include bundled skills directory in published package (#2521)
  • update Discord invite link to permanent URL (#2535)
  • web-fetch: add simplified system instruction to prevent AI greeting responses (#2610)
  • hooks: terminate hook child processes when user exits CLI (#2607)

Documentation

  • rename QWEN.md to AGENTS.md to follow community best practices (#2527)
  • add Screenshots/Video Demo section to PR template (#2533)

Other

  • chore: bump version to 0.13.0 (#2451)
  • Fix shell permission parsing and test-created debug artifacts (#2536)

0.12.6 - 2026-03-17

Fixed

  • improve max_tokens handling with conservative defaults (#2438)

Other

  • chore: bump version to 0.12.6 (#2442)

0.12.5 - 2026-03-16

Fixed

  • shell: resolve Windows encoding issues for non-ASCII output (#2423)

Other

  • test(sdk): simplify integration tests for reliability (#2410)
  • chore: bump version to 0.12.5 (#2422)

0.12.4 - 2026-03-16

Added

  • skills: add bundled /review skill for out-of-the-box code review (#2348)
  • skills: add docs audit and update helpers (#2397)

Fixed

  • insight: handle individual LLM failures in qualitative insights (#2341) (#2361)
  • core: add deepseek-r1 to output token limit patterns (#2362)
  • i18n: localize slash command descriptions (#2333)
  • core: guard against empty choices in convertOpenAIResponseToGemini (#2364)
  • extension: disable symlinks on Windows during git clone to fix install failure (#2286)
  • core: reject PDF files to prevent session corruption (fixes #2020) (#2024)
  • cli: allow /dev/ptmx and /dev/ttys* in macOS permissive sandbox (#2391)
  • correct hooks JSON schema type definition (#2280)
  • core: strip orphaned user entries before retry to prevent API errors (#2367)
  • core: correctly capture rapid pty outputs in interactive shell mode (#2389)
  • vscode: prevent race conditions in prompt cancellation and streaming (#2374)
  • core: improve shell tool truncation, simplify tool output handling, and remove summarization (#2388)
  • remove redundant plan files (#2407)
  • core: normalize Windows PATH-like env keys for shell execution (#1904)
  • auto-detect max_tokens from model when not set by provider (#2356)

Documentation

  • explain Docker sandbox runtime and Java usage (#1642)
  • integration: add ACP Registry for Zed and JetBrains integration docs (#2372)

Other

  • Docs/subagent system prompt limits (#2001)
  • Keep rejected plan content visible in plan mode (#2157)
  • chore(CODEOWNERS): remove required reviewers for vscode-ide-companion and webui packages (#2408)
  • Increase DEFAULT_OUTPUT_TOKEN_LIMIT from 8K to 16K (#2411)

0.12.3 - 2026-03-13

Added

  • mcp: improve OAuth auth UX - post-auth feedback, i18n, clear auth, and bug fixes (#2327)

Fixed

  • ide: resolve IDE connection issues in some VSCode clients and optimize connection config lookup (#2322)
  • core: correct GPT-5.x input token limit to 272K (#2345)
  • shell: pass args as string on Windows to prevent quoting issues (#2347)
  • core: disable node-pty on older Windows builds with broken ConPTY (#2349)
  • improve qwen mcp add option handling for arrays (#2245)
  • cli: prevent Ctrl+F from leaking to PTY as ^F artifact (#2350)
  • core: remove duplicate exports in packages/core/src/index.ts (#2265)
  • cli: remove unused debug log session setup in loadSettings (#2355)

Other

  • Refactors FileSystemService interface to use ACP-aligned request/response objects (#2344)

0.12.2 - 2026-03-12

Added

  • core: add truncation support to LS tool (#2324)

Fixed

  • export command should use current session ID instead of loadLastSession (#2268)
  • webui: add Tab key support to CompletionMenu (#2308)
  • core: convert array content to string for DeepSeek API (#2320)
  • improve ACP file operation error handling (#2298)
  • remove QR code from OAuth authentication UI to prevent screen flickering (#2315)
  • clear retry error messages promptly after auto-retry succeeds (#2326)

Other

  • chore: add yiliang114 as code owner for vscode-ide-companion and webui (#2312)
  • chore: Release v0.12.2 (#2307)

0.12.1 - 2026-03-11

Added

  • cli: change temporary filename prefix to qwen-edit- (#2045)
  • vscode-ide-companion: add sidebar view and multi-position chat layout (#2188)

Fixed

  • mcp: use scopes from protected resource metadata (RFC 9728) (#2212)
  • cli: clear static error message when starting new query (#2110)
  • clean up MCP server display and add CONCAT merge strategy for mcp allowed/excluded lists (#2219)
  • hooks: Fix failing hook integration tests by updating hook scripts to create hook_invoke_count.txt (#2230)
  • hooks: Remove useless expect (#2238)
  • core: skip openDiff in YOLO mode to prevent VS Code editor from opening (#2221)
  • cli: suppress Windows pty resize race condition (#2289)
  • vscode-ide-companion: map ENOENT errors to ACP RESOURCE_NOT_FOUND in readTextFile (#2291)

Other

  • improve readability of context compression description (#2224)
  • refactore: Start qwen after installation (#2290)

0.12.0 - 2026-03-09

Added

  • add tabWidth support for code highlighting and replace tabs with spaces in CodeColorizer (#2077)
  • export-html: viewer for tool call results (#2085)
  • terminal-capture: add streaming capture with GIF generation (#2116)
  • commands: add custom QC commands for GitHub workflows (#2117)
  • add support for printable CSI-u keys in KeypressContext (#1827)
  • add JSON Schema validation for VS Code settings (#1830)
  • hooks: Implement hooks system infrastructure with CLI and UI management (#1988)
  • shell: enable PTY by default and various enhancements (#2108)
  • Enhance MCP Management TUI with dynamic enable/disable and runtime updates (#1831)
  • Add interactive TUI for extension management (#2008)
  • Implement AskUserQuestionTool for interactive user queries (#1828)

Changed

  • cli: consolidate message components and fix leading icon display issues (#2120)
  • unify sandbox configuration naming and improve telemetry config (#1793)
  • acp: migrate ACP integration to @agentclientprotocol/sdk (#2063)

Fixed

  • cli: parse markdown command frontmatter on Windows CRLF/BOM (#2078)
  • cli: ignore stream-json input format in TTY mode to prevent hanging (#2047)
  • core: prevent duplicate function-call yields from trailing stream chunks (#2125)
  • ide: add async DNS check for host.docker.internal in container environments (#1817)
  • handle symlinks during extension installation (#2056)
  • preserve original encoding when reading/writing non-UTF-8 files (#2073)
  • install: Add tips and fix installation issues for installation scripts (#2118)
  • core: add independent retry budget for transient stream anomalies (#2126)
  • windows: resolve silent failures caused by CRLF line endings (#1868) (#1890)
  • cli: keep AGENTS.md enabled by default context reset (#2082)
  • core: remove LLM-based loop detection and enable skipLoopDetection by default (#2092)
  • keyboard: handle Kitty keypad private-use keycodes (#2137)
  • hooks: fix result aggregator for userPromptSubmit and fix enable for integration test (#2139)
  • hooks: Move enable from hooks to hookConfig and add max turns (#2156)
  • Hooks online integration test failed (#2183)
  • improve MCP Management & Extension Management TUI based on 0.12.0 feedback (#2208)
  • test: use toContain instead of toBe for file content assertion (#2218)

Other

  • chore: bump version to 0.12.0 (#2090)
  • Refactor settings migration to sequential framework with atomic file writes (#2037)
  • chore: add @DragonnZhang to CODEOWNERS (#2138)

0.11.1 - 2026-03-03

Added

  • support AGENTS.md as default context file (#2018)
  • cli: add Ctrl+Y shortcut to retry failed requests (#2011)
  • cli: improve auth dialog UX with clearer three-option layout (#2030)
  • i18n: strengthen output-language.md template to enforce language compliance (#2005)

Changed

  • core: extract single tool-call execution path (#1999)

Fixed

  • subagent: append output-language.md to subagent system prompt and prioritize project-level settings (#1993)
  • core/rateLimit: add support for rate limit error code 1305 and custom retry error codes (#1995)
  • logging: reduce excessive streaming output in session history logs (#2041)
  • add modality defaults to prevent API errors when reading PDFs and other media (#1982)
  • detect and protect against truncated tool call output (#2021)
  • acp: add session/set_config_option method to enable config option updates from Zed UI (#2059)
  • dashscope: support subdomain URL patterns for DashScope provider detection (#2060)

Documentation

  • update installation instructions (#1994)

Other

  • chore: bump version to 0.11.1 (#2026)
  • Fix ACP protocol compatibility issues with Zed editor (#2017)

0.11.0 - 2026-02-28

Added

  • Add clipboard image support and attachment UI to CLI (#1612)
  • support MCP readOnlyHint annotation in plan mode (#1826) (#1837)
  • Add insight command for personalized programming insights (#1593)
  • auth: add automatic backup of settings.json before auth modification (#1952)
  • cli: Increase /insight feature exposure via weighted tips (#2019)

Fixed

  • Installation script permission check for arch os and add sudo check (#1877)
  • normalize Windows paths to lowercase for case-insensitive session matching (#1768)
  • enforce plan mode restrictions in ACP sessions (#1812)
  • test: keep plan mode active during ACP integration test (#1956)
  • change workspaceFolders capability to boolean for LSP servers (#1929)
  • unblock input after ESC cancel (#1796)

Documentation

  • enhance modelProviders documentation with comprehensive examples and behavior clarifications (#1927)
  • fix documentation errors in commands and model-providers (#1962)

Other

  • 📸 terminal-capture: CLI Terminal Screenshot Automation (#1840)
  • chore: bump version to 0.11.0 (#1953)
  • Merge coder-model and qwen3.5-plus, remove vision auto-switching (#1852)
  • Rename GEMINI_CLI_INTEGRATION_TEST to QWEN_CODE_INTEGRATION_TEST and refactor sandbox user handling (#1966)

0.10.6 - 2026-02-24

Added

  • add third-party models (glm-4.7, kimi-k2.5, qwen3-coder-next) to Coding Plan (#1907)
  • runner: support auth_type for model configuration (#1874)
  • update bailian coding plan models (#1931)

Fixed

  • fs: Improve BOM detection with length check and codePointAt (#1857)
  • update security vulnerability reporting channel (#1921)

Other

  • chore: bump version to 0.10.5 (#1886)
  • Fix release workflows: standardize notes generation and add prerelease labels (#1885)
  • chore: exclude .qwen/commands/ and .qwen/skills/ from gitignore (#1847)

0.10.5 - 2026-02-18

Added

  • add qwen3.5-plus model support for Coding Plan (#1867)

Other

  • chore: bump version to 0.10.4 (#1864)

0.10.4 - 2026-02-18

Documentation

  • add news banner about Qwen3.5-Plus launch (#1854)

Other

  • Fix sandbox user permission in integration tests (#1843)
  • Add Coding Plan Global/Intl region support (#1860)
  • chore: bump version to 0.10.3 (#1863)

0.10.3 - 2026-02-16

Added

Documentation

  • improve settings.json configuration guide with quick setup examples (#1850)

Other

  • chore: bump version to 0.10.2 (#1844)

0.10.2 - 2026-02-14

Added

  • add TPM throttling error handling with 1-minute retry delay (#1791)

Changed

  • cli: unify Escape key handling in AppContainer (#1824)

Fixed

  • Fix node installation permission issue in shell script (#1819)
  • prevent AbortSignal listener memory leak (#1811)
  • correct showLineNumbers default value to true (#1813)
  • support JSON Schema draft-2020-12 for MCP tools (fixes #1818) (#1821)

Documentation

  • update authentication documentation with Coding Plan setup guide (#1800)

Other

  • chore: bump version to 0.10.1 (#1808)
  • Add dev launch config and preserve existing NODE_OPTIONS (#1784)
  • Fix abort listener accumulation in subagent while loop (#1825)
  • Fix auth UI to use semantic theme colors and correct selection sync (#1823)
  • Add --session-id support for CLI and SDK (#1822)

0.10.1 - 2026-02-11

Added

  • add MCP tool progress update support in TUI and SDK mode (#1756)
  • add Coding Plan authentication mode with unified AuthDialog (#1788)
  • coding-plan: implement Coding Plan configuration management and update prompts (#1805)

Fixed

  • Warning in installation shell script (#1771)
  • ui: resolve model not updating in top-right corner (#1662)
  • cli: use PowerShell Get-Command for Windows sandbox detection (#1604)
  • prioritize local path detection in extension installation (#1770)
  • auth-model-login-ui: prevent Enter key from triggering empty message submission (#1773)

Other

  • Fix SDK MCP integration tests by updating hardcoded tool names to use constants (#1769)

0.10.0 - 2026-02-09

Added

  • query: add support for resuming sessions with session ID (#1714)
  • Remove Smart Edit tool and ClearcutLogger (#1684)
  • sdk: add resume, continue options and extend authType support (#1726)
  • debug mode output refactor — route console calls to logfile-first debugLogger (#1610)
  • paste: add large paste placeholder and fix enter-submit on macOS (#1713)
  • promote Agent Skills from experimental to stable (#1738)
  • add source information tracking in telemetry logs (#1653)
  • settings: add settings.env field for environment variable configuration (#1751)

Changed

  • i18n: translate Agent as 智能体 (#1718)
  • remove read_many_files tool, add readManyFiles utility for user @-commands (#1673)

Fixed

  • docker: fix build error and enable manual version builds (#1722)
  • settings: rename negative settings to positive naming (disable* -> enable*) (#1330)
  • clarify is_background parameter is required in docs and examples (#1716)
  • vscode-ide-companion: Fix UI display issues with server-side timestamp and file path extraction (#1682)
  • ui: resolve auth not updating in top-right corner (#1670)
  • use openai model instead of index=0 in acp integration test (#1733)
  • cli: route sandbox diagnostic messages to stderr (#1735)
  • cli: prevent Tab key from cycling approval mode when autocomplete is active on Windows (#1736)
  • mcp: improve MCP server management and authentication (#1752)
  • core: properly handle MCP multi-part tool results in OpenAI converter (#1755)
  • integration-tests: correct MCP tool name in simple-mcp-server test (#1763)

Documentation

  • Update Linux/Mac installation commands in README (#1739)

Other

  • ci(sdk-release): use stable CLI tags for SDK releases (#1710)
  • add hint for installing external source extensions (#1694)
  • Feat/javasdk alpha 202501 (#1717)
  • Add export command for session history with markdown and HTML formats (#1515)
  • Add FORK_MODE support to ProcessTransport for Electron IPC integration (#1719)
  • Fix ACP model selection to handle all configured authentication types (#1555)
  • chore: Reduce Qwen OAuth free quota from 2000 to 1000 requests per day (#1730)
  • Add CLI source selection for SDK releases and fix subagent output handler (#1732)
  • Fix CLI argument parsing for /dist/cli/cli.js entry point (#1758)

0.9.1 - 2026-02-05

Added

  • core: add symlink support for skill manager (#1690)
  • Preserve UTF-8 BOM when editing files (#1680)

Fixed

  • core: properly cleanup MCP server subprocesses on exit (#1285)
  • cli: expand MCP @server: resource references (#1531)
  • core: auto-enable WebFetch and WebSearch tools in Plan mode (#1686)
  • normalize skill file content in extensions to handle BOM and CRLF (#1667)
  • ci: honor manual preview version input (#1665)
  • core: handle heredoc in command substitution guard (#1701)
  • core: Preserve trailing whitespace in newString during edits (#1688)
  • enable Shift+Tab shortcut in Windows PowerShell (#1607)
  • core: enforce tool restrictions in subagents (#1691)

Other

  • test(cli): stabilize AuthDialog ESC assertion (#1535)
  • build: Improve build efficiency and add dev mode (#1681)
  • [AnthropicContentGenerator] optimize: ADD cache_control for system and last user text message (#1613)

0.9.0 - 2026-02-03

Added

  • core: improve error message when skill is invoked as tool (#1623)
  • core: improve retry logic for better 429/5xx error handling (#1628)
  • add extra_body support for OpenAI-compatible providers (#1654)
  • add multi-modal input support (image, PDF, audio) across all content generators (#1564)
  • clarify output formats for non-interactive mode (#1579)
  • add concurrent runner for batch CLI execution (#1640)
  • webui: implement unified UI architecture with shared component library (#1543)

Fixed

  • Use resolved authType to initialize ACP agent (#1622)
  • acp: stream subagent text + reasoning chunks (#1626)
  • ensure output-language.md is created before config initialization (#1637)
  • security: prevent command injection via newline bypass in shell command validation (#1638)
  • React/React-DOM version inconsistency in package.json and lockfile (#1659)
  • core: avoid passing undici agent to Anthropic SDK (#1663)
  • vscode-ide-companion: fix race conditions and improve @ file completion search (#1676)

Other

  • chore: bump version to 0.8.2 (#1632)
  • Add parentToolCallId and subagentType for ACP subagent tracking (#1620)
  • Fix Claude plugin resource collection to respect marketplace config (#1639)
  • Support model selection through ACP in vscode ide companion (#1582)
  • Add Zed extension for Qwen Code agent server (#1630)
  • Add experimental LSP support for code intelligence (#1401)
  • chore: bump version to 0.9.0 (#1661)
  • Add contextWindowSize Configuration Support (#1539)

0.8.2 - 2026-01-30

See GitHub release for details.

0.8.1 - 2026-01-27

Added

  • i18n: Add Japanese language support and fix menu labels in other languages (#1392)
  • Add Portuguese (pt-BR) language support with complete translations and refactor i18n architecture for better language management. (#1616)
  • add skills and agents display to extension list with i18n support (#1629)

Fixed

  • replace EnvHttpProxyAgent with ProxyAgent to suppress experimental warning (#1624)

Other

  • test: improve SDK integration test reliability with createResultWaiter and ProcessTransport error handling (#1627)
  • chore: bump version to 0.8.1 (#1631)

0.8.0 - 2026-01-27

Added

  • cli: use dim colors for YOLO/auto-accept mode borders (#1476)
  • Redesign CLI welcome screen and settings dialog (#1513)
  • extensions: add detail command and improve extension validation (#1580)
  • add runtime-aware fetch options for Anthropic and OpenAI providers (#1516)
  • extensions: add plugin selection UI for Claude marketplace (#1592)
  • make DiffRenderer respect ui.showLineNumbers setting (#1561)
  • Implement temporary dismissal for feedback dialogs with persistent prompting (#1590)

Fixed

  • replace spawn shell option with explicit shell args to avoid Node.js DEP0190 warning (#1234)
  • skip non-existent file imports instead of warning (ENOENT) (#1563)
  • correct schema field name for context.loadFromIncludeDirectories (#1609)
  • vscode-ide-companion: platform-specific builds with optimized VSIX packaging (#1586)
  • cli: pass paths to read_many_files in ACP (#1614)
  • Add toolName metadata for ACP tool call messages (#1615)
  • cli input stream handling and error management (#1588)

Documentation

  • add Trendshift badge to README (#1553)

Other

  • chore: remove tiktoken dependency and use API-reported token counts (#1526)
  • Add /bug command to non-interactive mode (#1552)
  • Feat/extension (#1534)
  • fix dependences of core pkg (#1574)
  • fix github pkg dependence (#1576)
  • fix prompts denpendence (#1578)
  • Add VSCode IDE Companion Release Workflow (#1542)
  • Update command usage in add.ts to reflect new name (#1572)
  • Security: Fix awk/sed Command Injection in READ_ONLY_ROOT_COMMANDS (#1601)
  • Simplify permission response handling and fix edit failure and VSCode diff issues (#1581)

0.7.2 - 2026-01-20

Added

  • cli: add settings support for experimental skills (#1497)
  • Improve QWEN. md file loading by filtering system files and limiting scope (#1486)
  • add user feedback dialog (#1465)

Fixed

  • include --acp flag in tool exclusion check (#1499)
  • vscode-ide-companion: simplify ELECTRON_RUN_AS_NODE detection and improve README (#1496)
  • mistranslation of token (#1508)
  • unable to remove MCP server when only one element exists (#1490)
  • core: parse skills frontmatter with CRLF/BOM (#1528)
  • cli: relocate skills setting to experimental namespace (#1538)
  • acp: implement session/set_model method for JetBrains compatibility (#1521)
  • resolve arrow key navigation conflict between history and completion (#1519)
  • cli: isolate modelConfigUtils tests from system env vars (#1545)
  • acp: propagate ENOENT errors correctly and centralize error codes (#1550)
  • Update Qwen OAuth model information (#1548)

Documentation

  • auth: add Coding Plan documentation (#1509)

Other

  • Fix credential management and authentication flows with improved generation config preservation (#1510)

0.7.1 - 2026-01-14

Fixed

Other

  • Reduce slow quit by trimming skills watchers (#1489)
  • Fix timing issue in LoggingContentGenerator initialization (#1492)
  • chore: bump version to 0.7.1 (#1494)

0.7.0 - 2026-01-14

Added

  • Modify the selection order of user Settings and workspace Settings (#1433)
  • multi-provider models config support (#1291)
  • skills: add experimental /skills command + hot reload (#1436)
  • shell: add optional timeout for foreground commands (#1469)
  • Customizing the sandbox environment (#1473)

Changed

  • convert IDE context from JSON to plain text format (#1424)

Fixed

  • core: ensure OAuth URL always displayed in headless mode (#1426)
  • multi provider cold start issue (#1439)
  • cli: /memory show respects context.fileName (#1428)
  • resolve external editor launch failure on macOS and Windows (#1351)
  • core: handle missing delta in OpenAI stream chunks (#1448)
  • cli: default sandbox UID/GID mapping on Linux (#1453)
  • shell: prevent console window flash on Windows for foreground tasks (#1464)
  • cli: warn on deprecated/unknown settings keys (#1427)
  • core: improve OAuth fetch-failed diagnostics (#1457)
  • SDK release workflow and stability improvements (#1462)
  • vscode-ide-companion: Fix cross-platform CLI terminal execution (#1474)
  • cli: improve error message display for object errors (#1386)
  • Improve qwen-oauth fallback message display (#1480)
  • docs errors and add community contacts (#1484)

Documentation

  • vscode-ide-companion: update vscode extension readme (#1472)
  • add integration guide for JetBrains IDEs (#1411)

Other

  • chore: bump version to 0.7.0 (#1434)
  • Support Jupyter Notebook (.ipynb) File Code Selection (#1460)
  • Feature/add custom headers support (#1447)
  • Fix auth type switching and model persistence issues (#1478)
  • Skip flaky permission control test (#1482)

0.6.2 - 2026-01-12

See GitHub release for details.

0.6.1 - 2026-01-07

Added

  • i18n: auto-detect LLM output language from system locale (#1247)
  • i18n: update Russian translation with new strings (#1293)
  • i18n: add German language support (#1378)
  • graduate --experimental-acp to stable --acp flag (#1355)
  • cli: add direct argument support for /approval-mode command (#1391)
  • Optimize the issue where an error message indicating unfriendli… (#1282)

Fixed

  • core: coerce string boolean values in schema validation (#1284)
  • cli: skip update check when disableUpdateNag is true (#1397)
  • improve tool execution feedback in non-interactive mode (#1383)
  • exit with non-zero code on API errors in text mode (#1376)
  • preserve whitespace in thinking content for stream-json output format (#1365)
  • improve windows background process handling and cleanup (#1146)
  • cli,core: honor tools.core / tools.allowed in non-interactive runs (#1406)
  • core: dont force reasoning/topP defaults for OpenAI-compatible APIs (#1415)

Documentation

  • add AionUi to ecosystem section (#1360)

Other

  • Fix multi-language and documentation related issues. (#1332)
  • support merge ChatCompletionContentPart && add filterEmptyMessages (#1288)
  • Feat/javasdk (#1412)
  • Doc/qwencode java (#1414)
  • Fix resume command broken after new chat (#1374)
  • chore: bump version to 0.6.1 (#1423)
  • [OpenaiContentGenerate] convertOpenAIResponseToGemini record thoughtsTokenCount (#1393)

0.6.0 - 2025-12-26

Added

  • add a link to Gemini CLI Desktop for Qwen Code users who prefer desktop UIs (#286)
  • add Anthropic provider, normalize auth/env config, and centralize logging (#1331)
  • vscode-ide-companion: in/output part in the bash toolcall can be clicked to open a temporary file (#1345)
  • support /compress and /summary commands for non-interactive & ACP (#1322)

Fixed

  • cli path parsing issue in Windows (#1321)
  • mcp: update OAuth client name for Figma MCP server compatibility (#1302)

Documentation

  • readme: clarify value props, usage modes (#1312)

Other

  • Add Gemini provider, remove legacy Google OAuth, and tune generation … (#1297)
  • Add experimental Skills feature (#1314)
  • chore: revert sdk-typescript version to 0.1.0 and update release workflow (#1325)
  • Follow up on pr #1331 (#1340)
  • fix one flaky integration test (#1343)
  • Enhance VS Code extension description with download link (#1341)
  • fix one flaky integration test (#1349)
  • chore: improve release-sdk workflow (#1334)
  • context left on vscode ide companion (#1327)

0.5.2 - 2025-12-22

Other

  • pump version to 0.6.0 (#1309)
  • Improve robustness of getProcessInfo with try-catch and empty output fallback (#1310)
  • fix e2e workflow (#1311)

0.5.1 - 2025-12-19

Added

  • expose gitCoAuthor setting in settings.json and document it (#1228)
  • ui: add /resume slash command to switch between sessions (#1239)

Fixed

  • handle case-insensitive path comparison in glob tool on Windows (#1174)
  • ide: rename Gemini references to Qwen and fix IDE connection path (#1205)
  • add configurable OpenAPI 3.0 schema compliance for Gemini compatibility (#1186) (#1214)
  • cli: handle PAT tokens and credentials in git remote URL parsing (#1225)
  • cli: add -r and -C aliases for --resume and --continue options (#1286)
  • default values of sampling params (#1269)
  • vscode-ide-companion: Optimize stream termination handling and fix style layering issues (#1261)
  • optimize windows process tree retrieval to prevent hang (#1231)

Documentation

  • add comprehensive MCP Quick Start guides and examples (#796)
  • restructure docs to follow the Claude Code organization (#1260)

Other

  • Add chat recording toggle (CLI + settings) and disable recording in tests (#1254)
  • pump version to 0.5.1 (#1259)
  • remove one flaky integration test (#1275)
  • docsFix the errors in the document (#1266)
  • Bundle CLI into SDK package and separate CLI & SDK E2E tests (#1265)
  • chore(vscode-ide-companion): update vscode engine version from ^1.99.0 to ^1.85.0 (#1262)
  • IDE companion discovery: switch to ~/.qwen/ide lock files (#1257)

0.5.0 - 2025-12-13

Added

  • i18n: add Russian language support (#1238)
  • show session resume command on exit (#1219)
  • add terminal bell setting to enable/disable audio notifications (#1194)

Changed

  • vscode-ide-companion: optimize CLI detection and version management (#1248)

Fixed

  • remove redundant if-check and add tests for OpenAI converter (#1235)
  • vscode-ide-companion: improve cross-platform compatibility in prepackage script (#1249)

Other

  • test(cli): add tests for /language command and fix LLM output language parsing (#1236)
  • Add ACP authenticate update message (#1240)
  • Remove obsolete “corgi mode” (#1245)
  • Fix/vscode ide companion completion menu content (#1243)
  • Bundle CLI into VSCode release package (#1246)

0.4.1 - 2025-12-12

Added

  • ui: remove vertical borders from input prompt for easier copy/paste (#1191)
  • VSCode Extension Implementation (#1059)
  • update references from Gemini to Qwen in setup commands and gitignore handling (#1156)
  • Add channel field support for client identification (#1226)

Fixed

  • prefer UTF-8 encoding for shell output on Windows when detected (#1157)
  • update vulnerable dependencies (glob, jws, tar, js-yaml) (#1189)
  • 修复在docker环境中无法连接ide的问题 (#1230)
  • vscode-ide-companion/auth: deduplicate concurrent authentication calls (#1223)

Other

  • pump versionm to 0.4.1 (#1177)
  • Feat/acp usage metadata (#1176)
  • pump version to 0.5.0 (#1233)

0.4.0 - 2025-12-06

Added

  • basic TypeScript SDK (#1103)

Fixed

  • shell-utils: resolve command detection on Ubuntu by using shell for builtins (#1123)
  • update timeout settings and default logging level in SDK (#1165)

Other

  • Session-Level Conversation History Management (#1113)
  • pump version to 0.4.0 (#1132)
  • skip one flaky integration test (#1137)
  • Skip acp integration test in sandbox environment (#1141)
  • test: skip qwen-oauth test in containerized environments (#1150)
  • Remove /quit-confirm flow (#1148)
  • DeepSeek V3.2 Thinking Mode Integration (#1134)
  • Custom tools support via SDK controlled MCP servers (#1147)
  • test: separating integration tests for the CLI and SDK (#1161)
  • test: skip unstable e2e test (#1166)

0.3.0 - 2025-11-28

Added

  • i18n: Add Internationalization Support for UI and LLM Output (#1058)

Fixed

  • ci: remove non-existent label from release failure issue creation (#1097)
  • reset authType settings (#1091)

Other

  • Headless enhancement: add stream-json as input-format/output-format to support programmatically use (#926)
  • chore: pump version to 0.3.0 (#1085)
  • Improve Usage Statistics by Moving Key Snapshot Fields into Properties (#1090)

0.2.3 - 2025-11-20

Changed

  • auth: enhance useAuthCommand to include history management … (#1077)

Fixed

  • character encoding corruption when executing the /copy command on Windows. (#1069)
  • remove broken link (#1074)

Other

  • chore: pump version to 0.2.3 (#1073)
  • Disable Prompt Completion Feature (#1076)
  • Replace spawn with execFile for memory-safe command execution (#1068)

0.2.2 - 2025-11-19

Added

  • openApi configurable window (#1019)
  • add support for alternative cached_tokens format in OpenAI conv… (#1035)
  • add support for Trae editor (#1037)

Changed

  • auth: save authType after successfully authenticated (#1036)

Fixed

  • core: add modelscope provider to handle stream_options (#848)
  • Improve ripgrep binary detection and cross-platform compatibility (#1060)
  • skip problematic integration test (#1065)

Other

  • chore: pump version to 0.2.2 (#1027)
  • 🎯 Enhance QwenLogger with OS Platform and Version Metadata (#1053)
  • Add Terminal Attention Notifications for User Alerts (#1052)
  • Add (limited) slash command support for ACP integration. (#1020)
  • Fix integration tests (#1062)

0.2.1 - 2025-11-13

Added

  • enhance zed integration with TodoWriteTool and TaskTool support (#992)

Fixed

  • Stream parsing for Windows Zed integration (#996)
  • print request errors for logging only in debug mode (#1006)

Other

  • chore: pump version to 0.2.1 (#1005)
  • 🔧 Refactor: Standardize Tool Naming and Configuration System (#1004)
  • Fix incorrect tools list format in subagent template documentation (#1026)
  • 🎯 PR: Improve Edit Tool Reliability with Fuzzy Matching Pipeline (#1025)
  • Add Interactive Approval Mode Dialog (#1012)
  • Change deepseek token limits regex patterns for deepseek-chat (#817)

0.2.0 - 2025-11-07

Added

  • Simplify and Improve Search Tools (glob, grep, ripgrep) (#969)

Changed

  • Unifying the system information display between /about and /bug commands (#977)

Fixed

  • VSCode detection null check and debug message optimization (#983)

Other

  • chore: pump version to 0.1.5 (#974)
  • 🎯 Feature: Customizable Model Training and Tool Output Management (#981)
  • chore: pump version to 0.2.0 (#991)

0.1.5 - 2025-11-07

Added

  • Simplify and Improve Search Tools (glob, grep, ripgrep) (#969)

Changed

  • Unifying the system information display between /about and /bug commands (#977)

Fixed

  • VSCode detection null check and debug message optimization (#983)

Other

  • chore: pump version to 0.1.5 (#974)
  • 🎯 Feature: Customizable Model Training and Tool Output Management (#981)
  • chore: pump version to 0.2.0 (#991)

0.1.4 - 2025-11-05

Added

  • support for custom OpenAI logging directory configuration (#972)

Fixed

  • handle AbortError gracefully when loading commands (#936)

Other

  • chore: pump version to 0.1.4 (#962)
  • chore: Web Search Tool Refactoring with Multi-Provider Support (#885)
  • Fix kimi2 token limits (#970)

0.1.3 - 2025-11-04

Fixed

  • Include macOS Seatbelt Sandbox Files in NPM Package (#949)

Other

  • chore: pump version to 0.1.3 (#939)
  • 🐛 Fix: /ide install command fails on Windows (#957)
  • Fix unhandled promise rejection on connecting to VSCode companion (#958)

0.1.2 - 2025-10-31

Fixed

  • Use runtime session ID in /bug command (#927)
  • update tool name from Gemini to Qwen Code in ToolsList component… (#933)
  • settings: add version field to prevent partial migration corruption (#937)

Other

  • chore: pump version to v0.1.2 (#907)
  • fixbug: fix qwen help des (#915)
  • 🔍 Refactor and Enhance Ripgrep Tool (#930)
  • change Launch Gemini CLI to Qwen Code CLI in help information (#929)
  • Fix Chat Compression System Instruction and Empty Summary Edge Case (#935)

0.1.1 - 2025-10-29

Fixed

Other

  • chore: pump version to 0.1.1 (#883)
  • fix input filter (#892)
  • 🐛 Bug Fixes Release v0.1.1 (#898)
  • [to #12345678] docs: update excludeTools documentation in extensions … (#904)

0.1.0 - 2025-10-27

Fixed

  • Invalid Tool Calls Due to Improper Request Cancellation (#790)
  • remove unavailable options (#685)
  • token limits for qwen3-max (#724)
  • add missing trace info and cancellation events (#791)
  • unable to quit when auth dialog is opened (#804)

Documentation

  • add /model command documentation (#872)

Other

  • chore: remove default topp & temperature value (#785)
  • Fix and update the token limits handling (#754)
  • chore: re-organize labels for better triage results (#819)
  • Sync upstream Gemini-CLI v0.8.2 (#838)
  • chore: Adjusted docs directory structure (#864)
  • 📦 Release qwen-code CLI as a Standalone Bundled Package (#866)
  • Standardize Tool Output Format for Better LLM Communication (#881)

0.0.14 - 2025-09-29

Added

  • Implement Plan Mode for Safe Code Planning (#658)
  • Add Qwen3-VL-Plus token limits (256K input, 32K output) (#720)

Fixed

  • TaskTool Dynamic Updates (#697)

Other

  • chore: bump version to 0.0.13 (#695)
  • 🐛 Remove unreliable editCorrector that injects extra escape characters (#713)
  • Fix/qwen3 vl plus highres (#721)
  • 🚀 feat: DashScope cache control enhancement (#735)

0.0.13 - 2025-09-24

Added

  • add OpenAI and Qwen OAuth auth support to Zed ACP integration (#678)
  • add yolo mode support to auto vision model switch (#652)

Fixed

  • output token limit for qwen (#664)
  • auth hang when select qwen-oauth in Zed (#684)
  • ripgrep load issue (#676)

Other

  • chore: bump version to 0.0.12 (#662)
  • 🐛 Fix: Resolve Markdown list display issues on Windows (#693)

0.0.12 - 2025-09-19

Added

  • Enhance /init command with confirmation prompt (#624)

Fixed

  • Windows Multi-line Paste Handling with Debounced Data Processing (#627)
  • subagent system improvements and UI fixes (#638)
  • reset is_background (#644)
  • switch system prompt to avoid malformed tool_calls (#650)
  • missing tool call chunks for openai logging (#657)
  • arrow keys on windows (#661)

Other

  • chore: bump version to 0.0.11 (#622)
  • Add skipLoopDetection Configuration Option (#610)
  • Chore/sync gemini cli v0.3.4 (#605)
  • Enable tool call type coersion (#477)
  • Vision model support for Qwen-OAuth (#525)

0.0.11 - 2025-09-12

Added

  • Update the multilingual documentation links in the README (#536)
  • Add Welcome Back Dialog, Project Summary, and Enhanced Quit Options (#553)
  • Replace all Gemini CLI brand references with Qwen Code. (#588)

Changed

  • cli: update OpenAI API key prompt with Bailian URL (#50)
  • openaiContentGenerator (#501)

Fixed

  • update OpenAIKeyPrompt test to expect Alibaba Cloud API URL (#560)
  • resolve EditTool naming inconsistency causing agent confusion loops (#513)
  • unexpected re-auth when auth-token is expired (#549)
  • relax chunk validation to avoid unnecessary retry (#584)
  • clear saved creds when switching authType (#587)
  • tool calls ui issues (#590)

Other

  • chore: add configurable cache control (#498)
  • chore: pump version to 0.0.10 (#502)
  • Terminal Bench Integration Test (#521)
  • Fix E2E caused by Terminal Bench test (#529)
  • Re-implement tokenLimits class to make it work correctly for Qwen and… (#542)
  • Fix packages/cli/src/config/config.test.ts (#562)
  • 🎯 Subagents Feature (#573)
  • Make the ReadManyFiles tool share the "DEFAULT_MAX_LINES_TEXT_FILE" limit across files. (#563)
  • Fix performance issues with SharedTokenManager causing 20-minute delays (#586)

0.0.10 - 2025-09-02

Documentation

  • Add homebrew install (#474)

Other

  • chore: bump version to 0.0.9 (#468)
  • 🚀 Add Todo Write Tool for Task Management and Progress Tracking (#478)
  • 🚀 Sync Gemini CLI v0.2.1 - Major Feature Update (#483)

0.0.9 - 2025-08-27

Added

  • update /docs link (#438)

Fixed

  • add explicit is_background param for shell tool (#445)
  • sync token among multiple qwen sessions (#443)
  • ambiguous literals (#461)

Other

  • chore: pump version to 0.0.8 (#421)
  • Sync upstream gemini-cli v0.1.21 (#398)
  • Fix GitHub Workflows Configuration Issues (#451)
  • Fix parallel tool use (#400)
  • Fix race condition in submitQuery preventing tool response continuations (#458)
  • use sub-command to switch between project and global memory ops (#450)
  • 🔧 Miscellaneous Improvements and Refactoring (#466)

0.0.8 - 2025-08-22

Added

  • use .geminiignore in grep tool (#349)
  • Add deterministic cache control (#411)

Fixed

  • revert trimEnd on LLM response content (#397)
  • Critical Issues in v0.0.8-nightly.7 (#419)

Documentation

  • Update security policy with Alibaba contact information (#390)

Other

  • Chore/release 0.0.7 (#343)
  • support: project/global save location option. (#368)
  • doc: Add links to translated README versions (#171)
  • Sync upstream gemini-cli v0.1.19 (#364)
  • 🚀 Enhance Release Notes Generation with Previous Tag Detection (#394)
  • Update Documentation Branding from Gemini CLI to Qwen Code (#391)
  • Fix prompt re-submission (#392)
  • Fix GitHub Workflows for Issue Triage (#396)
  • Limit grep result (#407)

0.0.7 - 2025-08-15

Added

  • sandbox: add GHA to build sandbox image (#262)
  • prevent concurrent query submissions in useGeminiStream hook (#322)
  • refactor web-fetch tool to remove google genai dependency (#340)

Fixed

  • qwen logger exit handler setup (#325)
  • seperate static QR code and dynamic spin components (#327)
  • OpenAI tools (#328)
  • custom API's trailing space and empty tool id issues (#326)

Other

  • chore: add api request logger (#313)
  • Sync with upstream gemini-cli v0.1.18 (#309)
  • chore: bump version to 0.0.6 (#323)
  • Migrate web search from Google/Gemini to Tavily API (#329)
  • Update qwen-code-pr-review.yml (#342)

0.0.6 - 2025-08-12

Added

  • add usage statistics logging for Qwen integration (#284)

Fixed

  • rename make run-npx from gemini to qwen (#242)
  • terminal flicker when waiting for login (#248)
  • openaiContentGenerator (#283)
  • 🐛 fix EPERM error when run qwen --sandbox in macOS (#293)

Other

  • rename GEMINI.md to QWEN.md across the codebase (#235)
  • Fix README.md: Replace /status command with /stats command in documen… (#266)
  • Make /init respect configured context filename and align docs with QWEN.md (#274)
  • chore: adjust workflow to run PR review (#297)
  • Chore/pkg version (#298)

0.0.5 - 2025-08-08

Added

  • Add systemPromptMappings Configuration Feature (#108)
  • update /bug command to point to Qwen-Code repo (#154)
  • add qwencoder as co-author (#207)
  • oauth: add Qwen OAuth integration (#225)

Fixed

  • resolve RadioButtonSelect array bounds crash and auth dialog navigation (#46)
  • streaming token usage (#102)
  • Enhanced OpenAI Usage Logging and Response Metadata Handling (#141)

Other

  • pre-release: fix ci (#1)
  • fix login preflight & sync with npm version (#55)
  • add star history (#109)
  • update: add info about modelscope-api (#116)
  • Fix Default Model Configuration and Fallback Behavior (#142)
  • Update: shrink/hard constrained token usage (#136)
  • Fix E2E (#156)
  • Fix Sandbox docker mode (#160)
  • Support openrouter (#162)
  • Update: add telemetry service (#161)
  • Update README.md to clarify the requirement for using Modelscope inference API (#131)
  • fix config (#163)
  • fix release workflow (#172)
  • sync gemini cli 0.1.15 (#175)
  • fix e2e (#185)
  • fix system md (#189)
  • sync gemini cli 0.1.17 (#206)
  • chore: remove google registry (#227)

0.0.4 - 2025-08-03

Other

  • sync gemini cli 0.1.15 (#175)
  • fix e2e (#185)
  • fix system md (#189)

0.0.2 - 2025-08-01

See GitHub release for details.