Repository navigation
Forward mouse input to TUI applications #7759
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
109 commits
Select commit
Hold shift + click to select a range
3ee19ce
Forward mouse input to TUI applications
lawrencecchen e9845ad
Merge remote-tracking branch 'origin/main' into task-tui-mouse-passth…
lawrencecchen 8b3de53
Harden TUI mouse passthrough
lawrencecchen 71fc0ae
Preserve PTY mouse release state
lawrencecchen 982b45a
Order remote PTY input delivery
lawrencecchen ef5473d
Guarantee remote mouse release delivery
lawrencecchen 5939e78
Bound remote PTY input buffering
lawrencecchen 6c82650
Add regression coverage for remote input findings
lawrencecchen f0a377f
Fix reviewed remote PTY input edge cases
lawrencecchen 43377d9
Correct horizontal wheel regression expectations
lawrencecchen 0aa52d9
Align horizontal wheel input and local writes
lawrencecchen 3c76bc5
Cover ambiguous PTY mouse button events
lawrencecchen 1337b58
Keep PTY mouse input off the event loop
lawrencecchen 68d548f
Cover PTY input mutation barrier
lawrencecchen a87d4f3
Order PTY input before session mutations
lawrencecchen 674d6a6
Cover PTY input backpressure recovery
lawrencecchen 4bada37
Serialize PTY input and session mutations
lawrencecchen b6c044f
Cover failed PTY mouse press cleanup
lawrencecchen 696c147
Close ordered input review gaps
lawrencecchen 5ba128f
Cover PTY drag preservation after motion failure
lawrencecchen 83e000d
Bound remote PTY operation failures
lawrencecchen 3b53a4e
Complete ordered session failure handling
lawrencecchen 5b9b53a
Coalesce high-rate mouse updates
lawrencecchen 687c0a9
Close mouse queue lifecycle gaps
lawrencecchen 120c09f
Merge remote-tracking branch 'origin/main' into task-tui-mouse-passth…
lawrencecchen e48ce2e
Make remote mutation recovery authoritative
lawrencecchen 25bb3d0
Order browser completion after tree invalidation
lawrencecchen db1b5e5
Refresh remote tree snapshots off loop
lawrencecchen 30e49b3
Separate identity and background tree refresh
lawrencecchen 7290780
Close remote input routing gaps
lawrencecchen 9ce5b48
Preserve remote input routing invariants
lawrencecchen 096f34b
Close asynchronous input ordering races
lawrencecchen 4c78a45
Version title events and complete mutations authoritatively
lawrencecchen 14dfa79
Bound UI title and drag hot paths
lawrencecchen ab86afc
Enforce ordered session lifecycles
lawrencecchen e6a0ec8
Restore Windows TUI portability
lawrencecchen 12e392c
Finish ordered TUI lifecycle handling
lawrencecchen b5c7398
Merge remote-tracking branch 'origin/main' into task-tui-mouse-passth…
lawrencecchen 111183c
Close remaining TUI hot-path gaps
lawrencecchen 703b1b6
Harden TUI asynchronous input lifecycle
lawrencecchen a03490f
Fix browser resize failure handling
lawrencecchen d3f36c6
Merge remote-tracking branch 'origin/main' into task-tui-mouse-passth…
lawrencecchen 28310ad
Bound remote surface synchronization
lawrencecchen b8a4633
Harden remote recovery and browser teardown
lawrencecchen e5d0006
Retry browser resizes with bounded backoff
lawrencecchen a72aa9c
Preserve reattach input and lifecycle ownership
lawrencecchen ff3deb4
Close TUI recovery review gaps
lawrencecchen feef345
Preserve deferred TUI interaction intent
lawrencecchen 1cdd21b
Bound TUI routing and subscriber recovery
lawrencecchen b783f16
Recover bounded TUI event streams
lawrencecchen efe04eb
Complete TUI overflow recovery contract
lawrencecchen 18b7e7c
Harden bounded TUI event lifecycle
lawrencecchen 7732068
Close TUI queue recovery gaps
lawrencecchen 286d005
Order TUI recovery and mouse mode state
lawrencecchen aa08a2e
Bound browser and mouse recovery state
lawrencecchen eeb7e82
Make TUI mouse snapshots lifetime stable
lawrencecchen 4666f71
Bound TUI attach and deferred routing
lawrencecchen 501ef33
Merge remote-tracking branch 'origin/main' into task-tui-mouse-passth…
lawrencecchen abf2232
Clean up merged TUI input sender
lawrencecchen ff2530f
Recover bounded TUI event streams
lawrencecchen 486867c
Scope attach events and preserve pointer state
lawrencecchen 14fcce5
Deliver terminal overflow recovery events
lawrencecchen 94c39ab
Keep scoped overflow on shared transports
lawrencecchen c099810
Acknowledge TUI subscription recovery
lawrencecchen 593ee4e
Order remote subscription reconciliation
lawrencecchen b738e3a
Unify bounded TUI transport output
lawrencecchen 6a76fde
Reserve TUI transport capacity for responses
lawrencecchen e5afd59
Bound and prioritize TUI transport control
lawrencecchen 5777f21
Purge stale TUI frames on stream overflow
lawrencecchen 87582f9
Preserve TUI titles and bound browser frames
lawrencecchen bbfb669
Scope retained TUI title updates
lawrencecchen 9ae9379
Bound TUI refresh and capture configuration
lawrencecchen 84aca8a
Attribute TUI queue pressure to backlog owners
lawrencecchen 85ec61f
Bound TUI replay and title recovery state
lawrencecchen d9741a4
Preserve TUI release and socket lifecycles
lawrencecchen 1300602
Bound TUI release recovery and initial attach
lawrencecchen fee7b4c
Scope TUI pointer routing barriers
lawrencecchen 7bf4e32
Wake TUI streams and cap resize recovery
lawrencecchen c266bb7
Time out stalled WebSocket clients
lawrencecchen d17250e
Complete browser resize recovery
lawrencecchen 785345a
Order browser resize completion
lawrencecchen 7c4b4d5
Publish successful browser resize retries
lawrencecchen 3fe196a
Update web frontend for protocol 7
lawrencecchen bc5b89f
Bound ordered TUI transport waits
lawrencecchen 49deb96
Recover web terminal attachment overflow
lawrencecchen 437440b
Preserve recovery routes and outcomes
lawrencecchen 70ec0c8
Bound attach overflow recovery
lawrencecchen 6f4458e
Test bounded terminal replay
lawrencecchen 727f3c3
Bound terminal state replays
lawrencecchen c6b8f17
Merge remote-tracking branch 'origin/main' into task-tui-mouse-passth…
lawrencecchen d3c10af
Document PTY failure wake ownership
lawrencecchen 929cd84
Remove polling from bounded transports
lawrencecchen 0a9a822
Coordinate overflow and resize recovery
lawrencecchen fd5d6e4
Resolve ambiguous mouse and title recovery
lawrencecchen 2026060
Preserve bounded replay and title locality
lawrencecchen 4a758a7
Reconcile remote size and title ordering
lawrencecchen c89c094
Queue browser resize and bound replay scans
lawrencecchen 98d5c4f
Bound asynchronous resize recovery
lawrencecchen 44c1e8e
Complete browser resize recovery contract
lawrencecchen b4521f1
Keep pointer motion off terminal locks
lawrencecchen 30fa9c9
Scope resize recovery to request owners
lawrencecchen 9160af3
Make resize ownership follow accepted work
lawrencecchen c2f27eb
Close terminal and resize publication races
lawrencecchen c109013
Preserve browser resize barriers
lawrencecchen 5942158
Own browser resize lifecycle in core
lawrencecchen 3a10b36
Make async completions identity-safe
lawrencecchen 3869725
Cache PTY mouse protocol per surface
lawrencecchen 2091374
Preserve mux events under backpressure
lawrencecchen f19ead0
Always deliver the paired mouse release
lawrencecchen File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
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
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
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
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
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
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With the server now advertising protocol 7, callers using the normal zero-value
Optionspath leaveallowProtocolV6Attachfalse, soAttachSurfacerejects every current server here before opening even PTY attach streams. The Go binding now parses the newer attach events, and the e2e only passes because it explicitly opts in; default Go clients should accept v7 or default this option to true.Useful? React with 👍 / 👎.