docs: update HANDOFF + MyMistakes.md — take-21 web transparency fix landed

This commit is contained in:
2026-09-06 12:58:05 -07:00
parent e002847777
commit 5ca9778e23
2 changed files with 36 additions and 157 deletions
+15 -13
View File
@@ -15,20 +15,22 @@
## 🔬 Recipes registry
### ⚠ FAILED remedy (spin guard, 2nd strike) — web overlay composites dark over the webcam
### ⚠ SPIN GUARD TRIGGERED → RESOLVED (take-21) — web overlay composites dark over the webcam
(2026-09-05, takes 19-2/20 + user re-test) Attempt `0f441d8`: feed the compositor the FULL
transparent-background canvas instead of the alpha crop (crop = measure-only). User verdict:
**"didn't work at all — broke additional crap."** Reverted (`1295e0e`). I hypothesized the
alpha-crop→UniformToFill zoom; the fix changed that and the recording was still dark, so the
crop→zoom was NOT the mechanism. **Due to AGENTS.md's spin guard this is the second failed remedy —
NO third guess over the same code.** Before the next attempt: research externally how OBS/CEV keep
browser-source transparency in the *recorded* composite (cite URL), AND test the simplest falsifier
first — a blank transparent page with no widget content — to decide whether the dark band is the
widget's own page background (host pages that set their own bg defeat the injection script) rather
than the compositor. Do not re-derive; the seam candidates (CapturePreviewAsync PNG alpha through
FormatConvertedBitmap premultiplied/straight; preview-dispatcher vs pump-thread consumers) stay
unconfirmed and untouched until the research names one of them.
**Take-19 (`0f441d8`): FAILED.** Attempted to feed the compositor the FULL canvas instead of the
alpha crop. User verdict: "didn't work at all — broke additional crap." Reverted (`1295e0e`).
The crop→UniformToFill zoom insight was RIGHT, but the commit ALSO introduced `CanvasRing` (8-deep
full-canvas buffer ring) alongside the fix — the ring reuse poisoned the paste cache (array identity
collisions via the Epoch mechanism), causing additional breakage beyond the transparency issue.
**Take-21 (`e002847`): FIXED.** Root cause confirmed: `bccdb48` introduced `FindContentBounds`
alpha cropping; the CROP was fed to the compositor (`session.LatestFrame = VideoFrame(cropW, cropH,
outPixels)`). `UniformToFill` then zoomed the opaque crop content to cover the whole element rect,
covering whatever was beneath (webcam). Fix: keep the single `CanvasScratch` buffer (no ring), feed
the FULL `1920×1080` canvas to the compositor (`session.LatestFrame = VideoFrame(pixW, pixH,
pixels)`), use the alpha crop only for the preview `WriteableBitmap`. Epoch increments per frame so
array identity stays unique without the ring. The `0f441d8` insight was correct — the ring was the
"additional crap."
### Shrink / re-encode an image for the README (screenshots → small hero image)