Web source: revert crop measurement to f39ebd9 scrollWidth/Height (nailed right/bottom) — canvas-size render untouched

- ContentBoundsScript back to scrollWidth/scrollHeight extents, kept as a real JS object
  (the JSON.stringify double-encode bug that silently disabled the crop stays fixed).
- Crop again from (0,0), no X/Y offset. The union-of-elements approach (582d1f4) created an
  all-sides gap by including invisible full-canvas wrappers; revert to the proven code.
This commit is contained in:
2026-08-28 11:35:30 -07:00
parent 2e60ca3b2c
commit b862a0fb04
2 changed files with 25 additions and 41 deletions
+12 -4
View File
@@ -30,7 +30,15 @@ Stream widget bounding box: hug the widget on all four sides, pinned to canvas (
wasn't 0,0. Same silent JSON bug — the crop still never executed — and the measure was scroll
extents regardless. Lesson: verify declared mechanics actually execute; assume nothing ran.
## Current iteration (`582d1f4`)
Script returns a real object: the union of every visible `body *` `getBoundingClientRect` (the
widget's true rect including its top‑left offset). `CaptureFrame` crops AT that offset; Fill maps
the frame flush under the box. Committed, not pushed, visual verification pending.
## Current iteration (web bounding box — committed, NOT pushed, verification pending)
- Render stays the confirmed-solid 1920×1080 canvas-size viewport + `Stretch="Fill"` (UNTOUCHED).
- Crop BEHAVIOR restored to f39ebd9 exactly: capture cropped from (0,0) to
`scrollWidth/scrollHeight` extents — the code that nailed right/bottom. Real-object return
keeps the crop actually executing (past cause: JSON.stringify double-encode silently disabled it).
## Iteration that just failed (`582d1f4` — union of every `body *` element rect)
Gap moved to ALL sides. The union includes invisible full-canvas layout wrappers, so the crop rect
came out larger than the visible widget; the offset crop (+ Rewatched fills from a subset of the
canvas. Over-engineering: the fix that already worked was f39ebd9's simple scroll-extents crop.
Creator's instruction: go back to that code. DONE — do not re-introduce element-union measuring.
Lesson: when a prior iteration is declared good, REVERT TO IT; do not build a cleverer replacement.