v0.4.0
Highlights
- Replaces
cic.shwith a zero-dependency Node.js 22+ CLI and publishes it asclaude-in-chrome-cli, withcicas the installed command. - Fixes the MCP lifecycle: initialization is negotiated in order, protocol versions are checked before dispatch, and replies are read as they arrive instead of after a fixed sleep.
- Freezes meaningful exit codes: 0 success, 1 tool error, 2 outcome unknown after dispatch, 3 transport failure before dispatch, and 64 usage error.
--jsongives machine callers a stable one-line error envelope. - Drains large output before exit, handles closed pipelines without an EPIPE stack trace, rejects malformed top-level replies, and terminates and reaps misbehaving bridge children without hanging on inherited pipes.
- Bundles the Node CLI inside the Claude plugin while also supporting global npm installation; both paths are exercised by install-level tests.
Install
npm install -g claude-in-chrome-cliThe Claude plugin continues to bundle its own entry point at node ${CLAUDE_PLUGIN_ROOT}/bin/cic.js; plugin users do not need the global npm install.
Breaking change
cic.sh is removed. Existing copies remain usable and the script stays available from the v0.2.x and v0.3.x tags, but upgrades should move to cic list and cic call <tool> [json-args]. See the README migration table for every previously documented invocation.
Known limits
- Initialize replies do not yet use the same exact result-or-error validator as tool replies.
- Tool result arrays are required, but their members and optional
isErrortype are not fully validated; JSON-RPC error codes are checked as numbers rather than integers.
These affect hostile or broken server replies, not well-formed results, and are planned as post-0.4.0 hardening.
Validation
139 offline checks pass: 53 parser, 13 chrome-tabs handshake, 64 cic contract, and 9 installation checks. The npm tarball contains four files and no bundled dependencies.
Full changelog: v0.3.1...v0.4.0