chore(release): 0.4.0#279
Open
github-actions[bot] wants to merge 1 commit into
Open
Conversation
9e9ac77 to
576d224
Compare
52c0c6e to
1346f88
Compare
1346f88 to
1319d40
Compare
1319d40 to
7c1f13e
Compare
gogongxt
pushed a commit
to gogongxt/claudecode.nvim
that referenced
this pull request
Jun 24, 2026
) ## Summary Renames the `diff_opts.layout = "inline"` option (added in coder#195, queued for v0.4.0 via release-please coder#279) to **`"unified"`**, before it ships in a tagged release. Tracked in coder#293. [@wookayin pointed out](coder#195 (comment)) that the shipped `"inline"` mode isn't a true "inline" diff in the VS Code sense — it renders a unified diff in a separate `rightbelow vsplit` pane, not an in-place virtual-text overlay in the same window. Naming it `"inline"` now would force a breaking rename later, once we add the real in-place overlay (the mode that most deserves the name `"inline"`). Renaming is free now (not yet released) and a breaking change after coder#279 merges. ## What changed - **Config value** `"inline"` → `"unified"`: validation + error message (`config.lua`), the `ClaudeCodeDiffLayout` type alias (`types.lua`), all four dispatch sites (`diff.lua`), and the stored `layout` value (`diff_inline.lua`). - **User-facing buffer name**: `<file> (inline diff)` → `<file> (unified diff)`. - **Docs**: README layout enum + label; a `CHANGELOG.md` `[Unreleased]` entry for `layout = "unified"`. - **Tests**: the accept test now expects `"unified"`; a new test asserts the former `"inline"` is rejected. ## Decisions - **No deprecated alias.** `"inline"` was never in a tagged release, so there's no backward-compat obligation, and rejecting it cleanly reserves the name for the future in-place overlay (coder#294). The validation error names `'unified'`, so anyone tracking `main` is pointed at the new value. - **Internal names kept.** The `diff_inline.lua` module, its functions, the `claudecode_inline_diff` buffer variable, and the `ClaudeCodeInlineDiff*` highlight groups are unchanged — they describe the inline-*style* rendering, not the layout value (coder#293 noted the buffer var can stay). This keeps the diff small and low-risk. - **coder#279 changelog** regenerates from commits via Communique on the next push to `main`, so the v0.4.0 entry reflects "unified" automatically; I did not hand-edit the bot branch. ## Validation - `mise run all`: treefmt clean, luacheck **0/0**, **703/703** tests pass (baseline 702 + the new rejection test). - Headless Neovim smoke test: `layout = "unified"` accepted, `"inline"` rejected (error names `'unified'`), `"vertical"` still works. The true in-place overlay (the future `"inline"`) is tracked in coder#294. Refs coder#293, coder#195, coder#82 🤖 Generated with [Claude Code](https://claude.com/claude-code) Signed-off-by: Thomas Kosiewski <tk@coder.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
7c1f13e to
f7efec6
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The next claudecode.nvim release. Merging this PR creates the release tag and GitHub Release, then starts Communique GitHub Release note generation.
[0.4.0] - 2026-06-25
Added
:checkhealth claudecodehealth check that verifies your Neovim version,setup(), the Claude CLI, terminal provider, WebSocket server, lock file, and live connection state, with actionable advice on each failure (#275).:ClaudeCodeSendText {text}command (andrequire("claudecode.terminal").send_to_terminal(text, opts)) to send arbitrary text to the open Claude terminal as if typed at the prompt;:ClaudeCodeSendText!inserts without submitting. Multi-line text is sent via bracketed paste. Works with the in-editornative/snacksproviders only (#272).User ClaudeCodeSendCompleteautocmd, fired once per file when a send is accepted while Claude is connected, withdata = { file_path, start_line, end_line, context }(lines 0-indexed). Lets you run post-send logic such as focusing a Claude session running outside Neovim (provider = "none"/"external"), e.g. viatmux select-pane(#265).User ClaudeCodeDiffOpened/ClaudeCodeDiffClosedautocmds carrying a data payload (tab/window/file info), so configs can react to diffs opening and closing — resize, relayout, statusline, etc. (#270, #297).:ClaudeCodeCloseAllDiffscommand to close pending Claude diffs at once; accepted-but-unwritten diffs are left intact so saved edits are never discarded (#261).diff_opts.layout = "unified": a unified diff rendered in a single buffer with deleted (red/strikethrough) and added (green) lines interleaved, a compact alternative to the two-pane"vertical"/"horizontal"layouts. Requires Neovim >= 0.9.0; theClaudeCodeInlineDiffAdd/Delete/AddSign/DeleteSignhighlight groups are customizable (#195, #295).terminal.auto_insertoption (defaulttrue) controlling whether the Claude terminal auto-enters insert/terminal mode on focus; setauto_insert = falseto stay in Normal mode and preserve your scroll position (#233).terminal.diff_split_width_percentage(optional terminal width while a diff is open, falling back tosplit_width_percentage) anddiff_opts.auto_resize_terminal(defaulttrue; setfalseto own the layout yourself) (#270).:ClaudeCodeTreeAddand:ClaudeCodeSendnow support snacks.nvim pickers (snacks_picker_list), adding the selected/highlighted file(s) to Claude's context (#269).<leader>asin netrw buffers adds marked files or the file under cursor to Claude's context (#62).BufEnter, so switching buffers without moving the cursor still updates Claude's selection context (#159).Claude Opus (Latest),Claude Sonnet (Latest),Claude Haiku (Latest)), the 1M-contextopus[1m]/sonnet[1m]variants, andDefault (account recommended)(#256).Fixed
0600permissions in a0700directory (previously world-readable0644). Handshake auth comparison is constant-time (#259).EADDRINUSE; port binding retries across candidate ports and the per-process PRNG seed is restored (#284).closeAllDiffTabsis now scoped to claudecode's own tracked diffs and no longer wipes out an open diffview.nvim, fugitive, or native:diffsplit;openFile/openDiffno longer reuse a window in diff mode (#290).:q(or:close/<C-w>c/ closing the tab) now resolves it as rejected via a newWinClosedautocmd (#266).openDiffare now auto-closed when the client that opened them disconnects or the integration stops, instead of lingering forever when resolved outside this Neovim (#261).open_in_new_tabdiff setup errors no longer strand an empty tab; focus returns to the original tab (#264).keep_terminal_focusnow works for floating Snacks terminals instead of stealing focus to the hidden diff split (#178).localhost,127.0.0.1,::1) tono_proxy/NO_PROXY, so a configured proxy no longer tunnels Claude'sws://127.0.0.1IDE connection and times out queued @ mentions (#268).terminal.fix_streamed_paste("auto"default, no-op on >= 0.12.2) (#252).getDiagnosticsnow accepts a bare file path (not just afile://URI), since Claude often sends the path without a scheme (#163).ClaudeCodeSendno longer misroutes ordinary files into tree-extraction when their path merely containsneo-tree/NvimTree; buffers are now classified by filetype only (#292).$are now handled correctly inClaudeCodeAddandopenFile(#286).vertical_splitandopen_in_current_tabare applied correctly again (they were silently ignored after a merge-order change) (#142).render-markdown.nviminstalled, by turning off diff mode before the post-write redraw (#224).none(#223).snacks_picker_listbuffers are excluded from main-editor-window detection, so diffs no longer target the picker (#165).[Claude Code]terminal name via substring, so external (provider = "none") terminals correctly skip sending selection context (#160).focus_after_send = truewithprovider = "none"/"external", pointing at the newClaudeCodeSendCompleteevent (#265).Changed
Maintained by the release-please workflow. CHANGELOG.md and the release PR body are regenerated by Communique on every push to main, so manual edits to this PR are overwritten.