Full changelog for Home Assistant 2026.4
These are all the changes included in the Home Assistant 2026.4 release. For a summary in a more readable format Release notes blog for this release.
All changes
- Add Compit fan (@Przemko92 - #164049)
- Bump version to 2026.4.0dev0 (@frenck - #164101)
- Clean up evohome constants (@zxdavb - #164102)
- Add diagnostics to aladdin_connect for easier troubleshooting (@JamieMagee - #164110)
- Avoid invalid cache future state (@synesthesiam - #164081)
- Add support for S3 prefix in AWS S3 integration (@mik-laj - #162836)
- Add HassOS “mount_reload” action (@amitfin - #155996)
- Require full coverage for backup platforms (@emontnemery - #164137)
- Add minimum state duration variable to
history_stats(@luca-angemi - #151643) - Add infrared entity integration (@abmantis - #162251)
- Drop single-use service name constants in alexa_devices (@epenet - #164151)
- Drop single-use service name constants in amcrest (@epenet - #164156)
- Use constant in diagnostics test (@epenet - #164139)
- Add energy price calendar platform to Teslemetry (@Bre77 - #145848)
- Add time_delta option to waze_travel_time (@eifinger - #161803)
- Use constants in default_config tests (@epenet - #164144)
- Remove redundant DEFAULT_TIME_DELTA in waze_travel_time (@eifinger - #164227)
- Drop single-use service name constants in agent_dvr (@epenet - #164149)
- Drop single-use service name constants in advantage_air (@epenet - #164148)
- Drop single-use service name constants in androidtv (@epenet - #164153)
- Drop single-use service name constants in amberelectric (@epenet - #164152)
- Drop single-use service name constants in alarmdecoder (@epenet - #164150)
- Drop single-use service name constants in abode (@epenet - #164146)
- Rename local constants in device_automation test (@epenet - #164143)
- Remove kw arg for Portainer (@erwindouna - #164260)
- Update IQS for AWS S3 (@mik-laj - #164117)
- Add config flow support to Orvibo legacy integration (@peteS-UK - #155115)
- Add services for managing Schlage door codes (@tykeal - #151014)
- Simplify entity init in Proxmox (@erwindouna - #164265)
- Remove redundant exception messages from Telegram bot (@hanwg - #164289)
- Improve descriptions of
schlageactions (@NoRi2909 - #164299) - Migrate evohome’s zone services to entity-level services (@zxdavb - #164105)
- Drop single-use service name constants in bsblan (@epenet - #164311)
- Bump PySwitchBot to 1.1.0 (@fankai777 - #164298)
- Portainer redact CONF_HOST in diagnostics (@erwindouna - #164301)
- Ensure future is marked as retrieved in frontend storage (@epenet - #164320)
- Replace “service” with “action” in
evohomeexception string (@NoRi2909 - #164333) - SMA add data descriptions (@erwindouna - #164331)
- Add missing production ct data, total-consumption and new CT to enphase_envoy (@catsmanac - #164270)
- Add mik-laj as codeowner to WLED (@mik-laj - #164349)
- Add tests for Megane e-Tech (@reneboer - #164358)
- Mock async_setup_entry in kostal_plenticore reconfigure test (@frenck - #164372)
- Add missing mock_transmission_client to transmission init tests (@frenck - #164369)
- Fix axis setup failure test to mock at correct layer (@frenck - #164373)
- Mock setup and client in sma config flow tests (@frenck - #164374)
- Mock async_setup_entry in roku options flow test (@frenck - #164377)
- Mock async_setup_entry in sharkiq setup test (@frenck - #164380)
- Mock HMConnection in homematic notify tests (@frenck - #164381)
- Mock async_setup_entry in lunatone config flow tests (@frenck - #164382)
- Remove unnecessary config entry from velux validation error test (@frenck - #164383)
- Mock async_setup_entry in onvif DHCP host update test (@frenck - #164384)
- Mock async_setup_entry in panasonic_viera config flow tests (@frenck - #164385)
- Mock async_setup_entry in tautulli config flow tests (@frenck - #164388)
- Mock async_setup_entry in speedtestdotnet config flow test (@frenck - #164387)
- Add missing client mocks to tplink_omada service tests (@frenck - #164389)
- Add do not disturb switch to SmartThings (@joostlek - #164364)
- Mock async_setup_entry in radarr config flow tests (@frenck - #164359)
- Mock async_setup_entry in home_connect migration tests (@frenck - #164357)
- Mock async_setup_entry in emulated_roku config flow tests (@frenck - #164368)
- Mock async_setup_entry in daikin config flow tests (@frenck - #164371)
- Mock async_setup_entry in forked_daapd config flow tests (@frenck - #164370)
- Fix mock target for Met Office config flow error test (@frenck - #164391)
- Fix fixture ordering in madVR tests to ensure proper mocking (@frenck - #164350)
- Mock async_setup_entry in wilight SSDP flow test (@frenck - #164393)
- Fix fixture ordering in jvc_projector integration setup (@frenck - #164354)
- Add missing rest_api fixture in samsungtv setup test (@frenck - #164353)
- Mock async_setup_entry in ccm15 config flow tests (@frenck - #164352)
- Mock async_setup_entry in arcam_fmj config flow tests (@frenck - #164351)
- Prevent real setup during DHCP discovery test in fully_kiosk tests (@frenck - #164342)
- Mock PyMochad controller in mochad tests (@frenck - #164394)
- Patch discovery in elkm1 invalid auth and reconfigure tests (@frenck - #164396)
- Mock async_setup_entry in youless config flow test (@frenck - #164399)
- Mock TodoistAPIAsync in todoist failed coordinator update test (@frenck - #164390)
- Mock async_setup_entry in lametric DHCP discovery test (@frenck - #164400)
- Mock async_setup_entry in jvc_projector config flow tests (@frenck - #164401)
- Mock async_setup_entry in unifiprotect reauth tests (@frenck - #164375)
- Add HDFury audio offset numbers (@glenndehaan - #164315)
- Remove Duke Energy (@hunterjm - #164282)
- Bump actions/dependency-review-action from 4.8.2 to 4.8.3 (@dependabot - #164296)
- Add missing mock fixtures to telegram_bot polling init test (@frenck - #164398)
- Refactor adguard tests to use proper fixtures for mocking (@frenck - #164402)
- Sync SmartThings vacuum fixture (@joostlek - #164360)
- Mock ConnectionContextBuilder in homematicip_cloud tests (@frenck - #164356)
- Enable sockets for http integration tests (@frenck - #164404)
- Enable real sockets in default_config setup test (@frenck - #164366)
- Fix fixture ordering in esphome dashboard tests (@frenck - #164367)
- Add discovery mocks to tplink init tests (@frenck - #164386)
- Add aioclient_mock to ssdp tests to prevent real HTTP requests (@frenck - #164403)
- Update translatable exceptions for Powerfox integration (@klaasnicolaas - #164322)
- Bump govee-ble to 1.2.0 (@funkadelic - #164438)
- Complete strict typing for Teslemetry integration (@Bre77 - #164416)
- Remove unnecessary volume_up/volume_down overrides from monoprice media player (@balloob - #164429)
- Remove unnecessary volume_up/volume_down overrides from NADtcp media player (@balloob - #164434)
- Remove unnecessary volume_up/volume_down overrides from frontier_silicon media player (@balloob - #164430)
- Remove unnecessary volume_up/volume_down overrides from aquostv media player (@balloob - #164431)
- Remove unnecessary volume_up/volume_down overrides from demo media player (@balloob - #164424)
- Remove unnecessary volume_up/volume_down overrides from bluesound media player (@balloob - #164426)
- Remove unnecessary volume_up/volume_down overrides from mpd media player (@balloob - #164428)
- Improve Anthropic service exceptions (@Shulyaka - #164418)
- Add Matter lock user and credential management services (@Ahbrown41 - #161936)
- Add merged PR count sensor to Github integration (@abmantis - #164405)
- Bump env-canada to 0.13.2 (@michaeldavie - #164480)
- Add fan speed to SmartThings vacuum (@joostlek - #164452)
- Harden test of an invalid service call for Evohome (@zxdavb - #164458)
- Add sound detection switch to SmartThings (@joostlek - #164470)
- Revert “Remove unnecessary volume_up/volume_down overrides from frontier_silicon media player” (@emontnemery - #164463)
- Remove the MQTT
object_idoption after 6 months of deprecation (@jbouwh - #164460) - Fix OAuth token type narrowing in Teslemetry (@Bre77 - #164505)
- Add button to reset HEPA filter to SmartThings (@joostlek - #164464)
- Bump smarla quality scale to silver (@rlint-explicatis - #164325)
- Update Tessie quality scale to silver (@Bre77 - #164104)
- Add select for SmartThings driving mode (@joostlek - #164522)
- Bump yarl to 1.23.0 (@bdraco - #164542)
- Bump github/codeql-action from 4.32.3 to 4.32.4 (@dependabot - #164554)
- Add sound detection sensitivity select to SmartThings (@joostlek - #164466)
- Add binary sensor for full dust bag in SmartThings (@joostlek - #164457)
- Add time platform to SmartThings (@joostlek - #164451)
- Migrate modern_forms to runtime_data (@epenet - #164570)
- Fix Matter lock credential slot iteration bound (@Ahbrown41 - #164478)
- Move metoffice coordinators to separate module (@epenet - #164562)
- Bump python-fullykiosk from 0.0.14 to 0.0.15 (@justfalter - #164511)
- Migrate moehlenhoff_alpha2 to runtime_data (@epenet - #164571)
- Migrate modem_callerid to runtime_data (@epenet - #164566)
- Bump pyloadapi to 2.0.0 (@tr4nt0r - #164495)
- Migrate meteoclimatic to runtime_data (@epenet - #164559)
- Move motioneye coordinator to separate module (@epenet - #164568)
- Migrate medcom_ble to runtime_data (@epenet - #164557)
- Migrate microbees to runtime_data (@epenet - #164564)
- Add select for SmartThings Water spray level (@joostlek - #164520)
- Replace “the lock” with “a lock” in
matteraction descriptions (@NoRi2909 - #164585) - Use clearer number notation for very small and very large literals (@Pierre-Sassoulas - #164521)
- Switchbot Cloud: Fixed Smart Radiator Thermostat off line (@XiaoLing-git - #162714)
- Migrate monzo to runtime_data (@epenet - #164603)
- Migrate moat to runtime_data (@epenet - #164605)
- Fix Matter clear lock user (@Ahbrown41 - #164493)
- Add device_id and satellite_id to conversation HTTP/websocket APIs (@synesthesiam - #164414)
- Check Daikin zone temp keys before represent (@barneyonline - #164297)
- Add Govee H5140 CO2 monitor support to govee_ble (@funkadelic - #164365)
- Add infrared platform to ESPHome (@abmantis - #162346)
- Move ONVIF event parsing into a module outside core (@jterrace - #164550)
- Remove unnecessary suppress in importlib helper (@epenet - #164323)
- Bump actions/download-artifact from 7.0.0 to 8.0.0 (@dependabot - #164647)
- Redact zwave_js dsk key from diagnostics (@raman325 - #164636)
- Remove deprecated YAML import from Satel Integra (@Tommatheussen - #164469)
- Bump python-openevse-http to 0.2.5 (@c00w - #164641)
- Bump uhooapi to 1.2.8 (@joshsmonta - #164648)
- Fix invalid device registry identifiers in eafm (@epenet - #164654)
- Bump pylutron-caseta to 0.27.0 (@davidrecordon - #164614)
- Enhance GV5140 test to assert temperature and humidity sensors (@funkadelic - #164644)
- Bump python-xbox to 0.2.0 (@tr4nt0r - #164616)
- Bump pysaunum to 0.6.0 (@mettolen - #164530)
- Decouple Vizio apps coordinator from config entry (@raman325 - #163923)
- Add equalizer switch for Cambridge Audio devices (@Solmath - #162956)
- Allow the creation of multi-domain triggers (@mib1185 - #164628)
- Bump renault-api to 0.5.6 (@reneboer - #164664)
- Improve device_info type hints in mobile_app (@epenet - #164655)
- Add binary sensor platform and tests to NRGkick integration (@andijakl - #164629)
- Migrate metoffice to runtime_data (@epenet - #164606)
- Fix Reolink camera updates persisting in UI (@ptarjan - #161149)
- Migrate monoprice to runtime_data (@epenet - #164604)
- Migrate met_eireann to runtime_data (@epenet - #164607)
- Add missing cover entity features to motion_blinds (@tobiaswaldvogel - #164673)
- Simplify access to motioneye client (@epenet - #164599)
- Migrate motionblinds_ble to runtime_data (@epenet - #164601)
- Move mutesync coordinator to separate module (@epenet - #164600)
- Bump tuya-device-handlers to 0.0.11 (@epenet - #164586)
- Improve type hints in meteoclimatic (@epenet - #164651)
- Bumb switchbot api to v2.11.0 (@XiaoLing-git - #164663)
- Remove deprecated YAML import from nederlandse_spoorwegen (@epenet - #164662)
- Simplify copilot-instructions.md script to use file refs (@abmantis - #164686)
- Add support for samsungce.lamp as light entity and when not under main component (@r2xj - #164448)
- Add PR review Claude skill (@abmantis - #164626)
- Cleanup deprecated tuya entities (@epenet - #164657)
- Set device classes and measurement units for Smarla (@rlint-explicatis - #164682)
- Change reconfiguration-flow status to ‘todo’ in WebDAV (@mik-laj - #164637)
- Add send diagnostics button to smarla (@rlint-explicatis - #164335)
- Add support for active power limit in Kostal Plenticore (@erikbadman - #164674)
- Add additional diagnostic sensors to aurora_abb_powerone PV inverter (@davet2001 - #164622)
- Add cleaning type select to SmartThings (@joostlek - #164472)
- Add support for http webhook for Telegram bot (@hanwg - #162690)
- Bump actions/ai-inference from 2.0.6 to 2.0.7 (@dependabot - #164713)
- Fix teslemetry time_of_use service tariff double-wrapping (@Bre77 - #164702)
- Support Z-Wave Hoppe eHandle tilt sensor (@AlCalzone - #164689)
- Pin exact Python version in .python-version (@emontnemery - #164722)
- Migrate netgear to use runtime_data (@epenet - #164718)
- Refactor AWS S3 tests (@mik-laj - #164098)
- Use jog up/down in motionblinds if no tilt position is available (@tobiaswaldvogel - #164694)
- Improve Roborock device info creation and enhance device registration for disabled or failed devices. (@allenporter - #164553)
- Add deprecation timeline to flexit_bacnet fireplace switch (@magnusoverli - #164450)
- Use Python version file in CI for setting the default python version (@edenhaus - #164751)
- Add is_closed state attribute to cover (@emontnemery - #164739)
- ISS integration: better entity handling (@italo-lombardi - #159050)
- Clarify description of
vacuum.clean_areaaction (@NoRi2909 - #164764) - Use unique fibaro_id in test fixtures (@rappenze - #164763)
- Add const to Portainer for endpoint up (@erwindouna - #164746)
- Bump actions/upload-artifact from 6.0.0 to 7.0.0 (@dependabot - #164791)
- Use common state for “medium” in
smartthings(@NoRi2909 - #164799) - Use common string for “host” in
devialetconfig flow (@NoRi2909 - #164798) - Bump dawidd6/action-download-artifact from 14 to 16 (@dependabot - #164790)
- Add base NetgearDataCoordinator to netgear (@epenet - #164816)
- Add
remote.turned_onandremote.turned_offtriggers (@mib1185 - #164535) - Improve tuya diagnostic tests (@emontnemery - #164819)
- Improve homee tests (@emontnemery - #164820)
- Migrate remaining netgear coordinators to separate module (@epenet - #164826)
- Add device tracker to NRGkick integration (@andijakl - #164804)
- Simplify Netgear entity initialisation (@epenet - #164837)
- Add sensor charging settings mode (@reneboer - #164455)
- Add reauthentication flow to Ghost integration (Silver) (@JohnONolan - #164847)
- Move nuheat coordinator to separate module (@epenet - #164833)
- Add support for switchbot keypad vision (@zerzhang - #160484)
- Bump aiohomeconnect to 0.30.0 (@Diegorro98 - #164846)
- Add new influenza index sensor to Uhoo (@joshsmonta - #164710)
- Add missing features to Wyoming conversation agent (@synesthesiam - #164278)
- Move Mullvad VPN coordinator to separate module (@epenet - #164750)
- Replace enocean library (@henningkerstan - #164272)
- Fix ffmpeg fixture (@justanotherariel - #164860)
- Add unique_id to demo water_heater (@karwosts - #164857)
- Update Mastodon quality scale to gold (@andrew-codechimp - #164842)
- Fix incomplete device info in laundrify sensor (@emontnemery - #164824)
- Unconditionally set up base platform integrations (@emontnemery - #164863)
- Add zeroconf support for air-Q (@Sibgatulin - #164727)
- Add missing parameters from handle REST API (@synesthesiam - #164687)
- Refactor Tuya wrappers to use generics (@epenet - #164587)
- Add GPT-5.4 support to OpenAI conversation (@Shulyaka - #164883)
- Bump pyeconet to 0.2.2 (@dancarroll - #164859)
- Fix flaky bang_olufsen tests (@emontnemery - #164868)
- Add domain driven triggers to schedule helper (@mib1185 - #159325)
- Add backoff/max retries in Portainer API (@erwindouna - #164805)
- Add
number.changedtrigger (@mib1185 - #163984) - Move RDW DataUpdateCoordinator to separate module (@epenet - #164910)
- Use shared aiohttp session in openevse (@c00w - #164552)
- Move DataUpdateCoordinator to separate module in senz (@epenet - #164916)
- Move DataUpdateCoordinator to separate module in recollect_waste (@epenet - #164913)
- Optimize init proxmox (@erwindouna - #164891)
- Proxmoxve add parallel updates (@erwindouna - #164889)
- Translate device name in Season integration (@CFenner - #164882)
- Bump proxmoxer 2.3.0 (@erwindouna - #164884)
- Use typed coordinator in powerwall (@epenet - #164887)
- Move DataUpdateCoordinator to separate module in subaru (@epenet - #164918)
- Bump actions/attest-build-provenance from 3.2.0 to 4.1.0 (@dependabot - #164909)
- Move supla coordinator to separate module (@epenet - #164928)
- Move wiz coordinator to separate module (@epenet - #164931)
- Move DataUpdateCoordinator to separate module in simplisafe (@epenet - #164917)
- Update Proxmox code owners (@erwindouna - #164941)
- Adjust read-only parallel updates for Portainer (@erwindouna - #164890)
- Replace assert in Proxmox coordinator (@erwindouna - #164892)
- Move DataUpdateCoordinator to coordinator module in nsw_fuel_station (@epenet - #164940)
- Test aladdin_connect stale device cleanup (@JamieMagee - #164119)
- Improve type hints in coolmaster climate (@epenet - #164956)
- Use shorthand attributes in heatmiser climate (@epenet - #164957)
- Add sensor entity for total swing time (@rlint-explicatis - #164334)
- Mark device_info type hint as mandatory (@epenet - #164951)
- Add diagnostics to Libre Hardware Monitor (@Sab44 - #164958)
- Create Chess.com integration (@joostlek - #164960)
- Use shorthand attributes in zhong_hong climate (@epenet - #164964)
- Improve type hints in smarttub climate (@epenet - #164968)
- Add OpenDisplay integration (@g4bri3lDev - #164048)
- Remove disabled Tfiac integration (@epenet - #164966)
- Improve type hints in schluter climate (@epenet - #164970)
- Improve type hints in proliphix climate (@epenet - #164972)
- Improve type hints in oem climate (@epenet - #164974)
- Improve type hints in nuheat climate (@epenet - #164975)
- Improve type hints in nexia climate (@epenet - #164976)
- Improve type hints in airtouch4 climate (@epenet - #164977)
- Add lawn mower started_returning trigger (@edenhaus - #164834)
- Improve type hints in maxcube climate (@epenet - #164978)
- Move pi_hole coordinator to separate module (@epenet - #164869)
- Move kraken API wrapper class to coordinator module (@epenet - #164942)
- Move DataUpdateCoordinator to separate module in reolink (@epenet - #164914)
- Move whois coordinator to separate module (@epenet - #164936)
- Move DataUpdateCoordinator to coordinator module in tesla_wall_connector (@epenet - #164937)
- Upgrade IQS to gold for Telegram bot (@hanwg - #164911)
- Move peco coordinator to separate module (@epenet - #164851)
- Move LED BLE coordinator to separate module (@epenet - #164749)
- Move AirVisual Pro coordinator to separate module (@epenet - #164742)
- Move launch_library coordinator to separate module (@epenet - #164747)
- Move AirVisual coordinator to separate module (@epenet - #164738)
- Move wolflink coordinator to separate module (@epenet - #164929)
- Move WattTime coordinator to separate module (@epenet - #164726)
- Migrate Smartthings OAuth exceptions (@erwindouna - #164939)
- Move smart_meter_texas coordinator to separate module (@epenet - #164926)
- Add reconfigure flow for systemnexa2 (@konsulten - #164361)
- Add support for the reeflexUV+e to eheimdigital (@autinerd - #163656)
- Bump aioesphomeapi to 44.3.1 (@bdraco - #165023)
- Simplify AGENTS.md (@abmantis - #164894)
- Add binary_sensors for Rehlko load shedding (@PeteRager - #164984)
- Bump pyrainbird to 6.1.1 (@allenporter - #165030)
- Bump bleak-esphome to 3.7.1 (@bdraco - #165025)
- Add trigger door.opened (@emontnemery - #164728)
- Add trigger door.closed (@emontnemery - #165057)
- Update weatherkit to fetch hourly data for 7 days (@joelhawksley - #164494)
- Add quality scale exemptions for discovery in Libre Hardware Monitor (@Sab44 - #165085)
- Remove broken BMW & Mini integrations (@rikroe - #165075)
- Add diagnostics to Indevolt integration (@Xirt - #165096)
- Make spelling of “auto-empty dock” consistent in
roborock(@NoRi2909 - #165117) - Add diagnostics in Opower (@tronikos - #165113)
- Bump enocean-async to 0.4.2 (@henningkerstan - #165084)
- Add description strings to Huum integration (@mettolen - #165094)
- Add diagnostics to Ghost integration (@JohnONolan - #165130)
- Bump plugwise to v1.11.3 (@bouwew - #165053)
- Bump airtouch5py to 0.4.0 (@bluephlame - #161640)
- Add basic auth support to remote_calendar (@Molier - #158075)
- Lower ssdp discovery timeout log severity in Onkyo (@arturpragacz - #165156)
- Bump habluetooth to 5.9.1 and bleak-retry-connector to 4.6.0 (@bdraco - #165022)
- Bump yalexs-ble to 3.3.0 (@bdraco - #165168)
- Improve type hints in lightwave climate (@epenet - #165179)
- Improve type hints in ecobee climate (@epenet - #165178)
- Bump py-opendisplay to 5.5.0 (@g4bri3lDev - #165138)
- Bump kaiterra-async-client to 1.1.0 (@archcorsair - #165166)
- Bump pyseventeentrack to 1.1.2 (@shaiu - #165089)
- Add garage_door triggers (@emontnemery - #165144)
- Mark climate type hints as mandatory (@epenet - #164982)
- Add reconfigure flow to Ghost integration (@JohnONolan - #165131)
- Rename SmartThings devices to maintain uniqueness (@joostlek - #165189)
- Avoid duplicate id/label in smartthings device fixtures (@epenet - #165190)
- Speed up SmartThings tests (@epenet - #165184)
- Remove some climate and humidifier triggers (@emontnemery - #165192)
- Fix missing Gen-2 sensor for the Indevolt integration (@Xirt - #165133)
- Revert “Add
number.changedtrigger” (@emontnemery - #165193) - Fix update tests for Python 3.14.3 (@MartinHjelmare - #165196)
- Add fixture for Air Purifier to SmartThings (@joostlek - #165187)
- Remove type: ignore in Android TV Remote (@tronikos - #165126)
- Add freshr integration, based on pyfreshr (@SierraNL - #164538)
- Fix import in cover (@emontnemery - #165199)
- Switchbot Cloud: Fixed light mode settings error (@XiaoLing-git - #164723)
- Allow backups to report the upload progress (@zweckj - #163608)
- Add stale device removal to Ghost integration (@JohnONolan - #165134)
- Improve test coverage in Tuya light (@epenet - #164954)
- Switchbot Cloud: Compatible with new device types (@XiaoLing-git - #165191)
- Fix code owner for indevolt integration (@Xirt - #165214)
- Add diagnostics to OpenDisplay integration (@g4bri3lDev - #165222)
- Minor Saunum integration improvements (@mettolen - #164705)
- Optimizations to Adax local device control (@torandreroland - #162109)
- Add unique_id to Whisker (Litter-Robot) config entries (@teancom - #164766)
- Add cover triggers (@emontnemery - #165188)
- Add humidity triggers (@emontnemery - #165197)
- Validate reorder is only used when multiple is true (@bramkragten - #165216)
- Add ambient temperature range controls to ToGrill integration (@pandanz - #165235)
- Dynamically add new devices to Libre Hardware Monitor (@Sab44 - #165250)
- Add another air purifier fixture to SmartThings (@joostlek - #165261)
- Bump pyrate-limiter to 4.0.2, PSNAWP to 3.0.3, python-roborock to 4.17.2 (@tr4nt0r - #164133)
- Add turned off and turned on triggers to input boolean (@mib1185 - #158824)
- Move spotify coordinator to separate module (@epenet - #164927)
- Influxdb: Add reconfigure flow (@justanotherariel - #165186)
- Add Midea Smart Inverter Window AC to Matter Fan Only mode list (@davelovesoftware - #165170)
- Refactor Arcam FMJ to use coordinator pattern (@jgus - #165232)
- Ensure actions have name and description translations (@epenet - #158243)
- Anglian Water: Add last meter reading processed sensor (@pantherale0 - #159144)
- Add clean area intent for vacuum (@arturpragacz - #165182)
- Update Ghost integration quality scale to gold (@JohnONolan - #165215)
- Fix proxy settings not applied for Telegram bot (@hanwg - #165240)
- Improve descriptions of
bondactions (@NoRi2909 - #164744) - Improve group entities (@arturpragacz - #160860)
- Add reconfiguration flow to Indevolt integration (@Xirt - #165132)
- Implement exception-translations for whirlpool integration (@abmantis - #165017)
- Implement 2 new sensors in pyvicare (@tlinnet - #164523)
- Create reset HEPA filter button for main component in SmartThings (@joostlek - #165262)
- Add support for Thread Integration to Display Icons for Aeotec SmartThings TBRs (@wardmatter - #165275)
- Bump pylutron version to 0.3.0 (@cdheiser - #164707)
- Extend RESET_SYSTEM action to all Evohome controller types (@zxdavb - #164459)
- KNX: add config for
device_classandunit_of_measurementfor yaml number entities (@farmio - #165083) - KNX: add config for
unit_of_measurementfor yaml sensor entities (@farmio - #165082) - Address Arcam FMJ post-merge feedback (@jgus - #165277)
- Move NUT coordinator to separate module (@epenet - #164848)
- Add local/cloud option to Intellifire (@jeeftor - #162739)
- Prevent network access in telegram_bot tests (@emontnemery - #165284)
- Fail more tests when pytest_socket.SocketBlockedError is raised (@emontnemery - #155398)
- Remove an extra roborock trait from updating (@Lash-L - #165297)
- Remove triggers binary_sensor.occupancy_cleared and occupancy_detected (@emontnemery - #165181)
- Bump python-roborock to 4.20.0 (@Lash-L - #165292)
- Fix incorrect type annotations in tests (@epenet - #165305)
- Bump actions/dependency-review-action from 4.8.3 to 4.9.0 (@dependabot - #165304)
- Bump docker/login-action from 3.7.0 to 4.0.0 (@dependabot - #165302)
- Remove duplicate fixture in arcam_fmj tests (@epenet - #165312)
- Reduce internal testing in arcam_fmj tests (@epenet - #165315)
- Add gate triggers (@emontnemery - #165228)
- Update gardena to 2.1.0 (@elupus - #165322)
- Add fan entity for air conditioner to Home Connect (@Diegorro98 - #155983)
- Fix flakiness in lutron tests and isolate platforms per test file (@cdheiser - #165328)
- Add reauthentication flow to growatt_server (silver quality scale) (@johanzander - #164993)
- Improve test coverage in Opower to make it silver (@tronikos - #165124)
- Add binary_sensor to eheimdigital (@autinerd - #165035)
- Move secondary zone of arcam to sub-device (@elupus - #165336)
- Update migration message for Telegram bot (@hanwg - #165299)
- Add support for Fish Audio s2-pro model (@noambav - #165269)
- Improve humidity triggers (@emontnemery - #165323)
- Change light.toggle service call to invoke LightEntity.async_toggle (@ams2990 - #156196)
- Buffer backup upload progress events (@zweckj - #165249)
- Add Swarm stack to Portainer (@erwindouna - #164991)
- Bump hass-nabucasa from 1.15.0 to 2.0.0 (@ludeeus - #165335)
- Support new Z-Wave JS “Opening state” notification variable (@AlCalzone - #165236)
- Migrate OAuth helper token request exception handling in Google Sheets (@Oluwatobi-Mustapha - #165000)
- Fix duplicate energy remaining sensors in Tessie (@Bre77 - #165102)
- fix #163316: FRITZ!SmartHome integration not showing boost status on … (@chli1 - #164574)
- Allow an MQTT entity to show as a group (@jbouwh - #152270)
- Add “cleaning_up” stage to backup (@zweckj - #165349)
- Bump waterfurnace version v1.6.2 (@masterkoppa - #165348)
- Sentence-case “API token” and “username/password” in
growatt(@NoRi2909 - #165368) - Bump intellifire4py to 4.4.0 (@jeeftor - #165356)
- Bump aiowebdav2 to 0.6.2 (@jpbede - #165353)
- Fix logging of unavailable entities in entity call (@arturpragacz - #165370)
- Add window triggers (@emontnemery - #165230)
- Add latency results if available to the support package (@ludeeus - #165377)
- Add IntelliClima Sensor platform (@dvdinth - #163901)
- Bump prana-local-api to 0.12.0 (@prana-dev-official - #165394)
- Instruct AI to add type annotations to tests (@AlCalzone - #165386)
- Remove Z-Wave Installer panel (@AlCalzone - #165388)
- Add platinum badge to Portainer (@erwindouna - #165048)
- Bump pyenphase to 2.4.6 (@catsmanac - #165402)
- Remove use of media player internals in arcam (@elupus - #165359)
- Add missing ON_OFF support and target_temperature_step to ESPHome water heater (@bdraco - #165427)
- Fix numerical entity trigger schema (@emontnemery - #165411)
- Add motion triggers (@emontnemery - #165373)
- Add occupancy triggers (@emontnemery - #165374)
- Update Growatt quality scale: add config flow data descriptions (@johanzander - #165426)
- Fix vera test opening sockets (@emontnemery - #165439)
- Bump docker/build-push-action from 6.19.2 to 7.0.0 (@dependabot - #165435)
- Bump docker/setup-buildx-action from 3.12.0 to 4.0.0 (@dependabot - #165437)
- Bump github/codeql-action from 4.32.4 to 4.32.6 (@dependabot - #165436)
- Bump docker/metadata-action from 5.10.0 to 6.0.0 (@dependabot - #165438)
- Fix device name in arcam_fmj (@epenet - #165448)
- Add base entity to arcam_fmj (@epenet - #165447)
- Add DHW operating mode select entity to ViCare integration (@lackas - #163832)
- Bump pysmarlaapi to 1.0.2 (@rlint-explicatis - #165454)
- Enhance generic_thermostat with min/max run time and cooldown time (@esand - #136298)
- Add spring status sensor entity (@rlint-explicatis - #164332)
- Bump tuya-device-handlers to 0.0.12 (@epenet - #165462)
- Add fan platform for Prana Integration (@prana-dev-official - #163379)
- Hide ZWA-2 adapter in Zigbee serial port selector (@TheJulianJES - #155526)
- Add Matter start-up Power-on level entity (@jvmahon - #164775)
- Use external library wrapper in Tuya binary_sensor (@epenet - #165465)
- Add Matter fixtures to SmartThings (@joostlek - #165466)
- Fix missing Tuya climate preset_mode (@epenet - #165460)
- Add parallel-updates and action-exceptions for Whisker (@teancom - #165433)
- Add autoskope integration (@mcisk - #146772)
- Improve error handling when addon unavailable for install/update (@mdegat01 - #165352)
- Add DomainSpec to trigger and condition helpers (@justanotherariel - #165392)
- Make “power-on behavior” states more consistent in
tuya(@NoRi2909 - #165344) - Add zigbee address to SmartThings devices (@joostlek - #165474)
- Update brand name for Subaru integration (@masterkoppa - #165485)
- Add diagnostics to Whisker (@natekspencer - #165487)
- Bump pyintelliclima dependency for IntelliClima integration (@dvdinth - #165478)
- Add entity-unavailable and log-when-unavailable (@teancom - #165486)
- Shorten “Power-on behavior” name in
matterto be consistent (@NoRi2909 - #165490) - Allow deleting UniFi client devices (@jharmsen845 - #165505)
- Add UniFi Access integration (@RaHehl - #165404)
- Remove speech parameter from service intent handler (@arturpragacz - #165225)
- Reorder code to group intent errors (@arturpragacz - #165431)
- Add progress reporting to WebDAV upload (@jpbede - #165398)
- Pass web session to download files for Telegram bot (@hanwg - #165424)
- Update Whisker quality scale docs rules (@natekspencer - #165510)
- Bump pywaze to 1.2.0 (@eifinger - #165526)
- Bump python-pooldose to 0.8.5 (@lmaertin - #165507)
- Make
start_up_current_levelinzhaconsistent withmatter(@NoRi2909 - #165504) - Add binary sensor for cooktop in SmartThings (@joostlek - #165481)
- Remove duplicate sensor entity description for monitor port in Uptime Kuma integration (@tr4nt0r - #165479)
- Add event platform for UniFi Access integration (@RaHehl - #165531)
- Add TRMNL integration (@joostlek - #165499)
- Add unifi_access to Ubiquiti brand and regenerate integrations.json (@RaHehl - #165538)
- Add reconfiguration flow to Whisker (@natekspencer - #165513)
- Make “Power-on behavior” in
zhaconsistent withmatterandtuya(@NoRi2909 - #165549) - Add sensor platform to Arcam FMJ (@jgus - #165271)
- Add coordinator exception translations and mark entity/exception-translations rules as done (@natekspencer - #165551)
- Fix missing code for Miele dishwasher (@astrandb - #165553)
- Discover Aeotec hub for SmartThings (@joostlek - #165469)
- Add emergency switch platform for UniFi Access integration (@RaHehl - #165536)
- Add diagnostics to Chess.com (@joostlek - #165563)
- Add diagnostics to TRMNL (@joostlek - #165544)
- Add switch platform to TRMNL (@joostlek - #165539)
- Add reauthentication to TRMNL (@joostlek - #165546)
- Add stale device handling to TRMNL (@joostlek - #165550)
- Add fan speed percentage to service schema (@Diegorro98 - #165557)
- Bump py-unifi-access to 1.1.0 (@imhotep - #165576)
- Add re-auth flow for Waterfurnace (@masterkoppa - #165406)
- Fix KeyError ‘api_domain’ in Freebox zeroconf discovery (@OlivierR-dev - #165288)
- Bump fnv-hash-fast to 2.0.0 (@bdraco - #165586)
- Add 100% coverage of coordinator for Fritz (@chemelli74 - #164074)
- Add TRMNL time platform (@joostlek - #165537)
- Add backup progress callback to onedrive integrations (@zweckj - #165217)
- Add dynamic device handling to TRMNL (@joostlek - #165548)
- Bump trmnl to 0.1.1 (@joostlek - #165605)
- Change initiate flow button text for TRMNL (@joostlek - #165606)
- Handle action exceptions in TRMNL (@joostlek - #165607)
- Add 2 more sensors to TRMNL (@joostlek - #165604)
- Migrate unique ID of Portainer integration (@erwindouna - #165123)
- Redact utility account id in Opower diagnostics (@tronikos - #165145)
- Bump aiomealie to 1.2.2 (@andrew-codechimp - #165610)
- Bump habluetooth to 5.10.2 (@bdraco - #165591)
- Bump ulid-transform to 2.0.2 (@bdraco - #165585)
- Add binary sensor platform to Arcam FMJ (@jgus - #165272)
- Move coordinator tests and migrate test data to JSON fixtures (@teancom - #165503)
- Add reconfigure flow to TRMNL (@joostlek - #165594)
- Add API key url to step description in TRMNL (@joostlek - #165614)
- Bump librehardwaremonitor-api to version 1.11.1 (@Sab44 - #165629)
- Add icons for Arcam sensors (@jgus - #165637)
- Bump aioesphomeapi to 44.5.2 (@bdraco - #165644)
- Pooldose bump python-pooldose to 0.8.6 (@lmaertin - #165616)
- Update Overkiz test fixtures and diagnostics to use more realistic fixture (@iMicknl - #165615)
- Add diagnostics to Zinvolt (@joostlek - #165623)
- Add Matter certified Silabs fan example to fixtures (@lboue - #165622)
- feat: implement reauthentication requirement (@joshsmonta - #165641)
- fix: Increase WebSocket message size limit to 16MB in Hass.io ingress proxy (@tkadauke - #164442)
- Simplify Prana entity descriptions (@epenet - #165660)
- Update IQS to silver for Fritz (@chemelli74 - #162280)
- Use external library wrapper in Tuya fan (@epenet - #165464)
- Use external library wrapper in Tuya event (@epenet - #165655)
- Bump python-telegram-bot to 22.6 (@Shulyaka - #165508)
- Finish TRMNL docs (@joostlek - #165612)
- Use external library wrapper in Tuya light (@epenet - #165653)
- Use external library wrapper in Tuya humidifer (@epenet - #165654)
- Remove deprecated entity creation code for Litter-Robot 4 devices (@natekspencer - #165636)
- Fix valve tests for Python 3.14.3 (@MartinHjelmare - #165668)
- Fix numato tests for Python 3.14.3 (@MartinHjelmare - #165669)
- Fix emulated_kasa tests for Python 3.14.3 (@MartinHjelmare - #165667)
- Use external library wrapper in Tuya alarm control panel (@epenet - #165671)
- Update uhoo IQS to silver (@joshsmonta - #165665)
- Use external library wrapper in Tuya cover (@epenet - #165656)
- Switchbot Cloud: Fixed Circulator Fan on start error (@XiaoLing-git - #165241)
- Use external library wrapper in Tuya climate (@epenet - #165672)
- Use external library wrapper in Tuya vacuum (@epenet - #165673)
- Remove aiohasupervisor from pyproject.toml (@mdegat01 - #165512)
- Fix translation placeholders in Assist pipeline (@joostlek - #165676)
- Fix typing in nsw_fuel_station (@joostlek - #165679)
- Bump aiohasupervisor to 0.4.1 (@mdegat01 - #165489)
- Remove code notary related unsupported reasons (@mdegat01 - #165417)
- Improve discovery flow for Squeezebox (@peteS-UK - #153958)
- Add UniFi Access binary sensors (@imhotep - #165569)
- Bump tuya-device-handlers to 0.0.13 (@epenet - #165684)
- Update zizmor to v1.23.1 (@sairon - #165467)
- Migrate remaining fan wrappers to Tuya library (@epenet - #165685)
- Migrate remaining alarm control panel wrappers to Tuya library (@epenet - #165686)
- Migrate remaining climate wrappers to Tuya library (@epenet - #165687)
- Migrate remaining vacuum wrappers to Tuya library (@epenet - #165688)
- Use TuyaCoverAction enum in Tuya cover (@epenet - #165690)
- Add climate entity for air conditioner to Home Connect (@Diegorro98 - #155981)
- Refactor trigger helpers (@justanotherariel - #165455)
- Add support for service tier for OpenAI integration (@Shulyaka - #165379)
- Fix HVACMode mappings in Tuya climate (@epenet - #165691)
- Finish test coverage in TRMNL (@joostlek - #165611)
- Bump victron-ble-ha-parser to 0.6.1 (@rajlaud - #165473)
- Move meteo_france coordinators to separate module (@epenet - #164558)
- Refactor condition helpers (@justanotherariel - #165662)
- Refactor mold_indicator sensor (@zweckj - #165696)
- Suggest chat_id for subentry flow for Telegram bot (@hanwg - #165515)
- Proxmox re-use sanitize UserID (@erwindouna - #164303)
- Add hassfest check to make sure new integrations have an integration type (@joostlek - #164001)
- Add dynamic devices support for Whisker (@natekspencer - #165704)
- Add common entity_entry_as_dict util to diagnostics (@arturpragacz - #165692)
- Fix choppy HomeKit camera audio with SRTP audio proxy (@bdraco - #165185)
- Add auto device removal handling to Whisker (@natekspencer - #165709)
- Enable support for multiple Waterfurnace devices (@masterkoppa - #162692)
- Bump pylutron to 0.4.0 and maintain switch compatibility (@cdheiser - #165592)
- Use standard syrupy serialisation for registries in homekit controller (@arturpragacz - #165693)
- Add start selected program action to Home Connect (@Diegorro98 - #165362)
- Add sensor platform to prana (@prana-dev-official - #165632)
- Improve Plugwise DataUpdateCoordinator (@bouwew - #165715)
- Add integration type to Orvibo (@joostlek - #165706)
- vicare: Remove heating type config, defaulting to auto-detection (@lackas - #165649)
- Add dynamic device discovery for Teslemetry (@Bre77 - #162143)
- Add light support for HmIP-MP3P (Combination Signalling Device) (@lackas - #162825)
- Bump aiohomeconnect to 0.32.0 (@Diegorro98 - #165716)
- Add bread baking and dough proving programs to Home Connect (@Diegorro98 - #165717)
- Remove stale devices at setup in Whisker (@natekspencer - #165721)
- Improve type hints for pilight (@edenhaus - #165719)
- Add AC charger sensor support to victron_ble (@rajlaud - #165497)
- Update onvif parsers library to latest parsing multiple (@jterrace - #165571)
- Add SPH inverter support to Growatt Server integration (@johanzander - #165314)
- Add quality scale file for SmartTub integration (@mdz - #162376)
- Clean up SmartTub integration and tests (@mdz - #165517)
- Initialize quality scale for Huum integration (@mettolen - #164902)
- Add Lojack integration (@devinslick - #162047)
- Add bearer token as optional setting to Ollama (@ziouf - #165325)
- Fix wake_on_lan tests for Python 3.14.3 (@edenhaus - #165733)
- Fix media_player tests for Python 3.14.3 (@edenhaus - #165732)
- Fix local_file tests for Python 3.14.3 (@edenhaus - #165731)
- Fix kitchen_sink tests for Python 3.14.3 (@edenhaus - #165730)
- Fix demo tests for Python 3.14.3 (@edenhaus - #165724)
- Platinum quality for Teslemetry (@Bre77 - #165727)
- Fix pterodactyl tests (@edenhaus - #165745)
- Use aiohasupervisor for all calls from hassio/coordinator (@mdegat01 - #164413)
- Move _async_abort_entries_match before the try block in Huum (@mettolen - #165752)
- Fix issues in Huum unit test (@mettolen - #165753)
- Set parallel updates for Huum integration (@mettolen - #165749)
- Deduplicate trigger tests checking labs flag (@emontnemery - #165760)
- Add more connection info to SmartThings (@joostlek - #165472)
- Add support for aqua contour/precise line of gardena products (@elupus - #165326)
- Bump sigstore/cosign-installer from 4.0.0 to 4.1.0 (@dependabot - #165758)
- Fix ESPHome cold/warm white brightness applied twice (@bdraco - #165405)
- Use return value from target_entities directly in all trigger tests (@emontnemery - #165761)
- Switch to actions/attest for build provenance (@scop - #165350)
- Switchbot Cloud: Add new supported device(Standing Fan) (@XiaoLing-git - #165755)
- Add cover conditions (@emontnemery - #165661)
- Deduplicate tests testing triggers in mode any (@emontnemery - #165772)
- Fix wemo tests for Python 3.14.3 (@justanotherariel - #165768)
- Run split tests in the same stage with mypy (@edenhaus - #165738)
- Add upload progress tracking to hassio (@zweckj - #165664)
- Fix sensor reset handling in Tesla Fleet (@Bre77 - #165744)
- Move xiaomi_miio coordinator to separate module (@epenet - #165766)
- Move condition/trigger test helpers to test.components.common (@emontnemery - #165777)
- Rework user-given entity name logic (@arturpragacz - #162763)
- Add fixture for Tuya wg2 alarm panel (Duosmart C30) (@ChayoteJarocho - #165701)
- Move cover.trigger.CoverDomainSpec to cover.models (@emontnemery - #165774)
- Add silver quality scale for growatt_server (@johanzander - #165500)
- Add reauthentication-flow to freshr (@SierraNL - #165545)
- Deduplicate tests testing triggers in mode first (@emontnemery - #165779)
- Add Portainer request timeout (@erwindouna - #165785)
- Fix fritz target selector for dial and set_guest_wifi_password (@domifi - #165396)
- Add shuffle service and enqueue support to jellyfin media player (@ch604 - #161632)
- Add platform attribute to Xbox sensors (@dckiller51 - #161661)
- Handle timeout in HKDevice.async_update (@kornelski - #162071)
- Limit color temperature to maximum Matter MIREDs value (@jvmahon - #163892)
- Add fixture for Kerui/Tuya video doorbell (@epenet - #165786)
- Add button platform to Indevolt integration (@Xirt - #165283)
- Deduplicate tests testing triggers in mode last (@emontnemery - #165789)
- Fix mold_indicator sensor update (@zweckj - #158996)
- Use return value from target_entities directly in condition tests (@emontnemery - #165791)
- Tesla Fleet: fix malformed energy live response handling (@Bre77 - #165101)
- Refactor wemo integration to use async service action handlers (@justanotherariel - #165794)
- Remove support for
homeassistant.update_entityfrom mold_indicator (@zweckj - #165797) - Consistenly sentence-case “API token” in
habitica(@NoRi2909 - #165369) - Add select for SmartThings RVC sound mode (@joostlek - #164519)
- Import improvement for Prana integration (@prana-dev-official - #165805)
- Add exception handling to media source in Radio Browser integration (@tr4nt0r - #164653)
- Fix Indevolt button snapshot (@joostlek - #165812)
- Add microfiber filter fixture to SmartThings (@joostlek - #165808)
- Demo valve registry entry and device (@timmo001 - #165803)
- Make Season integration timezone aware (@Intecpsp - #164876)
- Fix timestamps in chess_com test diagnostics (@lboue - #165829)
- Add number platform for Prana integration (@prana-dev-official - #165816)
- Update python-roborock dependency to 4.25.0. (@allenporter - #165800)
- Detect new garage doors automatically in aladdin_connect (@JamieMagee - #165004)
- Make TODO subscriptions use TodoItem instead of JSON (@abmantis - #165802)
- Deduplicate tests testing conditions in mode any (@emontnemery - #165801)
- Add clean segment support to MQTT vacuum entities (@jbouwh - #164983)
- Deduplicate tests testing conditions in mode all (@emontnemery - #165841)
- Add binary sensor support for Tuya WG2 alarm panel (Duosmart C30) (@ChayoteJarocho - #165833)
- Add sensor support for Tuya WG2 alarm panel (Duosmart C30) (@ChayoteJarocho - #165834)
- Add alarm control panel support for Tuya WG2 alarm panel (Duosmart C30) (@ChayoteJarocho - #165837)
- Adjust name and docstring of some trigger tests (@emontnemery - #165846)
- Refactor Vizio integration to use DataUpdateCoordinator (@raman325 - #162188)
- Cleanup unused vacuum test helpers (@jbouwh - #165851)
- Implement dynamic-devices and stale-devices in Opower to mark it platinum (@tronikos - #165121)
- Fix victron_ble charger error sensor always showing unknown (@rajlaud - #165713)
- Fix timezone in account creation date in test snapshot (@lboue - #165831)
- Bump aiohasupervisor to 0.4.2 (@agners - #165854)
- Fix return type in ViCare integration (@CFenner - #165861)
- Update config flow testing instructions for AI (@balloob-travel - #165873)
- Fix bug in assert_condition_behavior_any test helper (@emontnemery - #165838)
- Fix type annotations for set_or_remove_state test helper (@emontnemery - #165843)
- Remove myself from Starlink codeowners (@boswelja - #165883)
- Add camera fixture to SmartThings (@joostlek - #165809)
- Bump pyweatherflowudp to 1.5.2 (@natekspencer - #165874)
- growatt_server: add EntityCategory.DIAGNOSTIC to diagnostic sensors (@johanzander - #165880)
- Removed redundant logging from Huum integration (@mettolen - #165868)
- Remove the icon property from Huum climate entity (@mettolen - #165870)
- Remove NotImplementedError in Volvo integration (@erwindouna - #165856)
- growatt_server: add serial_number to DeviceInfo (devices quality scale rule) (@johanzander - #165857)
- Improve naming in condition and trigger test helpers (@emontnemery - #165847)
- Bump victron-ble-ha-parser to 0.6.2 (@rajlaud - #165832)
- Add motion conditions (@emontnemery - #165677)
- Add occupancy conditions (@emontnemery - #165678)
- Add door conditions (@emontnemery - #165885)
- Safely consume events in hassio test (@zweckj - #165892)
- Add battery temperature sensor to Fully Kiosk Browser integration (@emilburzo - #165714)
- Move jvc_projector sensor entities to select domain (@SteveEasley - #165194)
- Add repair for deprecated arch addon issue (@mdegat01 - #165511)
- Add window conditions (@emontnemery - #165899)
- Add garage_door conditions (@emontnemery - #165897)
- Add data-description strings to IntelliFire (@jeeftor - #165910)
- Add Zinvolt problem binary sensors (@joostlek - #164091)
- Add select triggers (@emontnemery - #165378)
- Remove unnecessary volume_up/volume_down overrides from clementine media player (@balloob - #164427)
- Remove unnecessary volume_up/volume_down overrides from songpal media player (@balloob - #164432)
- Remove unnecessary volume_up/volume_down overrides from ws66i media player (@balloob - #164433)
- Extend Evohome tests to cover legacy service calls (@zxdavb - #164316)
- Add battery charge limit controls to Renault (@yoda-jm - #163079)
- Use new home-assistant/builder actions for image builds (@sairon - #164756)
- growatt_server: replace custom precision with suggested_display_precision (@johanzander - #165858)
- Add gate conditions (@emontnemery - #165898)
- growatt_server: use icon-translations instead of hardcoded _attr_icon (@johanzander - #165920)
- Improve type hints for startca (@edenhaus - #165720)
- Add binary sensor for smartthings microfilter blockage (@joostlek - #165917)
- Allow retry on invalid encryption key in victron_ble config flow (@rajlaud - #165600)
- Add unit of measurement to entity selector filter (@emontnemery - #165914)
- Allow specifying attribute in state selector (@emontnemery - #165928)
- Add Dropbox backup integration (@bdr99 - #155644)
- Adjust inheritance tree of EntitySelectorConfig (@emontnemery - #165915)
- Add exception translations to Google Drive (@tronikos - #165932)
- Add schedule conditions (@emontnemery - #165913)
- Add Trigger Motion Activity button to fully kiosk browser (@justfalter - #164499)
- Add buttons for controlling dishwasher operation (@edu-tsen - #160269)
- Update Google Drive quality scale rules to match #156167 (@tronikos - #165916)
- Remove targets from intent response (@arturpragacz - #165434)
- Update renault snapshots (@abmantis - #165948)
- Add issue and repair for NTP sync failure (@sairon - #165463)
- Add reconfigure flow to BSB-LAN (@liudger - #164070)
- Test coverage for the Actron Air integration (@kclif9 - #164446)
- Log Withings webhook URL warning only once (@ptarjan - #164551)
- Add live firmware update detection to Plugwise (@bouwew - #165936)
- Do not abbreviate “reauthentication” in Google Drive (@tronikos - #165941)
- Add reconfigure flow in Google Drive (@tronikos - #165926)
- Stop manually assigning an entity_id in waterfurnace sensors (@masterkoppa - #165954)
- Add exception translations to Google Weather (@tronikos - #165935)
- Bump ohme to 1.7.1 (@dan-r - #165951)
- Bump ulid-transform to 2.2.0 (@bdraco - #165964)
- Manually update values instead of sending an event in mold_indicator (@zweckj - #165891)
- Switch over to aiohttp on the Axis integration (@Kane610 - #165963)
- Source Tessie phantom drain and battery sensors from state data (@Bre77 - #165970)
- Add sensors for microfilter to SmartThings (@joostlek - #165922)
- Add switch for microfilter bypass mode to SmartThings (@joostlek - #165919)
- Bump PyViCare to 2.58.1 (@CFenner - #165965)
- growatt_server: add diagnostics support (@johanzander - #165923)
- Bump pyvlx to 0.2.32 (@wollew - #165990)
- Bump actions/download-artifact from 8.0.0 to 8.0.1 (@dependabot - #165982)
- Add sensor tests for missing victron_ble device types (@rajlaud - #165498)
- Bump aiohomeconnect to 0.33.0 (@Diegorro98 - #166001)
- Fix Home Asssitant Cloud test for Python 3.14.3 (@justanotherariel - #165937)
- Added exception handling when switchbot account login. (@zerzhang - #165978)
- Fix mixed-language Splunk setup errors in exception translations (@Bre77 - #165974)
- Add some EZVIZ sensor icons (@scop - #166000)
- Simplify mocking of Tuya device notifications (@epenet - #165998)
- Add test fixture for Tuya WiFi smart online 8 in 1 tester (@epenet - #166003)
- Fix backblaze_b2 tests for Python 3.14.3 (@justanotherariel - #165930)
- Add 3D heating, air fry, and grill programs to Home Connect (@Diegorro98 - #166006)
- Use
annotationlib.get_annotationsin entity helper (@epenet - #165331) - Remove get_issues_info from hassio all (@mdegat01 - #165929)
- Add reauth flow and auto-trigger to victron_ble integration (@rajlaud - #165729)
- Add state_attr_translated template filter and function (@piitaya - #165317)
- Ensure STT metadata enums are passed (@synesthesiam - #165220)
- Remove DeerMaximum from velux codeowners (@DeerMaximum - #166014)
- Change codeowner of smarla integration (@rlint-explicatis - #166015)
- Add reconfigure flow to Satel Integra (@Tommatheussen - #164938)
- Add WiiM media player integration (@Linkplay2020 - #148948)
- Bump homematicip to 2.7.0 (@lackas - #166012)
- Fix spelling of “Wi-Fi” in user-facing strings of
shelly(@NoRi2909 - #166017) - Replace deprecated library call in Velux integration (@wollew - #165996)
- Fix spelling of “Wi-Fi” trademark in user-facing string of
sfr_box(@NoRi2909 - #166019) - growatt_server: add translation keys to all raised exceptions (@johanzander - #165927)
- Add pause/resume buttons to Portainer (@erwindouna - #166028)
- Reject entity/number price for external statistics in energy config (@loganrosen - #165582)
- Remove useless string split from triggers (@emontnemery - #166034)
- Bump androidtvremote2 to 0.3.1 (@tronikos - #166045)
- Remove useless string split from mqtt diagnostics (@emontnemery - #166035)
- Implement reauth for Huum integration (@mettolen - #165971)
- Add Lichess Integration (@aryanhasgithub - #166051)
- Add Casper Glow integration (@mikeodr - #164536)
- Add diagnostics platform to air-Q integration (@Sibgatulin - #166065)
- Pump pyliebherrhomeapi to 0.4.0 (@mettolen - #165973)
- Implement stale devices and update Liebherr to gold (@mettolen - #164666)
- Fix FRITZ!Box Tools “the test opens sockets” issue (@mib1185 - #165596)
- Add Roborock Q10 vacuum support (@allenporter - #165624)
- Bump aioesphomeapi to 44.6.2 (@bdraco - #166080)
- Bump TRMNL to platinum (@joostlek - #166066)
- Add stick cleaner fixture to SmartThings (@joostlek - #166121)
- Add Identify button to Velux integration (@IngmarStein - #163893)
- Add diagnostics in Google Weather (@tronikos - #166105)
- KNX: Clean up internal setting of name, unique_id and entity_category for YAML entities (@farmio - #160265)
- Add PSRAM sensor for SMLIGHT integration (@tl-sl - #166104)
- Add binary sensor for stick cleaner status to SmartThings (@joostlek - #166122)
- Update python-roborock to 4.26.1 (@lboue - #166138)
- Add logger to OpenDisplay (@balloob - #166146)
- Update python-roborock to 4.26.2 (@lboue - #166152)
- feat(roborock): Add Q10 empty dustbin button entity (@lboue - #166149)
- Bump habluetooth to 5.11.1 (@bdraco - #166161)
- Update python-roborock to 4.26.3 (@lboue - #166178)
- Add temperature triggers (@emontnemery - #165247)
- Add a reauthentication flow to the UniFi Access integration (@RaHehl - #165859)
- feat(roborock): Remove unnecessary type check for Q10 update coordinator in button setup (@lboue - #166214)
- Add shutdown button for VMs in ProxmoxVE (@Stathogon - #165890)
- Add async_setup and yarl to Immich coordinator (@erwindouna - #165900)
- Bump pyrate-limiter to 4.1.0 (@tr4nt0r - #166221)
- Update python-roborock to 5.0.0 (@lboue - #166219)
- Bump evohome-async to 1.2.0 (@zxdavb - #166227)
- Add Linptech PS1BB pressure sensor support to xiaomi_ble (@xuejuhui - #166095)
- Add unit of measurement handling to numeric climate triggers (@emontnemery - #166211)
- Revert “Add turned off and turned on triggers to input boolean (#158824)” (@emontnemery - #166240)
- Clarify description of
motion_blinds.set_absolute_positionaction (@NoRi2909 - #166243) - Fixes generic_thermostat config flow validation (@esand - #165680)
- Bump dorny/paths-filter from 3.0.2 to 4.0.1 (@dependabot - #166237)
- Add YoLink YS7A06 support (@matrixd2 - #165987)
- Add support for input_boolean to switch triggers (@emontnemery - #166242)
- Refactor Z-Wave discovery schemas for sensor platform (@MartinHjelmare - #165254)
- Bump py-unifi-access to 1.1.3 (@RaHehl - #166177)
- Create repair issue for legacy Z-Wave Door state sensors that are still in use (@AlCalzone - #165363)
- Only start Assist Pipeline debug thread when capturing audio (@balloob - #166190)
- Cleanup deprecated YAML import from vera (@epenet - #165659)
- Use device-specific firmware flashers for Yellow/ZBT-1/ZBT-2 (@puddly - #164695)
- Fix trane for Python 3.14.3 (@MartinHjelmare - #166252)
- Replace calls to set options in Supervisor with aiohasupervisor (@mdegat01 - #165872)
- Improve subentry error handling for Telegram bot (@hanwg - #165863)
- Add copilot-specific instructions (@abmantis - #166254)
- Update state template framework to support options other than state (@Petro31 - #162737)
- Remove redundant humidity trigger test (@emontnemery - #166257)
- Adjust temperature trigger translations (@emontnemery - #166260)
- Minor improvements of cover trigger tests (@emontnemery - #166256)
- Minor improvements of temperature trigger tests (@emontnemery - #166259)
- Minor improvements of motion trigger tests (@emontnemery - #166264)
- Minor improvements of occupancy trigger tests (@emontnemery - #166265)
- Adjust light triggers (@emontnemery - #166263)
- Simplify Tuya entity initialisation (@epenet - #166266)
- Bump hass-nabucasa from 2.0.0 to 2.2.0 (@ludeeus - #166267)
- Add missing type hint to Camera entity description (@epenet - #166273)
- Bump pyliebherrhomeapi to 0.4.1 (@mettolen - #166269)
- Simplify Tuya climate entity initialisation (@epenet - #166277)
- Adjust humidity triggers (@emontnemery - #166261)
- Use SensorDeviceClass.PH in mysensors (@epenet - #166274)
- Add config flow to touchline integration (@mnordseth - #165790)
- Allow TODO entity listeners to handle None state (@abmantis - #166276)
- Add entity name template function (@arturpragacz - #166078)
- Add switch tests to vesync (@cdnninja - #163325)
- Add air quality triggers (@emontnemery - #166248)
- Replace “grid return” with “grid export” in
opowerissue (@NoRi2909 - #165888) - Add text conditions (@emontnemery - #165918)
- Add battery conditions (@justanotherariel - #165208)
- Add diagnostics to Huum integration (@frwickst - #166230)
- Fix Tesla Fleet token refresh handling for expired tokens (@Bre77 - #165354)
- Bump UniFi Access integration to Silver quality scale (@RaHehl - #166216)
- Bump aiotractive to 1.0.1 (@bieniu - #166288)
- Improve error handling in the Tractive config flow (@bieniu - #166290)
- Don’t update ESPHome host when device is already connected (@bdraco - #166084)
- Log ffmpeg conversion errors in ESPHome media proxy (@bdraco - #166086)
- Fix set states in service intent handler (@arturpragacz - #165432)
- Remove stale area entries from limited template unsupported lists (@arturpragacz - #166079)
- Add exception translations to Tessie (@Bre77 - #166047)
- Add new sensors to Proxmox (@erwindouna - #166275)
- Add RFC9728 OAuth2 Protected Resource metadata endpoint (@allenporter - #166213)
- Handle invalid manifest in WebDAV backup agent gracefully (@jpbede - #166306)
- Add event entity triggers (@emontnemery - #165456)
- Add network sensors to Proxmox (@erwindouna - #166281)
- Use helper when creating air_quality triggers (@emontnemery - #166287)
- Remove useless string split from conditions (@emontnemery - #166319)
- Add numerical climate conditions (@emontnemery - #166309)
- Add some water heater triggers (@edenhaus - #164864)
- Add progress tracking when uploading a cloud backup (@ludeeus - #166316)
- Bump LoqedAPI to 2.1.11 (@mikewoudenberg - #166311)
- Bump tuya-device-handlers to 0.0.14 (@epenet - #166323)
- Also listen for input_text in
text.changedtrigger (@mib1185 - #165161) - Add new fridge fixture to SmartThings (@joostlek - #165198)
- Add illuminance triggers (@emontnemery - #166250)
- Bump PySwitchbot to 2.0.0 (@zerzhang - #165995)
- Add power triggers (@emontnemery - #166253)
- Add light platform to SMLIGHT integration (@tl-sl - #166092)
- Bump universal-silabs-flasher to 1.0.3 (@TheJulianJES - #166338)
- Migrate Tuya alarm to TuyaAlarmDefinition (@epenet - #166329)
- Add upload progress tracking to S3 integrations (@zweckj - #166325)
- Migrate Tuya cover to TuyaCoverDefinition (@epenet - #166328)
- Migrate Tuya binary sensor to TuyaBinarySensorDefinition (@epenet - #166330)
- Bump pyfronius to 0.8.2 (@farmio - #166334)
- Fix bug in EntityOriginStateTriggerBase (@emontnemery - #166324)
- Migrate Tuya vacuum to TuyaVacuumDefinition (@epenet - #166339)
- Migrate Tuya humidifier to TuyaHumidifierDefinition (@epenet - #166340)
- Migrate Tuya sensor to TuyaSensorDefinition (@epenet - #166341)
- Migrate Tuya light to TuyaLightDefinition (@epenet - #166337)
- Remove intel-nuc machine from image build matrix (@sairon - #166326)
- Migrate Tuya camera to TuyaCameraDefinition (@epenet - #166343)
- Bump aiohasupervisor to 0.4.3 (@agners - #166315)
- Bump aiotedee to 0.3.0 (@zweckj - #166321)
- Allow subclasses to set state in NotifyEntity (@tr4nt0r - #154127)
- Migrate Tuya fan to TuyaFanDefinition (@epenet - #166344)
- Migrate remaning Tuya entities to TuyaDefinition (@epenet - #166345)
- Rename battery.percentage to battery.is_level (@justanotherariel - #166348)
- Migrate Tuya climate to TuyaClimateDefinition (@epenet - #166351)
- Add context support for conditions.yaml (@emontnemery - #166333)
- Fix Firefly iii sensors not updating (@Passific - #165450)
- Add solarman integration (@solarmanpv - #152525)
- Fix unmocked DNS lookups in minecraft_server config flow tests (@frenck - #166347)
- Portainer add runtime entities (@erwindouna - #166320)
- Bump intents to 2026.3.24 (@synesthesiam - #166355)
- Bump aioamazondevices to 13.3.0 (@chemelli74 - #166346)
- Add DHCP discovery support to Whisker integration (@teancom - #165635)
- Add unique_id and device info to Roth Touchline (@mnordseth - #166289)
- Handle validation error when starting stream from audio (@balloob - #166185)
- Add water_heater conditions (@emontnemery - #166335)
- Add LG Infrared integration (@abmantis - #162359)
- Add humidity condition (@justanotherariel - #166358)
- Add numeric threshold selector (@bramkragten - #166314)
- Fix limited template unsupported lists (@arturpragacz - #166356)
- Add image platform to UniFi Access integration (@RaHehl - #165848)
- Add power conditions (@emontnemery - #166364)
- Add Qube Heat Pump integration (@MattieGit - #160409)
- Improve vacuum action naming consistency (@frenck - #166359)
- Rename humidity.value condition to humidity.is_value (@justanotherariel - #166372)
- Move common code to entity class in LG Infrared (@abmantis - #166371)
- Improve light action naming consistency (@frenck - #166362)
- Move pipeline input validation into execute method (@arturpragacz - #166373)
- Improve cover action naming consistency (@frenck - #166366)
- Improve alarm control panel action naming consistency (@frenck - #166367)
- Improve switch action naming consistency (@frenck - #166376)
- Add port forwarding binary sensor to Transmission (@Eniot666 - #166108)
- Activate strict type checks for Huum integration (@frwickst - #166357)
- Improve camera action naming consistency (@frenck - #166381)
- Improve fan action naming consistency (@frenck - #166379)
- Improve climate action naming consistency (@frenck - #166361)
- Improve calendar action naming consistency (@frenck - #166378)
- Add API token authentication to Proxmox (@CoMPaTech - #166197)
- Battery status for Roborock Q7 (@RaddedMC - #165886)
- Add compatibility layer for entities without has_entity_name to entity registry (@arturpragacz - #166246)
- Improve input helper action naming consistency (@frenck - #166382)
- Use current track’s album thumbnail as our entity_picture for “radio” sources in Music Assistant (@teancom - #166302)
- Add reconfigure config flow to SamsungTV (@chemelli74 - #165907)
- Add basic climate tests to Touchline (@joostlek - #166360)
- Align FritzBoxProfileSwitch signature for Fritz (@chemelli74 - #165601)
- Update Whisker quality scale to platinum (@natekspencer - #166369)
- Improve Home Assistant core action naming consistency (@frenck - #166387)
- Add reconfiguration flow to QNAP (@plaffitt - #166064)
- Improve number action naming consistency (@frenck - #166391)
- Improve to-do list action naming consistency (@frenck - #166393)
- Improve lawn mower action naming consistency (@frenck - #166388)
- Improve button action naming consistency (@frenck - #166385)
- Bump yt-dlp version to 2026.03.17 (@andreimoraru - #166394)
- Bump pysqueezebox to 0.14.0 (@rajlaud - #166395)
- Use common preset names in Touchline (@joostlek - #166390)
- Add Conductivity (EC), pH, ORP support to Tuya DGNBJ (@andrieslouw - #159584)
- Mark Tessie docs-data-update quality scale item as done (@Bre77 - #166404)
- Improve update action naming consistency (@frenck - #166401)
- Add suspend all button Proxmox (@erwindouna - #166417)
- Update Touchline codeowner (@mnordseth - #166420)
- Refactor Huum test fixtures (@mettolen - #166115)
- Update Roborock entities to handle unavailable data (@allenporter - #165618)
- Add button platform to LG Infrared (@abmantis - #166375)
- Improve select action naming consistency (@frenck - #166398)
- Bump ZHA to 1.1.0 (@TheJulianJES - #166438)
- Filter out WiiM devices from LinkPlay discovery (@balloob - #166436)
- Bump Tesla Fleet API to 1.4.5 (@Bre77 - #166432)
- Warn about *.pth files in dependencies (@cdce8p - #166411)
- Improve siren action naming consistency (@frenck - #166399)
- Fix Tesla Fleet partner_login to not require vehicle scope. (@Bre77 - #166435)
- Fix
KeyErrorfor device temperature sensor in Unifi integration (@bieniu - #166410) - Fix Abode retrofit lock discovery (@goabodedevops - #166433)
- Add PARALLEL_UPDATES to Touchline SL climate platform (@jorgenvi - #166415)
- Add Presentation light to Liebherr (@mettolen - #166154)
- Improve lock action naming consistency (@frenck - #166445)
- Proxmox add runtime entities (@erwindouna - #166416)
- Improve reload action naming for YAML-based integrations (@frenck - #166442)
- Bump uiprotect to 10.2.3 (@RaHehl - #166406)
- Get program from base program option at Home Connect (@Diegorro98 - #164885)
- Bump opower to 0.18.0 (@tronikos - #166444)
- Add custom equivalent units to recorder platform (@Sab44 - #164893)
- Fix open sockets in tests for Telegram bot (@hanwg - #166451)
- Use Unix socket for Supervisor communication (@agners - #163907)
- Migrate touchline to has_entity_name = true (@joostlek - #166403)
- Add Binary Sensors to Casper Glow (@mikeodr - #166130)
- Add air quality conditions (@emontnemery - #166407)
- Add illuminance conditions (@justanotherariel - #166353)
- Fix AssertionError for Z-Wave opening state value on non-zero endpoint (@AlCalzone - #166461)
- Permit manual setup for air-Q integration alongside zeroconf (@Sibgatulin - #166459)
- Bump satel_integra to 1.0.0 (@Tommatheussen - #164257)
- Update and fix govee light local (@Galorhallen - #166454)
- Improve scene action naming consistency (@frenck - #166456)
- Allow test vendor IDs to set Matter label (@Laxen - #161974)
- Pooldose additional entities for advanced pooldose device (@lmaertin - #165608)
- Add moisture triggers (@emontnemery - #166249)
- Add humidifier condition (@justanotherariel - #166464)
- Add is_closed state attribute to valve (@mib1185 - #165227)
- Add mode to numeric threshold selector (@bramkragten - #166453)
- Bump pynintendoparental to 2.3.3 (@pantherale0 - #166471)
- Bump uv to 0.11.1 (@edenhaus - #166472)
- Bump pylitterbot to 2025.2.0 and update Litter-Robot 3 test data to match underlying API data (@natekspencer - #166350)
- Add a missing regression test for airq config flow (@Sibgatulin - #166473)
- Add snapshot button to Proxmox (@erwindouna - #166462)
- Update IQS to Bronze for Satel Integra (@Tommatheussen - #166469)
- Updates for Casper glow Integraiton - Add Buttons (@mikeodr - #166083)
- Add backups sensors to Proxmox (@erwindouna - #166380)
- Fix Meter Pro CO2 not discoverable via BT proxies (@fankai777 - #165173)
- Bump tuya-device-handlers to 0.0.15 (@FredrikM97 - #166477)
- Add initial quality scale for waterfurnace (@masterkoppa - #165756)
- feat(transmission): add session and cumulative stats sensors (@Eniot666 - #166134)
- Fix Proxmox offline node (@erwindouna - #165986)
- Add battery sensor to Roth Touchline SL integration (@jorgenvi - #166283)
- Filter artificial zero values at UTC midnight from Forecast.Solar data (@MindFreeze - #166447)
- Add domain driven triggers to counter helper (@mib1185 - #164545)
- Fix handling of units in
NumericThresholdSelector(@emontnemery - #166475) - Bump python-bsblan to 5.1.3 (@liudger - #166479)
- Re-discover Z-Wave list sensors when metadata states change (@AlCalzone - #166271)
- Add storages to Proxmox (@erwindouna - #166409)
- Add send_media_group action for Telegram bot (@hanwg - #160939)
- Add sensors for more game modes to Chess.com (@joostlek - #166331)
- Add entities for stick vacuum cleaner to SmartThings (@joostlek - #166127)
- Add binary sensors for PoolDose delay/pump status entities (@ronaldvdmeer - #166485)
- Add measurement state class for Abode multi-sensor entities (@goabodedevops - #166431)
- Replace calls to ingress panels API with aiohasupervisor (@mdegat01 - #166400)
- Add names for sound programs in Yamaha Musiccast (@crash0verride11 - #166231)
- Use state selector for humidifier service fields (@piitaya - #166487)
- Use state selector for fan service fields (@piitaya - #166488)
- Use state selector for light service fields (@piitaya - #166489)
- Use state selector for climate service mode fields (@piitaya - #166486)
- Add moisture conditions (@justanotherariel - #166470)
- Don’t return remote/cloudhook URLs while registering a local user (@TimoPtr - #166336)
- Use state selector for vacuum service fields (@piitaya - #166492)
- Update frontend to 20260325.0 (@bramkragten - #166497)
- Use state selector for media player service fields (@piitaya - #166493)
- Use state selector for water heater service fields (@piitaya - #166491)
- Bump deebot-client to 18.1.0 (@edenhaus - #166498)
- Use state selector for fan service fields (@piitaya - #166488)
- Add config flow to Leviton Decora (@joostlek - #165559)
- Replace calls to ingress panels API with aiohasupervisor (@mdegat01 - #166400)
- Add Todo triggers (@abmantis - #165931)
- Remove unused method argument from Jellyfin (@ch604 - #165798)
- Add temperature conditions (@emontnemery - #166408)
- Add missing translation for water heater operation mode (@piitaya - #166501)
- Bump IQS to gold for SamsungTV (@chemelli74 - #166490)
- Make SecureTar v3 the default for backup creation (@agners - #166272)
- Abort WiiM config flow when Home Assistant URL is unavailable (@balloob-travel - #166055)
- Add sensor platform to UniFi Access integration (@imhotep - #166093)
- Use NumericThresholdSelector in numeric triggers (@emontnemery - #166478)
- Add retry logic and resilience for Withings webhook subscription (@delize - #162189)
- Fix device registry collisions for multi-module Touchline SL setups (@jorgenvi - #166414)
- Remove MAX_NUM_CTX limit from Ollama integration (@zestysoft - #166140)
- growatt_server: use human-readable labels in exception messages (@johanzander - #166024)
- Add trigger water_heater.operation_mode_changed (@emontnemery - #166450)
- Use NumericThresholdSelector in numeric conditions (@emontnemery - #166507)
- Improve cloud action naming consistency (@frenck - #166516)
- Improve script action naming consistency (@frenck - #166517)
- Improve valve action naming consistency (@frenck - #166521)
- Speed up trigger tests (@emontnemery - #166522)
- Improve humidifier action naming consistency (@frenck - #166524)
- Improve automation action naming consistency (@frenck - #166525)
- Improve counter action naming consistency (@frenck - #166526)
- Improve image action naming consistency (@frenck - #166527)
- Bump pyanglianwater to 3.1.2 (@pantherale0 - #166531)
- Improve device tracker action naming consistency (@frenck - #166534)
- Improve water heater action naming consistency (@frenck - #166535)
- Improve group action naming consistency (@frenck - #166537)
- Improve logger action naming consistency (@frenck - #166538)
- Improve dashboard action naming consistency (@frenck - #166539)
- Improve weather action naming consistency (@frenck - #166540)
- Improve conversation action naming consistency (@frenck - #166542)
- Add trigger humidifier.mode_changed (@emontnemery - #166241)
- Add battery triggers (@justanotherariel - #166258)
- Add Google Drive backup upload progress (@tronikos - #166549)
- Bump sense-energy to 0.14.0 (@kbickar - #166550)
- Bump asyncsleepiq to 1.7.1 (@kbickar - #166552)
- Adjust some trigger and condition schemas (@emontnemery - #166568)
- Revert: Create repair issue for legacy Z-Wave Door state sensors that are still in use (@AlCalzone - #166583)
- Update rainmachine solar radiation to reflect it is per day, not per … (@jmActifio - #166040)
- Verify Proxmox permissions when creating snapshots (@CoMPaTech - #166547)
- Bump lojack-api to 0.7.2 (@devinslick - #166560)
- Add missing translations for Telegram bot (@hanwg - #166581)
- Bump renault-api to 0.5.7 (@reneboer - #166586)
- Remove class NumericalDomainSpec (@emontnemery - #166588)
- Bump pooldose 0.9.0 (@ronaldvdmeer - #166589)
- Add todo to experimental triggers (@abmantis - #166591)
- Remove number entity support from battery triggers and conditions (@emontnemery - #166593)
- Remove number entity support from humidity triggers and conditions (@emontnemery - #166594)
- Remove number entity support from illuminance triggers and conditions (@emontnemery - #166595)
- Remove number entity support from moisture triggers and conditions (@emontnemery - #166596)
- Remove number entity support from power triggers and conditions (@emontnemery - #166597)
- Make
sirenconditions consistent with new wording (@NoRi2909 - #166600) - Add light.is_brightness condition (@emontnemery - #166601)
- Add input_boolean support to switch conditions (@emontnemery - #166602)
- Restore support for number entities as limits in battery conditions and triggers (@emontnemery - #166607)
- Restore support for number entities as limits in moisture conditions and triggers (@emontnemery - #166608)
- Add condition humidifier.is_mode (@emontnemery - #166610)
- Update frontend to 20260325.1 (@bramkragten - #166614)
- Remove tplink_lte integration (@JamieMagee - #166615)
- Add climate.is_hvac_mode condition (@emontnemery - #166570)
- Add weather support to humidity conditions (@emontnemery - #166599)
- Add select conditions (@emontnemery - #166612)
- Wait for device registry in entity registry loading (@arturpragacz - #166636)
- Update idasen-ha to 2.6.5 (@abmantis - #166645)
- Bump aioamazondevices to 13.3.1 (@chemelli74 - #166658)
- Add missing miele program_id code (@astrandb - #166685)
- Add missing miele oven codes (@astrandb - #166690)
- Use legacy naming for entities (@arturpragacz - #166696)
- Update frontend to 20260325.2 (@piitaya - #166717)
- Add new OAuth exceptions to Neato (@erwindouna - #166584)
- Handle Oauth2 ImplementationUnavailableError in husqvarna_automower (@wmoss - #166633)
- Correct Musiccast sound mode name (@crash0verride11 - #166644)
- Handle Oauth2 ImplementationUnavailableError in gentex_homelink (@wmoss - #166646)
- Handle Oauth2 ImplementationUnavailableError in geocaching (@wmoss - #166648)
- Handle Oauth2 ImplementationUnavailableError in google_assistant_sdk (@wmoss - #166649)
- Handle Oauth2 ImplementationUnavailableError in google_mail (@wmoss - #166650)
- Handle Oauth2 ImplementationUnavailableError in google_sheets (@wmoss - #166651)
- Handle Oauth2 ImplementationUnavailableError in iotty (@wmoss - #166652)
- Handle Oauth2 ImplementationUnavailableError in monzo (@wmoss - #166653)
- Handle Oauth2 ImplementationUnavailableError in microbees (@wmoss - #166654)
- Handle Oauth2 ImplementationUnavailableError in lyric (@wmoss - #166655)
- Handle Oauth2 ImplementationUnavailableError in google_tasks (@wmoss - #166657)
- Bump aiorussound to 4.9.1 (@noahhusby - #166718)
- Add missing code for miele washing machine (@astrandb - #166731)
- Bump pyblu to 2.0.6 (@LouisChrist - #166738)
- Bump aioimmich to 0.12.1 (@mib1185 - #166746)
- Bump pydrawise to 2026.3.0 (@dknowles2 - #166750)
- Bump aiohttp to 3.13.4 (@bdraco - #166756)
- Revert mqtt vacuum segments support (@jbouwh - #166761)
- Update knx-frontend to 2026.3.28.223133 (@farmio - #166764)
- Bump habiticalib to 0.4.7 (@tr4nt0r - #166772)
- Improve text action naming consistency (@frenck - #166523)
- Add valve conditions (@emontnemery - #166634)
- Convert Z-Wave Opening state to separate Open/Closed and Tilted sensors (@AlCalzone - #166635)
- Support vacation mode in Econet (@taylorwilsdon - #166659)
- Clamp surepetcare battery percentage to 0-100 (@florianhorner - #166824)
- Fix OpenAI image generation with reasoning (@Shulyaka - #166827)
- Bump fing_agent_api to 1.1.0 (@Lorenzo-Gasparini - #166855)
- Skip unavailable sensors in LaCrosse View (@nijel - #166859)
- Get list of analytics insights integrations from next environment (@joostlek - #166867)
- Unprefix entity name for template function (@arturpragacz - #166899)
- Unprefix entity name for entity ID generation (@arturpragacz - #166900)
- Bump victron-ble-ha-parser (@rajlaud - #166906)
- Add
valve.openedandvalve.closedtriggers (@mib1185 - #165160) - Bump aiontfy to 0.8.3 (@tr4nt0r - #166770)
- Fix Tesla Fleet startup scopes after OAuth refresh (@Bre77 - #166922)
- Bump aiontfy to 0.8.4 (@tr4nt0r - #166917)
- Use async download for translations (@edenhaus - #166940)
- Improve date action naming consistency (@frenck - #166529)
- Improve datetime action naming consistency (@frenck - #166530)
- Improve time action naming consistency (@frenck - #166532)
- Prevent invalid phase count state in nrgkick (@andijakl - #166575)
- Make field description optional for non config flows (@emontnemery - #166892)
- Register trigger platform upon use (@arturpragacz - #166911)
- Bump srpenergy to 1.3.8 (@ammmze - #166926)
- Fix StopIteration error in ista EcoTrend coordinator (@tr4nt0r - #166929)
- Register condition platform upon use (@arturpragacz - #166939)
- Fix “Shutdown” grammar in Roborock strings (@piitaya - #166948)
- Remove calendar and todo from unconditionally loaded integrations (@emontnemery - #166951)
- Update hassfest conditions, services and triggers plugins to not require field descriptions (@emontnemery - #166954)
- Add timer conditions (@emontnemery - #166641)
- Add calendar conditions (@emontnemery - #166643)
- Add counter purpose-specific condition (@abmantis - #166879)
- Remove redundant field descriptions from triggers and conditions (@emontnemery - #166955)
- Update frontend to 20260325.4 (@bramkragten - #166970)
- Fix grammar of
input_shutdown_failureerror invictron_ble(@NoRi2909 - #166972) - Make sure we can fetch player stats in Chess.com (@joostlek - #166980)
- Add skeleton with repair issue to bmw integration (@justanotherariel - #166983)
- Pull out Dropbox integration (@joostlek - #166986)
- Bump solarlog_cli to 0.7.1 (@dontinelli - #166990)
- Add BEGA brand (@joostlek - #166992)
- Bump led-ble to 1.1.8 (@jackson-57 - #166999)
- Update requests to 2.33.1 (@cdce8p - #167014)
- Bump aiohttp to 3.13.5 (@bdraco - #167015)
- Bump ZHA to 1.1.1 (@TheJulianJES - #167025)
- Store received backup in temp backup dir only (@agners - #166982)
- Update frontend to 20260325.5 (@bramkragten - #167050)
- Bump aioamazondevices to 13.3.2 (@chemelli74 - #167052)