Skip to content

Releases: coder/claudecode.nvim

v0.3.0: Terminals everywhere, sturdier diffs, and a friendlier protocol

16 Sep 12:27
2e6ea6f

Choose a tag to compare

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_visible API 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_send option (#118)
  • Snacks: snacks_win_opts to override Snacks.terminal.open() options (#65)
  • Redesigned diff view with horizontal layout and new tab options (#111)
  • keep_terminal_focus option 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 --model flag (#18)
  • Claude Haiku added to supported models (#110)
  • CLAUDE_CONFIG_DIR environment variable support (#58)
  • New env configuration option (#21)
  • PartialClaudeCodeConfig type 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.schedule to 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.notify scheduling (#21)

Changed

  • Centralized type definitions into a dedicated types.lua module (#108)
  • Diff view config cleanup — removed unused auto_close_on_accept and show_diff_stats (#111)

Documentation

  • Updated PROTOCOL.md with 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

18 Jun 11:01
db91a0a

Choose a tag to compare

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 getDiagnostics tool.
  • Terminal you can trust: Auto provider detection, bufhidden=hide process 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 :ClaudeCodeTreeAdd and :ClaudeCodeAdd <path> [start] [end] commands (6f6b8d1). The default <leader>as keybinding 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 directory

Diagnostics tool

  • New getDiagnostics MCP tool returns LSP diagnostics from open buffers, with an optional uri parameter 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

  • :ClaudeCodeFocus introduces a focus-aware toggle: shows when hidden, focuses when visible-but-unfocused, hides when focused. :ClaudeCode is now a straightforward show/hide (#40).
  • Auto provider detection tries snacks first and falls back to the native terminal — terminal.provider now defaults to "auto" (#36).
  • Configurable auto_close option and full passthrough of arguments to the underlying claude command, so :ClaudeCode --resume and :ClaudeCode --continue now work as expected (#31).
  • The native terminal sets bufhidden=hide before closing the window, preserving the Claude process across hide/show cycles (#39).

Customizable diff keymaps

  • New :ClaudeCodeDiffAccept and :ClaudeCodeDiffDeny user 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).
  • :'<,'>ClaudeCodeSend reliably 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>da and :w go through the same path now (da78309).
  • Fixed a focus error that occurred when toggling/sending while the Claude buffer was hidden (#43).

Changed

  • :ClaudeCode is 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_ms default 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

02 Jun 18:36
c1cdcd5

Choose a tag to compare

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.loop and 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>aa or 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].lock so 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.nvim provider 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_ms to avoid noisy updates while moving the cursor (f1cad48).

Diff integration

  • MCP-compliant blocking openDiff tool 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

Full Changelog: https://github.com/coder/claudecode.nvim/commits/v0.1.0