Releases: coder/claudecode.nvim
Releases · coder/claudecode.nvim
v0.3.0: Terminals everywhere, sturdier diffs, and a friendlier protocol
Added
- External terminal provider to run Claude in a separate window (#102)
- Support for custom/out-of-tree terminal providers via a provider table (#91)
- New
"none"terminal provider option for fully external CLI management (#130) ensure_visibleAPI for terminal providers (#103)- Working directory control for the Claude terminal (#117)
- Function values supported for
external_terminal_cmd(#119) - External terminal cwd support and stricter placeholder parsing (e21a837)
- Shift+Enter keybinding for newline in the terminal (#116)
focus_after_sendoption (#118)- Snacks:
snacks_win_optsto overrideSnacks.terminal.open()options (#65) - Redesigned diff view with horizontal layout and new tab options (#111)
keep_terminal_focusoption for diff views (#95)- Configurable behavior when rejecting "new file" diffs (#114)
- Skip diff on dirty buffers (#104)
- Model picker when launching Claude via the CLI
--modelflag (#18) - Claude Haiku added to supported models (#110)
CLAUDE_CONFIG_DIRenvironment variable support (#58)- New
envconfiguration option (#21) PartialClaudeCodeConfigtype for safer partial configurations (#115)- Generalized format hook with floating-window documentation (7e894e9)
- WebSocket authentication using UUID tokens (#56)
- MCP tools brought into full compliance with the VS Code extension specs (#57)
- mini.files support with follow-up polish (#89, #98)
- Visual selection support inside neo-tree, nvim-tree, and mini.files buffers (#132)
Fixed
- Wrap ERROR/WARN logging in
vim.scheduleto avoid fast-event context errors (#54) - Native terminal: don't wipe the Claude buffer on window close (#60)
- Native terminal: respect
auto_close(#63) - Snacks: invalid window error on
:ClaudeCodeFocus(#64) - Debounce selection updates to reduce churn (#92)
- Connection reliability: better handshake detection and progressive polling so queued @-mentions land reliably right after connection (#133)
- Fix
vim.notifyscheduling (#21)
Changed
- Centralized type definitions into a dedicated
types.luamodule (#108) - Diff view config cleanup — removed unused
auto_close_on_acceptandshow_diff_stats(#111)
Documentation
- Updated
PROTOCOL.mdwith complete VS Code tool specs; streamlined README (#55) - Removed outdated IDE-integration warning from the README (#78)
- Configuration examples converted to collapsible sections; community extensions listed (#93)
- Local and native binary installation guide (#94)
- Auto-save plugin compatibility note (#106)
v0.2.0: Tree Explorers, Diagnostics, and Smarter Terminals
This release dramatically expands what Claude can see and do inside Neovim: it now plugs into your file tree, surfaces LSP diagnostics, and ships a more reliable terminal with focus-aware toggling and configurable lifecycle.
Highlights
- File tree as context: nvim-tree, neo-tree, and oil.nvim integrations let you @-mention files and directories straight from the explorer.
- Diagnostics over MCP: Claude can query LSP errors and warnings via the new
getDiagnosticstool. - Terminal you can trust: Auto provider detection,
bufhidden=hideprocess preservation, and a split between:ClaudeCode(toggle) and:ClaudeCodeFocus(smart focus) make the terminal predictable across workflows.
Added
Tree explorer & @-mention integrations
- Comprehensive nvim-tree and neo-tree integration with new
:ClaudeCodeTreeAddand:ClaudeCodeAdd <path> [start] [end]commands (6f6b8d1). The default<leader>askeybinding is now context-aware — it sends visual selections in normal buffers and adds files in tree buffers. - oil.nvim support for selecting files (including the file under cursor and visual ranges) for @-mention (#27, @Peeeaje).
- Connection-aware @-mention pipeline: when Claude isn't connected, mentions are queued and replayed once the terminal launches and connects (#43, @ThomasK33).
:ClaudeCodeAdd src/main.lua 50 100 " add lines 50–100
:ClaudeCodeAdd tests/ " add a whole directoryDiagnostics tool
- New
getDiagnosticsMCP tool returns LSP diagnostics from open buffers, with an optionaluriparameter to filter to a specific file. Positions are converted to 1-indexed to match what you see in the editor, and unopened files surface a proper MCP error rather than silently reporting "clean" (#34, @krmcbride).
Terminal management
:ClaudeCodeFocusintroduces a focus-aware toggle: shows when hidden, focuses when visible-but-unfocused, hides when focused.:ClaudeCodeis now a straightforward show/hide (#40).- Auto provider detection tries snacks first and falls back to the native terminal —
terminal.providernow defaults to"auto"(#36). - Configurable
auto_closeoption and full passthrough of arguments to the underlyingclaudecommand, so:ClaudeCode --resumeand:ClaudeCode --continuenow work as expected (#31). - The native terminal sets
bufhidden=hidebefore closing the window, preserving the Claude process across hide/show cycles (#39).
Customizable diff keymaps
- New
:ClaudeCodeDiffAcceptand:ClaudeCodeDiffDenyuser commands let you bind diff resolution however you like — including disabling the defaults to avoid conflicts with debugger keymaps (#47).
{ "<leader>ya", "<cmd>ClaudeCodeDiffAccept<cr>", desc = "Accept diff" },
{ "<leader>yn", "<cmd>ClaudeCodeDiffDeny<cr>", desc = "Deny diff" },New-file diffs
- The diff system now handles files Claude is creating from scratch, including auto-creating parent directories when the diff is accepted (6f6b8d1).
Fixed
- Proposed diff buffers inherit the original file's filetype, restoring syntax highlighting in the right-hand pane (#20, @blink-so).
:'<,'>ClaudeCodeSendreliably reads the'</'>marks so range usage after leaving visual mode no longer reports "No visual selection" (#26, @blink-so).- Diff acceptance signals Claude Code to perform the file write and then reloads buffers, rather than writing directly from the plugin. Both
<leader>daand:wgo through the same path now (da78309). - Fixed a focus error that occurred when toggling/sending while the Claude buffer was hidden (#43).
Changed
:ClaudeCodeis now a simple show/hide toggle. The previous smart-focus behavior moved to:ClaudeCodeFocus(#40).- Default terminal provider is now
"auto"instead of"snacks"(#36). visual_demotion_delay_msdefault lowered from 200ms to 50ms for more responsive tree navigation (6f6b8d1).
New Contributors
- @blink-so made their first contribution in #20
- @Peeeaje made their first contribution in #27
- @krmcbride made their first contribution in #34
Full Changelog: v0.1.0...v0.2.0
v0.1.0: First Neovim IDE integration for Claude Code
The first public release of claudecode.nvim — the first Neovim IDE integration for Anthropic's Claude Code CLI. Built by reverse-engineering the official VS Code and JetBrains extensions, this plugin implements the same WebSocket-based MCP protocol in pure Lua with zero external dependencies, giving Neovim users the same AI-powered coding experience.
Highlights
- Pure Lua, zero dependencies — full RFC 6455 WebSocket server and JSON-RPC 2.0 MCP implementation built on
vim.loopand Neovim built-ins. - 100% protocol compatible with Anthropic's official Claude Code extensions, so the CLI auto-detects Neovim and gains the same editor capabilities (file open, diffs, diagnostics, selection context).
- Native diff workflow — Claude's proposed changes open in a native Neovim diff view that you can edit before accepting with
:w/<leader>aaor rejecting with:q/<leader>ad.
Added
Core protocol
- Pure Lua WebSocket server — RFC 6455 compliant implementation with no external dependencies (a4b9a68).
- Modular MCP tool system with JSON-RPC error handling and comprehensive test coverage (b6d3d44, c0b9b32).
- Lock file discovery at
~/.claude/ide/[port].lockso the Claude CLI can auto-connect to the running Neovim instance. - Auto server shutdown on Neovim exit to clean up sockets and lock files (d1e6a5c).
Terminal integration
- Integrated Claude terminal with
snacks.nvimprovider plus a native Neovim fallback, configurable split side and width (ba1698c, 7428bfa). - Auto-focus terminal after sending a selection so you can keep typing immediately (05eb01a).
Selection & commands
:ClaudeCodeSend— send the current visual selection to Claude as an at-mention (62c9f70).:ClaudeCode,:ClaudeCodeOpen,:ClaudeCodeClose— toggle, open, and close the Claude terminal.- Real-time selection tracking with configurable
visual_demotion_delay_msto avoid noisy updates while moving the cursor (f1cad48).
Diff integration
- MCP-compliant blocking
openDifftool using coroutines, backed by the native Neovim diff view (2004b32, f9a8ab7).
Developer experience
- Lua language server type definitions across the public API for better editor tooling (9880a74).
Fixed
- LSP API usage updated for Neovim 0.11 compatibility (a5b3a5e).
- Keymap group registration and forced terminal env var for better UX out of the box (fe03dd0).
Installation
{
"coder/claudecode.nvim",
config = true,
keys = {
{ "<leader>cc", "<cmd>ClaudeCode<cr>", desc = "Toggle Claude" },
{ "<leader>ck", "<cmd>ClaudeCodeSend<cr>", mode = "v", desc = "Send to Claude" },
},
}Requirements
- Neovim >= 0.8.0
- Claude Code CLI installed
- Optional: folke/snacks.nvim for enhanced terminal support
Full Changelog: https://github.com/coder/claudecode.nvim/commits/v0.1.0