Files
LlamaCasty/HANDOFF.md
T

4.0 KiB

HANDOFF — Session State

Branch

main — dirty (2 files, uncommitted), HEAD 46da995. Not pushed.

Uncommitted work (this session): IsBackground load-time derivation fix

The user-reported bug "Background properties show for only Starting and Live" is FIXED:

  1. Root cause confirmed: Source.Type's setter derives IsBackground (Type == Background), but LayoutStore.Load()'s object initializer assigned the DB column afterward — rows saved before b74f15f carry IsBackground=0 for Type='Background' and stayed false after load, so the properties panel (SelectedElement.IsBackground) stayed hidden in BRB/Chat/Ending.
  2. Fix (Services/LayoutStore.cs ~601): hoist the Type parse, then IsBackground = type == SourceType.Background || <column>. The OR keeps the persisted bit for legacy DisplayCapture backdrops (column=1 must survive so the live-capture layer stays flagged). First save after load self-heals the columns.
  3. Test (this branch's ONE integration test): LayoutStorePersistenceTests.Legacy_IsBackground_Zero_Rows_Derive_From_Type_On_Load — saves a BRB scene holding DisplayCapture + Background + Image, zeroes the legacy columns via raw SQL, reloads, asserts Background→true / DisplayCapture→true / Image→false.
  4. Build 0 warnings; 212 total, 209 pass (3 pre-existing failures, below).

⚠️ Landmines

  • User verdict (2026-08-23): "The AI wrote fucked up code after repeatedly and intentionally misunderstanding instructions." This extends the ai.md 2026-08-22 audit flag — trust nothing from those sessions without manual verification. User switched models.
  • Pre-existing test failures are THREE, not one (handoff correction — verified by stashing and running clean HEAD):
    1. AudioPipelineTests.Mix_HonorsProviderGains_AndGameMute_KillsTheLoopback (gain-math)
    2. SourceNamingTests.Duplicate_Sources_Get_Next_Free_Numbered_Name — asserts StagedScene names == ["Text","Text2","Text3"], but StagedScene now carries a seeded "Game Capture" element (d2114c7 made all five scenes background-enabled); the test must filter the background out.
    3. SceneCatalogTests.EnforceBackgroundPolicy_Sets_Flag_For_All_Scenes — calls EnsureBackground on scenes with HasBackground=false; that returns null by design, so it asserts against elements never inserted. All three are fallout of the audit-flagged sessions' background-policy churn. NOT fixed here (Good Dog Rule — this branch carries its one test only).
  • Real-MainWindow tests MUST set LayoutPathOverride (see ai.md) — DB pollution wiped real data once.

Next steps

  1. Commit this fix (code + docs, one commit).
  2. Fix the two stale background tests (tiny, separate commit each or together — they are unit-level repairs, not features).
  3. Visual test on Windows display: pill sizing/alignment, sub-header hierarchy, Background properties panel in all five scenes (BRB/Chat/Ending should show it again).
  4. Then: thumbnail drag-reorder → real compositor snapshots → transition dropdown UI (per previous plan).

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.