Problem
Report grids are meant to be read-only, and 20 of the app's DataGrids say so on the grid element. Eleven do not, and in seven of them a text cell enters edit mode when the user double-clicks it. Typing there changes the in-memory row and nothing else, so the app appears to accept an edit it silently discards.
Measured per grid, counting only text columns inside a grid that has no grid-level IsReadOnly:
| View |
Typeable text columns |
Columns that carry a consequence |
AppUpdatesView.xaml |
6 of 6 |
Id — the argument WingetService.UpgradeAsync builds winget upgrade --id "…" from |
WindowsUpdateView.xaml |
10 of 11 |
Size, Status, Date |
EnvironmentVariablesView.xaml |
2 of 4 |
Value — possibly intended, see below |
ShortcutCleanerView.xaml |
3 of 6 |
— |
UninstallerView.xaml |
2 of 5 |
— |
ContextMenuView.xaml |
2 of 4 |
— |
StartupView.xaml |
1 of 2 |
— |
Four more grids lack IsReadOnly but hold only checkbox/template columns, where interaction is the point: AppBlockerView, BrowserCleanerView, DebloaterView, DnsHostsView.
What is NOT wrong here
An edited package Id cannot reach a command line. WingetService.UpgradeAsync calls WingetId.IsValid(packageId) and throws ArgumentException before interpolating, and AppUpdatesViewModel's upgrade loop catches it per row and keeps going with a friendly status. So the consequence of retyping an Id is a row that reports an error instead of upgrading — a confusing outcome, not an injection and not a crash.
Expected behavior
Report grids carry IsReadOnly="True" on the DataGrid, matching the 20 that already do. That is one attribute per view and removes the whole class rather than the instances.
Two need a decision rather than a blanket fix:
EnvironmentVariablesView — is inline editing of a variable's Value the intended way to edit one, or does the tab have its own edit path? If inline editing is intended, the column should be the only editable one and should commit somewhere.
- the four checkbox/template grids — no change needed, but worth a comment saying the omission is deliberate so a future sweep does not "fix" them.
Evidence
Counts derived by scoping each <DataGrid …> opening tag to its closing tag and counting DataGridTextColumn elements without IsReadOnly inside it, across all 31 views that contain text columns.
Affected tabs
App Updates, Windows Update, Environment Variables, Shortcut Cleaner, Uninstaller, Context Menu, Startup
Problem
Report grids are meant to be read-only, and 20 of the app's DataGrids say so on the grid element. Eleven do not, and in seven of them a text cell enters edit mode when the user double-clicks it. Typing there changes the in-memory row and nothing else, so the app appears to accept an edit it silently discards.
Measured per grid, counting only text columns inside a grid that has no grid-level
IsReadOnly:AppUpdatesView.xamlWingetService.UpgradeAsyncbuildswinget upgrade --id "…"fromWindowsUpdateView.xamlEnvironmentVariablesView.xamlShortcutCleanerView.xamlUninstallerView.xamlContextMenuView.xamlStartupView.xamlFour more grids lack
IsReadOnlybut hold only checkbox/template columns, where interaction is the point:AppBlockerView,BrowserCleanerView,DebloaterView,DnsHostsView.What is NOT wrong here
An edited package Id cannot reach a command line.
WingetService.UpgradeAsynccallsWingetId.IsValid(packageId)and throwsArgumentExceptionbefore interpolating, andAppUpdatesViewModel's upgrade loop catches it per row and keeps going with a friendly status. So the consequence of retyping an Id is a row that reports an error instead of upgrading — a confusing outcome, not an injection and not a crash.Expected behavior
Report grids carry
IsReadOnly="True"on the DataGrid, matching the 20 that already do. That is one attribute per view and removes the whole class rather than the instances.Two need a decision rather than a blanket fix:
EnvironmentVariablesView— is inline editing of a variable's Value the intended way to edit one, or does the tab have its own edit path? If inline editing is intended, the column should be the only editable one and should commit somewhere.Evidence
Counts derived by scoping each
<DataGrid …>opening tag to its closing tag and countingDataGridTextColumnelements withoutIsReadOnlyinside it, across all 31 views that contain text columns.Affected tabs
App Updates, Windows Update, Environment Variables, Shortcut Cleaner, Uninstaller, Context Menu, Startup