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
+19 -9
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).
@@ -132,4 +142,4 @@ on this build. The webcam gate slice answers the creator's "go" ask — switchin
must now offer Web Cam in the layer stack (Chat holding the camera no longer blocks it). The red
Layers alert remains the new expected behavior to eyeball on the take: browser holds the camera →
fresh launch → alert (unless Chat's config grabbed it) that clears after a Retry once the browser
closes.
closes.