Commit Graph

31 Commits

Author SHA1 Message Date
gramps 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) 2026-08-07 15:20:48 -07:00
gramps 4d10b23714 TASKS: backlog adds v0.5 — stream clipping 2026-08-07 14:35:42 -07:00
gramps 3c32c8c105 README: add Screenshot section with app preview (docs/ytLlive-preview.png) 2026-08-07 14:30:09 -07:00
gramps 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) 2026-08-07 14:22:12 -07:00
gramps 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) 2026-08-07 14:15:50 -07:00
gramps 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) 2026-08-07 08:24:18 -07:00
gramps 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 2026-08-06 15:16:58 -07:00
gramps 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 2026-08-06 15:05:21 -07:00
gramps b64830ed11 Webcam grab: SharedReadOnly mode, VideoPreview/VideoRecord source fallback, name the blocking app in the error (NVIDIA Broadcast finding) 2026-08-06 14:42:54 -07:00
gramps 98cdc4b3f4 TASK 3 milestone 1: webcam capture (MediaCapture CPU-first, CameraManager refcount, picker, clip/mirror, schema v2, tests) 2026-08-06 14:35:34 -07:00
gramps d97b5d375c End Livestream completes the session: StopStream clears the OAuth session and DPAPI token (crash-safe sign-out) 2026-08-06 11:50:50 -07:00
gramps 4afe11e718 OAuth session persists via DPAPI; sign-in lives in the Start Stream dialog; add xUnit test project (6 passing) 2026-08-06 09:38:35 -07:00
gramps 8f0ecd3796 Resolution dropdown drives the output frame: vertical 9:16 tier with semi-crop preview over the fixed 1920x1080 master 2026-08-06 09:20:32 -07:00
gramps 4bf4a13299 Add Good Dog Rule to AGENTS.md: one integration test per branch, one test per PR 2026-08-06 09:06:42 -07:00
gramps 4ef11ef5ac Branding flash monetization: full-frame 'made with ytLlive!' every 300s replaces the always-on watermark 2026-08-06 09:04:20 -07:00
gramps 3a2c87f518 Add AGENTS.md on-ramp, response-style rules, and optional No-Fluff Mode
- AGENTS.md: auto-read session on-ramp — memory-map reading order, working
  rules, build command, and startup-log pointer
- ai.md: Response style section (no default planning boilerplate) plus an
  optional, on-demand No-Fluff Mode for ruthless review; never the default
- schema.md: AGENTS.md listed as the always-read first page
2026-08-06 08:43:01 -07:00
gramps a74162e34e Resolution dropdown, list-focus preservation, unified dark theme, startup logging, and memory map
- Bottom-bar resolution dropdown (1080p60/1080p30/720p60/480p30) with tooltip
  on finding upload bandwidth; disabled while live; no in-app speed test
- FocusPreservingListBox keeps selection/focus coherent when a selected
  scene/source is deleted (skip hidden scenes; leave list when empty)
- Themes/Controls.xaml: single dark-theme dictionary merged once in App.xaml;
  custom ComboBox template fixes SelectionBoxItem rendering; GoLiveWindow and
  ReuseImageDialog consolidated onto shared styles
- AppLog file logger + AppDomain/Dispatcher exception hooks; checkpointed
  MainWindow/VM/dialog constructors (caught MenuItemRole.Separator XAML crash)
- Memory map: schema.md conventions, per-directory index.md, updated ai.md/
  TASKS.md/README.md (OAuth creds real; token persistence still pending)
2026-08-06 08:33:05 -07:00
gramps 7dc8490d96 Scene/source builder with image overlays, reuse dialog, and SQLite layout persistence 2026-08-04 17:12:32 -07:00
gramps d6ae048583 Two-state flow with go-live dialog, unmissable live indicators, taskbar overlay 2026-08-04 10:54:21 -07:00
gramps aae17a1511 Go Live gated on auth; scene building stays auth-free; update design docs 2026-08-04 10:40:51 -07:00
gramps 3caccfff1f Go Live no longer requires YouTube connection; auth stays optional enhancement 2026-08-04 10:39:17 -07:00
gramps 4caf7eec8d Three explicit buttons: Connect / Go Live / End Stream, shown per state 2026-08-04 10:37:38 -07:00
gramps 639e1bb323 Remove redundant OFFLINE/LIVE status pill; single button conveys state 2026-08-04 10:36:37 -07:00
gramps 4293ae11a4 Replace three-button cluster with a single context-aware primary button
Button follows the user journey: 'Connect to YouTube' (not signed in)
-> 'Go Live' (connected, idle) -> 'Stop Stream' (live).
2026-08-04 10:35:00 -07:00
gramps 8ee44f571e UI polish: YouTube status light, Go Live/Stop Stream buttons with working visibility 2026-08-04 10:32:04 -07:00
gramps d4945f4fd0 Make YouTube auth optional and non-blocking; manual stream key is baseline go-live path 2026-08-04 10:28:01 -07:00
gramps 8aebbff318 Add README with design principle, TASKS.md roadmap, and ai.md agent guide 2026-08-04 10:24:20 -07:00
gramps b3c81f0af8 Silence CS1998 warning in StartStream stub 2026-08-04 09:16:54 -07:00
gramps 84599303fc Fix HttpUtility reference in auth URL builder 2026-08-04 09:14:11 -07:00
gramps 29c33012c1 Add .gitignore 2026-08-04 09:10:07 -07:00
gramps 9103ff1fb7 Initial scaffold: ytLive C# WPF project
- MVVM architecture (Models, ViewModels, Views, Services, Helpers)
- Models: Scene, Source, StreamConfig, StreamHealth, YouTubeChannel, ChatMessage
- Services: YouTubeAuthService (OAuth2), YouTubeStreamService (broadcasts/stream health),
  YouTubeChatService (live chat polling)
- ViewModels: MainViewModel with scene management, stream controls, chat
- MainWindow with dark theme: scene/source panel, preview area, chat panel, status bar
- Version roadmap: v0.1 (scenes, RTMP, OAuth2, chat, health) -> 1.0
2026-08-04 09:09:52 -07:00