Files
LlamaCasty/HANDOFF.md
T
gramps 1f4624c636 docs: rewrite HANDOFF for Phase 2 completion (MainWindow.xaml → 6 controls)
Working tree clean. Phase 1 (pushed) + Phase 2 (local-only, commits 12-18 with
tags) both complete. Push checkpoint reached: next step is 'git push origin main
&& git push --tags' on explicit user approval. Landmines updated with the XAML
extraction gotchas (control xmlns, name-looked-up host stubs, window-resources
converter rule).
2026-08-30 21:16:50 -07:00

100 lines
5.5 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**.
Both split phases are now complete. Phase 1 (view-model partials) is pushed;
Phase 2 (MainWindow.xaml → UserControls) is complete but **local-only**.
**Pushed** (reached `origin/main` == `14d3ed4`, incl. tags): Phase 1 commit `0`
and refactor commits `1..11` (`refactor-commit-0..11`), plus policy/HANDOFF.
**LOCAL ONLY (Phase 2 — 12, 13, 14, 15, 16, 17, 18)** — policy 2026-08-30: no
per-commit push; `git push` only at a user-agreed milestone / "push it".
**Push pending on explicit user approval:**
| Commit | Hash | Tag | Control | From Loc |
|--------|------|-----|---------|----------|
| 12 | `bc23b64` | `refactor-commit-12` | `Controls/BottomBar` | footer |
| 13 | `6914252` | `refactor-commit-13` | `Controls/HealthBanner` | row 1 banner |
| 14 | `90f5ad5` | `refactor-commit-14` | `Controls/TopBar` | row 0 top bar |
| 15 | `c5e3466` | `refactor-commit-15` | `Controls/PreviewPane` | center preview |
| 16 | `73397cf` | `refactor-commit-16` | `Controls/SceneThumbnailStrip` | row 0 strip |
| 17 | `c9fd1bd` | `refactor-commit-17` | `Controls/LeftPanel` | row 1 col 0 |
| 18 | `544208e` | `refactor-commit-18` | `Controls/OverlayHost` | overlay dialogs |
## What's In Flight
Nothing code-in-flight — working tree clean, **Phase 2 complete**.
**Phase 2 result:** `MainWindow.xaml` carved 1,681 → **123 lines** (a shell over
6 UserControls under `Controls/`, namespace `ytLive.Controls`). Every change:
0-warning build, `scripts/verify.sh` (246 pass + 2 known only), explicit-file
`scripts/scope-check.sh`, `ViewModels/index.md` in the SAME commit, tagged
`refactor-commit-N`, no per-commit push.
**Next:**
- If user says "push": `git push origin main && git push --tags` (7 commits 12-18
+ their tags).
- Then optional Phase 3 if queued. Nothing is queued beyond Phase 2.
**Pending bus:** `ViewModels/index.md` Phase 2 tracker has rows 12–18 (closed);
Phase 1 tracker closed. `Controls/` has `index.md`-style facts only if needed.
## 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.
- **WinForm crash from `Window_PreviewMouseLeftButtonDown`** — handled in-side the
preview/left panel; don't add handlers that deref `OriginalSource` unguarded.
- **Controls cannot see `Window.Resources`** (converter rule, Commit 13): any
StaticResource the window once supplied must live at app level in
`Themes/Controls.xaml`. The 7 converters were promoted there.
- **Some control XAML needs its own `xmlns:models` / `xmlns:Helpers`** — a moved
block lost its namespace when it left MainWindow's root (LeftPanel hit this,
MC2000 "key null"). Always add the model/helper xmlns on each control root.
- **Name-looked-up host stubs must stay in the window:** `WebViewHostPanel`
(ctor `InitWebView2(WebViewHostPanel)`) and `ToastArea`
(`NotificationService.InArea("ToastArea")`) are resolved by name from the
window — keep them as window-root children, don't bury them in a control.
OverlayHost deliberately left them in place (Commit 18) for this reason.
- **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)**, pushed.
- MainWindow.xaml refactor: **Phase 2 complete (6/6 controls)**, local-only.
- 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.
## Session summary (2026-08-30)
- Ran the **MainWindow.xaml split to completion** under the standing "continue
without stopping" directive — no interruption prompts, no `question` tool.
- Commits 12–18 landed locally, each: cut → 0-warning build → verify (246 pass +
2 known) → scope-check → index.md in-commit → `git tag refactor-commit-N`. No push.
- **Commit 15 (PreviewPane** the hardest: 1920×1080 canvas + drag/select/resize/
hit-test, webcam menu handlers, social glow, audio meters. A dropped outer
`Border` (background/glow/margin) was caught and restored same-commit.
- **Commit 17 (LeftPanel)** the biggest: property editors + chat autoscroll
(moved to self-subscribe on `Loaded`), drag-to-reorder, snapshot revert/accept
family; window routes via `_leftPanel.IsClickInside` and
`_leftPanel.OnSelectionChanged(vm)`.
- **Commit 18 (OverlayHost)** the scope-decision: moved only the three dialogs;
kept `WebViewHostPanel` + `ToastArea` as window-root stubs because their
name-based lookups (WebView2 init, toast `InArea`) would break if buried in a
control — a spin-guard decision, not a guess.
- Two XAML extraction gotchas recorded: (a) a moved block losing its `xmlns`
→ MC2000 "key null" (Line n col m), fixed by adding `xmlns:models` on the
control root; (b) re-deriving line numbers after each edit before `sed`/awk
deletion ranges (the edit tool shifts numbers).
- Push checkpoint reached; awaiting explicit "push" for commits 12–18 + tags.