Calendar analog clock with ticks and numerals; tiles without background

Firmware 0.2.16: the analog clock uses index strokes with 12/3/6/9
numerals on large cards and shows a calendar block (weekday, big day,
short month) beside the dial on single tiles; wide cards keep the digital
time and date. New palette key 'none' hides only the card fill and
border: geometry, padding and the pressed flash stay identical. Skeleton
frames and the render self-test honour the transparency.

App 0.2.15: 'Geen' in the background palette with a dashed mockup tile,
min_firmware 0.2.16 for such layouts, demo layout with the bare calendar
clock (--wide for the double-width clock). README and AGENTS note that
every push is a release and bumps the add-on version.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Max Gramser
2026-09-13 09:52:33 +02:00
parent 84d9aa8f3e
commit 437b8c55b4
20 changed files with 185 additions and 24 deletions
+2 -1
View File
@@ -103,7 +103,8 @@ klikgedrag, een mini-slider, een grote waarde, een grafiek (sensoren), een
weersvoorspelling (weer) of de breedte **Dubbelbreed**. De ingebouwde **Klok**
staat bovenaan de kiezer; zon, kookwekkers en personen vind je via de filters. Kies bij
**Pastel achtergrond** een eigen kleur met donkere tekst; **Standaard** herstelt
de normale weergave. Hiervoor is firmware 0.2.10+ nodig. Een lege
de normale weergave en **Geen** laat de kaart weg, zodat de inhoud even groot
direct op de schermachtergrond staat (firmware 0.2.16+). Hiervoor is firmware 0.2.10+ nodig. Een lege
tegel brengt je naar de zoekbalk; toevoegen vult de eerstvolgende vrije positie.
Het voorbeeld toont de indeling, geen live sensorwaarden.
Klik **Opslaan & naar scherm** om je wijzigingen door te sturen.
+12
View File
@@ -128,6 +128,18 @@ Een oude apprelease van vóór 0.2.10 kent dit optieveld niet. Bij terugrollen v
de app herstel je daarom de bijbehorende gegevensback-up; wis of negeer geen
onbekende opties om een oud opslagbestand toch te openen.
### Compatibiliteit app 0.2.15 / firmware 0.2.16
Opslagversie en tegelprotocol blijven 1. `tiles[].options.background` krijgt de
extra paletnaam `none` ("Geen"): geen kaart achter de tegelinhoud. Oudere
firmware kent de naam niet en valt terug op de normale kaart; omdat dat voor de
gebruiker onzichtbaar misgaat, stuurt de manager zo'n indeling pas na firmware
0.2.16 (`min_firmware`) en bewaart haar ondertussen. De firmware verbergt
uitsluitend vulling en rand (`bg_opa`/`border_opa`); maten, padding en de
pressed-feedback op de PRESSED-state blijven gelijk. De analoge klok wijzigt
alleen de tekening (streepjes, cijfers, kalenderblok op enkele tegels); er is
geen nieuw veld voor nodig. Geen gewijzigde preferences of sleutels.
### Compatibiliteit 0.2.12 / firmware 0.2.14
Opslagversie en tegelprotocol blijven 1. Additief: `tiles[].options.size`
+45
View File
@@ -0,0 +1,45 @@
# App 0.2.15 / firmware 0.2.16 — kalenderklok en tegels zonder achtergrond
## Wijzigingen
- **Analoge klok**: index-streepjes (`lv_line`, parts 0–11) met de cijfers 12,
3, 6 en 9 als labels op de vier hoofdposities van grote kaarten; de CYD
houdt twaalf streepjes. Op een enkele tegel staat naast de wijzerplaat een
kalenderblok: weekdag (tegelsubfont), grote dag (`clock_digits`) met de
korte maand (`label`) op dezelfde basislijn — LVGL's `base_line` wordt
daarvoor gebruikt. De CYD toont "13 sep" in het grote-waardefont. De
dubbelbrede kaart houdt de digitale tijd en datum naast de wijzerplaat.
Nieuwe extra-modus `calendar` (enkel) naast `analog` (dubbelbreed), zodat
de parts bij een breedtewissel opnieuw worden opgebouwd.
- **Achtergrond: Geen** (`background: none`): de firmware zet `bg_opa` en
`border_opa` van de tegel op transparant; padding, maten en positie blijven
identiek aan een kaart, zoals de eigenaar vroeg ("niet groter maken zonder
achtergrond"). De pressed-flits blijft werken (PRESSED-state). Het skeleton
bij een paginawissel toont voor zo'n tegel geen kader. `check_tile_geometry`
controleert nu ook of de opaciteit klopt met de tegeloptie.
- **App**: paletsleutel `none` ("Geen") met een doorgestreept staal; de mockup
toont zo'n tegel als stippellijn; `min_firmware` eist 0.2.16 voor indelingen
met deze optie. Demo-indeling (`diagnostics/send_layout.py`) gebruikt nu de
enkele analoge klok zonder achtergrond; `--wide` geeft de dubbelbrede klok.
## Tests
- 54 Python-tests (met nieuwe paletnaam-test) en negen C++-testprogramma's
geslaagd; `tools/generate_packages.py --check` verifieert beide pakketten.
- Guition-build geslaagd (RAM 31,0 %, flash 17,4 %); CYD-build geslaagd
(RAM 30,0 %, flash 73,0 %). Eerste build faalde op `std::max(int, long)`
rond `lv_font_get_line_height`; opgelost met expliciete int-casts.
- Poorten vooraf vastgesteld met `esptool chip_id`: `usbserial-210` = ESP32-S3
(Guition), `usbserial-130` = ESP32 (CYD). Beide via USB geflasht; het
uploadlog toont `firmware.bin` uit de juiste buildmap.
- Guition, demo-indeling: acht `page_check=PASS count=9` (kalenderklok zonder
achtergrond, forecast, grafieken, zonnebaan), daarna één FAIL op het moment
dat de manager de echte indeling terugzette (slot 5 wisselde van zonnebaan
naar een gewone tegel binnen dezelfde frame; count ging naar 5). Tweede run
op de echte indeling: 10/10 PASS (`count=5`, heap ~6,46 MB). Snapshot
`diagnostics/guition-0216-demo-p1.png` toont de echte indeling met de
kalenderklok (streepjes, cijfers, "zondag 13 sep").
- CYD, demo-indeling: 10/10 PASS (zes met `count=9`, daarna `count=7` na
herstel van de echte indeling; ~40–53 kB vrij heap).
- De eigenaar bekeek de Guition na de flash: "ziet er top uit". De CYD is nog
niet visueel beoordeeld; geen langdurige stabiliteitsproef uitgevoerd.