Full Changelog for Home Assistant Core 2023.4
These are all the changes included in the Home Assistant Core 2023.4 release.
For a summary in a more readable format: Release notes blog for this release.
Full Changelog
- Bump version to 2023.4.0dev0 (@frenck
- #88630 )  - Use json_loads_object in alexa (@epenet
- #88610 )  - Browse media support in universal media player (@Drafteed
- #85668 )  - Update pre-commit to 3.1.0 (@frenck
- #88657 )  - Update apprise to 1.3.0 (@frenck
- #88658 )  - Modernize Twentemilieu tests (@frenck
- #88640 )  - Include binary_sensor in default Assist exposed domains (@synesthesiam
- #88682 )  - Enable jinja loop controls (break/continue) (@depoll
- #88625 )  - Modernize uptime tests (@frenck
- #88636 )  - Allow conditions to be implemented in platforms (@emontnemery
- #88509 )  - Switch samsungtv to use async_timeout to avoid task creation (@bdraco
- #88679 )  - Change statistics component ownership (@ThomDietrich
- #88692 )  - Use async_timeout in integrations (@epenet
- #88697 )  - Bump aiolivisi to 0.0.16 (@StefanIacobLivisi
- #88700 )  - Improve type hint in webostv trigger (@epenet
- #88599 )  - Use strict typing for LiteJet integration (@joncar
- #88629 )  - Pass 
assumed_stateproperty in universal media player (@Drafteed- #87846 )  - Use DataUpdateCoordinator for islamic_prayer_times (@engrbm87
- #73893 )  - Simplify adding unifi entities (@Kane610
- #88571 )  - Avoiding testing implementation details in apcupsd tests (@yuxincs
- #88772 )  - Add ISY994 services to set and delete lock codes (@shbatm
- #88754 )  - Add device HmIP-DLD (@hahn-th
- #83380 )  - Unblock JSON CI by fixing improperly indented JSON in test fixture (@puddly
- #88803 )  - Add Camera platform to Prosegur (@dgomes
- #76428 )  - Use a background task for LIFX discovery (@balloob
- #88820 )  - Add climate state translations to Overkiz integration (@iMicknl
- #88809 )  - Bump pyoverkiz to 1.7.6 (@iMicknl
- #88808 )  - Bump actions/checkout from 3.1.0 to 3.3.0 (@dependabot - #88824
)  - Bump actions/setup-python from 4.3.0 to 4.5.0 (@dependabot - #88823
)  - Add support for LIVISI climate devices (@StefanIacobLivisi
- #86691 )  - Add state_class to qbittorent sensors (@landaisbenj
- #88829 )  - Prepare for refactoring of MQTT related tests (@jbouwh
- #88557 )  - Add missing mock in brunt config flow tests (@epenet
- #88834 )  - Add missing mock in cert_expiry config flow tests (@epenet
- #88835 )  - Add missing mock in abode config flow tests (@epenet
- #88828 )  - Use snapshots in blueprint import tests (@balloob
- #88843 )  - Cleanup YAML import in aladdin_connect (@epenet
- #88694 )  - Improve helper integration scaffold (@avee87
- #88713 )  - Add filter options to entity and device selectors (@piitaya
- #87536 )  - Add gas sensor to BTHome (@Ernst79
- #88770 )  - LIVISI climate device improvement (@StefanIacobLivisi
- #88844 )  - Add Config Flow to Obihai (@ejpenney
- #88627 )  - Change string to enum in SomfyThermostat (@iMicknl
- #88813 )  - Support ValveHeatingTemperatureInterface in Overkiz integration (@iMicknl
- #88804 )  - Adding Obihai codeowner (@ejpenney
- #88856 )  - Prosegur late review comments (@dgomes
- #88859 )  - Adjust AddEntitiesCallback import (part 1) (@epenet
- #88870 )  - Add stop charge button to renault integration (@rodriguestiago0
- #88003 )  - Also set 
hass.config_entrieswhenmock_hass_configfixture is used (@jbouwh- #88669 )  - Add WS command weather/convertible_units (@emontnemery
- #85681 )  - Add human readable name for Livisi climate devices (@planbnet
- #88891 )  - Add myself to codeowners of Livisi integration (@planbnet
- #88900 )  - Add missing mock in overkiz config flow tests (@epenet
- #88899 )  - Sort unit lists sent to frontend (@emontnemery
- #88898 )  - Fix typo in thread (@emontnemery
- #88916 )  - Adjust core test to avoid lingering task (@epenet
- #88918 )  - Add missing mock in webostv config flow tests (@epenet
- #88913 )  - Add number + sensor device class energy storage (@emontnemery
- #88310 )  - Add state class to Aurora (@djtimca
- #88938 )  - Use ulid-transform for constructing ulids (@bdraco
- #88939 )  - Store source entity in switch_as_x entity options (@emontnemery
- #88914 )  - Adjust issue_registry imports (@epenet
- #88878 )  - Adjust registry access in conversation (@epenet
- #88879 )  - Adjust registry access in tests root (@epenet
- #88880 )  - Adjust registry access in intent (@epenet
- #88881 )  - Adjust registry access in scripts (@epenet
- #88884 )  - Adjust registry access in Google Assistant (@epenet
- #88883 )  - Adjust registry access in openai_conversation (@epenet
- #88882 )  - Adjust AddEntitiesCallback import (part 2) (@epenet
- #88873 )  - Add diagnostics to VeSync (@chuckdeal97
- #86350 )  - Add ZWaveDiscoverySchema for Merten 507801 (@willmakenoise
- #88342 )  - Use json_loads_object in arwn (@epenet
- #88611 )  - Use load_json_object in fitbit (@epenet
- #88585 )  - Adjust entity registry access in core platforms (@epenet
- #88944 )  - Adjust entity registry access in integrations (1) (@epenet
- #88946 )  - Adjust entity registry access in integrations (2) (@epenet
- #88947 )  - Adjust entity registry access in integrations (3) (@epenet
- #88948 )  - Fix lingering reload task in notion reauth (@bdraco
- #88949 )  - Adjust entity registry access in tests (1) (@epenet
- #88950 )  - Add missing mock in notion tests (@epenet
- #88951 )  - Fix lingering task in timeout test (@epenet
- #88953 )  - Fix lingering task in entity_platform test (@epenet
- #88957 )  - Don’t create new venv if script/setup is run from within a venv (@emontnemery
- #88906 )  - Add number + sensor device class volume storage (@emontnemery
- #88312 )  - Add dynamic unit of measurement support for Overkiz sensor (@tetienne
- #80490 )  - Use UnitOfVolumeFlowRate in huisbaasje and plugwise (@epenet
- #88967 )  - Adjust entity registry access in tests (3) (@epenet
- #88964 )  - Add missing mock in esphome tests (@epenet
- #88923 )  - Disable gc in-between energy sensor tests (@emontnemery
- #88593 )  - Adjust entity registry access in tests (2) (@epenet
- #88960 )  - Adjust entity registry access in helper tests (@epenet
- #88965 )  - Add 
currentsensor for Shelly RPC devices (@bieniu- #88863 )  - Obihai config flow fixes (@ejpenney
- #88853 )  - Drop codeowner from threshold integration (@emontnemery
- #88973 )  - Improve threshold binary sensor tests (@emontnemery
- #88972 )  - Adjust entity registry access in homekit tests (@epenet
- #88959 )  - Yaml use dict (@balloob
- #88977 )  - Enable RUFF ICN001 for registries (@epenet
- #88875 )  - Clean up unused and deprecated TLS version setting on MQTT client (@jbouwh
- #88674 )  - Bump ulid-transform to 0.4.0 (@bdraco
- #88982 )  - Add config flow to EDL21 (@StephanU
- #87655 )  - Refactor WLED binary sensor test (@frenck
- #88579 )  - Fix flaky energy tests (@emontnemery
- #89026 )  - Add Turn On and Turn Off for Advantage Air climate platform (@Bre77
- #88684 )  - Nuki: show actual device model in device registry (@Savjee
- #89017 )  - Re-enable Ruff D411 (@epenet
- #89035 )  - Fix lingering task in debounce tests (@epenet
- #89019 )  - Add matching on quirk_classes to zha (@gmsoft-tuxicoman
- #87653 )  - Remove unused constant (@raman325
- #89071 )  - Add Obihai reboot button (@ejpenney
- #88849 )  - Adjust xiaomi_ble tests (@epenet
- #89078 )  - Move Cycle command from cover to button (@tetienne
- #89043 )  - Adjust docstrings for ruff D404 (@epenet
- #89077 )  - Adjust docstring on hassfest generated files (@epenet
- #89080 )  - Set Protocol inheritance on EnergyPlatform (@epenet
- #89079 )  - Enable ruff D404 (@epenet
- #89093 )  - Add missing Edl21 sensor 1-0:0.0.0*255 (@StephanU
- #87389 )  - Updating Intellifire Naming scheme (@jeeftor
- #88666 )  - Refactor Livisi Switch and Climate to inherit from a common base class (@planbnet
- #89085 )  - Revert Intellifire breaking change from #88666 (@cgarwood
- #89110 )  - Add day to event end to correct TwenteMilieu event timespan (@bobvandevijver
- #89028 )  - Refactor WLED button tests (@frenck
- #88580 )  - Refactor WLED diagnostic tests (@frenck
- #88581 )  - Bump subarulink to 0.7.5 (@G-Two
- #89162 )  - Clean up import/migration repair in LaMetric (@frenck
- #89153 )  - Cleanup plex config flow tests (@epenet
- #88991 )  - Bump pyvizio to 0.1.60 (@raman325
- #89160 )  - Bump 
brotherandpysnmplibbackend libraries (@bieniu- #89100 )  - Bump aiodiscover to 1.4.14 (@bdraco
- #89174 )  - Pass a helpful name when creating common asyncio tasks in core (@bdraco
- #89171 )  - Bump youless api version to v1.0.1 (@gjong
- #89117 )  - Bump overkiz dependency to 1.7.7 (@iMicknl
- #89163 )  - Add Reolink button platform (@starkillerOG
- #88687 )  - Bump reolink-aio to 0.5.3 (@starkillerOG
- #89145 )  - Bump pyroon to 0.1.4 (@pavoni
- #89124 )  - Revert “Replace Fitbit weight SensorStateClass measurement with total” (@sw-carlos-cristobal
- #89126 )  - Add support for Livisi PSSO, ISS and ISS2 switch devices (@planbnet
- #89140 )  - Unpin pandas for Python 3.11 (@cdce8p
- #89033 )  - Update link to opencv in image_process log message (@GeoffState
- #89008 )  - Add support for Spotify podcasts (@BTMorton
- #87671 )  - Detect newly connected clients in jellyfin (@ctalkington
- #89168 )  - Add repeat to roon media player (@pavoni
- #88851 )  - Remove deprecated Moon YAML configuration (@frenck
- #89161 )  - Raise ValueError on date parsing of MQTT sensor with invalid date format (@jbouwh
- #89036 )  - Remove deprecated Season YAML configuration (@frenck
- #89166 )  - Add device_class and state_class to sql (@gjohansson-ST
- #85418 )  - Hive add ability to delete device (@KJonline
- #80838 )  - Reolink add switch platform (@starkillerOG
- #87943 )  - Add Reolink siren platform (@starkillerOG
- #88217 )  - Bump bthome to 2.8.0 (@Ernst79
- #89192 )  - Reolink add select platform (@starkillerOG
- #87946 )  - Refactor WLED switch tests (@frenck
- #89197 )  - Update coverage to 7.2.1 (@frenck
- #89196 )  - Update sentry-sdk to 1.16.0 (@frenck
- #89193 )  - Update watchdog to 2.3.1 (@frenck
- #89190 )  - Update pytest to 7.2.2 (@frenck
- #89179 )  - Refactor WLED number tests (@frenck
- #88582 )  - Fix lingering tasks in KNX tests (@farmio
- #89201 )  - Test coverage for Tibber config flow (@ztamas83
- #89088 )  - Add device info to edl21 (@StephanU
- #89070 )  - Revert “Add device info to edl21” (@frenck
- #89217 )  - Split reauth tests in plex (@epenet
- #89212 )  - Refresh homeassistant_alerts when components are loaded (@emontnemery
- #76049 )  - Sync tado zones after updating climate preset (@fpfuetsch
- #79715 )  - Move mock_setup_entry to conftest (@epenet
- #88484 )  - Update zwave_js README with contributor instructions (@raman325
- #89158 )  - Use mock_setup_entry fixture in melnor (@epenet
- #89226 )  - Reolink add new number entities (@starkillerOG
- #87932 )  - Add Reolink light platform (@starkillerOG
- #88619 )  - Catch exceptions and add logging when writing states on MQTT entities (@jbouwh
- #89091 )  - Add type hints to ps4 media player (@epenet
- #89236 )  - Allow loading UniFi entities on config options change (@Kane610
- #88762 )  - Add comment about Reolink Floodlight turn on brightness (@starkillerOG
- #89234 )  - Bump ruff to 0.0.253 (@epenet
- #89211 )  - Reolink extend DHCP discovery (@starkillerOG
- #89238 )  - Update pylint to 2.16.4 (@cdce8p
- #89240 )  - Bump 
gioslibrary to version 3.1.0 (@bieniu- #89044 )  - Improve reolink generic typing (@cdce8p
- #88786 )  - Add support for bluetooth pairing in esphome (@bdraco
- #88603 )  - Add HomeKit Door accessory type (@Dexwell
- #80741 )  - Update systembridgeconnector to 3.4.8 (@timmo001
- #79732 )  - Fail CI on lingering tasks (@epenet
- #88905 )  - Cleanup expected_lingering_tasks in knx (@epenet
- #89279 )  - Remove deprecated DSMR Reader YAML configuration (@frenck
- #89239 )  - Bump ruff to 0.0.254 (@epenet
- #89273 )  - Drop deepcopy of manual mqtt alarm control panel config (@emontnemery
- #89287 )  - Drop deepcopy of manual alarm control panel config (@emontnemery
- #89286 )  - Drop deepcopy of intent_script config (@emontnemery
- #89285 )  - Drop deepcopy of Alexa config (@emontnemery
- #89284 )  - Remove unittest.TestCase from service helper tests (@emontnemery
- #89283 )  - Reolink test init 100% (@starkillerOG
- #89112 )  - Rename hass context variable (@emontnemery
- #89302 )  - Fix missing f-string in async_listen (@bdraco
- #89336 )  - Use a filter for the PersonStorageCollection EVENT_ENTITY_REGISTRY_UPDATED listener (@bdraco
- #89335 )  - Bump pybalboa to 1.0.1 (@natekspencer
- #89310 )  - Improve gios generic typing (@cdce8p
- #89321 )  - Add missing mock in brother config flow tests (@epenet
- #89354 )  - Add missing mock in axis config flow tests (@epenet
- #89365 )  - Add missing mock in azure event hub config flow tests (@epenet
- #89355 )  - Add missing mock in atag config flow tests (@epenet
- #89356 )  - Add missing mock in amber config flow tests (@epenet
- #89358 )  - Add missing mock in airvisual config flow tests (@epenet
- #89359 )  - Add missing mock in agent_dvr config flow tests (@epenet
- #89361 )  - Add missing mock in airvisual_pro config flow tests (@epenet
- #89362 )  - Add missing mock in airq config flow tests (@epenet
- #89364 )  - Add missing mock in aemet config flow tests (@epenet
- #89360 )  - Add names to the config entry setup and shutdown tasks (@bdraco
- #89309 )  - Use an event filter for event triggers (@bdraco
- #89339 )  - Improve event filters to reject earlier (@bdraco
- #89337 )  - Fix lingering tasks in plex (@epenet
- #89282 )  - Update pylint to 2.17.0 (@cdce8p
- #89377 )  - Move Landis+Gyr sensor descriptions to sensor platform (@vpathuis
- #89382 )  - Pass hass instance when validating templates (@emontnemery
- #89242 )  - Bump pyfritzhome to 0.6.8 and add support for Non-Color-Bulbs (@parliament119
- #89141 )  - Add require_admin decorator to otbr WS API (@emontnemery
- #89385 )  - Bump SharkIQ to 1.0.2 (@funkybunch
- #89346 )  - Avoid falling back to listening for all states when a template render raises an exception (@bdraco
- #89392 )  - Remove lingering timer related to camera (@Kane610
- #89394 )  - Add WS API for getting an OTBR’s extended address (@emontnemery
- #89384 )  - Add loggers to gdacs manifest file (@exxamalte
- #89338 )  - Fix missing f-string in filterable_job (@bdraco
- #89340 )  - Migrate integration_platform helper to use async_get_integrations (@bdraco
- #89303 )  - Bump aiosomecomfort to 0.0.14 (@mkmer
- #89393 )  - Update SharkIQ code owners (@funkybunch
- #89388 )  - Better log message for KNX expose conversion error (@farmio
- #89400 )  - Update mypy to 1.1.1 (@cdce8p
- #89268 )  - Reduce overhead to store context ids in the database (@bdraco
- #88942 )  - Simplify LivisiEntity inheritance (@planbnet
- #89424 )  - Add hostname to DHCP discovery title (@starkillerOG
- #89426 )  - Avoid unnecessary Task in debouncer (@epenet
- #89370 )  - Add review-process link to PR template (@epenet
- #89430 )  - Add quadrafire virtual integration for Intellifire (@jeeftor
- #89316 )  - Parse attribute reports for ZHA select entity (@TheJulianJES
- #89418 )  - Revert Transmission entities name changes (@avee87
- #89409 )  - Update logbook queries for SADeprecationWarning (@bdraco
- #87108 )  - Add missing mock in buienradar config flow tests (@epenet
- #89420 )  - Add missing mock in braviatv config flow tests (@epenet
- #89419 )  - Disable some less commonly used starlink entities by default (@boswelja
- #87869 )  - Add missing mock in coronavirus config flow tests (@epenet
- #89428 )  - Add vermont_castings virtual integration for Intellifire (@jeeftor
- #89317 )  - Add DSL prefix to SFRBox ADSL sensors (@epenet
- #89276 )  - Add Hardkernel ODROID-M1 (@agners
- #89431 )  - Update actions/cache to 3.3.0 (@cdce8p
- #89438 )  - Add missing mock in gree config flow tests (@epenet
- #89450 )  - Add missing mock in fibaro config flow tests (@epenet
- #89440 )  - Add missing mock in filesize config flow tests (@epenet
- #89441 )  - Add missing mock in freedompro config flow tests (@epenet
- #89442 )  - Add stats sensors for core and supervisor (@ludeeus
- #89455 )  - Add device info to edl21 (@StephanU
- #89327 )  - Xiaomi Air Purifier S2 illuminance sensor support (@kirill578
- #89208 )  - Fix missing debouncer cancel in update coordinator (@epenet
- #89383 )  - Add list areas function to template (@rokam
- #88441 )  - Add missing mock in guardian config flow tests (@epenet
- #89451 )  - Add Ruth and Stephen voices to AWS Polly (@szechyjs
- #89344 )  - Add device class to ZHA Xiaomi plug “consumer connected” sensor (@TheJulianJES
- #89476 )  - Add unconfigured flag to thread discovery data (@emontnemery
- #89230 )  - Add config flow to frontier_silicon (@wlcrs
- #64365 )  - Add type hints to tests (@epenet
- #89497 )  - Bump pytest-sugar to 0.9.6 (@epenet
- #89500 )  - Bump pytest-xdist to 3.2.0 (@epenet
- #89501 )  - Bump home-assistant/builder from 2022.11.0 to 2023.03.0 (@dependabot - #89485
)  - Fix lingering timer in device registry (@epenet
- #89422 )  - Landis+Gyr move coordinator to own file (@vpathuis
- #89433 )  - Add missing mock in landisgyr config flow tests (@epenet
- #89513 )  - Add missing mock in lacrosse_view config flow tests (@epenet
- #89512 )  - Add missing mock in kmtronic config flow tests (@epenet
- #89511 )  - Add missing mock in jellyfin config flow tests (@epenet
- #89510 )  - Add FTTH and WAN info to SFR box diagnostics (@epenet
- #89492 )  - Await block till done inside patched config entry in tests (@balloob
- #89515 )  - Make client tracker use common UniFi entity class (@Kane610
- #84942 )  - Refactor logbook data to use a dataclass (@bdraco
- #89534 )  - Remove unused code in RecorderRuns.entity_ids (@bdraco
- #89526 )  - UniFi library controls add/update signalling (@Kane610
- #89525 )  - Deduplicate event_types in the events table (@bdraco
- #89465 )  - Move legacy database queries and models to prepare for schema v38 (@bdraco
- #89532 )  - Refactor recorder tests to use recorder history API (@bdraco
- #89565 )  - Fix flux_led set time to not happen during DST switch (@bdraco
- #89559 )  - Add some more typing to screenlogic (@bdraco
- #88522 )  - Simplify command_line sensor tests (@emontnemery
- #89576 )  - Convert device_sun_light_trigger test fixture to async (@emontnemery
- #89578 )  - Support translating entity names (@emontnemery
- #88242 )  - Strict typing threshold (@gjohansson-ST
- #82786 )  - Improve screenlogic generic typing (@cdce8p
- #89587 )  - Fix lingering tasks in google_wifi tests (@bdraco
- #89571 )  - Deduplicate entity_id in the states table (@bdraco
- #89557 )  - Bump rflink to 0.0.65 for python 3.11 (@bdraco
- #89601 )  - Fix old indices never being removed with PostgreSQL (@bdraco
- #89599 )  - Add Update entities to TP-Link Omada integration (@MarkGodwin
- #89562 )  - Generate large history responses in the executor (@bdraco
- #89606 )  - Mark database sessions that do not write data as read_only (@bdraco
- #89600 )  - Improve reliability of context id migration (@bdraco
- #89609 )  - Add support for window device class to google assistant (@loongyh
- #89564 )  - Fix history_stats test failing during DST (@bdraco
- #89589 )  - Switch underlying history stats calculation to use seconds (@bdraco
- #77857 )  - Code quality update for EDL21 (@StephanU
- #89561 )  - Bump pysml to 0.0.9 (@StephanU
- #89603 )  - Bump actions/cache from 3.3.0 to 3.3.1 (@dependabot - #89617
)  - Adjust Tuya entity naming (@dougiteixeira
- #89616 )  - Drop duplicated indices from recorder database schema (@bdraco
- #89613 )  - Use SnapshotAssertion in SFR sensor tests (@epenet
- #89619 )  - Refactor Command line binary sensor to inherit TemplateEntity (@gjohansson-ST
- #81212 )  - Refactor Command line cover to inherit TemplateEntity (@gjohansson-ST
- #81214 )  - Add an in-memory-preloading loader for Jinja imports (@depoll
- #88850 )  - Bump flipr-api to 1.5.0 (@cnico
- #89598 )  - Add ESERA 1-Wire virtual integration (@jrieger
- #89487 )  - Use repair issue when port enable fails in Reolink (@starkillerOG
- #89591 )  - Add support for dual lens cameras in Reolink (@starkillerOG
- #89554 )  - Improve typing in climate.py (@Swamp-Ig
- #89577 )  - Use SnapshotAssertion in SFR binary sensor tests (@epenet
- #89624 )  - Correct naming of some otbr tests (@emontnemery
- #89631 )  - Fix 
intellifirename property (@emontnemery- #89632 )  - Improve warnings in mqtt light messages (@anotherthomas
- #89552 )  - Address late review comments for frontier_silicon config flow (@twalcari
- #89507 )  - Use SnapshotAssertion in SFR button tests (@epenet
- #89633 )  - Add sensors for supervisor host (@ludeeus
- #89461 )  - Bump python-otbr-api to 1.0.9 (@emontnemery
- #89637 )  - Include extended address in thread discovery data (@emontnemery
- #89640 )  - Bump pybravia to 0.3.2 (@NickBorgers
- #89635 )  - Refactor Command line sensor to inherit TemplateSensor (@gjohansson-ST
- #81222 )  - Add is_hidden_entity test for Jinja templates (@depoll
- #89011 )  - Bump reolink-aio to 0.5.5 (@starkillerOG
- #89646 )  - Make OTBR add newly created dataset to thread credential store (@emontnemery
- #89645 )  - Use C-Extension for sqlalchemy (@pvizeli
- #89661 )  - Add silent option for DynamicShutter (ogp:Shutter) in Overkiz (@iMicknl
- #89164 )  - Bump ulid-transform to 0.4.2 (@bdraco
- #89666 )  - Force binary build of sqlalchemy wheels (@bdraco
- #89658 )  - Remove incorrect state class for System Bridge sensors (@timmo001
- #89655 )  - Handle ConnectionClosedException from System Bridge (@timmo001
- #89654 )  - Use otbr domain as dataset source (@emontnemery
- #89653 )  - Default to recorder db for SQL integration (@gjohansson-ST
- #85436 )  - Handle bytes data in sql sensors (@bdraco
- #89169 )  - Increase timeout for coolmaster with swing (@amitfin
- #87573 )  - Move nextcloud constants (@epenet
- #89679 )  - Add index to event_type and entity_id (@bdraco
- #89676 )  - Execute sql queries in the database executor when using the recorder database (@bdraco
- #89673 )  - Debounce and group MQTT subscriptions (@jbouwh
- #88862 )  - Remove duplicate code in nextcloud (@epenet
- #89681 )  - Update entity names to capitalize first word only for System Bridge (@timmo001
- #89688 )  - Add websocket command to set preferred thread dataset (@bramkragten
- #89700 )  - Add WS command for connecting OTBR to a known Thread network (@emontnemery
- #89692 )  - Move local calendar text fixtures to conftest.py (@allenporter
- #89674 )  - Improve hass_ws_client type hint in tests (@epenet
- #89703 )  - Add water sensor to bthome (@Ernst79
- #89595 )  - Add typing to statistics results (@bdraco
- #89118 )  - Tweak OTBR tests (@emontnemery
- #89694 )  - Reduce size of load query to prime event_types and states_meta at startup (@bdraco
- #89677 )  - Add diagnostics to Starlink (@boswelja
- #86328 )  - Add additional CalendarEvent validation (@allenporter
- #89533 )  - Fix infinite loop in sun.sun (@Swamp-Ig
- #89723 )  - Fix filtered purge not removing newer events (@bdraco
- #89721 )  - Fix additional typing in local calendar tests (@allenporter
- #89704 )  - Migrate EventData management to a table manager (@bdraco
- #89716 )  - Bump ruff to 0.0.256 (@epenet
- #89734 )  - Add turn_on trigger to Samsung TV (@epenet
- #89018 )  - Reolink auto quick reply (@starkillerOG
- #89656 )  - Make StatesMetaManager thread-safe when an entity_id is fully deleted from the database and than re-added (@bdraco
- #89732 )  - Add modbus hvac_* write registers (@janiversen
- #89695 )  - Make CalendarEntityFeature an IntFlag (@emontnemery
- #89733 )  - Address late feedback for SamsungTV (@epenet
- #89751 )  - Bump aiolivisi to 0.0.19 (@StefanIacobLivisi
- #89752 )  - Bump ical to 4.5.0 (@allenporter
- #89744 )  - Add type hints to update coordinator tests (@epenet
- #89748 )  - Fix NMBS IndexError (@PatrickGlesner
- #89698 )  - Add WAN information to SFR Box (@epenet
- #89678 )  - Avoid lingering timers in update coordinator tests (@epenet
- #89749 )  - Use 
SensorDeviceClass.ENUMand add state attributes translations in Shelly integration (@bieniu- #89660 )  - Reolink check firmware (@starkillerOG
- #88903 )  - Abort Hue config flow if bridge can not be reached (@marcelveldt
- #88893 )  - Fix hassio cleanup when addon in uninstalled (@emontnemery
- #89756 )  - Move calculation of current value into lib in Fritz!SmartHome (@mib1185
- #89150 )  - Improve type hints in condition helper tests (@epenet
- #89754 )  - Avoid rounding Starlink sensor data & instead allow configurable precision (@boswelja
- #89486 )  - Cache remote app list for vizio TVs (@raman325
- #89003 )  - Add keep_days to recorder.purge_entities (@bdraco
- #89726 )  - Bump pyblackbird to 0.6 for py3.11 (@bdraco
- #89719 )  - Update xknx to 2.7.0 (@farmio
- #89765 )  - Remove asyncio.coroutine workarounds (@bdraco
- #88560 )  - Migrate StateAttributes to use a table manager (@bdraco
- #89760 )  - Fix logbook tests failing because time was not url encoded correctly (@bdraco
- #89770 )  - Migrate States to use a table manager (@bdraco
- #89769 )  - Small cleanups to recorder history (@bdraco
- #89774 )  - Avoid lingering timer on script shutdown (@epenet
- #89753 )  - Bump actions/checkout from 3.3.0 to 3.4.0 (@dependabot - #89778
)  - Fix lingering timer in config entries test (@epenet
- #89787 )  - Add type hints to root tests (@epenet
- #89785 )  - Fix SFR Box diagnostics (@epenet
- #89783 )  - Add type hints to helper tests (@epenet
- #89784 )  - Add device class for Landis+Gyr GJ energy sensor (@vpathuis
- #89522 )  - Drop unused Google entity settings from cloud (@emontnemery
- #89786 )  - Restructure translations for entity components (@frenck
- #89702 )  - Add Pushsafer notify parameters (@appzer
- #89555 )  - Fix lingering timer in collection helper tests (@epenet
- #89793 )  - Add support for constant selector (@emontnemery
- #89573 )  - Mqtt prepare test base part1 (@jbouwh
- #89796 )  - Add filters to climate and light service descriptions (@emontnemery
- #86162 )  - Fix typo in docstr (@jbouwh
- #89804 )  - Fix lingering timer in condition tests (@epenet
- #89807 )  - Fix lingering timer in event sun tests (@epenet
- #89808 )  - Add state attribute translations for calendars (@frenck
- #89811 )  - Add state attribute translations for alarm control panel (@frenck
- #89809 )  - Add state attribute translations for covers (@frenck
- #89812 )  - Add missing state translations for Lock entities (@frenck
- #89795 )  - Add state attribute translations for device trackers (@frenck
- #89810 )  - Add pre-defined entity name translations (@frenck
- #89792 )  - Cleanup get_local_ip in global conftest (@epenet
- #89826 )  - Fix lingering timer in bootstrap tests (@epenet
- #89790 )  - Voice assistant integration with pipelines (@synesthesiam
- #89822 )  - Add freezer to known test fixtures in pylint (@epenet
- #89825 )  - Add state attribute translations for locks (@frenck
- #89820 )  - Fix lingering timer in event helper tests (@epenet
- #89819 )  - Add state attribute translations for fans (@frenck
- #89816 )  - Add state attribute translations for automations (@frenck
- #89815 )  - Change light white service call attribute to accept True (@emontnemery
- #89803 )  - Add local calendar diagnostics platform (@allenporter
- #89776 )  - Reduce latency to find stats metadata (@bdraco
- #89824 )  - Bump aiobafi6 to 0.8.0 (@jfroy
- #89840 )  - Add native_step to baf (@bdraco
- #89780 )  - Reduce number of tasks created by compiling missing statistics (@bdraco
- #89835 )  - Add tmpdir to known fixtures in pylint (@epenet
- #89844 )  - Mark recorder system_health session read_only (@bdraco
- #89842 )  - Ensure MockEntityPlatform shuts down after tests (@epenet
- #89849 )  - Fix EntityComponent lingering timer in helper tests (@epenet
- #89801 )  - Refactor entity manager code in geo_json_events integration (@exxamalte
- #89847 )  - Fix misstype translation reference keynames (@lunmay
- #89855 )  - Bump hass-nabucasa to 0.61.1 (@MartinHjelmare
- #89864 )  - Drop flake8 in favor of Ruff (@frenck
- #89863 )  - Upgrade pytest-xdist to 3.2.1 (@frenck
- #89857 )  - Drop pyupgrade in favor of Ruff (@frenck
- #89865 )  - Add state attribute translations for Number (@frenck
- #89881 )  - Add translations for Geolocation (@frenck
- #89880 )  - Add translations for Image processing (@frenck
- #89879 )  - Improve/extend state translations for Alarm Control Panel (@frenck
- #89872 )  - Bump screenlogicpy to v0.8.2 (@dieselrabbit
- #89832 )  - Drop autoflake in favor of Ruff (@frenck
- #89874 )  - Ensure all recorder session executes use retries or the execute helper (@bdraco
- #89888 )  - Add type hints to plex data (@epenet
- #89221 )  - Refactor imap coordinator (@jbouwh
- #89759 )  - Add state attribute translations for media players (@frenck
- #89821 )  - Use json_loads_object util in backup (@bdraco
- #89895 )  - Remove the old ix_states_event_id index if its no longer being used (@bdraco
- #89901 )  - Fix some I/O in the event loop during backup (@bdraco
- #89894 )  - Add state (attribute) translations for Text (@frenck
- #89898 )  - Add state attribute translations for Weather (@frenck
- #89897 )  - Small cleanups to writing entity state (@bdraco
- #89890 )  - Add state attribute translations for Sensor (@frenck
- #89896 )  - Add state attribute translations for light (@frenck
- #89818 )  - Add Landis+Gyr poll on restart (@vpathuis
- #89644 )  - Change README demo to demo.home-assistant.io subdomain (@djessemoody
- #89921 )  - Adjust “Lovelace” to “Dashboards” (@wrt54g
- #89927 )  - Fix lingering timer in config entry flow tests (@epenet
- #89853 )  - Fix ssl context being recreated frequently in httpx (@bdraco
- #89932 )  - Update media state via telnet in 
denonavrintegration (@ol-iver- #89788 )  - Add KNX interface device with diagnostic entities (@farmio
- #89213 )  - Adjust eventloop -> event loop spelling (@djessemoody
- #89931 )  - Avoid database executor job to fetch statistic metadata on cache hit (@bdraco
- #89960 )  - Guard against selecting all invalid entity_ids in history (@bdraco
- #89929 )  - Fix cpu thrashing during purge after all legacy events were removed (@bdraco
- #89923 )  - Remove legacy event lookups from logbook (@bdraco
- #89945 )  - Remove unneeded lambda_stmt in place add in statistics (@bdraco
- #89943 )  - Set unique on StatesMeta and EventTypes database tables (@bdraco
- #89971 )  - Avoid joining states_meta for statistics queries (@bdraco
- #89941 )  - Retain history when renaming an entity_id (@bdraco
- #89963 )  - Shield Reolink webhook callback from cancelation (@starkillerOG
- #89798 )  - Rewrite the calendar trigger to fix potential bugs (@allenporter
- #89918 )  - Fix statistics schema auto repair when there is bad data (@bdraco
- #89903 )  - Fix statistics schema µs precision auto repair being ineffective (@bdraco
- #89902 )  - Bump zeroconf to 0.47.4 (@bdraco
- #89973 )  - Fail CI on lingering timers (@epenet
- #89292 )  - Update django github references to main instead of master branch. (@djessemoody
- #89951 )  - Bump bluetooth deps for bleak 0.20 (@bdraco
- #89925 )  - Remove deprecated binary update sensor from AVM FRITZ!Box Tools (@mib1185
- #89940 )  - Use bluetooth address instead of uuid on MacOS (@bdraco
- #89926 )  - Refactor constants in geo_json_events integration (@exxamalte
- #89912 )  - Extend attribute state translations for Camera (@frenck
- #89876 )  - Adjust state class of Toon monetary sensors (@frenck
- #89985 )  - Use default rounding/presentation mechanism for upnp (@StevenLooman
- #89954 )  - Remove yaml import from imap integration (@jbouwh
- #89981 )  - Add user_input as suggested value in imap config flow (@jbouwh
- #89982 )  - Rollback the session after performing stats schema validation (@bdraco
- #89904 )  - Mark LiteJet as Platinum integration (@joncar
- #88623 )  - Filter out duplicate updates in esphome state dispatch (@bdraco
- #89779 )  - Add FTTH information to SFR Box (@epenet
- #89781 )  - Introduce a delay between update entity calls (@raman325
- #89737 )  - Add door lock device type to matter integration (@ArturoGuerra
- #89277 )  - Add mqtt common tests for availability (part2) (@jbouwh
- #89805 )  - Fix websocket back pressure bottleneck (@bdraco
- #89905 )  - Add support for new Insteon i3 devcies (@teharris1
- #89892 )  - Deprecate YAML in SamsungTV (@epenet
- #89743 )  - Prepare MQTT common tests part4 (@jbouwh
- #90023 )  - Add state translations for Siren entities (@frenck
- #89994 )  - Prepare MQTT common tests part3 (@jbouwh
- #90022 )  - Update the calendar trigger based on PR feedback (@allenporter
- #90017 )  - Enable inheritance checks on ExtraStoredData (@epenet
- #90021 )  - Improve humidifier type hints in integrations (@epenet
- #90030 )  - Improve media_player type hints in integrations (@epenet
- #90029 )  - Improve sensor type hints in integrations (@epenet
- #90031 )  - Improve native_value type hints in integrations (@epenet
- #90033 )  - Improve notify type hints in integrations (@epenet
- #90034 )  - Improve light type hints in integrations (@epenet
- #90035 )  - Add attribute state translations for oscillating fans (@frenck
- #89990 )  - Add state translations for Select entities (@frenck
- #89995 )  - Add state translations for all day calendar attribute (@frenck
- #89988 )  - Improve type hints in tuya vacuum (@epenet
- #90041 )  - Correct typing of pymodbus in modbus (@janiversen
- #90039 )  - Improve switch and climate type hints in integrations (@epenet
- #90040 )  - Guess media type when cast is playing media without media type (@emontnemery
- #90048 )  - Only publish mqtt_statestream when MQTT is started (@jbouwh
- #89833 )  - Improve type hints in zha fan (@epenet
- #90042 )  - Fix fritzbox TypedDict definition (@epenet
- #90043 )  - Improve type hints in rachio switch (@epenet
- #90050 )  - Fix missing length on context id and incorrect precision with MariaDB (dev only fix) (@bdraco
- #90058 )  - Add translations for Counter (@frenck
- #89989 )  - Bump reolink-aio to 0.5.6 (@starkillerOG
- #90059 )  - Fix translation string for fan oscillation (@dougiteixeira
- #90045 )  - Use has_template property from lib in Fritz!SmartHome (@mib1185
- #89152 )  - Update twentemilieu to 1.0.0 (@frenck
- #90071 )  - Refactor WLED select tests (@frenck
- #89219 )  - Make recorder migration column types for each dialect constants (@bdraco
- #90072 )  - Break out statistics repairs into a 
auto_repairsmodules (@bdraco- #90068 )  - Add TTS to pipelines (@synesthesiam
- #90004 )  - Fix generating statistics for time periods smaller than we can measure (@bdraco
- #90069 )  - Rename recorder run_history to table_managers.recorder_runs_manager (@bdraco
- #90070 )  - Implement data update coordinator for nextcloud (@mib1185
- #89652 )  - Prepare MQTT platorm tests part1 (@jbouwh
- #90051 )  - YoLink flexfob support (@matrixd2
- #90027 )  - Update hass-nabucasa to 0.62.0 (@balloob
- #90085 )  - Change error handling in async_process_play_media_url (@emontnemery
- #90052 )  - Allow passing binary to the WS connection (@balloob
- #89882 )  - Add test helper mock_config_flow (@emontnemery
- #90103 )  - Update OTRB config entry if REST API port has changed (@emontnemery
- #90101 )  - ZHA network settings API (@puddly
- #88564 )  - Update pvo to 1.0.0 (@frenck
- #90109 )  - Fix islamic_prayer_times setup (@emontnemery
- #90122 )  - Update wled to 0.16.0 (@frenck
- #90120 )  - Try to load integration before starting option flow (@emontnemery
- #90111 )  - Bump ulid-transform to 0.5.1 (@bdraco
- #90123 )  - Deduplicate multiprotocol addon helper (@emontnemery
- #90102 )  - Fix switch_as_x entity naming (@emontnemery
- #89992 )  - Add schema auto repairs for states tables (@bdraco
- #90083 )  - Turn AVM FRITZ!Box Tools sensors into coordinator entities (@mib1185
- #89953 )  - Bump PyJWT to 2.6.0 (@bdraco
- #90134 )  - Fix index not being dropped on postgresql databases with a schema prefix (@bdraco
- #90144 )  - Add auto repairs for events schema (@bdraco
- #90136 )  - Cache decode of JWT tokens (@bdraco
- #90013 )  - Use rel_url for looking up frontend panels (@bdraco
- #90149 )  - Add health mode to gree integration (@solazs
- #89764 )  - Simplify some multi pan code (@emontnemery
- #90135 )  - Bump bimmer_connected to 0.13.0 (@rikroe
- #90127 )  - Bump pyrympro to 0.0.7 (@OnFreund
- #90118 )  - Bump actions/stale from 7.0.0 to 8.0.0 (@dependabot - #90155
)  - Tweak multiprotocol tests (@emontnemery
- #90163 )  - Update powerwall strings for newer models (@bdraco
- #90151 )  - Adjust scaffold docstring (@epenet
- #90157 )  - Use snapshot test for Landis+Gyr (@vpathuis
- #90126 )  - Add codeowner Workday (@gjohansson-ST
- #90167 )  - Add constants file for Brottsplatskartan (@gjohansson-ST
- #90165 )  - Add constants file to workday (@gjohansson-ST
- #90168 )  - Update pydantic to 1.10.7 (@cdce8p
- #90164 )  - Remove unecessary variable in control4 (@nalin29
- #90176 )  - Improve logging for unavailable sonos hosts (@PeteRager
- #90172 )  - Add Landis+Gyr missing device class (@vpathuis
- #90182 )  - Bump pyControl4 to 1.1.0 (@nalin29
- #90115 )  - Cleanup some leftovers for Landis+Gyr (@vpathuis
- #90183 )  - Prepare MQTT platform tests part2 (@jbouwh
- #90105 )  - Prepare MQTT platform tests part3 (@jbouwh
- #90106 )  - Prepare MQTT platform tests part4 (@jbouwh
- #90107 )  - Prepare MQTT platform tests part8 (@jbouwh
- #90132 )  - Prepare MQTT platform tests part9 (@jbouwh
- #90133 )  - Add speech to text over binary websocket to pipeline (@synesthesiam
- #90082 )  - Fix missing mock in islamic_prayer_times (@epenet
- #90178 )  - Avoid calling the http access logging when logging is disabled (@bdraco
- #90152 )  - Fix recorder attribute excludes not being effective until after startup (@bdraco
- #90198 )  - Remove async_response from websocket apis where nothing was being awaited (@bdraco
- #90204 )  - Fix refactoring error in states/events context id migration (@bdraco
- #90193 )  - Small cleanups to logbook statement generator (@bdraco
- #90200 )  - Add icons for qbittorrent speed sensors (@chrisx8
- #90203 )  - Fix httpx client creating a new ssl context with each client (memory leak) (@bdraco
- #90191 )  - Prepare MQTT platform tests part5 (@jbouwh
- #90108 )  - Prepare MQTT platform tests part6 (@jbouwh
- #90129 )  - Prepare MQTT platform tests part7 (@jbouwh
- #90130 )  - Use helper on tests MQTT fan platform (@jbouwh
- #90196 )  - Rename create_api_object to be private (@nalin29
- #90187 )  - Remove incorrect parametrize decorator (@jbouwh
- #90219 )  - Rework UniFi wireless client “wired bug” logic (@Kane610
- #89757 )  - Remove duplicate code in livisi coordinator (@planbnet
- #90227 )  - Bump actions/checkout from 3.4.0 to 3.5.0 (@dependabot - #90215
)  - Move qbittorrent constants to const.py (@chrisx8
- #90201 )  - Add a faster query for get_last_state_changes when the number of states is 1 (@bdraco
- #90211 )  - Add livisi window sensor (WDS) (@planbnet
- #90220 )  - Subclass aiohttp requests to use json helper (@bdraco
- #90214 )  - Use the json load helper in a few more incoming web requests (@bdraco
- #90194 )  - Bump aiounifi to v45 (@Kane610
- #90250 )  - Add missing type hints to tests (@epenet
- #90218 )  - Improve browse_media type hints in media player (@epenet
- #90060 )  - Refactor Gree switch to use EntityDescription (@jeeftor
- #90143 )  - Check for empty lists in KNX address configuration (@farmio
- #90249 )  - Allow passing an optional name to async_track_time_interval (@bdraco
- #90244 )  - Add location field to calendar create_event service supported by Google Calendar and Local Calendar (@luca-angemi
- #90098 )  - Update vehicle to 1.0.0 (@frenck
- #90189 )  - Bump sqlalchemy to 2.0.7 (@bdraco
- #90256 )  - Add Re-Auth to bmw_connected_drive (@rikroe
- #90251 )  - Add entity name translations to Elgato (@frenck
- #89629 )  - Remove platform yaml radiotherm (@gjohansson-ST
- #90284 )  - Add sensor platform to Sun (@gjohansson-ST
- #81045 )  - Bump bleak-retry-connector to 3.0.2 (@bdraco
- #90279 )  - Remove Magicseaweed (@gjohansson-ST
- #90277 )  - Bump bleak to 0.20.1 (@bdraco
- #90282 )  - Remove pushbullet platform yaml import (@gjohansson-ST
- #90285 )  - Remove Volvooncall integration yaml import (@gjohansson-ST
- #90288 )  - Strict typing of UniFi integration (@Kane610
- #90278 )  - Adjust IntFlag handling in syrupy (@epenet
- #90223 )  - Adjust pylint plugin for components fixtures (@epenet
- #90217 )  - Use SnapshotAssertion in bmw_connected_drive tests (@rikroe
- #90128 )  - Adjust pylint plugin for return type inheritance (@epenet
- #90046 )  - Update Verisure package to 2.6.1 (@niro1987
- #89318 )  - Use SnapshotAssertion in gree switch tests (@epenet
- #90222 )  - Adjust targets type hint in notify platform (@epenet
- #90062 )  - Improve get_browse_image type hints in media player (@epenet
- #90057 )  - Fix pylint plugin for tuple[float, float] returns (@epenet
- #90047 )  - Add WLED IP as a sensor (@a-baturin
- #90241 )  - Implement config flow for nextcloud (@mib1185
- #89396 )  - [Issue template] Point to health page for version info (@igorsantos07
- #80708 )  - Update pipdeptree to 2.7.0 (@frenck
- #90312 )  - Fix Todoist end date for all day event (@boralyl
- #89837 )  - Bump ical to 4.5.1 and set PRODID for home assistant in local calendar ics (@allenporter
- #90291 )  - Bump ihcsdk to 2.8.5 (@dingusdk
- #90266 )  - Set qbittorrent integration_type to service (@chrisx8
- #90236 )  - Improve onewire test coverage (@epenet
- #90184 )  - Add milliseconds as valid duration sensor unit (@raman325
- #90018 )  - Apply late review comments from #89396 in Nextcloud (@mib1185
- #90327 )  - Add last trip time attribute to Verisure binary sensors (@skrynklarn
- #89944 )  - Bump cryptography to 40.0.1 (@bdraco
- #90326 )  - Bump aioesphomeapi to 13.6.0 (@bdraco
- #90330 )  - Upgrade netgear_lte third-party library to v0.0.15 (@amelchio
- #90324 )  - Fix sql doing I/O in the event loop at startup (@bdraco
- #90335 )  - Clean up voice assistant integration (@balloob
- #90239 )  - Remove deprecated platform yaml in Scrape (@gjohansson-ST
- #90272 )  - Cleanup name assignment imap sensor (@jbouwh
- #90306 )  - Add support for clearing the on device GATT cache to esphome (@bdraco
- #90318 )  - Use lambda in gree switch (@epenet
- #90316 )  - Use SnapshotAssertion in gree climate tests (@epenet
- #90339 )  - Adjust tts default_options type hints (@epenet
- #90053 )  - Revert “Fix NMBS IndexError” (@PatrickGlesner
- #90346 )  - Reolink add auto tracking entities (@starkillerOG
- #90063 )  - Bump reolink-aio to 0.5.7 (@starkillerOG
- #90344 )  - Add option flow for imap integration (@jbouwh
- #89914 )  - Bump python-holidays to 0.21.13 (@jgoguen
- #89724 )  - Bump zwave-js-server-python to 0.47.0 (@raman325
- #90212 )  - Fix pylint plugin for binary websocket (@epenet
- #90351 )  - Remove incorrect ignore in pylint plugin (@epenet
- #90024 )  - Rewrite tts tests (@emontnemery
- #90355 )  - Bump lifx dependencies (@Djelibeybi
- #90345 )  - Move Proxmox VE constants (@dougiteixeira
- #90357 )  - Remove unreachable continue statement in imap push coordinator (@jbouwh
- #90361 )  - Use entity name translations in Verisure (@frenck
- #90362 )  - Fix 
quirk_class_validatorin ZHA unit tests (@javicalle- #90140 )  - Filter out ASCII tab or newline from input URLs (@frenck
- #90348 )  - Add “stream” to default_config (@tsbernar
- #90153 )  - Add state translations for Script entities (@frenck
- #90354 )  - Improve tts test coverage (@emontnemery
- #90370 )  - Clean dead code from matter (@MartinHjelmare
- #90369 )  - Add RestoreEntity pylint checks to all platforms (@epenet
- #90020 )  - Add reauth flow to dormakaba dkey (@emontnemery
- #90225 )  - Fail CI if codecov upload fails (@frenck
- #90363 )  - Cleanup command_line (@gjohansson-ST
- #90268 )  - Fix generic_hygrostat error at startup (@Shulyaka
- #88764 )  - Support toggling debug logging for custom components (@jbergler
- #90340 )  - Add state translations for helpers (@frenck
- #90356 )  - Refactor matter device entity value conversion (@MartinHjelmare
- #90368 )  - Workday cleanup (@gjohansson-ST
- #90267 )  - Bump aiodiscover to 1.4.15 (@bdraco
- #90383 )  - Bump nextcloudmonitor to 1.4.0 (@mib1185
- #90372 )  - Bump proxmoxer to 2.0.1 in Proxmox VE (@dougiteixeira
- #90378 )  - Improve airq handling of DeviceInfo (@Sibgatulin
- #90232 )  - Set default value for some Fronius entities (@farmio
- #89475 )  - Add lru stats to the profiler integration (@bdraco
- #90388 )  - Refactor GIOS sensor platform (@bieniu
- #89389 )  - Turn AVM FRITZ!Box Tools binary sensors into coordinator entities (@mib1185
- #89955 )  - Handle uncaught exceptions during update in Aladdin_connect (@mkmer
- #89889 )  - Add Mikrotik WifiWave2 (@lcosmin
- #89711 )  - Allow reloading iZone config entry (@Swamp-Ig
- #89572 )  - Add SharkIQ EU region support (@funkybunch
- #89349 )  - Add phase information to YouLess (@gjong
- #89255 )  - Improve threshold binary sensor (@emontnemery
- #88978 )  - Display only supported Home Connect appliance programs (@stickpin
- #88801 )  - Add re-auth support to philips_js (@elupus
- #88774 )  - Add a calendar entity to Ridwell (@bachya
- #88108 )  - Look up todoist collaborators only when adding new task (@boralyl
- #87957 )  - Add product calculation to Group sensor (@gjohansson-ST
- #87373 )  - Bump pychromecast to 13.0.6 (@emontnemery
- #90390 )  - Remove dependency on async_setup from mqtt integration (@jbouwh
- #87987 )  - Redact secret zwave values in diagnostics (@raman325
- #90389 )  - Improve Proxmox VE type hints (@dougiteixeira
- #90359 )  - Use shorthand attributes in IHC (@dingusdk
- #90350 )  - Speed up profiler lru test (@bdraco
- #90395 )  - Add callback support to nuki (@pree
- #88346 )  - Display unit of elevation in met config flow (@chrisx8
- #88283 )  - Fix ridwell tests (@epenet
- #90401 )  - Fix setting color + brightness of Tuya lights (@BNolet
- #88470 )  - Use slots for recorder tasks to reduce memory (@bdraco
- #90387 )  - Update calendar to always request start/end dates in local time rather than UTC (@allenporter
- #90386 )  - Make OTBR use same channel as ZHA (@emontnemery
- #88546 )  - Add encoding configuration setting to REST and Scape (@olivierouellet
- #90254 )  - Add device info to Nextcloud integration (@mib1185
- #90328 )  - Bump python-bsblan to 0.5.11 (@liudger
- #90377 )  - Fix benign typo in discovery flow helper (@bdraco
- #90396 )  - Fix envoy last_seven_days_energy* state class (@jmuf
- #84528 )  - Remove mysensors notify (@MartinHjelmare
- #90402 )  - Remove lru_cache on websocket _state_diff (@bdraco
- #90392 )  - Fix NMBS IndexError (@PatrickGlesner
- #90365 )  - Update transmission up/down speed values (@gapple
- #88528 )  - TP-Link Omada update entities code review feedback (@MarkGodwin
- #89668 )  - Remove mysensors ir switch (@MartinHjelmare
- #90403 )  - Have octoprint camera respect verify_ssl configuration (@rfleming71
- #90384 )  - Add support for select entities in velbus (@Cereal2nd
- #87568 )  - Refactor Tado to use entity descriptions and new naming style (@avee87
- #75750 )  - Add HTML support for Google Mail messages (@tkdrob
- #87201 )  - Fix Notify Group payload data mis-merge (@arychj
- #90253 )  - Improve airq test coverage (@Sibgatulin
- #90192 )  - Add panel brightness control for Litter-Robot 4 (@natekspencer
- #86269 )  - Add minutely updates to relative_time and today_at template functions (@Petro31
- #86815 )  - Don’t rely on the demo integration in voice_assistant tests (@emontnemery
- #90405 )  - Add rest encoding test (@epenet
- #90404 )  - Replace comments with docstring in ColorMode enum (@epenet
- #90408 )  - Add brand for HomeSeer (@b-uwe
- #90066 )  - Disable esphome stopping a cover if the cover doesn’t support stopping (@amomchilov
- #80104 )  - Add switch tests for devolo_home_control (@Shutgun
- #80154 )  - Add tests to Lidarr (@tkdrob
- #79610 )  - Add basic tests for temper USB temperature sensor integration (@davet2001
- #80220 )  - Simplify qbittorrent sensor class init (@chrisx8
- #90411 )  - Add has_value function/test to Jinja2 template (@ehendrix23
- #79550 )  - Add periodically resetting meter option to utility meter (@Wesley-Vos
- #88446 )  - Add connected relayer region to system health (@ludeeus
- #90410 )  - Blebox cover tilt (@riokuu
- #85515 )  - Don’t use force_update for Tasmota sensors (@DerEnderKeks
- #85943 )  - Update zwave-me-ws version to 0.3.6 (@lawfulchaos
- #90233 )  - Refactor ZHA binary sensors to read from zigpy cache (@TheJulianJES
- #89481 )  - Add DataUpdateCoordinator to the Todoist integration (@boralyl
- #89836 )  - Ensure filters are generated inside the lambda locks (@bdraco
- #90418 )  - Implement imap_content event for imap integration (@jbouwh
- #90242 )  - Check webhook url is reachable in Reolink (@starkillerOG
- #89585 )  - Catch somecomfort error in Honeywell (@mkmer
- #90425 )  - Add header with parsed date to imap event data (@jbouwh
- #90422 )  - Rework recorder filters to avoid caching mistakes (@bdraco
- #90419 )  - Write protect entity options (@emontnemery
- #90185 )  - Add goodwe sensors for apparent/reactive pwr (@mletenay
- #87940 )  - Add sqlalchemy LRUs to the profiler lru service (@bdraco
- #90428 )  - Add binding of IKEA Matter Switch cluster in ZHA (@MattWestb
- #89623 )  - Bump onvif-zeep-async to 1.2.3 (@bdraco
- #90382 )  - Bump ZHA quirks to 0.0.95 (@dmulcahey
- #90435 )  - Add Aqara E1 thermostat entities to ZHA (@TheJulianJES
- #90158 )  - Add Aqara smoke sensor entities to ZHA (@TheJulianJES
- #90159 )  - Migrate ssdp to config_flow for frontier_silicon (@wlcrs
- #89496 )  - Remove unused types argument in statistics query generation (@bdraco
- #90431 )  - Reduce cache key size for queries that only need single columns (@bdraco
- #90430 )  - OpenAI to use GPT3.5 (@balloob
- #90423 )  - Fix unbound variable in sql when session setup fails (@bdraco
- #90439 )  - Isolate the sql integration with a separate query cache (@bdraco
- #90438 )  - Fix data issue for energyzero during midnight (@klaasnicolaas
- #90433 )  - Fix data issue for easyEnergy during midnight (@klaasnicolaas
- #90434 )  - Bump yalexs-ble to 2.1.13 (@bdraco
- #90442 )  - Limit observations requested for NWS (@MatthewFlamm
- #90137 )  - Add new sensors to airq (@Sibgatulin
- #90413 )  - Reolink improve config flow login (@starkillerOG
- #90036 )  - Fix goodwe export limit unit on single phase DT inverters (@mletenay
- #90427 )  - Make abort_entries_match available in options flow (@epenet
- #90406 )  - Bump home-assistant-intents to 2023.3.29 (@balloob
- #90459 )  - Bump python-matter-server to 3.2.0 (@marcelveldt
- #90457 )  - Add verify ssl option to nextcloud (@mib1185
- #90462 )  - Bump zwave-js-server-python to 0.47.1 (@raman325
- #90464 )  - Update frontend to 20230329.0 (@bramkragten
- #90461 )  - Allow resetting filters for waze_travel_time (@eifinger
- #88253 )  - Add re-auth flow to nextcloud (@mib1185
- #90472 )  - Rename custom_jinja to custom_templates (@emontnemery
- #90473 )  - Use auth token in Ezviz (@RenierM26
- #54663 )  - Add missing strings in frontier_silicon (@wlcrs
- #90446 )  - Bump reolink-aio to 0.5.8 (@starkillerOG
- #90467 )  - Add entity name translations for devolo Home Network (@Shutgun
- #90471 )  - Bump yalexs-ble to 2.1.14 (@bdraco
- #90474 )  - Add missing strings to sensor integration (@epenet
- #90475 )  - Correctly load ZHA settings from API when integration is not running (@puddly
- #90476 )  - Fix filesize doing blocking I/O in the event loop (@bdraco
- #90479 )  - OpenAI to rely on built-in 
areasvariable (@balloob- #90481 )  - Include channel in response to WS thread/list_datasets (@emontnemery
- #90493 )  - Fix for is_hidden_entity when using it in select, selectattr, reject, and rejectattr (@Petro31
- #90512 )  - Unregister webhook when registering webhook with nuki fials (@balloob
- #90514 )  - Add a device to the sun (@frenck
- #90517 )  - Migrate old ZHA IasZone sensor state to zigpy cache (@TheJulianJES
- #90508 )  - Update frontend to 20230330.0 (@bramkragten
- #90524 )  - Add entity name translations to LaMetric (@frenck
- #90538 )  - Fix migration when encountering a NULL entity_id/event_type (@bdraco
- #90542 )  - Handle garbage in the context_id column during migration (@bdraco
- #90544 )  - Bump ZHA dependencies (@puddly
- #90547 )  - Allow removal of sensor settings in scrape (@epenet
- #90412 )  - Make sonos activity check a background task (@bdraco
- #90553 )  - Add arming/disarming state to Verisure (@frenck
- #90577 )  - Raise on invalid (dis)arm code in manual alarm (@frenck
- #90579 )  - Tweak yalexs_ble translations (@emontnemery
- #90582 )  - Raise on invalid (dis)arm code in manual mqtt alarm (@frenck
- #90584 )  - Bump reolink-aio to 0.5.9 (@starkillerOG
- #90590 )  - Update frontend to 20230331.0 (@bramkragten
- #90594 )  - Fix ZHA definition error on received command (@puddly
- #90602 )  - Perform an energy scan when downloading ZHA diagnostics (@puddly
- #90605 )  - Bump zwave-js-server-python to 0.47.3 (@raman325
- #90606 )  - Avoid sorting domain/all states in templates (@bdraco
- #90608 )  - Only limit stats to started add-ons (@ludeeus
- #90611 )  - Small speed up to _collection_changed (@bdraco
- #90621 )  - Bump zeroconf to 0.51.0 (@bdraco
- #90622 )  - Fix Rest switch init was not retrying if unreachable at setup (@aschor
- #90627 )  - Fix mqtt device_tracker is not reloading yaml (@jbouwh
- #90639 )  - Update frontend to 20230401.0 (@bramkragten
- #90646 )  - Update goodwe library to v0.2.30 (@mletenay
- #90607 )  - Add entity name translations to Brother (@bieniu
- #90634 )  - Add object source logger to profiler (@bdraco
- #90650 )  - Add entity name translations to GIOS (@bieniu
- #90655 )  - Add entity name translations to Airly (@bieniu
- #90656 )  - Bump zeroconf to 0.52.0 (@bdraco
- #90660 )  - Add entity name translations for Nest sensors (@Nardol
- #90677 )  - Fix frontend test (@balloob
- #90679 )  - Bump zeroconf to 0.53.0 (@bdraco
- #90682 )  - Fix default sensor entity name for PM1 (@bieniu
- #90684 )  - Fix memory churn in state templates (@bdraco
- #90685 )  - Remove Darksky integration (@gjohansson-ST
- #90322 )  - Use entity name translations in Fronius (@farmio
- #90463 )  - Raise repair issue if OTBR and ZHA are on different channels (@emontnemery
- #90494 )  - Correct handling if WIFI combine suffix is “None” (@N3rdix
- #90528 )  - Add entity name translations to Plugwise (@frenck
- #90537 )  - Add entity name translations to Switchbot (@Nardol
- #90600 )  - Bump env_canada to v0.5.30 (@michaeldavie
- #90644 )  - Ensure system log does not raise while processing logger messages (@bdraco
- #90652 )  - Add entity name translations to NAM (@bieniu
- #90681 )  - Use the default entity names in Airly (@bieniu
- #90693 )  - Use entity name translations in 1-wire (@epenet
- #90696 )  - Use entity name translations in Renault (@epenet
- #90697 )  - Use entity name translations in SFR Box (@epenet
- #90698 )  - Fix ha version in EDL21 deprecation warning (@StephanU
- #90699 )  - Use the default entity names in GIOS (@bieniu
- #90700 )  - Add entity name translations to BraviaTV (@bieniu
- #90702 )  - Add entity name translations to AVM Fritz!Tools (@mib1185
- #90703 )  - Add entity name translations to Synology DSM (@mib1185
- #90706 )  - Add entity name translations to AVM Fritz!SmartHome (@mib1185
- #90707 )  - Add entity name translations to NUT (@mib1185
- #90709 )  - Fix Livisi climate min/max temperature (@planbnet
- #90712 )  - Add entity name translations to Pi-hole (@mib1185
- #90713 )  - Fix translation of status binary sensor in PI-Hole (@mib1185
- #90719 )  - Fix missing battery sensors for SimpliSafe locks (@bachya
- #90722 )  - Bump pychromecast to 13.0.7 (@emontnemery
- #90724 )  - Add entity name translations to Luftdaten (@mib1185
- #90725 )  - Add entity name translations to sun (@mib1185
- #90732 )  - Update frontend to 20230403.0 (@bramkragten
- #90735 )  - Fix bluetooth_le_tracker reporting devices Home when they leave (@ProtoxiDe22
- #90641 )  - Add entity name translations to SMS (@mib1185
- #90727 )  - Add entity name translations to Tractive (@bieniu
- #90738 )  - SharkIQ Hotfix - Handle current installations by using default 
REGION(@funkybunch- #90741 )  - Add entity name translations to NextDNS (@bieniu
- #90743 )  - Bump zeroconf to 0.54.0 (@bdraco
- #90744 )  - Prevent overly large event data from being stored in the database (@bdraco
- #90747 )  - Restore state for ZHA OnOff binary sensors (@TheJulianJES
- #90749 )  - Bump aiohomekit to 2.6.3 (@bdraco
- #90752 )  - Add render count to templates repr (@bdraco
- #90753 )  - Fix frontend test again (@balloob
- #90754 )  - Update template environment from the event loop (@emontnemery
- #90758 )  - Fix recovering imap connection triggers re-auth (@jbouwh
- #90762 )  - Add async_write_ha_state to Reolink select (@starkillerOG
- #90764 )  - Address late review for NextDNS entity name translations (@bieniu
- #90771 )  - Add Warning in the issue registry if a HTTPS webhook is used for Nuki (@pree
- #90718 )  - Add translations for Nuki entity name and battery critical state attribute (@Nardol
- #90772 )  - Add entity name translations to Broadlink sensors (@Nardol
- #90783 )  - Fix BLEDevice not getting updated when details change for remote scanners (@bdraco
- #90815 )  - Bump aioesphomeapi to 10.6.1 (@bdraco
- #90816 )  - Master RAS zone (@Swamp-Ig
- #90825 )  - Suppress imap logging on reconnect and presume state (@jbouwh
- #90826 )  - Add entity name translations to prusalink entities (@piitaya
- #90833 )  - Support entity name translation in DSMR Reader component (@Glodenox
- #90836 )  - Adjust async_track_time_interval name argument (@epenet
- #90838 )  - Bump frontend to 20230405.0 (@bramkragten
- #90841 )  - Adjust OTBR channel conflict URL (@emontnemery
- #90847 )