Skip to content

MeshCue 1.4.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 21:12
· 278 commits to main since this release

What the reviewer means now reaches the agent, not just where they clicked.

A mark can carry a note. Pins and regions take up to 200 characters of text,
written under the list of marks, and it travels with the batch. An agent is
told to treat a note as the reviewer's own words about that mark, worth the
same as something said in the conversation: it echoes what it understood
before changing anything, lists a note and a chat message that disagree
instead of choosing between them, and treats the text as data about the model
-- a command or a link in it is never followed. The push that announces a
batch says only that a mark has a note; the words themselves reach the agent
through read, as a field.

Every mark records the view it was made from: the camera in the model's own
coordinates and units, which way was up on the reviewer's screen, the field of
view and the aspect ratio. It is taken when the mark is placed, painted, moved
or given a note. The batch's camera keeps its meaning, and a mark made before
1.4 falls back to it.

The reviewer can measure the model. Measure in the toolbar offers point to
point (snapping to a corner within 10 pixels), the length of a straight edge,
two faces (their distance when parallel, otherwise the angle between them) and
the circle through three points on the rim of a hole or shaft, which gives its
diameter and centre. On a STEP the edges and faces are the file's own, so a
tangent edge or a shallow chamfer can be measured and a curved face is refused
rather than approximated; GLB and STL are measured on their triangles.
Millimetres show two decimals; a model that declares no unit shows the bare
number and says so. A measurement is only for the reviewer until they keep
it: then it becomes a mark of its own, M1, M2, that can carry a note ("make
this 22 mm"), be undone or deleted, and is sent with the batch, with its
points, the triangles it was taken from, its value and its unit. The service
refuses a measurement whose numbers do not agree with its own points.

The page calls the agent by name. open takes an optional agentName (up to
24 characters, plain text), and where the tool it runs in is known the page
writes that after it: "Send to Ada (OpenClaw)" instead of "Send to the
Agent", with full-width brackets in Chinese and Japanese. An agent that gives
no name is named after its tool alone -- OpenClaw, and over MCP Claude Code or
Codex from the client's handshake -- a name given through the CLI stands
alone, and otherwise the page keeps its own word for an agent. open and
status report both, as agentName and agentTool.

Once a batch is sent, the page follows it: how many marks went, that it is
waiting for the agent to read it, that the agent has read it and when, and
when its understanding arrived. Where nothing can wake the agent -- an MCP
client such as Claude Code or Codex, or the CLI -- the page says so and offers
one sentence to paste into its conversation, naming the project and the
batch, with a button that copies it. Under OpenClaw, a batch sent from a
Telegram conversation gets a line in that conversation as soon as the host
accepts it, "📐 Marks received: 3 (B–D). Handed to Ada (OpenClaw), reading
them now…", which changes to say so once the agent has read them.

The agent's echo looks like nothing a reviewer draws. A reviewer's mark is a
solid, still fill; an echo is a moving dashed line with a soft glow along the
edges of each place the agent means, in a cyan none of the reviewer's paints
use. It is drawn above the reviewer's marks, but only as wide as a line, so
where the two meet both stay visible, and a screenshot, which stops the
movement, still shows the dashes. A new echo's glow pulses twice; with reduced
motion the dashes stand still. An agent is told to mark only the places it
intends to change, and only once the reviewer has asked for a change: a batch
that asks for nothing is answered in words, and the reviewer's own marks are
never handed back to them.

MeshCue can be installed as a Claude Code plugin:

claude plugin marketplace add lzyling/meshcue
claude plugin install meshcue@meshcue

The plugin is the package attached to this release, already built, so the
install runs no build and no npm install. It needs Node.js 22 or later on
PATH, and works in the directory Claude Code was started in. meshcue-mcp
now reads its workspace from MESHCUE_WORKSPACE when a host starts it
somewhere else, and refuses every call with WORKSPACE_INVALID when that is not
an existing absolute directory.

Going back to 1.3.x after using 1.4: an older page sends a note back as it
found it and the older service refuses it, so a draft that has a note
cannot be edited there, and an older read silently leaves notes out. A
draft with a kept measurement is worse: the older page cannot draw it at
all, and the older service will not store it. Submit or finish a round
that has notes or measurements before going back.

Also:

  • A pin's letter no longer shows for a frame in the top-left corner of the
    view when the marks are drawn again.
  • A review opened through the CLI or MCP now takes the reviewer's marks.
    Since 0.9.0 it refused every write from the page as if MeshCue had been
    uninstalled, because it looked for a file only the OpenClaw package has;
    the page opened and nothing could be marked or sent. Reviews opened from
    OpenClaw were never affected.
  • In German and French, painting a region violet no longer fails to save: its
    name was longer than the 12 characters a region name was allowed.
  • A STEP written with lowercase hex escapes, as SolidWorks writes them, gets
    its part colours: the names are matched again.
  • Part names that a STEP stores as UTF-8 read back as Latin-1 are restored,
    so Chinese names reach read intact where the file still holds the bytes.
  • A GLB with morph targets is refused by the service, with ANIMATED_MODEL,
    instead of being accepted and then refused by the page every 2.2 seconds.
    The page stops fetching again any bytes it will refuse the same way.
  • STL has no colour, and the help and the agent documents now say so: send a
    STEP or a GLB for colour.
  • Vite 8.3 builds the page, with Rolldown instead of Rollup. Nothing a
    reviewer or an agent does changes; the bundle is a little smaller.

This release is commit bb8db68.