feat(dashboard): consolidate performance views and add specification sheet (#1942)
* feat(dashboard): consolidate performance views and add specification sheet Redesign the Grouped Dashboard surfaces per ADR 0014: - Replace the four Performance Layout Presets (Compact/Monitor/Detailed/ Custom) with three Performance Views: Panels (default), Compact, and Monitor. Stored legacy preset values normalize onto the new views. - Panels view: a fixed Instrument Strip reusing the classic DoughnutChart gauges (usage + temperature, with the classic narrow-width stagger trick) plus a dnd-kit panel stack with an explicit edit mode. Usage Graphs and Live Processes ship visible; new Per-core Usage and Motherboard Sensors panels ship hidden. Panels render in one or two user-selected columns, collapsing to one when the window is too narrow. - Compact view: dense one-row-per-metric strip with an expandable chrome-free mini-monitor mode (portal + inert app root, Burn-in Shift re-established inside the overlay, persisted across restarts). - System Specifications: replace the reused card grid with a flat list sheet (CPU/GPU/RAM/Storage/Motherboard/Platform/Network); live motherboard sensors move to the Performance panel and a Platform section is added. Storage capacity stays on the sheet as a specification fact. - Remove the specificationsMode plumbing from the classic Dashboard and delete the superseded preset components. - Update en/ja/ru strings, unit tests, and web/mock e2e specs with fresh captures; record the decisions in ADR 0014 and CONTEXT.md vocabulary. Relates to #1793. * fix(dashboard): address primary review findings on the new dashboard views - Report the memory unit the platform actually gave instead of assuming MB for anything that is not GB. - Localize the GPU fan substat; VRAM stays an acronym in every supported language. - Give the panel process-table expand control an accessible name and a visible focus ring. - Let long unbroken specification values wrap instead of widening the row (a flex item's automatic minimum size is min-content). - Mock performanceCompactExpanded on its own branch and cover both the setter and the pending state that gates the mini-monitor render. - Point the Motherboard Sensor Display glossary entry at both surfaces. * fix(dashboard): keep the mini monitor usable in a small window - Let the expanded Compact rows shrink instead of forcing a ~600px grid: a 520px corner window clipped the detail and sparkline columns because the burn-in root hides overflow, which broke the mini monitor's own use case. Flexible tracks now use minmax(0, ...) with a narrow-width scale. - Wait for the first monitor sample before reporting that a machine has no motherboard sensors, so a startup state is not presented as a capability claim. - Cover both with regression tests: a unit test for the sensor states and a 520x420 e2e assertion that the expanded row never overflows its window. * fix(dashboard): gate per-core absence on a first sample and fix a test mock - Apply the same first-sample rule to the Per-core Usage panel that the motherboard sensors panel already follows: an empty history is a startup state, not evidence that per-core usage is unavailable. Covered by a new unit test for all three states. - Keep the pending-state mock faithful to each store so the hook never runs a persistence effect against the wrong setter.
S
shm committed
453d557f539f85556cee1c330903a24d5a2b2d63
Parent: f1a1e62
Committed by GitHub <noreply@github.com>
on 8/16/2026, 2:06:09 PM