From 2e60ca3b2c7a1a5687cde3c410d8bcc78b8ba92b Mon Sep 17 00:00:00 2001 From: gramps Date: Fri, 28 Aug 2026 11:29:38 -0700 Subject: [PATCH] =?UTF-8?q?Restore=20MyMistakes.md=20to=20tracking=20?= =?UTF-8?q?=E2=80=94=20committed=20locally,=20never=20pushed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 --- MyMistakes.md | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 MyMistakes.md diff --git a/.gitignore b/.gitignore index 83e1861..397d2fc 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,3 @@ Helpers/OAuthCredentials.cs MONETIZATION.md MARCOM.md CREDENTIALS.md - -# Per-task failure log (local working file, not version-controlled) -MyMistakes.md diff --git a/MyMistakes.md b/MyMistakes.md new file mode 100644 index 0000000..b500a8c --- /dev/null +++ b/MyMistakes.md @@ -0,0 +1,36 @@ +# 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 (`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. \ No newline at end of file