TUI - single-line paste moves cursor to the end of input
Description
When pasting into the TUI, the cursor is always moved to the end of the input box. This applies to both the initial input box that leads to creation of a new session, and its equivalent during conversation.
I guess the issue is somewhere in OpenTUI, but I don't have any other OpenTUI app to confirm.
Doesn't seem terminal-specific.
Plugins
obra/superpowers, @franlol/[email protected]
OpenCode version
1.1.4
Steps to reproduce
- Store a word in OS clipboard, for example "terminal". Anything will work as long as it's not multiline (which would trigger the "pasted N lines" block feature instead of pasting text directly).
- Manually enter multiple lines into the input so that it looks like this:
<cursor>line1
line2
line3
- Paste (both Shift+Insert and Ctrl+Shift+V do the same thing on my env)
- Observe unwanted cursor movement:
terminalline1
line2
line3<cursor>
Screenshot and/or share link
No response
Operating System
Linux Fedora 43
Terminal
Ghostty, Terminator
This issue might be a duplicate of existing issues. Please check:
- #3081: Paste issues in WSL (related paste/cursor issues)
Feel free to ignore if none of these address your specific case.
I consistently reproduce this on MacOS Ghostty
I've opened PR #7277 to fix this.
Root Cause:
The issue was introduced in PR #6070 (commit 2806f240). That PR added input.gotoBufferEnd() to the onPaste handler to ensure the textarea resized correctly, but it inadvertently forces the cursor to the end of the buffer even for single-line pastes.
My fix removes the unnecessary gotoBufferEnd() call while keeping the layout update logic (markDirty / requestRender), which solves the cursor jumping issue without breaking the resize behavior.
I also noticed @kostrse mentioned this happens on Ghostty as well — this fix should resolve it for all terminals.