fix: v2.5.7 — panes work on psmux, the Windows tmux
psmux (the WinGet `tmux` on Windows) has no `=name` exact-match targets: it answered "no server running on session '=agenthub-lane-1'" for a live pane, so every Windows start reported "the session's command exited as soon as it started" while the session ran on, and the browser could not attach. - server/lib/tmux.js: `session`/`pane` targets probe the first live session once — `=name` failing where the bare name answers means bare names from then on; real tmux keeps `=name` / `=name:` (it matches by prefix otherwise) - pty-attach.js and cc-update-all-helper.js use the same targets
This commit is contained in:
@@ -51,6 +51,36 @@ describe("tmux wrapper", () => {
|
||||
assert.deepEqual(calls[0], ["new-session", "-d", "-s", "agenthub-lane-1", "-c", "C:\\repo"]);
|
||||
});
|
||||
|
||||
it("names sessions bare on psmux, which has no `=name` targets, and keeps `=` on tmux", () => {
|
||||
// psmux (the WinGet `tmux` on Windows) answers "no server running on
|
||||
// session '=agenthub-lane-1'" for a session that is alive, so every
|
||||
// `=` target read a live pane as gone.
|
||||
const fake = (supportsExact) => {
|
||||
const calls = [];
|
||||
tmux.__setExecImpl(
|
||||
(args) => {
|
||||
calls.push(args);
|
||||
if (args[0] === "list-sessions") return "agenthub-lane-1\n";
|
||||
const t = args[args.indexOf("-t") + 1];
|
||||
if (t && t.startsWith("=") && !supportsExact) throw new Error("no server running");
|
||||
return "";
|
||||
},
|
||||
{ exact: null }
|
||||
);
|
||||
return calls;
|
||||
};
|
||||
|
||||
let calls = fake(false);
|
||||
assert.equal(tmux.hasSession("agenthub-lane-1"), true);
|
||||
tmux.enableMouse("agenthub-lane-1");
|
||||
assert.ok(calls.some((c) => c[0] === "set-option" && c[2] === "agenthub-lane-1"));
|
||||
assert.ok(!calls.some((c) => c[0] === "set-option" && c[2].startsWith("=")));
|
||||
|
||||
calls = fake(true);
|
||||
tmux.enableMouse("agenthub-lane-1");
|
||||
assert.ok(calls.some((c) => c[0] === "set-option" && c[2] === "=agenthub-lane-1:"));
|
||||
});
|
||||
|
||||
it("newSession builds the correct argv", () => {
|
||||
const calls = [];
|
||||
tmux.__setExecImpl((args) => {
|
||||
|
||||
Reference in New Issue
Block a user