Releases: koosoli/ESPHomeDesigner
v1.0.0-rc.12.8
v1.0.0 RC12.8 - LVGL Trigger Routing & Package Merge Hardening
Release Date: April 20, 2026
This RC12.8 follow-up is a targeted hardening release for Issue #385. Real-world feedback on the first YAML round-trip implementation exposed a deeper exporter bug: custom widget state triggers for lights could be merged into LVGL brightness sensor blocks as a second on_value, producing invalid ESPHome YAML, and package-based outputs could still end up with repeated mergeable sections in certain regenerated layouts. RC12.8 fixes both paths and adds regression coverage around the exact slider-plus-icon failure pattern reported from the field.
Stability & Verification
- Mode-Aware Custom Trigger Routing (Issue #385): Widget-level custom triggers now keep their resolved
on_stateversuson_valuemode when queued for export, so binary-domain entities such aslight.*no longer get misrouted into numeric sensor sections just because the sameentity_idappears there. - Single-Block Trigger Merging (Issue #385): Sensor export now merges all matching trigger actions for one YAML item into a single trigger block, preventing duplicate
on_value:keys when a light-backed LVGL slider and a custom widget trigger both reference the same Home Assistant light. - Repeated Section Coalescing (Issue #385): YAML section merging now coalesces repeated
sensor:andtext_sensor:blocks that reappear later in package-based output, reducing the chance of regenerated package snippets carrying duplicate mergeable sections afterlvgl:. - Regression Coverage Expansion: Added focused frontend regressions for the light-slider/custom-trigger collision, mixed trigger-source single-item merging, and repeated mergeable-section coalescing in package-style YAML merges.
v1.0.0 RC12.7 - Persistence & LVGL YAML Round-Trip Fixes
Release Date: April 19, 2026
This RC12.7 follow-up extends the earlier storage fix from Issue #382 with two more persistence-focused corrections: restoring grouped-widget parent references from Issue #384 and adding a supported LVGL custom state-trigger path for the YAML round-trip gap reported in Issue #385. The result is a safer save/load path for grouped layouts and a more honest, more durable workflow for custom LVGL automations.
Stability & Verification
- Sensor Text Secondary Entity Persistence (Issue #382): Sensor Text widgets continue to preserve
entity_id_2through backend save/load, so the secondary Home Assistant entity survives alongsideattribute2instead of dropping on reload. - Grouped Widget Parent Persistence (Issue #384): The backend widget model now stores and reloads
parentId, so children remain attached to their group containers after layouts are saved and loaded again. - Supported LVGL State Trigger Round-Trip (Issue #385): LVGL layouts now have a first-class widget-level state-trigger path that stores the trigger entity, trigger mode, and raw
then:action YAML in widgetprops, then injects those actions back into generatedsensor,text_sensor, orbinary_sensorsections during export. - Import Recovery & Honesty Warnings (Issue #385): YAML imports now recover the supported marked state-trigger blocks back into widget props when possible, and show a warning when unsupported custom automations remain raw YAML only instead of pretending they are fully editable on the canvas.
- Regression Coverage Expansion: Added backend model/storage regressions for grouped-widget parent persistence plus frontend tests that cover the new LVGL state-trigger editor controls, trigger registration/export injection, import recovery, and warning flow.
v1.0.0 RC12.6 - Cookbook-Aligned Light Slider Actions
Release Date: April 17, 2026
This RC12.6 follow-up carries the next real-device correction for Issue #371. After the RC12.5 release restored raw brightness tracking and fixed the mixed-type lambda build failure, additional user testing showed that newer ESPHome/Home Assistant combinations behave more reliably when generated LVGL light sliders follow the current cookbook pattern for action dispatch. RC12.6 moves that behavior onto its own release line, refreshes the visible release metadata, and rebuilds the shipped frontend assets for a clean follow-up cut.
Stability & Verification
- Cookbook-Aligned Light Slider Actions (Issue #371): Light-backed LVGL sliders now export
homeassistant.actionwith rawbrightnessvalues and trigger the HA call onon_release, matching the current ESPHome LVGL light-brightness cookbook pattern and avoiding the silent no-op behavior reported with the olderhomeassistant.servicepath on newer Home Assistant installs. - Regression Coverage Expansion: Updated the LVGL slider regression tests to lock the
homeassistant.actionpayload shape, the raw integerbrightnesslambda output, and theon_releaseevent path for light-backed sliders without changing the existing non-light slider service flow. - Release Metadata Refresh: Updated the package version, package lock metadata, Home Assistant manifest version, visible header label, release notes heading/date, and rebuilt frontend assets for the RC12.6 release line.
v1.0.0 RC12.5 - Light Brightness Attribute Compatibility
Release Date: April 16, 2026
This RC12.5 follow-up is a narrow post-release correction for Issue #371. Real-device feedback after the RC12.4 release showed that some Home Assistant lights publish live state through the raw brightness attribute instead of brightness_pct, and that the generated light-slider lambdas could still fail ESPHome compilation because different branches returned mixed numeric types. RC12.5 fixes both issues, refreshes the visible release metadata, and rebuilds the shipped frontend assets for a clean follow-up cut.
Stability & Verification
- Home Assistant Light Attribute Compatibility (Issue #371): Light-backed LVGL sliders now subscribe to the HA
brightnessattribute for initial state and live updates, which matches the state model shown in Home Assistant Developer Tools for integrations that only expose raw0..255brightness values. - Compile-Safe Light Slider Lambdas (Issue #371): Generated light-slider
value,lvgl.slider.update, andlight.turn_onbrightness lambdas now keep a consistent float return type across every branch, eliminating the ESPHome C++inconsistent types 'float' and 'int' deduced for lambda return typebuild error seen on generated YAML. - Regression Coverage Expansion: Updated the LVGL slider regression tests to lock the raw
brightnessattribute path, the0..255scaling behavior, and the new compile-safe lambda output for both default and scaled slider ranges. - Release Metadata Refresh: Updated the npm package version, package lock metadata, Home Assistant manifest version, visible header label, release notes heading/date, and rebuilt frontend assets for the RC12.5 release line.
v1.0.0 RC12.4 - OpenAI GPT-5 Compatibility & Guition 3.5 Support
Release Date: April 15, 2026
This RC12.4 follow-up rolls in four concrete post-RC12.3 fixes: restoring OpenAI GPT-5 prompt generation after the token-parameter change reported in Issue #379, promoting the Guition 3.5" JC4832W535 board discussed in Issue #340 to a cleaner built-in package/profile path, finishing the Home Assistant light state-tracking follow-up from Issue #371, and taking one more small cleanup pass on the generated deep-sleep control flow from Issue #356. It also synchronizes the visible release metadata and rebuilds the shipped frontend assets for today's RC12.4 cut.
Stability & Verification
- OpenAI GPT-5 Request Compatibility (Issue #379): The OpenAI chat-completions path now sends
max_completion_tokensforgpt-5*models while preservingmax_tokensfor older models, so GPT-5 layout generation works again without regressing the existing GPT-4/OpenAI flow. - Guition JC4832W535 v3 Package Alignment (Issue #340): The bundled 3.5" Guition hardware package now targets the documented
JC4832W535QSPI display model, includes the linked AXS15231 touchscreen configuration, and captures the working calibration/transform/rotation values needed for the board's v3 pinout. - Stable Device ID with Legacy Alias: Added a supported built-in
guition_esp32_jc4832w535device profile for new layouts while keeping the older misnamed internal id as a hidden compatibility alias so previously saved layouts continue to resolve the same hardware package. - LVGL Light State Tracking Completion (Issue #371): Light-backed LVGL sliders now push explicit
lvgl.slider.updateactions from the Home Assistantbrightness_pctattribute, synced LVGL buttons/switches/checkboxes now update their checked state from HA withtrigger_on_initial_state: true, and scaled slider ranges such as0..255now map cleanly tobrightness_pctin both directions so the widgets track HA, each other, and boot-time state correctly. - Deep-Sleep Guard Consolidation (Issue #356): The generated
deep_sleep_cyclescript now performs the firmware-flash delay and stay-awake retry handling once at the top of the script before branching into the overnightuntil:or normal deep-sleep entry path, which keeps the RC12.3 behavior fix w...
v1.0.0-rc.12.7
v1.0.0 RC12.7 - Persistence & LVGL YAML Round-Trip Fixes
Release Date: April 19, 2026
This RC12.7 follow-up extends the earlier storage fix from Issue #382 with two more persistence-focused corrections: restoring grouped-widget parent references from Issue #384 and adding a supported LVGL custom state-trigger path for the YAML round-trip gap reported in Issue #385. The result is a safer save/load path for grouped layouts and a more honest, more durable workflow for custom LVGL automations.
Stability & Verification
- Sensor Text Secondary Entity Persistence (Issue #382): Sensor Text widgets continue to preserve
entity_id_2through backend save/load, so the secondary Home Assistant entity survives alongsideattribute2instead of dropping on reload. - Grouped Widget Parent Persistence (Issue #384): The backend widget model now stores and reloads
parentId, so children remain attached to their group containers after layouts are saved and loaded again. - Supported LVGL State Trigger Round-Trip (Issue #385): LVGL layouts now have a first-class widget-level state-trigger path that stores the trigger entity, trigger mode, and raw
then:action YAML in widgetprops, then injects those actions back into generatedsensor,text_sensor, orbinary_sensorsections during export. - Import Recovery & Honesty Warnings (Issue #385): YAML imports now recover the supported marked state-trigger blocks back into widget props when possible, and show a warning when unsupported custom automations remain raw YAML only instead of pretending they are fully editable on the canvas.
- Regression Coverage Expansion: Added backend model/storage regressions for grouped-widget parent persistence plus frontend tests that cover the new LVGL state-trigger editor controls, trigger registration/export injection, import recovery, and warning flow.
v1.0.0 RC12.6 - Cookbook-Aligned Light Slider Actions
Release Date: April 17, 2026
This RC12.6 follow-up carries the next real-device correction for Issue #371. After the RC12.5 release restored raw brightness tracking and fixed the mixed-type lambda build failure, additional user testing showed that newer ESPHome/Home Assistant combinations behave more reliably when generated LVGL light sliders follow the current cookbook pattern for action dispatch. RC12.6 moves that behavior onto its own release line, refreshes the visible release metadata, and rebuilds the shipped frontend assets for a clean follow-up cut.
Stability & Verification
- Cookbook-Aligned Light Slider Actions (Issue #371): Light-backed LVGL sliders now export
homeassistant.actionwith rawbrightnessvalues and trigger the HA call onon_release, matching the current ESPHome LVGL light-brightness cookbook pattern and avoiding the silent no-op behavior reported with the olderhomeassistant.servicepath on newer Home Assistant installs. - Regression Coverage Expansion: Updated the LVGL slider regression tests to lock the
homeassistant.actionpayload shape, the raw integerbrightnesslambda output, and theon_releaseevent path for light-backed sliders without changing the existing non-light slider service flow. - Release Metadata Refresh: Updated the package version, package lock metadata, Home Assistant manifest version, visible header label, release notes heading/date, and rebuilt frontend assets for the RC12.6 release line.
v1.0.0 RC12.5 - Light Brightness Attribute Compatibility
Release Date: April 16, 2026
This RC12.5 follow-up is a narrow post-release correction for Issue #371. Real-device feedback after the RC12.4 release showed that some Home Assistant lights publish live state through the raw brightness attribute instead of brightness_pct, and that the generated light-slider lambdas could still fail ESPHome compilation because different branches returned mixed numeric types. RC12.5 fixes both issues, refreshes the visible release metadata, and rebuilds the shipped frontend assets for a clean follow-up cut.
Stability & Verification
- Home Assistant Light Attribute Compatibility (Issue #371): Light-backed LVGL sliders now subscribe to the HA
brightnessattribute for initial state and live updates, which matches the state model shown in Home Assistant Developer Tools for integrations that only expose raw0..255brightness values. - Compile-Safe Light Slider Lambdas (Issue #371): Generated light-slider
value,lvgl.slider.update, andlight.turn_onbrightness lambdas now keep a consistent float return type across every branch, eliminating the ESPHome C++inconsistent types 'float' and 'int' deduced for lambda return typebuild error seen on generated YAML. - Regression Coverage Expansion: Updated the LVGL slider regression tests to lock the raw
brightnessattribute path, the0..255scaling behavior, and the new compile-safe lambda output for both default and scaled slider ranges. - Release Metadata Refresh: Updated the npm package version, package lock metadata, Home Assistant manifest version, visible header label, release notes heading/date, and rebuilt frontend assets for the RC12.5 release line.
v1.0.0 RC12.4 - OpenAI GPT-5 Compatibility & Guition 3.5 Support
Release Date: April 15, 2026
This RC12.4 follow-up rolls in four concrete post-RC12.3 fixes: restoring OpenAI GPT-5 prompt generation after the token-parameter change reported in Issue #379, promoting the Guition 3.5" JC4832W535 board discussed in Issue #340 to a cleaner built-in package/profile path, finishing the Home Assistant light state-tracking follow-up from Issue #371, and taking one more small cleanup pass on the generated deep-sleep control flow from Issue #356. It also synchronizes the visible release metadata and rebuilds the shipped frontend assets for today's RC12.4 cut.
Stability & Verification
- OpenAI GPT-5 Request Compatibility (Issue #379): The OpenAI chat-completions path now sends
max_completion_tokensforgpt-5*models while preservingmax_tokensfor older models, so GPT-5 layout generation works again without regressing the existing GPT-4/OpenAI flow. - Guition JC4832W535 v3 Package Alignment (Issue #340): The bundled 3.5" Guition hardware package now targets the documented
JC4832W535QSPI display model, includes the linked AXS15231 touchscreen configuration, and captures the working calibration/transform/rotation values needed for the board's v3 pinout. - Stable Device ID with Legacy Alias: Added a supported built-in
guition_esp32_jc4832w535device profile for new layouts while keeping the older misnamed internal id as a hidden compatibility alias so previously saved layouts continue to resolve the same hardware package. - LVGL Light State Tracking Completion (Issue #371): Light-backed LVGL sliders now push explicit
lvgl.slider.updateactions from the Home Assistantbrightness_pctattribute, synced LVGL buttons/switches/checkboxes now update their checked state from HA withtrigger_on_initial_state: true, and scaled slider ranges such as0..255now map cleanly tobrightness_pctin both directions so the widgets track HA, each other, and boot-time state correctly. - Deep-Sleep Guard Consolidation (Issue #356): The generated
deep_sleep_cyclescript now performs the firmware-flash delay and stay-awake retry handling once at the top of the script before branching into the overnightuntil:or normal deep-sleep entry path, which keeps the RC12.3 behavior fix while removing duplicated guard blocks from the generated YAML. - Regression Coverage Expansion: Added focused tests for the GPT-5/OpenAI request payload branch and for surfacing the corrected Guition board id without exposing the legacy alias as a new supported device choice.
v1.0.0 RC12.3 - Deep Sleep Follow-Through
Release Date: April 12, 2026
This RC12.3 follow-up takes another pass at the remaining deep-sleep behavior from Issue #356. RC12.2 was too optimistic here: the overnight until: branch still dropped out when users chose Ultra Eco (Deep Sleep) and relied on the shared sleep-hours controls. This release fixes that mismatch, trims the misleading deep-sleep refresh bookkeeping in the generated script, and rebuilds the shipped assets for a clean RC12.3 cut.
Stability & Verification
- Deep-Sleep Overnight Window Fix (Issue #356): Generated
deep_sleep_cyclenow uses the configured shared sleep window in Deep Sleep mode as well as Light Sleep mode, so users who set overnight hours and exportUltra Eco (Deep Sleep)once again get thedeep_sleep.enteruntil:/time_id: ha_timebranch at night. - Deep-Sleep Script Cleanup (Issue #356):
manage_run_and_sleepno longer emits the unusedintervalandis_sleep_timebookkeeping in the epaper deep-sleep path, which makes the generated YAML match the real execution flow more closely. - Regression Coverage Expansion: Added focused generator tests for the Deep Sleep plus sleep-hours path and for omitting the unused refresh bookkeeping from the deep-sleep loop.
v1.0.0 RC12.2 - Widget State Accuracy & Release Polish
Release Date: April 11, 2026
This RC12.2 follow-up rolls the remaining [Issue #356](#3...
v1.0.0-rc.12.6
v1.0.0 RC12.6 - Cookbook-Aligned Light Slider Actions
Release Date: April 17, 2026
This RC12.6 follow-up carries the next real-device correction for Issue #371. After the RC12.5 release restored raw brightness tracking and fixed the mixed-type lambda build failure, additional user testing showed that newer ESPHome/Home Assistant combinations behave more reliably when generated LVGL light sliders follow the current cookbook pattern for action dispatch. RC12.6 moves that behavior onto its own release line, refreshes the visible release metadata, and rebuilds the shipped frontend assets for a clean follow-up cut.
Stability & Verification
- Cookbook-Aligned Light Slider Actions (Issue #371): Light-backed LVGL sliders now export
homeassistant.actionwith rawbrightnessvalues and trigger the HA call onon_release, matching the current ESPHome LVGL light-brightness cookbook pattern and avoiding the silent no-op behavior reported with the olderhomeassistant.servicepath on newer Home Assistant installs. - Regression Coverage Expansion: Updated the LVGL slider regression tests to lock the
homeassistant.actionpayload shape, the raw integerbrightnesslambda output, and theon_releaseevent path for light-backed sliders without changing the existing non-light slider service flow. - Release Metadata Refresh: Updated the package version, package lock metadata, Home Assistant manifest version, visible header label, release notes heading/date, and rebuilt frontend assets for the RC12.6 release line.
v1.0.0 RC12.5 - Light Brightness Attribute Compatibility
Release Date: April 16, 2026
This RC12.5 follow-up is a narrow post-release correction for Issue #371. Real-device feedback after the RC12.4 release showed that some Home Assistant lights publish live state through the raw brightness attribute instead of brightness_pct, and that the generated light-slider lambdas could still fail ESPHome compilation because different branches returned mixed numeric types. RC12.5 fixes both issues, refreshes the visible release metadata, and rebuilds the shipped frontend assets for a clean follow-up cut.
Stability & Verification
- Home Assistant Light Attribute Compatibility (Issue #371): Light-backed LVGL sliders now subscribe to the HA
brightnessattribute for initial state and live updates, which matches the state model shown in Home Assistant Developer Tools for integrations that only expose raw0..255brightness values. - Compile-Safe Light Slider Lambdas (Issue #371): Generated light-slider
value,lvgl.slider.update, andlight.turn_onbrightness lambdas now keep a consistent float return type across every branch, eliminating the ESPHome C++inconsistent types 'float' and 'int' deduced for lambda return typebuild error seen on generated YAML. - Regression Coverage Expansion: Updated the LVGL slider regression tests to lock the raw
brightnessattribute path, the0..255scaling behavior, and the new compile-safe lambda output for both default and scaled slider ranges. - Release Metadata Refresh: Updated the npm package version, package lock metadata, Home Assistant manifest version, visible header label, release notes heading/date, and rebuilt frontend assets for the RC12.5 release line.
v1.0.0 RC12.4 - OpenAI GPT-5 Compatibility & Guition 3.5 Support
Release Date: April 15, 2026
This RC12.4 follow-up rolls in four concrete post-RC12.3 fixes: restoring OpenAI GPT-5 prompt generation after the token-parameter change reported in Issue #379, promoting the Guition 3.5" JC4832W535 board discussed in Issue #340 to a cleaner built-in package/profile path, finishing the Home Assistant light state-tracking follow-up from Issue #371, and taking one more small cleanup pass on the generated deep-sleep control flow from Issue #356. It also synchronizes the visible release metadata and rebuilds the shipped frontend assets for today's RC12.4 cut.
Stability & Verification
- OpenAI GPT-5 Request Compatibility (Issue #379): The OpenAI chat-completions path now sends
max_completion_tokensforgpt-5*models while preservingmax_tokensfor older models, so GPT-5 layout generation works again without regressing the existing GPT-4/OpenAI flow. - Guition JC4832W535 v3 Package Alignment (Issue #340): The bundled 3.5" Guition hardware package now targets the documented
JC4832W535QSPI display model, includes the linked AXS15231 touchscreen configuration, and captures the working calibration/transform/rotation values needed for the board's v3 pinout. - Stable Device ID with Legacy Alias: Added a supported built-in
guition_esp32_jc4832w535device profile for new layouts while keeping the older misnamed internal id as a hidden compatibility alias so previously saved layouts continue to resolve the same hardware package. - LVGL Light State Tracking Completion (Issue #371): Light-backed LVGL sliders now push explicit
lvgl.slider.updateactions from the Home Assistantbrightness_pctattribute, synced LVGL buttons/switches/checkboxes now update their checked state from HA withtrigger_on_initial_state: true, and scaled slider ranges such as0..255now map cleanly tobrightness_pctin both directions so the widgets track HA, each other, and boot-time state correctly. - Deep-Sleep Guard Consolidation (Issue #356): The generated
deep_sleep_cyclescript now performs the firmware-flash delay and stay-awake retry handling once at the top of the script before branching into the overnightuntil:or normal deep-sleep entry path, which keeps the RC12.3 behavior fix while removing duplicated guard blocks from the generated YAML. - Regression Coverage Expansion: Added focused tests for the GPT-5/OpenAI request payload branch and for surfacing the corrected Guition board id without exposing the legacy alias as a new supported device choice.
v1.0.0 RC12.3 - Deep Sleep Follow-Through
Release Date: April 12, 2026
This RC12.3 follow-up takes another pass at the remaining deep-sleep behavior from Issue #356. RC12.2 was too optimistic here: the overnight until: branch still dropped out when users chose Ultra Eco (Deep Sleep) and relied on the shared sleep-hours controls. This release fixes that mismatch, trims the misleading deep-sleep refresh bookkeeping in the generated script, and rebuilds the shipped assets for a clean RC12.3 cut.
Stability & Verification
- Deep-Sleep Overnight Window Fix (Issue #356): Generated
deep_sleep_cyclenow uses the configured shared sleep window in Deep Sleep mode as well as Light Sleep mode, so users who set overnight hours and exportUltra Eco (Deep Sleep)once again get thedeep_sleep.enteruntil:/time_id: ha_timebranch at night. - Deep-Sleep Script Cleanup (Issue #356):
manage_run_and_sleepno longer emits the unusedintervalandis_sleep_timebookkeeping in the epaper deep-sleep path, which makes the generated YAML match the real execution flow more closely. - Regression Coverage Expansion: Added focused generator tests for the Deep Sleep plus sleep-hours path and for omitting the unused refresh bookkeeping from the deep-sleep loop.
v1.0.0 RC12.2 - Widget State Accuracy & Release Polish
Release Date: April 11, 2026
This RC12.2 follow-up rolls the remaining Issue #356 polish into a fresh release cut, with a focus on making astronomy and weather widgets fail safely when Home Assistant data is missing or timezone-shifted, while keeping the RC12.x stability fixes and release metadata aligned for deployment.
Stability & Verification
- Local-Time Sunrise/Sunset Rendering (Issue #356):
sun_timeswidgets now convert Home Assistant ISO timestamps into local runtime time before formatting them, sosensor.sun_next_risingandsensor.sun_next_settingno longer show UTC hours as if they were already local. - Explicit Unknown Weather Fallbacks (Issue #356): Weather icon and forecast widgets now fall back to a visible unknown icon and
--text when no valid condition or value is available, instead of implying a realsunnyorcloudystate. - Unknown-State Moon Phase Fallback (Issue #356): Moon-phase widgets now show an unknown-state icon when the selected entity is missing, invalid, or not a moon-phase source, rather than rendering a misleading real lunar phase.
- Deep-Sleep Flow Revalidation (Issue #356): Rechecked the reported
is_sleep_time,interval, and long-sleep-until-end-hour concerns against the generator output and locked that behavior in with regression coverage; no additional generator change was required because the long-sleep branch was already present. - Regression Coverage Expansion: Added focused tests for astronomy widget local-time handling, weather unknown-state exports/rendering, moon-phase invalid-entity behavior, and the existing deep-sleep overnight branch so the RC12.2 fixes stay pinned.
- Release Metadata Refresh: Updated the package version, Home Assistant manifest version, visible header label, release notes heading, and rebuilt frontend assets for the RC12.2 release line.
v1.0.0 RC12.1 - OTA Rollback Diagnostics & LVGL Light Sync
Release Date: April 10, 2026
This RC12.1 follow-up tightens the LVGL light-control fix from Issue #371, adds generated diagnostics ...
v1.0.0-rc.12.5
v1.0.0 RC12.5 - Light Brightness Attribute Compatibility
Release Date: April 16, 2026
This RC12.5 follow-up is a narrow post-release correction for Issue #371. Real-device feedback after the RC12.4 release showed that some Home Assistant lights publish live state through the raw brightness attribute instead of brightness_pct, and that the generated light-slider lambdas could still fail ESPHome compilation because different branches returned mixed numeric types. RC12.5 fixes both issues, refreshes the visible release metadata, and rebuilds the shipped frontend assets for a clean follow-up cut.
Stability & Verification
- Home Assistant Light Attribute Compatibility (Issue #371): Light-backed LVGL sliders now subscribe to the HA
brightnessattribute for initial state and live updates, which matches the state model shown in Home Assistant Developer Tools for integrations that only expose raw0..255brightness values. - Compile-Safe Light Slider Lambdas (Issue #371): Generated light-slider
value,lvgl.slider.update, andlight.turn_onbrightness lambdas now keep a consistent float return type across every branch, eliminating the ESPHome C++inconsistent types 'float' and 'int' deduced for lambda return typebuild error seen on generated YAML. - Regression Coverage Expansion: Updated the LVGL slider regression tests to lock the raw
brightnessattribute path, the0..255scaling behavior, and the new compile-safe lambda output for both default and scaled slider ranges. - Release Metadata Refresh: Updated the npm package version, package lock metadata, Home Assistant manifest version, visible header label, release notes heading/date, and rebuilt frontend assets for the RC12.5 release line.
v1.0.0 RC12.4 - OpenAI GPT-5 Compatibility & Guition 3.5 Support
Release Date: April 15, 2026
This RC12.4 follow-up rolls in four concrete post-RC12.3 fixes: restoring OpenAI GPT-5 prompt generation after the token-parameter change reported in Issue #379, promoting the Guition 3.5" JC4832W535 board discussed in Issue #340 to a cleaner built-in package/profile path, finishing the Home Assistant light state-tracking follow-up from Issue #371, and taking one more small cleanup pass on the generated deep-sleep control flow from Issue #356. It also synchronizes the visible release metadata and rebuilds the shipped frontend assets for today's RC12.4 cut.
Stability & Verification
- OpenAI GPT-5 Request Compatibility (Issue #379): The OpenAI chat-completions path now sends
max_completion_tokensforgpt-5*models while preservingmax_tokensfor older models, so GPT-5 layout generation works again without regressing the existing GPT-4/OpenAI flow. - Guition JC4832W535 v3 Package Alignment (Issue #340): The bundled 3.5" Guition hardware package now targets the documented
JC4832W535QSPI display model, includes the linked AXS15231 touchscreen configuration, and captures the working calibration/transform/rotation values needed for the board's v3 pinout. - Stable Device ID with Legacy Alias: Added a supported built-in
guition_esp32_jc4832w535device profile for new layouts while keeping the older misnamed internal id as a hidden compatibility alias so previously saved layouts continue to resolve the same hardware package. - LVGL Light State Tracking Completion (Issue #371): Light-backed LVGL sliders now push explicit
lvgl.slider.updateactions from the Home Assistantbrightness_pctattribute, synced LVGL buttons/switches/checkboxes now update their checked state from HA withtrigger_on_initial_state: true, and scaled slider ranges such as0..255now map cleanly tobrightness_pctin both directions so the widgets track HA, each other, and boot-time state correctly. - Deep-Sleep Guard Consolidation (Issue #356): The generated
deep_sleep_cyclescript now performs the firmware-flash delay and stay-awake retry handling once at the top of the script before branching into the overnightuntil:or normal deep-sleep entry path, which keeps the RC12.3 behavior fix while removing duplicated guard blocks from the generated YAML. - Regression Coverage Expansion: Added focused tests for the GPT-5/OpenAI request payload branch and for surfacing the corrected Guition board id without exposing the legacy alias as a new supported device choice.
v1.0.0 RC12.3 - Deep Sleep Follow-Through
Release Date: April 12, 2026
This RC12.3 follow-up takes another pass at the remaining deep-sleep behavior from Issue #356. RC12.2 was too optimistic here: the overnight until: branch still dropped out when users chose Ultra Eco (Deep Sleep) and relied on the shared sleep-hours controls. This release fixes that mismatch, trims the misleading deep-sleep refresh bookkeeping in the generated script, and rebuilds the shipped assets for a clean RC12.3 cut.
Stability & Verification
- Deep-Sleep Overnight Window Fix (Issue #356): Generated
deep_sleep_cyclenow uses the configured shared sleep window in Deep Sleep mode as well as Light Sleep mode, so users who set overnight hours and exportUltra Eco (Deep Sleep)once again get thedeep_sleep.enteruntil:/time_id: ha_timebranch at night. - Deep-Sleep Script Cleanup (Issue #356):
manage_run_and_sleepno longer emits the unusedintervalandis_sleep_timebookkeeping in the epaper deep-sleep path, which makes the generated YAML match the real execution flow more closely. - Regression Coverage Expansion: Added focused generator tests for the Deep Sleep plus sleep-hours path and for omitting the unused refresh bookkeeping from the deep-sleep loop.
v1.0.0 RC12.2 - Widget State Accuracy & Release Polish
Release Date: April 11, 2026
This RC12.2 follow-up rolls the remaining Issue #356 polish into a fresh release cut, with a focus on making astronomy and weather widgets fail safely when Home Assistant data is missing or timezone-shifted, while keeping the RC12.x stability fixes and release metadata aligned for deployment.
Stability & Verification
- Local-Time Sunrise/Sunset Rendering (Issue #356):
sun_timeswidgets now convert Home Assistant ISO timestamps into local runtime time before formatting them, sosensor.sun_next_risingandsensor.sun_next_settingno longer show UTC hours as if they were already local. - Explicit Unknown Weather Fallbacks (Issue #356): Weather icon and forecast widgets now fall back to a visible unknown icon and
--text when no valid condition or value is available, instead of implying a realsunnyorcloudystate. - Unknown-State Moon Phase Fallback (Issue #356): Moon-phase widgets now show an unknown-state icon when the selected entity is missing, invalid, or not a moon-phase source, rather than rendering a misleading real lunar phase.
- Deep-Sleep Flow Revalidation (Issue #356): Rechecked the reported
is_sleep_time,interval, and long-sleep-until-end-hour concerns against the generator output and locked that behavior in with regression coverage; no additional generator change was required because the long-sleep branch was already present. - Regression Coverage Expansion: Added focused tests for astronomy widget local-time handling, weather unknown-state exports/rendering, moon-phase invalid-entity behavior, and the existing deep-sleep overnight branch so the RC12.2 fixes stay pinned.
- Release Metadata Refresh: Updated the package version, Home Assistant manifest version, visible header label, release notes heading, and rebuilt frontend assets for the RC12.2 release line.
v1.0.0 RC12.1 - OTA Rollback Diagnostics & LVGL Light Sync
Release Date: April 10, 2026
This RC12.1 follow-up tightens the LVGL light-control fix from Issue #371, adds generated diagnostics that make OTA rollback mismatches much easier to spot in reports like Issue #372, and folds in two additional YAML-generation fixes from Issue #376 and Issue #377.
Stability & Verification
- LVGL Light Slider/Button Separation (Issue #371): Light-backed LVGL sliders now refresh only from their generated
brightness_pctHome Assistant sensor instead of also listening to the light's binary on/off updates. This prevents a synced button toggle from forcing the slider back through stale0/1brightness values and resolves the button/slider feedback loop seen in the attachedkitchen-display-ui.yaml. - Generated Layout Signatures for OTA Debugging (Issue #372): Generated YAML now includes a stable layout signature and summary in the header, and the startup script logs the same signature once per boot. If a user's device log shows a different signature than the YAML they attached, it is now immediately obvious that the device is running an older image or has rolled back after OTA.
- Rollback Triage Hint in Boot Logs: The one-time startup diagnostics now include an explicit rollback hint so issue reports can distinguish "widget did not update" from "the new firmware never stayed booted."
- LVGL Sensor Text Refresh Hooks (Issue #377): LVGL-backed
sensor_textwidgets now register their generatedtext_sensorIDs foron_valuerefresh wiring, including weather/text attribute variants, so live labels update when Ho...
v1.0.0-rc.12.4
v1.0.0 RC12.4 - OpenAI GPT-5 Compatibility & Guition 3.5 Support
Release Date: April 15, 2026
This RC12.4 follow-up rolls in four concrete post-RC12.3 fixes: restoring OpenAI GPT-5 prompt generation after the token-parameter change reported in Issue #379, promoting the Guition 3.5" JC4832W535 board discussed in Issue #340 to a cleaner built-in package/profile path, finishing the Home Assistant light state-tracking follow-up from Issue #371, and taking one more small cleanup pass on the generated deep-sleep control flow from Issue #356. It also synchronizes the visible release metadata and rebuilds the shipped frontend assets for today's RC12.4 cut.
Stability & Verification
- OpenAI GPT-5 Request Compatibility (Issue #379): The OpenAI chat-completions path now sends
max_completion_tokensforgpt-5*models while preservingmax_tokensfor older models, so GPT-5 layout generation works again without regressing the existing GPT-4/OpenAI flow. - Guition JC4832W535 v3 Package Alignment (Issue #340): The bundled 3.5" Guition hardware package now targets the documented
JC4832W535QSPI display model, includes the linked AXS15231 touchscreen configuration, and captures the working calibration/transform/rotation values needed for the board's v3 pinout. - Stable Device ID with Legacy Alias: Added a supported built-in
guition_esp32_jc4832w535device profile for new layouts while keeping the older misnamed internal id as a hidden compatibility alias so previously saved layouts continue to resolve the same hardware package. - LVGL Light State Tracking Completion (Issue #371): Light-backed LVGL sliders now push explicit
lvgl.slider.updateactions from the Home Assistantbrightness_pctattribute, synced LVGL buttons/switches/checkboxes now update their checked state from HA withtrigger_on_initial_state: true, and scaled slider ranges such as0..255now map cleanly tobrightness_pctin both directions so the widgets track HA, each other, and boot-time state correctly. - Deep-Sleep Guard Consolidation (Issue #356): The generated
deep_sleep_cyclescript now performs the firmware-flash delay and stay-awake retry handling once at the top of the script before branching into the overnightuntil:or normal deep-sleep entry path, which keeps the RC12.3 behavior fix while removing duplicated guard blocks from the generated YAML. - Regression Coverage Expansion: Added focused tests for the GPT-5/OpenAI request payload branch and for surfacing the corrected Guition board id without exposing the legacy alias as a new supported device choice.
v1.0.0 RC12.3 - Deep Sleep Follow-Through
Release Date: April 12, 2026
This RC12.3 follow-up takes another pass at the remaining deep-sleep behavior from Issue #356. RC12.2 was too optimistic here: the overnight until: branch still dropped out when users chose Ultra Eco (Deep Sleep) and relied on the shared sleep-hours controls. This release fixes that mismatch, trims the misleading deep-sleep refresh bookkeeping in the generated script, and rebuilds the shipped assets for a clean RC12.3 cut.
Stability & Verification
- Deep-Sleep Overnight Window Fix (Issue #356): Generated
deep_sleep_cyclenow uses the configured shared sleep window in Deep Sleep mode as well as Light Sleep mode, so users who set overnight hours and exportUltra Eco (Deep Sleep)once again get thedeep_sleep.enteruntil:/time_id: ha_timebranch at night. - Deep-Sleep Script Cleanup (Issue #356):
manage_run_and_sleepno longer emits the unusedintervalandis_sleep_timebookkeeping in the epaper deep-sleep path, which makes the generated YAML match the real execution flow more closely. - Regression Coverage Expansion: Added focused generator tests for the Deep Sleep plus sleep-hours path and for omitting the unused refresh bookkeeping from the deep-sleep loop.
v1.0.0 RC12.2 - Widget State Accuracy & Release Polish
Release Date: April 11, 2026
This RC12.2 follow-up rolls the remaining Issue #356 polish into a fresh release cut, with a focus on making astronomy and weather widgets fail safely when Home Assistant data is missing or timezone-shifted, while keeping the RC12.x stability fixes and release metadata aligned for deployment.
Stability & Verification
- Local-Time Sunrise/Sunset Rendering (Issue #356):
sun_timeswidgets now convert Home Assistant ISO timestamps into local runtime time before formatting them, sosensor.sun_next_risingandsensor.sun_next_settingno longer show UTC hours as if they were already local. - Explicit Unknown Weather Fallbacks (Issue #356): Weather icon and forecast widgets now fall back to a visible unknown icon and
--text when no valid condition or value is available, instead of implying a realsunnyorcloudystate. - Unknown-State Moon Phase Fallback (Issue #356): Moon-phase widgets now show an unknown-state icon when the selected entity is missing, invalid, or not a moon-phase source, rather than rendering a misleading real lunar phase.
- Deep-Sleep Flow Revalidation (Issue #356): Rechecked the reported
is_sleep_time,interval, and long-sleep-until-end-hour concerns against the generator output and locked that behavior in with regression coverage; no additional generator change was required because the long-sleep branch was already present. - Regression Coverage Expansion: Added focused tests for astronomy widget local-time handling, weather unknown-state exports/rendering, moon-phase invalid-entity behavior, and the existing deep-sleep overnight branch so the RC12.2 fixes stay pinned.
- Release Metadata Refresh: Updated the package version, Home Assistant manifest version, visible header label, release notes heading, and rebuilt frontend assets for the RC12.2 release line.
v1.0.0 RC12.1 - OTA Rollback Diagnostics & LVGL Light Sync
Release Date: April 10, 2026
This RC12.1 follow-up tightens the LVGL light-control fix from Issue #371, adds generated diagnostics that make OTA rollback mismatches much easier to spot in reports like Issue #372, and folds in two additional YAML-generation fixes from Issue #376 and Issue #377.
Stability & Verification
- LVGL Light Slider/Button Separation (Issue #371): Light-backed LVGL sliders now refresh only from their generated
brightness_pctHome Assistant sensor instead of also listening to the light's binary on/off updates. This prevents a synced button toggle from forcing the slider back through stale0/1brightness values and resolves the button/slider feedback loop seen in the attachedkitchen-display-ui.yaml. - Generated Layout Signatures for OTA Debugging (Issue #372): Generated YAML now includes a stable layout signature and summary in the header, and the startup script logs the same signature once per boot. If a user's device log shows a different signature than the YAML they attached, it is now immediately obvious that the device is running an older image or has rolled back after OTA.
- Rollback Triage Hint in Boot Logs: The one-time startup diagnostics now include an explicit rollback hint so issue reports can distinguish "widget did not update" from "the new firmware never stayed booted."
- LVGL Sensor Text Refresh Hooks (Issue #377): LVGL-backed
sensor_textwidgets now register their generatedtext_sensorIDs foron_valuerefresh wiring, including weather/text attribute variants, so live labels update when Home Assistant pushes new text values. - Generated YAML Header Deduplication (Issue #376): Repeated snippet save/update cycles no longer prepend multiple copies of the generated ESPHome header when reconciling manual YAML overrides, so the raw YAML editor stays stable across round trips.
- Issue #356 Audit Confirmation: Rechecked the three items listed in Issue #356 against current generator code and regression tests; the scheduled page auto-switch guard, deep-sleep interval handling, and long-sleep-until-end-hour behavior are all already covered in RC12.1.
- Issue #356 Follow-Up Widget Fixes: Sunrise and sunset widgets now convert ISO datetime values into local device/browser time instead of showing the raw UTC hour, weather widgets now fall back to an explicit unknown icon or
--temperatures when no condition/value is available, and moon-phase widgets now show an unknown-state icon instead of implying a real lunar phase when the entity is missing or invalid. - Home Assistant Panel Console Noise Mitigation: The embedded panel shell now suppresses additional benign Home Assistant transition abort variants and wrapped host-error shapes, which reduces
Transition was skipped/invalid stateunhandled rejection noise in the browser console without masking real editor failures. - Regression Coverage: Added focused generator coverage for the new header/log diagnostics, updated the LVGL slider regression coverage so light refresh hooks stay bound to the brightness attribute sensor, and hardened the panel/runtime rejection-filter tests for Home Assistant transition-abort noise.
- Release Metadata Refresh: Updated the package metadata, Home Assistant manifest version, runtime GUI version label, release notes heading, and reb...
v1.0.0-rc.12.3
v1.0.0 RC12.3 - Deep Sleep Follow-Through
Release Date: April 12, 2026
This RC12.3 follow-up takes another pass at the remaining deep-sleep behavior from Issue #356. RC12.2 was too optimistic here: the overnight until: branch still dropped out when users chose Ultra Eco (Deep Sleep) and relied on the shared sleep-hours controls. This release fixes that mismatch, trims the misleading deep-sleep refresh bookkeeping in the generated script, and rebuilds the shipped assets for a clean RC12.3 cut.
Stability & Verification
- Deep-Sleep Overnight Window Fix (Issue #356): Generated
deep_sleep_cyclenow uses the configured shared sleep window in Deep Sleep mode as well as Light Sleep mode, so users who set overnight hours and exportUltra Eco (Deep Sleep)once again get thedeep_sleep.enteruntil:/time_id: ha_timebranch at night. - Deep-Sleep Script Cleanup (Issue #356):
manage_run_and_sleepno longer emits the unusedintervalandis_sleep_timebookkeeping in the epaper deep-sleep path, which makes the generated YAML match the real execution flow more closely. - Regression Coverage Expansion: Added focused generator tests for the Deep Sleep plus sleep-hours path and for omitting the unused refresh bookkeeping from the deep-sleep loop.
- Release Metadata Refresh: Updated the package version, Home Assistant manifest version, visible header label, release notes heading, and rebuilt frontend assets for the RC12.3 release line.
v1.0.0 RC12.2 - Widget State Accuracy & Release Polish
Release Date: April 11, 2026
This RC12.2 follow-up rolls the remaining Issue #356 polish into a fresh release cut, with a focus on making astronomy and weather widgets fail safely when Home Assistant data is missing or timezone-shifted, while keeping the RC12.x stability fixes and release metadata aligned for deployment.
Stability & Verification
- Local-Time Sunrise/Sunset Rendering (Issue #356):
sun_timeswidgets now convert Home Assistant ISO timestamps into local runtime time before formatting them, sosensor.sun_next_risingandsensor.sun_next_settingno longer show UTC hours as if they were already local. - Explicit Unknown Weather Fallbacks (Issue #356): Weather icon and forecast widgets now fall back to a visible unknown icon and
--text when no valid condition or value is available, instead of implying a realsunnyorcloudystate. - Unknown-State Moon Phase Fallback (Issue #356): Moon-phase widgets now show an unknown-state icon when the selected entity is missing, invalid, or not a moon-phase source, rather than rendering a misleading real lunar phase.
- Deep-Sleep Flow Revalidation (Issue #356): Rechecked the reported
is_sleep_time,interval, and long-sleep-until-end-hour concerns against the generator output and locked that behavior in with regression coverage; no additional generator change was required because the long-sleep branch was already present. - Regression Coverage Expansion: Added focused tests for astronomy widget local-time handling, weather unknown-state exports/rendering, moon-phase invalid-entity behavior, and the existing deep-sleep overnight branch so the RC12.2 fixes stay pinned.
- Release Metadata Refresh: Updated the package version, Home Assistant manifest version, visible header label, release notes heading, and rebuilt frontend assets for the RC12.2 release line.
v1.0.0 RC12.1 - OTA Rollback Diagnostics & LVGL Light Sync
Release Date: April 10, 2026
This RC12.1 follow-up tightens the LVGL light-control fix from Issue #371, adds generated diagnostics that make OTA rollback mismatches much easier to spot in reports like Issue #372, and folds in two additional YAML-generation fixes from Issue #376 and Issue #377.
Stability & Verification
- LVGL Light Slider/Button Separation (Issue #371): Light-backed LVGL sliders now refresh only from their generated
brightness_pctHome Assistant sensor instead of also listening to the light's binary on/off updates. This prevents a synced button toggle from forcing the slider back through stale0/1brightness values and resolves the button/slider feedback loop seen in the attachedkitchen-display-ui.yaml. - Generated Layout Signatures for OTA Debugging (Issue #372): Generated YAML now includes a stable layout signature and summary in the header, and the startup script logs the same signature once per boot. If a user's device log shows a different signature than the YAML they attached, it is now immediately obvious that the device is running an older image or has rolled back after OTA.
- Rollback Triage Hint in Boot Logs: The one-time startup diagnostics now include an explicit rollback hint so issue reports can distinguish "widget did not update" from "the new firmware never stayed booted."
- LVGL Sensor Text Refresh Hooks (Issue #377): LVGL-backed
sensor_textwidgets now register their generatedtext_sensorIDs foron_valuerefresh wiring, including weather/text attribute variants, so live labels update when Home Assistant pushes new text values. - Generated YAML Header Deduplication (Issue #376): Repeated snippet save/update cycles no longer prepend multiple copies of the generated ESPHome header when reconciling manual YAML overrides, so the raw YAML editor stays stable across round trips.
- Issue #356 Audit Confirmation: Rechecked the three items listed in Issue #356 against current generator code and regression tests; the scheduled page auto-switch guard, deep-sleep interval handling, and long-sleep-until-end-hour behavior are all already covered in RC12.1.
- Issue #356 Follow-Up Widget Fixes: Sunrise and sunset widgets now convert ISO datetime values into local device/browser time instead of showing the raw UTC hour, weather widgets now fall back to an explicit unknown icon or
--temperatures when no condition/value is available, and moon-phase widgets now show an unknown-state icon instead of implying a real lunar phase when the entity is missing or invalid. - Home Assistant Panel Console Noise Mitigation: The embedded panel shell now suppresses additional benign Home Assistant transition abort variants and wrapped host-error shapes, which reduces
Transition was skipped/invalid stateunhandled rejection noise in the browser console without masking real editor failures. - Regression Coverage: Added focused generator coverage for the new header/log diagnostics, updated the LVGL slider regression coverage so light refresh hooks stay bound to the brightness attribute sensor, and hardened the panel/runtime rejection-filter tests for Home Assistant transition-abort noise.
- Release Metadata Refresh: Updated the package metadata, Home Assistant manifest version, runtime GUI version label, release notes heading, and rebuilt frontend assets for the RC12.1 release line.
v1.0.0 RC12 - LVGL Follow-Up & Release Sync
Release Date: April 7, 2026
This release is a focused RC12 follow-up that closes the remaining RC11 regressions reported after the RC11 rollout, especially around LVGL live updates and light-slider behavior, and synchronizes the shipped release metadata for the new build.
Stability & Verification
- LVGL Light Slider Fix (Issue #371):
light.*entities now use a dedicated Home Assistant brightness sensor for the slider value instead of mirroring binary on/off state, so toggling a light no longer forces the slider back through1%, and moving the slider now behaves like a native dimmer by turning the light off at0and callinglight.turn_onwithbrightness_pctotherwise. - LVGL Date & Time Refresh Fix (Issue #372): Date & Time widgets in LVGL mode now emit an explicit timed refresh loop so their
ha_time-backed labels update on real devices instead of staying frozen after the initial render. Styled datetime widgets now refresh the actual child label that owns the live lambda instead of the wrapper container. - LVGL On-Board Sensor Bar Refresh Fix (Issue #372): The LVGL sensor bar now refreshes its live child labels and battery icon/text directly, covers local on-device values as well as Home Assistant-backed sensors, and uses the configured Wi-Fi source consistently in LVGL output instead of always hard-wiring
wifi_signal_dbm. - Interval Section Merge Safety: Widget-owned
interval:exports now merge cleanly when multiple features contribute timed updates, preventing duplicate top-level interval sections in generated YAML. - Regression Coverage for Issues #371 and #372: Added focused Vitest coverage for the LVGL light slider path, datetime refresh wiring, sensor-bar child refresh targets, and interval-section coexistence so the RC12 fixes stay locked in.
- Release Metadata Refresh: Updated the package metadata, Home Assistant manifest version, runtime GUI version string, visible header label, and release notes heading for the RC12 release.
v1.0.0 RC11 - Shape Cleanup, New Widgets & Verification
Release Date: April 6, 2026
This release continues the shape-model cleanup so fills, borders, and lines behave more consistently across the editor and generated output, adds the new astronomy and energy widgets discussed in GitHub Issue #367, Issue #368, and https://github.com/koosoli/ESPHomeDesigner/discussions/219#discussioncomment-16442603 a...
v1.0.0-rc.12.2
v1.0.0 RC12.2 - Widget State Accuracy & Release Polish
Release Date: April 11, 2026
This RC12.2 follow-up rolls the remaining Issue #356 polish into a fresh release cut, with a focus on making astronomy and weather widgets fail safely when Home Assistant data is missing or timezone-shifted, while keeping the RC12.x stability fixes and release metadata aligned for deployment.
Stability & Verification
- Local-Time Sunrise/Sunset Rendering (Issue #356):
sun_timeswidgets now convert Home Assistant ISO timestamps into local runtime time before formatting them, sosensor.sun_next_risingandsensor.sun_next_settingno longer show UTC hours as if they were already local. - Explicit Unknown Weather Fallbacks (Issue #356): Weather icon and forecast widgets now fall back to a visible unknown icon and
--text when no valid condition or value is available, instead of implying a realsunnyorcloudystate. - Unknown-State Moon Phase Fallback (Issue #356): Moon-phase widgets now show an unknown-state icon when the selected entity is missing, invalid, or not a moon-phase source, rather than rendering a misleading real lunar phase.
- Deep-Sleep Flow Revalidation (Issue #356): Rechecked the reported
is_sleep_time,interval, and long-sleep-until-end-hour concerns against the generator output and locked that behavior in with regression coverage; no additional generator change was required because the long-sleep branch was already present. - Regression Coverage Expansion: Added focused tests for astronomy widget local-time handling, weather unknown-state exports/rendering, moon-phase invalid-entity behavior, and the existing deep-sleep overnight branch so the RC12.2 fixes stay pinned.
- Release Metadata Refresh: Updated the package version, Home Assistant manifest version, visible header label, release notes heading, and rebuilt frontend assets for the RC12.2 release line.
v1.0.0 RC12.1 - OTA Rollback Diagnostics & LVGL Light Sync
Release Date: April 10, 2026
This RC12.1 follow-up tightens the LVGL light-control fix from Issue #371, adds generated diagnostics that make OTA rollback mismatches much easier to spot in reports like Issue #372, and folds in two additional YAML-generation fixes from Issue #376 and Issue #377.
Stability & Verification
- LVGL Light Slider/Button Separation (Issue #371): Light-backed LVGL sliders now refresh only from their generated
brightness_pctHome Assistant sensor instead of also listening to the light's binary on/off updates. This prevents a synced button toggle from forcing the slider back through stale0/1brightness values and resolves the button/slider feedback loop seen in the attachedkitchen-display-ui.yaml. - Generated Layout Signatures for OTA Debugging (Issue #372): Generated YAML now includes a stable layout signature and summary in the header, and the startup script logs the same signature once per boot. If a user's device log shows a different signature than the YAML they attached, it is now immediately obvious that the device is running an older image or has rolled back after OTA.
- Rollback Triage Hint in Boot Logs: The one-time startup diagnostics now include an explicit rollback hint so issue reports can distinguish "widget did not update" from "the new firmware never stayed booted."
- LVGL Sensor Text Refresh Hooks (Issue #377): LVGL-backed
sensor_textwidgets now register their generatedtext_sensorIDs foron_valuerefresh wiring, including weather/text attribute variants, so live labels update when Home Assistant pushes new text values. - Generated YAML Header Deduplication (Issue #376): Repeated snippet save/update cycles no longer prepend multiple copies of the generated ESPHome header when reconciling manual YAML overrides, so the raw YAML editor stays stable across round trips.
- Issue #356 Audit Confirmation: Rechecked the three items listed in Issue #356 against current generator code and regression tests; the scheduled page auto-switch guard, deep-sleep interval handling, and long-sleep-until-end-hour behavior are all already covered in RC12.1.
- Issue #356 Follow-Up Widget Fixes: Sunrise and sunset widgets now convert ISO datetime values into local device/browser time instead of showing the raw UTC hour, weather widgets now fall back to an explicit unknown icon or
--temperatures when no condition/value is available, and moon-phase widgets now show an unknown-state icon instead of implying a real lunar phase when the entity is missing or invalid. - Home Assistant Panel Console Noise Mitigation: The embedded panel shell now suppresses additional benign Home Assistant transition abort variants and wrapped host-error shapes, which reduces
Transition was skipped/invalid stateunhandled rejection noise in the browser console without masking real editor failures. - Regression Coverage: Added focused generator coverage for the new header/log diagnostics, updated the LVGL slider regression coverage so light refresh hooks stay bound to the brightness attribute sensor, and hardened the panel/runtime rejection-filter tests for Home Assistant transition-abort noise.
- Release Metadata Refresh: Updated the package metadata, Home Assistant manifest version, runtime GUI version label, release notes heading, and rebuilt frontend assets for the RC12.1 release line.
v1.0.0 RC12 - LVGL Follow-Up & Release Sync
Release Date: April 7, 2026
This release is a focused RC12 follow-up that closes the remaining RC11 regressions reported after the RC11 rollout, especially around LVGL live updates and light-slider behavior, and synchronizes the shipped release metadata for the new build.
Stability & Verification
- LVGL Light Slider Fix (Issue #371):
light.*entities now use a dedicated Home Assistant brightness sensor for the slider value instead of mirroring binary on/off state, so toggling a light no longer forces the slider back through1%, and moving the slider now behaves like a native dimmer by turning the light off at0and callinglight.turn_onwithbrightness_pctotherwise. - LVGL Date & Time Refresh Fix (Issue #372): Date & Time widgets in LVGL mode now emit an explicit timed refresh loop so their
ha_time-backed labels update on real devices instead of staying frozen after the initial render. Styled datetime widgets now refresh the actual child label that owns the live lambda instead of the wrapper container. - LVGL On-Board Sensor Bar Refresh Fix (Issue #372): The LVGL sensor bar now refreshes its live child labels and battery icon/text directly, covers local on-device values as well as Home Assistant-backed sensors, and uses the configured Wi-Fi source consistently in LVGL output instead of always hard-wiring
wifi_signal_dbm. - Interval Section Merge Safety: Widget-owned
interval:exports now merge cleanly when multiple features contribute timed updates, preventing duplicate top-level interval sections in generated YAML. - Regression Coverage for Issues #371 and #372: Added focused Vitest coverage for the LVGL light slider path, datetime refresh wiring, sensor-bar child refresh targets, and interval-section coexistence so the RC12 fixes stay locked in.
- Release Metadata Refresh: Updated the package metadata, Home Assistant manifest version, runtime GUI version string, visible header label, and release notes heading for the RC12 release.
v1.0.0 RC11 - Shape Cleanup, New Widgets & Verification
Release Date: April 6, 2026
This release continues the shape-model cleanup so fills, borders, and lines behave more consistently across the editor and generated output, adds the new astronomy and energy widgets discussed in GitHub Issue #367, Issue #368, and https://github.com/koosoli/ESPHomeDesigner/discussions/219#discussioncomment-16442603 and rolls in the supporting stability and verification work for the RC11 line.
Release Highlights
- Canonical Shape Color Model: Rectangle, circle, and rounded rectangle widgets now use explicit
bg_colorandborder_coloras their primary shape colors, while legacycolorvalues are still accepted as compatibility fallbacks for existing layouts and imports. - Unified Shape Controls: Rectangle, circle, and rounded rectangle widgets now share the same visible shape-editing model:
Fill,Fill Color,Border Thickness, andBorder Color, plus shape-specific geometry such asCorner Radius. - Smarter Shape Border Defaults: When a fillable shape is filled and the border color has not been explicitly chosen, the border now defaults to the same color as the fill until the user overrides it.
- Unified Default Border & Line Widths: Rectangle, circle, rounded rectangle, and line widgets now default to a consistent visible border or stroke weight in new layouts, while legacy imports continue to normalize toward the shared shape model.
- Astronomy Widget Category: Added a dedicated
Astronomysection in the widget palette for the newmoon_phaseandsun_timeswidgets, while keeping the existing weather icon in its current core location. - Moon Phase Widget (Issue #367): Added a dedicated
moon_phasewidget with Home Assistant moon-state icon mapping across editor preview, direct ESPHome export, LVGL export, OEPL export, and OpenDisplay export. - Sun Times Widget (Issue #368): Added a dedicated `sun_tim...
v1.0.0-rc.12.1
v1.0.0 RC12.1 - OTA Rollback Diagnostics & LVGL Light Sync
Release Date: April 10, 2026
This RC12.1 follow-up tightens the LVGL light-control fix from Issue #371, adds generated diagnostics that make OTA rollback mismatches much easier to spot in reports like Issue #372, and folds in two additional YAML-generation fixes from Issue #376 and Issue #377.
Stability & Verification
- LVGL Light Slider/Button Separation (Issue #371): Light-backed LVGL sliders now refresh only from their generated
brightness_pctHome Assistant sensor instead of also listening to the light's binary on/off updates. This prevents a synced button toggle from forcing the slider back through stale0/1brightness values and resolves the button/slider feedback loop seen in the attachedkitchen-display-ui.yaml. - Generated Layout Signatures for OTA Debugging (Issue #372): Generated YAML now includes a stable layout signature and summary in the header, and the startup script logs the same signature once per boot. If a user's device log shows a different signature than the YAML they attached, it is now immediately obvious that the device is running an older image or has rolled back after OTA.
- Rollback Triage Hint in Boot Logs: The one-time startup diagnostics now include an explicit rollback hint so issue reports can distinguish "widget did not update" from "the new firmware never stayed booted."
- LVGL Sensor Text Refresh Hooks (Issue #377): LVGL-backed
sensor_textwidgets now register their generatedtext_sensorIDs foron_valuerefresh wiring, including weather/text attribute variants, so live labels update when Home Assistant pushes new text values. - Generated YAML Header Deduplication (Issue #376): Repeated snippet save/update cycles no longer prepend multiple copies of the generated ESPHome header when reconciling manual YAML overrides, so the raw YAML editor stays stable across round trips.
- Issue #356 Audit Confirmation: Rechecked the three items listed in Issue #356 against current generator code and regression tests; the scheduled page auto-switch guard, deep-sleep interval handling, and long-sleep-until-end-hour behavior are all already covered in RC12.1.
- Home Assistant Panel Console Noise Mitigation: The embedded panel shell now suppresses additional benign Home Assistant transition abort variants and wrapped host-error shapes, which reduces
Transition was skipped/invalid stateunhandled rejection noise in the browser console without masking real editor failures. - Regression Coverage: Added focused generator coverage for the new header/log diagnostics, updated the LVGL slider regression coverage so light refresh hooks stay bound to the brightness attribute sensor, and hardened the panel/runtime rejection-filter tests for Home Assistant transition-abort noise.
- Release Metadata Refresh: Updated the package metadata, Home Assistant manifest version, runtime GUI version label, release notes heading, and rebuilt frontend assets for the RC12.1 release line.
v1.0.0 RC12 - LVGL Follow-Up & Release Sync
Release Date: April 7, 2026
This release is a focused RC12 follow-up that closes the remaining RC11 regressions reported after the RC11 rollout, especially around LVGL live updates and light-slider behavior, and synchronizes the shipped release metadata for the new build.
Stability & Verification
- LVGL Light Slider Fix (Issue #371):
light.*entities now use a dedicated Home Assistant brightness sensor for the slider value instead of mirroring binary on/off state, so toggling a light no longer forces the slider back through1%, and moving the slider now behaves like a native dimmer by turning the light off at0and callinglight.turn_onwithbrightness_pctotherwise. - LVGL Date & Time Refresh Fix (Issue #372): Date & Time widgets in LVGL mode now emit an explicit timed refresh loop so their
ha_time-backed labels update on real devices instead of staying frozen after the initial render. Styled datetime widgets now refresh the actual child label that owns the live lambda instead of the wrapper container. - LVGL On-Board Sensor Bar Refresh Fix (Issue #372): The LVGL sensor bar now refreshes its live child labels and battery icon/text directly, covers local on-device values as well as Home Assistant-backed sensors, and uses the configured Wi-Fi source consistently in LVGL output instead of always hard-wiring
wifi_signal_dbm. - Interval Section Merge Safety: Widget-owned
interval:exports now merge cleanly when multiple features contribute timed updates, preventing duplicate top-level interval sections in generated YAML. - Regression Coverage for Issues #371 and #372: Added focused Vitest coverage for the LVGL light slider path, datetime refresh wiring, sensor-bar child refresh targets, and interval-section coexistence so the RC12 fixes stay locked in.
- Release Metadata Refresh: Updated the package metadata, Home Assistant manifest version, runtime GUI version string, visible header label, and release notes heading for the RC12 release.
v1.0.0 RC11 - Shape Cleanup, New Widgets & Verification
Release Date: April 6, 2026
This release continues the shape-model cleanup so fills, borders, and lines behave more consistently across the editor and generated output, adds the new astronomy and energy widgets discussed in GitHub Issue #367, Issue #368, and https://github.com/koosoli/ESPHomeDesigner/discussions/219#discussioncomment-16442603 and rolls in the supporting stability and verification work for the RC11 line.
Release Highlights
- Canonical Shape Color Model: Rectangle, circle, and rounded rectangle widgets now use explicit
bg_colorandborder_coloras their primary shape colors, while legacycolorvalues are still accepted as compatibility fallbacks for existing layouts and imports. - Unified Shape Controls: Rectangle, circle, and rounded rectangle widgets now share the same visible shape-editing model:
Fill,Fill Color,Border Thickness, andBorder Color, plus shape-specific geometry such asCorner Radius. - Smarter Shape Border Defaults: When a fillable shape is filled and the border color has not been explicitly chosen, the border now defaults to the same color as the fill until the user overrides it.
- Unified Default Border & Line Widths: Rectangle, circle, rounded rectangle, and line widgets now default to a consistent visible border or stroke weight in new layouts, while legacy imports continue to normalize toward the shared shape model.
- Astronomy Widget Category: Added a dedicated
Astronomysection in the widget palette for the newmoon_phaseandsun_timeswidgets, while keeping the existing weather icon in its current core location. - Moon Phase Widget (Issue #367): Added a dedicated
moon_phasewidget with Home Assistant moon-state icon mapping across editor preview, direct ESPHome export, LVGL export, OEPL export, and OpenDisplay export. - Sun Times Widget (Issue #368): Added a dedicated
sun_timeswidget with independentShow SunriseandShow Sunsettoggles, native Home Assistant defaults forsensor.sun_next_rising/sensor.sun_next_setting, and support forsun.sunattributes likenext_risingandnext_setting. - Energy Flow Widget: Added a new
energy_widget/Energy Flowwidget fordirectandlvglprojects with a fixed solar, home, grid, battery, and optional gas topology, sign-aware import/export and charge/discharge arrows, and visible bordered node boxes for the core energy slots. - Advanced Solar Breakdown: The new energy widget supports optional helper entities for
Solar -> Home,Solar -> Grid,Solar -> Battery, andAutoconsumption %, while still deriving safe fallbacks for grid export and self-consumption when only the base net sensors are available.
Stability & Verification
- Home Assistant Local Image Preview Fix (Issue #366): Fixed an HA-specific regression where local image previews could trigger authentication failures after the backend hardening pass. Image previews now load through the authenticated request path again, while common public image locations such as
/local/...and/config/www/...continue to work without reopening arbitrary/configfile reads. - ESPHome Image Transparency & LVGL Background YAML Fix (Issue #369): Color image components now emit ESPHome's current
transparencyoption instead of the deprecateduse_transparencyflag, honoring the widget's configured transparency mode, and transparent LVGL template bars no longer generate invalidbg_color: transpoutput. - M5Paper GT911 ESPHome Compatibility Fix (Issue #370): The M5Paper preset no longer exports
GPIO36as a GT911interrupt_pinon classic ESP32 builds where that pin is input-only and rejected by current ESPHome releases. Affected exports now fall back to polling withupdate_interval: 50ms, restoring successful YAML compilation on ESPHome 2026.3.2 and newer. - Scheduled Page Switching & Calendar Width Fixes (Issue #356): Scheduled page visibility changes no longer self-trigger the page-switch debounce before
change_page_toruns, restoring automatic switching between time-windowed pages, and calendar event summaries now expand their on-device text width with wider calendar widgets instead of staying hard-capped at 25 characters. - Drop Shadow Fill & Group Border Editing Cleanup: Adding a drop shadow now preserv...
v1.0.0-rc.12
v1.0.0 RC12 - LVGL Follow-Up & Release Sync
Release Date: April 7, 2026
This release is a focused RC12 follow-up that closes the remaining RC11 regressions reported after the RC11 rollout, especially around LVGL live updates and light-slider behavior, and synchronizes the shipped release metadata for the new build.
Stability & Verification
- LVGL Light Slider Fix (Issue #371):
light.*entities now use a dedicated Home Assistant brightness sensor for the slider value instead of mirroring binary on/off state, so toggling a light no longer forces the slider back through1%, and moving the slider now behaves like a native dimmer by turning the light off at0and callinglight.turn_onwithbrightness_pctotherwise. - LVGL Date & Time Refresh Fix (Issue #372): Date & Time widgets in LVGL mode now emit an explicit timed refresh loop so their
ha_time-backed labels update on real devices instead of staying frozen after the initial render. Styled datetime widgets now refresh the actual child label that owns the live lambda instead of the wrapper container. - LVGL On-Board Sensor Bar Refresh Fix (Issue #372): The LVGL sensor bar now refreshes its live child labels and battery icon/text directly, covers local on-device values as well as Home Assistant-backed sensors, and uses the configured Wi-Fi source consistently in LVGL output instead of always hard-wiring
wifi_signal_dbm. - Interval Section Merge Safety: Widget-owned
interval:exports now merge cleanly when multiple features contribute timed updates, preventing duplicate top-level interval sections in generated YAML. - Regression Coverage for Issues #371 and #372: Added focused Vitest coverage for the LVGL light slider path, datetime refresh wiring, sensor-bar child refresh targets, and interval-section coexistence so the RC12 fixes stay locked in.
- Release Metadata Refresh: Updated the package metadata, Home Assistant manifest version, runtime GUI version string, visible header label, and release notes heading for the RC12 release.
v1.0.0 RC11 - Shape Cleanup, New Widgets & Verification
Release Date: April 6, 2026
This release continues the shape-model cleanup so fills, borders, and lines behave more consistently across the editor and generated output, adds the new astronomy and energy widgets discussed in GitHub Issue #367, Issue #368, and https://github.com/koosoli/ESPHomeDesigner/discussions/219#discussioncomment-16442603 and rolls in the supporting stability and verification work for the RC11 line.
Release Highlights
- Canonical Shape Color Model: Rectangle, circle, and rounded rectangle widgets now use explicit
bg_colorandborder_coloras their primary shape colors, while legacycolorvalues are still accepted as compatibility fallbacks for existing layouts and imports. - Unified Shape Controls: Rectangle, circle, and rounded rectangle widgets now share the same visible shape-editing model:
Fill,Fill Color,Border Thickness, andBorder Color, plus shape-specific geometry such asCorner Radius. - Smarter Shape Border Defaults: When a fillable shape is filled and the border color has not been explicitly chosen, the border now defaults to the same color as the fill until the user overrides it.
- Unified Default Border & Line Widths: Rectangle, circle, rounded rectangle, and line widgets now default to a consistent visible border or stroke weight in new layouts, while legacy imports continue to normalize toward the shared shape model.
- Astronomy Widget Category: Added a dedicated
Astronomysection in the widget palette for the newmoon_phaseandsun_timeswidgets, while keeping the existing weather icon in its current core location. - Moon Phase Widget (Issue #367): Added a dedicated
moon_phasewidget with Home Assistant moon-state icon mapping across editor preview, direct ESPHome export, LVGL export, OEPL export, and OpenDisplay export. - Sun Times Widget (Issue #368): Added a dedicated
sun_timeswidget with independentShow SunriseandShow Sunsettoggles, native Home Assistant defaults forsensor.sun_next_rising/sensor.sun_next_setting, and support forsun.sunattributes likenext_risingandnext_setting. - Energy Flow Widget: Added a new
energy_widget/Energy Flowwidget fordirectandlvglprojects with a fixed solar, home, grid, battery, and optional gas topology, sign-aware import/export and charge/discharge arrows, and visible bordered node boxes for the core energy slots. - Advanced Solar Breakdown: The new energy widget supports optional helper entities for
Solar -> Home,Solar -> Grid,Solar -> Battery, andAutoconsumption %, while still deriving safe fallbacks for grid export and self-consumption when only the base net sensors are available.
Stability & Verification
- Home Assistant Local Image Preview Fix (Issue #366): Fixed an HA-specific regression where local image previews could trigger authentication failures after the backend hardening pass. Image previews now load through the authenticated request path again, while common public image locations such as
/local/...and/config/www/...continue to work without reopening arbitrary/configfile reads. - ESPHome Image Transparency & LVGL Background YAML Fix (Issue #369): Color image components now emit ESPHome's current
transparencyoption instead of the deprecateduse_transparencyflag, honoring the widget's configured transparency mode, and transparent LVGL template bars no longer generate invalidbg_color: transpoutput. - M5Paper GT911 ESPHome Compatibility Fix (Issue #370): The M5Paper preset no longer exports
GPIO36as a GT911interrupt_pinon classic ESP32 builds where that pin is input-only and rejected by current ESPHome releases. Affected exports now fall back to polling withupdate_interval: 50ms, restoring successful YAML compilation on ESPHome 2026.3.2 and newer. - Scheduled Page Switching & Calendar Width Fixes (Issue #356): Scheduled page visibility changes no longer self-trigger the page-switch debounce before
change_page_toruns, restoring automatic switching between time-windowed pages, and calendar event summaries now expand their on-device text width with wider calendar widgets instead of staying hard-capped at 25 characters. - Drop Shadow Fill & Group Border Editing Cleanup: Adding a drop shadow now preserves existing opaque fills, forces transparent widget infills to white so the shadow remains visible, and grouped shadow selections can edit shared border width, border color, and corner settings without pushing those properties onto the invisible group wrapper.
- Backward-Compatible Imports: YAML, C++ drawing, and OEPL parser paths continue to accept older shape definitions while normalizing imported shapes toward the new
bg_color/border_colormodel. - Regression Coverage for Shape Cleanup: Updated focused tests and snapshots for the shared fillable-shape helpers, shape widgets, line defaults, parser round-trips, and widget-manager shadow behavior.
- Regression Coverage for Issue #356: Added focused generator and calendar export tests so scheduled visibility auto-switching and width-scaled calendar summaries stay locked in.
- Regression Coverage for Issue #369: Added focused test coverage for modern image component export plus transparent LVGL template-bar export so the invalid YAML patterns stay fixed.
- Regression Coverage for Issue #370: Added targeted touchscreen generator coverage so classic ESP32 GT911 profiles with input-only pins keep using the polling fallback instead of emitting invalid output-mode interrupt pins.
- Astronomy Widget Coverage: Added targeted tests for the new moon phase and sun times widgets so preview behavior and export wiring stay locked in.
- Energy Widget Coverage & Round-Trip Support: Added direct-export, LVGL-export, preview, parser, and round-trip coverage for the new energy widget so its helper entities and derived flow labels stay stable across YAML import/export and frontend builds.
- Release Metadata Refresh: Updated the package metadata, Home Assistant manifest version, runtime GUI version string, and visible header label for the RC11 release.
v1.0.0 RC10.1 - Visibility Hotfix & Release Sync
Release Date: April 2, 2026
This release is a focused RC10.1 follow-up for the work completed in this session. It fixes a direct-render conditional visibility regression where binary Home Assistant entities such as input_boolean could generate invalid std::string(...) comparisons and fail ESPHome compilation, and it synchronizes the shipped version metadata and frontend bundle for the RC10.1 package.
Stability & Verification
- Conditional Visibility Compilation Fix (Issue #363): Direct-render widget visibility checks now treat binary Home Assistant domains such as
input_booleanas boolean IDs instead of forcing them through string conversion, while text-style entities likeinput_selectstill use the generated_txtsensors for string comparison. - Regression Coverage: Added targeted Vitest coverage for the visibility-condition binary/text branching so the broken
std::string(id(input_boolean...).state)pattern does not return. - Release Metadata Sync: Updated the package version, Home Assistant manifest version, GUI header label, runtime GUI version string, release notes heading, and committed frontend
distbundle so the shipped RC10.1 package stays internally consistent.
v1.0.0 RC10 - Release Prep, Persistence Fixes & Verification
Release Date: March 31, 2026
This release rolls the project forward to the RC10 line, includes the remaining persistence and dee...
v1.0.0-rc.10.1
v1.0.0 RC10.1 - Visibility Hotfix & Release Sync
Release Date: April 2, 2026
This release is a focused RC10.1 follow-up for the work completed in this session. It fixes a direct-render conditional visibility regression where binary Home Assistant entities such as input_boolean could generate invalid std::string(...) comparisons and fail ESPHome compilation, and it synchronizes the shipped version metadata and frontend bundle for the RC10.1 package.
Stability & Verification
- Conditional Visibility Compilation Fix (Issue #363): Direct-render widget visibility checks now treat binary Home Assistant domains such as
input_booleanas boolean IDs instead of forcing them through string conversion, while text-style entities likeinput_selectstill use the generated_txtsensors for string comparison. - Regression Coverage: Added targeted Vitest coverage for the visibility-condition binary/text branching so the broken
std::string(id(input_boolean...).state)pattern does not return. - Release Metadata Sync: Updated the package version, Home Assistant manifest version, GUI header label, runtime GUI version string, release notes heading, and committed frontend
distbundle so the shipped RC10.1 package stays internally consistent.
v1.0.0 RC10 - Release Prep, Persistence Fixes & Verification
Release Date: March 31, 2026
This release rolls the project forward to the RC10 line, includes the remaining persistence and deep-sleep fixes that were still open from GitHub Issue #356, keeps the raw YAML editor override persistent across save/load, and refreshes the shipped release metadata so package/release automation stays aligned.
Release Highlights
- Persistent Manual YAML Override: YAML edits made directly in the snippet editor now persist with the saved layout as a separate raw override instead of being silently lost on save/load.
- Page Metadata Persistence: Per-page schedule and visibility metadata such as
refresh_type,refresh_time,visible_from,visible_to, andlayoutnow survive backend storage round-trips correctly. - Deep Sleep Script Cleanup: The generated deep-sleep flow now uses a single stay-awake guard around
deep_sleep.enter, avoiding redundant logic while keeping retry behavior intact. - Persistent 12-Hour Datetime Mode (Discussion #359): The datetime widget now exposes a dedicated
Clock Modesetting with24 Hourand12 Hour (AM/PM)options. Preview rendering plus OpenDisplay, OEPL, and LVGL exports all honor that saved setting, so users no longer need to manually reapply%I:%M %pafter each edit or export. - Graph Duration Presets: Graph widgets now include a
Duration Presetselector with common ranges like minutes, hours, days, and weeks, while still keeping the free-form duration field available for custom lookback windows. - Week-Aware Graph History Parsing: Shared graph duration parsing now supports week-based and decimal durations across canvas preview, direct export, LVGL export hooks, history helper generation, Home Assistant history fetching, grid inference, and smart axis labels. This means values like
1wand2wwork consistently without requiring users to translate everything into raw hours. - Optional HA State Sync for LVGL Buttons (Discussion #347):
lvgl_buttonnow has an explicitSync Checked State from HAoption for mirrorable binary entities such asswitch,light,fan, andinput_boolean. When enabled, the button becomes checkable, binds its checked state to the Home Assistant entity, and refreshes automatically when HA state changes, while the existing click action behavior remains intact. - Compilation Regression Coverage: The RC8.3
is_sleep_timescoping problem reported in Issue #339 remains covered by a dedicated generator regression so the brokenreturn !is_sleep_time;pattern does not reappear in generated output. - Localized Weather Forecast Day Labels: The weather forecast widget now exposes an explicit day-language selector so editor previews and generated firmware/LVGL output stay aligned instead of mixing localized preview labels with English device labels, covering the reports in Issue #231 and Issue #348.
- Graph History Helper Package: Advanced graph history mode now includes built-in
Copy HA YAMLandDownload YAMLactions that generate a starter Home Assistant helper package backed bysql.query. This makes the previously undocumented template/helper setup far easier to adopt for recorder-backed history graphs. - Graph & Sensor Bar Typography Completion (Issue #361): The
graphandtemplate_sensor_barwidgets now exposefont_family,font_weight, andfont_sizeconsistently, and those settings are honored across browser preview, direct ESPHome export, and LVGL export. - Single-Page Navigation YAML Fix (Issue #362): Single-page projects no longer emit
change_page_toscripts or dangling debounce references tolast_page_switch_time, and LVGL nav bars now suppress prev/next actions when paging is unavailable. - Issue #356 Follow-Up Fixes: Direct-render
shape_rectwidgets now scope their rounded-corner helper lambdas per widget so repeated rounded rectangles no longer collide at compile time, the datetime canvas preview now matches device behavior by leaving narrow text visible instead of clipping it, generated startup scripts now include a one-time 5-second post-sync grace period before the first render so Home Assistant-backed sensors have time to populate, and touch-debounce globals are only emitted for layouts that actually use touch widgets.
Stability & Verification
- Export Shape Stability: The new LVGL button sync path only adds
checkableandstateoutput when the feature is enabled, so existing button exports stay unchanged by default. - CI Lint Hardening: Nested workspace
tmpdirectories are now ignored consistently by ESLint, preventing generated preview/build artifacts from showing up as false-positive source lint failures during release and pre-push validation.
v1.0.0 RC9.1 - Release Metadata & Deployment Follow-Up
Release Date: March 29, 2026
This follow-up release finishes the RC9 packaging and deployment work so Home Assistant, GitHub Releases, and the GitHub Pages editor all point at the same current build.
Maintenance
- Removed stale debug-overlay test residue from the sidebar suite and kept coverage aligned with the quality gate.
- Rebuilt the committed frontend bundle so the packaged Home Assistant panel assets and GitHub Pages deployment stay on the same RC9.1 output.
v1.0.0 RC9 - Home Assistant Reliability, Security Hardening & Quality Overhaul
Release Date: March 28, 2026
The main goals of this version are simple: make the editor behave more reliably inside Home Assistant, make saved layouts and custom hardware profiles load correctly, harden the backend surface, and continue the broader cleanup of the codebase.
New Features & Enhancements
- Universal MQTT Integration (Issue #352): You can now use
mqtt:your/topic/pathdirectly in the main Entity field instead of managing a separate MQTT-only input. This makes MQTT widgets easier to set up, easier to understand, and more consistent across the editor. - Edit Custom Hardware Profiles (Issue #353): Imported custom hardware profiles can now be loaded back into the Custom Hardware form, edited, and saved again without starting from scratch.
Bug Fixes & Stability
- Home Assistant Embedded Editor Reliability: The editor now behaves much more reliably when opened inside Home Assistant. Layouts, entities, saved designs, and hardware templates load more consistently, and the panel boot flow was cleaned up after several HA-specific auth and routing failures.
- Custom Hardware Profile Loading: Layouts that reference saved custom hardware profiles now load correctly in Home Assistant. Custom hardware YAML packages are fetched through an authenticated backend route instead of relying on fragile direct static file access.
- Graph History Preview Reliability: Graph previews in the editor now use Home Assistant's native history API in embedded mode. This makes layouts with history widgets much less likely to fail because of a custom proxy path.
- LCD Navigation Debounce Follow-Up (Issue #349): Navigation timing was aligned more carefully for touch LCD devices, reducing bounce-back and accidental double-navigation on slower panels such as the Waveshare 7" ESP32-S3.
- Deep Sleep Stay-Awake YAML Fix (Issue #354): Fixed a YAML generation issue that could produce invalid ESPHome output when Deep Sleep and Stay Awake were enabled together on e-paper devices.
- Missing
change_page_toScript (Issue #351): Fixed a compilation problem where some single-page designs could still reference the page-change script even though that script was only being generated for multi-page layouts. - Image Plugin Crash: Fixed an LVGL image handling problem that could break designs using custom images.
- Hardware Touch Debounce: Improved touch debounce handling across interactive widgets to reduce accidental double taps.
- Log Spam on Display Restart: Reduced repeated "Waiting for sync..." logging when a display was restarting but already had an active connection.
- Battery Sensor Reliability: Improved battery widget handling for imported hardware and Home Assistant battery entities.
- Image Rendering Optimization: Color image exports now use a faster rendering path that is more stable on high-resolution RGB displays.
- **Ca...