Repository navigation
Muster 0.14.0
Behaves differently
- A zoom fills the whole tab, whatever machines its panes are on. Zooming a laptop pane in a
tab beside devenv panes used to fill only the laptop's part. Unzooming brings every machine's
part back at its width. One gap remains: move the keyboard to another machine's pane while
zoomed, from the agent list or withmuster pane focus, and that machine's part comes back, with
the zoom covering only its own part again. - A right-click selects the word under the pointer and opens the pane's menu, as in Ghostty.
Over a program that reports the mouse, a right-click still goes to the program, and a
shift-right-click opens the menu. muster pane send --confirmchecks that the send changed the pane. Text already on screen
no longer passes for text delivered: a send confirms once its text shows more times than
before, or once the pane changes and still shows it. A send of only keys or Return must change
the pane. A spinner changes the pane too, so this proves the pane changed, not that the send
changed it.- A window that takes a command and does not answer within 2 seconds is passed over. Before
sending,musterasks each window it could use what it is showing; a window that stays silent
is sent nothing, and the machine's daemon answers instead, saying so on stderr. While a laptop
sleeps, a command run from a devenv pane costs 2 seconds rather than hanging for two minutes.
pane newand other verbs only a window can carry out give a window 10 seconds, then exit 3
with nothing sent. - Agents are told that waiting for a message or a person is just ending the turn. The hook
line Claude Code's and Codex's adapters give each session used to read as covering a message,
so agents declared themselveswaitingand amuster pane wait --until idleon them never
ended. Only work the agent started, such as a build or a sub-agent, is a wait to report. An
installed adapter keeps the old line until updated: for Claude Code,claude plugin marketplace update muster, thenclaude plugin update muster@muster; for Codex,codex plugin marketplace remove muster, thenmuster harness install codex. - An agent that names itself in a group keeps its place, across restarts. A pane added to a
group by its pane id can nowmuster msg join --name X, andXtakes over its membership in
every group, here and on linked machines. The change is written to each group's log as the pane
leaving and the name joining, so it survives a daemon restart, where it used to revert.
New
muster pane send --key KEYpresses keys a dialog reads, so an agent can answer a dialog
with something other than its highlighted option:--key down --key down --entergets past
Claude Code's folder-trust dialog. Codex's dialogs have not been tried yet. Keys are
spelled as in[keymap]:--key esc,--key 2,--key ctrl+c. A send's text goes first,
then each key, then Return.muster pane send --enterwith
no text presses Return alone.- Right-click a group in the agent list's Messages to leave or delete it. Leave Group takes it
off your list; Delete Group asks first, then deletes the group and its log for every member. - The human on the laptop can delete, pause and resume a group kept on a devenv, from the
agent list or the laptop'smuster msg, while the devenv is attached. Changing its members or
policy still runs on the devenv. - A
muster msgverb starts this install's daemon when none is running, as the app does,
and says so on stderr. A window opened later uses that daemon. A sandbox that refuses the
daemon's socket, or a$MUSTER_DAEMON_SOCKETnaming another daemon, starts nothing. - A member removed from a group can still read what was posted before its removal, once, so a
dismissal reaches it. Its wake used to point at amsg readthat refused it. muster msg joinsays which groups the name is in. Taking over the name of a session that
had gone lists the groups that came with it, and the command to leave one.
Fixed
- Right-click opened no menu over a pane, in any window, so the pane menu and Split on
Machine were unreachable from the mouse. - A window opened after its daemons connected said
disconnectedin its title, though both
were connected. muster msg post --to <pane>reaches a pane on another machine whose agent joined under a
name. It was refused as nobody by that name, and so wasgroup addby pane.- The daemon no longer takes Codex's Linux sandbox helper for a nested Codex, which refused a
Codex agent's ownreport --waitingon a devenv. The helper's name comes from Codex's binary;
the fix has not yet been run against a Codex on a devenv. - A pane whose
$MUSTER_SOCKETis stale or unset reaches the window that holds it. With
several windows answering,pane send,pane waitandpane closewere refused, and a pane on
a devenv with no$MUSTER_SOCKETfound no window at all. - A sandbox refusing Muster's socket is reported as that, naming Codex's
network_access
setting, where it used to say the window had quit. - A refused
msg jointo a group kept on this machine leaves your name as it was. It used to
rename you before the group's policy refused the join. A join to a group kept on another machine
still renames you first.
Under the hood
- The daemon protocol is 1.4, and agent detection engine 13: an agent's manifest can name the
helper processes its harness runs under other names (helpers), which are not taken for nested
agents. Muster hands the 0.13.0 daemon's panes to the new one on the first launch after
updating, on the laptop and on a devenv, so running agents keep running.
Apple Silicon, macOS 14 or newer. Notarized and stapled.
brew install amterp/tap/muster
sha256 f024502cc099bbbb74965138c2dd20f7fd664bc86560698b5ff0901aa7339b5d
Full Changelog: v0.13.0...v0.14.0