4.2 KiB
4.2 KiB
HANDOFF — 2026-10-09 (TASK 51 quality pass COMPLETE: jitter + blur-heavy both fixed)
Branch
- main (no feature branch). Pushed through
5685c5d(TRAX toggle); everything after is local, not pushed (push at the creator's call).
Dirty files — split by ownership
- This work unit (COMMIT these):
Services/BackgroundEffects/MaskSmoother.cs(new), the smoother wiring inServices/CameraManager.cs,ytLive.Tests/CameraManagerTests.cs(new integration test), and the same-commit memory updates (Services/index.md,ai.md,TASKS/task-51-webcam-bg-effects.md,TASKS.mdrow 51, and this file) — all ship in the SAME commit. - NOT mine — do NOT commit: the in-flight "pinned chat" work unit (
Models/YouTube.cs,ViewModels/MainViewModel.Chat.cs, untrackedHelpers/RelayCommandGeneric.cs, and its hunks inControls/LeftPanel.xaml— only the webcam-properties region is TASK 51; the pinned-chat hunks stayed unstaged/untouched), plus the creator's untrackedAssets/llamacasty*art. - ⚠️ Pre-commit:
scripts/verify.shrunsscripts/scope-check.shagainst ALL working-tree changes — the not-mine files WILL flag. Pass them to the script as declared-known (checksums unchanged since5685c5d) or let the script's output be reconciled before committing.
What just happened — two commits
- Jitter fix (
3057069) —MaskSmoother: per-session blend 0.75×new + 0.25×previous at the ONE worker (CameraManager.RunEffectWorker→session.Smoother.Smooth(TrySegment(source))). State onCameraSession, NOT the segmenter (shared app-wide, contract-pinned to raw output). Null resets history; first frame passes through; never aliases caller's array; ping-pong buffers (no per-frame LOH alloc). Weights: OBS obs-backgroundremoval 0.85 default, Jitsi 0.7/0.3 best (0.5/0.5 smears). TestTemporal_Smoothing_Damps_Segmentation_Jitter_Across_Frames: x=6 → first 255 / smoothed 58 / raw-unsmoothed 0. ⚠️ Gotcha: worker guards a re-queued identical frame reference — pump frame2 as a NEW instance. - Blur "heavy" fix (this commit) — quadratic radius:
BlurRadius(strength)= 1 + 5·s²,MaxBlurRadius12→6 small px (≈ 24 full px max). Default 0.5 = 2 small px (was 6 under the old linear curve) — ~3× lighter spread. Rationale: StreamFX defaults Box blur Size to 5, author stops downscaled blurs ~8px. TestBlur_default_strength_is_gentle_and_full_strength_is_strongpins the mapping and step-edge behaviour (reach 9px default vs 26px max). Point-source probes vanish below the 0.5 rounding (3 box passes dilute a spike) — use a step edge, not a spike, to measure blur.
Next step
- Creator re-runs the app: webcam → Layers properties → Background → Remove / Blur + Strength, and reports whether the jitter is gone and the blur feels right at the slider's default and full range.
Also still open
- Vertical-format regression (STALE, not fixed): 1080p60 vertical selection no longer shrinks the
capture border in the preview. Mechanism mapped (see prior summary): the crop Rectangle
Controls/PreviewPane.xaml:319-322bound toOutputRectX/Y/W/H+IsOutputCropped, driven byMainViewModel.Streaming.csApplyStreamQualityfromSelectedQuality(binding + ctor only,new("Vertical 1080p60", 60, 8.0, 1080, 1920)),DimRectsinMainViewModel.cs:91-94. Root cause unknown — paused. - Vertical recording file closed: the recording itself is 1080×1920 60fps correctly; the
"whitespace" was the app's preview UI, not the file. Audio loudness (
ebur128) for the private video was never run and the thread is closed unless the user reopens it. - Blur-heaviness = fixed (above). Yellow-border regression = stale thread.
- ⛔ Sudo password rotation pending (user; then update both password lines in
CREDENTIALS.md). - TASK 56 secret scan before
gramps/LlamaCastygoes public. TASK 55 disk hygiene queued.
Tests
- Full suite 416 passed / 1 known env flake at
5685c5d; the new smoothing test passes standalone (1 test run, Duration < 1 s after warm). 0 build warnings. Known environment flakes:Mix_HonorsProviderGains…(fails while system audio plays),RealMouseDrag…(needs an idle desktop).