Skip to content

StatNode v1.2.0

Choose a tag to compare

@Keralots Keralots released this 28 Jul 16:52
· 21 commits to master since this release

Third release. Two glass monitor faces with their own colorways, one animated
chart pipeline shared by every face, and a fuller idle clock scene on the big
panel.

New: glass faces

Two faces render every card as a pane of glass over a generated backdrop:
Aero glass tiles (the tile grid on polished panes, each with its own chart)
and Liquid glass duo (the duo bands and pills as edge-lit capsules).

The panel has no framebuffer to blur, and does not need one: a smooth vertical
gradient, blurred, is still itself. The backdrop is a generated vertical ramp,
so a pane's color is a pure function of the panel row, and panes compose in
sprite-sized windows that join seamlessly without ever reading the panel back.

  • Rounded corners, rim and outer edge are coverage-blended from a sub-pixel
    inset, so nothing on these faces has a stepped edge.
  • Charts get monotone-clamped Catmull-Rom interpolation, an antialiased stroke
    and a depth-faded area fill that blends into the pane instead of punching a
    flat block through it.
  • A warning lights the pane's rim rather than retinting its body, so the chart
    inside keeps its own identity color.

Colorways and surface controls

  • Frosted glass dark and Frosted glass light join the default smoked
    colorway, selected from the new Glass surface card on the Display page.
    Palette ported from the Home Assistant Frosted Glass themes (wessamlauf, MIT).
    Every surface amount is signed now: what separates a light card from a light
    ground is the shadow under it, not a white rim.
  • Three sliders on the same card - highlight strength, highlight spread and
    chart fill. They apply to the panel live as you drag, through a preview that
    sits in front of the stored settings rather than writing them, so a drag costs
    no flash write and Revert puts the panel back.
  • Gradient banding fixed. The compositor worked in whole 8-bit steps and
    glass gradients are slow, so the composite was already a staircase before the
    dither ever saw it. Color now carries four fractional bits and the crawling
    alpha ramps are fractional too: the longest flat run on a 320x480 card went
    from 13 rows to 3.

One chart pipeline for every face

The flat faces stepped a whole column at a time while the glass faces glided.
Every face now shares one pipeline.

  • Charts glide between packets on every face. One pixel is always the same
    number of samples, with the newest reading pinned to the right edge, so the
    plot no longer swings sideways while the history ring fills after a boot.
  • New chart smoothing setting (Off / Light / Medium / Heavy). Both endpoints
    are left exact, so the live end still agrees with the printed reading.
  • The frame interval is paced off what the last frame actually cost plus 50%
    headroom. Measured on a C3 with seven slots the faces span 0.7 ms to 135 ms,
    so a fixed rate would leave the heaviest one permanently overrunning and
    starving WiFi.

Idle clock

The Runner face fills the ~130 px of dead sky the 320x480 panel used to leave
between the clouds and the date: two cloud layers drifting at co-prime
intervals, and a brick sky band with two characters patrolling opposite halves.
Everything extra is gated on measured space rather than on which board it is, so
a 240x240 panel renders exactly as it did before.

Fixes

  • Fully covered chart pixels drew as background (a 256 alpha truncating to 0 in
    a byte). Chart strokes shredded into detached specks and the Liquid pill meter
    drew a single tick instead of a bar.
  • Chart columns spanned only half of each segment, so a one-column spike
    rendered as a floating fragment above the plot.
  • Quantized sensors (whole percent, whole RPM) drew a staircase of flat blocks.
    The auto-scale span now floors at six estimated quanta and the spline clamp
    widened to the four-point neighbourhood.
  • Cells of identical size rendered different type: a "24.0 GB" tile sat two font
    rungs below the "38 %" tile beside it. Equal cells are pre-fit as a group and
    rendered at the smallest rung any member needed, unit faces included.
  • Network throughput read ten times high. The Windows companion packs NIC
    readings as tenths of a KB/s; the device now divides at ingest, before the
    history ring samples. Byte rates climb a B/s to TB/s ladder, so a busy link
    reads 3.6 MB/s instead of 3668 KB/s.
  • Units on the glass faces sat below their numbers. A bottom datum places a box
    bottom, not a baseline.
  • Portal saves post urlencoded. The web server allocates a fixed 32-argument
    table and drops the connection past it, so the 42-field layout form always
    failed with an empty response while the smaller display form always worked.
  • Submitting a form whose style selector had not populated yet silently reset
    the face to Tiles. Absent, blank or out of range now means keep the current
    face.
  • Every color preset listed six slot accents for an eight-slot array, so slots 7
    and 8 filled with black.
  • The screenshot sprite hands its buffer back after each capture unless it lives
    in PSRAM. Holding 57.6 KB of internal heap on the C3 left the web server
    unable to allocate for new connections.

Flashing

Pick the file matching your board's env: firmware-v1.2.0-<env>.bin is the full
image for a USB or web flash at 0x0; OTA_ONLY_firmware-v1.2.0-<env>.bin is
for the portal's Maintenance page. See the README for the board/env table and
the web-flasher walkthrough.

The companion app is unchanged except that its status page knows the two new
face names. Keep using the StatNodeCompanion.exe from the v1.0.0 release, or
run it from source in StatNode-CompanionApp/.