A test and code-analysis round of 0.2.72 to 0.2.76 (suites at every tag, sanitizers, ESP32 and GitHub builds, host harnesses on both boards, the editor in a browser, best practice checked against ESPHome, LVGL, Home Assistant and Vue) found these, fixed here with Max's choices for the product questions: - Firmware 0.2.65: the second hand of a single analog clock moves again; on a page that is one full on/off tile the waking push also switches it; on the Guition a flick is never a tap and a finger that slides off a tile doesn't tap it; Previous/Next react to a firm press; the same Go to page tile may sit on several pages; a layout the screen has no memory for is refused instead of crashing; 64-bit redraw mask for 48 tiles; Montserrat 14 no longer built. - App: Save refuses a layout too long for one message or too big for eight pages; an offline screen keeps its firmware version from the device registry; HA refusals reach the editor; 128 KB requests; changelog out of the live stream; cached hashed assets; tini as init and a clean stop; changelog parsing without asterisks or crashes. - Editor: clicking the open screen keeps unsaved edits, edits during a save stay unsaved, a Page row and phone dragging to other pages, repeated page tiles, limits from the server, HA's error messages, a type-checked build. - tools/check.sh + GitHub Actions + a CYD flash budget; docs match 48 tiles and the new editor. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
3.6 KiB
Test results app 0.2.75 / firmware 0.2.63 (2026-09-18)
Max: "dit icon ziet er overal gek uit op de CYD", with a photo of the mdi:power glyph on a grey key: a lumpy,
uneven ring. This release draws the icon fonts with four bits per pixel on both boards. See CHANGELOG 0.2.75.
Built on 0.2.74 (full-page tiles, bb25353), which itself follows 0.2.73 (the Vue editor, 1ed42dc).
What happened before
- Every Material Design Icons
font:block of both boards (28/18/12 px on the CYD, 42/26/18 px on the Guition, plus the 40/64 px font of a full-page tile since 0.2.74) had nobpp. ESPHome's default is 1 bit per pixel: it loads each glyph withFT_LOAD_TARGET_MONO, so every pixel is either fully on or off. The Roboto text fonts hadbpp: 4since the first release; nothing in the history or the docs says the icons were left at 1 on purpose. - A thin stroke suffers most. The ring of mdi:power at 18 px (the climate power key, the settings page) comes out between one and two pixels wide around its circumference; at 28 px (a tile) the ring still wobbles. Filled icons such as the lightbulb or the cog only get a ragged outline. Rendering the real glyphs through freetype the way ESPHome does, side by side at 1 and 4 bpp, showed exactly the ring of Max's photo.
What changed
bpp: 4on every MDI font block ofhome-like-2432s028.yamlandguition-4848s040.yaml; packages regenerated.tools/generate_icons.py(FONT_BLOCK) andtests/test_tile_icons.pyexpect thebpp: 4line betweensizeandglyphs, so the icon generator keeps it on every rewrite.- No change to the tile protocol, the layouts or the app; the app raises
FIRMWARE_VERSIONso the manager offers the update.
Flash on the CYD
Measured by compiling the same profile twice at the same commit (0.2.72, 9f5694b), only the bpp lines differ:
| Build | firmware.bin | of the 1.835 MB app slot |
|---|---|---|
| 1 bpp (before) | 1 538 032 bytes | 83.8 % |
| 4 bpp (this release) | 1 632 736 bytes | 89.0 % |
| difference | +94 704 bytes | +5.2 points |
Correction (after the release): that table was measured at 0.2.72, before 0.2.74's 40 px full-page icon font, which
also went to 4 bpp. The released CYD build of this commit (261fa82) is 1 655 584 bytes, 90.2 % of the 1 835 008-byte
slot: +107 744 bytes against 0.2.74 (1 547 840 bytes, 84.4 %), matching ESPHome's own glyph count (+107 756 bytes).
So the release costs 108 KB, not 95 KB, and the slot is 90 % full, not 89 %. Static RAM 21.7 % (71 188 of 327 680
bytes); about 180 KB stay free for later rounds.
The glyph bitmaps alone grow by 108 KB (309 icons at three sizes plus the big font, counted with freetype); the linker's alignment takes a little of that back. Fonts live in flash, so RAM does not move (24.1 % static in both builds). 2 bpp would have cost 38 KB but still shows four grey steps on a thin ring; the Guition has 16 MB flash and gets the same 4 bpp so both brands look alike.
Automated
- Python (
.venv-portal,unittest discover -s tests): 409 tests OK on 0.2.74 plus this change (386 before the rebase, at 0.2.72; the icon-font test now insists onbpp: 4in all four blocks). - C++ (
clang++ -std=c++17 -Wall -Wextra -Werror -I.): 17/17 PASS, before and after the rebase. tools/generate_packages.py --checkandtools/generate_icons.py --checkgreen.esphome compile home-like-2432s028.yamlandesphome compile guition-4848s040.yamlfrom a worktree (icon-bpp), sequentially.
Hardware
- Pending: the bench CYD flashed with this firmware, then Max looks at the power key, a light tile and the settings page.