SquachWatch-CYD

Try it in your browser

This is the device's actual firmware — the same C++ that ships to the ESP32 — compiled to WebAssembly. Every screen, gesture, debounce and long-press is the real thing. Click the screen to touch it.

state booting fps —
loading firmware…

Simulate a detection

There are no radios in a browser, so nothing will ever be found on its own. Send it something:

Settings persist in this browser. Factory reset clears them and replays first boot — the colour check and Squachy's walkthrough.

A SquachWatch nearby

A second SquachWatch that only exists in this page. It sends real SquachMesh adverts into the real firmware, so it turns up exactly when a board nearby would — and it answers what you send it.

On a real board SquachMesh starts behind a warning you have to accept, then a phrase you pick. Set up skips both — you can still walk through them yourself under Settings. Its look is copied once, when it arrives, just as a board does: to see a new outfit or name, send it away, let it leave, and bring it back.

Getting around

  • First boot runs a colour check and Squachy's walkthrough — tap through them.
  • SCAN LOG CLR along the bottom.
  • The gear in the top-left opens Settings; the icon top-right rotates the screen.
  • Tap Squachy to pet him. Hold CLR for four seconds to unlock every outfit.

What's real and what isn't

Real: the state machine, touch mapping, settings, persistence, and all the rendering. Colours are quantised to the panel's actual 8-bit RGB332, so this looks like the hardware rather than better than it.

Not real: the radios. Detections come from the Trigger button, the nearby SquachWatch is simulated, messages use a stand-in cipher rather than the device's AES, and the shape layer isn't pixel-exact against the display library.

The frame rate is capped to 33fps to match what the hardware actually manages once the SPI push to the panel is counted, so animations run at device speed rather than at your monitor's refresh.