fix(tui): flush local Windows SSH replies
Summary
- flush each SSH reply chunk at the local Windows bridge boundary
- reuse the same carrier copy helper as the remote relay boundary
Root cause
The SSH carrier is long-lived. The local bridge copied ssh.exe stdout into the local socket and flushed only after EOF, so socket clients timed out before replies became visible.
Proof
- failing base behavior: https://github.com/manaflow-ai/cmux/actions/runs/31450353929/job/93653304334
- exact-head full hosted gate: pending
- speculative merge gate: pending
No local Cargo, Rust, Zig, or Xcode command was run.
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.
[!NOTE]
Low Risk
Localized Windows SSH I/O change reusing an existing flush-per-chunk helper; no auth or data-model changes.
Overview
Fixes the local Windows SSH bridge so ssh.exe stdout is forwarded to the AF_UNIX client with per-chunk flush, not only after the stream ends.
In proxy_local_connection_over_ssh, download from OpenSSH stdout now uses copy_windows_carrier_download instead of io::copy plus a single end-of-stream flush—the same path already used for the remote relay and stdio carrier boundaries.
Why: the SSH carrier stays open; buffering until EOF made local socket clients time out before replies appeared.
Reviewed by Cursor Bugbot for commit 60bc346904b3fe98f69cda7578519197d0876d42. Bugbot is set up for automated code reviews on this repo. Configure here.
Summary by cubic
Flush SSH stdout to the local Windows socket incrementally using the shared copy_windows_carrier_download, aligning the local bridge with the remote relay behavior. Replies stream as they arrive instead of waiting for EOF, preventing client timeouts.
- Bug Fixes
- Replaced
io::copy+ manual flush withcopy_windows_carrier_downloadto write and flush each chunk.
- Replaced