Repository navigation
chore(release): 0.4.0 - #279
Conversation
9e9ac77 to
576d224
Compare
52c0c6e to
1346f88
Compare
1346f88 to
1319d40
Compare
1319d40 to
7c1f13e
Compare
) ## 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
f7efec6 to
e323636
Compare
10110db to
5f0b352
Compare
8cc0a9a to
b285cc6
Compare
|
@codex review |
|
@codex security review |
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. Bravo. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
🛡️ Codex Security ReviewSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
|
@codex review |
|
@codex security review |
🛡️ Codex Security ReviewSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f48dee6e27
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
|
@codex security review |
|
Codex Review: Didn't find any major issues. 👍 Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
🛡️ Codex Security ReviewSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
… as the code has them _Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high_
|
@codex review |
|
@codex security review |
|
Codex Review: Didn't find any major issues. You're on a roll. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
🛡️ Codex Security ReviewSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
|
🤖 Created releases: 🌻 |
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-11-09
Added
: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 (submitting by default;:ClaudeCodeSendText!inserts without submitting). Multi-line text is sent via bracketed paste. Works with the in-editornative/snacksproviders only. (#197, #272):checkhealth claudecodehealth check that verifies Neovim version,setup(), the Claude CLI, terminal provider, WebSocket server, lock file, and live connection state. (#275):ClaudeCodeCloseAllDiffscommand to close pending Claude diffs at once. A diff accepted with:wcloses once the file holds the accepted text; otherwise the accepted text is put into the buffer as unsaved changes for:w/:e!so edits are never discarded. (#248, #261)diff_opts.layout = "unified": a VS Code-style unified diff rendered in a single buffer with interleaved deleted/added lines, as a compact alternative to"vertical"/"horizontal". Documented to require Neovim >= 0.9.0. Customizable via theClaudeCodeInlineDiffAdd/Delete/AddSign/DeleteSignhighlight groups. (#195, #295, #297)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). Enables post-send logic such as focusing a Claude session running outside Neovim. (#228, #265)User ClaudeCodeDiffOpened/ClaudeCodeDiffClosedautocmds carrying diff metadata, plusdiff_opts.auto_resize_terminal(defaulttrue) to opt out of plugin-managed terminal width during diffs andterminal.diff_split_width_percentageto set a distinct terminal width while a diff is open. (#270)terminal.auto_insertoption (defaulttrue): set tofalseto stay in Normal mode when refocusing the Claude terminal and preserve your scroll position instead of jumping to the prompt. (#233)ClaudeCodeTreeAdd/<leader>assupport in snacks.nvim pickers (snacks_picker_list), coveringSnacks.explorer()and modalSnacks.picker.files()/grep(). (#192, #269)<leader>as/:ClaudeCodeTreeAdd, supporting marked files and the file under the cursor. (#62)Changed
Claude Opus (Latest),Claude Sonnet (Latest),Claude Haiku (Latest)), with new 1M-context variants (opus[1m],sonnet[1m]) and aDefault (account recommended)entry. (#146, #256):checkhealth claudecodeand the MCPserverInfo.versionnow report the real plugin version from theVERSIONfile instead of a hard-coded value. (#437)Fixed
opus[1m]); the command is now passed as an argv list with no shell interpretation. (#256)b:claudecode_native_terminal), instead of any visible terminal whose name containsclaude. Upgrade note: a terminal that an older plugin version started (for example after:Lazy reloadfollowing an upgrade), or that a session file restored, carries no mark and is no longer adopted. The next open starts a second Claude session, and the old terminal keeps running until you close its buffer or quit Claude in it. (#349, #352, #364)closeAllDiffTabsis now scoped to claudecode's own tracked diffs and no longer wipes out an open diffview.nvim, fugitive, or native:diffsplitreview;openFile/openDiffalso never reuse a window that is in diff mode. (#277, #290)close_tabnow closes only the diff with that tab name and never deletes a user buffer. (#373):ClaudeCodeClose, now stops the Claude job instead of leaving it running. (#336)no_proxy/NO_PROXYso a configured proxy no longer tunnels Claude'sws://127.0.0.1IDE connection and times out queued @ mentions. (#70, #268)focus_after_send = truewithprovider = "none"/"external"now emits a one-time warning pointing to theUser ClaudeCodeSendCompleteautocmd instead of failing silently. (#228, #265):q/:close/<C-w>c(or closing the tab) now resolves it as rejected via aWinClosedautocmd. (#266)/ideflow and Select mode. (#246, #267, #367, #381, #388)openDiffnow works when the Claude terminal is the only window, creating a split to host the diff instead of failing with "No suitable editor window found". (#260)terminal.fix_streamed_paste("auto"by default). (#252)openFilenow selects exactly the requested line range or matched text, keeps the user's Visual mode, unsaved changes, focus and preview window intact, never prompts W11/W12, and never picks the preview window as the main editor window. (#353, #365, #370, #375, #382, #384, #387, #396, #408)getDiagnosticsnow handles plain file paths without afile://URI scheme, and IDE diagnostics return grouped URI-based payloads with editor-native ranges and severity names. (#163, #274):ClaudeCodeAddandopenFilenow handle$in file paths. (#286)render-markdown.nviminstalled, by turning off diff mode before the post-write redraw. (#224)0600in a0700directory. (#259)EADDRINUSE(parallel instances), closes connections on malformed/oversized or binary frames with the correct status, joins fragmented messages, validates UTF-8 per message, and never repeats a client id within a process. (#258, #283, #378, #383, #390, #395, #405, #422, #431)diff_opts(e.g.vertical_split,open_in_current_tab) now take effect again after the config merge-order regression. (#142):qon a diff window no longer hangs; floating diff terminals keep focus; empty buffers are wiped when the terminal provider isnone; and accepted diffs are handed over in the buffer's own line-ending format. (#178, #223, #266, #392)Compatibility
statuscolumn. The unified layout is documented to require Neovim >= 0.9.0, and the v0.8.0 integration tests skip it. (#369, #394)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.