v0.30.0 — slash command aliases + cell-diff CHA hardening
Headline: slash commands grow first-class aliases (/quit, /q, /?, /reset, /lang) — single-spec source of truth, no per-handler mirrors. Cell-diff renderer switches column targeting from CUF relative (\x1b[NC) to CHA absolute (\x1b[N+1G), making the diff stream immune to cursor drift from per-cell width miscounts.
Features
- slash:
aliases?: readonly string[]onSlashCommandSpec. Adding a new alias is now a one-line edit to the canonical command — dispatch, autocomplete, arg-context resolution, and the dashboard/api/slashresponse all route through oneresolveSlashAlias()map built fromSLASH_COMMANDSat module init. Suggestion rows display aliases dimly (· /quit /q) so they stay discoverable without doubling the autocomplete list. (#332, PR #347)
Bug fixes
- renderer: switch the X-axis branch of
moveTo()from CUF relative to CHA absolute. Y-axis stays on CUU/CUD since we don't track absolute terminal rows. Relative column moves accumulate drift across frames whenever an earlier write miscounts cell width —▸(U+25B8) rendered 2-cell on fonts with East Asian fallback, ambiguous-width chars on terminals that font-detect width, OSC8 hyperlinks parsed as visible chars, etc. CHA targets the absolute column regardless of what the terminal thinks — immune to the desync chain. Same fix Anthropic shipped in claude-code per their issue #14208 post-mortem. (#346, PR #348)
Install
```bash
npm i -g reasonix@0.30.0
```