b862a0fb04
- 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.
44 lines
3.3 KiB
Markdown
44 lines
3.3 KiB
Markdown
# MyMistakes.md
|
||
|
||
> One task at a time. Updated before every commit touching that task: current iteration +
|
||
> why the last one failed. On task complete, committed AND pushed → truncate to this stub.
|
||
> A new task does NOT seed this file until its first failure.
|
||
|
||
## Task (active — committed `582d1f4`, NOT pushed, awaiting creator verification)
|
||
Stream widget bounding box: hug the widget on all four sides, pinned to canvas (0,0).
|
||
|
||
## Iterations that failed
|
||
1. **e917c41 — fixed 1920×1080 viewport + `Stretch="Uniform"` + startup registration.**
|
||
Failed: `Uniform` letterboxed the 16:9 canvas into arbitrary‑sized boxes → asymmetric dead
|
||
padding read as a "gap". Lesson: Fill the box with the cropped frame, never Uniform.
|
||
2. **9d4103c — per‑document CSS reset (`html/body` width/height 100%) + (0,0) anchor.**
|
||
Failed ("enlarged the gap"): forcing dimensions overrode the widget's own layout and expanded
|
||
the dead space. Lesson: inject only `overflow:hidden` + transparent background — never set sizes.
|
||
3. **8d793af — viewport == element‑box size + `Stretch="Fill"`.**
|
||
Failed (janky / truncating / scrollbars): hosting at the box size clips full‑bleed widgets to
|
||
their upper‑left chunk, and tracking the box reflows the page on drag. Lesson: render at a
|
||
fixed canvas size, never track the box.
|
||
4. **f39ebd9 — crop capture to `scrollWidth/scrollHeight` bounds + (0,0) + Fill.**
|
||
Partially passed (panel fixes 1a/1b/4 confirmed) but the box stayed loose; the apparent
|
||
"tight right/bottom" was just the small‑viewport clip edge. **ROOT CAUSE: the crop never ran.**
|
||
The script returned `JSON.stringify(...)` (a string); `ExecuteScriptAsync` JSON‑encodes every
|
||
result, so the JSON was double‑encoded → `JsonDocument.Parse` got a string node →
|
||
`GetProperty` threw → try/catch swallowed → bounds unset → no crop. Lesson: return a real JS
|
||
object, never a stringified one. Also: scroll extents ≠ widget rect (they include page margins).
|
||
5. **70fe2b8 — fixed canvas‑size viewport (1920×1080) + crop + Fill.**
|
||
Image render/resize became solid (creator confirmed) but the box still gapped right/bottom and
|
||
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 (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. |