ℹ Using release notes from: release_notes/v2.21.5.md
v2.21.5
🔑 Highlights
- The managed cover entity now mirrors transient
openingandclosingstates from the underlying physical cover, so automations and dashboards that read state from the managed entity no longer see it stuck atopenorclosedduring movement. - Venetian blinds with a custom-position or default/sunset handler tilt configured in v2.21.3 now apply that tilt correctly — a logic-order bug was stripping handler-supplied tilt on any non-SOLAR control method.
✨ Features
- Managed cover mirrors opening/closing state from source (#388, PR #389):
AdaptiveProxyCovernow implementsis_openingandis_closingproperties that return the source cover's liveCoverState.OPENING/CoverState.CLOSINGstate. Previously, HA's entity base class fell through tois_closedwhen these properties were absent, leaving the managed entity reporting onlyopenorclosedregardless of what the source was doing. Users who issue stop-during-travel commands or drive position-feedback scripts through the managed entity will now see the correct transient state without having to also poll the physical cover directly.
🐛 Bug Fixes
- Handler-supplied tilt wiped on non-SOLAR venetian paths (#369, PR #387): When a custom-position handler or the default/sunset handler supplied an explicit tilt value (configured in v2.21.3),
VenetianPolicy.post_pipeline_resolvediscarded it on anyControlMethodother thanSOLAR. The suppression gate that clears engine-computed tilt was running unconditionally before the handler-tilt honor check, soCUSTOM_POSITIONandDEFAULTtilts were cleared toNoneon every cycle. The fix reorders the two checks: handler-supplied tilt (result.tilt is not None) is honored first and returned early; the engine-suppression gate (_engine_tilt_suppressed) now runs only when no handler tilt is present, preserving its original role of blocking solar-engine tilt on non-SOLAR, non-direct-sun cycles. Movie-mode and cleaning-mode scenes configured via custom position tilt ordefault_tilt/sunset_tiltwill now hold their intended slat angle.
🧪 Testing
- ✅ 3239 tests passing.
- New tests in
tests/cover/test_proxy_cover_mirror.pycoveris_opening/is_closingforOPENING,CLOSING,OPEN, andCLOSEDsource states, theclosed → opening → opentransition sequence, andunavailable/unknownsource edge cases. - New tests in
tests/test_cover_types/test_venetian_post_pipeline.pyandtests/test_pipeline/test_tilt_integration.pycover handler tilt onCUSTOM_POSITION(includingtilt=0),DEFAULT, andSOLARwithdirect_sun_valid=False; three previously-passing tests that encoded the bug behavior are corrected.
Compatibility
- Home Assistant 2026.3.0+
- Python 3.11+