Open `http://<ESP32 IP>/` (e.g. <http://10.1.1.198/>) in a browser. At the top is a live
view of the display: it shows what the dots show right now, updated every 1.5 s. Each tab
has its own address, e.g. `http://10.1.1.198/#schedule`; `#pages/<page name>` opens a page
in the editor.
The screenshots are made with `python tools/make_webui_screenshots.py` (Edge or Chrome in
headless mode).
## Show
Choose what the display shows during the day: a dynamic page (e.g. the built-in Clock:
Pikachu with the time) or any bitmap, and what is left on the dots when the display
switches off. With a [schedule](#schedule), a page chosen here (or with the Home Assistant
"Mode" dropdown) is shown until the next block starts; "Back to schedule" ends it earlier.
Bitmaps that pages or rules use are in their own subsection.

## Pages
Dynamic pages: a background bitmap per time of day (e.g. Pikachu from 00:00, yawning
Pikachu from 17:00) with up to 8 elements on top. The preview is drawn by the ESP32, so it
is exactly what the display shows; drag the elements on it, or select one and use the
arrow keys. Built-in pages can be copied, not changed. See the [pictures of the pages](pages.md).
| Element | Options |
|---------|---------|
| Clock | `08:05`, `8:05`, optionally with seconds |
| Date | 7 formats, Dutch or English (`do 15 okt`, `15 oktober`, `donderdag`, ...) |
| Home Assistant value | An entity or attribute, text before and after. Shown as a number (multiplier, decimals, auto unit `1257 W` → `1.3 kW`, without minus sign), a duration (`2h 21m`, `2:21:00`, `2:21`, `2 uur`), a time from an HA timestamp (`23:07`, `do 23:07`, `15-10 23:07`, `over 34 min`) or with own texts per state (`printing=Bezig, standby=Klaar`) |
| Text | Up to 32 characters |
| Countdown | To a date and time: smart (`12 dagen`, `5 uur`, `34 min`, `0:45`), days, `12d 04:05`, with seconds; a text when it has passed |
| Stopwatch | `4:05`, `0:04`, `0:04:05`; started in the [Stopwatch](#stopwatch) tab or Home Assistant |
| Image | A bitmap at a position, fixed or chosen by a Home Assistant state (`weer ` + `cloudy` = the bitmap `weer cloudy`) |
| Progress bar | Filled from the left by a Home Assistant number: value x multiplier / "full at" (a percentage: full at 100). Width, height, with or without a frame |