diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e8bd694c..af9c19320 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,58 @@ # Changelog +## 2.1.139 + +- Added agent view (Research Preview): a single list of every Claude Code session — running, blocked on you, or done. Run `claude agents` to get started. See https://code.claude.com/docs/en/agent-view +- Added `/goal` command: set a completion condition and Claude keeps working across turns until it's met. Works in interactive, `-p`, and Remote Control. Shows live elapsed/turns/tokens as an overlay panel +- Added `/scroll-speed` command to tune mouse wheel scroll speed with a live preview +- Added `claude plugin details ` to show a plugin's component inventory and projected per-session token cost +- Added transcript view navigation: `?` for keyboard shortcuts, `{`/`}` to jump between user prompts, `v` to toggle shortcut panel +- Added hook `args: string[]` field (exec form) that spawns the command directly without a shell, so path placeholders never need quoting +- Added hook `continueOnBlock` config option for `PostToolUse` — set to `true` to feed the hook's rejection reason back to Claude and continue the turn +- MCP stdio servers now receive `CLAUDE_PROJECT_DIR` in their environment, matching hooks. Plugin configs can reference `${CLAUDE_PROJECT_DIR}` in commands +- Compaction prompt now asks the model to preserve sensitive user instructions +- `/mcp` Reconnect now picks up `.mcp.json` edits without a restart, and shows the HTTP status and URL when reconnecting fails +- `/context all` per-skill token estimates now account for the model's tokenizer and show rounded values +- `claude plugin install @` now auto-refreshes the marketplace and retries before reporting a plugin as not found +- `/plugin` installed-plugin details now show hook event names and MCP server names cleanly +- `/context` now shows the providing plugin's name for plugin-sourced skills +- Remote MCP server reconnect retry on transient failures is now enabled for all users +- API requests from subagents now carry `x-claude-code-agent-id` / `x-claude-code-parent-agent-id` headers, and `claude_code.llm_request` OTEL spans include `agent_id` / `parent_agent_id` attributes +- Remote Control, `/schedule`, claude.ai MCP connectors, and notification preferences are now disabled when `ANTHROPIC_API_KEY` / `apiKeyHelper` / `ANTHROPIC_AUTH_TOKEN` is set, even if a Claude.ai login also exists. Unset the API key to use these features +- Fixed a deadlock where expired credentials and the `forceRemoteSettingsRefresh` policy setting blocked `claude auth login`/`logout`/`status` with no way to recover +- Fixed `autoAllowBashIfSandboxed` not auto-approving commands with shell expansions like `$VAR` and `$(cmd)` +- Fixed a bug where a hook writing to the terminal could corrupt an on-screen interactive prompt; hooks now run without terminal access +- Fixed unbounded memory growth when an HTTP/SSE MCP server streams non-protocol data — response bodies now capped at 16 MB per SSE frame +- Fixed `Skill(name *)` permission rules — the wildcard form now works as a prefix match, matching `Bash(ls *)` behavior +- Fixed settings hot-reload not detecting edits to symlinked `~/.claude/settings.json` +- Fixed plugin details failing to load when the marketplace key differs from the manifest name +- Fixed `/model` picker "Default" row not reflecting `ANTHROPIC_DEFAULT_OPUS_MODEL`/`ANTHROPIC_DEFAULT_SONNET_MODEL` overrides +- Fixed spurious "stream idle timeout" 5 minutes after a response completed, caused by the watchdog timer not being cleared on stream cancellation +- Fixed silent `exit 1` when 10+ MCP servers are configured and the cache directory is unwritable — the error message now includes the underlying cause +- Fixed a typing cursor blinking on tab names, list pointers, and select rows in dialogs +- Fixed transcript view letter shortcuts not working after mouse click +- Fixed Bash-mode up-arrow history repeating the first entry and clobbering the in-progress draft +- Fixed pasting or dropping multiple images only inserting the last one +- Fixed hyperlinks using unreadable dark navy on dark themes — they now adapt to the active theme +- Fixed model picker showing a redundant "Current model" row for third-party users whose model is set to the `opus` alias +- Fixed legacy Opus picker entry on PAYG 3P providers resolving to the same model as the default entry +- Fixed mouse wheel scrolling speed in Cursor and VS Code 1.92–1.104; the trackpad now scrolls at a steady rate and the mouse wheel keeps ~3 lines per notch +- Fixed scroll behavior in Windows Terminal and VS Code when attached to background sessions +- Fixed MCP resources from disconnected servers lingering in `@server:` autocomplete +- Fixed two-file diff snippets over-reporting the number of truncated lines by one +- Fixed Grep results not relativizing Windows drive-letter paths and count mode reporting wrong totals for single-file paths +- Fixed border-embedded text overflowing on CJK/emoji due to visual cell width miscalculation +- Fixed fuzzy-match highlighting splitting emoji and astral-plane characters mid-pair +- Fixed skill argument names containing regex metacharacters breaking argument substitution +- Fixed ProgressBar rendering a full block for an almost-full fractional cell +- Fixed task polling and `fs.watch` being resurrected when the last subscriber leaves while a fetch is in flight +- Fixed plugin dependency resolution leaving a stale count when the manifest name differs from the source identifier +- Fixed Insights Time-of-Day chart skewing when a session has an unparseable timestamp +- Fixed keybindings using only the cmd/super/win modifier being flagged as unparseable +- Fixed `claude_code.active_time.total` OpenTelemetry metric not being emitted in `--print` mode +- Fixed `claude plugin update` not preserving cross-plugin symlinks inside a marketplace +- [VSCode] Press Cmd/Ctrl+Shift+T to reopen the most recently closed session tab, configurable via `claudeCode.enableReopenClosedSessionShortcut` + ## 2.1.138 - Internal fixes