Skip to content

v0.11.1

Choose a tag to compare

@github-actions github-actions released this 01 Nov 14:29
8c9edc0

figlens 0.11.1 makes compare-image usable on real screens: a full-page capture shorter than the frame, content that comes from data, and light borders the default threshold cannot see. Each change applies to the CLI and MCP; Pi, OpenCode V2 and OMP pass the same parameters and results through.

Compare a full-page capture shorter than the frame

A built page is often shorter than its Figma frame, for example when a list has fewer rows on the test account. Before, a screenshot more than 1% shorter was refused. With --full-page (MCP fullPage), it is compared over the rows it has, and the missing rows count as differing and form their own region, so the score does not hide them.

figlens compare-image design.fig 12:34 page.png --full-page

The reply's uncompared.missing says how many frame rows (device px) the capture lacked. Without --full-page, a screenshot more than 1% shorter is still refused with a hint to capture the full page.

Leave data-driven content out of the score

On a screen with back-office banners, user names or balances, those differences dominated the score, so fixing a real layout bug barely moved it.

  • --ignore <id>[,<id>...] (MCP ignore) leaves each listed layer's render box out of mismatch, its splits and the regions; its pixels leave the denominator too. The reply lists what was ignored under ignored, and the diff image paints those pixels gray. A layer that draws nothing (hidden, a mask, clipped away) is refused, since its layout box could cover content that does draw.
  • An ignored layer's own size and position are no longer measured. Check them with inspect.
  • A region over image fills is marked image: true, and the reply adds imageMismatch and nonImageMismatch beside the text split. Confirm the asset, crop and fit of such a region before ignoring it; it is not a layout match by itself.
figlens compare-image design.fig 12:34 page.png --ignore 12:40,12:41 --out diff.png

See light borders and dividers

The default threshold, 48/255 per channel, keeps anti-aliasing and font smoothing out but misses a light gray border on off-white. --threshold N (MCP threshold, 1-254) lowers it for a second pass; the reply reports the threshold it used. In a test, a 1 px #e4edff divider on white is missed at 48 and found at 16. A lower threshold also sees more rendering noise, so read only the new regions.

Agent guidance

The audit and build guidance say when to mask data-driven layers, to report what was ignored, and to rerun at --threshold 16 after a clean default run.

Also

The website figlens.runkids.cc now serves the docs in every README language, generated from the repository.

Verification

Each change has unit tests on the public fixture; the full Rust, npm and docs checks and the installation lanes passed on the merged main. The --threshold 16 noise level was not measured on real pages.

Update

Script installs: figlens update. Homebrew: brew upgrade figlens. Plugin installs: update the plugin in your host. For Pi, OpenCode V2 and OMP, update @runkids/figlens through your host and restart it so its tools and skill match the binary.

Full changelog