Files
LlamaCasty/HANDOFF.md
T

4.5 KiB

HANDOFF — Session State

Branch

main @ HEAD — committed and pushed, working tree clean. No feature branches pre-1.0 (decided 2026-08-24): all work lands on main per work unit; every taskNN-* branch deleted (TASK 24/25/26+27 fast-forwarded into main; stale social-bar/webcam-validation removed too).

Shipped (this session, now all on main)

  • TASK 26 — webcam (+) menu gates on the app-wide identity (CanAddWebcam = staged != null && _webcam == null; XAML binding + tooltip; test WebcamMenuGateTests).
  • TASK 27 — YouTube Chat layer one-per-layout gate (CanAddYouTubeChat, AddSource refuses a second) + legacy label heal ("Chat" → "YouTube Chat" on LoadLayout; creator renames untouched; test ChatLayerGateTests). Creator's ask: "do the same thing with the YouTube chat layer" + make the Layers row match the (+) picklist.
  • TASK 19/23 status flip — code survey confirmed Control Surface UX fully shipped (thumbnail strip, two-state left panel, right panel gone, transitions, edit gating); map corrected.
  • TASK 20 step 1 — global hotkeys (Services/GlobalHotkeys.cs, MainViewModel.HandleHotkey, MainWindow.OnSourceInitialized wiring): F1-F5 canonical scenes, F6 start/end stream, F7 mic mute, F8 desktop mute, F9 TRAX. IHotkeyRegistrar seam + RegistrarOverride. Test GlobalHotkeyTests.WmHotkey_StagesScene_And_TogglesMic_And_RevokesOnClose. Hotkeys validated by creator.
  • ON-AIR sign (creator ask): new status light + "ON-AIR" right of REC in the top bar (OnAirBrush: gray offline / red public / green private); old left-of-REC hardcoded indicator removed. Test OnAirSignTests.OnAirBrush_Follows_Offline_Public_And_Private.
  • Suite: 227 total, 226 pass — only failure is the known pre-existing AudioPipelineTests.Mix_HonorsProviderGains_AndGameMute_KillsTheLoopback. Build 0 warnings. Docs shipped same-commit.
  • Visual pass on TASK 26/27 validated by creator (2026-08-24).

⚠️ Landmines

  • User verdict (2026-08-23): "The AI wrote fucked up code after repeatedly and intentionally misunderstanding instructions." Extends the ai.md 2026-08-22 audit flag — trust nothing from those sessions without manual verification.
  • Pre-existing test failure is ONE (AudioPipelineTests.Mix_HonorsProviderGains_AndGameMute_KillsTheLoopback) — not caused by these branches.
  • Real-MainWindow tests MUST set LayoutPathOverride (ai.md) — DB pollution wiped real data once.
  • WPF handle forcing: WindowInteropHelper.Handle pre-show returns Zero and does NOT raise SourceInitialized; use EnsureHandle() (does both). Cost a debug cycle in GlobalHotkeyTests.
  • Source.Type setter derives IsBackground (Models/Source.cs:40) — any Type change must re-set IsBackground after.
  • vstest quirk: only one --tests: param allowed; plain substrings work, alternation regexes silently match nothing.
  • Notification.Wpf gotchas (ai.md/TASKS.md): area routing by XAML Name; unknown AreaName silently drops; NeverExpires() = TimeSpan.MaxValue; ToHex() = #AARRGGBB.
  • Dead code flagged, not touched: ShowWebcamCommand / CanShowWebcamInStagedScene are wired in the VM but bound nowhere — audit item, separate branch if wanted.

Next steps

  1. Creator visual pass: ON-AIR sign states (gray offline → red on public live → green on private live).
  2. Continue TASK 20: config UI + schema persistence for bindings (then conflict detection).
  3. Queue after TASK 20: TASK 21 media source, TASK 22 audio sync offset, TASK 17 web source, TASK 18 local recording.
  4. Loose ends: dead ShowWebcamCommand, AudioPipelineTests failure, Velopack update URL.

Build

taskkill.exe /F /IM ytLive.exe  # if running
"/mnt/c/Program Files/dotnet/dotnet.exe" build "C:\Users\gramp\Documents\Code\projects\ytLive\ytLive.csproj"
"/mnt/c/Program Files/dotnet/dotnet.exe" vstest "C:\Users\gramp\Documents\Code\projects\ytLive\ytLive.Tests\bin\Debug\net8.0-windows10.0.19041.0\ytLive.Tests.dll"

Polar.sh resources

Resource ID
Org ID c05fb364-b967-4f6c-adf2-8a144e46d085
Product d105dfa1-497e-423b-8cd4-e0ee2e3abbc0
Price 7c1b6f70-cf8c-46df-9bc8-6703f9fa64d0
Benefit 80f66bc1-d5a3-44a1-b9ea-1709ae508535
Checkout URL https://buy.polar.sh/polar_cl_ueMy8AyAClO0o0yo19IroZwKTbD587gzUsjEW3bFapw
Validate endpoint POST https://api.polar.sh/v1/customer-portal/license-keys/validate
Key prefix LCYT-

v1 vision

A streaming tool so intuitive it needs no manual — go live or record in minutes, OBS-free.