Skip to content

2026.8

Choose a tag to compare

@blues-sechseck blues-sechseck released this 28 Jul 11:58
· 163 commits to main since this release

⚠️ Breaking change: swing/fan mode state values renamed to snake_case

Builds on top of the 2026.7 bugfix release (everything in that release is included here too), plus one breaking fix that had to ship separately: fan_mode, swing_mode, and swing_horizontal_mode used human-readable strings with spaces/slashes as the actual entity state values, not just display labels - Home Assistant's own hassfest validation requires state/translation keys to match [a-z0-9-_]+, and the old values were never actually valid. Fixed by renaming to snake_case:

Vertical swing (swing_mode):

Old New
Up/Down Auto up_down_auto
Highest highest
Middle middle
Normal normal
Lowest lowest
3D Auto 3d_auto

Horizontal swing (swing_horizontal_mode):

Old New
Left/Right Auto left_right_auto
Left-Left left_left
Left-Center left_center
Center-Center center_center
Center-Right center_right
Right-Right right_right
Left-Right left_right
Right-Left right_left
3D Auto 3d_auto

Fan mode (fan_mode): Quietquiet (the others were already lowercase)

If you have automations, scripts, or dashboards calling climate.set_fan_mode, select.select_option, or the set_horizontal_swing_mode/set_vertical_swing_mode services with the old capitalized strings, update them to the new lowercase values before updating - otherwise those calls will silently stop matching after this update. See the README migration note for the same info.

Also included in this fix: set_fan_speed (a dead service definition with no registered handler anywhere in the codebase) was removed, and set_horizontal_swing_mode/set_vertical_swing_mode's service schema was corrected from target: device to target: entity (they're entity-registered services, the device target was never valid).

Note on versioning

This release was briefly published as v2.0.0 under an attempted switch to Semantic Versioning. That was reverted: HACS/Home Assistant use the awesomeversion library for update comparisons, which parses 2026.7 as CalVer and 2.0.0 as SemVer and ranks CalVer higher purely by the leading number (2026 > 2) - so v2.0.0 was never actually offered as an update to anyone on 2026.7, and existing v2.0.0 installs got a bogus downgrade prompt back to 2026.7. Staying in the project's established CalVer scheme (YYYY.M) keeps update detection correct for everyone. Sorry for the churn if you already updated to v2.0.0 - functionally it's identical to this release, just correctly named.