Skip to content

0.1.11-beta1

Pre-release
Pre-release

Choose a tag to compare

@scgopi scgopi released this 31 Jul 20:46

Remote loops survive a dropped connection now — the pane redials itself instead of dying.

A remote surface used to be a single ssh -t … zmx attach. When the link dropped — a Codespace idle-stopping, the lid closing, a network change — the pane died on screen even though the remote zmx kept the agent running the whole time. Nothing was lost but the view, and getting it back meant closing and reopening the loop's terminal by hand.

  • Keepalives on every connection. ServerAliveInterval=5 / ServerAliveCountMax=3, so a dead link is found in about fifteen seconds instead of at the OS TCP timeout — which never read as a disconnect at all, it read as a terminal that had frozen.
  • A reconnect loop around the dial. A remote surface is now a retry loop: ssh's own exit 255 retries with capped exponential backoff (1→15s), forever, so an overnight sleep still resumes. Every other exit passes straight through and closes the surface exactly like a local shell exiting, and Ctrl-C during the wait stops the loop.
  • A reconnect never relaunches your agent. An agent surface reattaches only a session that still exists, and otherwise closes with a notice. A session that ended while you were disconnected is the loop having finished — recreating it would re-send the opening prompt and start a second pass behind your back. Plain shell tabs have no such side effect, so they come back as a fresh shell in the repository.

Both pieces are drawn on supacode's remote connections (shape, not code).