1.24.0 (2026-04-01)
Features
- add build pipeline for npm publishing, remove runtime Bun dependency (4f62897)
- add diagnostic log viewer to telemetry dashboard (d7ab690)
- add env var to disable file change summaries (#209) (374293f)
- add LiteLLM passthrough adapter (#215) (beb5a5b)
- add proxyOverheadMs metric to telemetry (5c573b1)
- add proxyOverheadMs metric to telemetry (049063e), closes #104
- add request debug logging for tool loop visibility (0051d60)
- add session resume support for conversation continuity (c40ff63)
- add tabbed layout to telemetry dashboard (6800ea5)
- add telemetry dashboard with request performance tracking (def290f)
- add telemetry dashboard with request performance tracking (79c04a2), closes #81
- Claude Max proxy for OpenCode (b9df612)
- clear error messages for auth failures and SDK crashes (4e21e9a)
- concurrency control, auto-restart supervisor, error handling (318ca75)
- Crush (Charm) agent adapter with full E2E test suite (#183) (7395b1f)
- detect rate-limited accounts and fall back from 1m models (#149) (1b56c0b)
- Docker support and README install options (cfb8396)
- Docker support and README install options (d61670e), closes #15
- Droid (Factory AI) agent adapter (#181) (b07d2d4)
- enable 1M context window for Opus models (e23afba)
- enable concurrent requests for subagent support (Phase 3) (34452a3)
- error classification, health endpoint, and startup auth check (43a80f1)
- export TypeScript declarations from dist (cd06761)
- file change visibility in responses (#189) (#192) (9112d4a)
- forward tool_use blocks to clients (Phase 1) (6042cd7)
- fuzzy match agent names for reliable subagent delegation (fec9516)
- fuzzy match agent names to fix invalid subagent_type values (5364124)
- multimodal content support (images, documents, files) (0e6fc7a)
- multimodal content support (images, documents, files) (bc072cb)
- passthrough mode for multi-model agent delegation (4836a48)
- passthrough mode for multi-model agent delegation (a74ced9), closes #21
- per-terminal proxy launcher and shared session store (836102c)
- per-terminal proxy launcher and shared session store (d2ace88)
- PreToolUse hook for reliable subagent delegation (01df852)
- register OpenCode tools as MCP tools in passthrough mode (e683539)
- register SDK agent definitions from OpenCode's Task tool (afa480f)
- remove internal MCP tools, use maxTurns: 1 (Phase 2) (a740574)
- restore MCP tool federation for multi-turn agent sessions (099a830)
- session resume support for conversation continuity (1e98be0)
- show client model version in telemetry (f77095f)
- show client model version in telemetry (f3b8aa0), closes #169
- telemetry diagnostic log viewer with tabbed dashboard (94f6c8b)
- transparent API proxy with full tool execution and subagent support (96be81c)
- true concurrent SDK sessions (no serialization) (6dd5aa0)
- use PreToolUse hook for agent name correction (replaces stream hacks) (7cb37b6)
- validate passthrough architecture concept (deed3db)
Bug Fixes
- add --version and --help flags to CLI (#196) (029d049)
- add NPM_TOKEN to publish workflow (8339bb0)
- add SSE heartbeat to prevent connection resets (194fd51)
- add SSE heartbeat to prevent connection resets (ec7120d), closes #1
- add workingDirectory to fingerprint hash for cross-project isolation (69cfa1a), closes #111
- allow configuring MCP tool working directory via env var (b4d7d74)
- block all Claude Code-only tools in passthrough mode (92fbe7b), closes #35
- block Claude Code-only tools in passthrough mode (c06d1ea), closes #35
- block CLAUDE_CODE_ONLY_TOOLS in normal (non-passthrough) mode (54839b2)
- block CLAUDE_CODE_ONLY_TOOLS in normal (non-passthrough) mode (46be89a)
- block SDK built-in tools, enforce MCP-only tool execution (ca1f8e1)
- block SDK tools with schema-incompatible OpenCode equivalents (5bfd10f)
- cache failed auth status lookups to avoid repeated exec calls (#145) (4a79701)
- capture subprocess stderr to surface real exit-code-1 failures (#213) (40eeda7)
- CI workflow must use npm test, not bun test (1644484)
- concurrent requests with auto-restart supervisor (1a8f695)
- deduplicate message_start/stop events in multi-turn streaming (23a0044), closes #20
- deduplicate streaming events for cleaner multi-turn responses (b98b2dd)
- deduplicate tool_use blocks in streaming passthrough mode (f8238b9)
- deduplicate tool_use blocks in streaming passthrough mode (0007887), closes #69
- deny Task tool retries via canUseTool callback (8b1a8b0)
- detect conversation divergence (undo/edit) via lineage hashing (ced5819)
- detect conversation divergence (undo/edit) via lineage hashing (a09558a), closes #86
- deterministically normalize agent names in task tool_use blocks (64133e1)
- disable all tools in Claude Code sessions (7fab74c)
- Docker auth persistence and non-root user (afa18f7)
- Docker auth persistence and non-root user (c4f58a6), closes #15
- emit message_delta and message_stop before error on mid-stream failures (#185) (8bd9b48), closes #168
- enable 1M context window for Sonnet models (0e3464a)
- enable 1M context window for Sonnet models (08dc8ff), closes #124
- ensure Docker entrypoint scripts are executable (#142) (6888f32)
- escape quotes in dashboard onclick handlers (6728fc3)
- export TypeScript declaration files from distFix/types export (3a50c93)
- extract client working directory from system prompt for remote proxy (fbf8cfb)
- extract client working directory from system prompt for remote proxy (10279ec), closes #123
- filter MCP tool events from stream, forward only client-facing tools (18a0280)
- include mcpTools.ts in published package files (10d8ee8)
- include mcpTools.ts in published package files (5039707)
- include src/plugin/ in published package files (799e29e)
- include system prompt context in proxy requests (948b8fb)
- increase session TTL to 24 hours, verified end-to-end (181a5fe)
- inject agent type hints to prevent capitalization errors (172dca1)
- make CLAUDE_PROXY_WORKDIR override extracted cwd (#154) (#158) (7c68ee6)
- make tsconfig.json optional in Docker COPY to prevent build failure (9526f54)
- make tsconfig.json optional in Docker COPY to prevent build failure (fe61ebf), closes #70
- migrate all session store tests to setSessionStoreDir (fc8d72b)
- mock Date.now in pruning test to prevent CI failure (5ca8653)
- mock Date.now in pruning test to prevent flaky CI failure (ea56c74)
- move npm publish into release-please workflow (82db07c)
- move npm publish into release-please workflow (f7c4b2c)
- npm publish with automation token (230b185)
- only block tools with no OpenCode equivalent (cc73e9e), closes #35
- only send new messages on resume, not full history (b1e101b)
- only send new messages on resume, not full history (5dcbae3), closes #49
- optimize Docker layer ordering to cache dependencies (dd4351a)
- optimize Docker layer ordering to cache dependencies (8f29948), closes #125
- optimize docker-compose with lightweight init and dedup config (a737190)
- optimize Dockerfile with multi-stage build and node:22-slim runtime (679ceef)
- pass OpenCode system prompt via SDK appendSystemPrompt (1375a7e)
- pass OpenCode system prompt via SDK appendSystemPrompt (9ff630c), closes #74
- pass system prompt via appendSystemPrompt instead of merging into prompt (2b55399)
- pass systemContext to storeSession for consistent fingerprinting (055b025)
- pass systemContext to storeSession for consistent fingerprinting (617530d)
- pass working directory to SDK for correct system prompt (c0a3120)
- pass working directory to SDK query for correct system prompt (d7bfc42), closes #18
- passthrough mode tool_use broken for multi-turn and streaming (#207) (ae2e941)
- prevent @hono/node-server from overriding global Response/Request (#141) (64b9a1d)
- prevent cross-project session contamination in fingerprint cache (93ef050)
- prevent empty/failed streaming responses in OpenCode proxy (da170e7)
- prevent env var loop and MCP server transport reuse with SDK >=0.2.81 (b20dfee)
- prevent env var loop and MCP server transport reuse with SDK >=0.2.81 (b3f3ad6)
- proxy: add LRU eviction to bound session cache growth (661f007)
- proxy: add LRU eviction to bound session cache growth (93d7959)
- proxy: convert blocking execSync calls to async (fb79545)
- proxy: convert blocking execSync calls to async (e59637f)
- queue concurrent streaming requests to avoid ~60s delay (fb30a48)
- queue concurrent streaming requests to avoid ~60s delay (054dd2c)
- rate-limit retry with backoff and auth status resilience (#156) (f0dd8dd)
- redesign session management with per-message hashing, SDK-native undo, and compaction survival (f1a7e7b)
- redesign session management with per-message hashing, SDK-native undo, and compaction survival (291e20f)
- reduce token overhead in passthrough mode (#191) (98e8f9b)
- remap block indices across multi-turn streaming responses (#153) (#159) (39f09ca)
- remove bun install from publish job (966b2ea)
- remove bun install from publish job (cd36411)
- remove duplicate cleanup timer and stop re-throwing in error event handler (ae7404a)
- remove Hono type leak from public API and fix exports (1764596)
- remove mock.module leak that breaks session store tests (576bbe2)
- remove mock.module leak that breaks session store tests (795fade)
- replace time-based session TTL with durable count-bounded storage (121e82d)
- replace time-based session TTL with durable count-bounded storage (71b2cc7), closes #99
- replace ubuntu base image with multi-stage node:22 build to fix Docker build failures (1702a15)
- resolve Claude executable path and enable true SSE streaming (d95bacb)
- resolve UID mismatch between claude user and docker-compose init volume (b8da7b4)
- resolve UID mismatch between claude user and docker-compose init volume (7e353ad)
- restore concurrency queue, idle timeout, and Docker crash recovery (7270b47)
- restore MCP tools with bypassPermissions for correct tool execution (d25e45d)
- retry as fresh session when undo hits stale UUID (#146) (67442c4), closes #140
- revert to Bun.serve, document known concurrent crash (ecbaec2)
- run MCP tools in the caller project directory (25767ea)
- run session store tests sequentially to avoid shared module state (bb4555c)
- session store test race condition on CI (90f927d)
- session-store: add file locking and error logging (b996a81)
- session-store: add file locking for concurrent access safety (10c9a3c)
- show friendly error message when port is already in use (7b9d96a), closes #16
- skip file locking in session store tests (875e136)
- skip system context and assistant messages on resume (1698713)
- stabilize fingerprint resume by removing volatile systemContext and normalizing content format (3256aac)
- stabilize fingerprint resume by removing volatile systemContext and normalizing content format (be88868), closes #111
- treat identical message replay as diverged, not continuation (c819b4e)
- treat identical message replay as diverged, not continuation (465eb19), closes #171
- trigger npm publish with token (c603363)
- update runCli test mock to match ProxyInstance shape (29429f2)
- update SDK and fix streaming to filter tool_use blocks (ae4d7ea)
- use subscription type to determine sonnet model variant (#139) (7aee13c)