4.16.1 — Node 22.12, and four fixes
A snapshot as of 4.16.1 (released 2026-09-07). It will go stale as the app moves on — that is expected, and the living reference is the guide each section links to.
npx mulmoterminal@latest
Nothing here needs configuring. One thing needs checking before you upgrade — your Node version — and the rest is four things that were wrong and no longer are.
Check your Node first
4.16.1 needs Node 22.12 or newer. 4.16.0 asked for 22.9.
node -v
v22.12.0 or higher and you are fine. Below that, npx mulmoterminal@latest will complain about the engine requirement — install a newer Node first (Step 1 of Getting started walks through it on macOS and Windows).
Why it moved: puppeteer, which MulmoTerminal installs as an ordinary dependency and uses for PDF export and the shared-app headless preview, now requires 22.12 itself. There was no way to keep the old floor without holding puppeteer back.
The number was already wrong before this release. The requirement moved in 4.16.0’s tree, and the README, both guides, facts.json and — worst — npx mulmoterminal init’s own environment check all still said 22.9. So the doctor printed a tick for a Node that npm would then refuse. All of them now say 22.12, and a test pins the doctor’s number to the one npm enforces, so the two cannot drift apart again.
Without tmux, a reconnect drew the same answer several times
What you saw: on a machine with no tmux installed, reloading the browser tab — or restarting the server — brought a Claude cell back with its last answer painted several times over, blocks interleaved and unreadable.
Why: when it reconnects, MulmoTerminal sends the terminal a short prefix that puts it back in the mode it was in — the alternate screen, mouse reporting — before replaying the buffered output. That prefix was read out of tmux. With no tmux there was nothing to read, so it went out empty and the replay landed in the ordinary scrollback instead of the alternate screen the agent had been drawing into.
Those modes are now tracked from the terminal’s own byte stream as it runs, so the prefix is right whether tmux is there or not.
How to tell you have it: on a host without tmux, leave a Claude cell showing a long answer and reload the browser tab. The screen comes back once, in place, instead of repeating itself.
tmux is still worth having for everything else it does — session persistence survives a server restart, not just a reload.
The IME box follows your theme
What you saw: typing Japanese (or anything through an IME), the pre-edit string appears in a small box over the terminal. On a light theme that box was a black rectangle — xterm.js’s own stylesheet paints it white-on-black and nothing overrode it.
It now uses the theme’s colours: the terminal foreground for the text, the selected-row background behind it, and a thin accent outline around the box. The background is deliberately not the one a mouse selection uses, so you can still tell “text I am composing” from “text I have selected”.
How to tell you have it: switch to a light theme, click into a cell and start typing Japanese. The box is now light, outlined in your theme’s accent.
Themes, including your own: Make your own colour scheme.
The Files pane opens the file you clicked
What you saw: click a file path in a cell’s output while the Files pane is closed, and the pane would open showing the file it remembered from last time rather than the one you clicked.
It was a race at startup: the pane restores its remembered file and your click asks for a different one, and whichever finished last won. The restore now stands down when a file has already been asked for.
How to tell you have it: with the Files pane closed, click a file link in terminal output. That file opens — every time, not most of the time.
Also in this release
- A mulmoScript deck can be opened by absolute path. An agent calling
presentMulmoScriptwith a full path — a deck kept in a repository, or one another tool wrote — used to getInvalid filePathback, and the only way through was to copy the file into the workspace. It now opens where it lies, and edits write back to that file rather than intoartifacts/stories. Relative paths mean exactly what they always did, so nothing you already had moves. The Open in the Canvas entry in the file tree is unchanged and still in-root — that half is a deliberate hold, not an oversight. - Dependency bumps:
@mulmoclaude/mulmoscript-plugin4.6.0,@mulmoclaude/core4.7.0,@google/genai2.21.0,material-symbols0.47.1,puppeteer25.10.0, plus the routine set.
Where the reference lives
This page is a snapshot; the guide is the part that stays current. Installing Node · Checking your machine with init · Colour schemes · The decks key · What MulmoTerminal does