Files
LlamaCasty/HANDOFF.md
T

63 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# HANDOFF — Session State
## Branch / Commit State
**`main`**, working tree is **CLEAN** — all changes committed and pushed.
No feature branches pre-1.0: all work lands on `main` per work unit.
**Latest commit:** `e286719` — Commit 5/12 of the MainViewModel refactor (Webcam partial, tag `refactor-commit-5`).
## What's In Flight
**MainViewModel partial split (Phase 1):** 5 of 12 refactor commits landed and pushed.
Tags `refactor-commit-0…5` = scaffold, Account, License, Scenes, Background, Webcam.
Latest head `e286719`. Working tree clean.
Remaining partials in order: `Audio` (Commit 6), `Trax` (7), `Socials` (8), `Streaming` (9),
`Chat` (10), `Overlays` (11). Each lands the same way: cut → build 0 warnings →
`./scripts/verify.sh` + `./scripts/scope-check.sh "file1" …` → commit titled
`refactor: split <Area> out of MainViewModel — Commit N/12 (tag refactor-commit-N)`
with the `ViewModels/index.md` progress update in the SAME commit → `git tag refactor-commit-N`
→ `git push && git push --tags`.
Known partial-usings list (grep-verified):
`Scenes` = ObjectModel+Specialized+ComponentModel+`ytLive`+Models+Services;
`Background` = ObjectModel+IO+Windows+Input+Media+Media.Imaging+Helpers+Models+Services;
`Webcam` = Windows+Input+Media.Imaging+`ytLive`+Models+Services.
`INotificationService.Info/Warning/Error/Success` are default interface methods → any
partial calling `_notifications.X` needs `using ytLive.Services;`.
## Landmines
- **TextBox.Mode=OneWay** is required for `RecordFolderDisplay` binding (get-only computed property).
- **Pre-existing test failures (do not chase):** `AudioPipelineTests.Mix_HonorsProviderGains…` +
`RoundClipInteractionTests.Round_Clip_Corner_Is_Grabbable…`.
- **App running locks `ytLive.exe`** → build fails MSB3027. Kill PID before building.
- **Test suite hangs** when running full vstest (WPF `RealAppHost` dispatcher deadlock); individual
tests pass in isolation. Use `dotnet test` on individual test classes, not the full suite DLL.
- **Pre-commit gate:** `./scripts/verify.sh` — clean build (0 warnings) + full tests + scope check.
## Todo state
- TASK 3 (Capture Pipeline): 27/30 items done. Open: preview compositor (16), text source (17), alerts (20). Window capture absorbed into Screen picker (done). Background removal excluded from this build.
- TASK 4 (RTMP Ingest): ✅ Shipped — all 7 items done (compositor, FFmpeg locator, encoder+RTMP, WASAPI audio, frame-pipeline, health stats, one-click go-live).
- TASK 9 (Stream Management): items 1–3 shipped (reusable stream, health monitoring). Items 4–7 open: live chat, error handling, visibility picker, full broadcast form.
- TASK 10 (Monetization): steps 1–7 shipped. Velopack auto-update pending.
- TASK 18: shipped. Remaining = running-app verification (creator).
- TASK 19/23 (Control Surface UX): ✅ Shipped — thumbnails, transitions (Cut/Fade/Move), edit mode, left panel two-state.
- TASK 20 (Hotkeys): ✅ Shipped — F1-F5 scenes, F6-F9 actions, config UI, global hotkeys, conflict detection, persistence.
- TASK 21 (Media source): Increment A shipped (model + persistence). Slices 4–12 open (decoder, FramePump wiring, compositor, loop/volume, UI, tests). Blocked on ffmpeg for integration test.
- TASK 22 (Audio sync offset): not started — required for v1.
- TASK 30: gear cleanup + record location + single Start + preview layout restructure — shipped across commits `6031a56` + `61b850f` + `455a409`.
- Monetization: deferred (creator rethinking price/subscription model).
- **File refactor (in progress — Commit 5/12 done):** MainViewModel.cs (3,900 lines) split into functional partials (Scenes, Background, Webcam ✔; Audio, Trax, Socials, Streaming, Chat, Overlays pending; Account, License ✔). One commit per partial, each a roll-back point (`refactor-commit-N` tags), `verify.sh` + `scope-check.sh` before each, docs in the same commit. MainWindow.xaml (1,681 lines) will be split into UserControls after Phase 1. Zero behavior change, tests stay green.
- Monitoring: partials must re-declare their own `using`s — core file's usings do NOT carry across partial files. Field-initializer order across parts is compiler-ordered but no moved field has interdependent initializers.
## Session summary (2026-08-30)
- Completed refactor Commits 3/12 (Scenes, `dcdfcb9`), 4/12 (Background, `db068ab`), 5/12 (Webcam, `e286719`) — each tagged `refactor-commit-N`, pushed with `--tags`, verified (0-warning clean build, only the 2 known test failures).
- Background partial took the full bucket: background model, screen capture machinery, display picker, preview fns, capture commands. Webcam partial took identity + per-scene configs + capture callbacks + size safeguards.
- Mea culpa: asked the user a bucket-boundary question that the rules already answered — won't repeat; buckets are fixed.
- Test-suite note: full `vstest` run aborted early once (236/237) with only the 2 known failures — accepted by `verify.sh` as a known flake.