User tested: 'didn't work at all, and broke additional crap.' Second failed remedy for
web-source-over-webcam dark composite -> AGENTS.md spin guard: no third guess; next attempt
requires external research (OBS/CEV browser-source transparency in recorded output, cited URL)
plus the blank-page falsifier. HANDOFF OPEN list updated: research-first step added, #11 noted
landed as d35823a.
This commit is contained in:
+40
-11
@@ -2,9 +2,10 @@
|
||||
|
||||
## Branch / Commit State
|
||||
|
||||
**`main` HEAD = `c46f3a1` (#9)** — tree identical to `fbc8562` (slice 8, single-loop pump). Working tree
|
||||
CLEAN. This is the user-confirmed **last working commit** — output recordings were tear-free here and
|
||||
time-lapse again (the 7fcb2ad-era pacing, expected pre-buffer-ring).
|
||||
**`main` HEAD = `1295e0e`** — a revert; see "REJECTED this session" below. **`#11` from the roll-forward
|
||||
landed as `d35823a`** (release counter in wordmark; capture/camera/web rings 4→8 + Epoch — three-loop
|
||||
hunks dropped per plan). User tested take-15 frame (~clean). Recording output since then: webcam
|
||||
"black square" regression under the web overlay is OPEN (details below).
|
||||
|
||||
**`today-slices` branch @ `ce87490` (#17)** — preserves ALL 17 commits of the 7fcb2ad→ce87490 chain
|
||||
(1 `716a77f` … 17 `ce87490`), including the two-loop producer, encoder staging fix, chat fix, e2e
|
||||
@@ -17,6 +18,32 @@ harness. Nothing is lost; never hard-reset away from it without preserving.
|
||||
this commit.
|
||||
- **`today-slices` @ `ce87490`** preserves the entire 17-commit chain — the fallback recovery point.
|
||||
|
||||
## REJECTED this session (2026-09-05) — web transparency fix FAILED, reverted
|
||||
|
||||
**`0f441d8` "composite consumes the FULL canvas" was wrong.** Theory: the alpha-crop fed to the
|
||||
compositor's UniformToFill zoomed opaque content over the whole element rect → black box. Fix: hand
|
||||
the compositor the full transparent-background canvas (8-deep ring + Epoch), keep the alpha crop for
|
||||
the preview/selection only. User tested: **"didn't work at all, and broke additional crap."** Reverted
|
||||
as `1295e0e`. Tree verified back at the #11 state; builds 0 warnings both projects.
|
||||
|
||||
Two hard facts the theory did NOT anticipate:
|
||||
1. An opaque dark band still covers the webcam region in the RECORDING (the "broke additional crap"
|
||||
may be the widget reappearing over the webcam in the preview/preview sizing — unconfirmed).
|
||||
2. The preview half looked fine while the recording half was dark, per the user, all along.
|
||||
|
||||
**SPIN GUARD TRIGGERED (AGENTS.md Working rules):** this is the second failed remedy for the same
|
||||
symptom (web sources composite dark/opaque over other layers in the recording). Third-guessing over
|
||||
the same code is forbidden. Next attempt MUST start with external research — how OBS / CEV /
|
||||
other overlay toolchains keep browser-source transparency in the *recorded* output, cited in the
|
||||
commit message AND MyMistakes.md before coding. Likely seams to revisit after that research:
|
||||
`CapturePreviewAsync` PNG alpha → `FormatConvertedBitmap` w/ `PixelFormats.Bgra32` (does the
|
||||
premultiplied/straight-alpha conversion drop alpha?), and the preview-vs-recording consumer
|
||||
difference (preview = WriteableBitmap on the dispatcher; recording = composite read on the pump
|
||||
thread) — but NO code until the research says what to do. Also: the user's very first observation —
|
||||
"webcam blacked out by the animated web resource layer" — may mean the widget's HOST page itself
|
||||
paints an opaque/dark background (injection script wouldn't fix a page that sets its own bg) — verify
|
||||
against a blank page, not an alert host, before blaming the compositor again.
|
||||
|
||||
## The commit list (for picking this up anytime)
|
||||
|
||||
Numbered oldest→newest (#0 = the working baseline the user picked: `7fcb2ad` "zero known failures era
|
||||
@@ -97,16 +124,18 @@ and apply cleanly.
|
||||
|
||||
## OPEN — next, in order
|
||||
|
||||
1. **#11 `6fd1d9c`** — tell user what it does (release counter; capture rings 4→8 + new camera/web
|
||||
rings), apply via cherry-pick with the two-loop-only FramePump hunk dropped; user tests; proceed or drop.
|
||||
2. **#12 `d1126dd`** — compositor raster reuse + MJPEG camera negotiation + stats formatting (FramePump
|
||||
0. **Webcam-black-square-under-web transparent: research FIRST.** Second failed remedy → spin guard.
|
||||
Externally research how OBS/CEV keep browser-source transparency in recorded output; cite the URL
|
||||
in the commit AND MyMistakes before any code (see REJECTED section above). User tests each attempt.
|
||||
Do NOT touch the compositor/web code until the research is done.
|
||||
1. **#12 `d1126dd`** — compositor raster reuse + MJPEG camera negotiation + stats formatting (FramePump
|
||||
hunk dropped).
|
||||
3. **#13 `e4621c1`**, **#14 `b4f6a92`** — docs.
|
||||
4. **#15 `7bf00a9`** — e2e smoothness bar (re-tune thresholds to single-loop measurements if needed).
|
||||
5. **#16 `1a808ae`** — chat empty-buffer composite fix + test.
|
||||
6. **#17 `ce87490`** — encoder staging snapshot (the genuine tear cure — applies on the single loop as
|
||||
2. **#13 `e4621c1`**, **#14 `b4f6a92`** — docs.
|
||||
3. **#15 `7bf00a9`** — e2e smoothness bar (re-tune thresholds to single-loop measurements if needed).
|
||||
4. **#16 `1a808ae`** — chat empty-buffer composite fix + test.
|
||||
5. **#17 `ce87490`** — encoder staging snapshot (the genuine tear cure — applies on the single loop as
|
||||
belt-and-suspenders).
|
||||
7. **Unit B (top bar + session logic)** — spec + settled decisions are in the old HANDOFF history on
|
||||
6. **Unit B (top bar + session logic)** — spec + settled decisions are in the old HANDOFF history on
|
||||
`today-slices`; don't re-ask.
|
||||
|
||||
## Landmines
|
||||
|
||||
@@ -15,6 +15,21 @@
|
||||
|
||||
## 🔬 Recipes registry
|
||||
|
||||
### ⚠ FAILED remedy (spin guard, 2nd strike) — 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.
|
||||
|
||||
### Shrink / re-encode an image for the README (screenshots → small hero image)
|
||||
|
||||
Worked out 2026-08-29 (the recipe was NEVER recorded the first time it was done, so
|
||||
|
||||
Reference in New Issue
Block a user