Skip to content

v1.0.0-rc.21

Choose a tag to compare

@github-actions github-actions released this 17 Jun 12:09

v1.0.0-rc.21 - USB CDC Logger Conflict Resolution & Device Settings Fix

Release Date: June 17, 2026

This RC21 release fixes a pin conflict on reTerminal E1001/E1002 and other devices using GPIO19/GPIO20 for hardware peripherals, and resolves a Device Settings modal bug where the auto-cycle interval field failed to appear.

Stability & Verification

  • Avoid USB CDC Logger Conflict (Issue #422): Detects if the hardware profile uses native USB pins (GPIO19/20) for device peripherals like I2C. If in use, the YAML generator now prints a warning, disables the suggestion to use USB_CDC logging, and suggests UART0 instead to prevent conflicts.
  • Device Settings Auto-Cycle Visibility Fix (Issue #423): The "Cycle every N seconds" interval field now correctly appears when the "Enable Automatic Page Cycling" checkbox is checked. The updateDeviceSettingsVisibility() function was refactored into isolated try-catch sections so that an error in any one visibility group (power modes, dim timeout, rendering mode) no longer prevents subsequent groups (including the auto-cycle toggle) from executing. Defensive null checks and optional chaining were also added to CustomHardwarePanel.updateVisibility() and ProtocolHardwarePanel.updateStrategyDisplay().
  • Release Metadata Refresh: Updated package metadata, Home Assistant manifest version, runtime version string, visible header label, release notes, and rebuilt frontend assets for the RC21 release line.

v1.0.0-rc20.4 - MIPI/Parallel RGB Display Wizard Support

Release Date: June 16, 2026

This RC20.4 hotfix adds support for MIPI and parallel RGB displays in the custom hardware profile wizard, fixing issues where SPI bus and pin options were generated incorrectly.

Stability & Verification

  • MIPI/Parallel RGB display support in wizard (Issue #416): Added parallel RGB rpi_dpi_rgb platform support in the custom hardware profile wizard dropdown, and updated the YAML generator to correctly identify non-SPI display platforms (including mipi_dsi, mipi_rgb, and rpi_dpi_rgb) to omit SPI configurations.
  • Release Metadata Refresh: Updated package metadata, Home Assistant manifest version, runtime version string, visible header label, release notes, and rebuilt frontend assets for the RC20.4 hotfix line.

v1.0.0-rc20.3 - Online Image LVGL Recolor Fix

Release Date: June 16, 2026

This RC20.3 hotfix addresses the online image recolor bug in LVGL mode.

Stability & Verification

  • LVGL Online Image Recolor Fix (Issue #417): Online images in LVGL mode now use image_recolor_opa: "transp" instead of unconditionally forcing "cover", preventing downloaded images from being completely tinted/hidden in the generated layout.
  • Release Metadata Refresh: Updated package metadata, Home Assistant manifest version, runtime version string, visible header label, release notes, and rebuilt frontend assets for the RC20.3 hotfix line.

v1.0.0-rc20.2 - LVGL Touchscreen & Image Hotfix

Release Date: June 10, 2026

This RC20.1 hotfix follows up on Discussion #420, where ESPHome 2026.5.3 still rejected generated LVGL YAML after the RC20 media-player slider fix.

Stability & Verification

  • LVGL Touchscreen Schema Fix (Discussion #420): LVGL export now emits touchscreen references in ESPHome's current object form, touchscreen_id: ..., and omits the touchscreens block entirely when the profile has no concrete touchscreen component instead of producing touchscreens: [].
  • LVGL Image Widget Compatibility (Discussion #420): LVGL image widgets now export with ESPHome's current image: widget key instead of the legacy img: key, preventing Unknown widget type: img compile failures.
  • LVGL Image Import Compatibility: Native LVGL import accepts both current image: and legacy img: widget tags so older snippets can still round-trip into the designer.
  • Weather Hourly Helper YAML Follow-up (Issue #414): The weather widget's Copy HA YAML action now uses the same robust timestamp matching as the export comments for hourly forecasts, including relative +Nh slots and fixed-hour slots that roll forward to tomorrow after the slot has passed.
  • Weather Hourly Temperature Entity Fix (Issue #414): Hourly forecast temperature helpers and ESPHome Home Assistant sensors now use sensor.weather_forecast_plus_1h / sensor.weather_forecast_hour_0900 without the daily-only _high suffix, while the designer preview still accepts existing _high entities as a compatibility fallback.
  • OpenDisplay Text Truncation Option (Issue #421): Text and Sensor Text widgets now expose a Truncate Overflow option and emit truncate: true for OpenDisplay text exports when enabled, so users can match the clipped editor preview on-device.
  • Release Metadata Refresh: Updated package metadata, package lock metadata, Home Assistant manifest version, runtime version string, visible header label, release notes, and rebuilt frontend assets for the RC20.1 hotfix line.

v1.0.0 RC20 - Hardware Import, LVGL Images & Font Paths

Release Date: June 10, 2026

This RC20 release follows up on the latest reports in issues #417 and #418 plus discussions #419 and #420, while rechecking the recent #416, #414, and #409 feedback against the current generator.

Stability & Verification

  • Imported Hardware Profile Selection (Issue #418): Importing a hardware recipe now refreshes the profile registry, selects the imported profile when it can be identified, and loads the custom hardware editor fields immediately instead of leaving users on stale/default custom settings.
  • Saved Custom Profile State Sync (Issue #418 / #416 follow-up): Selecting an imported or saved custom profile now also refreshes the persisted custom-hardware state from that profile, keeping generated YAML, canvas dimensions, and visible form fields aligned.
  • LVGL Online Image Export Fix (Issue #417): LVGL online-image exports no longer attach invalid lvgl.widget.refresh callbacks to image widgets after download/error events.
  • Local Font File Export (Discussion #420): Custom font values that point at local .ttf, .otf, .pcf, or .bdf files now export as ESPHome local font files instead of being treated as Google Font family names.
  • Media Player Slider Action (Discussion #419): LVGL sliders bound to media_player.* entities now emit a modern homeassistant.action volume-set action with a 0-100 slider mapped to Home Assistant's 0.0-1.0 volume level.
  • Release Metadata Refresh: Updated package metadata, package lock metadata, Home Assistant manifest version, runtime version string, visible header label, release notes, and rebuilt frontend assets for the RC20 release line.

v1.0.0 RC19.3 - Guition P4 LVGL Follow-up Hotfix

Release Date: June 6, 2026

This RC19.3 hotfix follows the latest field feedback on Issue #416 and keeps the Guition ESP32-P4 MIPI-DSI profiles aligned with the generated LVGL YAML.

Stability & Verification

  • Profile-aware LVGL IDs (Issue #416): LVGL export now uses hardware profile display and touchscreen IDs instead of always emitting my_display and my_touchscreen, so Guition P4 package exports reference main_display and device_touchscreen consistently.
  • Guition P4 Profile Updates (Issue #416): The JC4880P443 profile now uses the expected component IDs, includes PSRAM speed and ES8311 audio scaffolding, and the new JC8012P4A1C 10.1" 800x1280 MIPI-DSI profile is available as a supported built-in package profile.
  • Snippet Import Robustness (Discussion #254): Pasted ESPHome snippets wrapped in Markdown backticks are normalized before parsing, and display lambdas using it.print(...) are imported as text widgets where possible.
  • Release Metadata Refresh: Updated package metadata, package lock metadata, Home Assistant manifest version, runtime version string, visible header label, release notes, and rebuilt frontend assets for the RC19.3 hotfix line.

v1.0.0 RC19.2 - Guition JC4880P443 Profile Hotfix

Release Date: June 6, 2026

This RC19.2 hotfix follows up on Issue #416 after field testing on the Guition JC4880P443 ESP32-P4 MIPI-DSI panel.

Stability & Verification

  • Built-in JC4880P443 Profile: Added Guition JC4880P443 as a supported built-in hardware package profile with the required ESP32-P4 esp_ldo, esp32_hosted, psram, GT911 touch, MIPI-DSI display, and GPIO23 backlight blocks.
  • Bundled Profile Parsing Fix: Hardware recipe metadata now reads the display platform/model from the display: block instead of the first platform: in the file, preventing output or touchscreen sections from being mistaken for the display.
  • Regression Coverage: Added tests for the new built-in profile metadata and required boot/connect/backlight YAML blocks.
  • Release Metadata Refresh: Updated package metadata, package lock metadata, Home Assistant manifest version, runtime version string, visible header label, release notes, and rebuilt frontend assets for the RC19.2 hotfix line.

v1.0.0 RC19.1 - Hourly Weather Forecast Hotfix

Release Date: June 6, 2026

This RC19.1 hotfix addresses the hourly forecast temperature mismatch reported in Issue #414.

Stability & Verification

  • Relative Hourly Temperature Entity Fix: Generated Home Assistant helper YAML now names relative hourly temperature sensors with the High suffix, so Home Assistant's generated entity IDs line up with the ESPHome sensors that the display subscribes to.
  • Regression Coverage: Added focused weather forecast tests for the corrected relative hourly helper YAML in both export comments and the Copy HA YAML workflow.
  • Release Metadata Refresh: Updated package metadata, package lock metadata, Home Assistant manifest version, runtime version string, visible header label, release notes, and rebuilt frontend assets for the RC19.1 hotfix line.

v1.0.0 RC19 - Autosave Control & MIPI Custom Hardware

Release Date: June 6, 2026

This RC19 release addresses the latest layout-saving and hardware-profile feedback from issues #415 and #416 plus discussion #254, while confirming the native LVGL button import path from issue #409 remains covered.

Stability & Verification

  • Autosave Preference (Issue #415): Editor Preferences now includes an Automatically save layout changes control. It stays enabled by default for existing behavior, but users can turn it off to prevent background saves while keeping the explicit Save Layout button available.
  • MIPI Custom Hardware Editing (Issue #416 / Discussion #254): Custom hardware profiles now expose MIPI DSI, MIPI SPI/DBI, MIPI RGB, ST7701S, and ST7123 options. Imported MIPI profiles preserve their display platform/model in the edit form, and generated MIPI DSI recipes use display dimensions without SPI-only control-pin output.
  • Issue #409 Regression Check: Native LVGL button YAML import remains covered for the two-button HA switch case, and export-side entity registration now explicitly verifies one Home Assistant switch definition per imported button entity with no duplicate binary sensor registration.
  • Release Metadata Refresh: Updated package metadata, package lock metadata, Home Assistant manifest version, runtime version string, visible header label, release notes, and rebuilt frontend assets for the RC19 release line.

v1.0.0 RC18.2 - Sunton Display & Weather Helper Hotfix

Release Date: June 4, 2026

This RC18.2 hotfix addresses the Sunton/Guition 2432S028R rendering report from issue #413 and tightens the weather helper YAML discussed in discussion #325.

Stability & Verification

  • Sunton 2432S028 Landscape Dimensions (Issue #413): Corrected the Sunton 2432S028 and 2432S028R hardware packages so the ILI9341 dimensions match the existing landscape swap_xy transform, preventing LVGL output from being initialized with portrait-sized display bounds.
  • Weather Helper Entity IDs (Discussion #325): Generated Home Assistant weather template helpers now include default_entity_id entries that match the ESPHome sensor.weather_forecast_* subscriptions, avoiding name-derived entity IDs such as sensor.weather_forecast_plus_1h when the unique ID includes _high.
  • Regression Coverage Expansion: Added focused coverage for the Sunton package dimension contract and copied weather helper YAML entity IDs.
  • Release Metadata Refresh: Updated package metadata, package lock metadata, Home Assistant manifest version, visible header label, release notes, and rebuilt frontend assets for the RC18.2 release line.

v1.0.0 RC18.1 - Undo History Hotfix

Release Date: June 3, 2026

This RC18.1 hotfix keeps the undo stack aligned with the loaded layout after the editor reloads.

Stability & Verification

  • Reload Undo Safety (Issue #412): Loading a saved layout now replaces the initial startup history baseline, preventing the first undo after reload from restoring the blank default page and dropping loaded pages.
  • Regression Coverage Expansion: Added focused undo-history coverage for the startup/load/edit/undo sequence that previously exposed the stale blank-page snapshot.
  • Release Metadata Refresh: Updated package metadata, package lock metadata, Home Assistant manifest version, visible header label, release notes, and rebuilt frontend assets for the RC18.1 release line.

v1.0.0 RC18 - Precision Editing & Hardware Profiles

Release Date: June 3, 2026

This RC18 release adds the requested precision-positioning editor improvements and expands bundled display hardware coverage with M5Stack Tab5 and GeekMagic Mini profiles.

Stability & Verification

  • Precision Widget Nudging (Issue #411): Selected widgets can now be moved with the arrow keys in 1 px steps, with Shift+Arrow providing a 10 px step for larger adjustments while preserving editable-field arrow navigation.
  • Zoom-Stable Selection Controls (Issue #411): Resize handles and the multi-selection toolbar now keep a consistent on-screen size when zooming into the canvas, reducing obstruction during detailed placement work.
  • Active Artboard Drag Stability (Issue #411): The active artboard highlight no longer shifts the artboard upward, so selected widgets keep their visual coordinate plane during precision dragging.
  • M5Stack Tab5 Profile (Issue #397): Added a bundled ESP32-P4/MIPI DSI hardware recipe for the M5Stack Tab5 using the current M5STACK-TAB5-V2 display model and ST7123 touchscreen platform, with comments for older M5STACK-TAB5/GT911 units.
  • GeekMagic Mini ESP8266 Profile (PR #398): Added the GeekMagic Mini ESP8266/ST7789V recipe and parser coverage so the profile is available from the bundled hardware list.
  • Regression Coverage Expansion: Added focused tests for arrow-key nudging, zoom-stable context toolbar scaling, and bundled hardware metadata parsing for both new profiles.
  • Release Metadata Refresh: Updated package metadata, package lock metadata, Home Assistant manifest version, visible header label, release notes, and rebuilt frontend assets for the RC18 release line.

v1.0.0 RC17 - Minimal YAML Copy & LVGL Import Follow-up

Release Date: June 1, 2026

This RC17 release adds a focused copy path for users who want to merge generated display UI into an existing ESPHome file without re-copying the hardware/system scaffold.

Stability & Verification

  • Minimal UI YAML Copy: Added a dedicated UI copy action for ESPHome YAML output that removes root hardware/system sections such as esphome, board, Wi-Fi, API, OTA, logger, and platform settings while preserving display, LVGL, fonts, sensors, and other UI-related sections.
  • Auto-commented Scaffold Cleanup: The UI copy action also strips matching auto-commented hardware/system root blocks, so users who already merged the scaffold can copy only the useful layout YAML on later iterations.
  • Issue #409 Follow-up: Keeps the full YAML copy unchanged while giving issue #409 users a lower-friction way to reuse imported/generated LVGL display content inside their own maintained ESPHome configs.
  • LVGL Switch Sync Export Repair: Switch, light, fan, and input-boolean backed LVGL button state sync now emits ESPHome switch: Home Assistant imports instead of invalid binary_sensor: entries for switch.* entities.
  • Package Rotation Placement Repair: Package/custom hardware rotation injection is now scoped to the display: block, preventing rotation: from being inserted under unrelated platform blocks such as output.ledc.
  • Imported LVGL Color Preservation: Native LVGL button import now normalizes nested checked-state colors alongside base colors, so dark-mode changes do not collapse imported custom button colors back to theme defaults.
  • OpenDisplay Sunrise/Sunset Vertical Alignment (Issue #408): OpenDisplay sunrise/sunset rows now pair their lm middle anchors with middle Y coordinates, matching the editor preview when the widget box is taller than the icon or text.
  • Release Metadata Refresh: Updated package metadata, package lock metadata, Home Assistant manifest version, runtime version string, visible header label, release notes, and rebuilt frontend assets for the RC17 release line.

v1.0.0 RC16 - OpenDisplay Icon & Astronomy Follow-up

Release Date: June 1, 2026

This RC16 release verifies TuTuc0's latest OpenDisplay reports from issues #407 and #408, the follow-up weather condition request in issue #403, and native LVGL import feedback from issue #409.

Stability & Verification

  • MDI Hex Icon Names (Issue #407): MDI Icon widgets now resolve manual hex codes against the bundled Material Design Icons font metadata before exporting OpenDisplay/OEPL payloads, so examples such as F072A and F011C export washing-machine and cellphone instead of falling back to information.
  • Full MDI Icon Browser: The full icon browser now exposes the complete bundled Pictogrammers Material Design Icons 7.4.47 catalog while keeping the compact property-panel dropdown curated and lazy-loading the larger catalog in its own frontend chunk.
  • Sunrise / Sunset OpenDisplay Alignment (Issue #408): Sunrise/Sunset OpenDisplay rows now use font-independent left-middle anchors (lm) for both icon and text entries, avoiding ascender-baseline differences between the MDI icon font and the text font.
  • Partly Cloudy Night Weather Mapping (Issue #403): Weather Icon exports now include Home Assistant's partlycloudy-night condition and map it to OpenDisplay's weather-night-partly-cloudy MDI icon.
  • Native LVGL Button Import (Issue #409): Importing handwritten LVGL buttons with nested label widgets now restores the label as button text instead of creating extra canvas widgets, recovers Home Assistant service entities from on_click, infers checked-state sync from common state.checked lambdas, and warns when root hardware/system sections may still be commented in generated YAML.
  • Regression Coverage Expansion: Added focused tests for custom MDI hex resolution, full-browser MDI filtering, OpenDisplay sunrise/sunset anchors, the new partly-cloudy night weather lookup, and handwritten LVGL button import.
  • Release Metadata Refresh: Updated package metadata, package lock metadata, Home Assistant manifest version, runtime version string, visible header label, release notes, and rebuilt frontend assets for the RC16 release line.

v1.0.0 RC15 - OpenDisplay Payload Polish

Release Date: May 27, 2026

This RC15 release folds in TuTuc0's latest OpenDisplay feedback from issues #401 and #403 through #406, focusing on matching what the editor shows to what OpenDisplay receives.

Stability & Verification

  • OpenDisplay Top Text Anchors (Issue #401): Top-aligned text, sensor text, and date/time payloads now use Pillow ascender anchors (la, ma, ra) instead of top bounding-box anchors, which better matches OpenDisplay's rendered baseline while keeping the corrected x/y anchor coordinates.
  • OpenDisplay Weather Icons Verified (Issue #403): Rechecked Weather Icon exports and locked the OpenDisplay mapping to MDI names such as weather-sunny, weather-partly-cloudy, and weather-cloudy, while OEPL keeps its shorter aliases.
  • MDI Icon OpenDisplay Anchors (Issue #404): MDI Icon widgets now export centered x/y coordinates plus anchor: mm, avoiding the OpenDisplay default la offset that placed icons away from the editor preview.
  • Date Only Font Size (Issue #405): Date & Time widgets in Date Only or Weekday Day Month OpenDisplay modes now export date_font_size; Time Only and Time & Date continue using time_font_size.
  • Sensor Plot Entity Picker (Issue #406): Sensor Plot now exposes an Entity ID picker in its Data Source section and uses that root entity in OpenDisplay/OEPL plot series export.
  • Regression Coverage Expansion: Updated focused tests, snapshots, and schema baselines for the OpenDisplay anchor, icon, date/time, weather icon, and Sensor Plot contracts.
  • Release Metadata Refresh: Updated package metadata, package lock metadata, Home Assistant manifest version, runtime version string, visible header label, release notes, and rebuilt frontend assets for the RC15 release line.

v1.0.0 RC14.1 - OpenDisplay Anchor Follow-up

Release Date: May 26, 2026

This RC14.1 follow-up tightens the OpenDisplay anchor compatibility work from RC14 after rechecking the Pillow text-anchor semantics against the OpenDisplay payload contract.

Stability & Verification

  • OpenDisplay Anchor Semantics: Confirmed that ESPHome Designer's 9-position alignment model should emit Pillow-compatible visual anchors such as lt, mt, mm, and rb, while avoiding baseline-specific anchors such as ms for center alignment.
  • Date/Time OpenDisplay Alignment: Date/time OpenDisplay exports now reuse the shared anchor-position helper, preventing TOP_CENTER and related alignments from being interpreted as vertical center positions.
  • Anchor Regression Coverage: Added focused tests for all 9 designer-to-Pillow anchor mappings and date/time OpenDisplay anchor positioning.
  • Release Metadata Refresh: Updated the package version, package lock metadata, Home Assistant manifest version, runtime version string, visible header label, release notes heading/date, and rebuilt frontend assets for the RC14.1 release line.

v1.0.0 RC14 - OpenDisplay Icons & C/C++ Export

Release Date: May 25, 2026

This RC14 release addresses the new OpenDisplay compatibility reports and adds a raw drawing-code export mode for users who want to reuse ESPHome Designer layouts outside ESPHome projects.

Stability & Verification

  • OpenDisplay Weather Icon Compatibility (Issue #403): Weather Icon OpenDisplay exports now use MDI weather icon names such as weather-sunny, weather-partly-cloudy, and weather-cloudy, while preserving the existing OEPL aliases for OEPL exports.
  • OpenDisplay Anchor Normalization (Issue #401): OpenDisplay payload serialization now normalizes legacy center-first anchors such as ct, cm, and cb into Pillow-style anchors such as mt, mm, and mb before YAML is emitted.
  • OpenDisplay Text Anchor Positioning (Issue #401): OpenDisplay text and sensor text exports now move the exported x/y reference point to match the selected Pillow anchor, so TOP_CENTER emits x + width / 2 with anchor: mt instead of keeping the top-left coordinate.
  • C/C++ Drawing Mode (Issue #400): Added a C/C++ Drawing Code rendering mode that emits the direct drawing callback body without the ESPHome YAML scaffold, giving non-ESPHome ESP32 projects a practical starting point.
  • Theme-Auto Shape Borders: Shape borders set to theme auto now stay on the foreground color when the fill is white, so light pages correctly render black borders across canvas, OpenDisplay, LVGL, and C/C++ drawing exports.
  • Release Metadata Refresh: Updated the package version, package lock metadata, Home Assistant manifest version, runtime version string, visible header label, release notes heading/date, and rebuilt frontend assets for the RC14 release line.

v1.0.0 RC13 - OpenDisplay Anchors & Portrait Rotation

Release Date: May 23, 2026

This RC13 release closes the latest OpenDisplay and portrait-orientation regressions reported in Issue #401 and Issue #399. OpenDisplay text payloads now use Pillow-compatible anchors, and package-based display templates now receive an explicit display rotation when portrait mode is selected.

Stability & Verification

  • OpenDisplay Text Anchor Compatibility (Issue #401): Text, sensor text, and date/time OpenDisplay exports now emit Pillow-style anchors such as mt, mm, and mb instead of unsupported center-first values like ct, cm, and cb.
  • Portrait Rotation for Package Templates (Issue #399): Package-based hardware snippets now inject a rotation: field when the template does not already contain one, fixing portrait export for boards such as the Waveshare ESP32-S3 Touch LCD 4.3.
  • Orientation Round-Trip Repair (Issue #399): YAML and OpenDisplay imports now infer portrait orientation from display rotation: or action rotate: values when no generated orientation header is available.
  • Release Metadata Refresh: Updated the package version, package lock metadata, Home Assistant manifest version, runtime version string, visible header label, release notes heading/date, and rebuilt frontend assets for the RC13 release line.

v1.0.0 RC12.14 - HACS Wrapper Compatibility

Release Date: May 12, 2026

This RC12.14 follow-up completes the HACS default submission compatibility fix. The HACS/default PR helper searches for any file matching *manifest.json, so the Vite asset map now ships as vite-assets.json to avoid being mistaken for a second Home Assistant integration manifest.

Stability & Verification

  • HACS Default Wrapper Compatibility: Renamed the Vite dist asset map from vite-manifest.json to vite-assets.json, avoiding both Hassfest's manifest.json scan and HACS/default's broader *manifest.json helper.
  • Release Metadata Refresh: Updated the package version, package lock metadata, Home Assistant manifest version, runtime version string, visible header label, release notes heading/date, and rebuilt frontend assets for the RC12.14 release line.

v1.0.0 RC12.13 - HACS Submission Compatibility

Release Date: May 12, 2026

This RC12.13 release addresses the HACS default review feedback for the ESPHome Designer submission. The shipped frontend bundle no longer contains a nested Vite file named manifest.json, which prevented the HACS default Hassfest job from recursively mistaking the frontend build manifest for a Home Assistant integration manifest.

Stability & Verification

  • HACS Hassfest Compatibility: Renamed the Vite dist manifest to vite-manifest.json and updated the dist freshness metadata tooling so the HACS default Hassfest mount-only validation scans only the real Home Assistant integration manifest.
  • Submission Cleanup: Removed the duplicate integration-level hacs.json and the unused integration-level icon.png; HACS reads the root hacs.json, and brand assets are served from home-assistant/brands.
  • Release Metadata Refresh: Updated the package version, package lock metadata, Home Assistant manifest version, runtime version string, visible header label, release notes heading/date, and rebuilt frontend assets for the RC12.13 release line.

v1.0.0 RC12.12 - E1002 Inversion Override Hotfix

Release Date: April 28, 2026

This RC12.12 hotfix closes Issue #394, where the reTerminal E1002 (6-color) could still export inverted black-background YAML even when the user had disabled the Inverted Colors device setting. The native generator now treats the layout-level inversion setting as an explicit override instead of always forcing the e-paper/profile default, so regenerated E1002 snippets once again produce the expected white background with black text when inversion is turned off.

Stability & Verification

  • Explicit Inversion Override (Issue #394): Native ESPHome display lambda generation now respects an explicit invertedColors: false layout setting before falling back to the device profile's e-paper default, preventing unwanted black-background exports on the reTerminal E1002 when users disable inverted colors.
  • Targeted Regression Validation: Rechecked the native generator behavior against the corrected on-disk source and reran the frontend validation slice plus the full repo validation set (npm run lint, npm test, npm run build, and npm run python:test) to confirm the hotfix did not introduce collateral regressions.
  • Release Metadata Refresh: Updated the package version, package lock metadata, Home Assistant manifest version, runtime version string, visible header label, and release notes heading/date for the RC12.12 hotfix line.

v1.0.0 RC12.11 - OpenDisplay Action Compatibility

Release Date: April 25, 2026

This RC12.11 follow-up closes Issue #393, where OpenDisplay exports had fallen behind the current Home Assistant/OpenDisplay service contract. The generated ODP snippet now targets devices the way the upstream integration expects, sends a real structured payload instead of a block-scalar string, and once again preserves the selected target from the settings UI instead of silently dropping it.

Stability & Verification

  • OpenDisplay drawcustom Contract Alignment (Issue #393): ODP exports now emit action: opendisplay.drawcustom snippets with target.device_id, structured payload arrays, dry-run: false, and the default refresh_type: "0", matching the current OpenDisplay/Home Assistant action schema instead of the older entity-id plus payload: |- shape that Home Assistant rejects.
  • ODP Device Selection Persistence Repair (Issue #393): The OpenDisplay settings field is now explicitly a device-id field end to end, and the shipped modal input IDs once again match the protocol-settings controller, so the selected ODP target actually persists instead of falling back to the placeholder on export.
  • Import/Compatibility Hardening: OpenDisplay snippet import now accepts both action: and legacy service: wrappers plus structured payload: arrays, while older saved settings keep loading safely when their legacy ODP identifier already looks like a device ID.
  • Regression Coverage Expansion: Added focused frontend regressions for the new ODP action payload shape, legacy ODP setting compatibility, action-style snippet parsing, and the repaired device-id settings flow.
  • Release Metadata Refresh: Updated the package version, package lock metadata, Home Assistant manifest version, runtime version string, visible header label, release notes heading/date, and rebuilt frontend assets for the RC12.11 release line.

v1.0.0 RC12.10 - Round-Trip Repair & Calendar Control

Release Date: April 24, 2026

This RC12.10 follow-up rolls together the latest user-reported round-trip bugs and the lowest-risk quality-of-life requests from recent PRs/discussions. OpenDisplay text widgets now round-trip cleanly through export/import with centered anchors and explicit widths intact, snippet regeneration no longer duplicates generated headers when async refreshes race, custom hardware now understands ESP32-P4, and calendar widgets finally gain configurable source prefixes plus optional grouped day labels. The release also adds a one-click HACS badge and documents the existing YAML-import/debug-grid workflow more clearly for users who were missing those entry points.

Stability & Verification

  • OpenDisplay Width/Alignment Round-Trip (Issue #390, PR #391): OpenDisplay text and sensor_text exports now use the correct centered anchor mapping, keep max_width instead of forcing unwanted multiline conversion when a width is explicit, and restore both alignment and width when the payload is imported back into the canvas.
  • Snippet Regeneration Hardening (Issue #392): Snippet merging now strips repeated generated preambles instead of only the first copy, and stale async snippet generations are ignored once a newer refresh has been requested, preventing duplicate YAML headers and old widget output from overwriting current output.
  • ESP32-P4 Custom Hardware Support (PR #378): Added ESP32-P4 to the custom hardware chip picker, mapped it onto the right pin datalist, taught hardware import/profile parsing to recognize P4 boards, and generated the expected board, variant, framework, and PSRAM guidance for exported YAML.
  • Calendar Prefix & Grouping Controls (Discussion #375): Calendar widgets now expose configurable prefix length and separator settings for the Home Assistant helper flow, the downloaded helper script accepts those parameters while preserving legacy fallback behavior for older setups, and direct/preview event rows can optionally group repeated day numbers for cleaner multi-event lists.
  • Install/Discoverability Docs (PR #389, Discussion #387): Added the Home Assistant "Open in HACS" badge to the README and documented that YAML can already be imported back into the canvas while the existing Debug Grid toggle can be used for coordinate overlays during layout work.
  • Regression Coverage Expansion: Added focused frontend regressions for OpenDisplay centered-width imports/exports, snippet preamble self-healing and stale-generation races, ESP32-P4 hardware generation/import/UI flows, calendar helper/config rendering, grouped day display, and refreshed calendar export snapshots.
  • Release Metadata Refresh: Updated the package version, package lock metadata, Home Assistant manifest version, runtime version string, visible header label, release notes heading/date, and rebuilt frontend assets for the RC12.10 release line.

v1.0.0 RC12.9 - Group Reordering Guardrails

Release Date: April 21, 2026

This RC12.9 follow-up closes the hierarchy regression reported in Issue #384. After the earlier persistence fix restored grouped-widget parentId data, users found that dragging groups in the hierarchy could still nest one group inside another by accident, and stale nested groups were then awkward to select or pull back out. RC12.9 keeps groups top-level during hierarchy drag/drop, lets older broken layouts recover cleanly, and makes the existing multi-select drag workflow easier to discover from the UI.

Stability & Verification

  • Top-Level Group Reordering (Issue #384): Dragging groups in the hierarchy now reorders them without assigning a new parentId, so groups no longer get nested accidentally when dropped on other groups or grouped children.
  • Stale Nested Group Recovery (Issue #384): Hierarchy traversal, hierarchy ordering sync, and canvas selection now treat groups as top-level containers even if older saved data still carries a stale parentId, making those layouts recoverable instead of trapping the nested group under its parent.
  • Multi-Select Drag Discoverability: The hierarchy controls now include a selection tip for Shift/Ctrl multi-select and box selection, clarifying that multiple widgets can already be moved together by dragging any selected widget on the canvas.
  • Regression Coverage Expansion: Added focused frontend regressions for top-level-only group traversal, stale nested group recovery through the hierarchy, protected selection behavior for groups with stale parentId data, and the new grouping hint copy.

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_state versus on_value mode when queued for export, so binary-domain entities such as light.* no longer get misrouted into numeric sensor sections just because the same entity_id appears 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: and text_sensor: blocks that reappear later in package-based output, reducing the chance of regenerated package snippets carrying duplicate mergeable sections after lvgl:.
  • 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_2 through backend save/load, so the secondary Home Assistant entity survives alongside attribute2 instead 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 widget props, then injects those actions back into generated sensor, text_sensor, or binary_sensor sections 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.action with raw brightness values and trigger the HA call on on_release, matching the current ESPHome LVGL light-brightness cookbook pattern and avoiding the silent no-op behavior reported with the older homeassistant.service path on newer Home Assistant installs.
  • Regression Coverage Expansion: Updated the LVGL slider regression tests to lock the homeassistant.action payload shape, the raw integer brightness lambda output, and the on_release event 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 brightness attribute for initial state and live updates, which matches the state model shown in Home Assistant Developer Tools for integrations that only expose raw 0..255 brightness values.
  • Compile-Safe Light Slider Lambdas (Issue #371): Generated light-slider value, lvgl.slider.update, and light.turn_on brightness lambdas now keep a consistent float return type across every branch, eliminating the ESPHome C++ inconsistent types 'float' and 'int' deduced for lambda return type build error seen on generated YAML.
  • Regression Coverage Expansion: Updated the LVGL slider regression tests to lock the raw brightness attribute path, the 0..255 scaling 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_tokens for gpt-5* models while preserving max_tokens for 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 JC4832W535 QSPI 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_jc4832w535 device 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.update actions from the Home Assistant brightness_pct attribute, synced LVGL buttons/switches/checkboxes now update their checked state from HA with trigger_on_initial_state: true, and scaled slider ranges such as 0..255 now map cleanly to brightness_pct in both directions so the widgets track HA, each other, and boot-time state correctly.
  • Deep-Sleep Guard Consolidation (Issue #356): The generated deep_sleep_cycle script now performs the firmware-flash delay and stay-awake retry handling once at the top of the script before branching into the overnight until: 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_cycle now uses the configured shared sleep window in Deep Sleep mode as well as Light Sleep mode, so users who set overnight hours and export Ultra Eco (Deep Sleep) once again get the deep_sleep.enter until: / time_id: ha_time branch at night.
  • Deep-Sleep Script Cleanup (Issue #356): manage_run_and_sleep no longer emits the unused interval and is_sleep_time bookkeeping 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_times widgets now convert Home Assistant ISO timestamps into local runtime time before formatting them, so sensor.sun_next_rising and sensor.sun_next_setting no 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 real sunny or cloudy state.
  • 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_pct Home 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 stale 0/1 brightness values and resolves the button/slider feedback loop seen in the attached kitchen-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_text widgets now register their generated text_sensor IDs for on_value refresh 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 state unhandled 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 through 1%, and moving the slider now behaves like a native dimmer by turning the light off at 0 and calling light.turn_on with brightness_pct otherwise.
  • 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_color and border_color as their primary shape colors, while legacy color values 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, and Border Color, plus shape-specific geometry such as Corner 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 Astronomy section in the widget palette for the new moon_phase and sun_times widgets, while keeping the existing weather icon in its current core location.
  • Moon Phase Widget (Issue #367): Added a dedicated moon_phase widget 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_times widget with independent Show Sunrise and Show Sunset toggles, native Home Assistant defaults for sensor.sun_next_rising / sensor.sun_next_setting, and support for sun.sun attributes like next_rising and next_setting.
  • Energy Flow Widget: Added a new energy_widget / Energy Flow widget for direct and lvgl projects 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, and Autoconsumption %, 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 /config file reads.
  • ESPHome Image Transparency & LVGL Background YAML Fix (Issue #369): Color image components now emit ESPHome's current transparency option instead of the deprecated use_transparency flag, honoring the widget's configured transparency mode, and transparent LVGL template bars no longer generate invalid bg_color: transp output.
  • M5Paper GT911 ESPHome Compatibility Fix (Issue #370): The M5Paper preset no longer exports GPIO36 as a GT911 interrupt_pin on classic ESP32 builds where that pin is input-only and rejected by current ESPHome releases. Affected exports now fall back to polling with update_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_to runs, 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_color model.
  • 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_boolean as boolean IDs instead of forcing them through string conversion, while text-style entities like input_select still use the generated _txt sensors 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 dist bundle so the shipped RC10.1 package stays internally consistent.