---
changelog:
  category: Release
  version: 0.6.0
date: '2026-08-21T14:05:17Z'
seo:
  description: >-
    Interaction, trust, and ecosystem surface on top of the v0.5.0
    render/permission base. Visible, draggable scrollbar in the chat viewport
    (ratatui Scrollbar…
title: 'v0.6.0 — Claude Code parity: interaction, trust & ecosystem'
type: changelog
---
## v0.6.0 — Claude Code parity: interaction, trust & ecosystem

Interaction, trust, and ecosystem surface on top of the v0.5.0 render/permission base.

### Added
- Visible, draggable scrollbar in the chat viewport (ratatui `Scrollbar`; click/drag-to-jump)
- Mouse hover system across all surfaces (stage headers, messages, status bar, tab bar, modals, help, fleet) + click flash + double-click word select
- Scroll-wheel routing on every page with auto-follow pause
- Kill ring + yank: `Ctrl+Y` yanks the most recent kill, `Alt+Y` cycles (yank-pop); `Ctrl+W/U/K` delete into the ring
- Input undo/redo: `Ctrl+Z` / `Ctrl+_` undo, `Ctrl+Y` yank; every edit snapshot-able
- Multi-line composer: input area grows to ~1/3 of the screen (`render_input_box_multiline` now live)
- Protected paths & destructive-command enforcement (`.git`, `.ssh`, `/etc`, `rm -rf`, `sudo`, `curl`, `git push` always prompt)
- Shared skills portability: reads `~/.agents/skills/` (override via `knowledge.skills_dir`)
- Kitty keyboard protocol (I4): enable/disable around the session + CSI-u decoding for Shift+Enter disambiguation
- Expanded slash-command set: `/status`, `/permissions`, `/plan`, `/version`, `/rename`, `/fork`, `/branch`, `/usage`, `/effort`, `/mcp`, `/skills`, `/copy`, `/export-md`, `/btw`, `/code-review`, `/security-review`, `/add-dir`, `/loop`, `/voice`

### Ecosystem (launch baseline)
- **ACP server** (`niki acp`): JSON-RPC 2.0 over stdio — `initialize`, `prompt/send`, `session/status`, `session/cancel`, with live `stage.start`/`stage.token`/`stage.done`/`stage.failed`/`task.completed` notifications. Drives Zed, Claude Code, and any ACP client.
- **Voice input** (`niki voice`): records via `ffmpeg` and transcribes through your provider's STT endpoint (`LlmProvider::transcribe`, OpenAI-compatible).
- **MCP trust gate**: servers must be explicitly allowed (fingerprinted, persisted to `.niki/mcp_trust.json`) before connecting — behavior-preserving default.
- **Headless TUI harness** (`tests/headless_tui.py`, tuiwright): drives the real binary under a real PTY with mouse scroll/click/drag.

### Changed
- Chat render virtualizes to the visible window and renders a live scrollbar
- Permission modal detail panel (Ctrl+D) + scope selector (Tab) wired to the live flow

### Verification
- `cargo test --all-targets`: 417 lib + 5 ACP integration, 0 failed
- `cargo clippy --all-targets`: warning-free
- `cargo build --release`: clean
- `pytest -c pytest_headless.ini`: 11 passed, 2 documented skips (Shift+Enter and bulk-message scrollbar need a live terminal/LLM)

Binary artifacts (macOS/Windows/Linux tarballs + installers) are produced by the `cargo dist` release workflow in CI.
