mulmoterminal@4.14.0
Highlights
- Restart an agent without leaving the cell (#1918, #1920) — same cell, same directory, same conversation. Opt-in on two surfaces: a header button (
"run": "action"with"action": "restart") and theterminal-restartkeyboard action. Neither ships in the defaults, because a restart costs a resume: the conversation is read back from its transcript, and it acts immediately, even mid-turn. - Shared apps:
ownRead(#1917) —@receptron/sharedapp0.35.0 lets a view receive only the rows the viewer wrote, instead of every row plus a per-row ownership check. The magazine template's decision 10 records when to reach for it and what it costs (limit, and catching a duplicate slug before the row is sent). - A
PORTleft behind in the tmux server no longer steals this app's port (#1919, #1921) — 4.11.0 stopped the launcher handing MulmoTerminal's own port to every cell, but could not reach the tmux server, which outlives every restart. Startup now clears aPORTthat equals the port this server is listening on, and a tmux server MulmoTerminal creates is never started carrying it. APORTyou set yourself is untouched.
Setup guide: Restart an agent without leaving the cell — written at release time (日本語). The full per-PR detail is in docs/ChangeLog.md.
Restart the agent in the cell you are looking at (#1918, #1920)
Changing an MCP server, a plugin or ~/.mulmoterminal/config.json left the agent already running in a cell with the old view of the world, and the way back was to close the cell, pick the directory and agent again in the launcher, and find the conversation under or resume here.
{ "id": "restart", "icon": "restart_alt", "label": "Restart the agent", "run": "action", "action": "restart" }The shape is decided by tmux. Reconnecting to a live tmux session only attaches — nothing is re-read, because nothing is re-started — so a restart reaps the tmux session and lets the next connection start a fresh --resume. No server route was added: the mechanism is the close button's existing POST /api/session/:id/terminate, awaited, then a retarget onto the same session id. Reversing those two steps attaches to a session that has not been reaped yet, which looks exactly like a restart that did nothing, so the ordering lives as a pure function pinned by two specs that both go red when it is swapped. codex, antigravity, grok and muse cells take the same path.
Shared apps: ownRead limits a participant's page to their own rows (#1917)
The declaration is not a permission — it makes the page simpler, dropping the owner test and the third "still deciding" state. The magazine template's own declaration is deliberately unchanged: while a handful of people are writing, handing the whole collection to every page is what lets the app say "that URL name is taken" before the article is sent.
A PORT left behind in tmux (#1919, #1921)
Measuring the reported case turned up a second route that was live in 4.13.0 and is not in the issue: PORT=<n> mulmoterminal leaves that value in the server's own environment, so when no tmux server is running yet, the first spawn's client creates one carrying it — and a tmux server keeps the environment it was started with for life.
Both are closed by one rule: the only PORT taken away is the one this server is listening on. Anything else under that name stays, because nothing in the tmux environment distinguishes a leftover from a value the user set — PORT=3000 mulmoterminal --port 34601 still puts the user's 3000 in the cells, and a value admitted that way survives a later restart carrying no PORT. Verified end to end with an isolated server and a real pane reading its own environment back.
Documentation
The header guide said ~/.mulmoterminal/config.json buttons apply to "every terminal". They apply to agent cells: a launcher chip, a Shell cell or a Run command shows no custom buttons, because that terminal is the user's own command line. Corrected in both languages — found while taking the release screenshot.
Dependencies (#1922)
@google/genai 2.19.0, zod 4.5.4, puppeteer 25.9.0, sharp 0.35.4, knip 6.33.0.
📦 npm: mulmoterminal@4.14.0
What's Changed
- feat: sharedapp 0.35.0 — 参加者のページを自分の行に絞る ownRead by @snakajima in #1917
- feat: セルの中でエージェントを再起動する — 設定ボタンとキーボードショートカット (#1918) by @isamu in #1920
- fix(tmux): mulmoterminal 自身の PORT を tmux 経由でセルに配らない (#1919) by @isamu in #1921
- update by @isamu in #1922
Full Changelog: 4.13.0...4.14.0