4.18.0 — Let the agent look at what it built

A snapshot as of 4.18.0 (released 2026-09-09). 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 has to be turned on. One new thing needs something present on your machine (a browser it can drive), and the rest are things that were wrong and no longer are — including one worth checking you have, because it was quietly costing money.

New: the agent can SEE the 3D model it wrote

An agent could write a ShapeScript model and show it to you, but it was working from the source text alone. “The handle is inside the cup” was something only you found out.

renderShapeScript draws the model to a PNG and hands the file back to the agent, which then reads it — four camera angles on one sheet by default, because one view cannot settle what is in front of what. It takes the same source as presentShapeScript: inline, or a .shape file you point it at.

There is nothing to configure. It lives in the same Canvas (render MCPs) tool group as the drawing tools, so a cell that can show a model can now check one, and it saves its PNG into your workspace artifacts — nothing leaves the machine.

What it needs, and how to tell you have it

Rasterising needs a local headless browser. Most machines that have ever run Chrome or a Puppeteer-based tool already do.

To check, ask an agent in a workspace cell:

render a small ShapeScript cube and tell me the path

  • It answers with a path under artifacts/renders/ — you have it. Open that file and you are looking at what the agent looked at.
  • It says a browser is missing — nothing is broken: presentShapeScript still shows models in Canvas exactly as before, and the agent is told to carry on with it rather than retry. If you want the check, install Chrome (or run npx puppeteer browsers install chrome once).

→ Reference: the Canvas tool groups.

New: a model is a file you can edit

A model used to live only inside the chat message that produced it, so editing one meant editing a copy. Now presentShapeScript saves the script under artifacts/shapes/, can be pointed at a .shape that already exists (yours, or one it wrote earlier) and presents it in place, and the source editor beside the view saves back to that same file and re-reads it when opened.

Nothing to turn on. If you have models from an earlier version, they are in the conversation, not on disk — ask the agent to present them again and they will be saved this time.

Fixed: a conversation you cleared came back

This is the one to check you have.

/clear ends a conversation, and claude starts a fresh one under a new id of its own. The old transcript stays on disk under the cell’s key, frozen. Until 4.18.0 the reconnect only asked “does that file exist?” and resumed it — so on a machine without tmux (that is: Windows), every reboot brought the cleared conversation back into the cell. It looked like a normal session, and the first thing you typed re-sent all of it.

One user measured 478,237 tokens on the first prompt after a reboot, and found eleven days of the same frozen transcript appended into a single 9.7MB file, because each restart resumed it again.

How to tell you have the fix. In a cell, run /clear, then restart MulmoTerminal (or the machine) and open it again:

  • Fixed — the cell comes back empty, ready for a new conversation.
  • Not fixed — you can scroll up and see the conversation you cleared.

Nothing to configure, and nothing to clean up by hand: the frozen transcripts stay where they are (the cockpit’s summaries read them), they are simply no longer resumed.

→ Reference: what /clear does to a cell, the cockpit roster.

Fixed: the moon button that did nothing

On a launcher cell or a command cell, the 🌙 (set aside) button was there and did nothing when pressed. Only a session terminal can be parked; the button now appears only there. If you had been pressing it and wondering, that was the app’s fault, not yours.

→ Reference: setting a terminal aside.

Fixed: codex sessions in the resume list

Codex changed the shape of the record it writes for a user’s turn, and three places here were still reading the old one:

  • the resume list showed the wrong title for the session you were in, and /rename did not reach it;
  • the prompts pane (what you asked, newest first) came back empty;
  • the handoff text had nothing to carry.

All three follow the new shape now. Nothing to configure — reopen the picker and the titles are right.

→ Reference: resuming a session, the prompts pane.


This site uses Just the Docs, a documentation theme for Jekyll.