feat(webcam): app-default gate slice — per-scene offer, Add places default directly, identity survives removal
Chat's camera no longer greys Web Cam in Live (per-scene max, not app-wide); TASK 26 superseded by creator directive (app-level resource model). Add Webcam now places the existing app default without the picker; the picker runs only for the initial selection. Removing the last placement keeps the identity (_webcam never nulled) so Add stays offered. Startup pass adopts a solo camera as the app default, so a clean layout offers the layer in Live/Chat at once. Dynamic WebcamAddToolTip names the why (incl. the 'graduated to OBS' line). Good Dog: WebcamMenuGateTests rewritten (real app + temp DB + camera seams) — identity in Chat does not gray Live; Add in Live places same wc-1 no picker; scene-with-placement stays gray; identity survives both removals (DB row 1). WebcamStartupResourceTests single-lock fact asserts CanAddWebcam after adoption. Docs same commit (ai.md supersession, TASKS.md, HANDOFF.md). 304/304, 0 warnings.
This commit is contained in:
@@ -65,10 +65,13 @@
|
||||
- **TASK 14** — Branch 2 shipped; branch 3+ in progress
|
||||
- **TASK 21** — UI picker slice remaining (Windows-only verification pending)
|
||||
- **TASK 32–36** — all queued future work (2026-09-01)
|
||||
- **Webcam resource lifecycle (2026-09-17)** — startup slice shipped: OS poll at start, single-camera
|
||||
auto-lock, persistent red alert in the Layers panel on lock failure (re-polls until resolved). Next
|
||||
slices (user-queued): multi-camera webcam selector in the App Settings dialog (gear), static (+)
|
||||
catalog rows (Background, YouTubeEvent, quoted labels) with reason-greying.
|
||||
- **Webcam resource lifecycle (2026-09-17)** — startup slice shipped (OS poll at start, single-camera
|
||||
auto-lock, persistent red alert in the Layers panel on lock failure, re-polls until resolved); gate
|
||||
slice shipped same day — webcam = app-level default, one per stream per scene, Add places the
|
||||
default directly, identity survives last-placement removal, startup adopts a solo camera as default.
|
||||
TASK 26's app-wide gate superseded by creator directive. Next slices (user-queued): multi-camera
|
||||
webcam selector in the App Settings dialog (gear), static (+) catalog rows (Background,
|
||||
YouTubeEvent, quoted labels) with reason-greying.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user