Full changelog for Home Assistant Core 2024.6
These are all the changes included in the Home Assistant Core 2024.6 release.
For a summary in a more readable format: Release notes blog for this release.
All changes
- Add all supported languages to Google Translate and remove unsupported ones (@prabhjotsbhatia-ca
- #107404 )  - Bump version to 2024.6.0dev0 (@frenck
- #116120 )  - Add play/pause functionality for Vizio Smartcast media_player entities (@NasaGeek
- #108896 )  - Bump actions/checkout from 4.1.3 to 4.1.4 (@dependabot - #116147
)  - Bump actions/download-artifact from 4.1.6 to 4.1.7 (@dependabot - #116148
)  - Update mypy to 1.10.0 (@cdce8p
- #116158 )  - Bump aioautomower to 2024.4.4 (@Thomas55555
- #116185 )  - Add support for Aranet radiation devices (@Anrijs
- #115239 )  - Bump dropmqttapi to 1.0.3 (@pfrazer
- #116179 )  - Use snapshots in Linear diagnostics tests (@joostlek
- #116169 )  - Add strict typing to husqvarna automower (@Thomas55555
- #115374 )  - Improve linear coordinator (@joostlek
- #116167 )  - Use existing monotonic timestamp on mqtt messages for debugging (@jbouwh
- #116196 )  - Reduce scope of JSON/XML test fixtures (@emontnemery
- #116197 )  - Bump ruff to 0.4.2 (@autinerd
- #116201 )  - Bump github/codeql-action from 3.25.2 to 3.25.3 (@dependabot - #116209
)  - Fix flapping trafikverket tests (@emontnemery
- #116238 )  - Remove myself as codeowner for Harmony (@bramkragten
- #116241 )  - Simplify timezone setting in recorder test (@emontnemery
- #116220 )  - Reduce scope of bluetooth test fixtures (@emontnemery
- #116210 )  - Fix flapping recorder tests (@emontnemery
- #116239 )  - Reduce scope of ZHA test fixtures (@emontnemery
- #116208 )  - Add HA version to cache key (@cdce8p
- #116159 )  - Make freezegun find event.time_tracker_utcnow (@emontnemery
- #116284 )  - Avoid update call in entity state write if there is no customize data (@bdraco
- #116296 )  - Add a fast path for _stringify_state when state is already a str (@bdraco
- #116295 )  - Reduce number of time calls needed to write state (@bdraco
- #116297 )  - Increase the Hydrawise refresh frequency from 120s to 30s (@dknowles2
- #116298 )  - Use more shorthand attrs in emonitor (@bdraco
- #116307 )  - Unifi: enable statistics for PoE port power sensor (@wittypluck
- #116308 )  - Convert Linear to use a base entity (@IceBotYT
- #116133 )  - Add a cache to _verify_event_type_length_or_raise (@bdraco
- #116312 )  - Remove unneeded TYPE_CHECKING guard in core async_set (@bdraco
- #116311 )  - Make storage load tasks background tasks to avoid delaying shutdown (@bdraco
- #116332 )  - Refactor group setup (@jbouwh
- #116317 )  - Fix incorrect call to async_schedule_update_ha_state in command_line switch (@bdraco
- #116347 )  - Add test helper to remove device (@epenet
- #116234 )  - Speed up singleton decorator so it can be used more places (@bdraco
- #116292 )  - Fix incorrect call to async_schedule_update_ha_state in generic_hygrostat (@bdraco
- #116349 )  - Fix incorrect call to async_schedule_update_ha_state in manual_mqtt (@bdraco
- #116348 )  - Remove eager_start argument from internal _async_add_hass_job function (@bdraco
- #116310 )  - Avoid creating tasks to update universal media player (@bdraco
- #116350 )  - Bump total_connect_client to 2024.4 (@austinmroczek
- #116360 )  - Use built-in aiohttp timeout instead of asyncio.timeout in media_player (@bdraco
- #116364 )  - Reduce scope of test fixtures for the pylint plugin tests (@emontnemery
- #116207 )  - Add Button for TotalConnect (@austinmroczek
- #114530 )  - Add icons and translations to Habitica (@tr4nt0r
- #116204 )  - Update freezegun to 1.5.0 (@cdce8p
- #116375 )  - Update pytest-xdist to 3.6.1 (@cdce8p
- #116377 )  - Update pipdeptree to 2.19.0 (@cdce8p
- #116376 )  - Update respx to 0.21.1 (@cdce8p
- #116380 )  - Update uv to 0.1.39 (@cdce8p
- #116381 )  - Update types packages (@cdce8p
- #116382 )  - Small cleanups to climate entity feature compat (@bdraco
- #116361 )  - Add Ollama Conversation Agent Entity (@allenporter
- #116363 )  - Address late review in Honeywell (@mkmer
- #115702 )  - Fix typo in Switchbot cloud (@joostlek
- #116388 )  - Fix grammar in internal function comments (@bdraco
- #116387 )  - Add service to log all the current asyncio Tasks to the profiler (@bdraco
- #116389 )  - Report webOS media player state (@rale
- #113774 )  - Add error translations to AVM Fritz!Tools (@mib1185
- #116413 )  - Add Workarea cutting height to Husqvarna Automower (@Thomas55555
- #116115 )  - Revert “Remove strict connection” (@edenhaus
- #116416 )  - Add Open Home Foundation link (@GuySie
- #116405 )  - Update pytest to 8.2.0 (@cdce8p
- #116379 )  - Remove entity category “system” check from entity registry (@gjohansson-ST
- #116412 )  - Update fyta async_migrate_entry (@dontinelli
- #116433 )  - Store runtime data inside ConfigEntry (@cdce8p
- #115669 )  - Use remove_device helper in tests (2/2) (@epenet
- #116442 )  - Use remove_device helper in tests (1/2) (@epenet
- #116240 )  - Store runtime data in entry in Withings (@joostlek
- #116439 )  - Store runtime data in entry in onewire (@epenet
- #116450 )  - Add pydantic to skip-binary (@bdraco
- #116406 )  - Remove entity description mixin in NextDNS (@bieniu
- #116456 )  - Move Renault service registration (@epenet
- #116459 )  - Store runtime data in entry in renault (@epenet
- #116454 )  - Mock dwdwfsapi in all tests that use it (@andarotajo
- #116414 )  - Small performance improvements to ingress forwarding (@bdraco
- #116457 )  - Avoid netloc ipaddress re-encoding to construct ingress urls (@bdraco
- #116431 )  - Avoid re-encoding the message id as bytes for every event/state change (@bdraco
- #116460 )  - Bump pydantic constraint (@AngellusMortis
- #116401 )  - Bring sensibo to full coverage (again) (@gjohansson-ST
- #116469 )  - Store runtime data in entry in Ecovacs (@edenhaus
- #116445 )  - Make a copy of capability_attributes instead of making a new dict (@bdraco
- #116477 )  - Use websocket client to test device removal in Unifi (@wittypluck
- #116309 )  - Remove unused argument from DWD coordinator (@joostlek
- #116496 )  - Add IMGW-PIB integration (@bieniu
- #116468 )  - Workday only update once a day (@gjohansson-ST
- #116419 )  - Store GIOS runtime data in entry (@bieniu
- #116510 )  - Bump yalexs to 3.1.0 (@bdraco
- #116511 )  - Simplify MQTT mid handling (@bdraco
- #116522 )  - Reduce timestamp function call overhead in core states (@bdraco
- #116517 )  - Store runtime data inside the config entry in AVM Fritz!Smarthome (@mib1185
- #116523 )  - Add diagnostics platform to IMGW-PIB integration (@bieniu
- #116551 )  - Use runtime data in Yale Smart Alarm (@gjohansson-ST
- #116548 )  - Use runtime data for FritzBox Call Monitor (@cdce8p
- #116553 )  - Store runtime data inside the config entry in Tankerkoenig (@mib1185
- #116532 )  - Store runtime data inside the config entry in Proximity (@mib1185
- #116533 )  - Store runtime data inside the config entry in PegelOnline (@mib1185
- #116534 )  - Use config entry runtime data in Trafikverket Weather (@gjohansson-ST
- #116554 )  - Use config entry runtime data in Trafikverket Camera (@gjohansson-ST
- #116552 )  - Use config entry runtime data in Sensibo (@gjohansson-ST
- #116530 )  - Use config entry runtime data in Trafikverket Ferry (@gjohansson-ST
- #116557 )  - Use config entry runtime data in Trafikverket Train (@gjohansson-ST
- #116556 )  - Store runtime data in entry in Analytics Insights (@joostlek
- #116441 )  - Remove duplicate mid handling in MQTT (@bdraco
- #116531 )  - Improve tankerkoenig generic coordinator typing (@cdce8p
- #116560 )  - Improve airly generic coordinator typing (@cdce8p
- #116561 )  - Improve asuswrt decorator typing (@cdce8p
- #116563 )  - Improve fitbit generic coordinator typing (@cdce8p
- #116562 )  - Bump pydrawise to 2024.4.1 (@dknowles2
- #116449 )  - Address late review for Husqvarna Automower (@Thomas55555
- #116536 )  - Bump sigstore/cosign-installer from 3.4.0 to 3.5.0 (@dependabot - #115399
)  - Bump codecov/codecov-action from 4.3.0 to 4.3.1 (@dependabot - #116592
)  - Add shutter tilt support for Shelly Wave Shutter QNSH-001P10 (@blob810
- #116211 )  - Use runtime_data for acmeda (@cdce8p
- #116606 )  - Use runtime_data for airvisual_pro (@cdce8p
- #116607 )  - Use runtime_data for ambient_station (@cdce8p
- #116608 )  - Use entry.runtime_data in Fronius (@farmio
- #116604 )  - Use runtime_data for co2signal (@cdce8p
- #116612 )  - Use runtime_data for bond (@cdce8p
- #116611 )  - Use runtime_data for august (@cdce8p
- #116610 )  - Add 
binary_sensorplatform to IMGW-PIB integration (@bieniu- #116624 )  - Use runtime_data for airthings_ble (@cdce8p
- #116623 )  - Use runtime_data for airtouch5 (@cdce8p
- #116625 )  - Use runtime_data for aftership (@cdce8p
- #116618 )  - Cleanup removed MQTT broker settings (@jbouwh
- #116633 )  - Use runtime_data for airq (@cdce8p
- #116620 )  - Use runtime_data for airthings (@cdce8p
- #116622 )  - Use runtime_data for airnow (@cdce8p
- #116619 )  - Refactor group state logic (@jbouwh
- #116318 )  - Add vesync Vital 100S UK & EU Model mappings (@JonDeeming
- #115948 )  - Cleanup unused class attr for MQTT config flow (@jbouwh
- #116653 )  - Improve docstring on roborock image entity method (@jbouwh
- #116654 )  - Replace pyserial-asyncio with pyserial-asyncio-fast in serial (@bdraco
- #116636 )  - Fix flaky hassio test (@emontnemery
- #116658 )  - Cleanup MQTT sensor last_reset_topic config parameter a year after removal (@jbouwh
- #116657 )  - Add ecobee ventilator 20 min timer (@marcolivierarsenault
- #115969 )  - Migrate bluetooth to use the singleton helper (@bdraco
- #116629 )  - Clean up small changes from OpenAI conversation entity change (@allenporter
- #116395 )  - Convert history tests to use async API (@emontnemery
- #116447 )  - Drop pyserial-asyncio from zha (@bdraco
- #116638 )  - Add title feature to notify entity platform (@jbouwh
- #116426 )  - Bump 
imgw_pibto version 1.0.1 (@bieniu- #116630 )  - Bump habluetooth to 3.0.1 (@bdraco
- #116663 )  - Move NAM Data Update Coordinator to the coordinator module (@bieniu
- #116686 )  - Fix fyta test warning (@cdce8p
- #116688 )  - Fix snapcast test warning (@cdce8p
- #116687 )  - Add test for HA stop to devolo Home Control (@Shutgun
- #116682 )  - Use 
runtime_datato store NextDNS data (@bieniu- #116691 )  - Use ConfigEntry runtime_data in devolo Home Control (@Shutgun
- #116672 )  - EntityDescription doesn’t need to be generic for NextDNS binary sensor and switch platforms (@bieniu
- #116697 )  - Convert sensor recorder tests to use async API (@emontnemery
- #116373 )  - Convert recorder entity registry tests to use async API (@emontnemery
- #116448 )  - Bump 
nettigo-air-monitorto version 3.0.1 (@bieniu- #116699 )  - Cleanup OpenAI and Ollama conversation entities (@allenporter
- #116714 )  - Use ConfigEntry runtime_data in Discovergy (@jpbede
- #116671 )  - Use runtime_data in Axis integration (@Kane610
- #116729 )  - Fix active state mapping in wolflink (@mtielen
- #116659 )  - Fix UpdateCoordinator types in CoordinatorWeatherEntity constructor (@kamiyo
- #116747 )  - Bump ruff to 0.4.3 (@autinerd
- #116749 )  - Store runtime data inside the config entry in DWD (@mib1185
- #116764 )  - Store runtime data inside the config entry in Shelly (@mib1185
- #116763 )  - Improve CoordinatorWeatherEntity generic typing (@cdce8p
- #116760 )  - Update unique_id to string in Honeywell (@mkmer
- #116726 )  - Store BraviaTV data in config_entry.runtime_data (@bieniu
- #116778 )  - Move Brother DataUpdateCoordinator to the coordinator module (@bieniu
- #116772 )  - Store runtime data inside the config entry in Met.no (@mib1185
- #116767 )  - Store runtime data inside the config entry in Nextcloud (@mib1185
- #116790 )  - Store runtime data inside the config entry in SamsungTV (@mib1185
- #116787 )  - Store runtime data inside the config entry in OpenWeatherMap (@mib1185
- #116788 )  - Store runtime data inside the config entry in VLC telnet (@mib1185
- #116803 )  - Store runtime data inside the config entry in Speedtest.net (@mib1185
- #116802 )  - Store runtime data inside the config entry in Pi-Hole (@mib1185
- #116806 )  - Store runtime data inside the config entry in NUT (@mib1185
- #116771 )  - Store runtime data inside the config entry in Sun (@mib1185
- #116808 )  - Store runtime data inside the config entry in Local ToDo (@mib1185
- #116818 )  - Store runtime data inside the config entry in Certificate Expiry (@mib1185
- #116819 )  - Store runtime data inside the config entry in Bring (@tr4nt0r
- #116820 )  - Store runtime data inside the config entry in System Monitor (@mib1185
- #116816 )  - Store runtime data inside the config entry in Android TV Remote (@mib1185
- #116824 )  - Migrate properties to instance variables in NAM coordinator (@bieniu
- #116703 )  - Move Totalconnect coordinator to separate module (@joostlek
- #116368 )  - Correct stale docstring on mqtt config flow method (@jbouwh
- #116848 )  - Use parametrize in drop connect sensor tests (@joostlek
- #107078 )  - Increase test coverage for Total Connect (@bieniu
- #116851 )  - Bump tcc to 2024.5 (@austinmroczek
- #116827 )  - Add Sensor descriptions for Bosch SHC (@joostlek
- #116775 )  - Add update coordinator for Habitica integration (@tr4nt0r
- #116427 )  - Remove timeout option and set timeout static to 30 seconds in Synology DSM (@mib1185
- #116815 )  - Improve recorder and worker thread matching in RecorderPool (@bdraco
- #116886 )  - Replace utcnow().timestamp() with time.time() in auth_store (@bdraco
- #116879 )  - Refactor entity_platform polling to avoid double time fetch (@bdraco
- #116877 )  - Turn on thread safety checks in async_dispatcher_send (@bdraco
- #116867 )  - Keep august offline key up to date when it changes (@bdraco
- #116857 )  - Index auth token ids to avoid linear search (@bdraco
- #116583 )  - Switch out aiohttp-isal for aiohttp-fast-zlib to make isal optional (@bdraco
- #116814 )  - Abort Minecraft Server config flow if device is already configured (@elmurato
- #116852 )  - Store runtime data inside the config entry in AndroidTV (@ollo69
- #116895 )  - Bump Habitipy to 0.3.1 (@tr4nt0r
- #116378 )  - Bump bring-api to 0.7.1 (@tr4nt0r
- #115532 )  - Bump google-generativeai to v0.5.2 (@tronikos
- #116845 )  - Move thread safety check in issue_registry sooner (@bdraco
- #116899 )  - Only call conversation should_expose once (@balloob
- #116891 )  - Handle errors retrieving Ondilo data and bump ondilo to 0.5.0 (@JeromeHXP
- #115926 )  - Convert recorder init tests to use async API (@emontnemery
- #116918 )  - Store runtime data inside the config entry in AsusWrt (@ollo69
- #116889 )  - Reduce API calls to fetch Habitica tasks (@tr4nt0r
- #116897 )  - Add new sensors to IMGW-PIB integration (@bieniu
- #116631 )  - Add snapshot tests to Ondilo Ico (@joostlek
- #116929 )  - Convert recorder history tests to use async API (@emontnemery
- #116909 )  - Convert recorder statistics tests to use async API (@emontnemery
- #116925 )  - Simplify config entry check in SamsungTV (@epenet
- #116907 )  - Convert recorder util tests to use async API (@emontnemery
- #116926 )  - Convert recorder auto_repairs tests to use async API (@emontnemery
- #116927 )  - Fix search/replace mistake in recorder tests (@emontnemery
- #116933 )  - Store runtime data inside the config entry in Radio Browser (@mib1185
- #116821 )  - Small speed ups to async_get_integration (@bdraco
- #116900 )  - Set pH device class in Ondilo Ico (@joostlek
- #116930 )  - Fix wiz test warning (@cdce8p
- #116693 )  - Add dataclass to Ondilo Ico (@joostlek
- #116928 )  - Use runtime_data for elgato (@cdce8p
- #116614 )  - Remove deprecated WAQI state attributes (@joostlek
- #116595 )  - Use runtime_data for wled (@cdce8p
- #116615 )  - Use ConfigEntry runtime_data in TwenteMilieu (@frenck
- #116642 )  - AccuWeather tests refactoring (@bieniu
- #116923 )  - Allow the rounding to be optional in integral (@elupus
- #116884 )  - Store AccuWeather runtime data in config entry (@bieniu
- #116946 )  - Revert polling interval back to orginal value in Wolflink (@mtielen
- #116758 )  - Replace pylint protected-access with Ruff SLF001 (@autinerd
- #115735 )  - Snapshot Ondilo Ico devices (@joostlek
- #116932 )  - Handle exceptions in panic button for Yale Smart Alarm (@gjohansson-ST
- #116515 )  - Allow reconfiguration of integration sensor (@elupus
- #116740 )  - Remove ambiclimate integration (@gjohansson-ST
- #116410 )  - Use ConfigEntry runtime_data in devolo Home Network (@Shutgun
- #116694 )  - Correct formatting mqtt MQTT_DISCOVERY_DONE and MQTT_DISCOVERY_UPDATED message (@jbouwh
- #116947 )  - Bump orjson to 3.10.3 (@bdraco
- #116945 )  - Correct typo in MQTT translations (@jbouwh
- #116956 )  - Bump python-holidays to 0.48 (@gjohansson-ST
- #116951 )  - Make Idasen Desk react to bluetooth changes (@abmantis
- #115939 )  - Bump aioautomower to 2024.5.0 (@Thomas55555
- #116942 )  - Review AndroidTV decorator exception management (@ollo69
- #114133 )  - Upgrade to hdate 0.10.8 (@SLaks
- #116202 )  - Bump SQLAlchemy to 2.0.30 (@bdraco
- #116964 )  - Add HassDict implementation (@cdce8p
- #103844 )  - Add support for round-robin DNS (@pemontto
- #115218 )  - Fix flakey test in Husqvarna Automower (@Thomas55555
- #116981 )  - Update tqdm to 4.66.4 (@cdce8p
- #116984 )  - Replace pylint broad-except with Ruff BLE001 (@autinerd
- #116250 )  - Store Philips TV runtime data in config entry (@bieniu
- #116952 )  - Clean up Ondilo config flow (@joostlek
- #116931 )  - Update imports from alarm_control_panel (@cdce8p
- #117014 )  - Return raw API data for subaru device diagnostics (@G-Two
- #114119 )  - Use HassKey for registries (@cdce8p
- #117000 )  - Use HassKey for setup and bootstrap (@cdce8p
- #116998 )  - Use HassKey for helpers (2) (@cdce8p
- #117013 )  - Use HassKey for helpers (1) (@cdce8p
- #117012 )  - Improve energy platform typing (@cdce8p
- #117003 )  - Use HassKey for loader (@cdce8p
- #116999 )  - Only log loop client subscription log if log level is DEBUG (@jbouwh
- #117008 )  - Add SignificantChangeProtocol to improve platform typing (@cdce8p
- #117002 )  - Holiday update calendar once per day (@gjohansson-ST
- #116421 )  - Improve issue_registry event typing (@cdce8p
- #117023 )  - Add Tado reconfigure step (@erwindouna
- #115970 )  - Use entry runtime data on Filesize (@gjohansson-ST
- #116962 )  - Add Monzo integration (@JakeMartin-ICL
- #101731 )  - Use singleton helper for registries (@bdraco
- #117027 )  - Add MediaSourceProtocol to improve platform typing (@cdce8p
- #117001 )  - Add flow and rain sensor support to Hydrawise (@thomaskistler
- #116303 )  - Add climate temp ranges support for Airzone Cloud (@Noltari
- #115025 )  - Fix double executor in Filesize (@gjohansson-ST
- #117029 )  - Add Venstar HVAC stage sensor (@jhollowe
- #107510 )  - Store Airly runtime data in config entry (@bieniu
- #117031 )  - Store runtime data inside the config entry in Upnp (@mib1185
- #117030 )  - Store runtime data inside the config entry in Apple TV (@mib1185
- #117032 )  - Move thread safety in label_registry sooner (@bdraco
- #117026 )  - Fix capitalization in Monzo strings (@joostlek
- #117035 )  - Move thread safety in floor_registry sooner (@bdraco
- #117044 )  - Update eq3btsmart library dependency to 1.1.8 (@EuleMitKeule
- #117051 )  - Move thread safety check in category_registry sooner (@bdraco
- #117050 )  - Intent target matching and media player enhancements (@synesthesiam
- #115445 )  - Add service waze_travel_time.get_travel_times (@eifinger
- #108170 )  - Store runtime data inside the config entry in IPP (@mib1185
- #116765 )  - Set the quality scale to platinum for IMGW-PIB integration (@bieniu
- #116912 )  - Store Tractive data in 
config_entry.runtime_data(@bieniu- #116781 )  - Use runtime_data in webmin (@autinerd
- #117058 )  - User eager task in github config flow (@emontnemery
- #117066 )  - Bump aiovodafone to 0.6.0 (@chemelli74
- #117064 )  - Apply late review on Synology DSM (@mib1185
- #117060 )  - Bump pylutron to 0.2.13 (@joostlek
- #117062 )  - Bump bleak to 0.22.0 (@bdraco
- #116955 )  - Convert Anova to cloud push (@Lash-L
- #109508 )  - Add an add template filter (@Troon
- #109884 )  - Correct state class of ecowitt hourly rain rate sensors (@pantonvich
- #110475 )  - Add 
openstate to LockEntity (@gjohansson-ST- #111968 )  - Fix nibe_heatpump climate for models without cooling support (@tizianodeg
- #114599 )  - Migrate baf to use config entry runtime_data (@bdraco
- #117081 )  - Add open and opening state support to MQTT lock (@jbouwh
- #117110 )  - Avoid storing Bluetooth scanner in hass.data (@bdraco
- #117074 )  - Migrate govee_ble to use config entry runtime_data (@bdraco
- #117076 )  - Avoid creating a task to clear the hass instance at test teardown (@bdraco
- #117103 )  - Avoid creating inner tasks to load storage (@bdraco
- #117099 )  - Speed up tests by making mock_get_source_ip session scoped (@bdraco
- #117096 )  - Migrate yalexs_ble to use config entry runtime_data (@bdraco
- #117082 )  - Migrate elkm1 to use config entry runtime_data (@bdraco
- #117077 )  - Bump python-roborock to 2.1.1 (@Lash-L
- #117078 )  - Export MQTT subscription helpers at integration level (@jbouwh
- #116150 )  - Enable Ruff RUF010 (@autinerd
- #115371 )  - Ignore Ruff SIM103 (@autinerd
- #115732 )  - Fix config entry _async_process_on_unload being called for forwarded platforms (@bdraco
- #117084 )  - Store runtime data inside the config entry in Tuya (@mib1185
- #116822 )  - Add test data for Zeo and Dyad devices to Roborock (@Lash-L
- #117054 )  - Add better testing to vacuum platform (@Lash-L
- #112523 )  - Use HassKey for importlib helper (@cdce8p
- #117116 )  - Move available property in BasePassiveBluetoothCoordinator to PassiveBluetoothDataUpdateCoordinator (@bdraco
- #117056 )  - Bump github/codeql-action from 3.25.3 to 3.25.4 (@dependabot - #117127
)  - Add airgradient integration (@joostlek
- #114113 )  - Add base entity for Airgradient (@joostlek
- #117135 )  - Add screenlogic service tests (@dieselrabbit
- #116356 )  - Speed up test teardown when no config entries are loaded (@bdraco
- #117095 )  - Bump ruff to 0.4.4 (@autinerd
- #117154 )  - Raise ServiceValidationError in Nibe climate services (@tizianodeg
- #117171 )  - Improve base entity state in Vogel’s MotionMount integration (@RJPoelstra
- #109043 )  - Add standard deviation calculation to group (@CoRfr
- #112076 )  - Refactor Teslemetry integration (@Bre77
- #112480 )  - Migrate file integration to config entry (@jbouwh
- #116861 )  - Add energy site coordinator to Teslemetry (@Bre77
- #117184 )  - Add ESPhome discovery via MQTT (@Links2004
- #116499 )  - Import TypedDict from typing (@cdce8p
- #117161 )  - Log some mqtt of the discovery logging at debug level (@jbouwh
- #117185 )  - Update media_player intent schema (@Shulyaka
- #116793 )  - Update SetPositionIntentHandler intent schema (@Shulyaka
- #116794 )  - Add update_without_throttle to ecobee number (@marcolivierarsenault
- #116504 )  - Fix File entry setup config parsing whole YAML config (@jbouwh
- #117206 )  - Ensure config entry setup lock is held when removing a config entry (@bdraco
- #117086 )  - Fix flakey sonos test teardown (@bdraco
- #117222 )  - Bump ical to 8.0.1 (@allenporter
- #117219 )  - Use async_get_loaded_integration in config_entries (@bdraco
- #117192 )  - Bump pyrainbird to 6.0.1 (@allenporter
- #117217 )  - Fix flakey advantage_air test (@bdraco
- #117224 )  - Only load translations for an integration once per test session (@bdraco
- #117118 )  - Add device class to Command Line cover (@gjohansson-ST
- #117183 )  - Prevent shutdown fault-log trace-back (@systemcrash
- #116735 )  - Speed up init and finish flow (@bdraco
- #117226 )  - Use MockConfigEntry in unifi tests (@emontnemery
- #117238 )  - Rename some runner tests (@emontnemery
- #117249 )  - Rename some translation helper tests (@emontnemery
- #117248 )  - Rename some rflink tests (@emontnemery
- #117247 )  - Rename some MQTT tests (@emontnemery
- #117246 )  - Sort asserts in config config_entries tests (@emontnemery
- #117244 )  - Bump homematicip to 1.1.1 (@hahn-th
- #117175 )  - Bump wolf-comm to 0.0.8 (@mtielen
- #117218 )  - Bump pyinsteon to 1.6.1 (@teharris1
- #117196 )  - Start using runtime_data for zwave_js (@raman325
- #117261 )  - Use mock_config_flow helper in config tests (@emontnemery
- #117245 )  - Use mock_config_flow helper in config_entries tests (@emontnemery
- #117241 )  - Use mock_config_flow helper in bootstrap tests (@emontnemery
- #117240 )  - Sort parameters to MockConfigEntry (@emontnemery
- #117239 )  - Add shared notify service migration repair helper (@jbouwh
- #117213 )  - Refactor V2C tests (@joostlek
- #117264 )  - Tweak config_entries tests (@emontnemery
- #117242 )  - Ensure config entry operations are always holding the lock (@bdraco
- #117214 )  - Fix docstring in Idasen Desk (@abmantis
- #117280 )  - Small speed up to setting up integrations and config entries (@bdraco
- #117278 )  - Use 
MockConfigEntryin hue tests (@emontnemery- #117237 )  - Use a dictcomp to reconstruct DeviceInfo in the device_registry (@bdraco
- #117286 )  - Bump upcloud-api to 2.5.1 (@scop
- #117231 )  - Fix mimetypes doing blocking I/O in the event loop (@bdraco
- #117292 )  - Small speed ups to bootstrap tests (@bdraco
- #117285 )  - Improve bluetooth generic typing (@cdce8p
- #117157 )  - Spelling of controlling in mqtt valve tests (@jbouwh
- #117301 )  - Fix blocking I/O in the event loop to get MacOS system_info (@bdraco
- #117290 )  - Use entry runtime data in Teslemetry (@Bre77
- #117283 )  - Fix flume doing blocking I/O in the event loop (@bdraco
- #117293 )  - Fix import on File config entry and other improvements (@jbouwh
- #117210 )  - Fix typo in mqtt test name (@jbouwh
- #117305 )  - Migrate Tibber notify service (@jbouwh
- #116893 )  - Remove ConfigEntry runtime_data on unload (@cdce8p
- #117312 )  - Add test for radarr update failure (@tkdrob
- #116882 )  - Clean up aurora (@joostlek
- #117315 )  - Refactor asyncio loop protection to improve performance (@bdraco
- #117295 )  - Enable open protection in the event loop (@bdraco
- #117289 )  - Bump zwave-js-server-python to 0.56.0 (@raman325
- #117288 )  - Add camera recording service to blink (@mback2k
- #110612 )  - Improve error handling in Teslemetry (@Bre77
- #117336 )  - Add gh cli to dev container (@balloob
- #117321 )  - Fix typo and useless default in config_entries (@emontnemery
- #117346 )  - Implement runtime data for Plugwise (@bouwew
- #117172 )  - Remove migration of config entry data pre version 0.73 (@emontnemery
- #117345 )  - Alphabetize some parts of config_entries (@emontnemery
- #117347 )  - Remove options from FlowResult (@emontnemery
- #117351 )  - Add minor version + migration to config entry store (@emontnemery
- #117350 )  - Migrate File notify entity platform (@jbouwh
- #117215 )  - Implement support for SwitchBot Meter, MeterPlus, and Outdoor Meter (@laurence-presland
- #115522 )  - Support reconfigure flow in Nettigo Air Monitor integration (@bieniu
- #117318 )  - Update to arcam 1.5.2 (@elupus
- #117375 )  - Create helper for File config flow step handling (@jbouwh
- #117371 )  - Bump dbus-fast to 2.21.2 (@bdraco
- #117195 )  - Migrate restore_state to use the singleton helper (@bdraco
- #117385 )  - Pass loop to create_eager_task in loops from more coros (@bdraco
- #117390 )  - Import and cache supported feature enum flags only when needed (@allenporter
- #117270 )  - Use ConfigEntry runtime_data in Tailwind (@frenck
- #117404 )  - Update uv to 0.1.43 (@cdce8p
- #117405 )  - Update apprise to 1.8.0 (@frenck
- #117370 )  - Update types packages (@cdce8p
- #117407 )  - Use ConfigEntry runtime_data in advantage_air (@epenet
- #117408 )  - Bump github/codeql-action from 3.25.4 to 3.25.5 (@dependabot - #117409
)  - Update gotailwind to 0.2.3 (@frenck
- #117402 )  - Use ConfigEntry runtime_data in aemet (@epenet
- #117411 )  - Use ConfigEntry runtime_data in agent_dvr (@epenet
- #117412 )  - Update pylint to 3.1.1 (@cdce8p
- #117416 )  - Move abode base entities to separate module (@epenet
- #117417 )  - Add climate platform to microBees (@FedDam
- #111152 )  - Add Viam image processing integration (@HipsterBrown
- #101786 )  - Speed up loading YAML (@bdraco
- #117388 )  - Update pytest warnings filter (@cdce8p
- #117413 )  - Allow templates for enabling automation triggers (@farmio
- #114458 )  - Add 
knx.telegramintegration specific trigger; update KNX Interface device trigger (@farmio- #107592 )  - Rename sharkiq coordinator module (@epenet
- #117429 )  - Use snapshot platform helper in Flexit bacnet (@joostlek
- #117428 )  - Move esphome coordinator to separate module (@epenet
- #117427 )  - Move abode service registration (@epenet
- #117418 )  - Adjust thread safety check messages to point to developer docs (@bdraco
- #117392 )  - Add diagnostic platform to utility_meter (@dgomes
- #114967 )  - Bump pyefergy to 22.5.0 (@tkdrob
- #117395 )  - Add context to 
telegram_botevents (@Shulyaka- #109920 )  - Move evil_genius_labs coordinator to separate module (@epenet
- #117435 )  - Add ability to change heating programs for heat pumps in ViCare integration (@CFenner
- #110924 )  - Rename flo coordinator module (@epenet
- #117438 )  - Use integration fallback configuration for tado water heater fallback (@ethemcemozkan
- #111014 )  - Re-introduce webhook to tedee integration (@zweckj
- #110247 )  - Update SmartThings codeowners (@andrewsayre
- #117448 )  - Rename wemo coordinator module (@epenet
- #117437 )  - Add Assist timers (@synesthesiam
- #117199 )  - Refactor Linear tests (@joostlek
- #116336 )  - Pass device_id to intent handlers (@synesthesiam
- #117442 )  - Some minor cleanups in WLED (@frenck
- #117453 )  - Make UniFi use runtime data (@Kane610
- #117457 )  - Enable raising ConfigEntryAuthFailed on BMW coordinator init (@rikroe
- #116643 )  - Fix lying docstring in entity_platform (@emontnemery
- #117450 )  - Add PM10 sensor to AirNow (@kamiyo
- #117432 )  - Bump opower to 0.4.5 and use new account.id (@c0mputerguru
- #117330 )  - Bump youless_api to 1.1.1 (@benvm
- #117459 )  - Remove “device_id” slot from timers (@synesthesiam
- #117460 )  - Add water meter to Youless intergration (@benvm
- #117452 )  - Set integration type for aurora_abb_powerone (@davet2001
- #117462 )  - Separate Blue Current timestamp sensors (@Floris272
- #111942 )  - Fix brand ID for Rainforest Automation (@cottsay
- #113770 )  - Add integration for APsystems EZ1 microinverter (@mawoka-myblock
- #114531 )  - Fix intent_type type (@balloob
- #117469 )  - Improve thread safety check messages to better convey impact (@bdraco
- #117467 )  - Add websocket API to get list of recorded entities (@bdraco
- #92640 )  - Bump codecov/codecov-action from 4.3.1 to 4.4.0 (@dependabot - #117472
)  - Split homeassistant_alerts constants and coordinator (@epenet
- #117475 )  - Rename gree coordinator module (@epenet
- #117474 )  - Add options flow to the airq integration (@Sibgatulin
- #109337 )  - Revert “Add Viam image processing integration” (@emontnemery
- #117477 )  - Revert “Bump opower to 0.4.5 and use new account.id” (@frenck
- #117476 )  - Rename add entities function in Aurora (@joostlek
- #117480 )  - Move ialarm coordinator to separate module (@epenet
- #117478 )  - Set integration type for generic (@davet2001
- #117464 )  - Add exception translations to System Bridge integration (@timmo001
- #112206 )  - Move gios coordinator to separate module (@epenet
- #117471 )  - Move idasen_desk coordinator to separate module (@epenet
- #117485 )  - Remove ignore-wrong-coordinator-module in pylint CI (@epenet
- #117479 )  - Rename mikrotik coordinator module (@epenet
- #117488 )  - Move melnor coordinator to separate module (@epenet
- #117486 )  - Move prusalink coordinators to separate module (@epenet
- #117495 )  - Move mill coordinator to separate module (@epenet
- #117493 )  - Move venstar coordinator to separate module (@epenet
- #117500 )  - Fix ghost events for Hue remotes (@marcelveldt
- #113047 )  - Android TV Remote: Support launching any app by its application ID/package name (@tronikos
- #116906 )  - Add Jellyfin audio_codec optionflow (@d-ylee
- #113036 )  - Improve error handing in kaiterra data retrieval when no aqi data is present (@AnilDaoud
- #112885 )  - Add alarm and connectivity binary_sensors to myuplink (@astrandb
- #111643 )  - Add select platform to Teslemetry (@Bre77
- #117422 )  - Post review comments on APsystems (@mawoka-myblock
- #117504 )  - Move vizio coordinator to separate module (@epenet
- #117498 )  - Move vallox coordinator to separate module (@epenet
- #117503 )  - Allow templates for enabling conditions (@farmio
- #117047 )  - Allow templates for enabling actions (@farmio
- #117049 )  - Add Reolink PIR entities (@starkillerOG
- #117507 )  - Add light platform to Linear garage door (@IceBotYT
- #111426 )  - Rename fritz coordinator module (@epenet
- #117440 )  - Do not register mqtt mock config flow with handlers (@jpbede
- #117521 )  - Set integration type for wyoming (@balloob
- #117519 )  - Fix the type of slot schema of intent handlers (@balloob
- #117520 )  - Add LLM tools (@Shulyaka
- #115464 )  - Don’t prioritize “name” slot if it’s a wildcard in default conversation agent (@synesthesiam
- #117518 )  - Bump bleak to 0.22.1 (@bdraco
- #117383 )  - Move google coordinator to separate module (@epenet
- #117473 )  - Add Webmin filesystem sensors (@autinerd
- #112660 )  - Move xbox coordinator to separate module (@epenet
- #117421 )  - Move switcher_kis coordinator to separate module (@epenet
- #117538 )  - Move gogogate2 coordinator to separate module (@epenet
- #117433 )  - Bump aioesphomeapi to 24.4.0 (@gnumpi
- #117543 )  - Bump adext to 0.4.3 (@tichris0
- #117496 )  - Move surepetcare coordinator to separate module (@epenet
- #117544 )  - Move upcloud coordinator to separate module (@epenet
- #117536 )  - Add functionality to Mastodon (@thejeffreystone
- #112862 )  - Only allow ethernet and wi-fi interfaces as unique ID in webmin (@autinerd
- #113084 )  - Improve ReloadServiceHelper typing (@cdce8p
- #117552 )  - Replace meaningless TypeVar usage (@cdce8p
- #117553 )  - Add Shelly motion sensor switch (@chemelli74
- #115312 )  - Move rainforest_eagle coordinator to separate module (@epenet
- #117556 )  - Move risco coordinator to separate module (@epenet
- #117549 )  - Improve recorder statistics error messages (@dfaour
- #113498 )  - Move pvpc coordinator to separate module (@epenet
- #117559 )  - Add area filter and rounded time to timers (@synesthesiam
- #117527 )  - Move pure_energie coordinator to separate module (@epenet
- #117560 )  - Update hass-nabucasa dependency to version 0.81.0 (@ludeeus
- #117568 )  - Use runtime data in Poolsense (@joostlek
- #117570 )  - Ensure gold and platinum integrations implement diagnostic (@epenet
- #117565 )  - Support reconfigure flow in Shelly integration (@bieniu
- #117525 )  - Refactor Poolsense config flow tests (@joostlek
- #117573 )  - Bump pyipp to 0.16.0 (@ctalkington
- #117583 )  - Add diagnostics for nws (@MatthewFlamm
- #117587 )  - Add Poolsense platform tests (@joostlek
- #117579 )  - Add Reolink battery entities (@starkillerOG
- #117506 )  - Use config entry runtime_data in nws (@MatthewFlamm
- #117593 )  - Mark HassJob target as Final (@cdce8p
- #117578 )  - Rework deCONZ services to load once and never unload (@Kane610
- #117592 )  - Remove old deCONZ entity cleanup (@Kane610
- #117590 )  - Rename openweathermap coordinator module (@epenet
- #117609 )  - Move opengarage coordinator to separate module (@epenet
- #117608 )  - Fix dlna_dmr task flood when player changes state (@bdraco
- #117606 )  - Bump actions/checkout from 4.1.4 to 4.1.6 (@dependabot - #117612
)  - Fix Reolink battery translation_key unneeded (@starkillerOG
- #117616 )  - Bump pre-commit to 3.7.1 (@epenet
- #117619 )  - Rename hassio coordinator module (@epenet
- #117611 )  - Extract Monzo coordinator in separate module (@joostlek
- #117034 )  - Prevent 
const.pyin coverage ignore list (@epenet- #117625 )  - Update mypy-dev to 1.11.0a2 (@cdce8p
- #117630 )  - Use PEP 695 for simple type aliases (@cdce8p
- #117633 )  - Android TV Remote: Mention the TV will turn on in the reauth flow (@tronikos
- #117548 )  - Fix Tibber sensors state class (@basbruss
- #117085 )  - Move modern_forms coordinator to separate module (@epenet
- #117610 )  - Add snapshot tests to Balboa (@joostlek
- #117620 )  - Use PEP 695 type alias for ConfigEntry types (@cdce8p
- #117632 )  - Add snapshot tests to elmax (@epenet
- #117637 )  - Move elmax coordinator to separate module (@epenet
- #117425 )  - Fix icons and strings in Balboa (@joostlek
- #117618 )  - Adjust bootstrap script to use correct version of pre-commit (@epenet
- #117621 )  - Use PEP 695 for decorator typing (1) (@cdce8p
- #117638 )  - Use PEP 695 for decorator typing (3) (@cdce8p
- #117640 )  - Use PEP 695 for decorator typing (2) (@cdce8p
- #117639 )  - Move p1_monitor coordinator to separate module (@epenet
- #117562 )  - Add Google Gen AI Conversation Agent Entity (@allenporter
- #116362 )  - Bump pyduotecno to 2024.5.1 (@Cereal2nd
- #117643 )  - Fix Habitica doing blocking I/O in the event loop (@tr4nt0r
- #117647 )  - Add AlarmDecoder device info (@tichris0
- #117357 )  - Move tomorrowio coordinator to separate module (@epenet
- #117537 )  - Move philips_js coordinator to separate module (@epenet
- #117561 )  - Clean up some bad line wrapping in Hydrawise (@dknowles2
- #117671 )  - Add missing string 
reconfigure_successfulfor NAM reconfigure flow (@bieniu- #117683 )  - Bump google-generativeai==0.5.4 (@tronikos
- #117680 )  - Use PEP 695 for decorator typing with type aliases (2) (@cdce8p
- #117663 )  - Use PEP 695 for decorator typing with type aliases (1) (@cdce8p
- #117662 )  - Use PEP 695 for function annotations (3) (@cdce8p
- #117660 )  - Use PEP 695 for function annotations (2) (@cdce8p
- #117659 )  - Use PEP 695 for function annotations (1) (@cdce8p
- #117658 )  - Improve YieldFixture typing (@cdce8p
- #117686 )  - Use PEP 695 for dispatcher helper typing (@cdce8p
- #117685 )  - Remove useless TypeVars (@cdce8p
- #117687 )  - Use generator expression in poolsense (@joostlek
- #117582 )  - Move plenticore coordinators to separate module (@epenet
- #117491 )  - Improve Monzo tests (@joostlek
- #117036 )  - Improve diagnostics in Teslemetry (@Bre77
- #117613 )  - Add 
__pycache__to gitignore (@autinerd- #114056 )  - Refactor Aurora tests (@joostlek
- #117323 )  - Use remove_device helper in tasmota tests (@epenet
- #116617 )  - Allow manual delete of stale Renault vehicles (@epenet
- #116229 )  - Move entity definitions into own module in AVM Fritz!Tools (@mib1185
- #117701 )  - Add GitHub CoPilot to extensions devcontainer (@balloob
- #117699 )  - Remove AngellusMortis as code-owner Unifi Protect (@balloob
- #117708 )  - Avoid Shelly RPC reconnect during device shutdown (@thecode
- #117702 )  - Add API class to LLM helper (@balloob
- #117707 )  - Use SnmpEngine stored in hass.data by singleton in Brother integration (@bieniu
- #117043 )  - Bump PlexAPI to 4.15.13 (@jjlawren
- #117712 )  - Bump monzopy to 1.2.0 (@JakeMartin-ICL
- #117730 )  - Use reauth helper in devolo Home Network (@Shutgun
- #117736 )  - Bump aioshelly to 10.0.0 (@thecode
- #117728 )  - Use helper in Withings reauth (@joostlek
- #117727 )  - Use reauth helper in devolo Home Control (@Shutgun
- #117739 )  - Refactor tests for Brother integration (@bieniu
- #117377 )  - Bump pydiscovergy to 3.0.1 (@jpbede
- #117740 )  - LLM Tools support for Google Generative AI integration (@Shulyaka
- #117644 )  - Update elmax_api to v0.0.5 (@albertogeniola
- #117693 )  - Add turn_on to SamsungTV remote (@epenet
- #117403 )  - Fix missing type for mqtt websocket wrapper (@bdraco
- #117752 )  - Add setup time detail to diagnostics (@bdraco
- #117766 )  - Update pylint to 3.2.2 (@cdce8p
- #117770 )  - Move environment_canada coordinator to separate module (@epenet
- #117426 )  - Use PEP 695 for class annotations (1) (@cdce8p
- #117775 )  - Use PEP 695 for class annotations (2) (@cdce8p
- #117776 )  - Use PEP 695 for class annotations (4) (@cdce8p
- #117778 )  - Use PEP 695 for class annotations (3) (@cdce8p
- #117777 )  - Use PEP 695 for hass_dict annotations (@cdce8p
- #117779 )  - Use PEP 695 for covariant class annotations (@cdce8p
- #117780 )  - Fix blocking I/O in the event loop when loading timezones (@bdraco
- #117721 )  - Downgrade point quality scale to silver (@epenet
- #117783 )  - Downgrade tellduslive quality scale to silver (@epenet
- #117784 )  - Set integration_type to device for apsystems integration (@mawoka-myblock
- #117782 )  - Update mypy-dev to 1.11.0a3 (@cdce8p
- #117786 )  - Use PEP 695 misc (@cdce8p
- #117788 )  - Use PEP 695 for function annotations with scoping (@cdce8p
- #117787 )  - Enable UP040 ruff check (@cdce8p
- #117792 )  - Unpause media players that were paused outside voice (@synesthesiam
- #117575 )  - Use PEP 695 type alias in tests (@cdce8p
- #117797 )  - Remove quotes surrounding annotations (@cdce8p
- #117817 )  - Bump pynws to 1.8.1 for nws (@MatthewFlamm
- #117820 )  - Detect incorrect exception in forwarded platforms (@bdraco
- #117754 )  - Bump dbus-fast to 2.21.3 (@bdraco
- #117824 )  - Bump tesla-powerwall to 0.5.2 (@bdraco
- #117823 )  - Improve error message when template is rendered from wrong thread (@bdraco
- #117822 )  - Update scaffold templates to use runtime_data (@cdce8p
- #117819 )  - Improve zwave_js TypeVar usage (@cdce8p
- #117810 )  - Stop the nest subscriber on Home Assistant stop (@allenporter
- #117830 )  - Bump codecov/codecov-action from 4.4.0 to 4.4.1 (@dependabot - #117836
)  - Refactor SamsungTV auth check (@epenet
- #117834 )  - Bump github/codeql-action from 3.25.5 to 3.25.6 (@dependabot - #117835
)  - Tesla wall connector add sensors (@bajansen
- #117769 )  - Remove @ from codeowners when downloading diagnostics (@bdraco
- #117825 )  - Remove future import to fix broken typing.get_type_hints call (@cdce8p
- #117837 )  - Bump aioautomower to 2024.5.1 (@Thomas55555
- #117815 )  - Convert solax to use DataUpdateCoordinator (@bdraco
- #117767 )  - Use PEP 695 misc (2) (@cdce8p
- #117814 )  - Use uv instead of pip in development env (@edenhaus
- #113517 )  - Remove silver integrations from NO_DIAGNOSTICS (@epenet
- #117840 )  - Simplify samsungtv unload (@epenet
- #117838 )  - Small speed up to adding event bus listeners (@bdraco
- #117849 )  - Simplify service description cache logic (@bdraco
- #117846 )  - Cache area registry JSON serialize (@bdraco
- #117847 )  - Speed up async_get_loaded_integrations (@bdraco
- #117851 )  - Small speed up to logbook humanify (@bdraco
- #117854 )  - Add support for Glances v4 (@wittypluck
- #117664 )  - Add description to intent handlers and use in LLM helper (@synesthesiam
- #117864 )  - Add missing placeholder name to reauth (@mkmer
- #117869 )  - Address late feedback Google LLM (@balloob
- #117873 )  - Make Google AI model picker a dropdown (@balloob
- #117878 )  - Enable Ruff RET502 (@autinerd
- #115139 )  - Add 
async_turn_on/offmethods for KNX climate entities (@farmio- #117882 )  - Add data point type option to 
knx.telegramtrigger (@farmio- #117463 )  - Add value_template option to KNX expose (@farmio
- #117732 )  - Simplify and speed up mqtt_config_entry_enabled check (@bdraco
- #117886 )  - Fix mqtt timer churn (@bdraco
- #117885 )  - Reduce overhead to call get_mqtt_data (@bdraco
- #117887 )  - LLM Tools: Add device_id (@Shulyaka
- #117884 )  - Avoid creating tasks to subscribe to discovery in MQTT (@bdraco
- #117890 )  - LLM Tools support for OpenAI integration (@Shulyaka
- #117645 )  - Reduce overhead to validate mqtt topics (@bdraco
- #117891 )  - Support carbon dioxide and formaldehyde sensors in deCONZ (@Kane610
- #117877 )  - Small speed up to creating flows (@bdraco
- #117896 )  - Improve typing via hassfest serializer (@jschlyter
- #117382 )  - Add coordinator to SamsungTV (@epenet
- #117863 )  - Adjust conftest type hints (@epenet
- #117900 )  - Keep observation data valid for 60 min and retry with no data for nws (@MatthewFlamm
- #117109 )  - Add MAC cleanup to SamsungTV (@epenet
- #117906 )  - Adopt new runtime entry data model for AlarmDecoder (@tichris0
- #117856 )  - Refactor MQTT to replace get_mqtt_data with HassKey (@bdraco
- #117899 )  - Bump habluetooth to 3.1.0 (@bdraco
- #117905 )  - Remove duplicate code in SamsungTV (@epenet
- #117913 )  - Exclude modbus from diagnostics hassfest check (@joostlek
- #117855 )  - Fix performance regression with SignalType (@cdce8p
- #117920 )  - Add clear night to smhi (@gjohansson-ST
- #115998 )  - Use common title for reauth confirm in Whirlpool config flow (@mkmer
- #117924 )  - Google Generative AI: Handle response with empty parts in generate_content (@tronikos
- #117908 )  - Add switch for stay out zones in Husqvarna Automower (@Thomas55555
- #117809 )  - Fail if targeting all devices in the house in service intent handler (@synesthesiam
- #117930 )  - Speed up registry indices (@bdraco
- #117897 )  - Simplify SkyConnect setup flow (@puddly
- #117868 )  - Add lock to token validity check (@joostlek
- #117912 )  - Move nest diagnostic tests to use snapshots (@allenporter
- #117929 )  - Migrate issue registry to use singleton helper (@bdraco
- #117848 )  - Add available and state to SamsungTV remote (@epenet
- #117909 )  - Store runtime data inside the config entry in iBeacon (@mib1185
- #117936 )  - Add number entities for screenlogic values used in SI calc (@dieselrabbit
- #117812 )  - Send MEDIA_ANNOUNCE flag to ESPHome media_player (@gnumpi
- #116993 )  - Refactor shared mqtt schema’s to new module (@jbouwh
- #117944 )  - Update LLM no tools message (@balloob
- #117935 )  - Refactor state_reported listener setup to avoid merge in async_fire_internal (@bdraco
- #117953 )  - Bump ruff to 0.4.5 (@autinerd
- #117958 )  - Allow to reconfigure integrations with 
single_config_entryset (@jpbede- #117939 )  - Better handling of EADDRINUSE for Govee light (@Galorhallen
- #117943 )  - Add Azure data explorer (@kaareseras
- #68992 )  - Fix run-in-env script for not running in venv (@farmio
- #117961 )  - Simplify async_track_time_interval implementation (@bdraco
- #117956 )  - Bump airgradient to 0.4.1 (@joostlek
- #117963 )  - Improve fyta tests (@dontinelli
- #117661 )  - Cleanup pylint ignore (@epenet
- #117964 )  - Add snapshot tests to moehlenhoff_alpha2 (@epenet
- #117967 )  - Add switch platform to Teslemetry (@Bre77
- #117482 )  - Use SnapshotAssertion in rainmachine diagnostic tests (@epenet
- #117979 )  - Add snapshot platform tests to rainmachine (@epenet
- #117978 )  - Move rainmachine coordinator to separate module (@epenet
- #117983 )  - Fix turbojpeg init doing blocking I/O in the event loop (@bdraco
- #117971 )  - Cache serialize of manifest for loaded integrations (@bdraco
- #117965 )  - Deconz - Added trigger support for Aqara WB-R02D mini switch (@agrauballe
- #117917 )  - Bump to google-nest-sdm to 4.0.4 (@allenporter
- #117982 )  - Enable Switcher assume buttons for all devices (@thecode
- #117993 )  - Bump habluetooth to 3.1.1 (@bdraco
- #117992 )  - Add snapshot tests to omnilogic (@epenet
- #117986 )  - Move moehlenhoff_alpha2 coordinator to separate module (@epenet
- #117970 )  - Remove Switcher YAML import support (@thecode
- #117994 )  - Google gen updates (@balloob
- #117893 )  - Update codespell to 2.3.0 (@cdce8p
- #118001 )  - Add lock platform to Teslemetry (@Bre77
- #117344 )  - Remove unused snapshots [a-f] (@Thomas55555
- #117999 )  - Fix vallow test fixtures (@cdce8p
- #118003 )  - Move omnilogic coordinator to separate module (@epenet
- #118014 )  - Add binary sensor platform to Teslemetry (@Bre77
- #117230 )  - Switcher - use single_config_entry and register_discovery_flow in con… (@thecode
- #118000 )  - Add models to energy sites in Teslemetry (@Bre77
- #117419 )  - Add snapshot tests to plaato (@epenet
- #118017 )  - Daikin Aircon - Add strings and debug (@kingy444
- #116674 )  - Add sequence action for automations & scripts (@frenck
- #117690 )  - Move plaato coordinator to separate module (@epenet
- #118019 )  - Use snapshot in renault diagnostics tests (@epenet
- #118021 )  - Migrate OpenWeaterMap to new library (support API 3.0) (@freekode
- #116870 )  - Add logging to SamsungTV turn-on (@epenet
- #117962 )  - Update typing-extensions to 4.12.0 (@cdce8p
- #118020 )  - Avoid calling split_entity_id in event add/remove filters (@bdraco
- #118015 )  - Improve callable annotations (@cdce8p
- #118024 )  - Fix partial typing (@cdce8p
- #118022 )  - Update codespell ignore list (@cdce8p
- #118018 )  - Fix issue with device_class.capitalize() in point (@fredrike
- #117969 )  - Add missing Ecovacs life spans (@Ulfmerbold2000
- #117134 )  - Add snapshot tests to nuki (@epenet
- #117973 )  - Add error message to snapshot_platform helper (@epenet
- #117974 )  - Catch client connection error in Honeywell (@mkmer
- #117502 )  - Convert namedtuple to NamedTuple for smartthings (@autinerd
- #115395 )  - Refactor Husqvarna Automower (@Thomas55555
- #117938 )  - Move nuki coordinator to separate module (@epenet
- #117975 )  - Move TibberDataCoordinator to separate module (@epenet
- #118027 )  - Create bound callback_message_received method for handling mqtt callbacks (@jbouwh
- #117951 )  - Add Cover platform to Teslemetry (@Bre77
- #117340 )  - Remove duplicate tests in generic_thermostat (@esciara
- #105622 )  - Improve error logging on invalid MQTT entity state (@jbouwh
- #118006 )  - Add APRS object tracking (@PhilRW
- #113080 )  - Make co/co2 threshold configurable via entity_config (@FWeinb
- #112978 )  - Add config flow to Jewish Calendar (@yuvalabou
- #84464 )  - Add json cache to lovelace config (@bdraco
- #117843 )  - Improve annotation styling (@cdce8p
- #118032 )  - Use issue_registry fixture in core tests (@epenet
- #118042 )  - Update Rachio hose timer battery sensor (@brg468
- #118045 )  - Rename MQTT mixin classes (@jbouwh
- #118039 )  - Remove strict connection (@edenhaus
- #117933 )  - Use issue_registry fixture in component tests (@epenet
- #118041 )  - Change ZoneInfo to async_get_time_zone in fyta (@dontinelli
- #117996 )  - Add types to event tracker data (@bdraco
- #118010 )  - Exclude gold and platinum integrations from .coveragerc (@epenet
- #117563 )  - Fix intent helper test (@synesthesiam
- #118053 )  - Require registered device id for all timer intents (@synesthesiam
- #117946 )  - Remove unneeded asserts (@balloob
- #118056 )  - Update OpenAI defaults (@balloob
- #118059 )  - Allow llm API to render dynamic template prompt (@balloob
- #118055 )  - Add tests to Zeversolar integration (@NECH2004
- #117928 )  - Refactor mqtt callbacks for alarm_control_panel (@jbouwh
- #118037 )  - Refactor mqtt callbacks for cover (@jbouwh
- #118044 )  - Add activity type to appropriate RainMachine switches (@bachya
- #117875 )  - Significantly speed up single use callback dispatchers (@bdraco
- #117934 )  - Refactor mqtt callbacks for climate and water_heater (@jbouwh
- #118040 )  - Move recorder chunk utils to shared collection utils (@jbouwh
- #118065 )  - Consequently ignore empty MQTT state payloads and set state to 
unknownon “None” payload (@jbouwh- #117813 )  - Split mqtt subscribe and unsubscribe calls to smaller chunks (@jbouwh
- #118035 )  - Avoid generating matchers that will never be used in MQTT (@bdraco
- #118068 )  - Avoid catch_log_exception overhead in MQTT for simple callbacks (@bdraco
- #118036 )  - Reduce duplicate code to handle mqtt message replies (@bdraco
- #118067 )  - Use defaultdict instead of setdefault in mqtt client (@bdraco
- #118070 )  - Fix lingering mqtt test (@jbouwh
- #118072 )  - Google Generative AI: add timeout to ensure we don’t block HA startup (@tronikos
- #118066 )  - Add Google Generative AI safety settings (@tronikos
- #117679 )  - Add user name and location to the LLM assist prompt (@Shulyaka
- #118071 )  - Add device info to Google (@balloob
- #118074 )  - Speed up is_template_string by avoiding regex engine (@bdraco
- #118076 )  - Remove OrderedDict from entity_values as dict guarantees order on newer cpython (@bdraco
- #118081 )  - Speed up async_render_with_possible_json_value (@bdraco
- #118080 )  - Avoid template context manager overhead when template is already compiled (@bdraco
- #118079 )  - Remove unused code in template helper (@bdraco
- #118075 )  - Convert remaining mqtt attrs classes to dataclasses (@bdraco
- #118073 )  - Add device info to OpenAI (@balloob
- #118077 )  - Fix default Google AI prompt on initial setup (@balloob
- #118078 )  - Add no-API LLM prompt back to Google (@balloob
- #118082 )  - Add recommended model options to OpenAI (@balloob
- #118083 )  - Update Google safety defaults to match Google (@balloob
- #118084 )  - Flip prompts to put user prompt on top (@balloob
- #118085 )  - Bump velbusaio to 2024.5.1 (@Cereal2nd
- #118091 )  - Speed up removing MQTT subscriptions (@bdraco
- #118088 )  - Store runtime data inside the config entry in Spotify (@mib1185
- #117037 )  - Store runtime data inside the config entry in Forecast Solar (@mib1185
- #117033 )  - Adjust title of integration sensor (@elupus
- #116954 )  - Bump pyenvisalink version to 4.7 (@allistermaguire
- #118086 )  - Simplify mqtt discovery cooldown calculation (@bdraco
- #118095 )  - Migrate firmata to use async_unload_platforms (@bdraco
- #118098 )  - Migrate vera to use async_unload_platforms (@bdraco
- #118099 )  - Migrate zha to use async_unload_platforms (@bdraco
- #118100 )  - Migrate zwave_js to use async_unload_platforms (@bdraco
- #118101 )  - Switch mqtt to use async_unload_platforms (@bdraco
- #118097 )  - Store Switcher runtime data in config entry (@thecode
- #118054 )  - Small speed up to mqtt _async_queue_subscriptions (@bdraco
- #118094 )  - Allow Meraki API v2 or v2.1 (@nopoz
- #115828 )  - Freeze and fix plaato CI tests (@jbouwh
- #118103 )  - Use PEP 695 type alias for ConfigEntry type in Spotify (@mib1185
- #118106 )  - Add device tracker platform to Teslemetry (@Bre77
- #117341 )  - Use PEP 695 type alias for ConfigEntry type in Forecast Solar (@mib1185
- #118107 )  - Improve nws tests by centralizing and removing unneeded 
patching (@MatthewFlamm- #118052 )  - Google Generative AI: 100% test coverage for conversation (@tronikos
- #118112 )  - Remove deprecated services from AVM Fritz!Box Tools (@mib1185
- #118108 )  - Add diagnostics support for Fronius (@farmio
- #117845 )  - Fix mqtt callback typing (@cdce8p
- #118104 )  - Add conversation agent debug tracing (@allenporter
- #118124 )  - Break long strings in LLM tools (@Shulyaka
- #118114 )  - Reach platinum level in Minecraft Server (@elmurato
- #105432 )  - Fix mqtt callback exception logging (@jbouwh
- #118138 )  - Rework mqtt callbacks for device_tracker (@jbouwh
- #118110 )  - Rework mqtt callbacks for fan (@jbouwh
- #118115 )  - Refactor mqtt callbacks for humidifier (@jbouwh
- #118116 )  - Refactor mqtt callbacks for lock (@jbouwh
- #118118 )  - Refactor mqtt callbacks for lawn_mower (@jbouwh
- #118117 )  - Refactor mqtt callbacks for update platform (@jbouwh
- #118131 )  - Refactor mqtt callbacks for siren (@jbouwh
- #118125 )  - Refactor mqtt callbacks for number (@jbouwh
- #118119 )  - Refactor mqtt callbacks for select platform (@jbouwh
- #118121 )  - Refactor mqtt callbacks for text (@jbouwh
- #118130 )  - Refactor mqtt callbacks for switch (@jbouwh
- #118127 )  - Refactor mqtt callbacks for vacuum (@jbouwh
- #118137 )  - Rework mqtt callbacks for camera, image and event (@jbouwh
- #118109 )  - Refactor mqtt callbacks for light basic, json and template schema (@jbouwh
- #118113 )  - Clean up Shelly unneccesary async_block_till_done calls (@thecode
- #118141 )  - Make mqtt internal subscription a normal function (@bdraco
- #118092 )  - Refactor mqtt callbacks for valve (@jbouwh
- #118140 )  - Clean up WebOS TV unneccesary async_block_till_done calls (@thecode
- #118142 )  - Remove code that is no longer used in mqtt (@bdraco
- #118143 )  - Bump aioswitcher to 3.4.3 (@thecode
- #118123 )  - Avoid constructing mqtt json attrs template if its not defined (@bdraco
- #118146 )  - Add button platform to Teslemetry (@Bre77
- #117227 )  - Add media player platform to Teslemetry (@Bre77
- #117394 )  - Bump py-sucks to 0.9.10 (@mib1185
- #118148 )  - Add number platform to Teslemetry (@Bre77
- #117470 )  - Clean up AVM Fritz!Box Tools unneccesary async_block_till_done call (@mib1185
- #118165 )  - Clean up PIhole unneccesary async_block_till_done call (@mib1185
- #118166 )  - Bump subarulink to 0.7.11 (@G-Two
- #117743 )  - Improve script disallowed recursion logging (@bdraco
- #118151 )  - Add update platform to Teslemetry (@Bre77
- #118145 )  - Fix parallel script execution in queued mode (@bdraco
- #118153 )  - Don’t crash when firing event for timer for unregistered device (@balloob
- #118132 )  - Speed up template result parsing (@bdraco
- #118168 )  - Avoid expensive inspection of callbacks to setup mqtt subscriptions (@bdraco
- #118161 )  - Reduce duplicate publish code in mqtt (@bdraco
- #118163 )  - Fix unnecessary calls to update entity display_precision (@bdraco
- #118159 )  - Add render prompt method when no API selected (@balloob
- #118136 )  - Add repair for detached addon issues (@mdegat01
- #118064 )  - Add async_get_hass_or_none (@bdraco
- #118164 )  - Avoid constructing mqtt availability template objects when there is no template (@bdraco
- #118171 )  - Remove remove unreachable code in async_wait_for_mqtt_client (@jbouwh
- #118172 )  - Collapse websocket_api _state_diff into _state_diff_event (@bdraco
- #118170 )  - Use fixtures to setup UniFi config entries (@Kane610
- #118126 )  - Upgrade thethingsnetwork to v3 (@angelnu
- #113375 )  - Add Google Generative AI reauth flow (@tronikos
- #118096 )  - Move Jewish calendar constants to const file (@tsvi
- #118180 )  - Bump holidays to 0.49 (@gjohansson-ST
- #118181 )  - Simplify subscription mqtt entity platforms (@jbouwh
- #118177 )  - Simplify mqtt connection state dispatcher (@bdraco
- #118184 )  - Move sensor mqtt state update functions to bound methods (@bdraco
- #118188 )  - Simplify mqtt switch state message processor (@bdraco
- #118187 )  - Promote Google Generative AI to platinum quality (@tronikos
- #118158 )  - Fix mqtt switch types (@bdraco
- #118193 )  - Forward timer events to Wyoming satellites (@synesthesiam
- #118128 )  - Fix flaky test in Teslemetry (@Bre77
- #118196 )  - Avoid creating template objects in mqtt sensor if they are not configured (@bdraco
- #118194 )  - Standardize LLM instructions prompt (@balloob
- #118195 )  - Convert mqtt entity discovery to use callbacks (@bdraco
- #118200 )  - Pre-set the HassJob job_type cached_property if its known (@bdraco
- #118199 )  - Add (deep)copy support to read only dict (@balloob
- #118204 )  - Remove unneeded dispatcher in mqtt discovery (@bdraco
- #118205 )  - Teach Context about deepcopy (@balloob
- #118206 )  - Improve performance of verify_event_loop_thread (@bdraco
- #118198 )  - Remove unneeded time fetch in mqtt discovery (@bdraco
- #118208 )  - Add exposed entities to the Assist LLM API prompt (@balloob
- #118203 )  - Fix thundering herd of mqtt component setup tasks (@bdraco
- #118210 )  - Remove extra inner function for mqtt reload service (@bdraco
- #118211 )  - Create EventEntity for Folder Watcher (@gjohansson-ST
- #116526 )  - Use config entry runtime data in Scrape (@gjohansson-ST
- #118191 )  - Eagerly remove MQTT entities on reload (@bdraco
- #118213 )  - Remove legacy mqtt debug_info implementation (@bdraco
- #118212 )  - Fix mqtt chunk subscribe logging (@bdraco
- #118217 )  - Increase MQTT incoming buffer to 8MiB (@bdraco
- #118220 )  - Refactor Twitch tests (@joostlek
- #114330 )  - Remove translation and icon component path functions (@bdraco
- #118214 )  - Add config flow to Media Extractor (@joostlek
- #115717 )  - Remove platform setup from Jewish calendar (@joostlek
- #118226 )  - Bump bimmer_connected to 0.15.3 (@rikroe
- #118179 )  - Implement reconfigure step for enphase_envoy (@catsmanac
- #115781 )  - Try to read multiple packets in MQTT (@bdraco
- #118222 )  - Fix unique_id not being unique in HomeWizard (@DCSBL
- #117940 )  - Add key expiry disabled binary sensor to Tailscale (@claha
- #117667 )  - Bump yt-dlp to 2024.05.26 (@joostlek
- #118229 )  - Remove platform sensor from Jewish Calendar binary sensor (@tsvi
- #118231 )  - Add Fyta sensor tests (@dontinelli
- #117995 )  - Allow older vehicles to sleep in Teslemetry (@Bre77
- #117229 )  - Use area_registry fixture in component tests (@epenet
- #118236 )  - Fix XMPP giving up on first auth fail (@shelvacu
- #118224 )  - Enforce namespace import in components (@epenet
- #118218 )  - Bump 
nettigo_air_monitorto version 3.1.0 (@bieniu- #118227 )  - Add quality scale (platinum) to tedee integration (@zweckj
- #106940 )  - Enforce namespace import in core (@epenet
- #118235 )  - Convert Feedreader to use an update coordinator (@mib1185
- #118007 )  - Add helper strings for myuplink application credentials (@astrandb
- #115349 )  - Migrate tedee to 
entry.runtime_data(@zweckj- #118246 )  - Add diagnostics for fyta (@dontinelli
- #118234 )  - Add entry.runtime_data typing for Teslemetry (@gjohansson-ST
- #118253 )  - Add new lock states to tedee integration (@zweckj
- #117108 )  - Cleanup tag integration (@gjohansson-ST
- #118241 )  - Fix mqtt not publishing null payload payload to remove discovery (@jbouwh
- #118261 )  - Handle multiple function_call and text parts in Google Generative AI (@tronikos
- #118270 )  - Align max expected entities constant between modules (@bdraco
- #118102 )  - Make sure HassToggle and HassSetPosition have description (@tronikos
- #118267 )  - Bump aioesphomeapi to 24.5.0 (@jesserockz
- #118271 )  - LLM Assist API: Inline all exposed entities (@balloob
- #118273 )  - Rewrite flow handler to flow result conversion as a list comp (@bdraco
- #118269 )  - Make sure conversation entities have correct name in list output (@balloob
- #118272 )  - Fix freezing on HA startup when there are multiple Google Generative AI config entries (@tronikos
- #118282 )  - Fix rooms not being matched correctly in sharkiq.clean_room (@benaclejames
- #118277 )  - Add diagnostics to Google Generative AI (@tronikos
- #118262 )  - Migrate mqtt discovery subscribes to use internal helper (@bdraco
- #118279 )  - Mock llm prompts in test_default_prompt for Google Generative AI (@tronikos
- #118286 )  - Change strings to const in Jewish Calendar (@tsvi
- #118274 )  - Bump aiovlc to 0.3.2 (@mib1185
- #118258 )  - Fix flakey bootstrap test (@bdraco
- #118285 )  - Use entry.runtime_data in Tessie (@Bre77
- #118287 )  - Add additional Huawei LTE 5G sensors (@scop
- #108928 )  - Fix some typing errors in Bring integration (@tr4nt0r
- #115641 )  - Add DSMR Reader tests (@erwindouna
- #115808 )  - Migrate mqtt mixin async_added_to_hass inner functions to bound methods (@bdraco
- #118280 )  - Add diagnostics test to AndroidTV (@ollo69
- #117129 )  - Add Matter fan platform (@lboue
- #111212 )  - Bump reolink-aio to 0.8.11 (@starkillerOG
- #118294 )  - Fix Matter device ID for non-bridged composed device (@marcelveldt
- #118256 )  - Use registry fixtures in tests (tailscale) (@epenet
- #118301 )  - Add reconfigure step for vallox (@slovdahl
- #115915 )  - Use registry fixtures in tests (a-h) (@epenet
- #118288 )  - Use registry fixtures in tests (m-n) (@epenet
- #118291 )  - Use registry fixtures in tests (o-p) (@epenet
- #118292 )  - Use registry fixtures in scaffold (@epenet
- #118308 )  - Use registry fixtures in tests (t-u) (@epenet
- #118297 )  - Use registry fixtures in tests (r) (@epenet
- #118293 )  - Use registry fixtures in tests (v-y) (@epenet
- #118299 )  - Thread: Add more Thread vendor to brand mappings (@Poshy163
- #115888 )  - Use registry fixtures in tests (s) (@epenet
- #118295 )  - Add more supervisor info to system info panel (@mdegat01
- #115715 )  - Handle generic commands as area commands in the LLM Assist API (@balloob
- #118276 )  - Don’t set ‘assist in progess’ flag on wake_word-end (@chatziko
- #113585 )  - Enforce namespace use for import conventions (@epenet
- #118215 )  - Bump intents and add tests for new error messages (@synesthesiam
- #118317 )  - Use registry fixtures in tests (z) (@epenet
- #118300 )  - Add more type hints to pylint plugin (@epenet
- #118319 )  - Add temperature slot to light turn on intent (@synesthesiam
- #118321 )  - Respect WyomingSatelliteMuteSwitch state on start (@synesthesiam
- #118320 )  - [esphome] Assist timers (@jesserockz
- #118275 )  - Raise UpdateFailed on fyta API error (@dontinelli
- #118318 )  - Add platforms to intent handlers (@synesthesiam
- #118328 )  - Speed up mqtt debug info on message callback (@bdraco
- #118303 )  - Filter timers more when pausing/unpausing (@synesthesiam
- #118331 )  - Mark sonos group update a background task (@bdraco
- #118333 )  - [esphome] 100% voice assistant test coverage (@jesserockz
- #118334 )  - Use None default for traccar server battery level sensor (@ludeeus
- #118324 )  - Several fixes for the Matter climate platform (@marcelveldt
- #118322 )  - Fix source_change not triggering an update (@mj23000
- #118312 )  - Update the recommended model for Google Gen AI (@balloob
- #118323 )  - Use del instead of pop in the entity platform remove (@bdraco
- #118337 )  - Replace pop calls with del where the result is discarded in mqtt (@bdraco
- #118338 )  - Replace pop calls with del where the result is discarded in entity (@bdraco
- #118340 )  - LLM Assist API to ignore intents if not needed for exposed entities or calling device (@balloob
- #118283 )  - Add Conversation command to timers (@synesthesiam
- #118325 )  - Tweak Assist LLM API prompt (@balloob
- #118343 )  - Small speed up to connecting dispatchers (@bdraco
- #118342 )  - Reduce the intent response data sent to LLMs (@balloob
- #118346 )  - Add cache to more complex entity filters (@bdraco
- #118344 )  - Improve websocket message coalescing to handle thundering herds better (@bdraco
- #118268 )  - Replace pop calls with del where the result is discarded in restore_state (@bdraco
- #118339 )  - Fix last_reported_timestamp not being updated when last_reported is changed (@bdraco
- #118341 )  - Use runtime_data in ping (@jpbede
- #118332 )  - Fix epic_games_store mystery game URL (@Quentame
- #118314 )  - Add smoke detector temperature to Yale Smart Alarm (@gjohansson-ST
- #116306 )  - Add august open action (@m10x
- #113795 )  - Add OSO Energy binary sensors (@osohotwateriot
- #117174 )  - Update zwave_js WS APIs for provisioning (@raman325
- #117400 )  - Improve typing for 
callsfixture in tests (a-l) (@epenet- #118349 )  - Add ws endpoint to remove expiration date from refresh tokens (@edenhaus
- #117546 )  - Bump docker/login-action from 3.1.0 to 3.2.0 (@dependabot - #118351
)  - Add Google assistant Gate device type (@Bygood91
- #118144 )  - Make Recorder dialect_name a cached_property (@bdraco
- #117922 )  - Rename calls fixture in calendar tests (@epenet
- #118353 )  - Rename calls fixture in mqtt tests (@epenet
- #118354 )  - Rename calls fixture in components tests (@epenet
- #118355 )  - Improve typing for 
callsfixture in tests (m-z) (@epenet- #118350 )  - Adjust add-on installation error message (@agners
- #118309 )  - Rename service_calls fixture in template tests (@epenet
- #118358 )  - Add more tests to Yale Smart Alarm (@gjohansson-ST
- #116501 )  - Add DSMR Reader icons (@erwindouna
- #118329 )  - Add default code to alarm_control_panel (@gjohansson-ST
- #112540 )  - Discover new device at runtime in Plugwise (@bouwew
- #117688 )  - Allow MQTT device based auto discovery (@jbouwh
- #109030 )  - Extend image_upload to return the original image (@Nezz
- #116652 )  - Update pylaunches dependency to version 2.0.0 (@ludeeus
- #118362 )  - Set quality scale of fyta to platinum (@dontinelli
- #118307 )  - Fix issue when you have multiple Google Generative AI config entries and you remove one of them (@tronikos
- #118365 )  - Support in blueprint schema for input sections (@karwosts
- #110513 )  - Expose useful media player attributes to LLMs (@tronikos
- #118363 )  - Fix LLM tracing for Google Generative AI (@tronikos
- #118359 )  - Ask LLM to pass area name and domain (@tronikos
- #118357 )  - Default to gemini-1.5-flash-latest in Google Generative AI (@tronikos
- #118367 )  - Add LogCaptureFixture type hints in tests (@epenet
- #118372 )  - Add SnapshotAssertion type hints in tests (@epenet
- #118371 )  - Bump pyosoenergyapi to 1.1.4 (@osohotwateriot
- #118368 )  - Add AiohttpClientMocker type hints in tests (@epenet
- #118373 )  - Add ClientSessionGenerator type hints in tests (@epenet
- #118377 )  - Bump yt-dlp to 2024.05.27 (@joostlek
- #118378 )  - Add Android TV Remote debug logs to help with zeroconf issue (@tronikos
- #117960 )  - Rework and simplify the cleanup of orphan AVM Fritz!Tools entities (@mib1185
- #117706 )  - Convert unnecessary coroutines into functions (@mj23000
- #118311 )  - Bump ruff to 0.4.6 (@autinerd
- #118384 )  - Entity for Tags (@gjohansson-ST
- #115048 )  - Bump airgradient to 0.4.2 (@joostlek
- #118389 )  - Allow delayed commands to not have a device id (@synesthesiam
- #118390 )  - Bump frontend to 20240529.0 (@bramkragten
- #118392 )  - Bump Python Matter Server library to 6.1.0(b0) (@marcelveldt
- #118388 )  - Bump zha-quirks to 0.0.116 (@TheJulianJES
- #118393 )  - Add select entities to AirGradient (@joostlek
- #117136 )  - New official genie garage integration (@swcloudgenie
- #117020 )  - Add translation strings for Matter Fan presets (@marcelveldt
- #118401 )  - Fix light discovery for Matter dimmable plugin unit (@marcelveldt
- #118404 )  - Handle case where timer device id exists but is not registered (delayed command) (@synesthesiam
- #118410 )  - Ensure paho.mqtt.client is imported in the executor (@bdraco
- #118412 )  - Fix google_tasks doing blocking I/O in the event loop (@bdraco
- #118418 )  - Fix google_mail doing blocking I/O in the event loop (@bdraco
- #118421 )  - Fix workday doing blocking I/O in the event loop (@bdraco
- #118422 )  - Fix OpenWeatherMap migration (@freekode
- #118428 )  - Fix blocking I/O in the event loop in meteo_france (@bdraco
- #118429 )  - Bump opower to 0.4.6 (@tronikos
- #118434 )  - Fix google_mail doing blocking i/o in the event loop (take 2) (@bdraco
- #118441 )  - Add Total Volatile Organic Compounds (tVOC) matter discovery schema (@kibergus
- #116963 )  - Improve LLM prompt (@tronikos
- #118443 )  - Instruct LLM to not pass a list to the domain (@tronikos
- #118451 )  - Bump deebot-client to 7.3.0 (@edenhaus
- #118462 )  - Raise 
ConfigEntryNotReadywhen there is no_idin the Tractive data (@bieniu- #118467 )  - Typo fix in media_extractor (@lunmay
- #118473 )  - Set enity_category to config for airgradient select entities (@edenhaus
- #118477 )  - Extend Matter sensor discovery schemas for Air Purifier / Air Quality devices (@marcelveldt
- #118483 )  - Mark Matter climate dry/fan mode support on Panasonic AC (@marcelveldt
- #118485 )  - Update frontend to 20240530.0 (@bramkragten
- #118489 )  - Adjustment of unit of measurement for light (@dontinelli
- #116695 )  - Add support for V2C Trydan 2.1.7 (@dgomes
- #117147 )  - Fix Jewish calendar unique id’s (@tsvi
- #117985 )  - Log aiohttp error in rest_command (@jpbede
- #118453 )  - Fix evohome so it doesn’t retrieve schedules unnecessarily (@zxdavb
- #118478 )  - Ignore the toggle intent (@balloob
- #118491 )  - Fix blocking call in holiday (@gjohansson-ST
- #118496 )  - Remove not needed hass object from Tag (@gjohansson-ST
- #118498 )  - Fix group platform dependencies (@jbouwh
- #118499 )  - Intent script: allow setting description and platforms (@balloob
- #118500 )  - Fix tado non-string unique id for device trackers (@gjohansson-ST
- #118505 )  - Fix key issue in config entry options in Openweathermap (@gjohansson-ST
- #118506 )  - Ignore deprecated open and close cover intents for LLMs (@tronikos
- #118515 )  - Fix LLMs asking which area when there is only one device (@tronikos
- #118518 )  - Improve LLM prompt (@tronikos
- #118520 )  - Fix unnecessary single quotes escaping in Google AI (@tronikos
- #118522 )  - Rename llm.ToolContext to llm.LLMContext (@balloob
- #118566 )  - Revert “Fix Tibber sensors state class” (@basbruss
- #118409 )  - Add Google Generative AI Conversation system prompt 
user_nameandllm_contextvariables (@Shulyaka- #118510 )  - Add typing for OpenAI client and fallout (@zweckj
- #118514 )  - Add OpenAI Conversation system prompt 
user_nameandllm_contextvariables (@Shulyaka- #118512 )  - Fix snmp doing blocking I/O in the event loop (@bdraco
- #118521 )  - Fix openweathermap config entry migration (@bdraco
- #118526 )  - Fix telegram doing blocking I/O in the event loop (@luca-angemi
- #118531 )  - Fix off_grid_vehicle_charging_reserve_percent in Teselemetry (@Bre77
- #118532 )  - Migrate openai_conversation to 
entry.runtime_data(@zweckj- #118535 )  - Fix typo in OWM strings (@joostlek
- #118538 )  - Fix YAML deprecation breaking version in jewish calendar and media extractor (@tsvi
- #118546 )  - Fix KeyError in dlna_dmr SSDP config flow when checking existing config entries (@chishm
- #118549 )  - In Brother integration use SnmpEngine from SNMP integration (@bieniu
- #118554 )  - Add ability to replace connections in DeviceRegistry (@epenet
- #118555 )  - Fix openAI tool calls (@balloob
- #118577 )  - Ignore myuplink sensors without a description that provide non-numeric values (@thytterdal
- #115525 )  - Bump pyads to 3.4.0 (@mrpasztoradam
- #116934 )  - Update device connections in samsungtv (@epenet
- #118556 )  - Run ruff format for device registry (@jpbede
- #118582 )  - Avoid future exception during setup of Synology DSM (@mib1185
- #118583 )  - Stop instructing LLM to not pass the domain as a list (@tronikos
- #118590 )  - Add base prompt for LLMs (@balloob
- #118592 )  - Strip Google AI text responses (@tronikos
- #118593 )  - Use gemini-1.5-flash-latest in google_generative_ai_conversation.generate_content (@tronikos
- #118594 )  - Fix telegram bot send_document (@luca-angemi
- #118616 )  - Include a traceback for non-strict event loop blocking detection (@bdraco
- #118620 )  - Fix handling undecoded mqtt sensor payloads (@jbouwh
- #118633 )  - Fix incorrect placeholder in SharkIQ (@joostlek
- #118640 )  - Bump ZHA dependencies (@puddly
- #118658 )  - Fix entity state dispatching for Tag entities (@gjohansson-ST
- #118662 )  - Address late review comment in samsungtv (@epenet
- #118539 )  - Bump pydrawise to 2024.6.2 (@dknowles2
- #118608 )  - Automatically fill in slots based on LLM context (@balloob
- #118619 )  - Revert “Add websocket API to get list of recorded entities (#92640)” (@bdraco
- #118644 )  - Fixing device model compatibility issues. (@matrixd2
- #118686 )  - Bump python-roborock to 2.2.2 (@piitaya
- #118697 )  - Configure device in airgradient config flow (@joostlek
- #118699 )  - Disable both option in Airgradient select (@joostlek
- #118702 )  - Bump pyoverkiz to 1.13.11 (@iMicknl
- #118703 )  - Use ISO format when passing date to LLMs (@tronikos
- #118705 )  - Don’t store tag_id in tag storage (@emontnemery
- #118707 )  - Remove unintended translation key from blink (@mkmer
- #118712 )  - Remove tag_id from tag store (@emontnemery
- #118713 )  - Address reviews comments in #117147 (@dgomes
- #118714 )  - Bump renault-api to 0.2.3 (@epenet
- #118718 )  - Tweak light service schema (@emontnemery
- #118720 )  - Rename Discovergy to inexogy (@jpbede
- #118724 )  - Resolve areas/floors to ids in intent_script (@synesthesiam
- #118734 )  - Update frontend to 20240603.0 (@bramkragten
- #118736 )  - Require firmware version 3.1.1 for airgradient (@joostlek
- #118744 )  - Remove dispatcher from Tag entity (@balloob
- #118671 )  - Harden evohome against failures to retrieve zone schedules (@zxdavb
- #118517 )  - Bump reolink-aio to 0.9.1 (@starkillerOG
- #118655 )  - Google Gen AI: Copy messages to avoid changing the trace data (@balloob
- #118745 )  - Revert “Allow MQTT device based auto discovery” (@jbouwh
- #118746 )  - Update OpenAI prompt on each interaction (@balloob
- #118747 )  - Bump intents to 2024.6.3 (@synesthesiam
- #118748 )  - Do not log mqtt origin info if the log level does not allow it (@jbouwh
- #118752 )  - Clean up exposed domains (@synesthesiam
- #118753 )  - Recover mqtt abbrevations optimizations (@jbouwh
- #118762 )  - Update hass-nabucasa to version 0.81.1 (@ludeeus
- #118768 )  - Bump airgradient to 0.4.3 (@joostlek
- #118776 )  - Initial cleanup for Aladdin connect (@joostlek
- #118777 )  - Use model from Aladdin Connect lib (@joostlek
- #118778 )  - Add coordinator to Aladdin Connect (@joostlek
- #118781 )  - Re-enable sensor platform for Aladdin Connect (@joostlek
- #118782 )  - Move Aladdin stale device removal to init module (@joostlek
- #118784 )  - Refactor fixture calling for BMW tests (@rikroe
- #118708 )  - Set lock state to unkown on BMW API error (@rikroe
- #118559 )  - Use snapshot_platform helper for BMW tests (@rikroe
- #118735 )  - Allow per-sensor unit conversion on BMW sensors (@rikroe
- #110272 )  - Fix calculation of Starlink sleep end setting (@boswelja
- #115507 )  - Fix updating options in Jewish Calendar (@tsvi
- #118643 )  - Include script description in LLM exposed entities (@balloob
- #118749 )  - Set unique id in aladdin connect config flow (@joostlek
- #118798 )  - Add missing FAN_ONLY mode to ccm15 (@arturyak
- #118804 )  - Check if Shelly 
entry.runtime_datais available (@bieniu- #118805 )  - Bump Python Matter Server library to 6.1.0 (@agners
- #118806 )  - Update frontend to 20240604.0 (@bramkragten
- #118811 )  - Ensure name of task is logged for unhandled loop exceptions (@bdraco
- #118822 )  - Initialize the Sentry SDK within an import executor job to not block event loop (@jpbede
- #118830 )  - Fix Hydrawise sensor availability (@PeteRager
- #118669 )  - Conserve Reolink battery by not waking the camera on each update (@starkillerOG
- #118773 )  - Fix capitalization of protocols in Reolink option flow (@frenck
- #118839 )  - Fix the radio browser doing I/O in the event loop (@balloob
- #118842 )  - Bump python-roborock to 2.2.3 (@ethemcemozkan
- #118853 )  - Improve repair issue when notify service is still being used (@jbouwh
- #118855 )  - Fix TypeAliasType not callable in senz (@cdce8p
- #118872 )  - Update frontend to 20240605.0 (@bramkragten
- #118875 )  - Improve WS command validate_config (@emontnemery
- #118864 )  - Bump intents to 2024.6.5 (@synesthesiam
- #118890 )  - Replace slave by meter in v2c (@edenhaus
- #118893 )  
Release 2024.6.1 - June 7
- Update requests to 2.32.3 (@cdce8p
- #118868 )  - Prioritize literal text with name slots in sentence matching (@synesthesiam
- #118900 )  - Check if imap message text has a value instead of checking if its not None (@engrbm87
- #118901 )  - Fix flaky Google Assistant test (@jpbede
- #118914 )  - Revert “Bump orjson to 3.10.3 (#116945)” (@bdraco
- #118920 )  - Bump 
imgw-pibbackend library to version1.0.2(@bieniu- #118953 )  - Fix Alarm control panel not require code in several integrations (@gjohansson-ST
- #118961 )  - Bump python-holidays to 0.50 (@gjohansson-ST
- #118965 )  - Bump pydrawise to 2024.6.3 (@dknowles2
- #118977 )  - Bump 
imgw-piblibrary to version1.0.4(@bieniu- #118978 )  - Fix unit of measurement for airgradient sensor (@joostlek
- #118981 )  - Fix exposure checks on some intents (@synesthesiam
- #118988 )  - Remove isal from after_dependencies in http (@bdraco
- #119000 )  - Hold connection lock in Shelly RPC reconnect (@thecode
- #119009 )  - Always have addon url in detached_addon_missing (@mdegat01
- #119011 )  - Increase test coverage for KNX Climate (@farmio
- #117903 )  - Fix KNX 
climate.set_hvac_modenot turningon(@farmio- #119012 )  - Fix refactoring error in snmp switch (@bdraco
- #119028 )  - Fix remember_the_milk calling configurator async api from the wrong thread (@bdraco
- #119029 )  - Fix AirGradient name (@joostlek
- #119046 )  - Add type ignore comments (@cdce8p
- #119052 )  - Fix Azure Data Explorer strings (@joostlek
- #119067 )  
Release 2024.6.2 - June 11
- Fix statistic_during_period wrongly prioritizing ST statistics over LT (@karwosts
- #115291 )  - Bump pyElectra to 1.2.1 (@rubeecube
- #118958 )  - Update gardena library to 1.4.2 (@elupus
- #119010 )  - Calculate attributes when entity information available in Group sensor (@gjohansson-ST
- #119021 )  - Bump google-generativeai to 0.6.0 (@tronikos
- #119062 )  - Fix Azure data explorer (@kaareseras
- #119089 )  - Ensure multiple executions of a restart automation in the same event loop iteration are allowed (@bdraco
- #119100 )  - Fix control 4 on os 2 (@adrum
- #119104 )  - Properly handle escaped unicode characters passed to tools in Google Generative AI (@tronikos
- #119117 )  - Catch GoogleAPICallError in Google Generative AI (@tronikos
- #119118 )  - Bump aioshelly to 10.0.1 (@thecode
- #119123 )  - Bump aiowaqi to 3.1.0 (@joostlek
- #119124 )  - Ensure intent tools have safe names (@balloob
- #119144 )  - Fix workday timezone (@TomBrien
- #119148 )  - Bump py-synologydsm-api to 2.4.4 (@mib1185
- #119156 )  - Use more conservative timeout values in Synology DSM (@mib1185
- #119169 )  - Handle Shelly BLE errors during connect and disconnect (@thecode
- #119174 )  - Fix elgato light color detection (@LapsTimeOFF
- #119177 )  - Bump opower to 0.4.7 (@tronikos
- #119183 )  - Add fallback to entry_id when no mac address is retrieved in enigma2 (@autinerd
- #119185 )  - Fix envisalink alarm (@gjohansson-ST
- #119212 )  - Fixes crashes when receiving malformed decoded payloads (@angelnu
- #119216 )  - Fix Glances v4 network and container issues (glances-api 0.8.0) (@wittypluck
- #119226 )  - Bump python-roborock to 2.3.0 (@ethemcemozkan
- #119228 )  - Revert SamsungTV migration (@epenet
- #119234 )  - Always provide a currentArmLevel in Google assistant (@elupus
- #119238 )  - Remove myself as codeowner for unifiprotect (@bdraco
- #118824 )  - Switch unifiprotect lib to use uiprotect (@bdraco
- #119243 )  - Fix wrong arg name in Idasen Desk config flow (@abmantis
- #119247 )  - Fix climate on/off in nexia (@bdraco
- #119254 )  - Bump google-nest-sdm to 4.0.5 (@allenporter
- #119255 )  - Bump uiprotect to 0.4.0 (@bdraco
- #119256 )  - Improve workday test coverage (@bdraco
- #119259 )  - Fix persistence on OpenWeatherMap raised repair issue (@frenck
- #119289 )  - Bump uiprotect to 0.4.1 (@bdraco
- #119308 )  - Add more debug logging to Ping integration (@jpbede
- #119318 )  - Update frontend to 20240610.0 (@bramkragten
- #119320 )  - Fix statistic_during_period after core restart (@emontnemery
- #119323 )  - Fix AladdinConnect OAuth domain (@swcloudgenie
- #119336 )  - Bump 
imgw-pibbackend library to version 1.0.5 (@bieniu- #119360 )  
Release 2024.6.3 - June 15
- Make remaining time of timers available to LLMs (@tronikos
- #118696 )  - Bump uiprotect to 0.10.1 (@bdraco
- #119327 )  - Bump uiprotect to 0.13.0 (@bdraco
- #119344 )  - Bump uiprotect to 1.0.0 (@bdraco
- #119415 )  - Fix incorrect key name in unifiprotect options strings (@bdraco
- #119417 )  - Bump buieradar to 1.0.6 (@mjj4791
- #119433 )  - Bump uiprotect to v1.0.1 (@ep1cman
- #119436 )  - Bump uiprotect to 1.1.0 (@bdraco
- #119449 )  - Add loggers to gardena bluetooth (@elupus
- #119460 )  - Revert Use integration fallback configuration for tado water heater fallback (@erwindouna
- #119466 )  - Partially revert “Add more debug logging to Ping integration” (@jpbede
- #119487 )  - Revert “Revert Use integration fallback configuration for tado water fallback” (@ethemcemozkan
- #119526 )  - Fix error for Reolink snapshot streams (@starkillerOG
- #119572 )  - Bump uiprotect to 1.2.1 (@bdraco
- #119620 )  - Fix group enabled platforms are preloaded if they have alternative states (@jbouwh
- #119621 )  - Update frontend to 20240610.1 (@piitaya
- #119634 )  - Soften unifiprotect EA channel message (@bdraco
- #119641 )  - Bump goodwe to 0.3.6 (@mletenay
- #119646 )  - Bump uiprotect to 1.4.1 (@bdraco
- #119653 )  - Bump uiprotect to 1.6.0 (@bdraco
- #119661 )  - Fix alarm default code in concord232 (@gjohansson-ST
- #119691 )  - Bump uiprotect to 1.7.1 (@bdraco
- #119694 )  - Bump uiprotect to 1.7.2 (@bdraco
- #119705 )  - Bump ZHA dependencies (@TheJulianJES
- #119713 )  - Ensure UniFi Protect EA warning is not persistent (@frenck
- #119730 )  - Ensure workday issues are not persistent (@frenck
- #119732 )  
Release 2024.6.4 - June 21
- UniFi temp fix to handle runtime data (@Kane610
- #120031 )  - Fix for Synology DSM shared images (@lodesmets
- #117695 )  - Fix Jewish Calendar unique id migration (@tsvi
- #119683 )  - Fix model import in Spotify (@jjlawren
- #119747 )  - Add Kasa Dimmer to Matter TRANSITION_BLOCKLIST (@dubstomp
- #119751 )  - Bump py-canary to v0.5.4 (@0bmay
- #119793 )  - Pin tenacity to 8.3.0 (@cdce8p
- #119815 )  - Bump aiozoneinfo to 0.2.0 (@bdraco
- #119845 )  - Fix up ecobee windspeed unit (@bjpetit
- #119870 )  - Bump hdate to 0.10.9 (@tsvi
- #119887 )  - Bump weatherflow4py to 0.2.21 (@jeeftor
- #119889 )  - Bump babel to 2.15.0 (@gjohansson-ST
- #119006 )  - Bump python-holidays to 0.51 (@gjohansson-ST
- #119918 )  - Fix Onkyo zone volume (@arturpragacz
- #119949 )  - Bump plugwise to v0.37.4.1 (@bouwew
- #119963 )  - Always create a new HomeAssistant object when falling back to recovery mode (@emontnemery
- #119969 )  - Fix Hydrawise volume unit bug (@thomaskistler
- #119988 )  - Fix songpal crash for soundbars without sound modes (@BestPig
- #119999 )  - Bump env-canada to 0.6.3 (@gwww
- #120035 )  - Bump aioimaplib to 1.1.0 (@jbouwh
- #120045 )  - Update AEMET-OpenData to v0.5.2 (@Noltari
- #120065 )  - Bump intents to 2024.6.21 (@synesthesiam
- #120106 )  - Update pydrawise to 2024.6.4 (@thomaskistler
- #119868 )