Changelog
All notable changes to this project will be documented in this file.
[Unreleased]
[0.14.1] - 2026-07-18 Changes
Documentation
- Manual restructure (#282, @srothgan): Split installation into end-user install, development, and troubleshooting pages, document
/agent, restore the conduct report contact in the issue chooser, and add tests keeping the slash command and CLI tables in sync with the code.
Release and Packaging
- Installer progress and idempotency (#281, @srothgan): Add inline installer progress across PowerShell, macOS, and Linux while keeping CI output plain, and make same-version reinstalls a prompted opt-in with
--yes/-Yesapproval.
CI and Dependencies
- Claude Agent SDK update (#285, @srothgan): Bump the bundled bridge to Agent SDK
0.3.214, preserve subagent model routes, retry and Bash timeout state, keep Grep and Artifact output accurate, and disable new review-dependent tools until the TUI can present them safely.
[0.14.0] - 2026-07-12 Changes
Features
- In-chat usage limits (#270, @srothgan): Add
/limitsto print recent 5-hour, 7-day, and extra-credit usage into the chat from the existing usage snapshot/refresh pipeline, including a loading message for stale data and a concise refresh failure message while keeping/usageas the fullscreen Usage tab. - Native textarea cursor (#268, @srothgan): Use
tui-textarea-2native cursor positioning for the chat composer, hide the textarea-drawn cursor, and restore terminal cursor shape when leaving chat surfaces. - Startup update screen (#264, @srothgan): Show available updates in a startup screen with install, skip, and release-notes actions.
Fixes
- Inline cursor tracking (#266, @srothgan): Avoid Unix/macOS live-loop DSR cursor reads in inline chat by using tracked cursor state for the ratatui viewport and invalidating cached seeds after external terminal ownership boundaries.
- Markdown list rendering (#263, @srothgan): Keep streamed inline Markdown handoffs mutable only until delimiters resolve, let stable scrollback advance after resolved blocks, and preserve fenced code layout when code lines look like Markdown list items.
Documentation
- Governance and source install docs (#262, @srothgan): Document repository release controls and clarify source-build auth/runtime setup.
- Private conduct reporting (@srothgan): Add a dedicated private contact for code of conduct reports and keep security advisories focused on vulnerability disclosure.
Maintenance
- Repository health cleanup (#262, @srothgan): Consolidate duplicated UI rendering helpers, add Rust SPDX headers, and remove stale TODO/header noise.
Release and Packaging
- Install scripts (#259, #267, @srothgan): Add macOS/Linux and Windows install scripts that install from GitHub Releases without requiring npm, Node.js, or Bun on the user’s machine, and preserve the detected install method for in-app updates.
- Release script phases (#260, @srothgan): Reorganize release tooling scripts into phase directories, add shared repository-root resolution, and expand PR validation for install archives and public installers.
- Windows npm mock smoke (#262, @srothgan): Make local Windows mock package smoke tests use spawnable binaries and isolated npm cache state.
CI and Dependencies
- Duplicate-code gate (#262, @srothgan): Add PR jscpd thresholds with a 1% warning, 2% failure, and
pr-gateenforcement. - Advisory and tooling updates (#262, @srothgan): Refresh dependency advisory/tooling locks and remove resolved cargo-deny advisory ignores.
- Claude Agent SDK update (#272, @srothgan): Bump the bundled bridge packages to Agent SDK
0.3.207, preserve new task metadata and terminal reason values, normalize the new permission-mode alias, and remove the unmatched mouse-capture restore action. - Release skip on unchanged version (#269, @srothgan): Skip the release workflow with a green no-op when a
Cargo.tomlpush leaves the crate version unchanged.
[0.13.4] - 2026-07-06 Changes
Features
- Bundled Bun bridge runtime (#245, @srothgan): Ship a private Bun runtime in each platform npm package so the Agent SDK bridge no longer needs a separately installed Node runtime to run.
CI and Dependencies
- Node 24 maintainer floor (#254, @srothgan): Raise root and Agent SDK npm engine metadata to Node 24 for source-build tooling.
[0.13.3] - 2026-07-04 Changes
Features
- ARM64 npm binaries (#243, @srothgan): Add Linux arm64 glibc and Windows arm64 MSVC platform packages to the npm release flow.
Fixes
- File mention completion (#242, @srothgan): Let
Tabcommit selected or literal@file mentions with quoted paths and cleaner autocomplete boundaries. - Release publication targeting (#238, #239, @srothgan): Verify reusable-workflow attestations and pin GitHub Release publishing to the target repository.
Release and Packaging
- Platform package READMEs (@srothgan): Generate concise platform-specific npm READMEs with version, install, target, and platform details.
- Dependency declarations (#240, @srothgan): Remove redundant direct npm dependencies while keeping runtime installs unchanged.
[0.13.2] - 2026-07-03 Changes
Features
- Supportability commands (#235, @srothgan): Add
claude-rs doctor,logs, redacted debug bundles, crash and bridge failure reports, and read-only redacted config inspection/export commands for installation and runtime diagnostics.
Release and Packaging
- Platform npm packages (#232, @srothgan): Replace the install-time GitHub Release downloader with a root launcher plus platform-specific optional npm packages for macOS arm64/x64, Linux x64 glibc, and Windows x64 MSVC.
- Trusted Publishing release flow (#232, @srothgan): Publish platform packages before the root package from a protected
npm-releaseenvironment, with package-content manifests, checksums, provenance, and binary attestations. - Package validation (#232, @srothgan): Add generated package assembly, package layout verification, and tarball smoke tests so release candidates and npm releases validate the installed launcher and platform binary layout before publishing.
- Release publication guardrail (#233, #236, @srothgan): Create the GitHub Release as a draft, publish npm platform and root packages from explicit local tarball paths, then publish the GitHub Release only after npm publication succeeds.
Testing
- Bridge contract coverage (#234, @srothgan): Add Node-side NDJSON bridge contract tests and Rust-side bridge lifecycle failure coverage without requiring Claude credentials.
- Direct binary smoke checks (#234, #236, @srothgan): Validate release binary startup with
--versionand--helpacross supported platforms outside the npm package smoke path.
CI and Supply Chain
- Cargo Deny policy (#236, @srothgan): Add
deny.tomland enforce Cargo dependency policy for advisories, licenses, duplicate-crate policy, and allowed sources. - Workflow consolidation (#236, @srothgan): Replace the broad PR workflow set with
pr-gate, separate PR title lint, reusable Agent SDK and release build workflows, scheduled deep checks, and dependency monitoring. - Workflow action pinning (#236, @srothgan): Pin external GitHub Actions to full commit SHAs and align repository rules with the new required status checks.
Maintenance
- Focused app state modules (#231, @srothgan): Split app state, runtime session, startup, turn, transcript, and SDK inventory bookkeeping into focused modules while preserving public behavior.
Documentation
- Install architecture (#232, @srothgan): Document the optional-dependency install model, platform package troubleshooting, source-build bridge behavior, and release invariants for contributors.
- Diagnostics and security docs (#235, #236, @srothgan): Document supportability commands, redacted config exports, current repository security controls, and the paused Agent SDK billing change.
Notes
0.13.1was skipped before npm publication after a failed release workflow. No0.13.1npm packages were published.
[0.13.0] - 2026-07-02 Changes
Features
- Fable 5 and Claude Agent SDK 0.3.198 migration (#229, @srothgan): Make Fable 5 the default model alias, preserve resolved model IDs from the SDK catalog, and refresh bridge metadata handling for current models, MCP request timeouts, and newer SDK status fields.
- Separate model and thinking effort config dialogs (#229, @srothgan): Split the combined
/configmodel and effort picker into independent dialogs, keep effort choices filtered by the selected model, and explain the model-dependent effort behavior only in the effort dialog. - Mention file autocomplete (#226, @srothgan): Move
@file matching off the UI path, support raw indexed file and folder mentions with spaces, preserve whole-mention replacement boundaries, and rank shallow project paths ahead of deep dependency matches unless the query explicitly targets the deep path. - Atomic input placeholders (#227, @srothgan): Treat image badges and pasted-text placeholders as shared textarea atoms, keeping cursor movement, deletion, undo/redo, image attachment state, and paste expansion aligned through
tui-textarea-20.12.0atomic range support. - Question and list rendering (#228, @srothgan): Render markdown lists with indentation instead of injected blank gaps, and show
AskUserQuestionanswers as structured results with selected options, descriptions, previews, and notes.
Documentation
- README banner (#217, @srothgan): Add a project screenshot banner to the README.
Fixes
- SDK metadata and MCP preservation (#229, @srothgan): Preserve MCP
request_timeout_msthrough status display, diagnostics, and dynamic server removal, and keep app-owned slash commands from being duplicated by SDK command snapshots. - Inline chat resize transactions (#217, @srothgan): Treat terminal size as a draw-transaction snapshot, recover from mid-draw resizes with purge/replay, and clip stale inline viewport geometry before owned-region clears.
- Streaming markdown tables (#226, @srothgan): Preserve table rendering across streamed cache splits so partial assistant updates do not corrupt table layout.
Maintenance
- Dead test helper cleanup (#228, @srothgan): Remove stale test-only helpers that kept old production paths alive only through tests.
- Social discoverability (#219, @srothgan): Add Open Graph and Twitter Card meta tags with a social preview image to the docs site, and expand the npm package keywords to mirror the repo topics.
CI and Dependencies
- Workflow permission hardening (#229, @srothgan): Declare least-privilege GitHub Actions permissions for CI, audit, commit-lint, release dry-run, and Agent SDK workflows to resolve CodeQL code scanning alerts.
- Claude Agent SDK update (#229, @srothgan): Bump
@anthropic-ai/claude-agent-sdkto0.3.198in the root package and bundled bridge package locks. - CodeQL scanning (#228, @srothgan): Add a CodeQL workflow for repository code scanning.
- quinn-proto advisory fix (#220, @srothgan): Bump
quinn-prototo0.11.15forRUSTSEC-2026-0185(remote memory exhaustion from unbounded out-of-order stream reassembly). - Security Audit workflow resilience (#220, @srothgan): Mark the
cargo auditstepcontinue-on-errorso newly published advisories still report and file a tracking issue without failing the scheduled Security Audit run. - Dependency updates (#221, #222, #224, #223): Bump
uuidto1.23.4,anyhowto1.0.103,tui-markdownto0.3.8, andknipto6.23.0inagent-sdk.
[0.12.4] - 2026-06-26 Changes
Features
- Claude Agent SDK 0.3.193 migration (#212, @srothgan): Refresh the bridge for the current SDK, add
/rewindwith conversation and code restore modes, render MCP resource directory listings, and surface new SDK system notices, rate-limit credit metadata, and SDK-created resume sessions. - Deterministic Read syntax highlighting (#210, @srothgan): Preserve tool locations for Read output, add broader syntax coverage, and render a brighter dark-terminal theme with a dim line-number gutter.
Fixes
- Inline viewport bottom growth (#214, @srothgan): Scroll the terminal before autocomplete and composer expansion at the screen bottom so handed-off transcript rows are pushed up instead of overwritten.
- Runtime resize and notice hardening (#211, @srothgan): Prevent notice migration and terminal row-range panics, preserve resize replay repaint requests, and clamp inline geometry after terminal shrinks.
Maintenance
- Production module split (#215, @srothgan): Move inline module tests into sibling files and split keymap, agent model, app state, plugins, config, and MCP config code into focused child modules while preserving facade exports.
CI and Dependencies
- Dependabot and Agent SDK monitor cleanup (#201, #207, @srothgan): Add npm version updates for root and bridge packages, make the SDK monitor the single Agent SDK update path, bump the bridge TypeScript toolchain, and clear Hono advisories.
- Dependency updates (#196, #197, #198, #199, #200): Bump
whichto8.0.4,ratatuito0.30.2,timeto0.3.51,honothrough4.12.27, andrandto0.8.6. - Workflow action bump (#195): Bump
actions/checkoutto7.
[0.12.3] - 2026-06-16 Changes
Documentation
- Agent SDK billing notice (@srothgan): Anthropic paused the Agent SDK credit change documented in (#165, @srothgan); SDK usage still draws from normal Claude subscription limits. Shrink the README warning to a compact note linking the support article.
Fixes
- Startup repaint and PowerShell rendering (#193, @srothgan): Smooth the startup repaint and fix PowerShell tool-call rendering.
CI and Dependencies
- SDK monitor and advisory checks (#186, #187, @srothgan): Add an Agent SDK update monitor and advisory quality checks.
- Rust dependency updates (#189, #190, #191, #192): Bump
uuidto1.23.3,timeto0.3.49,ignoreto0.4.26, andwhichto8.0.3. - Workflow action bump (#188): Bump
actions/upload-artifactto7.
[0.12.2] - 2026-06-14 Changes
Features
- Claude Agent SDK 0.3.177 migration (#180, #182, @srothgan): Refresh the bridge for new SDK metadata, task events, dialogs, retractions, retry errors, and MCP status.
- Opus 4.8 and effort controls (#180, @srothgan): Add
/opus-version 4.8,/effort,xhigh, session-onlymax, and live/agentswitching. - MCP configuration management (#180, #182, @srothgan): Add scoped server removal and track dynamic, plugin-owned, persisted, and runtime-only servers.
UI
- Structured SDK tool rendering (#180, #182, @srothgan): Add readable renderers for new task, automation, workflow, MCP, search, project, artifact, and agent tool outputs.
- MCP tool-call display (#184, @srothgan): Show readable MCP titles with a dedicated icon while keeping raw tool names intact.
- Config dialog overlays (#180, @srothgan): Tighten fullscreen dialogs, confirmations, and small-screen overflow.
Fixes
- SDK compatibility hardening (#180, #182, @srothgan): Normalize retry errors, overage fields, unavailable models, mirror errors, resume task replay, and MCP snapshot refresh.
- Plugin and MCP scope accuracy (#180, #182, @srothgan): Filter plugin lists and stale MCP servers by the scopes that are actually active.
Diagnostics
- Timestamped runtime logs (#183, @srothgan): Write default diagnostics to per-run files under
logs/runtimewith bounded retention.
Documentation
- Commands and diagnostics manual updates (#180, #183, @srothgan): Document
/effort,/opus-version 4.8, settings behavior, and diagnostics paths.
CI and Dependencies
- Agent SDK package refresh (#180, #182, @srothgan): Update the Agent SDK bridge packages and npm lockfiles.
- Rust dependency updates (#176, #177, #178, #179): Bump
unicode-segmentationto1.13.3,uuidto1.23.2,reqwestto0.13.4, andratatuito0.30.1. - Pages workflow updates (#173, #174, #175): Bump
actions/upload-pages-artifactto5,actions/deploy-pagesto5, andactions/configure-pagesto6.
[0.12.1] - 2026-05-28 Changes
Documentation
- mdBook manual and GitHub Pages workflow (@srothgan): Add a repo-native manual and Pages deployment workflow.
Fixes
- CLI help examples (@srothgan): Remove the invalid installed-binary
--features perfexample.
[0.12.0] - 2026-05-21 Changes
Features
- Inline terminal chat runtime (#165, @srothgan): Replace the full-screen chat surface with inline terminal-owned rendering.
- Resolved action-based keymap (#166, @srothgan): Route shortcuts through semantic actions and generate help from the resolved keymap.
- macOS modifier key support (#159, @TomasWeisss): Support Command-key shortcuts in terminal modes.
Fixes
- Inline rendering stability (#165, @srothgan): Stabilize resume, resize, fullscreen return, slash notices, and active-turn state on the inline path.
- Tool-call and diff rendering (#152, #165, #166, @srothgan): Preserve diff indentation, show compact change counts, uncap plan markdown, and keep concrete tool output.
- Agent SDK bridge events (#165, @srothgan): Suppress
ToolSearchevents, protect the packaged bridge runtime, and accept fractional API retry delays.
UI
- Composer hints and Help tab (#165, #166, @srothgan): Move autocomplete into compact composer rows and Help into fullscreen config.
- Compact inline tools and todos (#165, @srothgan): Render todos inline and tighten standard tool body caps.
Documentation
- README billing and commands cleanup (#165, @srothgan): Document Agent SDK billing changes, custom slash commands, and remove the outdated Architecture section.
CI and Dependencies
- Agent SDK 0.3.146 refresh (#165, @srothgan): Update the Agent SDK bridge dependencies and package locks.
- Rust dependency updates (#151, #154, #155, #156, #157, #158, #160, #161, #162, #163, #164): Bump Rust dependencies and clarify the
randaudit ignore. - rustls-webpki advisory fix (#153): Bump
rustls-webpkito0.103.13forRUSTSEC-2026-0104.
[0.11.3] - 2026-04-19 Changes
Fixes
- Plan approval Ctrl shortcuts (@srothgan): Replace plain
y/nexit-plan approvals withCtrl+y/Ctrl+n.
[0.11.2] - 2026-04-19 Changes
Features
- Project-local Opus version controls (#146, @srothgan): Add
/opus-versionto pin the Opus alias per project.
Fixes
- Model alias cleanup and Opus naming (#146, @srothgan): Replace
Defaultwith the explicitopusalias and normalize dated Opus labels. - Dev versus installed bridge resolution (#146, @srothgan): Make
cargo runuse the repo bridge and installed builds use the bundled bridge. - Tool-call diff rendering and scrollbar lane (#138, @srothgan): Reserve a dedicated scrollbar column and keep diff content out of it.
- Versioned short model names (#139, @srothgan): Show resolved model versions in short model names.
- Bridge script resolution precedence (#142, @srothgan): Prefer the bundled bridge script and keep repo-local fallback debug-only.
- Update notice warning message (#143, @srothgan): Move upgrade hints from the footer into a warning system message.
- Terminal ANSI output rendering (#144, @srothgan): Preserve command-emitted ANSI colors in terminal tool output.
- Draft-focused inline prompts (#145, @srothgan): Keep pending prompts from stealing draft focus and move prompt handoff to
Tab.
CI and Dependencies
- Agent SDK 0.2.112 refresh (#141, @shyal): Bump
@anthropic-ai/claude-agent-sdkto0.2.112, updateEXPECTED_AGENT_SDK_VERSION, and refresh4.7fixtures.
[0.11.1] - 2026-04-16 Changes
Features
- Folder-local 1M context controls (@srothgan): Add
/1m-context enable|disable|statusto persistCLAUDE_CODE_DISABLE_1M_CONTEXTin.claude/settings.local.json, preserve neighboring local env keys, surface status, and point 1M-context recovery guidance at the new folder-local fallback
[0.11.0] - 2026-04-16 Changes
Features
- Agent SDK 0.2.104 migration (#135, @srothgan): Upgrade the bundled Claude Agent SDK from
0.2.74to0.2.104across the published package and local bridge; extend the Rust and TypeScript wire contract for current-model snapshots, runtime session state, API retry updates, settings parse errors, terminal reasons, task metadata, prompt suggestions, and refreshed tool metadata - Live session capability synchronization (#135, @srothgan): Reconcile current model and permission-mode support against the active SDK session instead of assuming startup-time state, and keep session/runtime status aligned through connect, resume, and turn lifecycle changes
- Task patch updates and subagent grouping (#135, @srothgan): Propagate incremental task patches and parent tool linkage so subagent child tool calls collapse under their root task while still surfacing focused hidden permission prompts when user input is required
- Welcome session snapshot and rotating tips (#135, @srothgan): Replace the welcome model badge with a lightweight snapshot showing version, subscription, cwd, and session ID, and rotate curated startup tips across sessions
- Backgrounded tool state badges (#135, @srothgan): Surface assistant-backgrounded Bash commands and backgrounded task state directly in tool cards and summaries
Fixes
- Resume ordering and runtime stability (#135, @srothgan): Preserve resumed history turn ordering and tighten turn/session state handling so reconnects, tool updates, and completion events stay consistent
- External API provider auth handling (#135, @srothgan): Respect external API providers during auth validation instead of assuming the bundled Claude auth path
- Permission and tool-result rendering cleanup (#135, @srothgan): Normalize SDK permission display and tool-result metadata, hide redundant permission headers, and treat killed tool calls as terminal failures in transcript rendering
- Ctrl+V paste path split (#135, @srothgan): Make
Ctrl+Vexclusively trigger image paste while keeping normal text paste on the standard input path - Collapsed in-progress subagent summaries (#135, @srothgan): Show substantially more context in collapsed in-progress subagent cards without expanding completed tool calls
Documentation
- Startup limitation note (#135, @srothgan): Document the current end-to-end startup latency constraint from the upstream Claude Agent SDK runtime in
README.md
CI and Dependencies
- Bump
@anthropic-ai/claude-agent-sdkfrom0.2.74to0.2.104in both the published package and bundled bridge (#135, @srothgan) - Add dedicated
agent-sdkCI foraudit,lint, andknip, and gate audit failures on direct dependency advisories only (#135, @srothgan) - Add
@anthropic-ai/sdk0.81.0,@biomejs/biome2.4.12, andknip6.4.1 to the bundled bridge toolchain (#135, @srothgan)
[0.10.0] - 2026-04-11 Changes
Features
- Clipboard image pasting (#104, @shyal): Paste images with
Ctrl+V, send them as PNG image blocks, and render renumbered inline[Image #N]badges in the draft - Live git branch tracking (#114, @srothgan): Replace
git branch --show-currentshell-outs with in-process HEAD parsing and a filesystem watcher so the footer updates while the app stays focused - Terminal tab activity indicator (#115, @srothgan): Drive the OSC 2 tab title from app state with active and idle indicators and restore the plain cwd title on shutdown
- Resume subcommand and startup picker (#116, @srothgan): Replace the
--resumeflag withclaude-rs resume, add a dedicated startup picker, and cap it to recent project sessions - App-owned file index with live updates (#117, @srothgan): Move
@mention search to a shared file index with scan streaming, prewarm, and incremental watcher updates across cwd and gitignore changes
Fixes
- Inline turn-scoped limit notices (#118, @srothgan): Dedup rate-limit and plan-limit notices inside the active assistant turn instead of appending duplicate trailing system rows
- Rename watcher convergence (#120, @srothgan): Re-scan parent subtrees on file-index rename events, handle root-level renames, and refresh the yanked
unicode-segmentationlockfile entry
Performance
- Structured logging and render-path optimization (#119, @srothgan): Standardize Rust and Agent SDK diagnostics, switch to JSON rolling logs, and cut chat hot-path cost with assembled render caching and cheaper spinner frames
Documentation
- Legal notice expansion (#113, @srothgan): Clarify the project’s relationship to Claude Code, the Agent SDK, Anthropic terms, and the recent source leak
CI and Dependencies
- Bump
uuidfrom 1.22.0 to 1.23.0 (#106, @dependabot) - Bump
notify-rustfrom 4.12.0 to 4.13.1 (#109, @dependabot) - Bump
similarfrom 2.7.0 to 3.0.0 (#110, @dependabot) - Bump
tokiofrom 1.50.0 to 1.51.0 (#111, @dependabot)
Project
- Collaboration template cleanup (#121, @srothgan): Simplify PR and issue templates, collapse
CODEOWNERS, and alignCONTRIBUTING.mdwith the current workflow
[0.9.0] - 2026-03-26 Changes
Features
- Two-line footer replaces header (#102): Remove the header and consolidate location, branch, mode badges, permission counts, and MCP auth hints into a two-row adaptive footer
Fixes
- Unified viewport geometry handling (#101): Single geometry entry point with separate width/height semantics and tail invalidation on topology changes
- Centralized geometry state and wrapped panel measurement (#101): Immediate resize geometry refresh and wrapped-text measurement replacing fixed-height panel assumptions
- Topology invalidation and batch message dirtiness (#101): Tracked insert/remove/clear paths own tool index and terminal ref repair
- Active turn ownership across history pruning (#101): Keep active assistant turn out of retention drop candidates and remap ownership after pruning
- Scroll anchor preservation (#101): Delay anchor restore until heights are exact and preserve anchors across pruning and marker operations
- Unified message layout model (#101): Shared
MessageLayoutreplaces split role-specific render/measure branches - Turn cleanup normalization (#101): Single cleanup boundary for resume, cancel, auth-required, connection-failure, and fatal exits
- Chat focus ownership (#101): Rebuild focus from surviving state on transitions and render selected prompt choices in rust orange
- Streaming invalidation and selection snapshots (#101): Refresh selection snapshots on redraw and protect active streaming assistant in cache budgeting
- Session state reset at authority boundaries (#101): Scope async responses to the active session epoch and discard stale results
- Persisted authority reconciliation (#101): Rederive trust state from current cwd on reconnect and clear stale session identity on failure boundaries
- Tool index rebuilds and multi-index sync (#101): Gate scope updates on successful lookup and normalize interaction queues to prevent stale prompt drops
- Display-width-aware copy (#101): Slice copied text by display columns so emoji, CJK, and combining marks match visual selection
- Esc cancel and queued submit lifecycle (#101): Clear deferred submit on Esc and let manual cancel override auto-resubmit
Performance
- Offscreen row skip and wrapped-height culling (#101): Render from the first visible message’s structural offset and use exact wrapped row coverage for culling
[0.8.4] - 2026-03-23 Changes
Fixes
- Chat bottom-height drift: Stop rendering and measuring the trailing separator row after the final chat message so auto-scroll no longer lands on a persistent empty line beneath the last Claude response; add regression tests for last-message rendering and height measurement
[0.8.3] - 2026-03-23 Changes
Performance
- Unified layout invalidation and progressive remeasure (#98): Replace the
dirty_fromsuffix watermark with per-message staleness tracking, separated prefix-sum dirtiness, and a visible-first remeasure plan; preserve scroll anchors across in-flight resize and global remeasure replacement; single-message updates do exact changed-message remeasure plus targeted prefix repair instead of invalidating the entire suffix - Incremental history retention accounting (#98): Cache per-message retained-byte estimates and maintain a rolling total so retention enforcement stops rescanning the full message list every cycle; cache tool
raw_inputbyte estimates to avoid repeated JSON serialization in hot paths - Incremental render cache budget (#98): Replace per-frame full cache budget scans with incremental slot metadata, rolling byte totals, and a pre-sorted eviction set rebuilt only when over budget
- Derive tool collapse state at render time (#98): Remove per-tool
collapsedfield;tools_collapsedis the session-level source of truth read at render time so Ctrl+O no longer walks and mutates every tool-call block - Index terminal tool-call refs (#98): Replace linear duplicate checks on terminal subscriptions with a
HashSetmembership index; route attach, detach, and rebuild through shared tracking helpers
Dependencies
- Bump
aws-lc-sysfrom 0.38.0 to 0.39.0 andaws-lc-rsfrom 1.16.1 to 1.16.2 (fixes RUSTSEC-2026-0044, RUSTSEC-2026-0048) - Bump
rustls-webpkifrom 0.103.9 to 0.103.10 (fixes RUSTSEC-2026-0049) - Bump
pulldown-cmarkfrom 0.13.1 to 0.13.3 (#97)
[0.8.2] - 2026-03-18 Changes
Fixes
- Startup service status handling: Keep startup Claude service warnings and errors as transcript messages only; status errors no longer clear the draft or block users from trying a request during partial or uneven outages
[0.8.1] - 2026-03-18 Changes
Fixes
- Startup session settings propagation: Pass configured
modelanddefaultPermissionModethrough the SDK’s top-level session startup options so new sessions start with the expected live model and permission mode instead of falling back to provisional defaults - Welcome banner model sync: Keep the welcome banner and header aligned through
Connecting..., provisionaldefault, and the first authoritative model update; freeze the welcome banner once the session model is resolved while allowing the header to continue tracking live model changes - Claude status relevance filtering: Query the status summary endpoint and only surface startup warnings for
Claude CodeandClaude API, avoiding false-positive outage banners caused by unrelated Anthropic components - Config cleanup: Remove obsolete MCP callback overlay code and stale config UI expectations left behind by the MCP management changes
[0.8.0] - 2026-03-17 Changes
Features
- Agent SDK 0.2.74 migration (#83): Upgrade from SDK 0.2.63 to 0.2.74; inline session settings replace per-flag overrides; agent progress summaries rendered in task tool-call bodies; model capability badges (adaptive thinking, fast mode, auto mode) shown in settings overlay
- AskUserQuestion support (#83): Dedicated question/response bridge path with horizontal and vertical option layouts; multi-select state tracking; inline annotation editing; question progress indicator; shared focus cycling infrastructure with permissions
- MCP management tab (#89): Live MCP server list with connection status indicators and tool counts;
/mcpslash command; server detail overlay with context-aware actions (reconnect, toggle, authenticate, clear auth); OAuth authentication flow with browser launch and manual callback URL entry; elicitation support for URL-based and form-based modes; stale status revalidation with 30-second cooldown auto-reconnect - Usage tab with quota visualization (#88, closes #87): Dual-source fetching (OAuth API first, CLI fallback); gauge bars with color-coded utilization (green/yellow/red); 5-hour, 7-day, and per-model quota windows; extra credits panel;
/usageslash command andrmanual refresh; 30-second TTL caching; OAuth credential expiry validation - Plugin management (#85): Three-section Plugins tab (Installed, Marketplace, Marketplace Sources) with CLI-backed operations; install/enable/disable/update/uninstall actions via overlay dialogs; marketplace source add/remove with text input; MCP capability badges;
/pluginsslash command; 5-second inventory cache with background refresh - Status tab and /status command (#80): Session, account, model, and settings information display; lazy account snapshot fetching via SDK; login method labels (Claude Max, API key variants); session name resolution with custom title/summary/prompt fallback chain; memory path and active setting sources display
- Unified syntax highlighting (#84): Replace
ansi-to-tuiwithsyntectfor theme-aware coloring across shell commands, code blocks, and terminal output; ANSI escape stripping state machine; automatic raw unified diff detection and semantic coloring; language-aware code highlighting with extension-based syntax detection - Session management enhancements (#83): Repository-scoped session discovery with worktree inclusion; session rename and AI-generated title actions in Status tab; text overlay for rename input with immediate visual feedback
- Tool output metadata (#83): Structured metadata for Bash (assistant-backgrounded badge, token-saver state), ExitPlanMode (ultraplan badge), TodoWrite (verification-needed badge), and Write/Edit (git repository labels in diff headers); MCP resource content typing with URI, MIME type, and blob saved-path hints
Fixes
- Paste-handled Enter suppression (#83): Treat paste-handled Enter as fully consumed in key dispatch; prevent suppressed paste newlines from falling through to non-char cleanup; restores inline multiline paste insertion for sub-1000 character payloads
- Bell notification fallback (#83): Restore bell alongside desktop notifications on terminals without OSC 9 support; keep auto notification routing aligned with pre-settings behavior
UI
- Config tab activation helper (#88): Centralized
activate_tabfunction for consistent tab-switch behavior across/plugins,/status,/usage,/mcp, and keyboard navigation - Shared text input widget (#85): Reusable
text_input_line()andrender_text_input_field()components used by Language, Session Rename, and Add Marketplace overlays - Setting stepping (#85): Left/Right arrow editing for enum settings (Theme, Notifications, EditorMode, DefaultPermissionMode) in config view
Performance
- Progressive resize height recomputation (#90): Replace synchronous full-remeasure on terminal width change with frame-budgeted progressive convergence; scroll anchor preservation across resize; per-message exactness tracking with expanding measurement frontiers around the visible window; measurement budget of max(12, viewport_height) messages and max(256, viewport_height * 8) wrapped lines per frame
- Background file walker for mentions (#81): Replace synchronous BFS with
ignorecrateWalkBuilderon a background thread; query refinement refilters from cache instead of restarting the walk; pre-computed lowercase path variants eliminate per-sort allocation; bounded channel (1024 entries) with 500-entry drain budget per tick - Input redraw and cache optimization (#82): Split input versioning into cursor-only and content epochs; syntax highlighting and height measurement caches keyed on content version; key handlers return visibility signals to suppress redraws for non-visual events; Windows paste burst jitter tolerance in pending confirmation window
- Background bash terminal detachment (#86): Detach terminal references when Bash tools reach completed or failed state; skip polling for non-running tools; prevent late bridge progress updates from reopening finalized tools; clear execute terminal references during forced tool finalization
- Dev/test profile tuning (#83): Line-tables-only debug info and disabled incremental builds for faster compilation
Licensing
- Apache-2.0: Switch project license from AGPL-3.0-or-later to Apache-2.0; SPDX single-line identifiers replace full header blocks across all source files
CI and Dependencies
- Bump
@anthropic-ai/claude-agent-sdkfrom 0.2.63 to 0.2.74 (#83) - Replace
ansi-to-tuiwithsyntect5.3.0 (#84) - Bump
tui-textarea-2from 0.10.1 to 0.10.2 (#82) - Add version comparison to release dry-run workflow to skip unchanged versions (#82)
[0.7.1] - 2026-03-12 Changes
Fixes
- npm rollback for installs and releases: Revert active package manager guidance, package scripts, and GitHub release workflows from
pnpmback tonpm; runtime reinstall guidance now recommendsnpm install -g - Leading blank row before Claude text: Trim leading rendered blank rows before the first visible assistant text block while preserving paragraph spacing for later content
- Deferred Enter submit stability: Plain
Enternow snapshots and restores the exact draft instead of mutating the input before submit, fixing hidden newline leaks when the cursor is in the middle of the text
[0.7.0] - 2026-03-12 Changes
Features
- Native
/loginand/logoutcommands (#67): Shell out toclaude auth login/logoutwith TUI suspend/resume; credential verification reads~/.claude/.credentials.jsondirectly; skip redundant operations when already authenticated or not authenticated - User settings system (#74): 14 persisted settings across three JSON files (
~/.claude/settings.json,<project>/.claude/settings.local.json,~/.claude.json); metadata-driven two-column config view with compact narrow-terminal fallback; toggle/cycle/overlay mutation with immediate persistence - Workspace trust (#74): Startup gated on per-project trust acceptance; path normalization for Windows drive letters, UNC paths, and symlinks; trust state persisted in
~/.claude.json - Session launch settings (#74): Saved preferences (model, language, permission mode, thinking mode, effort level) propagate into every new session via
SessionLaunchSettings; available models flowed back from SDK for dynamic UI - Cancel-and-resubmit (#68): Submitting while the agent is running cancels the current turn and auto-resubmits once ready; draft stays visible and editable throughout with cancellation spinner banner
- Desktop and bell notifications (#68, #74):
NotificationManagertracks terminal focus via DECSET 1004; fires bell + OS-native desktop toasts on permission requests and turn completion when unfocused; channel-based delivery (disabled, bell, OSC 9, desktop) driven by user preference - Compaction overhaul (#68):
/compactkeeps chat history and appends a success system message after the turn completes; input and keyboard blocked during compaction; auto-compaction clears silently without a banner - Cache observability (#69):
CacheMetricsaccumulator with rate-limited structured tracing; warn-level alerts for high utilization and eviction spikes with cooldown; integration test suite covering the full stream-to-split-to-measure-to-prefix-sums pipeline - Unified textarea input (#70): Replace snapshot-based input state plus shadow editor with one persistent
TextAreaas source of truth; fixes wrapped visual-row cursor navigation;&subagent autocomplete now eager, matching@and/behavior - Incremental mention search (#74): Replace repeated full rescans with incremental BFS (400 entries/tick budget) and 4-tier ranking;
.gitignoreawareness with global, local, and nested rule support; search threshold lowered from 3 characters to 1
Fixes
- Permission
allow_alwayspersistence (#68, #71): Synthesize persistentaddRulesfallback when the SDK omits suggestions, fixing silent degradation to one-time allow;allow_alwaysfallback now persists tolocalSettings - Paste burst reliability (#71): Reworked burst detection into a timing-based state machine (
Idle/Pending/Buffering) with idle flush; retro-capture cleanup for leaked leading characters; enter suppression during and immediately after paste; CRLF normalized to LF ininsert_str - Bridge
reject_oncematch arm (#68): Added missing match arm that caused spurious warning logs on every permission prompt
UI
- Help panel keyboard navigation (#67): Up/Down scroll and selection for Slash Commands and Subagents tabs; dynamic visible-item computation from wrapped text heights; fixed panel height across tabs; orange highlight for selected item
- Paragraph gap preservation (#74):
TextBlockstate with trailing spacing metadata preserves paragraph gaps in chat rendering - Built-in slash entries (#74):
/config,/login,/logoutappear in slash help and autocomplete - Input blocking during async commands (#67): General
CommandPendingstatus with dynamic spinner text used by/login,/logout,/mode,/model,/new-session,/resume
Performance
- Capacity-based byte accounting (#69): Replace heuristic message sizing with
IncrementalMarkdown::text_capacitymeasurement - Protected-bytes tracking (#69): Non-evictable streaming-tail blocks excluded from eviction targets in render budget enforcement
- Layout invalidation consolidation (#69):
InvalidationLevelenum andinvalidate_layouthelper replace ad-hoc invalidation across event flows
Refactoring
- Codebase split (#68):
ui/tool_call.rs,app/connect.rs,app/slash.rs,app/state.rs,app/events.rssplit into submodule directories (4-9 files each);bridge.tssplit into 8 files underbridge/; all public APIs preserved via re-exports - Usage pipeline removal (#68): Delete entire
usage_updatepipeline (bridge/usage.ts, UsageUpdate types, session/message token tracking, footer cost display) across TypeScript and Rust - Input state unification (#70): Remove rebuild/sync debt from snapshot-based input; route all input reads/writes through accessor + replace flows on a single
TextAreainstance
CI and Dependencies
- Bump
uuidfrom 1.21.0 to 1.22.0 (#72) - Bump
whichfrom 8.0.0 to 8.0.2 (#73) - Switch
tui-textarea-2from local path dependency to crates.io0.10.1(#70) - Switch remaining npm command surfaces to pnpm across workflows, docs, and scripts (#74)
[0.6.0] - 2026-03-03 Changes
Features
- Agent SDK 0.2.63 migration (#64): Upgrade from SDK 0.2.52 to 0.2.63; align bridge, wire types, and session APIs with the new SDK surface
- Fast mode support (#64): Wire fast mode state end-to-end from bridge to TUI; footer badge shows
FASTorFAST:CDduring cooldown; deduplicated state change emission - Rate limit updates (#64): Parse and display rate limit events with readable user-facing summaries including overage and reset timing
- Available agents and subagent autocomplete (#64): Wire
available_agents_updateacross bridge and rust layers;&ersand autocomplete for subagents; new Subagents help tab with two-column layout - Session resume via SDK-native APIs (#64): Replace legacy JSONL parsing with
resume_sessionbacked bylistSessionsandgetSessionMessages; align to SDK session metadata fields - Interactive plan approval (#61): Intercept
ExitPlanModeand render structured Approve/Reject widget with arrow navigation,y/nquick shortcuts, andallowedPromptsdisplay - Write diff capping (#61): Truncate Write tool diffs exceeding 50 lines to head/tail window with omission marker; auto-scroll on oversized writes; plan files exempted
- Startup service status checks (#65): Query status.claude.com during startup; emit warning or error system messages; lock input on outage-level errors
- Subagent thinking indicator (#60): Debounced (1500ms) idle indicator between subagent tool calls to avoid flicker; suppress normal spinner when subagent indicator is active
- System message severity levels (#64): Replace
SystemWarningwithMessageRole::Systemplus Info/Warning/Error severity with matching label colors - Slash command output in transcript (#64): Local slash command results now surface in assistant transcript
Fixes
- Context percentage formula (#61): Exclude
output_tokensfrom context calculation – Anthropic input formula is cache_read + cache_creation + input only; context % now updates as soon asinput_tokensarrive - Stale task scope cleanup (#65): Clear
active_task_idson tool scope reset to prevent subagent misclassification after cancelled tasks - Subagent indicator false positives (#65): Gate thinking indicator on active spinner state to prevent false idle rendering
- SDK rejection sanitization (#65): Harden bridge rejection replacement with exact and known-prefix matching only on failed tool results
- Saturating coordinate math (#65): Use saturating arithmetic for header, input, autocomplete, and todo padding to prevent overflow panics
UI
- Footer module extraction (#61): Move all footer logic into dedicated
src/ui/footer.rs; clean up imports inmod.rs - Autocomplete stabilization (#61): Stable popover width; shift left near right edge; UTF-8-safe case-insensitive highlight ranges
- Help overlay improvements (#64): Add subagents tab; move tab-switch hint into help title; rename footer hint from “Shortcuts + Commands” to “Help”
Refactoring
- Handler decomposition (#61): Split large connection/event/key/slash/message handlers into smaller helpers; remove
clippy::too_many_linessuppressions;FocusContextbuilder-style API
CI and Dependencies
- Bump
actions/upload-artifactfrom 6 to 7 (#62) - Bump
actions/download-artifactfrom 7 to 8 (#63) - Migrate from npm
package-lock.jsonto pnpmpnpm-lock.yamlin agent-sdk (#64)
[0.5.1] - 2026-02-27 Changes
Fixes
- Input smoothness during rapid keys: Restore frame rendering during non-paste active key bursts by narrowing suppression to confirmed paste bursts only; preserves paste placeholder anti-flicker behavior
[0.5.0] - 2026-02-27 Changes
Features
- Paste handling overhaul (#53): Character-count threshold (1000 chars) replaces line-count; placeholder label updated; session identity tracking prevents append across separate pastes; burst finalization scoped to newly pasted range only
- Turn error classification (#54):
TurnErrorstrings matched against known patterns (rate limit, plan limit, max turns, quota, 429); actionable recovery hint pushed as a system message in chat; unclassified errors preserve existing behavior
Fixes
- Typed
AppErrorenum (#54):NodeNotFound,AdapterCrashed,AuthRequired,ConnectionFailed,SessionNotFoundvariants with per-variant exit codes and user-facing messages
Performance
- Unified cache budgeting + LRU history retention (#52): Single cache budget across all message blocks; LRU eviction for long sessions; reduces memory growth on extended conversations
UI
- Footer three-column layout: Update hint and context percentage now render in separate right-aligned columns simultaneously instead of either-or
[0.4.1] - 2026-02-27 Changes
Fixes
- Dynamic bridge log levels (
client.rs): Bridge stderr lines are now routed to the correct tracing level –[sdk error]/panic lines go toerror!,[sdk warn]lines towarn!, and ordinary SDK chatter todebug!– instead of unconditionally emittingerror!for every line - Height cache invalidated on interruption (
events.rs):TurnCompleteandTurnErrornow callmark_message_layout_dirtyon the tail assistant message so the height cache is re-measured after a cancelled or failed turn, fixing stale layout after interruption
[0.4.0] - 2026-02-27 Changes
Features
- Agent SDK migration (#45, closes #23): Replace
@zed-industries/claude-code-acpwith the in-repo Agent SDK bridge; align permission suggestions with SDK session/always-allow scope - Session resume (#46, closes #22):
--resumeis cwd-aware and restores full transcript state; input locked while resuming; recent sessions shown in welcome context - Token and cost tracking (#47, closes #21): Footer shows live
Context: XX%; assistant turns show per-turn(Xk tok / $X.XX); compaction spinner during SDK-reported compaction - Slash command popovers and AskUserQuestion (#48): Variable-input slash commands show dynamic argument popovers; full
AskUserQuestionflow with option rendering and answer propagation
Fixes
- TodoWrite flicker (#45): Ignore transient payloads without a todos array so the list no longer clears and reappears mid-turn
- Failed Bash rendering (#45): Compress failed tool output to a single exit-code summary line instead of the full stderr dump
- Ctrl+C determinism (#46): Copy only when selection is non-empty and clear it after; otherwise quit
- Submission pipeline (#47): Single queue gate for submissions; cancel active turn before dispatching queued action; wait for turn-settle before ready
- Persisted tool-result normalization (#48): Strip leading box-drawing prefixes from tool result summaries
Performance
- Streaming frame cost (#49): Generation-keyed tool call measurement cache with O(1) fast path; terminal output delta-append; skip invalidation for no-op updates
Internal
- Agent SDK bridge modularized into focused modules (
commands.ts,tooling.ts,permissions.ts,usage.ts,history.ts,auth.ts,shared.ts) (#48) - Perf instrumentation markers for key invalidation, measurement, and snapshot paths (#49)
[0.3.0] - 2026-02-25 Changes
Features
- Startup update check (#30): Non-blocking check via GitHub Releases API with 24h cache, footer hint,
Ctrl+Udismiss,--no-update-check/CLAUDE_RUST_NO_UPDATE_CHECK=1opt-out - Shortcuts during connecting (#38): Navigation and help shortcuts work while ACP adapter connects; input keys remain blocked
- Global Ctrl+Q quit (#38): Safe quit available in all states including connecting and error
- Input height API and word wrapping (#40): Adopt tui-textarea-2 v0.10
TextArea::measure()for input sizing, switch toWrapMode::WordOrGlyph, remove customInputWrapCacheplumbing
Fixes
- Height cache recalculation (#39): Track dirty message index and re-measure non-tail messages when content or tool blocks change
- Error state and input locking (#39): Connection and turn failures surface immediately with quit hint; input blocked during connecting/error
- Scroll clamp after permission collapse (#39): Clamp overscroll when content shrinks; ease scroll position for smooth settling; consume Up/Down with single pending permission
- Permission shortcut reliability (#29):
Ctrl+Y/A/Nwork globally while prompts are pending with fallback option matching - Tool-call error rendering (#29): Improved error handling with raw_output fallback and cleaner failed-call display
CI and Dependencies
- Bump
actions/upload-artifact4 to 6,actions/setup-node4 to 6,actions/download-artifact5 to 7 (#31, #32, #33) - Bump
pulldown-cmarkfrom 0.13.0 to 0.13.1 (#34) - Unify cargo publish, binary build, GitHub release, and npm publish into one workflow (#30)
- Add
revertto allowed semantic PR title types (#37)
Internal
- Attempted migration to
claude-agent-acp(#29), reverted toclaude-code-acp(#37) due to feature parity gaps - Regression tests for height remeasurement, scroll clamp, permission keys, connecting shortcuts, and update check
[0.2.0] - 2026-02-22 Changes
Rename and Distribution
- Rename crate/package to
claude-code-rust - Rename command to
claude-rs - Update release workflows and artifacts to publish/build under the new names
[0.1.3] - 2026-02-21 Changes
Fixes
- Rescan files on each
@mention activation so new/deleted files are reflected during a session - Add keywords to npm package.json for better discoverability
[0.1.2] - 2026-02-21 Changes
UX and Interaction
- Add OS-level shutdown signal handling (
Ctrl+C/SIGTERM) so external interrupts also trigger graceful TUI teardown - Keep in-app
Ctrl+Ckey behavior for selection copy versus quit, while unifying shutdown through the existing cleanup path - Make chat scrollbar draggable with proportional thumb-to-content mapping
- Ensure scrollbar dragging can reach absolute top and bottom of chat history
[0.1.1] - 2026-02-21 Changes
CI and Release
- Replace release-plz with direct cargo and npm publish workflows
release-cargo.yml: publishes to crates.io on Cargo.toml version bumprelease-npm.yml: builds cross-platform binaries, creates verified GitHub Release, publishes to npm with provenance- Triggers based on Cargo.toml version changes instead of tag chaining
- Tags created by github-actions[bot] for verified provenance
- Remove release-plz.toml and cliff.toml
[0.1.0] - 2026-02-20 Changes
Release Summary
Claude Code Rust reaches a strong pre-1.0 baseline with near feature parity for core Claude Code terminal workflows:
- Native Rust TUI built with Ratatui and Crossterm
- ACP protocol integration via
@zed-industries/claude-code-acp - Streaming chat, tool calls, permissions, diffs, and terminal command output
- Modern input UX (multiline, paste burst handling, mentions, slash commands)
- Substantial rendering and scrolling performance work for long sessions
- Broad unit and integration test coverage across app state, events, permissions, and UI paths
The only major parity gap intentionally excluded from this release is token/cost usage display because the upstream ACP adapter currently does not emit usage data.
Architecture And Tooling
- Three-layer runtime design:
- Presentation: Rust + Ratatui
- Protocol: ACP over stdio
- Agent: Zed ACP adapter process
- Async runtime and event handling:
- Tokio runtime with ACP work kept on
LocalSet(!Sendfutures) mpscchannels between ACP client events and UI state machine
- Tokio runtime with ACP work kept on
- CLI and platform support:
- Clap-based CLI (
--model,--resume,--yolo,-C, adapter/log/perf flags) - Cross-platform adapter launcher fallback (explicit path, env path, global bin, npx)
- Windows-safe process resolution via
which
- Clap-based CLI (
Core Features
- Chat and rendering:
- Native markdown rendering including tables
- Inline code/diff presentation and tool-call block rendering
- Welcome/system/tool content unified in normal chat flow
- Input and commands:
tui-textarea-2powered editor path- Multiline paste placeholder pipeline and burst detection
@file/folder mention autocomplete with resource embedding- Slash command workflow with ACP-backed filtering and help integration
- Tool execution UX:
- Unified inline permission controls inside tool-call blocks
- Focus-aware keyboard routing for mention, todo, and permission contexts
- Better interruption semantics and stale spinner cleanup
- Internal ACP/adapter failures rendered distinctly from normal command failures
- Session and app UX:
- Parallel startup (TUI appears immediately while ACP connects in background)
- In-TUI connecting/auth failure messaging and login hinting
- Header model/location/branch context
- Help overlay and shortcut discoverability improvements
- Mouse selection and clipboard copy support
- Smooth chat scroll and minimal scroll position indicator
Performance Work
Performance optimization was a major release theme across recent commits:
- Block-level render caching and deduplicated markdown parsing
- Incremental markdown handling in streaming scenarios
- Prefix sums + binary search for first visible message
- Viewport culling for long-chat scaling
- Ground-truth height measurement and improved resize correctness
- Conditional redraw paths and optional perf diagnostics logging
- Additional targeted UI smoothing for scroll and scrollbar transitions
Reliability, Quality, And Tests
- Significant test investment across both unit and integration layers
- Current codebase includes over 400 Rust
#[test]cases - Dedicated integration suites for ACP events, tool lifecycle, permissions, state transitions, and internal failure rendering
- CI includes test, clippy (
-D warnings), fmt, MSRV, and lockfile checks
Release And Distribution Setup
- Rust crate is now publish-ready for crates.io as
claude-code-rust - CLI executable name is
claude-rs - npm global package added as
claude-code-rust:- installs
claude-rscommand - downloads matching GitHub release binary during
postinstall
- installs
- Tag-based GitHub Actions release workflow added for:
- cross-platform binary builds (Windows/macOS/Linux)
- GitHub release asset publishing
- npm publishing (when
NPM_TOKENis configured)
release-plzremains in place for release PR automation and changelog/version workflows
Known Limitations
- Slash command availability is intentionally conservative for this release:
/loginand/logoutare not offered- they remain excluded until ACP/Zed support is reliable enough for production use
- Token usage and cost tracking is blocked by current ACP adapter behavior:
UsageUpdateevents are not emittedPromptResponse.usageisNone
- Session resume (
--resume) is blocked on an upstream adapter release that contains a Windows path encoding fix