feat(ui): color and acknowledge pinned log errors

Add independent AppLog message types and explicit Class 1/2 severity. Wrap and color log rows, pin Class 1 above Class 2, and let acknowledgement return entries to the current-launch timeline without changing file format or rotation.

Ref: https://logtape.org/manual/levels
This commit is contained in:
2026-11-02 18:17:18 -08:00
parent 01a3fcaaf7
commit a6aea5bf26
23 changed files with 365 additions and 100 deletions
+50 -14
View File
@@ -989,20 +989,56 @@
</ListBox>
</Grid>
<ListBox x:Name="LogListBox" Background="Transparent" BorderThickness="0"
ItemsSource="{Binding CurrentLaunchLogEntries}"
ItemContainerStyle="{StaticResource YtListBoxItem}"
Visibility="{Binding IsLogsTabSelected, Converter={StaticResource BoolToVis}}"
ScrollViewer.CanContentScroll="True"
VirtualizingPanel.IsVirtualizing="True"
VirtualizingPanel.VirtualizationMode="Recycling">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Text}" Style="{StaticResource PropertyHint}"
TextWrapping="Wrap" Margin="6,4"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid Visibility="{Binding IsLogsTabSelected, Converter={StaticResource BoolToVis}}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<ScrollViewer Grid.Row="0" MaxHeight="160" VerticalScrollBarVisibility="Auto"
Visibility="{Binding HasPinnedLogEntries, Converter={StaticResource BoolToVis}}">
<StackPanel>
<TextBlock Text="Needs attention" Style="{StaticResource PropertyHeader}" Margin="0,0,0,4"/>
<ItemsControl x:Name="PinnedLogPanel" ItemsSource="{Binding PinnedLogEntries}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Padding="6,4" Margin="0,0,0,4" CornerRadius="4"
Background="{StaticResource Brush.SurfaceContainerHigh}">
<DockPanel LastChildFill="True">
<Button DockPanel.Dock="Right" Content="Acknowledge"
Style="{StaticResource PropertyButton}" Margin="8,0,0,0"
VerticalAlignment="Top"
Command="{Binding DataContext.AcknowledgeLogEntryCommand, RelativeSource={RelativeSource AncestorType=UserControl}}"
CommandParameter="{Binding}"/>
<StackPanel>
<TextBlock Text="{Binding ErrorClassLabel}"
Style="{StaticResource AppLogEntryText}" FontWeight="Bold"/>
<TextBlock Text="{Binding Text}" Style="{StaticResource AppLogEntryText}"/>
</StackPanel>
</DockPanel>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</ScrollViewer>
<ListBox x:Name="LogListBox" Grid.Row="1" Background="Transparent" BorderThickness="0"
ItemsSource="{Binding CurrentLaunchLogEntries}"
ItemContainerStyle="{StaticResource YtListBoxItem}"
ScrollViewer.CanContentScroll="True"
VirtualizingPanel.IsVirtualizing="True"
VirtualizingPanel.VirtualizationMode="Recycling">
<ListBox.ItemTemplate>
<DataTemplate>
<DockPanel Margin="6,4">
<TextBlock DockPanel.Dock="Left" Text="{Binding TypeLabel}"
Style="{StaticResource AppLogEntryText}" FontWeight="Bold"
Margin="0,0,8,0"/>
<TextBlock Text="{Binding Text}" Style="{StaticResource AppLogEntryText}"/>
</DockPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</Grid>
</Grid>
</Grid>