docs(changelog): sync for v0.18.4

This commit is contained in:
github-actions[bot] 2026-06-20 09:37:45 +00:00
parent c898e9f6ad
commit 684b7d2dc4

View file

@ -12,6 +12,162 @@ are listed; nightly and preview pre-releases are intentionally omitted.
> [GitHub Releases](https://github.com/QwenLM/qwen-code/releases). Do not edit it
> by hand — run `npm run changelog` to regenerate.
## [0.18.4](https://github.com/QwenLM/qwen-code/releases/tag/v0.18.4) - 2026-06-20
### Added
- serve: make ACP permission timeout configurable ([#5260](https://github.com/QwenLM/qwen-code/pull/5260))
- i18n: localize tool display names in TUI and web-shell badges ([#5220](https://github.com/QwenLM/qwen-code/pull/5220))
- serve: add daemon idle detection to GET /health?deep=true ([#4934](https://github.com/QwenLM/qwen-code/pull/4934))
- hooks: pass original API call ID (toolCallId) to hook system ([#4918](https://github.com/QwenLM/qwen-code/pull/4918))
- core,cli: Workflow tool token budget + per-run UI surfacing (P5) ([#5231](https://github.com/QwenLM/qwen-code/pull/5231))
- extensions: add i18n support for extension displayName and description ([#5289](https://github.com/QwenLM/qwen-code/pull/5289))
- loop: wire prompt-only /loop to self-paced wakeups ([#5197](https://github.com/QwenLM/qwen-code/pull/5197))
- loop: add second-resolution session wakeup engine ([#5182](https://github.com/QwenLM/qwen-code/pull/5182))
- desktop: compile macOS 26+ Liquid Glass Assets.car in brand-create ([#5284](https://github.com/QwenLM/qwen-code/pull/5284))
- channel: add QQ Bot (QQ机器人) channel adapter ([#5202](https://github.com/QwenLM/qwen-code/pull/5202))
- core: auto-reveal exit_plan_mode tool when entering plan mode ([#5311](https://github.com/QwenLM/qwen-code/pull/5311))
- skills: add desktop-pet skill for creating pixel-art companions ([#4808](https://github.com/QwenLM/qwen-code/pull/4808))
- stats: expose token usage for cost visibility ([#4564](https://github.com/QwenLM/qwen-code/pull/4564))
- cli: show follow-up suggestion in input placeholder ([#5145](https://github.com/QwenLM/qwen-code/pull/5145))
- config: add settings file change detection via chokidar watcher… ([#4933](https://github.com/QwenLM/qwen-code/pull/4933))
- cli: show optional response token rate ([#5401](https://github.com/QwenLM/qwen-code/pull/5401))
- cli: serve the Web Shell UI from `qwen serve` ([#5392](https://github.com/QwenLM/qwen-code/pull/5392))
- cli: add persistent history collapse on resume with refined commands ([#4085](https://github.com/QwenLM/qwen-code/pull/4085))
- web-shell: add extension management ([#5398](https://github.com/QwenLM/qwen-code/pull/5398))
- extensions: interactive multi-tab /extensions manager (Installed / Discover / Sources) ([#4850](https://github.com/QwenLM/qwen-code/pull/4850))
### Changed
- tools: rename TodoWrite tool display name to TodoList ([#5319](https://github.com/QwenLM/qwen-code/pull/5319))
- serve: unify session title/displayName into single displayName field ([#5002](https://github.com/QwenLM/qwen-code/pull/5002))
### Fixed
- core: Track supported sed edits in file history ([#5141](https://github.com/QwenLM/qwen-code/pull/5141))
- vscode-ide-companion: create independent McpServer per IDE session ([#5264](https://github.com/QwenLM/qwen-code/pull/5264))
- core: read BMP height as signed int32 for top-down bitmaps ([#5227](https://github.com/QwenLM/qwen-code/pull/5227))
- cli: Preserve mid-turn image messages ([#5183](https://github.com/QwenLM/qwen-code/pull/5183))
- core: detect dat files by content ([#5256](https://github.com/QwenLM/qwen-code/pull/5256))
- model: remember selected provider when multiple share a model id (#5173) ([#5179](https://github.com/QwenLM/qwen-code/pull/5179))
- daemon: centralize mid-turn event constant + recover timed-out drains ([#5266](https://github.com/QwenLM/qwen-code/pull/5266))
- core: keep DeepSeek presets text-only ([#5268](https://github.com/QwenLM/qwen-code/pull/5268))
- cli: drop AgentView cleanup setState that can trip React #185 (#5199) ([#5286](https://github.com/QwenLM/qwen-code/pull/5286))
- core: read WebP VP8X canvas height from the correct byte offset ([#5194](https://github.com/QwenLM/qwen-code/pull/5194))
- cli: support Ctrl+P/N in completions ([#5259](https://github.com/QwenLM/qwen-code/pull/5259))
- core: never let telemetry file exporters crash the process ([#5246](https://github.com/QwenLM/qwen-code/pull/5246))
- cli: correct context filename settings schema ([#5269](https://github.com/QwenLM/qwen-code/pull/5269))
- core: per-turn tool-call circuit breaker — always-on cap + opt-in loop heuristics (#5234) ([#5279](https://github.com/QwenLM/qwen-code/pull/5279))
- desktop: handle git branch badge edge cases ([#5247](https://github.com/QwenLM/qwen-code/pull/5247))
- cli: correct sandbox settings schema ([#5272](https://github.com/QwenLM/qwen-code/pull/5272))
- weixin: show allowed image directories ([#5296](https://github.com/QwenLM/qwen-code/pull/5296))
- cli: reject malformed OSC rgb colors ([#5307](https://github.com/QwenLM/qwen-code/pull/5307))
- web-shell: summarize grep_search results ([#5294](https://github.com/QwenLM/qwen-code/pull/5294))
- core: read short VP8L WebP dimensions ([#5292](https://github.com/QwenLM/qwen-code/pull/5292))
- core: track attached stdout fd redirects ([#5317](https://github.com/QwenLM/qwen-code/pull/5317))
- dingtalk: split oversized markdown lines ([#5299](https://github.com/QwenLM/qwen-code/pull/5299))
- cli: preserve multiline shell history ([#5335](https://github.com/QwenLM/qwen-code/pull/5335))
- cli: validate GitHub remote hosts ([#5327](https://github.com/QwenLM/qwen-code/pull/5327))
- core: preserve migrated command description strings ([#5321](https://github.com/QwenLM/qwen-code/pull/5321))
- cli: enforce stdin byte limit ([#5331](https://github.com/QwenLM/qwen-code/pull/5331))
- core: respect home path boundary when tildeifying ([#5333](https://github.com/QwenLM/qwen-code/pull/5333))
- cli: truncate session picker text by display width ([#5338](https://github.com/QwenLM/qwen-code/pull/5338))
- core: support GIF image token metadata ([#5340](https://github.com/QwenLM/qwen-code/pull/5340))
- cli: handle session search graphemes ([#5342](https://github.com/QwenLM/qwen-code/pull/5342))
- cli: normalize english output language ([#5346](https://github.com/QwenLM/qwen-code/pull/5346))
- core: parse OAuth resource metadata params ([#5344](https://github.com/QwenLM/qwen-code/pull/5344))
- core: handle stale worktree session markers ([#5229](https://github.com/QwenLM/qwen-code/pull/5229))
- core: ignore duplicate provider tool-call ids ([#5038](https://github.com/QwenLM/qwen-code/pull/5038))
- cli: show thinking in full transcript mode ([#5354](https://github.com/QwenLM/qwen-code/pull/5354))
- cli: return fresh empty mcp json results ([#5349](https://github.com/QwenLM/qwen-code/pull/5349))
- weixin: normalize markdown image syntax ([#5297](https://github.com/QwenLM/qwen-code/pull/5297))
- core: skip sleep inhibitor in headless ssh ([#5295](https://github.com/QwenLM/qwen-code/pull/5295))
- cli: reject malformed terminal sequences ([#5305](https://github.com/QwenLM/qwen-code/pull/5305))
- cli: expand windows-style tilde paths ([#5298](https://github.com/QwenLM/qwen-code/pull/5298))
- core: validate oauth expires_in values ([#5356](https://github.com/QwenLM/qwen-code/pull/5356))
- core: reject malformed cron numeric fields ([#5352](https://github.com/QwenLM/qwen-code/pull/5352))
- cli: parse sandbox image registry ports ([#5325](https://github.com/QwenLM/qwen-code/pull/5325))
- cli: preserve empty MCP prompt args ([#5323](https://github.com/QwenLM/qwen-code/pull/5323))
- core: reject invalid cron task entries ([#5309](https://github.com/QwenLM/qwen-code/pull/5309))
- cli: avoid agent composer unmount reset ([#5302](https://github.com/QwenLM/qwen-code/pull/5302))
- cli: validate channel service pidfile ([#5300](https://github.com/QwenLM/qwen-code/pull/5300))
- core: preserve invalid schema length strings ([#5312](https://github.com/QwenLM/qwen-code/pull/5312))
- weixin: confirm the WEBP signature, not just the RIFF prefix ([#5285](https://github.com/QwenLM/qwen-code/pull/5285))
- cli: reject malformed ACP timeout strings ([#5315](https://github.com/QwenLM/qwen-code/pull/5315))
- cli: import extension channels via file urls ([#5301](https://github.com/QwenLM/qwen-code/pull/5301))
- cli: bound streaming thought render buffers ([#5314](https://github.com/QwenLM/qwen-code/pull/5314))
- cli: window title shows session name instead of model activity status ([#5288](https://github.com/QwenLM/qwen-code/pull/5288))
- core: keep qwen3.6-flash and kimi-k2.6 presets text-only ([#5328](https://github.com/QwenLM/qwen-code/pull/5328))
- cli: render a sub-minute duration that rounds to 60s as "1m" ([#5287](https://github.com/QwenLM/qwen-code/pull/5287))
- Expand Windows ~\\ home paths and hide phantom (session) entries in the desktop session list ([#5253](https://github.com/QwenLM/qwen-code/pull/5253))
- plan-gate: isolate gate agent AbortSignal from parent signal chain ([#5185](https://github.com/QwenLM/qwen-code/pull/5185))
- core: honor output language in side queries ([#4519](https://github.com/QwenLM/qwen-code/pull/4519))
- cli: avoid stale git branch watcher setup ([#5271](https://github.com/QwenLM/qwen-code/pull/5271))
- desktop: detect WebP and AVI in RIFF magic-byte sniffing ([#5336](https://github.com/QwenLM/qwen-code/pull/5336))
- input: restore IME cursor positioning reverted in #4779 ([#4993](https://github.com/QwenLM/qwen-code/pull/4993))
- cli: close @path completion dropdown on Enter accept ([#4841](https://github.com/QwenLM/qwen-code/pull/4841))
- core: fall back to encrypted-file storage for extension secrets when keychain is unavailable ([#5221](https://github.com/QwenLM/qwen-code/pull/5221))
- core: support whitespace in session metadata fields ([#5353](https://github.com/QwenLM/qwen-code/pull/5353))
- core: prevent OOM in auto-memory extraction during /quit (#5147) ([#5181](https://github.com/QwenLM/qwen-code/pull/5181))
- core: expire tokens at buffer boundary ([#5360](https://github.com/QwenLM/qwen-code/pull/5360))
- cli: validate restore checkpoints before mutation ([#5358](https://github.com/QwenLM/qwen-code/pull/5358))
- core: honor ripgrep builtin setting at runtime ([#5362](https://github.com/QwenLM/qwen-code/pull/5362))
- core: create token file on first save ([#5367](https://github.com/QwenLM/qwen-code/pull/5367))
- cli: preserve workspace trust state for extensions ([#5369](https://github.com/QwenLM/qwen-code/pull/5369))
- cli: Stop after cancelled permissions ([#5258](https://github.com/QwenLM/qwen-code/pull/5258))
- core: resolve tilde paths before search permission checks ([#5378](https://github.com/QwenLM/qwen-code/pull/5378))
- cli: respect sandbox path boundaries ([#5375](https://github.com/QwenLM/qwen-code/pull/5375))
- cli: update acp cancel test flag ([#5384](https://github.com/QwenLM/qwen-code/pull/5384))
- core: avoid reconnecting on MCP tool errors ([#5382](https://github.com/QwenLM/qwen-code/pull/5382))
- core: accept uppercase web fetch schemes ([#5391](https://github.com/QwenLM/qwen-code/pull/5391))
- cli: preserve equals in mcp env values ([#5377](https://github.com/QwenLM/qwen-code/pull/5377))
- core: avoid glob prefix cache reuse ([#5364](https://github.com/QwenLM/qwen-code/pull/5364))
- core: validate grep result limits ([#5389](https://github.com/QwenLM/qwen-code/pull/5389))
- core: parse grep results with colon paths ([#5372](https://github.com/QwenLM/qwen-code/pull/5372))
- acp: scrub simple env for spawned children ([#5395](https://github.com/QwenLM/qwen-code/pull/5395))
- core: pass --no-ask-password to systemd-inhibit to prevent TUI corruption ([#5318](https://github.com/QwenLM/qwen-code/pull/5318))
- cli: parse sandbox mounts with windows drives ([#5388](https://github.com/QwenLM/qwen-code/pull/5388))
- core: add GLM-5.2 to Z.AI preset ([#5397](https://github.com/QwenLM/qwen-code/pull/5397))
- openai: add string tool result compatibility mode ([#5399](https://github.com/QwenLM/qwen-code/pull/5399))
- cli: clarify cumulative statusline token labels ([#5400](https://github.com/QwenLM/qwen-code/pull/5400))
- cli: reduce retained interactive tool output memory ([#4971](https://github.com/QwenLM/qwen-code/pull/4971))
- cli: calculate response rate from phase token delta ([#5402](https://github.com/QwenLM/qwen-code/pull/5402))
- cli: clarify unavailable model configuration hint ([#5403](https://github.com/QwenLM/qwen-code/pull/5403))
- cli: gate cron scheduler startup on config initialization (#5022) ([#5230](https://github.com/QwenLM/qwen-code/pull/5230))
- core: keep estimated token split summing to total ([#5420](https://github.com/QwenLM/qwen-code/pull/5420))
- core: share memory filename config state ([#5419](https://github.com/QwenLM/qwen-code/pull/5419))
- channel: scope qqbot session backup path ([#5417](https://github.com/QwenLM/qwen-code/pull/5417))
- channel: track qqbot close reconnect timer ([#5416](https://github.com/QwenLM/qwen-code/pull/5416))
- auth: preserve custom provider models on install ([#5404](https://github.com/QwenLM/qwen-code/pull/5404))
- core: target microcompaction cache disarms ([#5407](https://github.com/QwenLM/qwen-code/pull/5407))
- channel: keep qqbot token refresh retrying ([#5414](https://github.com/QwenLM/qwen-code/pull/5414))
- cli: keep keypress handlers current ([#5421](https://github.com/QwenLM/qwen-code/pull/5421))
- cli: narrow settings enum schemas ([#5418](https://github.com/QwenLM/qwen-code/pull/5418))
- channel: bound qqbot gateway reconnect retries ([#5415](https://github.com/QwenLM/qwen-code/pull/5415))
- core: block broad shell self-kill commands ([#5409](https://github.com/QwenLM/qwen-code/pull/5409))
- cli: preserve trustedFolders comments on save ([#4746](https://github.com/QwenLM/qwen-code/pull/4746))
- hooks: remove the dead updatedMCPToolOutput field (#5422) ([#5423](https://github.com/QwenLM/qwen-code/pull/5423))
- cli: accept uppercase URL schemes in mcp add transport detection ([#5426](https://github.com/QwenLM/qwen-code/pull/5426))
- extensions: accept uppercase URL schemes when parsing install sources ([#5429](https://github.com/QwenLM/qwen-code/pull/5429))
- core: provide escape path when plan gate is unavailable ([#5430](https://github.com/QwenLM/qwen-code/pull/5430))
- cli: stabilize extension list spacing ([#5445](https://github.com/QwenLM/qwen-code/pull/5445))
- weixin: handle uppercase CDN upload schemes ([#5439](https://github.com/QwenLM/qwen-code/pull/5439))
### Documentation
- add CLI subcommands section with qwen sessions list ([#5254](https://github.com/QwenLM/qwen-code/pull/5254))
- fix SSE ring size errors and add /workflows command ([#5205](https://github.com/QwenLM/qwen-code/pull/5205))
- Revamp README for clarity and focus ([#5257](https://github.com/QwenLM/qwen-code/pull/5257))
- cli: document tmux scroll workaround ([#5248](https://github.com/QwenLM/qwen-code/pull/5248))
### Other
- test(cli): enable load config model selection coverage ([#5274](https://github.com/QwenLM/qwen-code/pull/5274))
- test(cli): cover selection list scroll up ([#5276](https://github.com/QwenLM/qwen-code/pull/5276))
- test(cli): enable table foreground reset coverage ([#5278](https://github.com/QwenLM/qwen-code/pull/5278))
- test(core): enable agent headless termination coverage ([#5282](https://github.com/QwenLM/qwen-code/pull/5282))
- test(cli): enable command search long suggestion coverage ([#5283](https://github.com/QwenLM/qwen-code/pull/5283))
## [0.18.3](https://github.com/QwenLM/qwen-code/releases/tag/v0.18.3) - 2026-06-17
### Fixed