Highlights
Aion CLI: Reliability & Protocol Upgrades
- Replaced the unreliable 15-second idle fallback with a proper process-exit handler and a ping/pong heartbeat protocol — long tool executions no longer trigger fake "finish" events, and truly stuck processes are now detected and recovered deterministically.
- Fixed a crash when tool commands contained non-ASCII characters (e.g. Chinese): UTF-8 safe truncation now prevents the aionrs process from panicking mid-session.
- Aligned max turn behavior with Claude Code — the main agent now runs unlimited turns by default (configurable), sub-agents allow up to 200 turns, and hitting the limit is treated as a graceful stop instead of an error. Team collaboration sessions no longer dead-end at 30 turns.
- Added diagnostic logging when autocompact is skipped, making it easier to understand why context management didn't trigger.
Attachments: Safer Path & Binary Handling
- Fixed attachment previews and metadata reads that were pointing to fake workspace paths — real absolute paths are now preserved in message markers.
- Binary attachments in ACP sessions are kept as file references instead of being inlined as garbled UTF-8 into the prompt, avoiding prompt pollution and model confusion.
WeChat: Ordered Streaming Fix
- Weixin assistant text drafts are now flushed before silent tool, status, and plan events — preserving the correct message order during streaming. ACP and Codex tool-only turns also now complete cleanly in the WeChat channel.
Bug Fixes
- Fixed agent-switch failure on the guid page for built-in preset assistants (e.g. "Morph PPT") — the switcher now searches both
assistantsandacp.customAgentsstorage. - Fixed the
aionrschannel send path to use the correct{ content, msg_id }payload; Gemini keeps its existing{ input, msg_id }contract. - Fixed broken quick-navigation links in all 9 non-English READMEs (Chinese, Japanese, Korean, Spanish, Portuguese, Russian, Turkish, Traditional Chinese, Ukrainian) — they now render as clickable links on GitHub.
What's Changed
- fix(docs): add missing blank line in quick navigation for non-English READMEs by @IceyLiu in #2627
- fix(guid): search both storage sources when switching preset agent type by @piorpua in #2633
- fix(channels): send content payload for aionrs by @piorpua in #2637
- fix(attachments): avoid fake paths and binary prompt injection by @piorpua in #2634
- fix(weixin): flush assistant text before silent events by @JerryLiu369 in #2638
- chore: bump version to 1.9.21 by @piorpua in #2649
- fix(aionrs): replace idle fake-finish with process exit error and heartbeat by @piorpua in #2650
Aion CLI (aionrs) Changes
- 0.1.15 (2026-04-24) — Added ping/pong heartbeat protocol support (#68)
- 0.1.14 (2026-04-23) — Aligned maxTurns logic with Claude Code (#66); fixed UTF-8 panic in tool describe and added autocompact skip logging (#63)
Full Changelog: v1.9.20...v1.9.21