63 lines
4.1 KiB
Markdown
63 lines
4.1 KiB
Markdown
# HANDOFF — Session State
|
|
|
|
## Branch
|
|
`task26-webcam-menu-gate` @ working tree — **code + docs complete, NOT yet committed** (commit on your word). Parent: `task25-backgrounds` @ `7dd140a`, committed and pushed, clean.
|
|
|
|
## Shipped: TASK 26 — webcam (+) menu gates on the app-wide identity
|
|
|
|
Creator's visual pass of TASK 25 came back green except one item: the (+) menu's Webcam row wasn't
|
|
greyed out when a webcam was already deployed in another scene. Root cause: `CanAddWebcamToStagedScene`
|
|
only checked the staged scene's config; the truth is the `_webcam` singleton.
|
|
|
|
1. **Renamed + regated:** `CanAddWebcamToStagedScene` → **`CanAddWebcam`** =
|
|
`StagedScene != null && _webcam == null` (`MainViewModel.cs:308`). Raised at all five sites:
|
|
StagedScene setter, `ReacquireWebcam` (layout load), `OnElementsChanged`, `_webcam` create
|
|
(`AddWebcamToStagedSceneAsync`), last-config removal (`RemoveElement`).
|
|
2. **XAML:** the Webcam MenuItem's `IsEnabled` binding renamed to match; tooltip verbatim.
|
|
3. **Test (Good Dog Rule — ONE):** `WebcamMenuGateTests.CanAddWebcam_Gates_On_The_AppWide_Webcam_Identity`
|
|
— real window + temp DB seeded with a `Webcam` row + one config in Starting; asserts greyed while
|
|
Live is staged (the old gate's false positive), greyed while Starting staged, re-enabled after
|
|
`RemoveSourceCommand` drops the last config, and zero `Webcam` rows after save.
|
|
4. **Suite: 224 total, 223 pass.** The only failure is the known pre-existing
|
|
`AudioPipelineTests.Mix_HonorsProviderGains_AndGameMute_KillsTheLoopback` (unrelated).
|
|
Build 0 warnings.
|
|
5. **Docs same commit:** ai.md (gate rule + rename; dropped the stale "empty-canvas right-click
|
|
Show Webcam" claim — that XAML never shipped), TASKS.md TASK 3 row 27, this file.
|
|
6. **Dead code flagged, not touched:** `ShowWebcamCommand` / `CanShowWebcamInStagedScene` are wired
|
|
in the VM but bound nowhere — audit item, separate branch if wanted.
|
|
|
|
## ⚠️ 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 this branch.
|
|
- **Real-MainWindow tests MUST set `LayoutPathOverride`** (ai.md) — DB pollution wiped real data once.
|
|
- **`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`.
|
|
|
|
## Next steps
|
|
1. Commit this branch (code + docs, one commit), then merge/PR per Good Dog Rule (one integration test ✓).
|
|
2. Creator visual pass on Windows: add a webcam to any scene → the (+) menu's Webcam row greys out everywhere; remove it → row re-enables.
|
|
3. Then merge `task25-backgrounds` → main (still pending from last session), relaunch app once so the real `%APPDATA%` DB self-heals.
|
|
|
|
## 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 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.
|