Top: a graph's past holds still — columns draw the peak of their own fixed slice of history

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Mitchell-Johnson
2026-09-21 10:54:30 -07:00
co-authored by Claude Fable 5.1
parent be0f2a5aaf
commit ec94cb8bff
6 changed files with 118 additions and 18 deletions
+15
View File
@@ -486,6 +486,21 @@ is 11px wide" at 1392); run after, nothing, in both browsers.
and history window and corrects only what differs (logged as `fleet: grid had ms=1000,
now 250`).
11. ✅ **The net graph redrew its own past every second** (Mitchell, two screenshots a second
apart: one tall spike in the first, a comb of medium ones in the second). That box is
about 75 dot-columns wide and holds 300 points, and each column drew *the nearest point*
— one in four, and a different one in four each time the curve advanced, so spikes came
and went and the whole shape changed while the scale stayed put. The CPU graph did the
same on a phone. Now a column draws the **peak** of all the points in it, and columns are
cut from the data, not from the box (`web/src/graphcols.ts`): a finished column never
changes, the graph only slides left by whole columns. Measured by reading every column's
height off the canvas once a second under bursty traffic: on the live build the past
changed shape in 18 of 47 frame pairs; after, 0 of 46 — and 0 of 45 on a young history.
`npm test` (now part of `make test`) scrolls a spiky curve through both rules: nearest-
point shows its three spikes as "900,500", then "700", then none; the new rule shows all
three, at their heights, on every frame. The scale label now covers what is drawn (the
window), not everything kept.
## Skins
✅ Top now wears the skin. The ground is the skin's terminal background and every curve and