oss

tmux-ide is an open-source project by Prototyper.View source(opens in a new tab)

tmux-ide home

tmux-ide 2.9.24

A killed daemon can no longer leave a tmux server that cannot exit, and a click on an agent that has just appeared works the first time.


2.9.24 is a CLI/daemon release with more connection fixes. It adds no commands and needs no Mac app update.

A killed daemon no longer leaves a dead tmux server

A daemon that dies without a clean stop, for example after kill -9, leaves its control clients attached to the tmux server. Nothing reads their output any more, and tmux cannot finish kill-server while they stay. The server kept its socket with no sessions, no new server could start there, and the next daemon answered 503 to every read of that server. In the one-hour run that found it, that lasted 16 minutes, until the daemon was stopped.

A daemon now ends tmux-ide control clients whose daemon is gone. It does so when it takes over a tmux server, and again when the server lists no sessions or does not answer, at most once every 10 s. It never ends its own clients, another running daemon's, or another program's control-mode clients (-CC).

The reproduction, on a separate daemon and a private tmux socket:

A dead daemon's client is present2.9.232.9.24
before the next daemon startskill-server never finishesthe server exits in 100 ms
while the daemon runs503 for 15 s and no new serverthe server exits in 600 ms; a new one is served 6 s later

A click on an agent that has just appeared

In the TUI, a click on an agent right after its pane appeared did nothing, or said "That agent changed or disappeared. Select it again on Home." A second click worked. Two causes are fixed:

  • The agent list re-reads a session whenever an agent appears or changes, and a click during that read was refused as stale. The TUI now waits for the read, up to 3 s, and shows "Waiting for agent…".
  • The daemon refuses to select a pane it has not taken into its inventory yet, which is the state right after a pane is created. The TUI now sends the selection again for about 3 s. When the pane still cannot be selected, it says so.

The release journey's step for this failed in 1 to 6 of 20 runs before. We have not yet shown with a full set of runs that it no longer fails.

Also in 2.9.24

  • A daemon that started while another tmux client changed panes could exit with "Trusted semantic pane discovery failed". It now reads the inventory again, up to four times.
  • Opening a session while another tmux client split or closed a pane answered 503. The daemon now checks again, up to three times, before it refuses.
  • The daemon's hook check read a show-hooks call that timed out or could not start as replaced hooks: it logged hooks-replaced, removed its hooks and installed them again. It now repairs only hooks that a successful check shows to be missing.
  • The hook check slows down while a tmux server keeps failing it. On a server that was shutting down but could not exit, the repairs cost about 400 tmux calls a minute.
  • A window that tmux renames after its running command no longer counts as a change to the terminal inventory.

New log lines

  • Why a read of a tmux server answered 503 server-unavailable.
  • A warning once a minute while a tmux server lists no sessions or does not answer.
  • The control clients the daemon ended, by process id.
  • Each client request the daemon refused, with its reason.

Updating

Update with tmux-ide update or rerun the installer. A running older daemon restarts on 2.9.24 by itself; your tmux sessions keep running. Update remote machines too: the fixes are in the daemon on the machine that runs tmux.

Full list of changes: CHANGELOG.md.