-
Notifications
You must be signed in to change notification settings - Fork 936
Rewrite amux backend in Rust #2620
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
Open
lawrencecchen
wants to merge
38
commits into
task-move-ios-app-into-cmux-repo
Choose a base branch
from
feat-amux-rust-backend
base: task-move-ios-app-into-cmux-repo
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 7 commits
Commits
Show all changes
38 commits
Select commit
Hold shift + click to select a range
2107bcb
Rewrite amux backend in Rust
lawrencecchen 4fba953
Fix Rust daemon event semantics and verification
lawrencecchen 997876a
Fix Ghostty build drift on macOS and iOS
lawrencecchen 2be1639
Fix amux backend compat and review gaps
lawrencecchen a72c88e
Fix cross-platform termios ioctls for session CLI
lawrencecchen fd12865
Fix remote daemon release asset CI
lawrencecchen 0b73637
Fix compat and cross-target daemon builds
lawrencecchen 246a668
Bundle Ghostty CLI helper in Xcode builds
lawrencecchen ef6c6ea
ci: skip Ghostty helper zig build on macOS workflows
lawrencecchen 6b67bc3
fix: close remaining Rust daemon compat gaps
lawrencecchen 90b5984
test: run remote compat suite against Rust daemon
lawrencecchen 3edf1a7
build: link the Rust daemon against the right C++ runtime
lawrencecchen 95c6190
fix: restore websocket startup and session guards
lawrencecchen c7ab5d3
fix: detach failed Go CLI attachments
lawrencecchen 2f46fec
test: serialize websocket compat coverage
lawrencecchen aa6625c
test: report daemon exits in compat failures
lawrencecchen d283fcc
ci: run remote daemon tests without cgo
lawrencecchen 05c65a3
debug: trace remote daemon stream failures
lawrencecchen a38314f
fix: keep ghostty vt stream bound to its terminal
lawrencecchen d5d6e45
test: run ghostty shim coverage in CI
lawrencecchen 3afd9aa
ci: prepare ghostty shim for tests
lawrencecchen 39d190a
app: default local daemon to rust
lawrencecchen 6f5b2a2
Move local PTY path to direct Rust daemon bridge
lawrencecchen d23cbc5
Tighten PTY migration verification plan
lawrencecchen 8603339
Add tmux parity and PTY bridge regressions
lawrencecchen 36abf35
Fix CI artifact env paths
lawrencecchen 241b097
Install zig for PTY bridge CI smoke
lawrencecchen 8c95d73
test: stabilize Linux PTY parity regressions
lawrencecchen 253014f
test: preserve TUI size across reattach coverage
lawrencecchen 8f32c7c
fix Linux session attach resize parity
lawrencecchen c136b53
fix Linux PTY parity regressions
lawrencecchen dbe90cb
stabilize attach CLI exit coverage
lawrencecchen 1f44572
fix Linux PTY test polling
lawrencecchen 4431bd4
force WINCH after pane resize
lawrencecchen d083f7e
signal PTY foreground group on resize
lawrencecchen 80815ac
wait for TUI repaint before reattach
lawrencecchen 99a3593
use raw python fixture for tui resize tests
lawrencecchen 0c7092a
Add cmux pty vs tmux parity regression in CI
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
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| //go:build darwin | ||
|
|
||
| package main | ||
|
|
||
| import "syscall" | ||
|
|
||
| func ioctlReadTermiosRequest() uintptr { | ||
| return syscall.TIOCGETA | ||
| } | ||
|
|
||
| func ioctlWriteTermiosRequest() uintptr { | ||
| return syscall.TIOCSETA | ||
| } |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| //go:build linux | ||
|
|
||
| package main | ||
|
|
||
| import "syscall" | ||
|
|
||
| func ioctlReadTermiosRequest() uintptr { | ||
| return syscall.TCGETS | ||
| } | ||
|
|
||
| func ioctlWriteTermiosRequest() uintptr { | ||
| return syscall.TCSETS | ||
| } |
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.
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.
The new Unix server accepts each client and immediately hands the socket to
rpc.NewServer(...).Servewithout validating the peer UID, so any local user who can reach the socket can issue privileged methods (for exampleterminal.open/terminal.write). This is a regression from the prior Unix path, which explicitly calledlocal_peer_auth.authorizeClientindaemon/remote/zig/src/serve_unix.zig, and it is made riskier here by creating the socket directory with0755defaults.Useful? React with 👍 / 👎.