Fleet card: fill the GPU/temp slot with daemon vitals (swap, load5/15) on non-GPU nodes
ci / gates (push) Successful in 7s
ci / rust (push) Failing after 8s
ci / frontend (push) Successful in 33s
ci / e2e (push) Has been skipped

Nodes without an onboard GPU + not on Beszel (e.g. smith.lan) left that row empty.
Show the daemon's already-collected swap + 5m/15m load there instead, so every card
is full. (Temp still comes from Beszel; a non-Beszel Mac has no temp source.)

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
This commit is contained in:
Omar Sobh
2026-06-27 07:56:06 -07:00
co-authored by Claude Opus 4.8
parent b82a71d4ea
commit f1f1f4f862
@@ -224,6 +224,13 @@ function HostCard({ node, onRemoved, onMonitor }: { node: FleetNode; onRemoved:
{node.tempMax != null ? <Mini label="temp" value={`${node.tempMax.toFixed(0)}°C`} /> : null} {node.tempMax != null ? <Mini label="temp" value={`${node.tempMax.toFixed(0)}°C`} /> : null}
<button type="button" onClick={() => onMonitor(node.id, node.hostname ?? node.name)} style={{ flex: 1, textAlign: "center", padding: "7px 0", borderRadius: 8, background: "rgba(95,208,138,.06)", border: "1px solid rgba(95,208,138,.18)", color: "#5fd08a", cursor: "pointer", fontFamily: mono, fontSize: 10 }}>monitor →</button> <button type="button" onClick={() => onMonitor(node.id, node.hostname ?? node.name)} style={{ flex: 1, textAlign: "center", padding: "7px 0", borderRadius: 8, background: "rgba(95,208,138,.06)", border: "1px solid rgba(95,208,138,.18)", color: "#5fd08a", cursor: "pointer", fontFamily: mono, fontSize: 10 }}>monitor →</button>
</div> </div>
) : h ? (
// No GPU/Beszel temp on this node → fill with the daemon's other live vitals.
<div style={{ display: "flex", gap: 6, marginBottom: 13 }}>
<Mini label="swap" value={fmtBytes(h.swapUsed)} />
<Mini label="load5" value={h.load5.toFixed(2)} />
<Mini label="load15" value={h.load15.toFixed(2)} />
</div>
) : null} ) : null}
{st === "online" && sshHost ? ( {st === "online" && sshHost ? (