docs(handoff): session-end refresh — HEAD 75723ac, attainability refinement, tree clean

This commit is contained in:
2026-09-17 20:16:49 -07:00
parent 75723acc1b
commit fd5198df9f
+18 -8
View File
@@ -1,12 +1,22 @@
# HANDOFF — 2026-09-17 (webcam app-default gate slice; committed locally — no push)
# HANDOFF — 2026-09-17 (webcam attainability refinement committed locally at `75723ac` — no push)
## Branch / Commit State
`main` HEAD = **`1e4017d` webcam startup resource lifecycle** (local). The gate slice lands
on top as a NEW commit (stays commit-local until greenlight). Below: `94a934f` (reader-ladder),
`64a5a6d` (slice-18 C4 cache), slice-17, slice-16, slice-15, `c01206f`, `b22d08e` (signed
audio-sync, pushed). No push after this commit either — still awaiting the device take + user
greenlight.
`main` HEAD = **`75723ac` fix(webcam): offer the Web Cam row only when a camera is attainable
(live lock), not merely selected** (local). Below it:
- `9d00955` feat(webcam): app-default gate slice — per-scene offer, Add places default directly,
identity survives removal
- `1e4017d` feat(webcam): resource lifecycle startup slice — poll-on-start, single-cam lock,
persistent Layers alert
- `94a934f` reader-output-subtype ladder + WinRT per-call wrap rule
- `64a5a6d` slice-18 C4 blit-on-change composite cache
- `b37b8a3` slice-17 overlap GPU readbacks with monotonic publish gate
**No push yet** — still awaiting the device take + user greenlight. Working tree clean.
> Correcting the previous handoff, which still listed HEAD as `1e4017d`: the gate slice
> (`9d00955`) and its attainability refinement (`75723ac`) are both committed now.
## ⚠️ Branding (2026-09-14, creator-corrected): product = **llamacasty**, internals = ytLive
@@ -14,7 +24,7 @@ Product is **llamacasty**; repo path, csproj `AssemblyName`/`RootNamespace`, DB/
(`%APPDATA%\ytLlive\...`), most code names are legacy **ytLive/ytLlive**. User-facing text:
"llamacasty" / UI labels use the catalog names ("Web Cam", "YouTube Chat", "Countdown Timer"…).
## ✅ Committed — webcam app-default gate slice (creator-visible goal: Web Cam offered when switching to Live)
## ✅ Committed — webcam app-default gate + attainability (`9d00955`, `75723ac`)
**Background:** the DB truth (`%APPDATA%\ytLlive\ytLlive.db`; NOT `layout.db`, a 0-byte legacy
file) put the single `WebcamSceneConfig` in **Chat**, so the old TASK 26 app-wide rule grayed
@@ -26,7 +36,7 @@ the availability layer. TASK 26's app-wide gate is **superseded** by creator dir
- **Per-scene gate:** `CanAddWebcam` = `StagedScene is { WebcamConfig: null } && IsWebcamAttainable`.
A scene already hosting the webcam stays gray (one webcam per stream); another scene holding it
does NOT gray the row elsewhere.
- **Attainable = a live lock, not a saved identity** (creator refinement): `IsWebcamAttainable` =
- **Attainable = a live lock, not a saved identity** (`75723ac` refinement): `IsWebcamAttainable` =
`_webcam != null && CameraManager.IsRunning(_webcam.DeviceId)`. An identity whose camera is
unplugged / can't start leaves the row greyed (tooltip "No webcam is currently available…"), and
it un-greys the moment a session is running (startup lock, first frame, picker + acquire).