Files
homeassistant_espscreen/docs/TEST_RESULTS_0275.md
T
Max Gramser 1a6308aba7 Fix what a full test round of today's releases found: a ticking single clock, a switch that works in standby, no taps from a swipe (0.2.78)
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>
2026-09-18 17:25:23 +02:00

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 no bpp. ESPHome's default is 1 bit per pixel: it loads each glyph with FT_LOAD_TARGET_MONO, so every pixel is either fully on or off. The Roboto text fonts had bpp: 4 since 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: 4 on every MDI font block of home-like-2432s028.yaml and guition-4848s040.yaml; packages regenerated.
  • tools/generate_icons.py (FONT_BLOCK) and tests/test_tile_icons.py expect the bpp: 4 line between size and glyphs, so the icon generator keeps it on every rewrite.
  • No change to the tile protocol, the layouts or the app; the app raises FIRMWARE_VERSION so 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 on bpp: 4 in all four blocks).
  • C++ (clang++ -std=c++17 -Wall -Wextra -Werror -I.): 17/17 PASS, before and after the rebase.
  • tools/generate_packages.py --check and tools/generate_icons.py --check green.
  • esphome compile home-like-2432s028.yaml and esphome compile guition-4848s040.yaml from 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.