From ac22b1658f22f948e7f933e94ab5d417e95e3d73 Mon Sep 17 00:00:00 2001 From: gramps Date: Mon, 10 Aug 2026 12:17:03 -0700 Subject: [PATCH] Source access enforcement (the catalog): 10-source catalog + per-scene access matrix enforced by SceneAccessPolicy; Add-Source menu is one ItemsSource rebuilt per scene (Screen = Live-only, BG/Image/Text every scene), webcam row always present + greys out; Chatbox/Alerts/Socials are inert SourceType rows ready for their features; Text queued as a ship step (countdown + credits modes); Monetization notes socialBar free = YouTube + 1, unlimited with the paid key (79 tests passing) --- MainWindow.xaml | 20 ++++---- Models/Source.cs | 11 ++++- Services/SceneAccessPolicy.cs | 32 ++++++++++++ TASKS.md | 68 ++++++++++++++++++++------ ViewModels/MainViewModel.cs | 31 ++++++++++++ ViewModels/SourceMenuItem.cs | 28 +++++++++++ ai.md | 4 +- ytLive.Tests/SceneAccessPolicyTests.cs | 67 +++++++++++++++++++++++++ 8 files changed, 236 insertions(+), 25 deletions(-) create mode 100644 Services/SceneAccessPolicy.cs create mode 100644 ViewModels/SourceMenuItem.cs create mode 100644 ytLive.Tests/SceneAccessPolicyTests.cs diff --git a/MainWindow.xaml b/MainWindow.xaml index 044791b..b4933d6 100644 --- a/MainWindow.xaml +++ b/MainWindow.xaml @@ -4,7 +4,6 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:vm="clr-namespace:ytLive.ViewModels" - xmlns:models="clr-namespace:ytLive.Models" xmlns:Helpers="clr-namespace:ytLive.Helpers" mc:Ignorable="d" Title="{Binding WindowTitle}" Height="720" Width="1280" @@ -257,14 +256,17 @@