Firmware simulator · grid.cpp + display.cpp + animations.cpp + webui.h ported to JS
The word logic, transitions, attract shows and the mobile control UI below are ported line-for-line from the real ESP32 firmware — not a mockup. Both panels share one simulated frame buffer, exactly like the real board sharing LEDs between the engine and the web UI's live preview. Good for previewing wording and animations while the actual print finishes.
The clock (shell B — subtle)
The web UI (real firmware page)
The word grid, per-minute phrasing, hidden-word positions, all six transition styles and all six
attract shows are ported directly from grid.cpp/animations.cpp —
same sprites, same timings, same randomisation. The engine tick mirrors display.cpp:
single-minute changes crossfade, five-minute/hour boundaries run the configured transition,
attract and hidden-word glints fire on their own timers, and a Pac-Man and ghost roam the whole face, slipping behind the lit words,
between events.
What's necessarily simulated: Network, System and the panel-mapping controls have no real radio, flash chip or LED strip behind them, so those sections respond honestly but don't do anything — labelled inline rather than silently pretending. One deliberately-kept quirk: the real firmware's live-preview endpoint reads the raw LED buffer before the brightness scaler, so the phone's preview canvas here also ignores the brightness slider, exactly like the real one does.