Merged
Conversation
a657bf9 to
175945e
Compare
98d96fe to
230e66c
Compare
3299835 to
673a519
Compare
673a519 to
7338317
Compare
c427c33 to
d24bd11
Compare
7bfa0f4 to
e8669fa
Compare
b3980c0 to
760411e
Compare
042ed9b to
0e93e41
Compare
… session scrolling
0e93e41 to
fa454f3
Compare
…ines during vertical movement
leohenon
added a commit
that referenced
this pull request
Mar 26, 2026
* feat: add vim copy mode with viewport cursor navigation and stabilize session scrolling * fix(vim): copy-mode horizontal motions and cursor coordinate alignment * fix(vim): copy-mode shift key handling * fix: set tool row padding offset to match content position * fix: skip user messages * fix: prevent motions from leaking into input * fix: replace lineInfo.lineStarts with plainText split for copy-mode line extraction * fix: account for line-number gutter offset in copy-mode cursor clamping * fix: dynamically compute line-number gutter width for copy-mode cursor * fix: clamp copy selection index when scrolling in session view * fix: snap copy selection to nearest visible row when scrolling out of view * feat: add visual modes * fix: use character-wise register for copy-mode yank to avoid blank line on paste * fix: copy-mode indicator styling and V line-visual mode * docs: document copy-mode * test: add copy mode coverage for visual selection, yank, jumps, and motions * docs: update readme for entry key config * fix: keep copy-mode side borders muted in reasoning and tool output * fix: make copy-mode w advance across lines like vim * docs: update readme * feat: skip reasoning output in copy mode * fix: 0 key start of line instead of first non-whitespace * feat: implement state management for sticky cursor for start/end of lines during vertical movement * test: copy-mode cursor state management * feat: add H/L/M cursor jumps * feat: add zz/zt/zb viewport scroll * fix: add missing copyWordPrev for b/B * fix: exit copy-mode on session switch * fix: hide prompt cursor in copy-mode to prevent flash on enter * fix: make copy-mode scrolling preserve cursor row while visible * feat: collapse diff views in copy mode * feat: scroll to bottom when exiting copy mode * fix: cursor offset for diff outputs * fix: copy mode cursor alignment for wrapped lines * docs: update readme * feat: prepend diff sign (+/-) for copied lines * test: wrapped vs non-wrapped lines for cursor state and motions --------- Co-authored-by: leohenon <77656081+lhenon999@users.noreply.github.com>
leohenon
added a commit
that referenced
this pull request
Mar 26, 2026
* feat: add vim copy mode with viewport cursor navigation and stabilize session scrolling * fix(vim): copy-mode horizontal motions and cursor coordinate alignment * fix(vim): copy-mode shift key handling * fix: set tool row padding offset to match content position * fix: skip user messages * fix: prevent motions from leaking into input * fix: replace lineInfo.lineStarts with plainText split for copy-mode line extraction * fix: account for line-number gutter offset in copy-mode cursor clamping * fix: dynamically compute line-number gutter width for copy-mode cursor * fix: clamp copy selection index when scrolling in session view * fix: snap copy selection to nearest visible row when scrolling out of view * feat: add visual modes * fix: use character-wise register for copy-mode yank to avoid blank line on paste * fix: copy-mode indicator styling and V line-visual mode * docs: document copy-mode * test: add copy mode coverage for visual selection, yank, jumps, and motions * docs: update readme for entry key config * fix: keep copy-mode side borders muted in reasoning and tool output * fix: make copy-mode w advance across lines like vim * docs: update readme * feat: skip reasoning output in copy mode * fix: 0 key start of line instead of first non-whitespace * feat: implement state management for sticky cursor for start/end of lines during vertical movement * test: copy-mode cursor state management * feat: add H/L/M cursor jumps * feat: add zz/zt/zb viewport scroll * fix: add missing copyWordPrev for b/B * fix: exit copy-mode on session switch * fix: hide prompt cursor in copy-mode to prevent flash on enter * fix: make copy-mode scrolling preserve cursor row while visible * feat: collapse diff views in copy mode * feat: scroll to bottom when exiting copy mode * fix: cursor offset for diff outputs * fix: copy mode cursor alignment for wrapped lines * docs: update readme * feat: prepend diff sign (+/-) for copied lines * test: wrapped vs non-wrapped lines for cursor state and motions --------- Co-authored-by: leohenon <77656081+lhenon999@users.noreply.github.com>
leohenon
added a commit
that referenced
this pull request
Mar 26, 2026
* feat: add vim copy mode with viewport cursor navigation and stabilize session scrolling * fix(vim): copy-mode horizontal motions and cursor coordinate alignment * fix(vim): copy-mode shift key handling * fix: set tool row padding offset to match content position * fix: skip user messages * fix: prevent motions from leaking into input * fix: replace lineInfo.lineStarts with plainText split for copy-mode line extraction * fix: account for line-number gutter offset in copy-mode cursor clamping * fix: dynamically compute line-number gutter width for copy-mode cursor * fix: clamp copy selection index when scrolling in session view * fix: snap copy selection to nearest visible row when scrolling out of view * feat: add visual modes * fix: use character-wise register for copy-mode yank to avoid blank line on paste * fix: copy-mode indicator styling and V line-visual mode * docs: document copy-mode * test: add copy mode coverage for visual selection, yank, jumps, and motions * docs: update readme for entry key config * fix: keep copy-mode side borders muted in reasoning and tool output * fix: make copy-mode w advance across lines like vim * docs: update readme * feat: skip reasoning output in copy mode * fix: 0 key start of line instead of first non-whitespace * feat: implement state management for sticky cursor for start/end of lines during vertical movement * test: copy-mode cursor state management * feat: add H/L/M cursor jumps * feat: add zz/zt/zb viewport scroll * fix: add missing copyWordPrev for b/B * fix: exit copy-mode on session switch * fix: hide prompt cursor in copy-mode to prevent flash on enter * fix: make copy-mode scrolling preserve cursor row while visible * feat: collapse diff views in copy mode * feat: scroll to bottom when exiting copy mode * fix: cursor offset for diff outputs * fix: copy mode cursor alignment for wrapped lines * docs: update readme * feat: prepend diff sign (+/-) for copied lines * test: wrapped vs non-wrapped lines for cursor state and motions --------- Co-authored-by: leohenon <77656081+lhenon999@users.noreply.github.com>
leohenon
added a commit
that referenced
this pull request
Mar 31, 2026
* feat: add vim copy mode with viewport cursor navigation and stabilize session scrolling * fix(vim): copy-mode horizontal motions and cursor coordinate alignment * fix(vim): copy-mode shift key handling * fix: set tool row padding offset to match content position * fix: skip user messages * fix: prevent motions from leaking into input * fix: replace lineInfo.lineStarts with plainText split for copy-mode line extraction * fix: account for line-number gutter offset in copy-mode cursor clamping * fix: dynamically compute line-number gutter width for copy-mode cursor * fix: clamp copy selection index when scrolling in session view * fix: snap copy selection to nearest visible row when scrolling out of view * feat: add visual modes * fix: use character-wise register for copy-mode yank to avoid blank line on paste * fix: copy-mode indicator styling and V line-visual mode * docs: document copy-mode * test: add copy mode coverage for visual selection, yank, jumps, and motions * docs: update readme for entry key config * fix: keep copy-mode side borders muted in reasoning and tool output * fix: make copy-mode w advance across lines like vim * docs: update readme * feat: skip reasoning output in copy mode * fix: 0 key start of line instead of first non-whitespace * feat: implement state management for sticky cursor for start/end of lines during vertical movement * test: copy-mode cursor state management * feat: add H/L/M cursor jumps * feat: add zz/zt/zb viewport scroll * fix: add missing copyWordPrev for b/B * fix: exit copy-mode on session switch * fix: hide prompt cursor in copy-mode to prevent flash on enter * fix: make copy-mode scrolling preserve cursor row while visible * feat: collapse diff views in copy mode * feat: scroll to bottom when exiting copy mode * fix: cursor offset for diff outputs * fix: copy mode cursor alignment for wrapped lines * docs: update readme * feat: prepend diff sign (+/-) for copied lines * test: wrapped vs non-wrapped lines for cursor state and motions --------- Co-authored-by: leohenon <77656081+lhenon999@users.noreply.github.com>
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.
Part of #5
Add a copy mode that allows navigating the message timeline with the cursor using vim motions, and copy text via visual mode.
Skips over reasoning output and user messages
Full cursor position state engine
Cursor management with shift + M/H/L and viewport management with zz/zt/zb.
diff row copy handling