Repository navigation
v0.11.1
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-pageThe 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>...](MCPignore) leaves each listed layer's render box out ofmismatch, its splits and the regions; its pixels leave the denominator too. The reply lists what was ignored underignored, 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 addsimageMismatchandnonImageMismatchbeside 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.pngSee 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.