docs(handoff): session-end refresh — HEAD 75723ac, attainability refinement, tree clean
This commit is contained in:
+19
-9
@@ -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
|
## Branch / Commit State
|
||||||
|
|
||||||
`main` HEAD = **`1e4017d` webcam startup resource lifecycle** (local). The gate slice lands
|
`main` HEAD = **`75723ac` fix(webcam): offer the Web Cam row only when a camera is attainable
|
||||||
on top as a NEW commit (stays commit-local until greenlight). Below: `94a934f` (reader-ladder),
|
(live lock), not merely selected** (local). Below it:
|
||||||
`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
|
- `9d00955` feat(webcam): app-default gate slice — per-scene offer, Add places default directly,
|
||||||
greenlight.
|
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
|
## ⚠️ 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:
|
(`%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"…).
|
"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
|
**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
|
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`.
|
- **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
|
A scene already hosting the webcam stays gray (one webcam per stream); another scene holding it
|
||||||
does NOT gray the row elsewhere.
|
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
|
`_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
|
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).
|
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
|
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 →
|
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
|
fresh launch → alert (unless Chat's config grabbed it) that clears after a Retry once the browser
|
||||||
closes.
|
closes.
|
||||||
|
|||||||
Reference in New Issue
Block a user