4.20.0 — Your ShapeScript models need converting, and a deck in your repo finally saves

A snapshot as of 4.20.0 (released 2026-09-11). 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

One thing here needs your hands: existing .shape files. Everything else is either new and optional, or a fix that just works once you are on this version.

If you have saved .shape models, read this first

ShapeScript now reads a script the way the upstream ShapeScript app does. That is the point — a model written from the upstream docs renders correctly here now, and a model written here opens in the upstream app. But a .shape file you saved before this release still parses and renders wrong: half the size, rotated differently, paths collapsed.

How to tell you are affected

Open a model you saved earlier. If a sphere that used to fill the frame is now half as wide, or the whole thing is turned the wrong way, it needs converting. A model you make after upgrading needs nothing.

The conversion rules

What you wrote What it means now What to do
size on sphere, cylinder, cone, circle, polygon, torus diameter, not radius double it — the first component for a cylinder or cone, all of them for a sphere
rotation X Y Z in radians orientation roll yaw pitch in half-turns negate each axis and divide by pi; the old X becomes the new third component, the old Z the first
rotate in full turns half-turns, clockwise positive negate and double
path point / curve as relative steps absolute coordinates in the path’s frame rewrite as absolute points; the old four-argument curve x y cx cy becomes a curve cx cy control point sitting between two points
tau not an upstream name 2 * pi, if the file must also open in the upstream app

Three real models were converted and checked mesh-for-mesh while this landed, so the rules are the ones that were actually used, not a guess.

What you get for it

MulmoClaude shares the same artifacts/shapes/ files, so both apps moved together. If you run both, upgrade both — one on the old reading and one on the new would draw the same file two different sizes.

Reference: Canvas and the GUI panel.

Take a model out of the chat as a USDZ file

A ShapeScript model can now leave MulmoTerminal as a USDZ — Apple’s AR format. AR Quick Look places it in the room on an iPhone or iPad; Quick Look previews it on a Mac.

Two ways, no setup for either:

  1. Ask the agent. The new exportShapeScriptUsdz tool takes the same source as presentShapeScript — inline script, or a .shape you point it at — writes the file beside the model under the workspace’s artifacts/shapes/, and answers with the full path. It runs without asking for approval: it serialises geometry into one local file and reaches nothing outside the workspace.
  2. Press the button. The ShapeScript view now has Download USDZ, which builds the same file in the browser.

It sits in the Canvas (render MCPs) tool group with the other two ShapeScript tools, so if you have that group switched on for a directory, you already have this.

Reference: How each agent reaches the GUI tools.

A deck kept in your repository now actually saves

If you keep a MulmoScript deck anywhere other than the workspace’s own artifacts/stories/ — in a project repository, say — opening it in the Canvas worked, and then every beat image and every save answered File not found. The Edit tab kept the text you typed, so it looked saved.

There is nothing to turn on. Open the deck again on this version and the beats render and the saves land. If you had given up on a deck because of this, it was never your file that was wrong.

One detail worth knowing if you reach your workspace through a symlink: the card is now filed under the resolved path, so opening the same deck through either spelling gives you one card rather than two.

Reference: The Mulmo menu and the Canvas.

The conversation menu no longer runs off the screen

On a grid of about twenty cells, pressing a cell’s conversation button opened a menu 1750 pixels tall in an 800-pixel window, with nothing on the page that would scroll — so the ROUND TABLE settings and its Start button simply could not be reached. The workaround was zooming the browser out to 50%.

The menu now measures the room it has, opens upward when that is roomier, and caps its height. The long lists scroll on their own, while Start, room, turns, stop and watch stay outside those scrollers so they do not scroll away from you.

How to tell you have it: open the conversation menu on a crowded grid. The menu ends inside the window, and Start is visible without scrolling.

Reference: Starting a round table.

Two buttons in one cell header no longer wear the same icon

The same speech bubble meant four different things, and two of them sat side by side in the cell header — so you could not tell which was which before pressing one. The prompts button (a list of what you sent, nothing to do with a conversation) is now an outbox tray. The talk-to-another-terminal button keeps its bubble and its tooltip now says what it offers: bring in the last turn, exchange a turn, start a round table.

How to tell you have it: look at a cell header. The two buttons are different shapes.

The Update badge is readable again on a dark theme

The “Update” pill in the toolbar was painted with the browser’s default button colour — a light grey no theme ever chose — so on nord and midnight the text on it was nearly invisible until you hovered it. Measured at 1.74:1 in nord, where 4.5:1 is the readable bar.

It now takes the theme’s own surface: 5.03:1 in nord, 4.91:1 in midnight, 5.17:1 in daylight. The same fix covers every button in the app that never named a background — the Copy button inside that badge’s own dropdown was doing it too.

Before, in nord — the pill painted with the browser’s button face:

The Update pill in the nord theme before the fix: a light grey pill with pale blue text on it, barely legible

After, the same pill on the theme’s own toolbar surface:

The same Update pill after the fix: the pill takes the dark nord toolbar colour and the blue text reads clearly

How to tell you have it: switch to nord or midnight with an update available. The pill reads without hovering.

Reference: Make your own colour scheme.