A new page element runs Conway's Game of Life in an area (the whole display
by default), one per page. Start: random dots, one pattern, or the icons
whose names start with a text in turn or in random order. Edges: wrap
around, dead, or a hidden margin where gliders fly out of view (leftovers
that stay put in the margin are cleared, so a glider gun runs cleanly).
It restarts when the board is still or repeats within 16 generations
and/or after a number of generations, after a hold time (an empty board
at once).
logic/life holds the board and timing (tested), display/life_player runs
the board of the shown page, ticked before each frame; frames are paced
like scrolling text. The element reuses existing fields, so the page
format stays the same. The Icons tab has a library of 17 LifeWiki
patterns (checked with a simulation), and the built-in page "Game of
Life" shuffles through the life_ icons. About 12 KB flash, 8 KB RAM.
Version 2.17.0, tested on the display over OTA.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The percentage (rounded down, in the element's font) is centred inside the
bar and its dots invert the bar, so it reads on the filled and the empty
part. It uses the bar's unused format and font fields, so the page format
stays the same. The Bad page shows it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Home Assistant attributes can be paths into lists (forecast.1.condition).
- Date elements can show a day ahead (day offset 0-7).
- Pages hold 16 elements (page format 6; the old formats are frozen at 8).
Pages are reset in place (clearPage), not through a 4 KB temporary.
- Verwachting page: today (icon, temperature, max/min) and the next 2
days with 7 x 7 icons (weer7 <condition>), from a template sensor
(docs/home-assistant.md).
- examples/home-pages.json is exported from the display with all pages
and their icons, private entity id parts replaced by placeholders
(tools/export_examples.py replaces tools/make_example_pages.py).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Rules: "also over a page chosen by hand" (on by default); off, a rule
waits until the manual pick ends. Schedule store version 3, version 2
records are read with the option on.
- The Clock page is stored at boot from the built-in one and can be
edited; Reset (deleting it) brings back the original.
- Home Assistant attributes were never found: ArduinoJson 7.4 takes a
char array key as a literal of its full array length.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- net/ha_api: the HTTP requests run in a FreeRTOS task on core 0; loop()
only hands over copies through queues. The web UI's test button polls.
No more 3-4 s loop() stalls once a minute; timeout raised to 5 s.
- Progress bar page element (page format 4, v3 pages are converted)
- Plex user setting (settings v6): {plex_user} in entity ids
- Plex page (examples): watchers, play/pause icon, title, progress
- Bitmaps cached in RAM: a LittleFS read took ~100 ms on every render
and web preview; long JSON lists sent in 2 KB pieces
- Backup includes the refresh settings and the Plex user
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tools/make_page_screenshots.py asks the ESP32 to draw every page (with the
current Home Assistant values) and writes them as PNG in the style of the web
UI's live view to Pictures/pages/.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>