Files
LlamaCasty/HANDOFF.md
T

63 lines
3.8 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
`main` — clean, 0 warnings.
## What shipped this session
1. **TASK 10 — Polar billing + Velopack auto-updates (steps 1–7)**
2. **TRAX meter double-attenuation fix**
3. **LAN infrastructure documented** — all servers in `ai.md` + `CREDENTIALS.md`
4. **llamavault NFS/SMB diagnosis**
5. **Control Surface UX** — all 10 phases complete (StagedScene/LiveScene, thumbnails, edit gating, transitions, brand rename)
6. **Sliding pill toggle** — green ON (#22c55e) / red OFF (#ef4444), replaces checkbox
7. **Backdrop → Background** — full C# rename, SQL column rename with migration, asset files renamed, `Source.IsBackground` `new` → `override` fix, legacy "Backdrop" display name migration
8. **Geometry mismatch error** — red text when custom background aspect ratio >5% off 16:9
9. **Per-scene background properties** — `UseDefaultBackground` + `CustomBackgroundPath` on `SceneElement` (superclass), persisted per-source via `BackgroundPath_{sourceId}` / `BackgroundUseDefault_{sourceId}` in Settings table
10. **All five scenes have backgrounds** — `SceneCatalog.HasBackground` returns `true` for all canonical scenes. `EnforceBackgroundPolicy` no longer strips backgrounds from non-Live scenes.
11. **Pill toggle label** — "Use default background:" TextBlock before toggle
12. **Pill toggle wiring** — `SelectedElement.PropertyChanged` subscription triggers `UpdateBackgroundImage` + `RefreshSnapshotsAsync` + `ScheduleSave` on `UseDefaultBackground` change
## Background layer rules
- Every scene has a Background layer at position 0 — undeletable (trash icon hidden, context menu "Remove Layer" hidden, `RemoveElement` returns early)
- `IsBackground` is derived from `SourceType.Background` via `Source.Type` setter — impossible to forget
- All five scenes have default images stored in Asset BLOBs in SQLite
- First run: pill ON for all five, shipped defaults load
- Toggle OFF → browse for custom file, FQFN stored
- On reload: try to load custom file; if missing, fall back to default asset
- `EnsureDefaultBackground` re-seeds missing backgrounds on scene switch (covers Starting, BRB, Chat, Ending; Live covered by seed methods)
## Current state
- **0 warnings, 0 errors**
- **210/211 tests pass** (1 pre-existing AudioPipeline gain-math failure)
- Deleted backgrounds re-seed automatically via `EnsureDefaultBackground`
## Build
```bash
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 | `70e037cd-9bcb-414e-8b26-c82c1d268f65` |
| 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-` |
## Next steps
1. **Visual testing** — run on Windows display, verify backgrounds show for all 5 scenes
2. **Thumbnail drag-reorder** — reorder scenes via drag on thumbnail strip
3. **Real snapshot generation** — replace placeholder colors with compositor-rendered thumbnails
4. **Transition dropdown UI** — add XAML control to pick transition type + duration
## v1 vision
> A streaming tool that's intuitive and ready to go out-the-gate with nothing held back.
> Minimal configuration — they're ready to go live or record. Eliminate the OBS pain-point completely.