1a6308aba7
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>
60 lines
4.4 KiB
Markdown
60 lines
4.4 KiB
Markdown
# Test results app 0.2.78 / firmware 0.2.65 (2026-09-18)
|
|
|
|
Max: "ga eens je ultra best doen om de commits van vandaag lokaal 100% te testen", then "gedegen code analyse en check op
|
|
internet of dit best practise is", and after the report "can you address them?". This release fixes what that test round
|
|
of 0.2.72 to 0.2.76 found, with Max's choices for the product questions: a swipe is never a tap, the waking push also
|
|
switches a full-page switch, and the same page tile may sit on several pages. See CHANGELOG 0.2.78 and the compatibility
|
|
note in docs/RELEASING.md.
|
|
|
|
## The test round of 0.2.72 to 0.2.76 (before the fixes)
|
|
|
|
- Python suite at every release point: 386 (2cb3479, 9f5694b), 398 (1ed42dc), 409 (bb25353, 261fa82), 0 skips, no
|
|
order dependence over 43 runs (reverse, shuffled, `-X dev`). Only the older test_camera.Feed timing flake failed.
|
|
- C++: 17/17 at every tag with the project's flags, ASan + UBSan, libc++ hardening, g++ 16 with `_GLIBCXX_DEBUG`, plus
|
|
594 new runtime_model checks, 20,022 comparisons with the add-on's packing and 200,000 fuzz rounds, all clean.
|
|
- Editor: Vitest 46/46, vue-tsc clean, and the committed bundle rebuilt byte for byte at 1ed42dc, bb25353 and 261fa82.
|
|
- ESP32 builds of both boards, also fetched from GitHub the way users get them; the add-on image built and started.
|
|
- Host harnesses: full page 37/37 per board, page buttons 12/12 per board (the 0.2.71 rule fails 3/12 and 4/12, as it
|
|
should), wake/sleep, settings, cover and history on the Guition without regressions; 4 bpp icons measured (2 grey
|
|
levels became 15 to 16).
|
|
- Found and fixed here: the frozen second hand of a single analog clock (since 0.2.74), unsaved edits lost when clicking
|
|
the open screen, dragging to page 2+ on a phone, Identify and Try it answering 500, a 48-tile layout too long for one
|
|
message saving anyway, packing past slot 47, an offline screen counted as very old firmware, the 32-bit redraw mask,
|
|
a crash instead of a refusal when memory runs out, a firm press on Previous/Next doing nothing, python as PID 1
|
|
(every stop took 10 s), the 16 KB request limit, asterisks in What's new, docs that still said twenty tiles.
|
|
|
|
## Automated (this release)
|
|
|
|
- `tools/check.sh` (new; the same script runs in GitHub Actions), on this release rebased onto 0.2.77 (the media card):
|
|
Python 454 tests OK, C++ 18/18 with `-Wall -Wextra -Werror`, packages and icons current, Vitest green, vue-tsc clean, build, and the committed editor bundle
|
|
equal to a fresh build.
|
|
- `tools/check.sh --firmware` with ESPHome 2026.6.2, on copies of both board profiles with the fallback access point and
|
|
captive portal users get:
|
|
|
|
| Board | firmware.bin | of the app slot | vs 0.2.75 |
|
|
|---|---|---|---|
|
|
| CYD | 1,652,384 B | 90.0 % of 1,835,008 B (183 KB free) | -3,200 B (Montserrat 14 no longer built: -13,936 B; the 0.2.77 media card adds the rest) |
|
|
| Guition | 2,026,608 B | 24.9 % of 8,126,464 B | |
|
|
|
|
The CYD sits at the edge of the new budget's "tight" band (90-93 %): the next release states its flash delta.
|
|
|
|
## Firmware on the Mac (host builds, virtual finger)
|
|
|
|
- Full-page harness (`fullpage_host.py`, 37 checks: taps, holds, drags, keys, page jumps, 48 tiles, six forecast/clock
|
|
flips), on the fixes before the rebase onto 0.2.77: Guition 37/37, CYD 37/37. The CYD's first run gave 36/37: the
|
|
harness repeats a tap when the host loop stretches the contact past 350 ms, and the firmware had already counted the
|
|
first one (two light.toggle calls 0.7 s apart); the rerun without that stall passed 37/37.
|
|
|
|
## Not tested
|
|
|
|
- On real hardware: nothing of this release has run on a bench screen yet. To check on the glass: a single analog clock
|
|
ticks; a flick across a full-page light on the Guition does nothing while a tap and a hold still work; one push on a
|
|
dimmed screen with a full-page light switches it; a firm press on Next turns the page.
|
|
- Unit tests cover the repeated page tiles (tests/test_runtime_model.cpp and the Python suite), the memory refusal (a
|
|
stand-in for the free block size on the host), a consumed contact after a flick and the 300 ms page-bar case. The
|
|
gesture handler, the slide-off check and the waking push run inside LVGL and have code review only, no host harness
|
|
run with a finger.
|
|
- Build machine note: Homebrew's Python 3.14.7 cannot load pyexpat on macOS 26.2 (system libexpat lacks
|
|
`XML_SetAllocTrackerActivationThreshold`), which breaks PlatformIO's penv; the builds here ran with ESPHome 2026.6.2 in a
|
|
Python 3.11 venv.
|