Files
Max Gramser b9e1dfbd95 Close cards through one path so the page swipe is never left blocked (0.2.32)
Read live on a Guition: every edge swipe was recognised but refused by the
"card open" check, because the light, climate and vacuum cards cleared
their overlay on close (X, tap beside the card, wake from standby) without
forgetting active_entity. One opened card blocked swiping until the next
layout change; the old whole-screen gesture and the CYD had the same gate.
Both boards now close cards through one script, close_cards, which hides
every overlay and clears that state; wake_display uses it too.

The Guition edge swipe now follows LVGL's own pointer events
(lv_indev_add_event_cb: PRESSED begins, PRESSING flips the page and calls
lv_indev_wait_release from inside LVGL) instead of ESPHome's touchscreen
on_update, so the point arrives already rotated. The direction rule is 45
degrees instead of twice as horizontal, and the log now says why a swipe
was refused or how far an unfinished one got. Firmware 0.2.27 for both
boards; the app only moves its target version.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-14 13:09:53 +02:00

3.0 KiB

Testresultaten app 0.2.32 / firmware 0.2.27 (2026-09-14)

Alleen firmware: de randveeg die op een echte Guition (Studio 1, firmware 0.2.24) nooit pakte, plus de veeg op LVGL's eigen pointer-events. De app verandert alleen de doelversie.

Live diagnose op Studio 1 (ESPHome-log via de native API)

  • Elke veeg begon netjes in de band (GT911 press x=0…13 links, x=470…478 rechts), maar er volgde nooit randveeg. Instelling stond aan (add-on: swipe_pages: true, 10 tegels, rotatie 0), ui_state meldde niet gedimd, geen kalibratie, geen runtime-kaart.
  • Na preview_runtime_card -1 (roept runtime_tiles::dismiss() aan) werkte elke veeg meteen: randveeg: pagina 0 -> 1. Oorzaak: de kruisjes en achtergrondtikken van de licht-, klimaat- en stofzuigerkaart en het wakker worden uit standby verbergen de kaart zonder active_entity te wissen; de veeg-guard leest die en meldde stil "kaart open". Dezelfde gate zat in de oude LVGL-gesture en in het CYD-profiel.
  • Daarna: ongeveer één op de twee eerste vegen na een paginawissel vuurde niet, de tweede wel (bijvoorbeeld 12:57:28 en :29 vanaf rechts zonder wissel, :29 wel). De 0.2.24-firmware logde daarvoor niets; 0.2.27 meldt nu randveeg niet gevuurd: N px naar binnen, M px verticaal en de richtingseis is 45° in plaats van "twee keer zo horizontaal".
  • Eén tik werd terecht geweigerd: tik op script.studio_1_startup_sequence genegeerd: verplaatst 73 px (grens 67); de grens op de Guition is een open vraag aan Max.

Wat veranderde

  • cyd::EdgeSwipe op LVGL-pointercoördinaten (begin(x, y, width) met de horizontale resolutie van LVGL, dus rotatie is al verwerkt), 45°-regel, inward()/sideways().
  • Guition: één lv_indev_add_event_cb in on_boot (PRESSED → begin, PRESSING → update en paginawissel met lv_indev_wait_release, RELEASED/PRESS_LOST → logregel als de veeg niet vuurde); geblokkeerde vegen loggen de reden. De touchscreen-triggers voeden alleen nog de tap-guard.
  • Beide borden: script close_cards (via runtime_tiles::dismiss(), anders overlays verbergen en active_entity wissen) voor de zes sluitknoppen en wake_display.

Geautomatiseerd

  • C++ (clang++ -std=c++17 -Wall -Wextra -Werror -I.): 11/11 PASS; test_cyd_ui dekt de nieuwe EdgeSwipe-API, de 45°-regel, de logwaarden en een smallere (gedraaide) breedte.
  • Python: 91 tests OK (FIRMWARE_VERSION 0.2.27 in app, profielen en pakketten). generate_packages.py --check groen.
  • ESPHome 2026.6.2 compile (verse worktree, geen cache): easy-guition-device.yaml SUCCESS in 112 s (RAM 32,0%, flash 18,3%), easy-cyd-device.yaml SUCCESS in 86 s (RAM 31,0%, flash 76,1%); geen nieuwe waarschuwingen.

Nog te controleren op Studio 1

  • Werkt de randveeg direct na een update zonder eerst een kaart te openen en te sluiten, en pakt de eerste veeg na een paginawissel nu ook; het log (touch) laat het zien.
  • Na het openen en sluiten van een lichtkaart (kruisje, tik ernaast, standby) blijft vegen werken.