Skip to content

A new shot_review tool, and a multitude of PNG/SVG screenshotter fixes. - #255

Merged
KubaO merged 85 commits into
twinbasic:mainfrom
KubaO:staging
Nov 2, 2026
Merged

KubaO merged 85 commits into
twinbasic:mainfrom
KubaO:staging

Conversation

@KubaO

@KubaO KubaO commented Nov 2, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

KubaO added 30 commits October 31, 2026 20:11
…eue, remembered overrides, manifest, shared modules with shoot_docs and replay)
…, rects), defaulting to NOISE_LEVELS and NOISE_SHARE
…ked) moves from svgshot/redraw.mjs to lib/shot-revision.mjs
… among its own, which redraw.mjs's runShards and reportShard now use; a last line with no line ending is passed on rather than dropped
…ed from builder/serve.mjs's live-reload, which now uses it
…UL) and lib/shot-apply.mjs (applyPicture, applySvg, restorePictures, dropPicture, writeSvg): the decisions and writes of shoot_docs.mjs's keep, keepSvg, restoreSvg, dropLight and --cleanup, and of replay.mjs, moved into modules both call
…se icon while the tab still shows the IDE's loading spinner (a module just added, as Close_Question's take adds one), instead of editorTabs throwing on the missing icon
…, esc, anchor, sizeText, pctText) and svgshot/sheets.mjs (the two sheets, their rows and the output-folder rules), moved out of redraw.mjs; the pages come out byte for byte the same
…mjs): each picture's build, recorded by shoot_docs.mjs, and its allowances and a review's decisions, which decidePicture, decideSvg, --cleanup and replay.mjs judge with
…rom it), shareOff and changeRegions (closing, then erosion) in shot-change.mjs, the queue's rules in shot-queue.mjs, and an SVG bar at any level with svg.ignore in the manifest
…ock goes to the queue (owner); pngLook to follow before step 4
…e, restored) with a region surviving the erosion
…gainst (against); shot-queue.mjs's reviewPicture and reviewSvg give the strength map, the regions and the look from it
…stageRefusal); record-lines.mjs's stop line (STOP_LINE, onStop, sendStop); slugOf moved to shot-apply.mjs
…js and replay.mjs, a run stopped by a line on stdin; dryRun in shot-apply.mjs, verdict shapes in shot-stage.mjs, judgeSvg returns decideSvg's verdict, runShards and inBrowser stop
… more (owner), since a capture's own noise is often a row of text one level off
…tage and --events on Tools-IDE, the stage's tests on Tools-Toolchain-Tests, WIP.md's shoot_docs bullet
… (shot-session.mjs), runs (shot-runs.mjs), model (shot-review.mjs), pages (shot-pages.mjs) and server (shot-server.mjs), read-only and live; strengthPicture; WIP.ShotReview.md: step 5 done, step 6 next
…rt 4180, pictures changed outside the session, allowances on the sheets, moving a session to a new HEAD), placed in steps 6 and 9
…arrive and judged again after a review (shot-verdicts.mjs, holdPicture, copyBundle), decisions and allowances from the detail page, the pictures changed outside the runs, the session moved to HEAD; staged SVGs judged with a PNG not written; WIP.ShotReview.md: step 6 done, step 7 next
…-up with its dry run first, Stop and Kill, the overview's selection, one run at a time; runOf shared with the command line); a run never detached on Windows, which opened console windows on the desktop; git calls hidden; WIP.ShotReview.md: step 7 done, step 8 next
…iles that git reports changed, and nothing else; a default message that can be edited and put back; refused while a run runs or HEAD is not the baseline), commitPlan and commitMessage, workingChanges and commitPaths beside runGit; the session archived by its commit and the next one served, --archived to open one read-only; WIP.ShotReview.md: step 8 done, step 9 next
…ure's allowances and a review's decisions (allowancesOf, compareImages and compareRevisionPicture with a picture's rule, --against's noise group as --cleanup puts back), the overview's allowance chips, the commit's status says committing..., the tool's tests in test/shot-review.test.mjs as a gate of test.bat, its entries in Tools-IDE.md, Tools-Toolchain-Tests.md and Tools-Groups.dot; WIP.ShotReview.md: every step done
…ze reader, pngSize in scripts/lib/png.mjs, for the screenshot tools' seven copies; WIP.ShotReview.md: both done
…as a child process, the server goes on answering, and every page says the commit is under way and refuses a change or a run until it ends; Ctrl+C waits for it
…keep-old decision (a take-new decision on HEAD's own bytes kept nothing); commitPaths finds the repository's root without a second git status
KubaO added 29 commits November 1, 2026 19:55
…borders are opaque and fill their sides: drawn under them, it showed at their antialiased edges at any scale but 2x (Menu_File_Project's separators darker at 1.5x)
…ine and placed 2/3 of the rounded ascent below the text's top less half the unrounded thickness, which fits 450 cases in six fonts; References_Detail's shot draws its SVG again
…ge 156.0.4314.58 starts itself again and exits, so Puppeteer reported a failed launch and left the browser running; a line-through page, and the baseline recorded under that Edge
…e's SVG row zooms on that place in all three, at the picture's device pixels (the SVG rasterised there, as judged), 2 to 16 times, with each one's colour at the centre
…its before the ellipsis, measured in the page, then the ellipsis in the block's style (IDE-FeatureMap's DIAGNOSTICS messages were drawn whole and clipped); a bundle without text-overflow asks a retake only where a line is clipped (18 of 480); Screenshot review: Retake what failed on a replay's row too
… turn, so the server answers while a replay reports several a second (it held every request up), and a page fetches itself once in 400 ms while updates keep coming (put off by each, it never did)
…js's table as the working tree has it, with why one has no SVG from the newest verdict of this or an archived session, a replay of those with a bundle, and a plain page for a picture no run reported; shoot_docs.mjs --list prints the table, whose program-window shots now say window: true
…ound the box, its rounded corners moved out with it (the form designer's dashed control outlines were solid squares; 133 of 140 SVGs closer to their PNG), and bakes nothing for a filter of opacity() alone (the designer's padlock was wrapped in an empty filter and not drawn)
… outside the DOM: the page gives the range and SelectedItem, blended as Color::BlendWithWhite does (rgba(0, 65, 198, 0.8), the PNG's rgb(51, 103, 209) over white); Variables_Edit, Designer_AddName and Rename_Box to 0% strongly off on a retake
…string (no control was ever drawn disabled), draws a disabled checkbox or radio button translucent as Edge does, fitted by bench/checkable.html over two grounds (0.556% of its pixels off to 0.036%), and a checked one in #0075ff
…riangle as the shape Chromium paints, sized from the font's ascent (RelativeSymbolMarkerRect), not as its glyph: Help_Hover's bullets were half size; bench/list-marker.html 0.195% of its pixels off to 0.001%, and a replay updates 11 SVGs, all closer
…user-agent shadow tree the snapshot leaves out: the capture reads its box, opacity and colour scheme through DevTools into the bundle (searchButtons; an older bundle is a miss), and the X is fitted to Edge's picture, blue in a light scheme, white in a dark one; bench/search.html 0.034% of its pixels off, none strongly
…um's default radius, 2.85 px at its path (FOCUS_RING_RADIUS, fitted to Edge over borders, outline widths and offsets), where it drew it square: Help_Search's focused field; bench/outline.html 0.078% of its pixels off to 0.033%, none strongly
…attached by setAutoAttach was prepared from its event, unawaited, so under ten IDEs checkDefaults reloaded it before its script was added (debugging-2 on BETA 1033); a page that fails to prepare is named in the error
…er than the content box, within the padding box, as Chromium shows it over the padding: ObjectView_Search's field cut the bottom of Util; bench/textfield.html has three such fields (failed at 0.016% strongly off, now 0.001%)
…count as done in its progress, with how many beside the count, are no longer in progress while it runs, and have an overview group of their own, Needs a retake, before Failed (run 19's 33 went under Unchanged)
… reload, since a run of ten IDEs still reloaded sample-3's page unhooked with every page prepared, and an error now says the page's address and state, the last check's error, the check's steps and the hook's trace, each timed
…he later first, as CSS falls back from a file with no glyph to an earlier rule: the IDE declares codicon twice and draws Menu_Help's cup from its own file, not Monaco's; bench/webfont-twice.html 0.276% strongly off to 0%
…tions were read as a miss, not a field with nothing selected: replay drew Variables_Edit's old bundle without its selected 360 and accepted it at 0.248% strongly off; 62 of the cache's 481 pictures now need a retake
…it drew is the file's to the byte (bundleFollowsSvg, asked by shoot_docs.mjs and the review tool's applier): the cache keeps drawing the file's SVG and naming its PNG, and an old bundle no longer leaves the picture needing a retake after every replay
…or reloads it: attach takes the target listed as main.htm while its navigation is still pending, and reloading its about:blank cancelled the navigation, which left settings-webview2's page blank in a --jobs 16 retake on BETA 1033
…e cached bundle cannot draw the picture again (staleBundle, svgFollowsPng's stale), since its SVG is what a replay would write and cannot; BUNDLE_VERSION 3, as 4e05975 changed which web font rules a bundle keeps, and the selection miss of 26175d1 goes with version 2
…ID (Lane's projectId), in place of the lane's for its slot, and Settings_Close compares its Project ID box again: left out as unsteady, it kept the PNG's old id while a later run wrote the light SVG with its own
…page (releases/tag/beta-x-<build>), not the newest release; scrolledTo accepts an element below its place once the page is at its end, and RELEASE_WIDTH is 949 so the list stays 891 px wide
… of its clip box, not only one that spills out of it: the toolbox's icons, 3 px rounded, were drawn square (18 SVGs closer to their PNGs, none further; 278 more get a clip that changes no pixel)
…(the IDE sets #4774a4 on every checkbox), its mark white or rgb(59, 59, 59) by a 3:1 contrast with white, fitted in Edge; accent-color is a missable style, so only the 31 bundles that draw such a control need a retake
….08 wide), fitted in Edge at 13, 16 and 20 px, and reads a transformed element's unsnapped box, which drew the IDE options' scaled checkboxes 0.2 px off (05306a72 0.136% off to 0.013%; 45 SVGs closer, 3 slightly further in faint pixels only)
…the rounded ring in each side's wedge, cut along the corner diagonals, where it dropped the radius (the Import from file... button; 156 SVGs closer to their PNGs, 3 further by 0.001% in faint pixels)
… as frozen copies in a frame of the captured page (shot-freeze.mjs), the pane's at its 70% zoom, so that both get SVGs; svgshot draws a zoomed frame's viewport scrollbars and skips scrollbar rules in an @media or @supports that does not hold; the help window's WebView2 takes TB_DOCS_HELP_WINDOW_ARGS, and shoot_docs passes --force-device-scale-factor=1
@KubaO
KubaO merged commit 2846368 into twinbasic:main Nov 2, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant