Panel rebuilt as the heat matrix: verdict header (ring + newest fault named with its age, cable cell top right), one row per check with NOW / last-90s-at-5s-a-cell / since-reset columns, noise as a blue context lane; history.go keeps the 18-slot wall-time ring (per-class fault deltas, SNR minima, rate verdicts, measuring gray) plus since-reset aggregates and fault ages that clear on reset; noise cycle grid-locked to the shared slot clock so cells never straddle a phase and flicker, presence granted at boot until the first up-phase verdict; check/cross stroked as capsule marks (font has neither), line rate is a pure verdict everywhere, footer is a three-line stat stack beside hold-to-reset; old panel/chip/stat-grid machinery deleted; mockups/ gitignored

This commit is contained in:
flamingcow
2026-08-17 12:22:55 -07:00
parent e3c3f945c5
commit fb4b4596e9
8 changed files with 641 additions and 337 deletions
+11 -10
View File
@@ -65,21 +65,22 @@ func drawFatal(cause error) error {
return err
}
const margin, lineGap = 32, 8
fb.fill(uiBg)
noteY := fb.h - spaceRow - body.lineH
y := spaceRow
title.draw(fb, spaceRow, y-title.capTop, "FATAL", uiRed)
y += title.lineH + spaceRow
for _, line := range wrapWords(cause.Error(), (fb.w-2*spaceRow)/body.cellW) {
if y+body.lineH > noteY-spaceRow {
body.draw(fb, spaceRow, y-body.capTop, "...", uiFg)
noteY := fb.h - margin - body.lineH
y := margin
title.draw(fb, margin, y-title.capTop, "FATAL", uiCrit)
y += title.lineH + margin
for _, line := range wrapWords(cause.Error(), (fb.w-2*margin)/body.cellW) {
if y+body.lineH > noteY-margin {
body.draw(fb, margin, y-body.capTop, "...", uiInk)
break
}
body.draw(fb, spaceRow, y-body.capTop, line, uiFg)
y += body.lineH + spaceTight
body.draw(fb, margin, y-body.capTop, line, uiInk)
y += body.lineH + lineGap
}
note := fmt.Sprintf("rebooting in %d minutes", int(fatalRebootDelay.Minutes()))
body.draw(fb, spaceRow, noteY-body.capTop, note, uiDim)
body.draw(fb, margin, noteY-body.capTop, note, uiMuted)
return fb.flush()
}