StatNode v1.2.0
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/.