feat: developer tools page, auto-test orchestrator, BIP display, tests redesign
Bundles several feature streams that have been iterating on the working tree: - Developer Tools page (Debug-only via DEVELOPER_TOOLS symbol): hosts the identification card, manual KWP write + transaction log, ROM/EEPROM dump card with progress banner and completion message, persisted custom-commands library, persisted EEPROM passwords library. New service primitives: IKwpService.SendRawCustomAsync / ReadEepromAsync / ReadRomEepromAsync. Persistence mirrors the Clients XML pattern in two new files (custom_commands.xml, eeprom_passwords.xml). - Auto-test orchestrator (IAutoTestOrchestrator + AutoTestState): linear K-Line read -> unlock -> bench-on -> test sequence with snackbar UI and progress dialog VM, gated on dashboard alarms. - BIP-STATUS display: BipDisplayViewModel + BipDisplayView, RAM read at 0x0106 via IKwpService.ReadBipStatusAsync; status definitions in BipStatusDefinition. - Tests page redesign: TestSectionCard + PhaseTileView replacing the old TestPlanView/TestRunningView/TestDoneView/TestPreconditionsView/ TestSectionView controls and their VMs. - Pump command sliders: Fluent thick-track style with overhang thumb, click-anywhere-and-drag, mouse-wheel adjustment. - Window startup: app.manifest declares PerMonitorV2 DPI awareness, MainWindow installs a WM_GETMINMAXINFO hook in OnSourceInitialized and maximizes there (after the hook is in place) so the app fits the work area exactly on any display configuration. - Misc: PercentToPixelsConverter, seed_aliases.py one-shot pump-alias importer, tools/Import-BipStatus.ps1, kline_eeprom_spec.md and dump-functions reference docs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -92,31 +92,31 @@
|
||||
</Grid>
|
||||
|
||||
<!-- ── Preset RPM buttons 2×4 ──────────────────────────────── -->
|
||||
<UniformGrid Rows="2" Columns="4" Margin="0,0,0,10">
|
||||
<UniformGrid Rows="2" Columns="4" Margin="-2,0,-2,10">
|
||||
<ui:Button Content="100" CommandParameter="100"
|
||||
Command="{Binding BenchControl.SetQuickRpmCommand}"
|
||||
Appearance="Secondary" Height="40" Margin="2" FontSize="12"/>
|
||||
Appearance="Secondary" Height="40" HorizontalAlignment="Stretch" Margin="2" FontSize="12"/>
|
||||
<ui:Button Content="200" CommandParameter="200"
|
||||
Command="{Binding BenchControl.SetQuickRpmCommand}"
|
||||
Appearance="Secondary" Height="40" Margin="2" FontSize="12"/>
|
||||
Appearance="Secondary" Height="40" HorizontalAlignment="Stretch" Margin="2" FontSize="12"/>
|
||||
<ui:Button Content="500" CommandParameter="500"
|
||||
Command="{Binding BenchControl.SetQuickRpmCommand}"
|
||||
Appearance="Secondary" Height="40" Margin="2" FontSize="12"/>
|
||||
Appearance="Secondary" Height="40" HorizontalAlignment="Stretch" Margin="2" FontSize="12"/>
|
||||
<ui:Button Content="750" CommandParameter="750"
|
||||
Command="{Binding BenchControl.SetQuickRpmCommand}"
|
||||
Appearance="Secondary" Height="40" Margin="2" FontSize="12"/>
|
||||
Appearance="Secondary" Height="40" HorizontalAlignment="Stretch" Margin="2" FontSize="12"/>
|
||||
<ui:Button Content="1000" CommandParameter="1000"
|
||||
Command="{Binding BenchControl.SetQuickRpmCommand}"
|
||||
Appearance="Secondary" Height="40" Margin="2" FontSize="12"/>
|
||||
Appearance="Secondary" Height="40" HorizontalAlignment="Stretch" Margin="2" FontSize="12"/>
|
||||
<ui:Button Content="1250" CommandParameter="1250"
|
||||
Command="{Binding BenchControl.SetQuickRpmCommand}"
|
||||
Appearance="Secondary" Height="40" Margin="2" FontSize="12"/>
|
||||
Appearance="Secondary" Height="40" HorizontalAlignment="Stretch" Margin="2" FontSize="12"/>
|
||||
<ui:Button Content="1500" CommandParameter="1500"
|
||||
Command="{Binding BenchControl.SetQuickRpmCommand}"
|
||||
Appearance="Secondary" Height="40" Margin="2" FontSize="12"/>
|
||||
Appearance="Secondary" Height="40" HorizontalAlignment="Stretch" Margin="2" FontSize="12"/>
|
||||
<ui:Button Content="2000" CommandParameter="2000"
|
||||
Command="{Binding BenchControl.SetQuickRpmCommand}"
|
||||
Appearance="Secondary" Height="40" Margin="2" FontSize="12"/>
|
||||
Appearance="Secondary" Height="40" HorizontalAlignment="Stretch" Margin="2" FontSize="12"/>
|
||||
</UniformGrid>
|
||||
|
||||
<!-- ── Start / Stop ─────────────────────────────────────────── -->
|
||||
@@ -129,13 +129,13 @@
|
||||
<ui:Button Grid.Column="0"
|
||||
Content="{DynamicResource Bench.Start}"
|
||||
Command="{Binding BenchControl.StartBenchCommand}"
|
||||
Appearance="Primary" Height="46" FontWeight="Bold" FontSize="14">
|
||||
Appearance="Primary" Height="46" HorizontalAlignment="Stretch" FontWeight="Bold" FontSize="14">
|
||||
<ui:Button.Icon><ui:SymbolIcon Symbol="Play24"/></ui:Button.Icon>
|
||||
</ui:Button>
|
||||
<ui:Button Grid.Column="2"
|
||||
Content="{DynamicResource Bench.Stop}"
|
||||
Command="{Binding BenchControl.StopBenchCommand}"
|
||||
Appearance="Danger" Height="46" FontWeight="Bold" FontSize="14">
|
||||
Appearance="Danger" Height="46" HorizontalAlignment="Stretch" FontWeight="Bold" FontSize="14">
|
||||
<ui:Button.Icon><ui:SymbolIcon Symbol="Stop24"/></ui:Button.Icon>
|
||||
</ui:Button>
|
||||
</Grid>
|
||||
|
||||
Reference in New Issue
Block a user