Durable sessions (step5): keep-running session-host spike (tmux vs psmux)#441
Durable sessions (step5): keep-running session-host spike (tmux vs psmux)#441DDKinger wants to merge 1 commit into
Conversation
|
|
||
| 1. Can we just run **tmux** on Windows (and drive it via `tmux -CC` control | ||
| mode, the way iTerm2 does)? | ||
| 2. If not, is **[psmux](https://github.com/psmux/psmux)** a viable session host? |
|
|
||
| 1. Can we just run **tmux** on Windows (and drive it via `tmux -CC` control | ||
| mode, the way iTerm2 does)? | ||
| 2. If not, is **[psmux](https://github.com/psmux/psmux)** a viable session host? |
|
|
||
| 1. Can we just run **tmux** on Windows (and drive it via `tmux -CC` control | ||
| mode, the way iTerm2 does)? | ||
| 2. If not, is **[psmux](https://github.com/psmux/psmux)** a viable session host? |
| * Conclusion: "just run tmux" forces a WSL dependency and still can't host | ||
| native Windows shells. **Rejected** for the durable-sessions session host. | ||
|
|
||
| ## Q2 — psmux: **Yes**, and it already speaks control mode |
|
|
||
| ## Q2 — psmux: **Yes**, and it already speaks control mode | ||
|
|
||
| [psmux](https://github.com/psmux/psmux) ("the native Windows tmux, born in |
| that uses **Windows ConPTY directly** — no WSL/Cygwin/MSYS2 — and implements the | ||
| tmux command language and control protocol. | ||
|
|
||
| ### Verified on a dev machine (already installed via winget `marlocarlo.psmux`, exposed as `tmux.exe`) |
| ## Risks / open questions | ||
|
|
||
| * **Third-party dependency.** psmux is MIT but young; adopting it means vetting, | ||
| version-pinning, vendoring/attribution (same process as the Rust crates in |
This comment has been minimized.
This comment has been minimized.
f4a327c to
b8a7a0a
Compare
… vs psmux) Investigation for the durable-sessions 'keep running in the background' (tmux-style detach) requirement. Adds doc/specs/durable-sessions-keep-running-spike.md. Findings (both key capabilities verified live on a dev machine): - Native tmux on Windows is not viable (WSL/Cygwin/MSYS2 only; tmux -CC control mode is iTerm2/macOS-only, no Windows terminal ships a -CC client; a WSL tmux can't own native Windows shells). - psmux (native Windows, Rust, ConPTY, MIT) IS a viable session host: detached sessions survive their creator (verified via new-session -d + ls) and it speaks the tmux control protocol (verified: psmux -CC emits %begin/%window-add). It is exactly the 'persistent local session host' the spec calls for. Recommends adopting psmux as the keep-running session host and prototyping WT as a psmux -CC control-mode client (modeled on iTerm2's tmux integration), gated behind the 'continue running commands' startup setting. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 99c4f6fb-6ea5-4902-aa34-a68733db9393
321f7fb to
6ccad2e
Compare
@check-spelling-bot Report
|
| Dictionary | Entries | Covers | Uniquely |
|---|---|---|---|
| cspell:csharp/csharp.txt | 32 | 2 | 2 |
| cspell:aws/aws.txt | 232 | 2 | 2 |
| cspell:fonts/fonts.txt | 536 | 1 | 1 |
Consider adding to the extra_dictionaries array (in the .github/actions/spelling/config.json file):
"cspell:csharp/csharp.txt",
"cspell:aws/aws.txt",
"cspell:fonts/fonts.txt",
To stop checking additional dictionaries, put (in the .github/actions/spelling/config.json file):
"check_extra_dictionaries": []Warnings ⚠️ (1)
See the 📂 files view, the 📜action log, 👼 SARIF report, or 📝 job summary for details.
| Count | |
|---|---|
| 54 |
See
✏️ Contributor please read this
By default the command suggestion will generate a file named based on your commit. That's generally ok as long as you add the file to your commit. Someone can reorganize it later.
If the listed items are:
- ... misspelled, then please correct them instead of using the command.
- ... names, please add them to
.github/actions/spelling/allow/names.txt. - ... APIs, you can add them to a file in
.github/actions/spelling/allow/. - ... just things you're using, please add them to an appropriate file in
.github/actions/spelling/expect/. - ... tokens you only need in one place and shouldn't generally be used, you can add an item in an appropriate file in
.github/actions/spelling/patterns/.
See the README.md in each directory for more information.
🔬 You can test your commits without appending to a PR by creating a new branch with that extra change and pushing it to your fork. The check-spelling action will run in response to your push -- it doesn't require an open pull request. By using such a branch, you can limit the number of typos your peers see you make. 😉
If the flagged items are 🤯 false positives
If items relate to a ...
-
binary file (or some other file you wouldn't want to check at all).
Please add a file path to the
excludes.txtfile matching the containing file.File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.
^refers to the file's path from the root of the repository, so^README\.md$would exclude README.md (on whichever branch you're using). -
well-formed pattern.
If you can write a pattern that would match it,
try adding it to thepatterns.txtfile.Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.
Note that patterns can't match multiline strings.
Durable sessions — step5 (spike, stacked on step4)
Base branch:
dev/yuazha/durable-workspaces(step4). Docs-only.Investigation for the hardest durable-sessions requirement — keep running in the background (tmux-style detach/reattach). Adds
doc/specs/durable-sessions-keep-running-spike.md.Findings (both verified live on a dev machine)
tmux -CCcontrol mode is iTerm2/macOS-only — no Windows terminal ships a-CCclient.new-session -d→lsstill lists it), and psmux speaks the tmux control protocol (psmux -CCemits%begin/%window-add). It is the "persistent local session host" the spec describes, and it already exposes the-CCtransport we'd attach/detach over.Recommendation
Adopt psmux as the keep-running session host; prototype WT as a psmux
-CCcontrol-mode client (modeled on iTerm2's tmux integration, reusing our ConPTY/TermControl+ per-tab routing), gated behind the "continue running commands" startup setting. A transparent session-wrapping fallback (Option B) is documented for a faster proof of the detach/reattach lifetime.