TASK 5 items 1-3: reusable stream, health banner, docs refresh

- Reusable stream: GetOrCreateReusableStreamAsync, cached via LayoutStore, bound at broadcast insert
- Health monitoring: GetStreamHealthAsync polls liveStreams.status, report-by-exception banner
- Go-live order: ensure stream → create broadcast → then start pump (URL must exist first)
- Full broadcast form scoped (TASK 5 items 6-7) in TASKS.md + ai.md
- TASK 23 trimmed to technical scope, TASK 26 added (marcom/launch kit)
- Confidential files: MONETIZATION.md + MARCOM.md (gitignored, not committed)
- .gitignore updated for confidential business files
- HANDOFF.md updated with session state and next steps
This commit is contained in:
2026-08-16 17:48:37 -07:00
parent 92f1471ab4
commit 0fac1e6a5a
16 changed files with 810 additions and 140 deletions
+12 -2
View File
@@ -74,6 +74,7 @@
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
@@ -136,7 +137,16 @@
</Border>
<!-- ═══ MIDDLE: Main Content ═══ -->
<Grid Grid.Row="1" Margin="8">
<!-- YouTube health banner (TASK 5 item 3): report-by-exception — visible
ONLY while a warning/error configuration issue exists. Amber for
warning, darker red for error (HealthIssueBackground). -->
<Border Grid.Row="1" Background="{Binding HealthIssueBackground}"
Visibility="{Binding HealthIssueBanner, Converter={StaticResource NotNullToVis}}">
<TextBlock Text="{Binding HealthIssueBanner}" Foreground="White" FontSize="13"
FontWeight="SemiBold" Margin="16,8" TextTrimming="CharacterEllipsis"/>
</Border>
<Grid Grid.Row="2" Margin="8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="220"/>
<ColumnDefinition Width="*"/>
@@ -869,7 +879,7 @@
</Grid>
<!-- ═══ BOTTOM BAR: Stream Health + Audio ═══ -->
<Border Grid.Row="2" Background="#0f3460" Padding="16,6">
<Border Grid.Row="3" Background="#0f3460" Padding="16,6">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>