Repository navigation
Closed
Labels
needs-triageAwaiting maintainer triageAwaiting maintainer triage
Description
Verification of #375 to #384 (the fixes for #374 and #363) found these. Each one is on main before those PRs too, or is a narrow case the PRs did not claim to cover. Items 1 to 3 come first.
- Accepted-diff hand-over keeps the buffer's file format (fix(diff): let :ClaudeCodeCloseAllDiffs finish an accepted diff #376).
:ClaudeCodeCloseAllDiffsputs an accepted diff's text into the file's buffer. The buffer keeps'fileformat','fileencoding'and'bomb', so a CRLF proposal in adosbuffer is written as\r\r\n, and a€handed into a latin1 buffer is written with a conversion error. No text is lost: the user sees^Mbefore:w. - Hand-over messages give the wrong reason (fix(diff): let :ClaudeCodeCloseAllDiffs finish an accepted diff #376). A swap file from another Neovim (
E325insidebufload), a failednvim_buf_set_lines, or aClaudeCodeDiffClosedhandler that accepts a diff during the loop all print "its buffer has unsaved changes or cannot be written". A new file in a missing folder fails:wwithE212and needs a:w ++phint. A failed hand-over still leavesbuflisted/bufhiddenchanged, andfixeol=falsestays after a hand-over. - A rejected diff whose client is gone is never cleared.
:ClaudeCodeCloseAllDiffsskips it. A full plugin reload also leaves an accepted diff's proposal buffer open but untracked. - Selection tracking.
- A
<cmd>ClaudeCodeSendmapping in Select mode sends without a range (visual_commandstreats onlyv,Vand CTRL-V as Visual). - With
'virtualedit'all, Neovim yanks trailing spaces that the sent text lacks. - On Neovim 0.11+, C1 controls and format characters (U+200B) are their own character like TAB, but the plugin joins them with a following combining mark.
- Blockwise selections are sent as one contiguous span, not the rectangle.
- PROTOCOL.md's
exclusiveparagraph does not say that an end on an empty row ischaracter1.
- A
openFileand window choice.- A register prefix (
"a) looks like Normal mode, so the user's next command (p) acts in the opened file. Documented, not fixable from the mode alone. i<C-o>vtakes the normal path, and Insert mode can resume in the opened file.- Previewing the buffer a diff window shows opens a closed diff fold in the user's window.
- With only the preview window and a terminal, openFile and openDiff split the 12-line preview window.
preview: truewithmakeFrontmost: false, when the main window already shows the file, leaves no selection on.- With no editor window,
makeFrontmost: falsestill moves focus to the split it creates. - The legacy
diff.open_difffallback (wincmd t/l) has no preview-window check. Nothing in the plugin calls it. - Doc gaps:
lua/claudecode/README.mdDiffs line omits the new-tab and fallback-split paths, andtools/README.mdnames only file-explorer sidebars (the code also skips outline sidebars).
- A register prefix (
- Outbound and inbound UTF-8. A buffer name with invalid bytes reaches Claude as U+FFFD, so Claude cannot reopen that exact name. The inbound frame check (
server/utils.luais_valid_utf8) is looser than the strict outboundutils.valid_utf8(accepts overlong forms, surrogates, F5-FF). verify-claudecode-nvimskill. Under a default parent dir with a default ACL, a new$OUTis briefly770beforechmod 700(empty at that time). SKILL.md still says the proof takes about 30 s (now 45 s).- CI runs busted in file order only.
--shufflewith a printed seed would catch new order dependence.
Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: xhigh
Metadata
Metadata
Assignees
Labels
needs-triageAwaiting maintainer triageAwaiting maintainer triage
Activity
ThomasK33 commentedon Nov 1, 2026
All items are handled on
main:covered.lock, which fix(open_file): keep the user's Visual mode, unsaved changes and focus #387 had left stale foropen_file.lua.'virtualedit'spaces are not sent. Both are documented.openFileand window choice): fix(open_file): keep the user's Visual mode, unsaved changes and focus #387, merged as c9c4b07, and fix(diff): keep openDiff and diff.open_diff out of the preview window #391 (openDiff anddiff.open_diffstay out of the preview window), merged as 97f698f. The"aregister prefix stays documented, because the mode alone cannot show it.lua/claudecode/server/README.mddocuments.--shufflein CI): ci(test): shuffle the unit suite with a printed seed, and create the vcn evidence dir 0700 #386, merged as f8877ba.Verification found more edge cases. They are tracked in #393.
Generated with
xum• Model:anthropic:claude-opus-5-5• Thinking:high