Files
LlamaCasty/HANDOFF.md
T
gramps 14d3ed4924 docs: rewrite HANDOFF — Phase 1 (MainViewModel split) complete
Session-end state: all 11 partials landed, core 1,890 -> 758 lines. Refactor
commits 6-11 + tags are local-only pending a milestone push; Phase 2
(MainWindow.xaml -> UserControls) queued. Grep-verified per-partial using lists
recorded so no future session re-derives them.
2026-08-30 08:52:37 -07:00

88 lines
5.0 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**.
Commits `46978b8` (AGENTS push policy), `fc33022` (HANDOFF), and refactor
commits `0–5` through `e286719` are **pushed** (incl. `refactor-commit-0..5`).
Refactor commits **6–11 are LOCAL ONLY** (policy 2026-08-30: no per-commit
push; `git push --tags` only at a user-agreed milestone / "push it"):
| Commit | Hash | Tag | Partial | Lines |
|--------|------|-----|---------|-------|
| 6 Audio | `c1126a5` | `refactor-commit-6` | `MainViewModel.Audio.cs` | 408 |
| 7 Trax | `535a501` | `refactor-commit-7` | `MainViewModel.Trax.cs` | 132 |
| 8 Socials | `c41ff7f` | `refactor-commit-8` | `MainViewModel.Socials.cs` | 161 |
| 9 Streaming | `e1006a0` | `refactor-commit-9` | `MainViewModel.Streaming.cs` | 787 |
| 10 Chat | `3b77a13` | `refactor-commit-10` | `MainViewModel.Chat.cs` | 194 |
| 11 Overlays | `1efde5a` | `refactor-commit-11` | `MainViewModel.Overlays.cs` | 194 |
Nightly summary: **Phase 1 complete.** The plan was 11 partials + scaffold;
all live in `ViewModels/`. Core `MainViewModel.cs` shrank 1,890 → **758
lines**. Every change: clean build (0 warnings), `scripts/verify.sh` (246
passed + 2 known failures only), `scripts/scope-check.sh` with explicit file
args, `ViewModels/index.md` updated in the SAME commit, tagged
`refactor-commit-N`, no per-commit push.
## What's In Flight
Nothing code-in-flight — working tree clean, Phase 1 done.
**Next (queued, not started): Phase 2 — split `MainWindow.xaml` (1,681 lines)
into UserControls.** Same rules: one work unit per control, docs in the same
commit, verify + scope-check, commit locally, `git push` only on user go.
**Push pending:** refactor commits 6–11 + their tags are local. The Session-1
push checkpoint was never reached because the user directive was to run the
series to completion; Phase 1 completion is the natural milestone to push on
explicit user confirmation.
## Landmines
- **Pre-existing test failures (do not chase):**
`AudioPipelineTests.Mix_HonorsProviderGains_AndGameMute_KillsTheLoopback` +
`RoundClipInteractionTests.Round_Clip_Corner_Is_Grabbable_And_Shape_Is_Circle`.
- **Tests occasionally abort early (236/237)** — known flake, accepted by `verify.sh`.
- **App running locks `ytLive.exe`** → build fails MSB3027. Kill PID before building.
- **Implicit usings are SDK-default but partials must still carry their own
domain usings** (they do not inherit core's): `ICommand`/`ObservableCollection`/
`WriteableBitmap`/`DispatcherTimer` etc. are NOT implicit. Grep-verified usings:
- Audio: Input, Media, Threading, `NAudio.CoreAudioApi`, `ytLive`, Helpers, Models, Services, Services.Audio
- Trax: IO, Media, `Microsoft.Win32`, Helpers, Models, Services.Audio
- Socials: Windows, Input, Media, `ytLive`, Helpers, Models, Services, Services.Compositor
- Streaming: ObjectModel, IO, Windows, Input, Threading, `Microsoft.Win32`, Helpers, Models, Services, Services.Encoder
- Chat: ObjectModel, Media, Media.Imaging, Threading, Helpers, Models, Services
- Overlays: Diagnostics, IO, Input, Helpers
- **Pre-commit gate:** `scripts/verify.sh` (0-warning build + full tests) and
`scripts/scope-check.sh "file1" …` — scope-check REQUIRES explicit file args.
- Build from WSL with the Windows dotnet host only (see `AGENTS.md`).
## Todo state
- MainViewModel refactor: **Phase 1 complete (11/11 partials + scaffold).**
`ViewModels/index.md` has a per-partial table row (code↔commit map in the
tracker section). Core row now describes only what remains (ctor wiring,
lifecycle, source commands, WebView2 hosting, frame-pump seam,
`SelectedElement`, `BrandFlash*`, `BuildCompositorOptions`/`ResolveOutputFrame`).
- TASK 3: 27/30 (preview compositor 16, text source 17, alerts 20 still open).
- TASK 4: ✅ shipped. TASK 9: items 1–3 shipped; 4–7 open. TASK 10: steps 1–7; Velopack pending.
- TASK 18: shipped, creator verification pending. TASK 19/23, 20, 21-A: shipped.
- TASK 22 (audio sync offset): not started — required for v1.
- Monitoring: cross-partial private access is the point of partial classes —
no moved member re-declared anywhere; moved setters reference other partials
purely by name.
## Session summary (2026-08-30)
- Ran the MainViewModel split to completion under the standing directive
("continue until you can continue no longer" — no interruption prompts).
- Commits 9 (Streaming), 10 (Chat), 11 (Overlays) landed locally, each ~8:40
back-to-back: cut → 0-warning build → verify (246 pass + 2 known) →
scope-check → index.md in-commit → `git tag refactor-commit-N`. No push.
- Streaming was the hardest cut (interleaved props, master-frame consts,
session timer, health pipeline, record rename-on-stop); Chat and Overlays
were clean contiguous cuts. One build fix each: Streaming needed
`ObjectModel`/`Input`, Chat needed `Media.Imaging` for `WriteableBitmap`.
- Docs kept honest throughout: `index.md` rows for Streaming/Chat/Overlays,
About-hub row re-pointed to the Overlays partial, core row trimmed each time.