Commit Graph

  • 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