A GPU with nothing measurable is one line, not half the Processes page

The Mac's Asahi GPU exposes no busy counter, clock, sensor or memory reading, so
its box was a graph that could never draw beside a column of dashes. A GPU with
nothing to read now gets one line (driver, "nothing measurable" or the stall,
and whether a process has it open), its row shrinks to fit, and the Gpu% column
and gpu sort are dropped when no GPU on the machine can light them. QoL #3 from
bug bash 6 (BUGS.md).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Mitchell-Johnson
2026-10-07 19:31:25 -07:00
co-authored by Claude Opus 5.5
parent f3ca3d8f73
commit 7d0b87bc45
3 changed files with 42 additions and 10 deletions
+7 -1
View File
@@ -666,6 +666,12 @@ pre.diff .add { color: var(--ok); background: color-mix(in srgb, var(--ok) 12%,
.top-gpus { grid-column: 1 / -1; grid-row: 2; display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 4px; min-width: 0; }
.top.has-gpu .top-mem, .top.has-gpu .top-disks { grid-row: 3; } .top.has-gpu .top-net { grid-row: 4; } .top.has-gpu .top-proc { grid-row: 3 / 5; }
.top-gpu { min-height: 210px; }
/* a GPU with nothing to measure is one line, and on a machine with no other its row is only as
tall as that line. Same weight as .top.has-gpu and after it, so the narrower layouts' own
.top.has-gpu, further down, still wins there (their gpu row is already auto). */
.top.gpu-slim { grid-template-rows: minmax(200px, 1fr) auto auto minmax(170px, 1fr); }
.top-gpu.slim { align-self: start; } /* beside a full gpu box it keeps its one line, not that box's height */
.t-row.t-gpu-line { flex-wrap: wrap; gap: 0 14px; } .t-gpu-line > span { white-space: nowrap; } .t-gpu-who { margin-left: auto; } /* on a phone it wraps to its own line, still on the right */
.t-gpu { display: flex; gap: 8px; min-width: 0; flex: 1; min-height: 0; }
/* the graph and its caption share this box: tall enough for both, so the caption never lands on the stats */
.t-gpu-graph { flex: 1; min-width: 0; min-height: 130px; display: flex; flex-direction: column; }
@@ -782,7 +788,7 @@ pre.diff .add { color: var(--ok); background: color-mix(in srgb, var(--ok) 12%,
@media (max-width: 800px) {
.top { display: flex; flex-direction: column; font-size: 12px; }
.top > .tbox { flex: 0 0 auto; }
.top-gpus { display: flex; flex-direction: column; flex: 0 0 auto; }
.top-gpus { display: flex; flex-direction: column; flex: 0 0 auto; } .top-gpu.slim { align-self: stretch; }
.t-gpu { flex-direction: column; } .t-gpu-graph { height: 130px; flex: 0 0 130px; } .t-gpu-stats { width: auto; max-height: none; }
.t-cpu { flex-direction: column; } .t-cpu-graph { height: 130px; flex: 0 0 130px; } .t-cores { width: auto; max-height: 40vh; }
.t-net { flex-direction: column; } .t-net-nums { width: auto; } .t-net-graphs { flex: 0 0 130px; }