55 lines
3.6 KiB
Markdown
55 lines
3.6 KiB
Markdown
# HANDOFF — 2026-10-09 (TASK 51 webcam background Remove + Blur — BUILT)
|
||
|
||
## Branch
|
||
- main (no feature branch). Pushed through `f8dd107`; everything after is local, **not pushed**
|
||
(push at the creator's call).
|
||
|
||
## Dirty files (NOT mine — do NOT commit)
|
||
- The in-flight "pinned chat" work unit: `Models/YouTube.cs`, `ViewModels/MainViewModel.Chat.cs`,
|
||
untracked `Helpers/RelayCommandGeneric.cs`, and **its hunks in `Controls/LeftPanel.xaml`**
|
||
(lines ~599–610, the chat area). TASK 51 slice 5 edited the SAME file in a different region (the
|
||
webcam properties, ~line 287); only the TASK 51 hunk was staged (`git apply --cached` of that hunk
|
||
alone) — the pinned-chat hunks are still unstaged and untouched.
|
||
- The creator's untracked logo art in `Assets/` (`llamacasty text.*`, `llamacasty-text-nobg*.png`,
|
||
`thin logo wordmark.png`).
|
||
|
||
## What just happened — TASK 51, all five slices
|
||
1. **Engine** — Google's MediaPipe Selfie Segmenter (landscape, Apache-2.0) converted to ONNX by
|
||
`tools/selfie-seg/` and verified vs MediaPipe's own runtime; embedded resource; onnxruntime CPU.
|
||
2. **Blur** — background at ¼ res, 3 box passes, mask-blended; Remove gets edge feather.
|
||
3. **Config** — `WebcamSceneConfig.BackgroundEffect` + `BackgroundStrength`, persisted (additive cols).
|
||
4. **Hookup** — `CameraManager` renders per-scene effect **variants** (one segmentation per raw frame
|
||
on a latest-frame-drop worker; raw path untouched); VM `SyncWebcamEffects()` declares/adopts them.
|
||
Synthetic 720p Debug: segment 1.6 ms, Remove 3.3 ms, Blur 17.5 ms.
|
||
5. **UI** — Background section in the webcam's Layers properties: Remove / Blur `PillToggle`s,
|
||
radio-exclusive, + Strength slider (visible while an effect is on).
|
||
Also this session: 64-bit requirement (`PlatformTarget=x64`), GPL-3.0-or-later licensing, README
|
||
rewrite, TASK 55 (disk hygiene) + TASK 56 (secret scan before going public) queued.
|
||
|
||
## Tests
|
||
- Full suite **412 passed / 0 failed**, 0 build warnings. New: `BackgroundEffectEngineTests` (Remove,
|
||
Blur, bundled-model contract), `CameraManagerTests` (variant reaches compositor + preview, raw
|
||
stays raw), `LayoutStorePersistenceTests` (per-scene roundtrip + legacy migration),
|
||
`WebcamBackgroundPillTests` (radio semantics + XAML wiring).
|
||
- Known environment flakes (not regressions): `Mix_HonorsProviderGains…` (fails while system audio
|
||
plays), `RealMouseDrag…` (needs an idle desktop).
|
||
|
||
## Known issues / follow-ups
|
||
- **Creator's real-camera check (TASK 51):** toggle Remove/Blur on a webcam, watch edges/lighting,
|
||
and read `startup.log` → "background effects avg … ms/frame".
|
||
- `onnxruntime.dll` ~17 MB; TASK 48's MSIX publish must pin `-r win-x64` (x64-only already enforced).
|
||
- Still stale, not rewritten: ai.md "Windows packaging" (Store IAP / branding-flash paid delta) and
|
||
"Monetization" sections; MARCOM.md asset table (`llama-logo.png` doesn't exist).
|
||
- TASK 56: secret-scan the full history BEFORE the Gitea repo (`gramps/LlamaCasty`) goes public.
|
||
- Carried: "Use default background" toggle still not working (from 2026-10-07).
|
||
|
||
## Also shipped after TASK 51 (2026-10-09)
|
||
- **Brand flash OFF by default** (`MainViewModel.ShowBrandFlash = false`; feature kept).
|
||
- **Audio loudness:** `SpeechLeveler` auto-gain in the voice chain + honest mic meter (no +10 dB boost).
|
||
Creator's upload was −28.5 LUFS; the same audio through the new chain measures −17.9 LUFS.
|
||
- **Private broadcast close-out:** Enter keeps / Escape deletes (`KeepBroadcastDialog`,
|
||
`videos.delete`). Untested against the real API — first real private stream is the check.
|
||
|
||
## Next step
|
||
- Creator runs the app: webcam → Layers properties → Background → Remove / Blur + Strength.
|