docs: update HANDOFF + MyMistakes.md — take-23 stride fix landed, chat missing from recording, landmines refreshed

This commit is contained in:
2026-09-08 12:11:45 -07:00
parent f6802c7124
commit 5175c1c8c9
2 changed files with 37 additions and 30 deletions
+22 -11
View File
@@ -1,29 +1,40 @@
# HANDOFF — 2026-09-06
# HANDOFF — 2026-09-08
## Branch / Commit State
**`main` HEAD = `e002847`** — web transparency fix (take-21): feed full canvas to compositor.
**`main` HEAD = `f6802c7`** — take-23: stride-correct CropBounds Fill rendering.
```
f6802c7 fix(web): stride-correct CropBounds Fill rendering in compositor (take-23)
84aa70f docs: MyMistakes.md — take-22 full fix for widget scale/position + transparency
ed9d7c1 fix(web): CropBounds metadata + Fill-style scaling in compositor — transparent margins preserved, widget fills element rect (BROKEN — reverted)
5ca9778 docs: update HANDOFF + MyMistakes.md — take-21 web transparency fix landed
e002847 fix(web): feed full canvas to compositor — transparent margins reveal layers beneath (take-21)
70db344 perf(camera): MJPEG negotiation before frame reader — camera drives at its best rate
0f059ec docs: HANDOFF — #12 landed (element rasters), MJPEG next, web transparency spin-guarded
6d11e8b perf(compositor): reuse per-element rasters in-place — take-16 GC-churn fix
87509bc (origin/main) docs: restructure TASKS.md into a catalog — one file per task in TASKS/
87509bc (origin/main) docs: restructure TASKS.md into a catalog
```
**Pushed to origin: `87509bc`.** 4 unpushed commits after it.
**Pushed to origin: `87509bc`.** 7 unpushed commits after it.
**`today-slices` branch @ `ce87490`** — preserves 17-commit chain. Fallback recovery.
## Web Overlay — Current State
take-22 (`ed9d7c1`) BROKE the widget — the CropBounds stride was wrong (pixel index used `w = cbW` crop width instead of `src.Width` canvas stride, reading garbage from the full-canvas buffer). REVERTED by the take-23 revert of `ed9d7c1`.
take-23 (`f6802c7`) is the correct fix:
- `VideoFrame.CropBounds?: (X,Y,W,H)` — metadata on the frame
- `WebView2Manager` sets `CropBounds = (cropX, cropY, cropW, cropH)` on the LatestFrame
- `BlitContentRaw` detects CropBounds and uses Fill-style scaling (stretch to cover, no aspect preservation) using `src.Width` (canvas stride = 1920) for ALL pixel buffer indexing — not the crop width
## Resolved this session
- **Audio regression (TASK 26):** Non-event — external headset volume control was at minimum, not a code bug.
- **Webcam black square / web overlay transparency:** FIXED at `e002847`. Root cause: `bccdb48` introduced alpha cropping; the CROP was fed to the compositor, which `UniformToFill`-zoomed the opaque content to cover the entire element rect. Fix: feed the FULL `1920×1080` canvas to the compositor; transparent margins reveal layers beneath; the alpha crop (`outPixels`) is used only for the preview `WriteableBitmap`. `0f441d8` (take-19) had the right insight but introduced `CanvasRing` alongside the fix — the ring reuse caused additional breakage. Take-21 keeps the single `CanvasScratch` buffer (no ring), feeds full canvas, Epoch increments per frame.
- **Audio regression (TASK 26):** Non-event — external headset volume control was at minimum.
- **Web overlay scale/position + transparency:** take-23 at `f6802c7`. The stride fix was critical — take-22 used crop width (e.g., 800) instead of canvas stride (1920) in pixel indexing, reading garbage from the full-canvas buffer and destroying content.
## MyMistakes.md update needed
## Still open (needs your run + log)
The spin-guard entry for the web overlay needs updating with the take-21 resolution. See that file.
- **Chat overlay missing from recording:** Chat shows in preview but not in recorded output.
- **Audio/sync issues:** unspecified, no log yet.
- **Webcam/capture speed:** unspecified, no log yet.
## Landmines