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

5.5 KiB
Raw Permalink Blame History

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.