Full changelog for Home Assistant 2026.5
These are all the changes included in the Home Assistant 2026.5 release. For a summary in a more readable format Release notes blog for this release.
All changes
- Improve KNX tests and avoid dns lookups (@chemelli74 - #166508)
- Add dynamic devices to freshr (@SierraNL - #165942)
- Rework patching and handling of client runner in arcam (@elupus - #165747)
- Add HmIP-FLC support to HomematicIP Cloud (@lackas - #165827)
- Bump version to 2026.5.0dev0 (@frenck - #166512)
- Instruct copilot to place main comment in collapsible section (@abmantis - #166503)
- Validate port ranges in URL validator (@balloob-travel - #166059)
- Revert “Instruct copilot to place main comment in collapsible section” (@abmantis - #166543)
- Bump j178/prek-action from 1.1.1 to 2.0.0 (@dependabot - #166561)
- Bump codecov/codecov-action from 5.5.2 to 5.5.3 (@dependabot - #166562)
- Bump actions/cache from 5.0.3 to 5.0.4 (@dependabot - #166563)
- Bump music-assistant-client to 1.3.4 (@fmunkes - #166567)
- Bump dawidd6/action-download-artifact from 16 to 19 (@dependabot - #166564)
- Improve MySensors tests and avoid dns lookups (@chemelli74 - #166509)
- Improve Nuki tests and avoid dns lookups (@chemelli74 - #166506)
- Bump sfrbox-api to 0.1.1 (@robin-thoni - #166605)
- Add new OAuth exceptions to Netatmo (@erwindouna - #166585)
- Google Assistant SDK add new OAuth exceptions (@erwindouna - #166587)
- Create IntegrationType enum (@edenhaus - #166598)
- Add support for unloading the waterfurnace config (@masterkoppa - #166555)
- Add support for unloading the waterfurnace config (@masterkoppa - #166555)
- Bump ttn_client from 1.2.3 to 1.3.0 (@magliaral - #166613)
- Add Matter radon sensor support (@dnicoara - #166298)
- Modernize demo/switch to async (@justanotherariel - #166619)
- Fix override of state write in dlna_dmr (@emontnemery - #166628)
- Fix override of state write in radarr (@emontnemery - #166630)
- Handle Oauth2 ImplementationUnavailableError in aladdin_connect (@wmoss - #166631)
- Fix override of state write in fritzbox (@emontnemery - #166629)
- Fix override of state write in camera base entity (@emontnemery - #166626)
- Use error introduced in #154579 in fitbit integration (@wmoss - #166632)
- Use error introduced in #154579 in google_photos integration (@wmoss - #166656)
- Use error introduced in #154579 in mcp integration (@wmoss - #166661)
- Modernize demo/remote to async (@justanotherariel - #166624)
- Fix override of state write in calendar base entity (@emontnemery - #166625)
- Improve Obihai tests and avoid dns lookups (@chemelli74 - #166510)
- Bump thinqconnect to 1.0.11 (@LG-ThinQ-Integration - #166668)
- Handle Oauth2 ImplementationUnavailableError in smappee (@wmoss - #166660)
- Add client_id_metadata_document_supported to the OAuth Authorization Server Metadata (@allenporter - #166220)
- Reduce code duplication in todo triggers (@abmantis - #166640)
- Improve timer action naming consistency (@NoRi2909 - #166682)
- Introduce a base entity for NINA (@DeerMaximum - #166637)
- Handle Oauth2 ImplementationUnavailableError in google (@wmoss - #166647)
- Add new Weather Station sensors to Switchbot Cloud (@XiaoLing-git - #165257)
- Add start_charge action to renault (@reneboer - #166701)
- Add Matter Thermostat presets feature (@lboue - #160885)
- Update switchbot_cloud snapshots (@MartinHjelmare - #166720)
- Bump gardena bluetooth to 2.3.0 (@elupus - #166719)
- Add Remote platform to SMLIGHT Integration (@tl-sl - #166728)
- Improve comelit type handling (@MartinHjelmare - #166740)
- Add Matter range hood fixture (@lboue - #166743)
- Bump kaleidescape dependency to 1.1.4 (@SteveEasley - #166744)
- Remove dispatcher pattern and use options properties in Vizio (@raman325 - #164711)
- Exception translations for Anthropic integration (@Shulyaka - #166723)
- Bump python-qube-heatpump to 1.8.0 (@MattieGit - #166713)
- Improve energyid config flow tests (@MartinHjelmare - #166749)
- Add event entity to Transmission (@andrew-codechimp - #166686)
- Add select platform to UniFi Access integration (@imhotep - #166096)
- Fix Huum test coverage and upgrade to silver (@mettolen - #166548)
- Add event platform to HTML5 integration (@tr4nt0r - #166577)
- Casper Glow - Add Select Options (@mikeodr - #166553)
- Document use cases for Anthropic integration (@Shulyaka - #166752)
- Add config flow to pjlink (@jtjart - #166073)
- Bump youtubeaio to 2.1.2 (@Hugo1380 - #166767)
- Cancel wait_for_started task in Onkyo (@arturpragacz - #166762)
- Update goodwe library to 0.4.10 (@mletenay - #166809)
- Remove hunterjm@ as an owner of onvif (@jterrace - #166823)
- Rename onvif event module to event_manager (@jterrace - #166830)
- Bump aiosolaredge to 1.0.2 (@it-rec - #166763)
- Allow Matter thermostats with
nullLocalTemperature(@cyberhuman - #162973) - Add fixture for Tuya D825A dehumidifier (@pedroterzero - #166822)
- Bump tuya-device-handlers to 0.0.16 (@epenet - #166844)
- Remove unused string from HTML5 integration (@tr4nt0r - #166826)
- Bump weatherflow4py to 1.5.2 (@jeeftor - #166773)
- Update quality scale for Fritz (@chemelli74 - #166853)
- Use runtime_data in motion_blinds integration (@epenet - #166849)
- Add diagnostics to Casper Glow (@mikeodr - #166807)
- Add diagnostics support to UniFi Access integration (@RaHehl - #166819)
- Fix shelly tests - mock async_unload_entry (@justanotherariel - #166851)
- Mark Entity.async_write_ha_state as final (@emontnemery - #166627)
- Migrate meteo_france to use runtime_data (@epenet - #166852)
- Refactor Tuya device diagnostics (@epenet - #166846)
- Fix Huum exception translations (@mettolen - #166778)
- Bump pycasperglow to 1.2.0 (@mikeodr - #166791)
- Use translation key and icons.json for Synology DSM button entities (@piitaya - #166862)
- Skip unchanged connection check on reconfigure flow for Satel Integra (@Tommatheussen - #166695)
- Migrate motioneye to use runtime_data (@epenet - #166848)
- Migrate neato to use runtime_data (@epenet - #166854)
- Rename component to integration in Thomson (@smarthome-10 - #166880)
- Add repair flow when MQTT YAML config is present but the broker is not set up correctly (@jbouwh - #165090)
- Add attribute
group_entitiesto the list of blocked MQTT entity attributes (@jbouwh - #165360) - Add tr4nt0r as codeowner to html5 integration (@tr4nt0r - #166771)
- Fix webhook leak for Telegram bot (@hanwg - #166776)
- Add strict typing to UniFi Access integration (@RaHehl - #166787)
- Unifi Access add reconfiguration flow and refactor validation logic (@RaHehl - #166812)
- Introduce per-source DataUpdateCoordinator for UniFi polling data sources (@Kane610 - #166806)
- Update UniFi Access quality scale: mark fulfilled Gold rules (@RaHehl - #166789)
- Rename component to integration in Opple (@smarthome-10 - #166891)
- Rename component to integration in Sky Hub (@smarthome-10 - #166888)
- Rename component to integration in OhmConnect (@smarthome-10 - #166881)
- Rename component to integration in Panasonic Blu-Ray (@smarthome-10 - #166890)
- Add stale device removal support to UniFi Access (@RaHehl - #166792)
- OpenRouter: Add WebSearch Support (@ab3lson - #164293)
- Add support for web search dynamic filtering for Anthropic (@Shulyaka - #164116)
- Add entity action
html5.send_messageto HTML5 integration (@tr4nt0r - #166349) - Add dynamic device support for UniFi Access door platforms (@RaHehl - #166793)
- Rename component to integration in Fail2Ban (@smarthome-10 - #166901)
- Add troubleshooting documentation for Anthropic integration (@Shulyaka - #166766)
- Remove checkout requirement from PR review skill (@abmantis - #166902)
- Add clean segment support to MQTT vacuum entities (@jbouwh - #166794)
- Rename component to integration in FortiOS (@smarthome-10 - #166887)
- Rename component to integration in Bitcoin (@smarthome-10 - #166882)
- Update datetime selector in Renault ac_start action (@reneboer - #166860)
- Add freshr diagnostics (@SierraNL - #166912)
- Rename component to integration in Arris TG2492LG (@smarthome-10 - #166883)
- Rename component to integration in Linksys Smart Wi-Fi (@smarthome-10 - #166885)
- Use aiohasupervisor for all Supervisor service calls (@mdegat01 - #166558)
- Bump j178/prek-action from 2.0.0 to 2.0.1 (@dependabot - #166924)
- Remove unused hass.data[DOMAIN] in nfandroidtv (@epenet - #166931)
- Migrate notion to use runtime_data (@epenet - #166936)
- Add water_full fault sensor for D825A dehumidifier (@pedroterzero - #166847)
- Migrate netatmo to use runtime_data (@epenet - #166925)
- Migrate nmap_tracker to use runtime_data (@epenet - #166932)
- Migrate nobo_hub to use runtime_data (@epenet - #166934)
- Remove invalid Matter
HeatingCoolingUnitdevice type (@TheJulianJES - #166828) - Adjust Thread network diagnostics prefixes to include double colon (@alexbarcelo - #166520)
- Add last_non_buffering_state media_player state attribute (@emontnemery - #166941)
- Cancel brands rotate_token on shutdown (@cdce8p - #166957)
- Improve SNMP tests and avoid dns lookups (@chemelli74 - #166604)
- Migrate nuki to use runtime_data (@epenet - #166943)
- Migrate nzbget to use runtime_data (@epenet - #166947)
- Fix lingering tasks in nest tests (@cdce8p - #166959)
- Shutdown debouncer in tests (@cdce8p - #166958)
- Add integration_type to opnsense (@Snuffy2 - #166965)
- Fix Shutdown grammar in Synology DSM strings (@piitaya - #166946)
- Bump aiomealie to 1.2.3 (@andrew-codechimp - #166942)
- Add myself to blebox codeowners (@bkobus-bbx - #166966)
- Bump aiomealie to 1.2.3 (@andrew-codechimp - #166942)
- London Underground integration: Add Tram and IFS Cloud Cable Car status (@prpr19xx - #166712)
- Fix lingering tasks in update_coordinator test (@cdce8p - #166968)
- Migrate tilt_ble to use runtime_data (@claw-explorer - #166663)
- Migrate nuheat to use runtime_data (@epenet - #166937)
- Add
html5.dismiss_messageaction to HTML5 integration (@tr4nt0r - #166909) - Document supported features for Anthropic integration (@Shulyaka - #166818)
- Add diagnostics to Anthropic integration (@Shulyaka - #166739)
- Add command compatibility scaffold for Tessie migration (@Bre77 - #166458)
- Improve strings in HTML5 integration (@tr4nt0r - #166985)
- Migrate nightscout to use runtime_data (@epenet - #166927)
- Add reload service to shell_command (@potelux - #166557)
- Rename component to integration in Glances (@smarthome-10 - #167012)
- Rename component to integration in BlinkStick (@smarthome-10 - #167009)
- Rename component to integration in Edimax (@smarthome-10 - #167011)
- Rename component to integration in Denon AVR (@smarthome-10 - #167008)
- Add reload service to shell_command (@potelux - #166557)
- Rename component to integration in Denon Network Receivers (@smarthome-10 - #167006)
- Rename component to integration in Tomato (@smarthome-10 - #167002)
- Rename component to integration in Fido (@smarthome-10 - #166997)
- Rename component to integration in Actiontec (@smarthome-10 - #167004)
- Rename component to integration in EBox (@smarthome-10 - #166996)
- Rename component to integration in Bbox (@smarthome-10 - #166998)
- Rename component to integration in EBox (@smarthome-10 - #166996)
- Rename component to integration in DNS IP (@smarthome-10 - #166993)
- Rename component to integration in SNMP (@smarthome-10 - #166994)
- Update mypy to 1.20.0 (@cdce8p - #167000)
- Add freshr reconfiguration flow (@SierraNL - #166907)
- Rename component to integration in Start.ca (@smarthome-10 - #166989)
- Bump serialx to 1.1.1 (@balloob - #167023)
- Use Tesla Fleet API for Tessie config flow validation (@Bre77 - #167021)
- Migrate google_mail OAuth token refresh exception handling (@Oluwatobi-Mustapha - #165371)
- Use runtime_data in omnilogic integration (@epenet - #167038)
- Use runtime_data in obihai integration (@epenet - #167037)
- Rename component to integration in Aruba (@smarthome-10 - #167035)
- Rename component to integration in TEMPer (@smarthome-10 - #167034)
- Rename component to integration in Radio Thermostat (@smarthome-10 - #167033)
- Rename component to integration in Hyperion (@smarthome-10 - #167032)
- Rename component to integration in Kodi (@smarthome-10 - #167031)
- Rename component to integration in Hikvision (@smarthome-10 - #167030)
- Rename component to integration in Ubiquiti mFi mPort (@smarthome-10 - #166988)
- Rename component to integration in Pushsafer (@smarthome-10 - #166893)
- Use runtime_data in opensky integration (@epenet - #167041)
- Use runtime_data in ourgroceries integration (@epenet - #167043)
- Use runtime_data in osoenergy integration (@epenet - #167042)
- Use runtime_data in opengarage integration (@epenet - #167040)
- Use runtime_data in ondilo_ico integration (@epenet - #167039)
- Use runtime_data in openuv integration (@epenet - #167029)
- Use runtime_data in octoprint integration (@epenet - #167028)
- Migrate Tessie setup and coordinator to tesla_fleet_api (@Bre77 - #167018)
- Validate set_system_mode params in code instead of by schema for Evohome (@zxdavb - #165925)
- Add keyboard text input services to Apple TV integration (@kroehre - #165638)
- Fix
switch_failed_offexception wording inhoneywell(@NoRi2909 - #166987) - Move OVO Energy DataUpdateCoordinator to separate module (@epenet - #167048)
- Simplify PLATFORMS patching in Tuya test (@epenet - #167054)
- Fix patching for DNS queries in Obihai (@chemelli74 - #166790)
- 100% coverage of services for Alexa Devices (@chemelli74 - #165826)
- Add entity descriptions to Tuya camera/fan/vacuum (@epenet - #167056)
- Hassfest requirements.py optimization (@erwindouna - #166514)
- Add ConfigEntry method to get subentries by type (@joostlek - #167055)
- Add fan speed percentage control to SwitchBot Air Purifier (@zerzhang - #166953)
- Fix lingering tasks in condition and trigger tests (@cdce8p - #166967)
- Add Claude Code agent for PR creation (@Bre77 - #160759)
- Fix ToDo List Intents item casing (@djcode - #160177)
- Bump aiounifi to 90 (@cln-io - #166918)
- Add multi-plane support for Forecast.Solar integration (@artspb - #160058)
- netatmo: NDB test addition and camera fix (@farkasdi - #165375)
- Add sensor platform for OpenDisplay (@g4bri3lDev - #164998)
- Add battery sensors to Casper Glow (@mikeodr - #166801)
- Mark entity-disabled-by-default as exempt in sunricher_dali (@niracler - #166861)
- Fix spelling of “Cannot reheat …” in
kitchen_sink(@NoRi2909 - #167082) - Fix spelling of “cannot” in
pooldoseexception string (@NoRi2909 - #167079) - Patch the correct socket method in SNMP (@chemelli74 - #167081)
- Spelling fixes in user-facing strings of
wiz(@NoRi2909 - #167091) - Fix spelling of “cannot” in
azure_storageexception string (@NoRi2909 - #167088) - Fix spelling of “cannot” in
rehlkoexception string (@NoRi2909 - #167092) - Fix spelling of “cannot” in
local_fileerror string (@NoRi2909 - #167089) - Fix one misspelled occurrence of “cannot” in
shelly(@NoRi2909 - #167093) - Add –draft flag to raise-pull-request agent PR creation command (@abmantis - #167068)
- growatt_server: implement reconfiguration flow (Gold) (@johanzander - #165961)
- Add support for energy statistics in waterfurnace integration (@masterkoppa - #166707)
- Make the Claude’s GH reviewer skill a subagent (@abmantis - #167065)
- Revert “Pull out Dropbox integration” (@joostlek - #166995)
- Use subentry helper in WAQI (@joostlek - #167061)
- Simplify claude’s integrations skill (@abmantis - #166903)
- Add firmware update to Ubiquiti airOS (@CoMPaTech - #166913)
- Improve
shellyaction naming consistency (@NoRi2909 - #167102) - Improve
system_logaction naming consistency (@NoRi2909 - #167104) - Replace NINA attributes with sensors (@DeerMaximum - #161882)
- Improve
google_sheetsaction naming consistency (@NoRi2909 - #167107) - Add coordinator to Anthropic for availability check (@Shulyaka - #164615)
- Add Off mode support for water_heater entities in HomeKit (@bahoo - #166836)
- Fix spelling of “cannot” in two user-facing strings of
reolink(@NoRi2909 - #167085) - Bump unifi-discovery to version 1.3.0 (@RaHehl - #167106)
- Migrate pvoutput to use runtime_data (@epenet - #167167)
- Migrate openexchangerates to use runtime_data (@epenet - #167182)
- Add Config Flow to Pico TTS (@rrooggiieerr - #163114)
- Migrate nibe_heatpump to use runtime_data (@epenet - #167181)
- Migrate mutesync to use runtime_data (@epenet - #167180)
- Migrate panasonic_viera to use runtime_data (@epenet - #167171)
- Migrate pushbullet to use runtime_data (@epenet - #167166)
- Migrate picnic to use runtime_data (@epenet - #167151)
- Migrate openhome to use runtime_data (@epenet - #167183)
- Fix propagation of GPS accuracy in person entity (@emontnemery - #167174)
- Remove deprecated LANnouncer integration (@tr4nt0r - #166838)
- Add new state attribute in_zones to device_tracker (@emontnemery - #166573)
- Migrate prosegur to use runtime_data (@epenet - #167161)
- Migrate prusalink to use runtime_data (@epenet - #167164)
- Migrate peco to use runtime_data (@epenet - #167147)
- Propagate the in_zones attribute from device trackers in person entities (@emontnemery - #167192)
- Bump sigstore/cosign-installer from 4.1.0 to 4.1.1 (@dependabot - #167156)
- Fix hydrawise crashes when controllers/zones are added (@justanotherariel - #166708)
- Fix spelling of “cannot” in
climateexception string (@NoRi2909 - #167139) - Migrate permobil to use runtime_data (@epenet - #167170)
- Migrate progettihwsw to use runtime_data (@epenet - #167157)
- Use runtime_data in ovo_energy (@epenet - #167141)
- Add exception translations to Actron Air (@kclif9 - #167159)
- Migrate qbittorrent to use runtime_data (@epenet - #167196)
- Migrate qnap to use runtime_data (@epenet - #167198)
- Fix agreement mismatch and spelling of “cannot” in
nmbs(@NoRi2909 - #167137) - Add manufacturer to Ecowitt device (@joostlek - #167199)
- Bump python-telegram-bot to 22.7 (@tzagim - #167062)
- Fix test_receive_backup test error when run in isolation (@agners - #167204)
- Portainer refactor async_setup (@erwindouna - #166544)
- Bump pykaleidescape to v1.1.5 (@SteveEasley - #167203)
- Add millihertz (mHz) to UnitOfFrequency (@32u-nd - #167087)
- Adjust git commit guidelines for AI agents (@epenet - #167184)
- Add missing mHz docstrings (@32u-nd - #167226)
- Set codeowners for agent configurations (@abmantis - #167222)
- Fix asyncio loop scopes for pytest fixtures (@cdce8p - #166758)
- Add pre-commit hook for copilot instructions (@mxr - #167219)
- Bump hyponcloud to 0.9.3 (@jcisio - #167273)
- Bump py-opendisplay version to 5.9.0 (@g4bri3lDev - #167250)
- Remove unnecessary None checks in Renault numbers and binary sensors (@epenet - #167271)
- Fix spelling of “cannot” in
dwd_weather_warningserror string (@NoRi2909 - #167138) - Fix zwave_js subscribe_rebuild_routes_progress initial event (@wendevlin - #167178)
- Bump pyportainer 1.0.35 (@erwindouna - #167288)
- Remove unnecessary attribute from Renault sensor entity descriptions (@epenet - #167268)
- Bump codecov/codecov-action from 5.5.3 to 6.0.0 (@dependabot - #167267)
- Add missing availability check in device_tracker _async_write_ha_state (@epenet - #167297)
- Clarify ekeybionyx config flow oauth2 implementation handling (@richardpolzer - #167169)
- Allow users to overwrite content type for AI task attachments (@Shulyaka - #167302)
- Use PEP-695 syntax in Renault sensors (@epenet - #167301)
- Refactor None handling renault device_tracker (@epenet - #167298)
- Extract type casting template functions into a type cast Jinja2 extension (@frenck - #167280)
- Refactor None handling in renault diagnostics (@epenet - #167295)
- Matter Pir unoccupied to occupied delay (@lboue - #162435)
- Add prune volumes button to Portainer (@erwindouna - #167314)
- Add opendisplay encryption support (@g4bri3lDev - #167251)
- Bump pyportainer 1.0.36 (@erwindouna - #167319)
- Improve Shopping List action naming consistency (@NoRi2909 - #167248)
- Fix apple_tv RuntimeWarnings in tests (@cdce8p - #167325)
- Pin actions/helpers/info to fix release build (@frenck - #167327)
- Bump aiorussound to 4.10.0 (@noahhusby - #167341)
- Bump habluetooth to 6.0.0 (@bdraco - #167340)
- Extract serialization template functions into a serialization Jinja2 extension (@frenck - #167332)
- Automate device tracker cleanup process for Fritz (@chemelli74 - #166864)
- Fix lingering task in TTS stream override tests (@frenck - #167356)
- Refactor Proxmox async_setup (@erwindouna - #167328)
- 100% coverage of device_tracker for Vodafone Station (@chemelli74 - #165824)
- Bump dbus-fast to 4.0.4 (@bdraco - #167135)
- Add kill button to Portainer (@erwindouna - #167277)
- Mark icon-translations as exempt in sunricher_dali (@niracler - #166857)
- Change attribute that is used as unique ID for lunatone (@MoonDevLT - #165200)
- Add battery and supply voltage sensors to traccar_server (@weltmeyer - #167247)
- Use exception translations in sunricher_dali (@niracler - #166858)
- Add manual and remaining watering time to Gardena Bluetooth for Aquaprecise (@jonilala796 - #167381)
- Bump xiaomi-ble to 1.10.1 (@lzghzr - #167384)
- Bump subarulink to 0.7.19 (@G-Two - #167386)
- Bump pysmlight to 0.3.2 (@tl-sl - #167421)
- Bump python-roborock from 5.0.0 to 5.3.0 (@CSdread - #167437)
- Fix blocking SSL context creation in unifi_access integration (@RaHehl - #167422)
- Automatic caching support for Anthropic (@Shulyaka - #167436)
- Fix overseerr test importing from
future.backports(@JamieMagee - #167458) - Use mark.usefixtures for unreferenced fixtures in Evohome (@zxdavb - #167467)
- Add
mastodon.update_profileaction to Mastodon integration (@tr4nt0r - #167444) - Add microwave to some sensors’ related appliance types (@Diegorro98 - #167501)
- Add coordinator update after press call in Portainer (@erwindouna - #167497)
- Refactor async_setup in Firefly III (@erwindouna - #167496)
- Migrate wifi switch unique_id for Fritz (@chemelli74 - #166751)
- Update IQS to gold for Fritz (@chemelli74 - #167358)
- Bump github/codeql-action from 4.32.6 to 4.35.1 (@dependabot - #167495)
- Bump home-assistant/actions from 5f5b077d63a1e4c53019231409a0c4d791fb74e5 to 5752577ea7cc5aefb064b0b21432f18fe4d6ba90 (@dependabot - #167494)
- Bump pyrainbird to 6.3.0 (@allenporter - #167493)
- OpenRouter: Update quality scale (@ab3lson - #166921)
- Fix flaky fire_callbacks tests in casper_glow (@mikeodr - #167418)
- Migrate Fitbit user profile fetching to use fitbit-web-api (@allenporter - #167480)
- Add notify_on_use param to Schlage add_code service (@frostyrose - #167402)
- Add Tool search tool to Anthropic (@Shulyaka - #167484)
- Fix modem_callerid test_setup_entry mock (@JamieMagee - #167461)
- Revert “Add Remote platform to SMLIGHT Integration (#166728)” (@tl-sl - #167424)
- Add better pause behaviour to Portainer (@erwindouna - #167453)
- Remove if statements in Sonos Media Player Tests (@PeteRager - #167210)
- Promote Anthropic to Silver (@Shulyaka - #167361)
- Improve Google Calendar action naming consistency (@NoRi2909 - #167143)
- Improve
google_photosaction naming consistency (@NoRi2909 - #167146) - Handle access.logs.add events for UniFi Access G6 Pro Entry (@RaHehl - #167362)
- Extract functional utility template functions into a functional Jinja2 extension (@frenck - #167357)
- Fix name of
shopping_list.add_itemaction (@NoRi2909 - #167352) - Improve Profiler action naming consistency (@NoRi2909 - #167349)
- Fix polling pause in Husqvarna Automower (@Thomas55555 - #167397)
- Victron GX communication center integration (@tomer-w - #156090)
- Add resume button to Proxmox qemu (@erwindouna - #167329)
- Replace “custom” with “community” in
homeassistant(@NoRi2909 - #167507) - Replace ‘custom component’ with ‘community integration’ in
bmw_connected_drive(@NoRi2909 - #167505) - Casper Glow: add dimming end time (@mikeodr - #166769)
- Update “custom component” to “community integration” in Shelly (@NoRi2909 - #167515)
- Bump python-roborock from 5.3.0 to 5.5.1 (@lboue - #167520)
- Add sensor entities for Roborock q10 s5+ (@lboue - #166120)
- Mark Huum documenation quality scale items done (@mettolen - #167413)
- Always use quality scale shorthand rule notation (@joostlek - #167516)
- Tado add rate limit indicator (@erwindouna - #164132)
- Improve Google Cast action naming consistency (@NoRi2909 - #167152)
- Add support for hiding walls and rooms in map rendering (@johnmph - #162053)
- Move
program_runningto a property at Home Connect sensors (@Diegorro98 - #167523) - Allow listing non-USB serial ports with
scan_serial_ports(@puddly - #166029) - Bump pyportainer 1.0.37 (@erwindouna - #167535)
- Bump victron-mqtt to 2026.4.1 (@tomer-w - #167547)
- Improve Persistent Notification action naming consistency (@NoRi2909 - #167531)
- Improve Activity (
logbook) action naming consistency (@NoRi2909 - #167533) - Refactor enums in Portainer (@erwindouna - #167540)
- Use retry_after for UpdateFailed exception in Picnic (@codesalatdev - #167525)
- Proxmox refactor coordinator typing (@erwindouna - #167500)
- Use fixtures for all entity IDs in Evohome tests (@zxdavb - #167479)
- Replace “custom” with “community” in
analytics_insights(@NoRi2909 - #167506) - Remove unnecessary Renault entity description mixin (@epenet - #167579)
- Reject backup uploads with invalid filenames (@agners - #167211)
- Improve typing in Renault number descriptions (@epenet - #167580)
- Improve typing in Renault select descriptions (@epenet - #167578)
- Improve typing in Renault binary_sensor descriptions (@epenet - #167577)
- Improve typing in Renault sensor descriptions (@epenet - #167571)
- Migrate qnap_qsw to use runtime_data (@epenet - #167200)
- Validate entity ID domain (@arturpragacz - #167228)
- Align Fritz test data mock to real implementation (@chemelli74 - #167511)
- Bump victron-mqtt to 2026.4.2 (@tomer-w - #167565)
- Bump aiohomeconnect to 0.34.0 (@Diegorro98 - #167592)
- Add websocket subscription support for calendar events (@MindFreeze - #156340)
- Opnsense swap to aiopnsense (@HarlemSquirrel - #167026)
- Bump zcc-helper to 3.8 (@markhannon - #167555)
- Enable minimal thinking budget by default for Anthropic integration (@Shulyaka - #167593)
- Add light sensor button to switchbot air purifier (@zerzhang - #167134)
- Add unit ‘µA’ for the units of electric current (@Phunkafizer - #166786)
- Add select entities for Roborock q10 s5+ (@lboue - #166142)
- Add read-only MCP Assist context snapshot resource (@aero-oli - #167396)
- Refactor to active_containers (@erwindouna - #167529)
- Add contour and position names to gardena (@elupus - #167512)
- Improve Remote action naming consistency (@NoRi2909 - #167382)
- Add initial support for PlayerOptions: Number entities to Music Assistant (@fmunkes - #162669)
- Add support for storing OpenAI conversation responses (@aero-oli - #165723)
- Bump securetar to 2026.4.1 (@emontnemery - #167617)
- Move logging for loading/unloading config entry to integration logger (@elupus - #167415)
- Bump py-unifi-access to 1.1.5 (@RaHehl - #167633)
- Bump pyportainer 1.0.38 (@erwindouna - #167627)
- Use runtime_data in rainforest_eagle integration (@epenet - #167652)
- Improve type hints in ipma system_health (@epenet - #167670)
- Add diagnostics support to tplink_omada (@Mattheinrichs - #166802)
- Add DHCP discovery to MyStrom (@joostlek - #167084)
- Remove duplicated FlussConfigEntry type aliases (@epenet - #167676)
- Use runtime_data in recollect_waste integration (@epenet - #167655)
- Cleanup unused renault base entity method (@epenet - #167643)
- Use runtime_data in renson integration (@epenet - #167664)
- Use runtime_data in risco integration (@epenet - #167659)
- Bump actronneoapi to 0.5.0 (@kclif9 - #167669)
- Extract version template function into a version Jinja2 extension (@frenck - #167172)
- Use runtime_data in ruckus_unleashed integration (@epenet - #167662)
- Use runtime_data in roomba integration (@epenet - #167667)
- Use runtime_data in romy integration (@epenet - #167665)
- Use runtime_data in rympro integration (@epenet - #167663)
- Use runtime_data in rova integration (@epenet - #167661)
- Use runtime_data in roon integration (@epenet - #167660)
- Use suggested uom in Renault charging power sensor (@epenet - #167646)
- Victron GX reauthentication-flow (@tomer-w - #167614)
- Add diagnostics to Actron Air (@kclif9 - #167145)
- Use runtime_data in ridwell integration (@epenet - #167658)
- Use runtime_data in Rabbit Air (@epenet - #167649)
- Use runtime_data in radiotherm (@epenet - #167650)
- Bump pylutron-caseta to 0.28.0 (@davidyen1124 - #167642)
- Use runtime_data in rdw integration (@epenet - #167654)
- Unifi access protect api key hint (@RaHehl - #167404)
- Add Infrared platform to SMLIGHT (@tl-sl - #167568)
- Update template fan tests to use new framework (@Petro31 - #167625)
- Extract arithmetic template filters into the math Jinja2 extension (@frenck - #167309)
- Mark Govee local devices unavailable when they stop responding (@teancom - #167566)
- Update UniFi Access quality scale: mark documentation rules as done (@RaHehl - #166898)
- Update types packages (@cdce8p - #167700)
- Expose async serial port scanning helper in USB integration (@puddly - #167706)
- Redact Z-Wave add-on options sensitive error details (@Oluwatobi-Mustapha - #167239)
- Add standard event type for doorbell event entities (@abmantis - #167630)
- Bump pybotvac to 0.0.29 (@epenet - #167758)
- Bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 (@dependabot - #167648)
- Extract config entry template functions into a config entry Jinja2 extension (@frenck - #167360)
- Bump brother to 6.1.0 (@bieniu - #167768)
- Refactor Ultima fixtures to reduce duplication (@tl-sl - #167731)
- Bump lunatone-rest-api-client to 0.9.0 (@MoonDevLT - #167762)
- Anthropic pretty device model name (@Shulyaka - #167772)
- Use runtime_data in syncthing integration (@epenet - #167748)
- Use runtime_data in Subaru integration (@epenet - #167747)
- Use runtime_data in starline integration (@epenet - #167746)
- Use runtime_data in somfy_mylink integration (@epenet - #167745)
- Use runtime_data in snapcast integration (@epenet - #167744)
- Use runtime_data in smart_meter_texas integration (@epenet - #167743)
- Use runtime_data in sharkiq integration (@epenet - #167741)
- Add missing exception string from smlight IR platform (@tl-sl - #167784)
- Update pytest warnings filter (@cdce8p - #167703)
- Add color modes to Lunatone light entity (@MoonDevLT - #167574)
- Fix “IR emitter” sentence case in SMLIGHT string (@tl-sl - #167684)
- geniushub: add water heater platform tests (@wibbit - #167763)
- Fix SwitchBot encrypted device method selection not resetting on back (@zerzhang - #167749)
- Bump anthropic to 0.92.0 (@Shulyaka - #167793)
- Bump victron-mqtt to 2026.4.3 (@tomer-w - #167787)
- Use runtime_data in seventeentrack integration (@epenet - #167737)
- Make Weheat energy output TOTAL instead of TOTAL_INCREASING (@barryvdh - #167761)
- Bump lunatone-rest-api-client to 0.9.1 (@MoonDevLT - #167804)
- Disable pilight integration (@epenet - #167760)
- Add frequency unit conversion (@Lamarqe - #167537)
- Handle boolean charging state in Tessie sensor (@Bre77 - #165172)
- Add reauthentication flow to Autoskope integration (@mcisk - #167688)
- Add zeroconf discovery to Lunatone integration (@MoonDevLT - #167582)
- Bump weheat to 2026.4.8 (@barryvdh - #167807)
- Update template event tests to use new framework (@Petro31 - #167808)
- Update template button tests to use new framework (@Petro31 - #167806)
- Update template alarm control panel tests to use new framework (@Petro31 - #167799)
- Update template binary sensor tests to use new framework (@Petro31 - #167704)
- iaqualink: don’t return False in async_setup_entry (@flz - #167812)
- Change default icon of Evohome’s WaterHeater entities (@zxdavb - #167818)
- Add configuration URL to Comelit (@chemelli74 - #167813)
- List serial ports via USB integration helpers (A-P) (@puddly - #167695)
- Update template select tests to use new framework (@Petro31 - #167825)
- Update template number tests to use new framework (@Petro31 - #167823)
- Update template cover tests to use new framework (@Petro31 - #167686)
- Entity translation for Anthropic integration (@Shulyaka - #166725)
- Update template vacuum tests to use new framework (@Petro31 - #167830)
- Update template update tests to use new framework (@Petro31 - #167828)
- Update template switch tests to use new framework (@Petro31 - #167826)
- Tidy up Evohome code, and improve docstrings (@zxdavb - #167827)
- Use offline command for non-UTF-8 stdout test (@JamieMagee - #167466)
- Generate translations optimization (@erwindouna - #166483)
- Victron GX binary_sensor platform (@tomer-w - #167527)
- Fix run_then_background in service intent handler (@arturpragacz - #167817)
- Implement reconfiguration flow for Huum integration (@mettolen - #167711)
- Bump aioimmich to 0.14.0 (@mib1185 - #167833)
- Update template lock tests to use new framework (@Petro31 - #164621)
- Add initial support for PlayerOptions: Text entities to Music Assistant (@fmunkes - #167832)
- Victron GX select platform (@tomer-w - #167675)
- Fix Actron Air quality scale rule statuses (@kclif9 - #167149)
- Add favorite collection to immich media source (@mib1185 - #167841)
- Update Growatt quality scale: mark docs rules done and exempt discovery (@johanzander - #166075)
- Add delayed start as an operation state that flags as program running at Home Connect (@Diegorro98 - #167549)
- Add 2fa support in picnic integration (@xZise - #167636)
- Allow trigger based template entities to skip option validation (@Petro31 - #167708)
- List serial ports via USB integration helpers (Q-Z) (@puddly - #167701)
- Add event platform for OpenDisplay (@g4bri3lDev - #167393)
- Add party mode to Russound RIO (@noahhusby - #167342)
- Don’t use async_update_reload_and_abort with update listeners in tele… (@gjohansson-ST - #167696)
- Govee light local availability test cleanup (@teancom - #167702)
- KNX: Configure entity expose from config panel UI (@farmio - #167692)
- Add Duco integration (@ronaldvdmeer - #167220)
- Add VoIP sensors to sfr_box (@robin-thoni - #166609)
- Add support for sound modes to Music Assistant. (@fmunkes - #167838)
- Improve services.yaml in Evohome to improve UI/UX (@zxdavb - #167788)
- Add initial support for PlayerOptions: Switch entities to Music Assistant (@fmunkes - #167829)
- Set assumed state on Renault number entity (@epenet - #167644)
- Tessie: use Vehicle methods for button commands (@Bre77 - #167193)
- Include indirect automation references in device view (@norkudev - #167719)
- Add HomeKit AirPlay Enable (Ecobee) (@bman46 - #159564)
- Use runtime_data in Snooz (@epenet - #167867)
- Add support for deletion of stale devices for Squeezebox (@peteS-UK - #159848)
- Bump docker/login-action from 4.0.0 to 4.1.0 (@dependabot - #167860)
- Bump dawidd6/action-download-artifact from 19 to 20 (@dependabot - #167861)
- Bump aioesphomeapi to 44.13.1 (@bdraco - #167855)
- Use runtime_data in surepetcare integration (@epenet - #167877)
- Use runtime_data in streamlabswater (@epenet - #167874)
- Load lovelace resource collection eagerly during setup (@renaudallard - #165773)
- Use runtime_data in switchbee (@epenet - #167878)
- Use runtime_data in switchbot_cloud integration (@epenet - #167879)
- Replace
dingwith newringevent in Ring integration doorbell (@abmantis - #167728) - Add fabric index fields to Matter lock user and credential responses (@piitaya - #167875)
- Add child lock and wireless charging switches for air purifier (@zerzhang - #167140)
- Use runtime_data in sanix integration (@epenet - #167856)
- Use runtime_data in sia integration (@epenet - #167857)
- Use runtime_data in simplisafe integration (@epenet - #167858)
- Use runtime_data in skybell integration (@epenet - #167862)
- Use runtime_data in Slack (@epenet - #167864)
- Use runtime_data in sleepiq integration (@epenet - #167865)
- Use runtime_data in srp_energy integration (@epenet - #167870)
- Use runtime_data in soundtouch integration (@epenet - #167869)
- Use runtime_data in system_bridge integration (@epenet - #167880)
- Use runtime_data in vilfo integration (@edenhaus - #167886)
- smartthings: add Samsung OCF AC purify switch (@andrevza - #167705)
- Mark docs-examples and docs-known-limitations as done for victron_gx (@tomer-w - #167866)
- Add ability to load custom Tuya quirks (@epenet - #166952)
- Use runtime_data in litejet integration (@edenhaus - #167888)
- Use runtime_data in soma integration (@edenhaus - #167890)
- Make the scaffold script ask for the integration type (@antegallya - #167725)
- Use runtime_data in launch_library integration (@edenhaus - #167887)
- Temporarily stop the Z2M app when installing firmwares (@puddly - #163958)
- Use runtime_data in tradfri integration (@epenet - #167896)
- Use runtime_data in tesla_wall_connector (@epenet - #167893)
- Add Preset button support for Bond cover devices (@abrainwood - #167881)
- Victron GX switch platform (@tomer-w - #167859)
- Bump aiorussound to 5.0.0 (@noahhusby - #167914)
- iaqualink: move custom update logic to DataUpdateCoordinator (@flz - #167816)
- Velbus reconfigure fix (@StefCoene - #167471)
- Add faulty/anomaly binary sensors to Comelit (@chemelli74 - #167201)
- Add support for encrypted connection to Satel Integra (@Tommatheussen - #167372)
- Add Buttons to natively reset the mode of Evohome entities (@zxdavb - #167550)
- Bump tuya-device-handlers to 0.0.17 (@epenet - #167904)
- Bump fluss-api to 0.2.4 (@Marcello17 - #167680)
- Fix config validation in trigger and condition tests (@emontnemery - #167683)
- Narrow log check on ring event test (@abmantis - #167927)
- Add reauthentication and reconfiguration flows in Google Weather to reach platinum (@tronikos - #166106)
- Allow frontend-handled issues to omit description in strings (@arturpragacz - #167928)
- Proxy Jellyfin artwork through HA so thumbnails work over HTTPS (@potelux - #167238)
- Add remote platform to Vizio integration (@raman325 - #165820)
- Update Liebherr to platinum (@mettolen - #167836)
- Promote victron_gx integration to silver quality scale (@tomer-w - #167789)
- Refactor Vizio tests: shared fixtures, snapshot_platform, reduced parametrize (@raman325 - #167935)
- Bump python-duco-client to 0.3.0 (@ronaldvdmeer - #167936)
- Z-Wave.me: Make Light support the Transition feature (@Tomeamis - #167840)
- Check if model exists in Anthropic config flow (@Shulyaka - #167844)
- Set integer display precision for Yardian duration sensors (@barneyonline - #165896)
- Bump music-assistant-client to 1.3.5 (@fmunkes - #167947)
- Bump bleak-esphome to 3.7.3 (@bdraco - #167953)
- Bump aioesphomeapi to 44.13.2 (@bdraco - #167952)
- Unlink tomorrowio coordinator from config entry (@epenet - #167901)
- Bump unifi-discovery to version 1.4.0 (@RaHehl - #167958)
- Follow-up to player options: text entities in Music Assistant (@fmunkes - #167962)
- Follow-up to player options: number entities in Music Assistant (@fmunkes - #167963)
- Add LoginRequired exception handling to Teslemetry coordinators (@Bre77 - #167959)
- Follow-up to player options: switch entities in Music Assistant (@fmunkes - #167964)
- Follow up to adding support for sound modes to Music Assistant (@fmunkes - #167929)
- Remove unused constant from Evohome’s const.py (@zxdavb - #167969)
- Improve iaqualink reauthentication flow (@flz - #167931)
- Bump aiohomeconnect to 0.36.0 (@Diegorro98 - #167973)
- Bump uiprotect to 10.2.6 (@RaHehl - #167978)
- Add remote start/stop button for supported Subaru vehicles (@masterkoppa - #167100)
- Add base_coords for OptionsFlow and action call in waze_travel_time (@eifinger - #166642)
- Bump aioesphomeapi to 44.13.3 (@bdraco - #167966)
- Add eurotronic cometblue integration (@rikroe - #165626)
- Fix gardena entity categories and percentage values (@elupus - #167986)
- Mark entity-translations rule as done for Twente Milieu (@frenck - #168001)
- Mark exception-translations rule as done for Peblar (@frenck - #167997)
- Add DHCP discovery for known Elgato devices (@frenck - #168002)
- Set parallel updates to 0 for RDW platforms (@frenck - #168003)
- Remove unused service constants from Twente Milieu (@frenck - #168000)
- Translate exceptions raised by Elgato (@frenck - #168004)
- Translate coordinator exceptions for Twente Milieu (@frenck - #168005)
- Extract entity template functions into an entity Jinja2 extension (@frenck - #167992)
- Handle connection errors in Peblar zeroconf confirm step (@frenck - #167998)
- Set parallel updates for Tailwind platforms (@frenck - #168025)
- Add reconfiguration flow to Tailwind (@frenck - #168033)
- Fix untranslated button error in Tailwind (@frenck - #168031)
- Translate coordinator exceptions for Tailwind (@frenck - #168027)
- Add Heatbox3 to ViCare unsupported devices list (@lackas - #168067)
- Set parallel updates to 0 for Sensor.Community (@frenck - #168063)
- Improve eurotronic_cometblue tests (@rikroe - #168046)
- Fix llm tool results mutation (@Shulyaka - #167485)
- Add unifi_discovery integration, migrate unifiprotect discovery (@RaHehl - #168030)
- Bump PySrDaliGateway to 0.20.4 (@niracler - #168078)
- Add support for KM7576 in Miele integration (@xZise - #168069)
- Replace hacf-fr by hacf-fr reviewers team (@Giga77 - #168056)
- Bump mastodon.py to 2.2.1 (@andrew-codechimp - #168084)
- Bump python-melcloud to 0.1.3 (@RaHehl - #168086)
- Remove hacf-fr (@Giga77 - #168054)
- Remove hacf-fr from Synology DSM (@Giga77 - #168039)
- Remove hacf-fr from Epic Games Store (@Giga77 - #168038)
- Add hacf/reviewers as codeowners to Freebox (@Giga77 - #168050)
- Add reconfiguration flow to Elgato (@frenck - #168036)
- Set parallel updates to 0 for Met.no (@frenck - #168094)
- Update mypy to 1.20.1 (@cdce8p - #168100)
- Update pydantic pin to 2.13.0 (@cdce8p - #168103)
- Add quote approval policy to Mastodon post service (@andrew-codechimp - #168092)
- Adjust logbook timestamp handling (@emontnemery - #168079)
- Translate coordinator exceptions for Sensor.Community (@frenck - #168048)
- Translate coordinator exceptions for RDW (@frenck - #168044)
- Add missing return after reloading in telegram_bot (@gjohansson-ST - #168114)
- Remove redundant _attr_media_image_remotely_accessible from Jellyfin (@potelux - #168112)
- Set parallel updates to 0 for Apple TV binary sensor (@frenck - #168116)
- Add button platform to eurotronic_cometblue (@rikroe - #168120)
- Update pytest to 9.0.3 (@cdce8p - #168132)
- Bump pynordpool to 0.4.0 (@gjohansson-ST - #168130)
- Update asyncinotify to 4.4.4 (@cdce8p - #168141)
- Bump pyseventeentrack to 1.1.3 (@shaiu - #168135)
- Improve logbook parent context handling (@emontnemery - #167036)
- Fix generic_thermostat context handling (@emontnemery - #168080)
- Deduplicate installation method repair tests (@emontnemery - #168157)
- Move template state infrastructure into a dedicated states module (@frenck - #167996)
- Revert “Replace “custom” with “community” in
homeassistant” (@thecode - #168161) - Add discovery support to unifi_access via unifi_discovery (@RaHehl - #168085)
- Bump homematicip to 2.8.0 (@lackas - #168168)
- Revert “Update “custom component” to “community integration” in Shelly” (@thecode - #168162)
- Add additional codeowner to ViCare integration (@CFenner - #168169)
- Add MariaDB 11.4 to CI tests (@sairon - #168111)
- Revert “Replace ‘custom component’ with ‘community integration’ in
bmw_connected_drive” (@thecode - #168159) - Fix missing async_request_call in single-entity service call path (@arturpragacz - #168171)
- Fix octoprint ResourceWarnings (@cdce8p - #168188)
- Fix mcp_server ResourceWarnings (@cdce8p - #168187)
- Fix homekit ResourceWarnings (@cdce8p - #168185)
- Fix go2rtc ResourceWarnings (@cdce8p - #168184)
- Fix backup test ResourceWarnings (@cdce8p - #168180)
- Mark entity-translations and icon-translations as done for Actron Air (@kclif9 - #167150)
- Fix test fixture tests ResourceWarning (@cdce8p - #168183)
- Fix matrix ResourceWarning (@cdce8p - #168186)
- Revert “Replace “custom” with “community” in
analytics_insights” (@thecode - #168160) - MeteoFrance - Add wind gusts for hourly forecast (re) (@vingerha - #168166)
- Use runtime_data in plaato integration (@edenhaus - #167900)
- Fix unifi_discovery deepcopy crash on Python 3.14 (@RaHehl - #168153)
- Add energy backfill support for waterfurnace (@masterkoppa - #167955)
- Add diagnostics platform to Sunricher DALI integration (@niracler - #168074)
- Add remote conditions (@emontnemery - #167750)
- Add todo conditions (@emontnemery - #167752)
- Add sensor platform to Duco integration (@ronaldvdmeer - #167920)
- Fix mqtt test ResourceWarnings (@cdce8p - #168182)
- Add binary sensor platform for MELCloud ATW devices (@RaHehl - #168128)
- iaqualink: enable _attr_has_entity_name (@flz - #167810)
- Translate coordinator exceptions for PVOutput (@frenck - #168076)
- Add send_message_draft action to telegram_bot (@Shulyaka - #165682)
- Add Renovate config for allow-listed Python dependency updates (@frenck - #168192)
- Refine Renovate config with built-in manager and review follow-ups (@frenck - #168225)
- Split hassio data coordinator and add dedicated stats coordinator (@agners - #167080)
- Disable Renovate vulnerability alerts flow (@frenck - #168233)
- Bump serialx to 1.2.2 (@balloob - #168229)
- Update freezegun to 1.5.5 (@renovate - #168236)
- Update yamllint (@renovate - #168242)
- Update syrupy to 5.1.0 (@renovate - #168241)
- Add diagnostics to Duco integration (@ronaldvdmeer - #168231)
- Add native DHW service to Evohome (@zxdavb - #167359)
- Improve setup exception handling in ruckus_unleashed (@lanrat - #168014)
- Refactor Lutron setup logic (@cdheiser - #167993)
- Add feeder meal plan actions to tuya (@FredrikM97 - #161488)
- Add test for LoginError reauth in FreshrReadingsCoordinator (@SierraNL - #168022)
- Wait for complete set of product data before accepting gardena device (@elupus - #166481)
- Add FreshrEntity base class (@SierraNL - #168023)
- Set parallel updates for Rituals Perfume Genie platforms (@frenck - #168042)
- Fresh-r integration: Get Quality Scale to Platinum (@SierraNL - #167148)
- Modernize reauth flow in ruckus_unleashed (@lanrat - #168013)
- Git ignore Claude worktrees (@balloob - #168247)
- Update pylint-per-file-ignores to 3.2.1 (@renovate - #168243)
- Bump aiorussound to 5.0.1 (@noahhusby - #168255)
- Update codespell (@renovate - #168235)
- Update orjson to 3.11.8 (@renovate - #168259)
- Update coverage to 7.13.5 (@renovate - #168238)
- Update pytest-cov to 7.1.0 (@renovate - #168267)
- Update SQLAlchemy to 2.0.49 (@renovate - #168260)
- Add update conditions (@emontnemery - #167751)
- Deduplicate toggle entity condition tests (@emontnemery - #168195)
- Scrape sub config entry (@gjohansson-ST - #141389)
- Improve timer tests (@emontnemery - #168277)
- Capitalize “REST” abbreviation in
scrapeerror messages (@NoRi2909 - #168280) - Update pytest-sugar to 1.1.1 (@renovate - #168270)
- Exclude unavailable and unknown in trigger first and last checks (@emontnemery - #168224)
- Revert “Add last_non_buffering_state media_player state attribute (#166941)” (@emontnemery - #168285)
- Update voluptuous-openapi to 0.3.0 (@renovate - #168275)
- Ensure
extra_fieldsin Z-Wave automation config are strings (@AlCalzone - #168281) - Add async_on_create_entry method to create config entries (@gjohansson-ST - #155016)
- Add test coverage for add_job and fix docstring (@justanotherariel - #168291)
- Use pip to install dynamically extracted version from requirements.txt (@edenhaus - #168246)
- Update pytest-github-actions-annotate-failures to 0.4.0 (@renovate - #168269)
- Update respx to 0.23.1 (@renovate - #168272)
- Update attrs to 26.1.0 (@renovate - #168276)
- Add additional media_player triggers (@emontnemery - #156927)
- Fix climate trigger labs flag test (@emontnemery - #168299)
- Improve type annotations and remove unused code in mobile_app (@emontnemery - #168298)
- Optimize add_job to skip double-deferral for @callback targets (@justanotherariel - #168198)
- Simplify raise-pull-request agent push step (@epenet - #167739)
- Switch USB integration to list serial ports with serialx (@puddly - #167615)
- Fix minor issues in MQTT tests (@jbouwh - #168303)
- Migrate hdmi_cec to async (@justanotherariel - #168306)
- Update twentemilieu to 3.0.0 (@frenck - #168313)
- Extend Renovate allowlist with common packages (@frenck - #168295)
- Migrate remaining Core integrations from pyserial to serialx (@puddly - #168325)
- Update fnv-hash-fast to 2.0.2 (@renovate - #168327)
- Update PyTurboJPEG to 1.8.3 (@renovate - #168329)
- Add duration to state based entity triggers (@emontnemery - #167740)
- Migrate demo image_processing to async (@justanotherariel - #168315)
- Update infrared-protocols to 1.2.0 (@renovate - #168335)
- Add duration to more triggers (@emontnemery - #168337)
- Add SerialSelector (@balloob - #168263)
- Bump docker/build-push-action from 7.0.0 to 7.1.0 (@dependabot - #168338)
- Update audioop-lts to 0.2.2 (@renovate - #168326)
- Bump python-duco-client to 0.3.1 (@ronaldvdmeer - #168341)
- Bump waterfurance to 1.6.5 (@masterkoppa - #168328)
- Update PyJWT to 2.12.1 (@renovate - #168239)
- Update xmltodict to 1.0.4 (@renovate - #168330)
- Add state based condition tests (@emontnemery - #168349)
- Update lru-dict to 1.4.1 (@renovate - #168336)
- Update PyTurboJPEG to 2.2.0 (@renovate - #168354)
- Update home-assistant-bluetooth to 2.0.0 (@renovate - #168353)
- Bump pyaxencoapi to 1.0.7 (@l-pr - #168286)
- Fix sonos availability (@juergenschorb - #161024)
- Fix synology_dsm test for Python 3.14.3 (@justanotherariel - #168359)
- Just copy explicit files in the Dockerfile (@edenhaus - #168197)
- Add weheat standby electricity usage (@barryvdh - #168363)
- Update pydantic to 2.13.1 (@cdce8p - #168311)
- Extract dynamically package version at build time in hassfest image (@edenhaus - #168347)
- Check if serialx is pinned (@joostlek - #168358)
- Add quality scale tracking for UniFi Network integration (@RaHehl - #168125)
- Remove bind_hass usage (@arturpragacz - #168369)
- Deprecate Evohome reset services and corresponding climate preset (@zxdavb - #167975)
- Unifi access doorbell event type (@RaHehl - #168316)
- Fix helper tests for Python 3.14.3 (@justanotherariel - #168355)
- Add duration to state based entity conditions (@emontnemery - #168348)
- Fix Z-Wave connection string for encrypted ESPHome proxies (@AlCalzone - #168370)
- Fix DLNA local file playback for Sony TA-AN1000 by returning content type for HEAD requests (@sanpoChew - #165807)
- Improve scope discovery abbreviation checking for MQTT config options (@jbouwh - #168302)
- Fix shelly test RuntimeWarnings (@cdce8p - #168380)
- Add sensor platform to eurotronic_cometblue (@rikroe - #168118)
- Implement batched service call (@arturpragacz - #168175)
- Add Denon rs232 integration (@balloob - #166923)
- Add heat/cool dmsr device support (@devsnek - #168279)
- Create a battery range sensor for switchbot presence sensor (@zerzhang - #159096)
- Migrate Twente Milieu sensor unique IDs to snake_case and domainless (@frenck - #168384)
- Bump glances-api version (@emlove - #168389)
- Add total disk size to glances as an entity (@emlove - #168131)
- Add
release_urlfor Shelly Wall Display devices (@bieniu - #168381) - Add tests asserting air_quality trigger features (@emontnemery - #168377)
- Use the python version from .pyton-version file for hassfest image (@edenhaus - #168368)
- Remove device tracker and person automations (@emontnemery - #168406)
- Add tests asserting trigger features (@emontnemery - #168407)
- Update wled to v0.22.0 (@frenck - #168390)
- Add a missing test of set_zone_override service to Evohome (@zxdavb - #168053)
- Update infrared-protocols to 1.3.0 (@renovate - #168401)
- Bump actions/upload-artifact from 7.0.0 to 7.0.1 (@dependabot - #168408)
- Add Maintenance dashboard (@Brookke - #168392)
- Bump actions/github-script from 8.0.0 to 9.0.0 (@dependabot - #168339)
- Add test for dynamic notify entities creation and removal in PlayStation Network integration (@tr4nt0r - #167109)
- Update afsapi to v1.0.0 (@wlcrs - #168414)
- Add USB support to Russound RIO (@noahhusby - #167943)
- Victron GX number platform support (@tomer-w - #167709)
- Lutron Keypad LEDs as Select entities (@cdheiser - #165876)
- Add Wi-Fi signal strength diagnostic sensor to Duco (@ronaldvdmeer - #168290)
- Deprecate
evohome.set_system_modecalls without anentity_id(@zxdavb - #166727) - Add pm25 sensor for switchbot air purifier us model (@zerzhang - #167175)
- Use play_caps to determine currently available features (@wlcrs - #168421)
- Isolate Evohome’s dispatcher framework to its controller class (@zxdavb - #168395)
- Add Myneomitis climate entity (@l-pr - #163937)
- Victron GX time platform (@tomer-w - #167916)
- Fix wording in deprecation repair strings in Evohome (@zxdavb - #168436)
- Catch HomeAssistantError in ZHA migration retry loops (@agners - #168420)
- Remove _enable_turn_on_off_backwards_compatibility teslemetry (@rrooggiieerr - #168333)
- Handle specific connection errors for Satel Integra (@Tommatheussen - #168442)
- Add UniFi Access lock rule service (@imhotep - #167949)
- Automatically start subentry flow when creating a scrape config entry (@gjohansson-ST - #168437)
- Add reconfigure to Scrape subentry flows (@gjohansson-ST - #168428)
- Add repeat and shuffle support to frontier_silicon (@wlcrs - #168433)
- Use DoorbellEventType.RING in unifiprotect (@RaHehl - #168317)
- Add teleinfo integration for French electricity meters (@esciara - #167554)
- Add EARN-E P1 Meter integration (@Miggets7 - #164412)
- Add new sensor entities for MELCloud Air-to-Water (ATW/Ecodan) heat pump devices (@RaHehl - #168105)
- Add MAC filter option to ruckus integration (@lanrat - #164706)
- Add Kiosker integration (@Claeysson - #164543)
- Remove inactive codeowner from jvcprojector (@SteveEasley - #167451)
- Use model info from API for Maximum tokens in Anthropic config flow (@Shulyaka - #167941)
- Bump victron-mqtt to 2026.4.17 (@tomer-w - #168435)
- Allow removing devices that are no longer available in fjaraskupan (@elupus - #167937)
- Use model info from API for Anthropic (@Shulyaka - #168459)
- Bump velbusaio to 2026.4.1 (@cereal2nd - #168473)
- Get deprecated Anthropic models from SDK (@Shulyaka - #168464)
- Refactor how Evohome allocates names and IDs (@zxdavb - #168485)
- Bump anthropic to 0.96.0 (@Shulyaka - #168487)
- Add Claude Opus 4.7 support (@Shulyaka - #168496)
- husqvarna_automower_ble: Wait for product data (@alistair23 - #168426)
- Include uid, recurrence_id, and rrule in calendar event subscription data (@balloob - #168318)
- Fix local_calendar recurring event creation failing with UNTIL when HA timezone is non-UTC (@superdingo101 - #167735)
- Remove Temperature parameter from Anthropic integration (@Shulyaka - #168504)
- Bump pydrawise to 2026.4.0 (@dknowles2 - #168500)
- Long polling Bravia TV in standby mode (@Drafteed - #167364)
- Bump python-duco-client to 0.3.2 (@ronaldvdmeer - #168528)
- Add zeroconf discovery to Duco integration (@ronaldvdmeer - #168439)
- Bump aioshelly to 13.24.0 (@bieniu - #168533)
- Bump imgw_pib to 2.1.1 (@bieniu - #168534)
- Firefly III update installation instructions (@erwindouna - #168529)
- Improve UniFi quality scale: has-entity-name (@RaHehl - #168490)
- Mark reconfiguration-flow as exempt for Twente Milieu (@frenck - #168040)
- Revert “Bump habluetooth to 6.0.0” (@bdraco - #168552)
- Add Broadlink infrared emitter support to native infrared platform (@YuvalWS - #168385)
- Migrate Rituals Perfume Genie to use runtime_data (@frenck - #168564)
- Update peblar to v0.5.1 (@frenck - #168386)
- Update pvo to v3.0.0 (@frenck - #168561)
- Handle rate limit error separately in Duco fan platform (@ronaldvdmeer - #168558)
- Remove leftover YAML import code from PVOutput config flow (@frenck - #168560)
- Add suggested uom to mop_drying_remaining_time in roborock (@Thomas55555 - #168516)
- Add initial support for PlayerOptions: Select entities to Music Assistant (@fmunkes - #167974)
- Victron GX: dedupe strings.json (@tomer-w - #168460)
- Migrate Zeversolar to use
runtime_data(@mib1185 - #168574) - Enable strict typing for Duco integration (@ronaldvdmeer - #168572)
- Migrate Tailscale to use runtime_data (@frenck - #168556)
- Update tailscale to 0.7.0 (@frenck - #168544)
- Update zizmor (@renovate - #168581)
- Improve nobo_hub config entry setup (@oyvindwe - #168550)
- Use runtime_data in tami4 integration (@epenet - #168587)
- Bump hdate to 1.2.1 (@amitfin - #168538)
- Add First Alert app selection to Lyric auth (@nberardi - #168427)
- Use runtime_data in thethingsnetwork integration (@epenet - #168589)
- Use runtime_data in todoist integration (@epenet - #168590)
- Bump j178/prek-action from 2.0.1 to 2.0.2 (@dependabot - #168584)
- Bump actions/cache from 5.0.4 to 5.0.5 (@dependabot - #168583)
- Bump matter-python-client to 0.6.0 (@TheJulianJES - #168312)
- Updated H590 input source mapping (@trevorvey - #168523)
- Fix grammar and clarity in strings.json (@SeifEddineMezned - #168577)
- Use runtime_data in toon integration (@epenet - #168591)
- Use hass_tmp_config_dir fixture in device_tracker tests (@emontnemery - #168582)
- Bump habluetooth to 6.1.0 (@bdraco - #168576)
- Adjust repair text about unsupported installation method (@emontnemery - #168156)
- Add seek support to frontier_silicon (@wlcrs - #168483)
- Set parallel updates for Tailscale platforms (@frenck - #168596)
- Use runtime_data in ukraine_alarm integration (@epenet - #168597)
- Sort keys in dict returned by async_get_system_info (@emontnemery - #168585)
- Clarify Copilot review guidance for validated entity action inputs (@Copilot - #168449)
- Add
ice phenomenasensor to IMGW-PIB integration (@bieniu - #168548) - Remove device ids from extra_state_attrs of Evohome’s Button entities (@zxdavb - #168517)
- Use runtime_data in upb integration (@epenet - #168600)
- Fix flaky airtouch5 test for Python 3.14.3 (@justanotherariel - #168366)
- Always load all platforms in sfr_box (@epenet - #168594)
- Deprecate support for local installation of dependencies (@emontnemery - #168164)
- Allow passing a set of event types to logbook.async_subscribe_events (@emontnemery - #168163)
- Deprecate legacy device tracker (@emontnemery - #168387)
- unifi: implement parallel-updates quality scale rule (@RaHehl - #168563)
- Fix quantum_gateway tests (@emontnemery - #168610)
- Fix cookie file suppression in verisure (@epenet - #168609)
- Update ruff (@renovate - #168240)
- Move vallox service registration to services.py (@epenet - #168612)
- Filter OpenAI schema (@Shulyaka - #168543)
- Update knx-frontend to 2026.4.19.175239 (@farmio - #168568)
- Use runtime_data in volumio integration (@epenet - #168616)
- Use runtime_data in vera integration (@epenet - #168614)
- Use runtime_data in venstar integration (@epenet - #168613)
- Update pydantic to 2.13.2 (@cdce8p - #168601)
- Use runtime_data in verisure integration (@epenet - #168605)
- Use runtime_data in vallox integration (@epenet - #168604)
- Bump python-technove to 2.1.1 (@Moustachauve - #168403)
- Bump actron-neo-api to 0.5.3 (@kclif9 - #167732)
- Revert “Update PyTurboJPEG to 2.2.0” (@edenhaus - #168617)
- Use dedicated power commands for LG infrared (@balloob - #168488)
- Fix KeyError in Growatt server login response handling (@johanzander - #168482)
- Remove reference to deprecated state STANDBY from universal media player (@merlinschumacher - #160930)
- Fix nobo_hub via_device warning (@oyvindwe - #168595)
- Add Fumis pellet stove integration (@frenck - #168515)
- Improve async_get_system_info tests (@emontnemery - #168586)
- feat(citybikes): add number of ebikes attribute (@mxr - #166229)
- Merge config flows for powerfox integration (@klaasnicolaas - #164019)
- Use runtime_data in wolflink integration (@epenet - #168625)
- Improve UniFi config flow quality scale: config-flow and config-flow-test-coverage (@RaHehl - #168477)
- Migrate lib to aiorussound for Russound RNET (@akrabi - #168484)
- Add docker syntax to all Docker files (@edenhaus - #168350)
- Migrate Z-Wave.Me to use
runtime_data(@mib1185 - #168562) - Add first cover entity tests to Overkiz (@iMicknl - #165670)
- Remove hassio-main panel registration (@agners - #168626)
- Set parallel updates for PVOutput sensor platform (@frenck - #168643)
- Claim Silver quality scale for Duco integration (@ronaldvdmeer - #168620)
- Use runtime_data in watttime integration (@epenet - #168630)
- Bump serialx to 1.4.1 (@puddly - #168640)
- Victron GX: device_tracker platfrom (@tomer-w - #168462)
- Remove hunterjm from Xbox integration codeowners (@tr4nt0r - #167024)
- Change Claude gh review agent back to skill (@abmantis - #168642)
- Bump ZHA to 1.2.1 (@puddly - #168644)
- Bump universal-silabs-flasher to 1.1.0 (@puddly - #168647)
- Bump nhc to 0.8.0 (@VandeurenGlenn - #168651)
- Validate directory_path and file_name in telegram_bot.download_file (@ReneNulschDE - #168656)
- Add reconfiguration flow to Duco integration (@ronaldvdmeer - #168652)
- Fix tplink tests for Python 3.14.3 (@justanotherariel - #168361)
- Use runtime_data in ws66i integration (@epenet - #168628)
- Fix esphome test ResourceWarning (@cdce8p - #168181)
- Use runtime_data in weatherflow_cloud integration (@epenet - #168624)
- Use runtime_data in weatherflow integration (@epenet - #168622)
- Update waterfurnace to 1.7.1 (@masterkoppa - #168665)
- Add additional cover fixtures to Overkiz (@iMicknl - #168661)
- Add reauthentication flow to Fumis integration (@frenck - #168645)
- Use runtime_data in WeatherKit (@epenet - #168682)
- Bump py-unifi-access to version 1.2.0 (@RaHehl - #168679)
- Update zizmor (@renovate - #168666)
- Use runtime_data in whois (@epenet - #168684)
- Add missing data_description strings to iaqualink (@flz - #168670)
- Use runtime_data in wilight integration (@epenet - #168686)
- Update aiousbwatcher to 1.1.2 (@cdce8p - #168688)
- Use runtime_data in wiffi integration (@epenet - #168687)
- refactor(hassio): store aiohasupervisor models directly in hass.data using typed HassKey (@mdegat01 - #168400)
- Use runtime_data in yamaha_musiccast (@epenet - #168691)
- Use runtime_data in youless (@epenet - #168694)
- Add myself as a codeowner for OpenAI integration (@Shulyaka - #168705)
- Bump pySwitchbot to 2.1.0 (@zerzhang - #168692)
- Use runtime_data in yolink (@epenet - #168693)
- Use runtime_data in youtube (@epenet - #168696)
- Use runtime_data in Yardian (@epenet - #168697)
- Use runtime_data in zamg (@epenet - #168699)
- Add duration to more conditions (@emontnemery - #168383)
- Fix telegram_bot.send_message_draft action description (@Shulyaka - #168212)
- Add dynamic update interval to Tado (@erwindouna - #160723)
- Allow requesting spaceapi without authentication and with cors headers (@ximex - #160797)
- Implement doorbell.rang trigger (@abmantis - #168388)
- Add Kiosker binary sensor platform (@Claeysson - #168507)
- Use runtime_data in abode integration (@epenet - #168709)
- Move Tuya listener classes to separate module (@epenet - #168636)
- Add dynamic device discovery and stale device removal to Duco integration (@ronaldvdmeer - #168675)
- Drop redundant BackupManager annotation in aws_s3/google_drive diagnostics (@epenet - #168714)
- Bump blebox_uniapi to v2.5.1 (@bkobus-bbx - #168713)
- Preserve Fahrenheit precision in google_assistant temperature range (@aarontc - #168672)
- Combine AWS hass.data entries into a single dataclass (@epenet - #168711)
- Sonos - Add support for TV Autoplay and Ungroup on Autoplay (@arsenicks - #167956)
- Remove retired Claude Haiku 3 model (@Shulyaka - #168657)
- Filter Anthropic schema (@Shulyaka - #168542)
- Bump mcstatus to 13.1.0 (@MohamedBarrak3 - #168716)
- Update infrared-protocols to 2.0.0 (@renovate - #168667)
- unifi: implement action-exceptions quality scale rule (@RaHehl - #168559)
- Add initial quality scale assessment to iaqualink, set to bronze (@flz - #167738)
- Fix shelly tests - bluetooth config flow (@justanotherariel - #166850)
- Add sensor entity tests to Overkiz (@iMicknl - #168701)
- Fix/unifi access uah door and thumbnail (@RaHehl - #168708)
- Claim platinum quality scale for Duco integration (@ronaldvdmeer - #168719)
- Add data descriptions for nobo_hub config and options flows (@oyvindwe - #168723)
- Revert “Add Broadlink infrared emitter support to native infrared platform” (@emontnemery - #168717)
- Disable DNS queries in tests (@chemelli74 - #165603)
- Improve Supervisor update entity progress and data refresh (@agners - #168712)
- Add DHCP discovery to Fumis integration (@frenck - #168735)
- Add sensor platform to Fumis integration (@frenck - #168680)
- iaqualink: Add basic DHCP discovery for iAquaLink devices (@flz - #168256)
- Frontier silicon: use correct command to restart stopped stream (@wlcrs - #168633)
- Use runtime_data in wyoming integration (@epenet - #168619)
- Introduce NoboBaseEntity in nobo_hub (@oyvindwe - #168724)
- Limit LIFX bulb changes to the values that are actually changing (@Djelibeybi - #168618)
- Add recreate container button to Portainer (@erwindouna - #167163)
- Add volumes to Portainer (@erwindouna - #167326)
- Expose Lutron Caseta shade battery status on covers (@davidyen1124 - #165180)
- Version checking of Transmission (@andrew-codechimp - #168429)
- Fix nobo_hub override type description (@oyvindwe - #168740)
- Allow integrations to contribute serial port scanning helpers (@puddly - #168660)
- Add support for away mode in ESPHome water heater (@tronikos - #167951)
- Bump aioesphomeapi to 44.18.0 (@jhenkens - #168749)
- Rename iAqualink to iAquaLink (@flz - #168743)
- Rename SerialSelector to SerialPortSelector (@balloob - #168744)
- Updata wiim to 0.1.2 (@Linkplay2020 - #168671)
- Add DHCP discovery to Duco integration (@ronaldvdmeer - #168730)
- Fix OneDrive upload service to support multiple files (@leodrivera - #168512)
- Bump thinqconnect to 1.0.12 (@LG-ThinQ-Integration - #168753)
- Use HassKey in zeroconf (@epenet - #168707)
- Victron GX: Diagnostics (@tomer-w - #168700)
- Update mypy to 1.20.2 (@cdce8p - #168741)
- Bump python-duco-client to 0.3.4 (@ronaldvdmeer - #168757)
- Bump github/codeql-action from 4.35.1 to 4.35.2 (@dependabot - #168754)
- Translate override_type options in nobo_hub (@oyvindwe - #168752)
- Simplify Tuya runtime_data (@epenet - #168718)
- Improve test structure for Overkiz (@iMicknl - #168728)
- Improve exception handling for frontier_silicon (@wlcrs - #168635)
- Firefly III consistency with access token (@erwindouna - #168565)
- Remove unused hass.data[DOMAIN] in LG webOS TV (@thecode - #168813)
- Add pylint plugin to enforce entry.runtime_data over hass.data[DOMAIN] (@frenck - #168760)
- Add entity translations to UniFi integration (@RaHehl - #168739)
- Add audio processing settings to speech-to-text entities (@synesthesiam - #167246)
- Record notifications sent via ntfy.publish action in ntfy integration (@tr4nt0r - #166352)
- Improve claude gh pr review summary + business logic lib note (@abmantis - #168819)
- Add tests for Tuya dynamic add/remove device (@epenet - #168824)
- Ensure Tuya (stale) device is removed before adding new (@epenet - #168721)
- Rename Claude’s integration skill (@abmantis - #168825)
- Add dummy Claude skill instruction for testing (@abmantis - #168829)
- Add gpt-image-2 model support for OpenAI (@Shulyaka - #168826)
- Register optimized ESPHome serial proxy transport with serialx (@puddly - #168817)
- Add tests asserting air_quality condition features (@emontnemery - #168731)
- Bump tuya-device-handlers to 0.0.18 (@epenet - #168821)
- Revert Tuya camera quirk changes (@epenet - #168820)
- Replace climate-control device with thermostat in climate translations (@emontnemery - #161419)
- Fix incorrect sensor definition for Indevolt Gen-1 devices (@Xirt - #168835)
- Add pylint plugin to detect polling interval fields in config flows (@frenck - #168849)
- Clean up leftover hass.data[DOMAIN] usage in keenetic_ndms2 (@epenet - #168871)
- unifi_access: bump py-unifi-access to 1.3.0 (@RaHehl - #168851)
- Migrate kraken to use runtime_data (@epenet - #168870)
- unifi_access: add missing WebSocket handlers for remote_view and device_update events (@RaHehl - #168850)
- Migrate slimproto to use runtime_data (@epenet - #168869)
- Migrate flux_led to use HassKey for FLUX_LED_DISCOVERY (@epenet - #168872)
- Use runtime_data in Huawei LTE (@epenet - #168876)
- Add comment to trigger base class (@emontnemery - #168882)
- Update uv to 0.11.7 (@renovate - #168864)
- Reduce context switching in Tuya initialisation (@epenet - #168830)
- Migrate Matter integration to use
runtime_data(@TheJulianJES - #168862) - Add async_panel_exists helper to frontend and use it across integrations (@epenet - #168884)
- Migrate GitHub to subentries (@joostlek - #160564)
- Update knx-frontend to 2026.4.22.141111 (@farmio - #168837)
- unifi_access: add direction attribute to access events (@RaHehl - #168853)
- Add UCRH sensor support and warn on unknown node types in Duco (@ronaldvdmeer - #168758)
- Add reconfigure flow to TechnoVE integration (@Moustachauve - #168466)
- Remove leftover hass.data[DOMAIN] usage from insteon (@epenet - #168880)
- Migrate cover platform to entity descriptions in Overkiz (@iMicknl - #141330)
- Add MQTT time platform (@jbouwh - #168898)
- Migrate to entity services in amcrest (@arturpragacz - #168974)
- Media browser: apply sentence-style capitalization (@c0ffeeca7 - #168971)
- Fix b&o race conditions for Python 3.14.3 (@justanotherariel - #168885)
- Migrate
shopping_listto useentry.runtime_data(@mib1185 - #168911) - Add reconfiguration flow to Fumis integration (@frenck - #168759)
- Migrate to entity services in monoprice (@arturpragacz - #168972)
- Bump python-bsblan to 5.2.0 (@liudger - #168892)
- Victron GX stale devices (@tomer-w - #168706)
- Victron GX: Add strict typing (@tomer-w - #168907)
- Fix invalid notification/event handling in Tuya tests (@epenet - #168854)
- Victron GX: Add exception translations (@tomer-w - #168762)
- Add open (unlatch) support to Homee locks (@kostavelikov - #168532)
- Tessie: log warning instead of raising UpdateFailed for missing energy history (@fender4645 - #168068)
- Bump HueBLE to 2.2.2 (@flip-dots - #167677)
- Bump uiprotect to 10.3.0 (@RaHehl - #168992)
- Add entity availability to Satel Integra (@Tommatheussen - #168476)
- Add select platform tests for nobo_hub (@oyvindwe - #168738)
- Add sensor description for Lock state in Switchbot Cloud (@XiaoLing-git - #168607)
- Victron GX: Add reconfiguration flow (@tomer-w - #168997)
- Bump python-duco-client to 0.3.6 (@ronaldvdmeer - #169020)
- Refactor condition API (@emontnemery - #168815)
- Allow extracting non-primary entities in websocket command (@abmantis - #168860)
- Update fumis to v0.3.0 (@frenck - #168984)
- Bump uiprotect to 10.3.1 (@RaHehl - #169031)
- Migrate compound conditions to ConditionChecker (@emontnemery - #169028)
- Declare PARALLEL_UPDATES = 0 for nobo_hub platforms (@oyvindwe - #169011)
- Add tilt and rotation binary sensors for Shelly Cury (@bieniu - #169002)
- Remove name from config flow of Notifications for Android TV /Fire TV (@tr4nt0r - #169024)
- Refactor Anthropic model args (@Shulyaka - #169014)
- Bump indevolt-api to 1.3.1 (@Xirt - #168986)
- Add WLED segment freeze support (@tgechev - #168424)
- Add AV1 support for HLS fallback (@RaHehl - #161492)
- Add pylint plugin to detect IP-based unique IDs in config entries (@frenck - #168822)
- Refactor pylint plugins to use match statements (@cdce8p - #168894)
- Update websocket_api.handle_test_condition to use modern condition API (@emontnemery - #169029)
- Add binary sensor platform to Qube heat pump (@MattieGit - #166611)
- Add radio_frequency entity integration (@balloob - #168447)
- Bump indevolt-api to 1.4.0 (@Xirt - #169050)
- Migrate async_conditions_from_config to ConditionChecker (@emontnemery - #169033)
- Disable sonos tests broken by Python 3.14.3 asyncio changes (@justanotherariel - #169046)
- Refactor AirQ config flow tests (@Sibgatulin - #169053)
- Add multiple heating system circuit support to BSBlan (@liudger - #165992)
- Add method Script.unload (@emontnemery - #169036)
- Bump aioesphomeapi to 44.21.0 (@balloob - #169056)
- Bump indevolt-api to 1.4.2 (@Xirt - #169061)
- Add MQTT date platform (@jbouwh - #168998)
- Add data descriptions to config flow in OTP integration (@tr4nt0r - #168989)
- Add distance device class to Ecowitt lightning distance sensors (@mtheli - #168995)
- Victron GX: quality scale adjustments (@tomer-w - #168988)
- Bump rf-protocols to 2.1.0 (@balloob - #169062)
- Adjust compound conditions (@emontnemery - #169054)
- Add Honeywell String Lights integration (@balloob - #168450)
- Add radio_frequency platform to ESPHome (@balloob - #168448)
- Add uptime device class to the sensor platform (@chemelli74 - #164266)
- Fix Flume sensor units and device classes (@shbatm - #169013)
- Return None for Velux cover position when unknown (@mnaggatz - #168566)
- Keep add-on update entity in progress across post-install refresh (@agners - #168756)
- Add tests asserting condition features (@emontnemery - #168881)
- Fix feedreader tests broken by Python 3.14.3 asyncio changes (@mib1185 - #169080)
- Support media player for Shelly Wall Display (@bieniu - #168494)
- Add a dynamic sensitivity slider for Matter sensors (@wardmatter - #167710)
- Disable knx tests broken by Python 3.14.3 asyncio changes (@justanotherariel - #169079)
- Disable plex tests broken by Python 3.14.3 asyncio changes (@justanotherariel - #169069)
- Disable dsmr tests broken by Python 3.14.3 asyncio changes (@justanotherariel - #169064)
- Disable rflink tests broken by Python 3.14.3 asyncio changes (@justanotherariel - #169074)
- Refactor button platform to use indevolt-api 1.4.2 (@Xirt - #169063)
- Use new UPTIME sensor class for Shelly (@chemelli74 - #169088)
- Upgrade unifi_access quality scale to platinum (@RaHehl - #168204)
- Reinforce Python 3.14 exceptions Agent instructions (@abmantis - #169089)
- Bump israel-rail-api to 0.1.5 (@mikomgk - #169094)
- Register MAC address connections on Synology DSM hub device (@tomwilkie - #169085)
- Upgrade Twente Milieu quality scale to platinum (@frenck - #169104)
- Upgrade Elgato quality scale to platinum (@frenck - #169102)
- Bump indevolt-api to 1.4.3 (@Xirt - #169103)
- Migrate
onvifto useentry.runtime_data(@mib1185 - #169106) - Extract common entity base class for RDW (@frenck - #169118)
- Add reconfiguration flow to Notifications for Android TV / Fire TV (@tr4nt0r - #169111)
- Update fumis to v0.4.0 (@frenck - #169097)
- Filter unknown values from arcam enum (@elupus - #169124)
- Protect update coordinator callbacks (@elupus - #169122)
- Set parallel updates to 0 for Forecast.Solar (@frenck - #169126)
- Bump aiomealie to 1.2.4 (@andrew-codechimp - #169125)
- Set parallel updates for Hydrawise platforms (@frenck - #169101)
- Modernize RDW config flow tests (@frenck - #169129)
- Standardize ISY994 sensor units and device classes (@shbatm - #169017)
- unifiprotect: bump uiprotect to 10.4.0 (@RaHehl - #169146)
- Add battery storage data sensors to SolarEdge integration (@it-rec - #161722)
- homematicip_cloud: migrate entity unique IDs to stable format (@lackas - #166580)
- Update knx-frontend to 2026.4.25.155016: Add notes to UI expose (@farmio - #169154)
- Add GPT-5.5 support (@Shulyaka - #169112)
- Add climate platform tests for nobo_hub (@oyvindwe - #169010)
- Remove
namefrom AccuWeather config flow (@bieniu - #169142) - Add reconfiguration flow to PVOutput (@frenck - #169123)
- Upgrade UniFi Network integration quality scale to Silver (@RaHehl - #168736)
- Add temperature sensor to Duco integration (@ronaldvdmeer - #169021)
- Preserve sub-meter GPS accuracy in mobile_app webhooks (@mayerwin - #169144)
- Detect .start entry point files in hassfest check (@cdce8p - #169135)
- Switchbot_BLE: bump PySwitchbot to 2.2.0 (@XiaoLing-git - #169119)
- Wolflink: Fixing Codeowner (@EnjoyingM - #169171)
- Bump aioaquacell to 1.0.0 (@Jordi1990 - #169166)
- Add climate entity to Waterfurnace (@masterkoppa - #168729)
- Migrate
refossto useentry.runtime_data(@mib1185 - #169105) - Add button platform to Fumis integration (@frenck - #169095)
- Add MQTT datetime platform (@jbouwh - #169091)
- Fix None is not and allowed Unit of Measurement during MQTT Device setup via the UI (@jbouwh - #169173)
- Template vacuum segments (@gustavakerstrom - #167805)
- Try to fix
RFLinktests broken by Python 3.14.3 asyncio changes (@javicalle - #169157) - Bump satel_integra to 1.2.2 (@Tommatheussen - #169180)
- Add radio_frequency platform to Broadlink (@piitaya - #169128)
- Remove
namefrom Airly config flow (@bieniu - #169145) - Remove TARGET_TEMPERATURE_RANGE from eurotronic climate (@rikroe - #169182)
- Add LG Netcast service to send remote control commands (@mithomas - #168649)
- Bump actron-neo-api to 0.5.5 (@kclif9 - #169176)
- Update easyEnergy integration to v3.0.0 (@klaasnicolaas - #169162)
- Add alarm control panel platform to UniFi Protect (@RaHehl - #169158)
- Bump uiprotect to 10.4.1 (@RaHehl - #169192)
- Add reset buttons for dock strainer and maintenance brush consumables in Roborock (@CSdread - #167395)
- Add cleaning route for Q7 vacuums (@Lash-L - #169177)
- Use the carbon monoxide device class in the Airly integration (@bieniu - #169193)
- Bump pyloadapi to 2.1.0 (@tr4nt0r - #169215)
- Restrict Insteon link management services to admins (@balloob - #169206)
- Restrict file.read_file service to admin users (@balloob - #169204)
- Require admin for deCONZ services (@balloob - #169207)
- Enforce admin policy for assist_satellite ask_question service (@balloob - #169231)
- Remove unique id in dnsip (@gjohansson-ST - #169211)
- Cleanup deprecated SEND_PIN service in blink (@epenet - #169253)
- Require admin for fritz.set_guest_wifi_password service (@balloob - #169233)
- Fix google_generative_ai_conversation tests broken by Python 3.14.3 asyncio changes (@epenet - #169258)
- Fix openai_conversation tests broken by Python 3.14.3 asyncio changes (@epenet - #169259)
- Apply Tuya device quirks on device registration (@epenet - #168897)
- Use runtime_data in yeelight (@epenet - #169260)
- Use HassKey in wemo (@epenet - #169261)
- Use runtime_data in xiaomi_aqara (@epenet - #169262)
- Generalize radio_frequency test fixtures in components conftest (@balloob - #169098)
- Migrate yeelight to use HassKey for shared custom effects (@epenet - #169268)
- Add binary sensor platform to Fumis integration (@frenck - #169032)
- Add integration type service to HTML5 Push notifications (@tr4nt0r - #169015)
- Bump holidays lib to 0.95 (@gjohansson-ST - #169199)
- Update vehicle to 3.0.0 (@frenck - #169127)
- Migrate waze_travel_time to use HassKey for shared semaphore (@epenet - #169264)
- Remove deprecated action from google generative AI (@epenet - #169255)
- Remove unused
namestring from AccuWeather strings (@bieniu - #169195) - Add sensor platform tests for nobo_hub (@oyvindwe - #169008)
- Remove unused line of code in Velux integration (@wollew - #168987)
- Fix Google Generative AI token usage statistics tracing (@allenporter - #169222)
- Refactor anthropic stream processing (@Shulyaka - #168980)
- Set integration type helper in OTP integration (@tr4nt0r - #169012)
- Deprecate yaml import in Shopping List (@mib1185 - #169084)
- Require admin access for hassio Supervisor services (@balloob - #169226)
- Migrate esphome to use HassKey (@epenet - #168873)
- Require admin for management WebSocket commands (@balloob - #169209)
- Verify local_only webhook on MockRequest (@edenhaus - #169271)
- Fix missing mock in switcher_kis config flow test (@epenet - #169286)
- Fix flaky KNX test (@farmio - #169288)
- Fix incorrect CONF_ID in twinkly tests (@epenet - #169284)
- Add missing mock in izone tests (@epenet - #169287)
- Raise ConfigEntryError on decora_wifi authentication error (@epenet - #169285)
- Fix Green Planet Energy timestamp sensors (@petschni - #166153)
- Bump python-duco-client to 0.3.9 (@ronaldvdmeer - #169174)
- Require admin for configurator.configure service (@balloob - #169230)
- Require admin for cloud preference and support package endpoints (@balloob - #169205)
- Require admin for backup.create and backup.create_automatic services (@balloob - #169228)
- Require admin for logger.set_level and logger.set_default_level services (@balloob - #169232)
- Bump aiocomelit to 2.0.3 (@chemelli74 - #169300)
- Improve subscription handling in shelly tests (@epenet - #169293)
- Require admin for diagnostics download and application credentials list (@balloob - #169234)
- Migrate remaining top-level async_register_command handlers to decorators (@balloob - #169227)
- Wait for background tasks in shelly tests (@epenet - #169301)
- Fix more Shelly tests for Python 3.14.3 (@epenet - #169304)
- Fix grammatical error in synology_dsm missing_data error message (@MohamedBarrak3 - #169306)
- Migrate ZHA to
SerialPortSelector(@puddly - #169099) - Remove hassio onboarding bypass for backup endpoints (@agners - #169299)
- Remove unnecessary title assertion from Yellow integration tests (@puddly - #169320)
- Remove unused X-Hass constants (@agners - #169324)
- Add actions to Indevolt integration (@Xirt - #163578)
- Register a stub transport for ESPHome serial proxies via USB (@puddly - #169308)
- Add departure_delay sensor to Israel Rail (@mikomgk - #169035)
- Bump aioautomower to 2.7.4 (@Thomas55555 - #169331)
- Bump aiontfy to 0.8.5 (@tr4nt0r - #169327)
- Update to iaqualink 0.7.0 (@flz - #169330)
- Bump indevolt-api to 1.6.3 (@Xirt - #169338)
- Bump freebox-api to 1.3.1 (@frantzju - #169335)
- Refactor indevolt integration to remove magic number constants (@Xirt - #169337)
- Add explicit test of conditions.async_conditions_from_config (@emontnemery - #169042)
- Refactor timezone handling in mqtt datetime (@epenet - #169342)
- Restore state_class to derivative sensor (@karwosts - #163557)
- Improve error handling for vacuum clean_area (@arturpragacz - #168177)
- Add state tracking to EntityConditionBase (@emontnemery - #169030)
- Fix bang olufsen flaky tests in Python 3.14.3 (@epenet - #169345)
- Fix Duco diagnostics crash on connection error (@ronaldvdmeer - #169322)
- Add missing call to ConditionChecker.async_setup in async_from_config (@emontnemery - #169055)
- Fix OneDrive upload service to report all missing files at once (@leodrivera - #169221)
- Fix Withings via_device race causing flaky test_devices (@epenet - #169347)
- Update gotailwind to v0.4.0 (@frenck - #169316)
- Fix otbr flaky config flow tests in Python 3.14.3 (@epenet - #169348)
- Require admin for addon panel register and delete (@mdegat01 - #169329)
- Require admin on APIs to create/delete config entries from Supervisor discovery (@mdegat01 - #169340)
- Require local_only to be a boolean on webhook (@edenhaus - #169296)
- Allow targeting non-primary entities in triggers (@abmantis - #168857)
- Bump yolink-api to 0.6.5 (@matrixd2 - #169350)
- Use modern condition API in condition tests (@emontnemery - #169354)
- Fix shelly device_trigger tests (@epenet - #169305)
- Use modern condition API in condition helper tests (@emontnemery - #169353)
- Bump actron-neo-api requirement to version 0.5.6 (@kclif9 - #169357)
- User camera unique id in go2rtc if available (@edenhaus - #168603)
- Expose more port metadata when listing serial ports (@puddly - #169336)
- Fix flaky template test (@justanotherariel - #169361)
- Add template number device_class (@Petro31 - #168438)
- netatmo: add battery sensor for doortags (@farkasdi - #168202)
- Unload scripts created by script entities (@emontnemery - #169364)
- Fix flaky google calendar tests (@epenet - #169371)
- Fix flaky stream test_stream_retries (@epenet - #169372)
- Bump indevolt-api to 1.6.4 (@Xirt - #169377)
- Add siren platform to UniFi Protect integration (@RaHehl - #169216)
- Restrict homematic.set_install_mode service to admins (@balloob - #169203)
- Add UniFi Protect relay output switches via public API (@RaHehl - #169201)
- Fix flaky cloud TTS and picotts streaming tests (@epenet - #169376)
- Fix flaky gardena_bluetooth test_timeout_manufacturer_data (@epenet - #169389)
- Add temporary mute button for Heiman smoke detector (@lboue - #169311)
- Add child lock entity for Eve Matter devices (@lboue - #169391)
- Fix nobo_hub KeyError when a zone or component is removed (@oyvindwe - #169378)
- Discover Fibaro FGMS001 v2.8 as a motion sensor for Z-Wave (@AlCalzone - #169276)
- Include matching integrations in scanned ports WS API (@puddly - #169387)
- Add duration support to cover conditions (@emontnemery - #169346)
- Fix Matter electrical sensors wrongly categorized as diagnostic (@lboue - #169208)
- Enforce per-entity permissions in calendar HTTP and WS APIs (@balloob - #169235)
- Bump rf-protocols to 2.2.0 (@balloob - #169400)
- Add battery mode select to Zinvolt (@joostlek - #169397)
- Add Novy Cooker Hood integration (@piitaya - #169194)
- Add fan platform to Novy Cooker Hood (@piitaya - #169380)
- Migrate UniFi Network discovery from SSDP to unifi_discovery (@RaHehl - #168122)
- Handle ZHA dynamic entity add/remove events (@TheJulianJES - #169341)
- Require admin for supervisor event publishing and addon options info (@mdegat01 - #169325)
- Reword country_not_configured repair description (@oxidworks - #168357)
- Bump Tesla Fleet API to 1.4.7 (@Bre77 - #169411)
- Add ability to filter GetLiveContext tool (@NickM-27 - #168457)
- Fix flaky mcp_server tests with Python 3.14.3 (@epenet - #169385)
- Deprecate firmware update button in FRITZ!Box Tools (@mib1185 - #168117)
- Use new UPTIME sensor class for Vodafone Station (@chemelli74 - #169077)
- Fix flaky test_alexa_config_expose_entity_prefs with Python 3.14.3 (@epenet - #169421)
- Bump PyViCare to 2.60.1 (@lackas - #169401)
- Add last_action state attribute to timers (@emontnemery - #168282)
- Add path-specific custom instructions to copilot gen script (@abmantis - #169402)
- Allow Axis websocket event usage if supported (@Kane610 - #169409)
- Unload scripts created by intent_script (@emontnemery - #169363)
- Unload scripts created by wake_on_lan switch (@emontnemery - #169367)
- Filter out “Unknown” part_name from Teslemetry energy device model (@Bre77 - #169413)
- iaqualink: add reconfigure flow (@flz - #169412)
- Add DRY HVAC mode support to Actron Air based on hardware capabilities (@kclif9 - #169132)
- Bump axis to v69 (@Kane610 - #169408)
- Fix watts coordinator interrupting fast polling on hub update (@epenet - #169365)
- Improve data updating for Tibber (@Danielhiversen - #168065)
- Use enumerate instead of range(len()) in Duco fan speed list (@Amousibrahim - #169392)
- Use modern condition API in script helper (@emontnemery - #169355)
- Use new UPTIME sensor class for Synology DSM (@chemelli74 - #169090)
- Fix flaky test_tasks_logged_that_block_stage_2 with Python 3.14.3 (@epenet - #169424)
- Fix flaky unifi device_tracker entity race on setup (@epenet - #169359)
- Remove name field from Forecast.solar config flow (@klaasnicolaas - #169165)
- Fix missing hue.activate_scene actions (@konradstrack - #168859)
- Use new console pages for vehicles and energy sites in Teslemetry (@Bre77 - #168865)
- Victron GX: Platinum quality scale (@tomer-w - #169070)
- Unload scripts and conditions created by automations (@emontnemery - #169362)
- Bump python-otbr-api to 2.10.0 (@agners - #169370)
- Use async_on_create_entry in bayesian (@gjohansson-ST - #169218)
- Clean up entity_service_call tests (@arturpragacz - #169170)
- Keep options values when chaging or starting program on Home Connect (@Diegorro98 - #168575)
- Protect CI cache save against cancellation (@cdce8p - #168310)
- Fix jvcprojector entities going unavailable on transient command errors (@SteveEasley - #168985)
- Require hass in Template (@edenhaus - #169292)
- Add number platform to Fumis integration (@frenck - #169100)
- Add error and alert sensors to Fumis integration (@frenck - #169307)
- Reject manifest dependencies on core integrations in hassfest (@epenet - #169425)
- Bump aioshelly to 13.24.1 (@thecode - #169426)
- Extract state template functions into a state Jinja2 extension (@frenck - #169034)
- Expose async_clear_advertisement_history in the bluetooth API (@bdraco - #169191)
- Use defaults for device class UPTIME in Shelly (@chemelli74 - #169148)
- Unload scripts created by websocket command execute_script (@emontnemery - #169368)
- Copy unit_of_measurement onto energy inverted power sensor (@MindFreeze - #169427)
- Fix logbook spam by including image domain in ALWAYS_CONTINUOUS_DOMAINS (@daily063 - #169240)
- Bump deebot-client to 18.2.0 (@edenhaus - #169003)
- Redact sensitive api creds before logging message in websocket api (@ch604 - #169326)
- Rename timer last_action to last_transition (@emontnemery - #169430)
- Add routine management to Alexa Devices (@chemelli74 - #166291)
- Fix Acaia battery sensor going unavailable on first-session disconnect (@ayn - #169420)
- Filter history API responses by per-entity read permissions (@balloob - #169236)
- Allow targeting non-primary entities in conditions (@abmantis - #169291)
- Add diagnostics to Fumis integration (@frenck - #169437)
- Bump aioshelly to 13.24.2 (@bieniu - #169440)
- Bump ZHA to 1.3.0 (@TheJulianJES - #169433)
- Victron GX device_tracker optional attributes (@tomer-w - #168646)
- Fix host connections for Fritz (@chemelli74 - #169434)
- Remove LLM test instruction (@abmantis - #169442)
- Fix availability state for bridged Matter devices (@vturekhanov - #165078)
- Add OMIE integration (@luuuis - #150399)
- Add Axis doorbell event platform (@Kane610 - #169422)
- Use defaults for device class UPTIME in Fritz (@chemelli74 - #169149)
- Fix race in Ping device tracker device lookup (@epenet - #169432)
- Fix race in devolo Home Network device tracker device lookup (@epenet - #169454)
- Fix flaky portainer test_device_registry (@epenet - #169456)
- Fix Sonos group regroup race when entity is not yet registered (@epenet - #169445)
- Fix Duco HTTPS polling performance by lowering SCAN_INTERVAL to 10 seconds (@ronaldvdmeer - #169453)
- Use new UPTIME sensor class in NAM (@bieniu - #169458)
- Use new UPTIME sensor class in Brother (@bieniu - #169457)
- Add automation behavior selector (@bramkragten - #166484)
- Migrate Renovate config (@renovate - #169462)
- Update ruff (@renovate - #169461)
- Fix plex sensor test broken by Python 3.14.3 asyncio changes (@epenet - #169448)
- Update uv to 0.11.8 (@renovate - #169463)
- Update pyOpenSSL to 26.1.0 (@renovate - #169464)
- Update url-normalize to 3.0.0 (@renovate - #169466)
- Make it always optional to specify trigger and condition options (@emontnemery - #169467)
- Use uptime sensor class in devolo Home Network (@Shutgun - #169469)
- Update ruff (@renovate - #169473)
- Revert “Include indirect automation references in device view (#167719)” (@MartinHjelmare - #169471)
- Update cryptography to 47.0.0 (@renovate - #169465)
- Add timer triggers (@emontnemery - #169450)
- Extract triggers/conditions/services for non-primary entities (@abmantis - #169441)
- Correct entity_id change for scripts (@emontnemery - #169472)
- Correct entity_id change for automations (@emontnemery - #169470)
- Improve timer icons (@emontnemery - #169474)
- Add notify entities to Mobile app integration (@tr4nt0r - #168510)
- Use automation behavior selector in triggers and conditions (@emontnemery - #169438)
- Bump Fumis integration to platinum quality scale (@frenck - #169443)
- Add indevolt binary sensor platform (@Xirt - #169375)
- Update frontend to 20260429.0 (@piitaya - #169475)
- Include errors in script trace when continue_on_error is set (@emontnemery - #168676)
- Move finish watering to sensor (@elupus - #169476)
- Check device registration before completing Hive reauth flow (@KJonline - #168035)
- Fix reasoning summary handling for OpenAI o-models (@jftkcs - #168093)
- Victron GX: bug fix for missing translation key (@tomer-w - #168461)
- Add Broadlink infrared emitter support (@YuvalWS - #168889)
- fix: incorrect position inversion for blebox gateBox cover (@bkobus-bbx - #168893)
- Bump weatherflow4py to 1.5.4 (@jeeftor - #168994)
- Storage problem management for Comelit Serial Bridge (@chemelli74 - #169297)
- Implement current setpoint method in actron air integration (@kclif9 - #169358)
- Remove scripts from DATA_SCRIPTS on unload (@emontnemery - #169415)
- Re-interview ZHA device on websocket reconfigure (@TheJulianJES - #169483)
- Correct wake_on_lan entity behavior when entity_id changes (@emontnemery - #169486)
- Fix uptime sensor for Synology DSM (@chemelli74 - #169512)
- Fix KeyError in telegram_bot media group download debug log (@Bolshem - #169519)
- Fix: Migrate also device entries to subentry in GitHub integration (@tr4nt0r - #169523)
- Victron GX: Bug fix: parent device is mapped to the wrong device (@tomer-w - #169525)
- Update knx-frontend to 2026.4.30.60856 (@farmio - #169529)
- Enable duration support in all entity conditions (@emontnemery - #169532)
- Bump blebox_uniapi to 2.5.2 (@bkobus-bbx - #169534)
- Use the correct schema for triggers/conditions “for” option (@abmantis - #169539)
- Bump ohme to 1.9.0 (@dan-r - #169556)
- Update frontend to 20260429.1 (@piitaya - #169565)
- Bump aioshelly to 13.25.0 (@thecode - #169569)
- Bump pyuptimerobot to 25.0.0 (@chemelli74 - #169572)
- Fix grammar and clarity in samsungtv/strings.json (@SeifEddineMezned - #169574)
- Fix possessive apostrophe errors in mqtt/strings.json (@SeifEddineMezned - #169576)
- Fix Duco unknown node type not re-evaluated after becoming known (@ronaldvdmeer - #169579)
- Bump opower to 0.18.2 (@tronikos - #169588)
- Decrease WebDAV client timeout (@jpbede - #169591)
- Change vacuum template config names for clean area (@Petro31 - #169599)
- Fix detection of CPU temperature sensor support on olde FRITZ!Box models (@mib1185 - #169620)
- Pass
Noneconfig entry to schluter coordinator (@mib1185 - #169621) - Fix M1S-T500 update error (@kmod-midori - #169651)
- Fix grammar in mqtt/strings.json: “Minimal one” → “At least one” (@SeifEddineMezned - #169666)
- Bump satel_integra to 1.3.0 (@Tommatheussen - #169668)
- Updated prowlpy to 1.1.5 (@OMEGARAZER - #169671)
- Bump python-duco-client to 0.3.10 (@ronaldvdmeer - #169677)
- Improve ProxmoxVE config flow preparing bug fixing (@CoMPaTech - #169682)
- Update Nest doorbell event to use standard DoorbellEventType.RING (@allenporter - #169691)
- Use uptime device_class for Uptime sensor (@karwosts - #169692)
- Ignore location FORBIDDEN response for the Volvo integration (@thomasddn - #169713)
- Bump bring-api to 1.1.2 (@tr4nt0r - #169729)
- Update frontend to 20260429.2 (@piitaya - #169748)
- Add trigger media_player.muted (@emontnemery - #156736)
- Use all_devices in ViCare diagnostics for completeness (@lackas - #169429)
- Improve template reload (@emontnemery - #169480)
- Fix async_unload teardown race in scripts (@arturpragacz - #169562)
- Add precipitation device class to WeatherFlow Cloud accumulation sensors (@shbatm - #169638)
- Bump pylitterbot to 2025.4.0 (@natekspencer - #169652)
- Limit power status binary sensor to non-LR5 devices (@natekspencer - #169659)
- Add Celsius and Fahrenheit to Smartthings UNITS mapping (@kernelpanic85 - #169686)
- Add missing initialization charging power status option to Volvo (@thomasddn - #169727)
- Bump victron-ble-ha-parser to 0.7.0 (@rajlaud - #169736)
- Bump pytrydan to 1.0.0 (@dgomes - #169742)
- Fix uptime template sensor (@Petro31 - #169743)
- Fix config flow validation in Nord Pool (@gjohansson-ST - #169751)
- Bump Insteon-panel to 0.6.2 (@ssyrell - #169757)
- bump sense-energy to 0.14.1 (@kbickar - #169761)
- Bump pyTibber to 0.37.3 (@Danielhiversen - #169762)
- Update xknxproject to 3.9.0 (@farmio - #169775)
- Add missing code for miele washing machine (@astrandb - #169795)
- Add Sensereo matter brand (@joostlek - #169836)
- Add Zunzunbee Zigbee brand (@joostlek - #169838)
- Return the requested format for OpenAI TTS (@Shulyaka - #169839)
- Catch additional errors as potentially retryable errors during energy data updates (@masterkoppa - #169646)
- Expose SET_SPEED for all fans via PercentSetting in Matter (@lboue - #169696)
- Add trigger timer.time_remaining (@emontnemery - #169763)
- Record notification from legacy notify action in Mobile App (@tr4nt0r - #169749)
- Improve mobile_app device tracker tests (@emontnemery - #169724)
- Add trigger media_player.unmuted (@emontnemery - #169797)
- Validate yaml matches implementation in automation options_supported tests (@emontnemery - #169798)
- Bump intents to 2026.5.5 (@synesthesiam - #169855)
- Bump serialx to 1.7.0 (@puddly - #169867)
- Improve trigger test helper docstrings (@emontnemery - #169869)
- Improve condition test helper docstrings (@emontnemery - #169871)
- Add method _should_include to EntityTriggerBase (@emontnemery - #169837)
- Improve entity trigger tests (@emontnemery - #169881)
- Add method _should_include to EntityConditionBase (@emontnemery - #169884)
- Add media_player volume triggers (@emontnemery - #169885)
- Fix Zinvolt select options (@joostlek - #169886)
- Bump satel_integra to 1.3.1 (@Tommatheussen - #169889)
- Add media_player muted conditions (@emontnemery - #169892)
- Update frontend to 20260429.3 (@bramkragten - #169893)
- Add media_player volume condition (@emontnemery - #169897)
- Exclude incompatible entities from humidity automations (@emontnemery - #169898)
- Exclude incompatible entities from temperature automations (@emontnemery - #169901)
- Unload scripts and conditions created by template entities (@emontnemery - #169366)
- Exclude incompatible climate entities from climate automations (@emontnemery - #169903)
- Exclude incompatible water_heater entities from water_heater automations (@emontnemery - #169904)
- Exclude incompatible humidifier entities from humidifier automations (@emontnemery - #169905)
- Remove _get_tracked_value method from EntityConditionBase (@emontnemery - #169906)
- Bump pyTibber to 0.37.4 (@Danielhiversen - #169907)