fix: handle bracketed paste sequence fragmentation in Terminal.app #580
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.
What's the issue?
Copy-pasting text in
qovery shellwas broken on macOS Terminal.app. Sometimes it worked fine, sometimes you'd get random~or201~characters mixed in, or even duplicated words. Super annoying.Turns out Terminal.app fragments the bracketed paste escape sequences (
ESC[200~/ESC[201~) across multiple buffer reads. So we'd send half a sequence to the remote shell, and that would show up as garbage text.The fix
Added a small buffer that holds onto incomplete escape sequences until we get the rest. Nothing fancy, just check if the data ends with something that looks like the start of a bracketed paste sequence, and if so, wait for the next
read to complete it.
Tested on