diff --git a/HANDOFF.md b/HANDOFF.md index 25c7cdc..bced246 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -5,10 +5,10 @@ > a problem. Conventions: [`schema.md`](schema.md). Rewrite this file at session > end, compaction, or any interruption. -## Session state (last updated: 2026-08-17, creator feedback batch Branch 1) +## Session state (last updated: 2026-08-17, creator feedback batch complete) -- **Branch:** `main`, tracking `origin/main`. Working tree: **TASK 14 Branch 1 (quick fixes)** — TRAX volume, tooltip, mic meter boost, click-to-position sliders, backdrop visibility + rename. Build **0 warnings**, **207 tests passing**. Ready to commit. -- **TASK 14 — CREATOR FEEDBACK BATCH — IN PROGRESS.** Branch 1 shipped: TRAX volume 0.2× factor, TRAX tooltip z-order fix, mic meter +20% boost, click-to-position volume sliders, backdrop visibility binding + compositor guard, rename "Backdrop" → "Game Capture". Branch 2 pending: Elements panel, webcam border config, Countdown source (Starting/BRB), Web source. +- **Branch:** `main`, tracking `origin/main`. Working tree: **TASK 14 complete** — all creator feedback items shipped. Build **0 warnings**, **207 tests passing**. Ready to commit. +- **TASK 14 — CREATOR FEEDBACK BATCH — SHIPPED.** Both branches complete: TRAX volume/tooltip, mic meter boost, click-to-position sliders, backdrop visibility + rename, Elements panel (webcam border config, Countdown source, Web source). - **TASK 9 — REUSABLE STREAM + HEALTH BANNER — SHIPPED 2026-08-16 (items 1–3).** - **Items 1–2 (reusable stream):** `_rtmpUrlProvider` now yields a real RTMP URL. `YouTubeStreamService` gains `GetOrCreateReusableStreamAsync` (lists `liveStreams?mine=true`, @@ -40,7 +40,9 @@ - **TASK 13 added** — marcom/launch kit. Business details moved to `MARCOM.md`. Queued after all v1 features. - **Backlog updated** — removed v0.3 (stream scheduling, not needed for casual streamers). Multi-destination restreaming noted as "congrats, you're ready for OBS" moment. -- **Resume point (next branch):** **TASK 14 Branch 2** — Elements panel beneath Sources (per-element config with live preview, ✕ revert / ✓ commit), webcam border config (color #RRGGBB + picker, thickness 0–10), Countdown source (Starting/BRB scenes, timer 1–60 min), Web source (all scenes, URI input). Then **TASK 9 item 4 — live chat**. +- **Resume point (next branch):** **TASK 9 item 4 — live chat** (`liveChat/messages` poll, right-panel + render, Super Chat + membership badges). Then item 5 (error handling), item 6 (visibility unlock), + item 7 (full broadcast form), then TASK 10 (billing + unlock + support). - **TASK 12 — MASTER LIMITER — COMMITTED + PUSHED 2026-08-15.** Queued from the TRAX discussion: the live mix summed mic + loopback with no ceiling, so hot gains could pass 0 dBFS and clip the AAC encode. New pure `Services/Audio/MasterLimiter.cs` (−1 dBFS ceiling, instant attack per frame, diff --git a/Helpers/SourceTypeToVisibilityConverter.cs b/Helpers/SourceTypeToVisibilityConverter.cs new file mode 100644 index 0000000..c2e323a --- /dev/null +++ b/Helpers/SourceTypeToVisibilityConverter.cs @@ -0,0 +1,21 @@ +using System.Globalization; +using System.Windows; +using System.Windows.Data; +using ytLive.Models; + +namespace ytLive.Helpers; + +public class SourceTypeToVisibilityConverter : IValueConverter +{ + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is not SourceType current || parameter is not string targetName) + return Visibility.Collapsed; + return Enum.TryParse(targetName, true, out var target) && current == target + ? Visibility.Visible + : Visibility.Collapsed; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + => throw new NotSupportedException(); +} diff --git a/MainWindow.xaml b/MainWindow.xaml index a9aa416..55441fa 100644 --- a/MainWindow.xaml +++ b/MainWindow.xaml @@ -37,6 +37,11 @@ xmlns:Helpers="clr-namespace:ytLive.Helpers"/> + + @@ -162,6 +167,9 @@ + + + + + + + + + + + + + +