Repository navigation
0.3.0
The Annotation is the unit of work
0.3.0 rebuilds the Review Surface around durable Annotations. A Builder-Reviewer
points at visible targets, writes a note on each, and sends them as one versioned
Visual Intent Envelope. Each Annotation carries its own identity, target evidence and
note, and each is verified on its own.
- Relational Intent by direct manipulation.
Shiftbuilds a set of targets;
dragging one already in the set states one relation — ordering, alignment, equal
spacing, containment, shared property, comparative size — as one sentence before
anything is recorded. - Passes and reversible verdicts. A Pass is the unit of review with its own state
and outcome. A verdict can be changed in one act, which reopens the Pass it closed.
Another Pass carries the open Annotations into a new Pass; Not Fixed is the
single "no", and a send the agent has not collected can be taken back. - Reaching inside the artifact. Targets can be pointed at inside open shadow roots,
nested shadow roots and same-origin frames, and a drawn Area encloses what it
geometrically encloses across a boundary. Where the surface cannot look in it states
the boundary with its true cause instead of reporting the target as gone. - Honest outcomes. Resolution reports Matched, Recovered, Ambiguous (with
candidates, never auto-selected), a state no longer on screen, a boundary this
surface cannot read, or Deleted — and separately whether a target was written before
the revision now on screen. - Check-In. Steering and interruption are seen when the agent checks in between its
own steps. There is no push channel and no wake mechanism.
Install changed: it is your agent's job now
The product ships a standard local MCP server and no installer. visual-intent setup, the Harness Registry and the bundled Skill are gone (ADR-0031): every agent
that can register an MCP server ships a registrar more current than our copy of its
format, and our copy was the most drift-prone code in the repository.
Register the server with your own agent's mechanism:
# Claude Code
claude mcp add visual-intent-layer -- npx -y --package visual-intent-layer@latest visual-intent-mcp
# Codex
codex mcp add visual-intent-layer -- npx -y --package visual-intent-layer@latest visual-intent-mcp
# opencode
opencode mcp add visual-intent-layer # then give it npx and the arguments abovepi works through pi-mcp-adapter with the same entry in the project .mcp.json, and
any host that can launch a local stdio server works. Registry-aware clients can find
the server as io.github.willa-code/visual-intent-layer.
Install it on the machine where you look at the screen. The Review Surface opens a
browser there and binds a loopback port there.
The running server now reports its own version in every open_visual_review result, so
a report about odd behaviour can name the build.
Breaking changes
visual-intent setupis removed. Re-register with your own agent's MCP command.
An existing registration fromsetupstill works — it points at the same server —
but this release no longer reads, writes or repairs any Harness configuration.- The bundled Skill is no longer published. Its four triggers now live in
open_visual_review's description, which is the only trigger surface a tool call has. - Envelope 0.4 is current.
0.2and0.3envelopes still load and are read as the
current version;0.1is refused by the validator, and its schema is kept only as a
historical record of the wire shape.
Smaller things
- The published tarball drops from 209 files to 179: dev tooling, the Skill and the
packaged MCP snippet no longer ship. - Every published version is now an official release; the pre-release channel is
retired. - A browser that cannot be opened is reported rather than killing the server process.
Full Changelog: v0.2.1...v0.3.0