Repository navigation
Conversation
Keep full-page captures at the requested viewport so viewport-relative layouts retain their proportions. Expose capture readiness and timing, image quality, a pixel budget, and an animation-freezing option. Share bounded capture capacity across MCP batches and image comparison. Include queued work in capture deadlines and stop cancelled requests. Compare saved images locally, with an optional difference image. Keep concurrent captures in separate headless windows so a hidden tab does not stall rendered-frame waits on macOS. Run browser-backed unit tests without competing Chrome launches. Image checks use the normal capture budget; timeout checks retain short budgets. On one macOS runner, twenty warm captures per version took 1,057 ms before and 611 ms after at the median. First-capture times varied. Signed-off-by: Aktan Azat <aktanaazat@gmail.com> Assisted-by: Claude Opus 5 Assisted-by: GPT-6 Astra Assisted-by: Claude Sonnet 5
Keep the Rust rule pack in the repository so local edits use the same style checks. Signed-off-by: Aktan Azat <aktanaazat@gmail.com> Assisted-by: GPT-6 Astra
Full-page captures resized the viewport to the document height before taking the screenshot, so a 100vh section grew to fill the whole image and the rest of the page fell off the bottom. Chromiumoxide's full_page option, used for pages past the Retina limit, resizes it the same way. Clip the whole document with captureBeyondViewport instead. The clip keeps the device scale factor, so full pages stay at 2x up to the existing ~16k px limit and fall back to 1x past it. Settle every image in the document before the screenshot, which the resized viewport used to do implicitly. Assisted-by: Claude Opus 5.5
aktanazat
force-pushed
the
agent-capture-workflows
branch
from
September 27, 2026 09:32
cf6c1a6 to
87867fe
Compare
Expose capture readiness and timing, image quality, a pixel budget, and an animation-freezing option. Share bounded capture capacity across MCP batches and image comparison. Include queued work in capture deadlines and stop cancelled requests. Compare saved images locally, with an optional difference image. Keep concurrent captures in separate headless windows so a hidden tab does not stall rendered-frame waits on macOS. Run browser-backed unit tests without competing Chrome launches. Image checks use the normal capture budget; timeout checks retain short budgets. On one macOS runner, twenty warm captures per version took 1,057 ms before and 611 ms after at the median. First-capture times varied. Signed-off-by: Aktan Azat <aktanaazat@gmail.com> Assisted-by: Claude Opus 5 Assisted-by: GPT-6 Astra Assisted-by: Claude Sonnet 5 Assisted-by: Claude Opus 5.5
aktanazat
force-pushed
the
agent-capture-workflows
branch
from
September 27, 2026 09:37
87867fe to
b0bf90f
Compare
Author
Iris looked only for Chrome, Chromium, Edge, and Brave, so on a Mac with only Helium every capture failed with chromiumoxide's 'Could not auto detect a chrome executable'. Helium is now a default candidate, and the detection and launch errors say to set CHROME or pass --chrome. Assisted-by: Claude Opus 5.5
Helium leaves its network service helper running after the browser exits, reparented to launchd, so every capture and every MCP shutdown leaked one process (one lived over two minutes) and the SIGTERM cleanup test failed. Closing a session now stops every process still started with the session's profile directory, with SIGTERM and then SIGKILL, matching the profile argument exactly. Assisted-by: Claude Opus 5.5
The fork holds the later rewrite of the capture commit (b0bf90f), rebased onto the full-page viewport fix (ce73729). Local work on top of the original capture commit: the Rust anti-slop rules, Helium detection, and reaping browser helpers. Conflicts in README.md and src/capture.rs resolve to the fork's rewrite. ce73729 carries the full-page behavior, the ~16k px fallback to 1x, and its two tests. The rewrite dropped the full-page before/after section and the optional Jev section, so the two images only that section showed are removed. The Helium, CHROME, and helper-reaping changes merge cleanly. Assisted-by: Claude Opus 5.5
The anti-slop unwrap rule reads a SAFETY note only directly above the statement holding the expect. The note sat inside a closure bound by a let, so the let was flagged. Mapping the three channels puts the note directly above the expect, with the same arithmetic. Assisted-by: Claude Opus 5.5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
this now builds on the full-page viewport fix (#11), so that one should go first. what's left here:
capture_batchreturns images in input order and keeps successful captures when another item fails. queued captures count toward their deadlines, and cancelling stops pending work.comparechecks saved images locally and can write a difference image. it handles transparency and different image sizes.--qualityand--freeze-animationsround out the capture controls.iris --full --max-pixels 1500000 --freeze-animations --json localhost:3000 iris --format webp --quality 75 -o card.webp --selector '#card' localhost:3000 iris compare before.png after.png --threshold 8 -o diff.png