This website requires JavaScript.
e1d9e1388d
Merge webcam-validation: resource validation + first-frame proof + CameraConflictProbe
gramps
2026-08-12 07:21:20 -07:00
3f7f1880c5
Webcam resource validation + first-frame proof + CameraConflictProbe: MediaCaptureFrameSource validates post-init (VideoDeviceId match, stream properties, reader StartAsync status), subscribes Failed/CameraStreamStateChanged → SourceFailed; CameraManager.AcquireAsync requires first-frame proof (4s timeout) — silent empty box impossible; MainViewModel surfaces WebcamError chip + MessageBox with suspect-app names; fallback ladder VideoPreview → VideoRecord; 19041 SDK projection gaps documented; AGENTS.md + schema.md + HANDOFF.md memory-map rules added; 81 tests passing, 0 warnings
gramps
2026-08-12 07:21:15 -07:00
60259c08c2
Fix CameraStreamState.Failed compile error (19041 projection omits enum member names — compare by int); fix first-frame proof test (no dispatcher = no bitmap, assert LatestFrame instead)
gramps
2026-08-12 07:11:54 -07:00
cc3b1c9234
TASKS.md reformat: task-list statuses under every task + all lists numbered
gramps
2026-08-10 11:18:37 -07:00
8c7938aca0
FFmpeg locator (TASK 4 ship step 2) + licensing: notices, About, LGPL-shared pin
gramps
2026-08-10 11:02:26 -07:00
18a21010bb
Scene compositor (TASK 4 ship step 1): encoder master-frame scaffolding
gramps
2026-08-10 10:15:58 -07:00
b00a4cbd5e
Mic audio UX: realtime read-only meter + mic picker
gramps
2026-08-07 17:44:16 -07:00
4b3fb04322
Audio UX (UI) + bottom bar rework: two-line footer (dropped/duration under bitrate/fps), centered sound meter (blank→green→yellow→red, zone markers at 60%/80%) + MIC chip (MicVolume slider, ToggleMicMuteCommand) — the mic is the creator's only audio control, desktop/game audio is automatic (KISS rule); scenes list is content-height (no dead space before SOURCES); top bar shows the connected YT account avatar/name via SyncConnectedAccount; docs updated (65 tests passing)
gramps
2026-08-07 15:20:48 -07:00
4d10b23714
TASKS: backlog adds v0.5 — stream clipping
gramps
2026-08-07 14:35:42 -07:00
3c32c8c105
README: add Screenshot section with app preview (docs/ytLlive-preview.png)
gramps
2026-08-07 14:30:09 -07:00
d5f50edf23
Kill stringly-typed command tokens: Add Source menu passes SourceType enum via x:Static CommandParameter (typos break the build, not silently add an Image); webcam gets its own AddWebcamCommand; AddSource keeps Enum.TryParse fallback; docs updated (65 tests passing)
gramps
2026-08-07 14:22:12 -07:00
ad9b3e1e48
Screen backdrop (schema v5/v6) + five-scene catalog + webcam polish: live desktop/game capture as a permanent non-deletable bottom layer (Source.IsBackdrop), auto full-screen game detection (Win32FullScreenDetector) else primary display, GraphicsCapturePicker re-designation, refcounted shared ScreenCaptureManager, Live-only backdrop by policy (HasBackdrop + v5-v6 backfill + EnforceBackdropPolicy, checkbox gone), SceneCatalog (Starting/Live/BRB/Chat/Ending) with + button re-adding missing scenes, webcam mid-session transparent-container fix (GetPreviewBitmap propagation), Chat half-screen-area cap, 'Add Webcam' always opens the picker (SwapWebcamIdentityAsync, no silent resurrect), WindowsRuntimeMarshal frame-read + 5s-throttled errors, docs updated, tests (65 passing)
gramps
2026-08-07 14:15:50 -07:00
e037ba027b
Multi-scene webcam (schema v3/v4): singleton Webcam + per-scene WebcamSceneConfig, right-click OBS-style border/context menu, persisted round-to-rect restore + legacy-square 16:9 heal, dark MenuItem template, tests (25 passing)
gramps
2026-08-07 08:24:18 -07:00
f31ce9fdb7
Hermetic real-MainWindow tests: LayoutPathOverride temp-DB seam (InternalsVisibleTo); fix tests persisting fake webcam sources over the real layout DB; LayoutStore delete-roundtrip guard
gramps
2026-08-06 15:16:58 -07:00
7bc70872d9
Round clip: true circle (Viewbox/1x1 ellipse) + grabbable corner handle (transparent source grid, non-hit-testable selection overlay); resize locks square in round mode
gramps
2026-08-06 15:05:21 -07:00
b64830ed11
Webcam grab: SharedReadOnly mode, VideoPreview/VideoRecord source fallback, name the blocking app in the error (NVIDIA Broadcast finding)
gramps
2026-08-06 14:42:54 -07:00
98cdc4b3f4
TASK 3 milestone 1: webcam capture (MediaCapture CPU-first, CameraManager refcount, picker, clip/mirror, schema v2, tests)
gramps
2026-08-06 14:35:34 -07:00
d97b5d375c
End Livestream completes the session: StopStream clears the OAuth session and DPAPI token (crash-safe sign-out)
gramps
2026-08-06 11:50:50 -07:00
4afe11e718
OAuth session persists via DPAPI; sign-in lives in the Start Stream dialog; add xUnit test project (6 passing)
gramps
2026-08-06 09:38:35 -07:00
8f0ecd3796
Resolution dropdown drives the output frame: vertical 9:16 tier with semi-crop preview over the fixed 1920x1080 master
gramps
2026-08-06 09:20:32 -07:00
4bf4a13299
Add Good Dog Rule to AGENTS.md: one integration test per branch, one test per PR
gramps
2026-08-06 09:06:42 -07:00
4ef11ef5ac
Branding flash monetization: full-frame 'made with ytLlive!' every 300s replaces the always-on watermark
gramps
2026-08-06 09:04:20 -07:00
3a2c87f518
Add AGENTS.md on-ramp, response-style rules, and optional No-Fluff Mode
gramps
2026-08-06 08:43:01 -07:00
a74162e34e
Resolution dropdown, list-focus preservation, unified dark theme, startup logging, and memory map
gramps
2026-08-06 08:33:05 -07:00
7dc8490d96
Scene/source builder with image overlays, reuse dialog, and SQLite layout persistence
gramps
2026-08-04 17:12:32 -07:00
d6ae048583
Two-state flow with go-live dialog, unmissable live indicators, taskbar overlay
gramps
2026-08-04 10:54:21 -07:00
aae17a1511
Go Live gated on auth; scene building stays auth-free; update design docs
gramps
2026-08-04 10:40:51 -07:00
3caccfff1f
Go Live no longer requires YouTube connection; auth stays optional enhancement
gramps
2026-08-04 10:39:17 -07:00
4caf7eec8d
Three explicit buttons: Connect / Go Live / End Stream, shown per state
gramps
2026-08-04 10:37:38 -07:00
639e1bb323
Remove redundant OFFLINE/LIVE status pill; single button conveys state
gramps
2026-08-04 10:36:37 -07:00
4293ae11a4
Replace three-button cluster with a single context-aware primary button
gramps
2026-08-04 10:35:00 -07:00
8ee44f571e
UI polish: YouTube status light, Go Live/Stop Stream buttons with working visibility
gramps
2026-08-04 10:32:04 -07:00
d4945f4fd0
Make YouTube auth optional and non-blocking; manual stream key is baseline go-live path
gramps
2026-08-04 10:28:01 -07:00
8aebbff318
Add README with design principle, TASKS.md roadmap, and ai.md agent guide
gramps
2026-08-04 10:24:20 -07:00
b3c81f0af8
Silence CS1998 warning in StartStream stub
gramps
2026-08-04 09:16:54 -07:00
84599303fc
Fix HttpUtility reference in auth URL builder
gramps
2026-08-04 09:14:11 -07:00
29c33012c1
Add .gitignore
gramps
2026-08-04 09:10:07 -07:00
9103ff1fb7
Initial scaffold: ytLive C# WPF project
gramps
2026-08-04 09:09:52 -07:00