Problem
The app has a shared EmptyState control whose own comment calls it the "single source of truth for the 'icon + title + message' idiom so the look can never drift between views", and 27 views use it. Twelve views hold a DataGrid without one, and in the scan-first ones that means the user's first look at the tab is a column header row over blank space.
TracerouteView is the clearest: HeadersVisibility="Column", ItemsSource="{Binding Shared.TracerouteHops}", and no sibling panel — so before the first "Trace now" the card is headers and nothing else, with no line saying what to press.
The twelve, split by whether the grid can be empty when the tab opens:
Empty until the user acts — these are the defect:
TracerouteView.xaml — empty until Trace now
SpeedTestView.xaml — empty until a test runs
DeepCleanupView.xaml — empty until a scan
WindowsUpdateView.xaml — empty until a check
SystemHealthView.xaml — empty until a check
CliInterfaceView.xaml — needs a look
Populated the moment the tab opens, so an empty state would never show:
ProcessManagerView.xaml, ServicesView.xaml, StartupView.xaml, WindowsFeaturesView.xaml, DnsHostsView.xaml, EnvironmentVariablesView.xaml
For the second group the omission is correct. It is worth a one-line comment saying so, otherwise a future uniformity sweep adds six empty states that can never appear.
This matters most for the audience the app is aimed at. A relative who opens Traceroute sees a table with no rows and no instruction; the 27 views that do this properly tell them what the tab needs.
Expected behavior
The six scan-first grids drop in EmptyState as a sibling with Visibility bound to the collection's emptiness, exactly as the control's own usage note describes, with copy naming the button to press. Empty, loading and error states are already a Gate-UX requirement — this is the empty half of it, missing in six places.
Evidence
SysManager/SysManager/Views/EmptyState.xaml — the shared control and its usage note
- 27 views instantiate it (
grep -l ':EmptyState' Views/*.xaml)
SysManager/SysManager/Views/TracerouteView.xaml — the grid with no sibling
- the twelve DataGrid views with no instance, listed above
Affected tabs
Traceroute, Speed Test, Deep Cleanup, Windows Update, System Health, CLI Interface
Problem
The app has a shared
EmptyStatecontrol whose own comment calls it the "single source of truth for the 'icon + title + message' idiom so the look can never drift between views", and 27 views use it. Twelve views hold a DataGrid without one, and in the scan-first ones that means the user's first look at the tab is a column header row over blank space.TracerouteViewis the clearest:HeadersVisibility="Column",ItemsSource="{Binding Shared.TracerouteHops}", and no sibling panel — so before the first "Trace now" the card is headers and nothing else, with no line saying what to press.The twelve, split by whether the grid can be empty when the tab opens:
Empty until the user acts — these are the defect:
TracerouteView.xaml— empty until Trace nowSpeedTestView.xaml— empty until a test runsDeepCleanupView.xaml— empty until a scanWindowsUpdateView.xaml— empty until a checkSystemHealthView.xaml— empty until a checkCliInterfaceView.xaml— needs a lookPopulated the moment the tab opens, so an empty state would never show:
ProcessManagerView.xaml,ServicesView.xaml,StartupView.xaml,WindowsFeaturesView.xaml,DnsHostsView.xaml,EnvironmentVariablesView.xamlFor the second group the omission is correct. It is worth a one-line comment saying so, otherwise a future uniformity sweep adds six empty states that can never appear.
This matters most for the audience the app is aimed at. A relative who opens Traceroute sees a table with no rows and no instruction; the 27 views that do this properly tell them what the tab needs.
Expected behavior
The six scan-first grids drop in
EmptyStateas a sibling withVisibilitybound to the collection's emptiness, exactly as the control's own usage note describes, with copy naming the button to press. Empty, loading and error states are already a Gate-UX requirement — this is the empty half of it, missing in six places.Evidence
SysManager/SysManager/Views/EmptyState.xaml— the shared control and its usage notegrep -l ':EmptyState' Views/*.xaml)SysManager/SysManager/Views/TracerouteView.xaml— the grid with no siblingAffected tabs
Traceroute, Speed Test, Deep Cleanup, Windows Update, System Health, CLI Interface