Skip to content

v0.5.8 — Pin lifetime + hero glide

Choose a tag to compare

@zzallirog zzallirog released this 13 May 05:38

Two display-layer refinements on top of the 10 Hz cockpit that landed in v0.5.7. Past-prediction pins now share their visible lifetime with the active forecast horizon, and hero metric numbers tween toward each freshly fetched value via requestAnimationFrame so the eye glides across cache-flips instead of stepping through them.

Hero glide

live now and the Δ-prediction now read from displayT / displayPred Lit state which cubic-eases toward the freshest fetched value over ≈400 ms. At 10 Hz refresh + 3 s predict-cache, a 13.9° → 7.5° flip used to teleport the moment the cache rolled over; now it becomes a perceptually smooth glide. The data layer is untouched — fetch cadence, predict-cache TTL, and cur.t semantics are exactly what v0.5.7 shipped. Only the visual layer is interpolated.

requestAnimationFrame self-cancels when a value lands, and disconnectedCallback cleans up an in-flight tween so navigating away doesn't leak a frame loop.

Pin lifetime

Past-prediction pins now decay with the active horizon.

Earlier hotfix clamped expired pins to the left canvas edge, producing an ever-growing fan of red rays anchored at -T_PAST. The right idea: a pin's visible age equals the active horizon (5 / 15 / 30 s), then it fades to nothing — same memory window as the forecast curve points to. Quadratic alpha gives a soft tail; ring radius also tapers with age so the newest pin is the brightest mark on the canvas.

The horizon toggle becomes a single semantic lens: what you see ahead = what you remember behind. At +5s mode the canvas shows last-5-s of pins next to a +5 s forecast curve; at +30s, a full half-minute of memory on either side.

Fixed

  • Cockpit's hero live now reading is no longer momentarily blank during the very first refresh — displayT falls back to cur.t before the first tween completes.

Tests

715+ tests pass. No backend contract changes.