ESPHome 2026.8.0 - August 2026
NOTE
This is a beta release. Details on this page may change before the stable release is published.
Full list of changes
Section titled “Full list of changes”New Features
Section titled “New Features”- [mipi_dsi] Add JC8012P4A1-V2 esphome#17457 by @rayz90 (new-feature)
- [cc1101] Add FOCCFG and BSCFG config options esphome#17577 by @hn (new-feature)
- [aqi] Add extended_range option for over-range AQI values esphome#17570 by @jasstrong (new-feature) (breaking-change)
- [deep_sleep] Add on_wake automation triggers esphome#17569 by @jesserockz (new-feature)
- [ds248x] Add OneWireBus platform for DS248x I2C-to-1Wire bridges esphome#12717 by @tomwellnitz (new-component) (new-feature) (new-platform)
- [ethernet][network][wifi] Add network priority for multi-interface support esphome#14255 by @rwalker777 (new-feature)
- [bk72xx_ble] BLE controller support for BK72xx (BLE 5.x) esphome#17775 by @Bl00d-B0b (new-component) (new-feature)
- [gsl3670] Add a model configuration for the Guition JC8012P4A1 esphome#17843 by @mpoettgen (new-feature)
- [mipi_spi] Add ST77916 / ESP-VoCat model esphome#17679 by @rggammon (new-feature)
- [remote_base] support haier short IR message esphome#17826 by @ssieb (new-feature)
- [bk72xx_ble_tracker] BLE 5.x scanner for BK72xx esphome#17135 by @Bl00d-B0b (new-component) (new-feature)
- [mipi_spi] Add Waveshare ESP32-S3-Touch-LCD-3.5B esphome#17513 by @clydebarrow (new-feature)
- [epaper_spi] Add Inkplate 6COLOR support esphome#17717 by @franFodor (new-feature)
- [lvgl] Add lvgl.theme.update action esphome#17678 by @clydebarrow (new-feature)
- [openthread_info] Add more sensors for Openthread info esphome#17276 by @Ardumine (new-feature) (new-platform)
- [ln882h_ble] BLE controller support for LN882H esphome#17777 by @Bl00d-B0b (new-component) (new-feature)
- [nrf52] feat: add support for zephyr pwm esphome#16483 by @wiomoc (new-component) (new-feature) (new-platform)
- [i2s_audio] Implemented I2S PDM Microphone DSR selection esphome#17751 by @egormanga (new-feature)
- [rp2040_ble] Add controller scan primitives esphome#18001 by @bdraco (new-feature)
- [rp2_ble_tracker] BLE tracker for Raspberry Pi Pico W esphome#18002 by @bdraco (new-component) (new-feature)
- [rp2_ble_tracker] Add active scanning support esphome#18035 by @bdraco (new-feature)
- [ln882h_ble_tracker] BLE 5.x scanner for LN882H esphome#16691 by @Bl00d-B0b (new-component) (new-feature)
- [lvgl] Add lvgl.widget.set_z_index action esphome#17993 by @clydebarrow (new-feature)
- [lvgl] Add pause option to
round_tripanimation timing esphome#17574 by @clydebarrow (new-feature) (breaking-change) - [esp32_rmt_led_strip] Add RGBW channel ordering esphome#18028 by @peterkeen (new-feature)
- [zigbee] Resolution attribute for esp32 sensors esphome#17973 by @TesseractTimmee (new-feature)
- [micro_wake_word] Support adding and removing wake word models at runtime esphome#17927 by @kahrendt (new-feature)
- [ln882h_ble_tracker] Automation triggers and actions esphome#17778 by @Bl00d-B0b (new-feature)
- [bk72xx_ble_tracker] Automation triggers and actions esphome#17776 by @Bl00d-B0b (new-feature)
- [modbus_server] Support byte-swapped word types U_WORD_S and S_WORD_S esphome#17829 by @marpi82 (new-feature)
- [ota] Multi-key OTA signature verification for external RSA signing esphome#17981 by @kbx81 (new-feature)
- [bluetooth_proxy] Platform-neutral advertisement proxy via ble_device_base esphome#17880 by @Bl00d-B0b (new-feature)
- [ld6002b] Add LD6002B 60GHz presence radar (1/5) esphome#17819 by @hepter (new-component) (new-feature) (new-platform)
- [ld6002b] Add target sensors (2/5) esphome#17820 by @hepter (new-feature) (new-platform)
- [modbus_client] Add component for ad-hoc modbus request/response esphome#17676 by @exciton (new-component) (new-feature)
- [zigbee] Add on_start automation (3/3) esphome#18009 by @luar123 (new-feature)
- [ld6002b] Add switch, number and text sensor platforms (3/5) esphome#17821 by @hepter (new-feature) (new-platform)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 1: ble_presence, ble_rssi, ble_scanner) esphome#17716 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 2: atc_mithermometer, pvvx_mithermometer, bthome_mithermometer) esphome#17950 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 3: mopeka_ble, mopeka_pro_check, mopeka_std_check) esphome#17951 by @Bl00d-B0b (new-feature) (breaking-change)
- [ld6002b] Add select and button platforms (4/5) esphome#17822 by @hepter (new-feature) (new-platform)
- [bluetooth_proxy] Enable active connections on rp2 esphome#18132 by @bdraco (new-feature)
- [modbus] Add server support for read/write multiple registers (0x17) esphome#17357 by @zweckj (new-feature)
- [modbus_client] Add typed read/write actions esphome#18078 by @exciton (new-feature)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 4: ruuvi_ble, ruuvitag, b_parasite) esphome#18161 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 5: airthings_ble, inkbird_ibsth1_mini, radon_eye_ble) esphome#18165 by @Bl00d-B0b (new-feature) (breaking-change)
- [modbus_client] Lambda sugar esphome#18146 by @exciton (new-feature)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 6: thermopro_ble, exposure_notifications, xiaomi_ble) esphome#18168 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 7: xiaomi_cgd1, xiaomi_cgdk2, xiaomi_cgg1) esphome#18170 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 8: xiaomi_cgpr1, xiaomi_gcls002, xiaomi_hhccjcy01) esphome#18171 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 9: xiaomi_hhccjcy10, xiaomi_hhccpot002, xiaomi_jqjcy01ym) esphome#18172 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 10: xiaomi_lywsd02, xiaomi_lywsd02mmc, xiaomi_lywsd03mmc) esphome#18174 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 11: xiaomi_lywsdcgq, xiaomi_mhoc303, xiaomi_mhoc401) esphome#18178 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 12: xiaomi_miscale, xiaomi_mjyd02yla, xiaomi_mue4094rt) esphome#18180 by @Bl00d-B0b (new-feature) (breaking-change)
- [modbus] Route broadcast writes (address 0) to all server devices esphome#17387 by @zweckj (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 13: xiaomi_rtcgq02lm, xiaomi_wx08zm, xiaomi_xmwsdj04mmc) esphome#18183 by @Bl00d-B0b (new-feature) (breaking-change)
- [ld6002b] Add area and zone configuration (5/5) esphome#17823 by @hepter (new-feature)
- [ethernet] Add CH390 SPI ethernet support esphome#18226 by @ptr727 (new-feature)
- [mitsubishi_cn105] Extract top-level hub esphome#16987 by @crnjan (new-feature)
- [bk72xx_ble] Support active scanning by packing the GAPM start command esphome#18169 by @bdraco (new-feature)
- [modbus_client] Add read/write multiple registers (FC 0x17) esphome#18215 by @exciton (new-feature) (breaking-change)
- [hoermann_hcp] Add Hörmann HCP garage door component esphome#17355 by @zweckj (new-component) (new-feature) (new-platform)
- [mitsubishi_cn105] Add vertical vane direction select esphome#16723 by @crnjan (new-feature) (new-platform)
- [modbus_server] Add coil/discrete-input support esphome#17464 by @exciton (new-feature)
- [hoermann_hcp] Add connectivity binary sensor esphome#18189 by @zweckj (new-feature) (new-platform)
- [rp2040_ble][bluetooth_connection] 3 connection slots on rp2 with esp32 parity esphome#18247 by @bdraco (new-feature)
- [mitsubishi_cn105] Add vertical vane state trigger esphome#16727 by @crnjan (new-feature)
- [sendspin] Add image platform for artwork esphome#17937 by @kahrendt (new-feature) (new-platform)
- [mitsubishi_cn105] Add vertical vane control action esphome#16737 by @crnjan (new-feature)
- [ethernet][network][wifi] Arbitrate the default route from the network priority list esphome#17797 by @kbx81 (new-feature)
- [hoermann_hcp] Add garage light control esphome#18190 by @zweckj (new-feature) (new-platform)
- [core] Add esphome logs over web_server HTTP SSE esphome#17110 by @bdraco (new-feature)
New Components
Section titled “New Components”- [ds248x] Add OneWireBus platform for DS248x I2C-to-1Wire bridges esphome#12717 by @tomwellnitz (new-component) (new-feature) (new-platform)
- [ble_device_base] Platform-neutral BLE layer; esp32_ble_tracker implements BLEHub esphome#17150 by @Bl00d-B0b (new-component)
- [bk72xx_ble] BLE controller support for BK72xx (BLE 5.x) esphome#17775 by @Bl00d-B0b (new-component) (new-feature)
- [bk72xx_ble_tracker] BLE 5.x scanner for BK72xx esphome#17135 by @Bl00d-B0b (new-component) (new-feature)
- [ln882h_ble] BLE controller support for LN882H esphome#17777 by @Bl00d-B0b (new-component) (new-feature)
- [nrf52] feat: add support for zephyr pwm esphome#16483 by @wiomoc (new-component) (new-feature) (new-platform)
- [rp2_ble_tracker] BLE tracker for Raspberry Pi Pico W esphome#18002 by @bdraco (new-component) (new-feature)
- [ln882h_ble_tracker] BLE 5.x scanner for LN882H esphome#16691 by @Bl00d-B0b (new-component) (new-feature)
- [ld6002b] Add LD6002B 60GHz presence radar (1/5) esphome#17819 by @hepter (new-component) (new-feature) (new-platform)
- [modbus_client] Add component for ad-hoc modbus request/response esphome#17676 by @exciton (new-component) (new-feature)
- [bluetooth_connection] Move BluetoothConnection out of bluetooth_proxy esphome#18129 by @bdraco (new-component)
- [hoermann_hcp] Add Hörmann HCP garage door component esphome#17355 by @zweckj (new-component) (new-feature) (new-platform)
New Platforms
Section titled “New Platforms”- [ds248x] Add OneWireBus platform for DS248x I2C-to-1Wire bridges esphome#12717 by @tomwellnitz (new-component) (new-feature) (new-platform)
- [openthread_info] Add more sensors for Openthread info esphome#17276 by @Ardumine (new-feature) (new-platform)
- [nrf52] feat: add support for zephyr pwm esphome#16483 by @wiomoc (new-component) (new-feature) (new-platform)
- [ld6002b] Add LD6002B 60GHz presence radar (1/5) esphome#17819 by @hepter (new-component) (new-feature) (new-platform)
- [ld6002b] Add target sensors (2/5) esphome#17820 by @hepter (new-feature) (new-platform)
- [ld6002b] Add switch, number and text sensor platforms (3/5) esphome#17821 by @hepter (new-feature) (new-platform)
- [ld6002b] Add select and button platforms (4/5) esphome#17822 by @hepter (new-feature) (new-platform)
- [hoermann_hcp] Add Hörmann HCP garage door component esphome#17355 by @zweckj (new-component) (new-feature) (new-platform)
- [mitsubishi_cn105] Add vertical vane direction select esphome#16723 by @crnjan (new-feature) (new-platform)
- [hoermann_hcp] Add connectivity binary sensor esphome#18189 by @zweckj (new-feature) (new-platform)
- [sendspin] Add image platform for artwork esphome#17937 by @kahrendt (new-feature) (new-platform)
- [hoermann_hcp] Add garage light control esphome#18190 by @zweckj (new-feature) (new-platform)
Breaking Changes
Section titled “Breaking Changes”- [aqi] Add extended_range option for over-range AQI values esphome#17570 by @jasstrong (new-feature) (breaking-change)
- [rc522_i2c] Change default address to match whats in the docs esphome#17566 by @lsellens (breaking-change)
- [web_server] Use alarm_control_panel as the domain in JSON esphome#17594 by @bdraco (breaking-change)
- [web_server] Switch entity id to the new format and drop name_id esphome#17586 by @bdraco (breaking-change)
- [sgp4x] Rename voc/nox sensor keys to voc_index/nox_index esphome#17723 by @bharvey88 (breaking-change)
- [sen5x] Rename voc/nox sensor keys to voc_index/nox_index esphome#17724 by @bharvey88 (breaking-change)
- [sen6x] Rename voc/nox sensor keys to voc_index/nox_index esphome#17725 by @bharvey88 (breaking-change)
- [modbus_controller] Span response path; keep sensor addresses as configured esphome#17677 by @exciton (breaking-change)
- [lvgl] Add pause option to
round_tripanimation timing esphome#17574 by @clydebarrow (new-feature) (breaking-change) - [modbus_controller] Refactor to simplify message handling esphome#11781 by @exciton (breaking-change)
- [ble_device_base] Deprecate address_str in favor of address_str_to esphome#18092 by @bdraco (breaking-change)
- [ble_device_base] Hub provider registry and shared consumer helpers esphome#18081 by @Bl00d-B0b (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 1: ble_presence, ble_rssi, ble_scanner) esphome#17716 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 2: atc_mithermometer, pvvx_mithermometer, bthome_mithermometer) esphome#17950 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 3: mopeka_ble, mopeka_pro_check, mopeka_std_check) esphome#17951 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 4: ruuvi_ble, ruuvitag, b_parasite) esphome#18161 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 5: airthings_ble, inkbird_ibsth1_mini, radon_eye_ble) esphome#18165 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 6: thermopro_ble, exposure_notifications, xiaomi_ble) esphome#18168 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 7: xiaomi_cgd1, xiaomi_cgdk2, xiaomi_cgg1) esphome#18170 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 8: xiaomi_cgpr1, xiaomi_gcls002, xiaomi_hhccjcy01) esphome#18171 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 9: xiaomi_hhccjcy10, xiaomi_hhccpot002, xiaomi_jqjcy01ym) esphome#18172 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 10: xiaomi_lywsd02, xiaomi_lywsd02mmc, xiaomi_lywsd03mmc) esphome#18174 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 11: xiaomi_lywsdcgq, xiaomi_mhoc303, xiaomi_mhoc401) esphome#18178 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 12: xiaomi_miscale, xiaomi_mjyd02yla, xiaomi_mue4094rt) esphome#18180 by @Bl00d-B0b (new-feature) (breaking-change)
- [modbus] Route broadcast writes (address 0) to all server devices esphome#17387 by @zweckj (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 13: xiaomi_rtcgq02lm, xiaomi_wx08zm, xiaomi_xmwsdj04mmc) esphome#18183 by @Bl00d-B0b (new-feature) (breaking-change)
- [modbus_client] Add read/write multiple registers (FC 0x17) esphome#18215 by @exciton (new-feature) (breaking-change)
All changes
Section titled “All changes”- [epaper_spi] Remove noop deep sleep command esphome#15595 by @Eelviny
- [gsl3670] Reference the test display explicitly so grouped CI builds validate esphome#17462 by @swoboda1337
- [docs] Document web server as an open HTTP API by design in threat model esphome#17465 by @jesserockz
- [mipi_dsi] Add JC8012P4A1-V2 esphome#17457 by @rayz90 (new-feature)
- [ci] Group component test output into collapsible CI log sections esphome#17536 by @jesserockz
- [script] Fix duplicate import in build_codeowners.py esphome#17543 by @clydebarrow
- [tests] Add test_display component to free touchscreen tests from display pins esphome#17540 by @jesserockz
- [cc1101] Export CC1101Listener to Python esphome#17576 by @hn
- [ci] Add rp2 clang-tidy environment esphome#17486 by @swoboda1337
- [cc1101] Add FOCCFG and BSCFG config options esphome#17577 by @hn (new-feature)
- [aqi] Add extended_range option for over-range AQI values esphome#17570 by @jasstrong (new-feature) (breaking-change)
- [deep_sleep] Add on_wake automation triggers esphome#17569 by @jesserockz (new-feature)
- [rc522_i2c] Change default address to match whats in the docs esphome#17566 by @lsellens (breaking-change)
- [ci] Extend variant clang-tidy scans to USB logger, tsens and LP peripheral code esphome#17580 by @swoboda1337
- [scheduler] Remove deprecated set_retry/cancel_retry esphome#17585 by @bdraco
- [veml3235] Overhaul auto-gain and fix latent config bugs esphome#17551 by @kbx81
- [esp32_ble] Remove deprecated ESPBTUUID::to_string() esphome#17590 by @bdraco
- [water_heater] Remove deprecated WaterHeaterCall::get_state() esphome#17592 by @bdraco
- [voice_assistant] Remove deprecated Timer::to_string() esphome#17591 by @bdraco
- [api] Remove outdated API version warning esphome#17593 by @bdraco
- [network] Remove deprecated IPAddress::str() esphome#17589 by @bdraco
- [improv_base] Bump Improv library to 1.2.6 esphome#17599 by @kbx81
- [haier][teleinfo][hlk_fm22x][rp2040_ble] Rename enum members that collide with vendor SDK macros esphome#17595 by @swoboda1337
- [libretiny] Code fixes for upcoming LibreTiny clang-tidy scans esphome#17596 by @swoboda1337
- [ci] Restore memory impact detail for ESP-IDF builds esphome#17587 by @bdraco
- [api] Don’t spam tracebacks when decoding a crash without a local build esphome#17597 by @bdraco
- [web_server] Use alarm_control_panel as the domain in JSON esphome#17594 by @bdraco (breaking-change)
- [web_server] Switch entity id to the new format and drop name_id esphome#17586 by @bdraco (breaking-change)
- [mlx90393] Compile out on BK72xx where the bundled library cannot build esphome#17614 by @swoboda1337
- [midea] Restrict to platforms where MideaUART actually builds esphome#17613 by @swoboda1337
- [opentherm] Rename OpenthermData accessors that collide with vendor SDK type macros esphome#17611 by @swoboda1337
- [bluetooth_proxy] Bound GATT characteristic/descriptor enumeration to allocated size esphome#17625 by @swoboda1337
- [esp32_ble_server] Validate descriptor write length before copying esphome#17626 by @swoboda1337
- [runtime_image] Prevent integer overflow in image buffer size calculation esphome#17624 by @swoboda1337
- [nextion] Fix RP2040 clang-tidy failure from TFT upload guard mismatch esphome#17638 by @kbx81
- [ci] Add LibreTiny clang-tidy environments esphome#17491 by @swoboda1337
- [espidf] Prune tool download cache after install to shrink the ESP-IDF cache esphome#17661 by @swoboda1337
- [ds248x] Add OneWireBus platform for DS248x I2C-to-1Wire bridges esphome#12717 by @tomwellnitz (new-component) (new-feature) (new-platform)
- [zigbee] add radio power off stats esphome#17521 by @tomaszduda23
- [nrf52] add platform: ultrasonic test esphome#17665 by @tomaszduda23
- [core] Prevent blocking-warning log time from cascading esphome#17710 by @jeroen85
- [network] Fix IPAddress IPv6 support on HOST platform esphome#17067 by @rwrozelle
- [nrf52] add platformio deprecation warning esphome#17705 by @tomaszduda23
- [core] Reduce memory footprint of esphome upload esphome#17684 by @bdraco
- [ble_device_base] Platform-neutral BLE layer; esp32_ble_tracker implements BLEHub esphome#17150 by @Bl00d-B0b (new-component)
- [ethernet][network][wifi] Add network priority for multi-interface support esphome#14255 by @rwalker777 (new-feature)
- [github] Add developer-facing feature PR classification esphome#17795 by @jesserockz
- [sgp4x] Fix sgp4x VOC baseline restoration esphome#15667 by @stas-sl
- [bk72xx_ble] BLE controller support for BK72xx (BLE 5.x) esphome#17775 by @Bl00d-B0b (new-component) (new-feature)
- [api][climate][water_heater][core] Add temperature unit support to climate and water heater c++ entities esphome#16477 by @jhenkens
- [bk72xx_ble] Scan primitives and main-task scan report queue esphome#17802 by @Bl00d-B0b
- [modbus] Heap-free response path esphome#17377 by @exciton
- [modbus] Rename core enums to EntityType, FunctionCode and ExceptionCode esphome#17844 by @exciton
- [modbus_controller] Qualify modbus::EntityType at use sites esphome#17845 by @exciton
- [gsl3670] Add a model configuration for the Guition JC8012P4A1 esphome#17843 by @mpoettgen (new-feature)
- [mipi_spi] Add ST77916 / ESP-VoCat model esphome#17679 by @rggammon (new-feature)
- [modbus] Frame accessors, PDU-relative lengths, and span-based send_pdu esphome#17846 by @exciton
- [modbus] Turn the ModbusDevice alias into a working compatibility shim esphome#17854 by @exciton
- [modbus] PackedBits and right-sized typed PDU builders esphome#17848 by @exciton
- [esp32] Capture fault address and raw cause in crash handler esphome#17769 by @bdraco
- [opentherm] Fix l/min unit capitalization to L/min esphome#17804 by @ximex
- [ezo_pmp] Fix ml/min and ml unit capitalization esphome#17803 by @ximex
- [espidf] Also skip installing gdb and ULP toolchains ESPHome never runs esphome#17687 by @bdraco
- [modbus] Typed send helpers; migrate in-tree callers off send() esphome#17859 by @exciton
- [ble_device_base] Shared address-type string and discovered-device log esphome#17861 by @Bl00d-B0b
- [dallas_temp][ds2484] Fix one_wire test configs for grouped CI batches esphome#17868 by @swoboda1337
- [ci] Enforce list form for platform domains in test fixtures esphome#17869 by @swoboda1337
- [modbus] Typed client send helpers and response callbacks esphome#17435 by @exciton
- [web_server] Add assumed_state to cover JSON detail esphome#16800 by @Rocco83
- [remote_base] support haier short IR message esphome#17826 by @ssieb (new-feature)
- [espidf] Install only the toolchains for the variants being built esphome#17688 by @bdraco
- [esp8266] Speed up builds with ccache when available esphome#17722 by @bdraco
- [rp2] Speed up builds with ccache when available esphome#17727 by @bdraco
- [libretiny] Speed up builds with ccache when available esphome#17726 by @bdraco
- [logger] flush lines for host logger esphome#17878 by @ssieb
- [nrf52] add OTA for Adafruit_nRF52_Bootloader esphome#17381 by @tomaszduda23
- [safe_mode] Prevent OTA rollback when entering deep sleep esphome#17699 by @jesserockz
- [modbus] Command lifecycle: PDU-carrying callbacks, on_sent(), notified queue clearing esphome#17886 by @exciton
- [modbus] Fold the repeated PDU validation idioms into shared helpers esphome#17888 by @exciton
- [host] Speed up builds with ccache when available esphome#17728 by @bdraco
- [ci] Persist the integration test ccache across runs esphome#17735 by @bdraco
- [bk72xx_ble_tracker] BLE 5.x scanner for BK72xx esphome#17135 by @Bl00d-B0b (new-component) (new-feature)
- [nrf52] Clone the sdk-nrf manifest repository shallow esphome#17892 by @esphbot
- [i2s_audio] Eliminated a double unit conversion in
read_()esphome#17752 by @egormanga - [core] Add optional deprecation warning to cv.rename_key esphome#17740 by @bharvey88
- [core] Move JSON string escaping into helpers esphome#17879 by @jesserockz
- [bluetooth_proxy] Answer UNPAIR with BluetoothDeviceUnpairingResponse esphome#17895 by @Bl00d-B0b
- [ci] Read the GitHub event file as UTF-8 esphome#17896 by @bdraco
- [ci] Attribute device class sync commits to the esphome[bot] account esphome#17898 by @jesserockz
- [ble_device_base] Add mac_lsb_first_to_uint64 address-packing helper esphome#17901 by @Bl00d-B0b
- [const] Move CONF_SCAN_PARAMETERS and CONF_WINDOW to components/const esphome#17900 by @Bl00d-B0b
- [ble_device_base] Replace raw-advertisement std::function with a lightweight callback slot esphome#17902 by @Bl00d-B0b
- [captive_portal] Re-apply json_escape move lost in release merge esphome#17906 by @Bl00d-B0b
- [ci] Bind the branch name to env before sanitising it into a docker tag esphome#17910 by @kobihikri
- [improv_serial] Reduce per-loop overhead esphome#16019 by @bdraco
- [core] Reject configs that set both keys in cv.rename_key esphome#17916 by @bharvey88
- [sgp4x] Rename voc/nox sensor keys to voc_index/nox_index esphome#17723 by @bharvey88 (breaking-change)
- [sen5x] Rename voc/nox sensor keys to voc_index/nox_index esphome#17724 by @bharvey88 (breaking-change)
- [sen6x] Rename voc/nox sensor keys to voc_index/nox_index esphome#17725 by @bharvey88 (breaking-change)
- [core] Expand AGENTS.md AI contributor guidance esphome#17741 by @bharvey88
- [mipi_spi] Add Waveshare ESP32-S3-Touch-LCD-3.5B esphome#17513 by @clydebarrow (new-feature)
- [epaper_spi] Add Inkplate 6COLOR support esphome#17717 by @franFodor (new-feature)
- [opentherm] Restore idle output when stopped esphome#17834 by @jeroen85
- [sgp4x] Fix datasheet conformance issues esphome#17828 by @kbx81
- [lvgl] Add lvgl.theme.update action esphome#17678 by @clydebarrow (new-feature)
- [api] Stop advertising external wake words the device cannot load esphome#17926 by @kahrendt
- [ci] Enable the ruff rule requiring explicit encoding on text file I/O esphome#17897 by @bdraco
- [voice_assistant] Fix playback when CPU is loaded esphome#17043 by @matt123p
- [esp32] Add platformio toolchain deprecation warning esphome#17947 by @swoboda1337
- [esp32][mdns][runtime_image] Bump recommended Arduino to 3.3.11 and platform to 55.03.311 esphome#17875 by @swoboda1337
- [runtime_image] Allow decoding into a caller-owned buffer esphome#17936 by @kahrendt
- [config_validation] Add underscore/hyphen normalization to one_of esphome#17792 by @jesserockz
- [ble_client] Do not walk the GATT cache after releasing services esphome#17919 by @ptr727
- [ci] Switch stale to the shared real-activity workflow esphome#17960 by @swoboda1337
- [core] Log when a git source update is skipped and when it will next refresh esphome#17943 by @bdraco
- [ci] Authenticate the stale workflow as esphome[bot] esphome#17974 by @jesserockz
- [ci] Tell stacked pull requests apart from hand-built chains esphome#17980 by @jesserockz
- [ci] Report an empty Codecov upload when pytest is skipped esphome#17976 by @jesserockz
- [ci] Drop the unused Codecov upload token esphome#17977 by @jesserockz
- [zigbee] Add more units esphome#17982 by @TesseractTimmee
- [ci] Order jobs to follow the CI flow and close ci-status gaps esphome#17979 by @jesserockz
- [openthread_info] Add more sensors for Openthread info esphome#17276 by @Ardumine (new-feature) (new-platform)
- [ln882h_ble] BLE controller support for LN882H esphome#17777 by @Bl00d-B0b (new-component) (new-feature)
- [serial_proxy] Restrict port operations to the subscriber and harden subscription handling esphome#17796 by @kbx81
- [nextion] Reconnect stale HTTP connection during TFT upload esphome#17824 by @kbx81
- [heatpumpir] Expose configured min/max as the visual temperature range esphome#17985 by @swoboda1337
- [modbus] Rework the client queue as a per-frame state machine esphome#17922 by @exciton
- [modbus] Restore function code byte for custom codes in deprecated on_modbus_data esphome#18006 by @exciton
- [nrf52] feat: add support for zephyr pwm esphome#16483 by @wiomoc (new-component) (new-feature) (new-platform)
- [ble_device_base] Share scan parameter validation between trackers esphome#18003 by @bdraco
- [bk72xx_ble_tracker] Fix scan start retry and stale-millis underflow esphome#17992 by @Bl00d-B0b
- [esp32_hosted] Bump esp_hosted to 2.12.12, esp_wifi_remote to 1.6.3 esphome#18030 by @swoboda1337
- [i2s_audio] Implemented I2S PDM Microphone DSR selection esphome#17751 by @egormanga (new-feature)
- [rp2040_ble] Add controller scan primitives esphome#18001 by @bdraco (new-feature)
- [wifi] Notify connect state listeners after driver initiated roams esphome#18034 by @bdraco
- [midea] Add ESP-IDF framework support esphome#12646 by @ShaTie
- [modbus_controller] Span response path; keep sensor addresses as configured esphome#17677 by @exciton (breaking-change)
- [rp2_ble_tracker] BLE tracker for Raspberry Pi Pico W esphome#18002 by @bdraco (new-component) (new-feature)
- [espnow] Stop polling the Wi-Fi driver every loop and disable loop when idle esphome#18027 by @bdraco
- [logger] Stub out ROM ets_putc on ESP8266 when serial logging is disabled esphome#17970 by @bdraco
- [esp8266] Move wifi rate tables to DRAM to fix beacon parse crash esphome#17968 by @bdraco
- [esp32] Flag crash records captured by a different firmware build esphome#17770 by @bdraco
- [api] Move runtime log client out of the component package esphome#18043 by @bdraco
- [core] Hash entity keys from the raw name to fix collisions esphome#17949 by @bdraco
- [substitutions][core] Expand templated !include paths to on-disk candidates during bundle discovery esphome#17647 by @bdraco
- [core] Support local library directories via file:// on the native toolchain esphome#18005 by @swoboda1337
- [rp2_ble_tracker] Add active scanning support esphome#18035 by @bdraco (new-feature)
- [core] Parse stored framework versions without importing the validation stack esphome#18045 by @bdraco
- [ln882h_ble] Scan primitives and main-task scan report queue esphome#17835 by @Bl00d-B0b
- [ci] Replace pre-commit with prek esphome#18029 by @jesserockz
- [bk72xx_ble] Codegen-sized StaticVector for scan listeners esphome#18055 by @Bl00d-B0b
- [modbus_controller] Add bus-fairness integration test (xfail until #11781) esphome#17345 by @exciton
- [ble_device_base] Scan-mode request contract on BLEHub esphome#18061 by @Bl00d-B0b
- [bk72xx_ble_tracker] Brace single-statement loop flagged by clang-tidy esphome#18070 by @Bl00d-B0b
- [libretiny] Give each platform its own CONFIG_SCHEMA instance esphome#18056 by @bdraco
- [core] Ship secrets referenced by remote package files in config bundles esphome#18053 by @bdraco
- [core] Resolve platform CLI hooks from a registry instead of importing the platform package esphome#18044 by @bdraco
- [modbus] Add unit tests for U_WORD_S and S_WORD_S esphome#17831 by @marpi82
- [rp2_ble_tracker] Extract stamp-and-start helper; pin capability/switch independence esphome#18072 by @Bl00d-B0b
- [bthome_mithermometer] Gate log-only MAC helper by log level esphome#18064 by @Bl00d-B0b
- [core] Unbind the esp-idf toolchain from the esp32 component package esphome#18068 by @bdraco
- [core] Share the stacktrace analyzer resolution in platform_hooks esphome#18075 by @bdraco
- [core] Shared slot count factory for codegen sized listener storage esphome#18057 by @bdraco
- [core] Read the esp32 variant for esptool without importing the esp32 package esphome#18067 by @bdraco
- [core] Drop the duplicate ESPHome version parser esphome#18065 by @bdraco
- [core] Read the mqtt IP discovery flag without importing the mqtt component esphome#18066 by @bdraco
- [rp2040_ble] Codegen sized StaticVector for scan listeners esphome#18058 by @bdraco
- [ln882h_ble_tracker] BLE 5.x scanner for LN882H esphome#16691 by @Bl00d-B0b (new-component) (new-feature)
- [esp32_ble] Migrate the BLE count machinery to the shared slot counter factory esphome#18059 by @bdraco
- [ble_device_base] Advertise runtime scan-mode switching in HubCapabilities esphome#18079 by @Bl00d-B0b
- [lvgl] Add lvgl.widget.set_z_index action esphome#17993 by @clydebarrow (new-feature)
- [lvgl] Add pause option to
round_tripanimation timing esphome#17574 by @clydebarrow (new-feature) (breaking-change) - [core] Skip source range tracking when loading the validated config cache esphome#18046 by @bdraco
- [tests] Unignore component-test config fixture directories esphome#18084 by @Bl00d-B0b
- [esp32_rmt_led_strip] Add RGBW channel ordering esphome#18028 by @peterkeen (new-feature)
- [core] Lift the log line processor into esphome/stacktrace.py esphome#18076 by @bdraco
- [zigbee] cleanup, docstrings, refactor connected state on esp32 (1/3) esphome#18007 by @luar123
- [zigbee] Resolution attribute for esp32 sensors esphome#17973 by @TesseractTimmee (new-feature)
- [micro_wake_word] Support adding and removing wake word models at runtime esphome#17927 by @kahrendt (new-feature)
- [ln882h_ble_tracker] Automation triggers and actions esphome#17778 by @Bl00d-B0b (new-feature)
- [bk72xx_ble_tracker] Automation triggers and actions esphome#17776 by @Bl00d-B0b (new-feature)
- [esp32_camera_web_server] Fix MJPEG stream ending on a stale semaphore esphome#18052 by @youkorr
- [modbus_controller] Refactor to simplify message handling esphome#11781 by @exciton (breaking-change)
- [ln882h_ble_tracker] Use the shared ble_device_base automation layer esphome#18089 by @Bl00d-B0b
- [mcp4461] nonvolatile-by-default persistence, TCON boot sync, wiper actions esphome#17561 by @p1ngb4ck
- [modbus_server] Support byte-swapped word types U_WORD_S and S_WORD_S esphome#17829 by @marpi82 (new-feature)
- [ble_device_base] Deprecate address_str in favor of address_str_to esphome#18092 by @bdraco (breaking-change)
- [modbus_server] Add tests for U_WORD_S and S_WORD_S esphome#17832 by @marpi82
- [ota] Multi-key OTA signature verification for external RSA signing esphome#17981 by @kbx81 (new-feature)
- [core] Resolve the stacktrace decoder lazily behind an address gate esphome#18048 by @bdraco
- [bluetooth_proxy] Platform-neutral advertisement proxy via ble_device_base esphome#17880 by @Bl00d-B0b (new-feature)
- Update URL for ESPHome Builder issue reporting esphome#16250 by @jesserockz
- [core] Defer voluptuous and bundle imports out of the upload and logs fast path esphome#18093 by @bdraco
- [core] Trim the stacktrace gate commentary esphome#18097 by @bdraco
- [core] Generalize the resolver’s async thread dispatch into run_async esphome#18088 by @bdraco
- [core] Drop the duplicated FileLock import from a merge collision esphome#18103 by @bdraco
- [bluetooth_proxy] Scanner-state sync in set_mode; platform-gate tests esphome#18100 by @Bl00d-B0b
- [ble_device_base] [ble_client] Restore unset UUID state so notify sensors set up again esphome#18098 by @bdraco
- [ble_device_base] Document the None output for unset UUIDs in to_str() esphome#18108 by @bdraco
- [core] Defer stdlib imports out of the upload and logs fast path esphome#18105 by @bdraco
- [core] Resolve GCC multilib include dirs for clang-tidy esphome#18111 by @bdraco
- [ble_client] Reject descriptor_uuid combined with notify at validation time esphome#18109 by @bdraco
- [rp2] Bump arduino-pico framework to 6.0.0 esphome#18101 by @bdraco
- Bump bundled esphome-device-builder to 1.9.3 esphome#18116 by @esphome[bot]
- [ci] Run CodSpeed benchmarks when top-level esphome Python modules change esphome#18114 by @bdraco
- [ld6002b] Add LD6002B 60GHz presence radar (1/5) esphome#17819 by @hepter (new-component) (new-feature) (new-platform)
- [core] StaticVector converting ctor esphome#18117 by @exciton
- [core] Only snapshot the user config when esphome config —no-defaults asks for it esphome#18113 by @bdraco
- [esp32] Use constants for the signing scheme identifiers esphome#18118 by @kbx81
- [const] Move CONF_TARGET_COUNT to components/const esphome#18120 by @hepter
- [rp2] Limit pin validation to GPIO 0-29 on RP2350A boards esphome#18102 by @bdraco
- [zigbee] Improve network handling on esp32 (2/3) esphome#18008 by @luar123
- [script] Disable queued script polling while the queue is empty esphome#18121 by @bdraco
- [ble_device_base] Hub provider registry and shared consumer helpers esphome#18081 by @Bl00d-B0b (breaking-change)
- [epaper_spi] Do not yield on the final row of a T133A01 transfer phase esphome#17709 by @zerafachris
- [ld6002b] Add target sensors (2/5) esphome#17820 by @hepter (new-feature) (new-platform)
- [modbus_client] Add component for ad-hoc modbus request/response esphome#17676 by @exciton (new-component) (new-feature)
- [zigbee] Add on_start automation (3/3) esphome#18009 by @luar123 (new-feature)
- [ci] Raise runner-concurrency caps for the OHF enterprise pool esphome#18125 by @swoboda1337
- [core] Add EventPool::warm() esphome#18127 by @bdraco
- [midea] Bump MideaUART so its ESP-IDF shims stop shadowing millis() esphome#18119 by @swoboda1337
- [opentherm] Initialize output state before the first write esphome#18126 by @swoboda1337
- [core] Add StringRef::starts_with esphome#18142 by @bdraco
- [ble_device_base] Add platform-neutral GATT client contract esphome#18128 by @bdraco
- [ota] Use PSA crypto for signature verification on ESP-IDF 6 esphome#18145 by @swoboda1337
- [bluetooth_connection] Move BluetoothConnection out of bluetooth_proxy esphome#18129 by @bdraco (new-component)
- [bluetooth_proxy] Fold scanner-state bookkeeping into the sender; extend platform-gate tests esphome#18150 by @Bl00d-B0b
- [bluetooth_proxy] Only advance the scanner-state detector when the frame was sent esphome#18154 by @Bl00d-B0b
- [ld6002b] Add switch, number and text sensor platforms (3/5) esphome#17821 by @hepter (new-feature) (new-platform)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 1: ble_presence, ble_rssi, ble_scanner) esphome#17716 by @Bl00d-B0b (new-feature) (breaking-change)
- [bluetooth_proxy] Make the GATT dispatch platform neutral esphome#18130 by @bdraco
- [rp2040_ble] Add scan arbitration and GATT client hooks esphome#18155 by @bdraco
- [esp32] refactor esp32-vfs default configs to FINAL co-routine & add some defaults esphome#17337 by @p1ngb4ck
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 2: atc_mithermometer, pvvx_mithermometer, bthome_mithermometer) esphome#17950 by @Bl00d-B0b (new-feature) (breaking-change)
- [bluetooth_connection] Add BTstack GATT client backend for rp2 esphome#18131 by @bdraco
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 3: mopeka_ble, mopeka_pro_check, mopeka_std_check) esphome#17951 by @Bl00d-B0b (new-feature) (breaking-change)
- [ld6002b] Add select and button platforms (4/5) esphome#17822 by @hepter (new-feature) (new-platform)
- [bluetooth_proxy] Enable active connections on rp2 esphome#18132 by @bdraco (new-feature)
- [modbus] Add server support for read/write multiple registers (0x17) esphome#17357 by @zweckj (new-feature)
- Bump bundled esphome-device-builder to 1.9.4 esphome#18162 by @esphome[bot]
- [modbus_client] Add typed read/write actions esphome#18078 by @exciton (new-feature)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 4: ruuvi_ble, ruuvitag, b_parasite) esphome#18161 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 5: airthings_ble, inkbird_ibsth1_mini, radon_eye_ble) esphome#18165 by @Bl00d-B0b (new-feature) (breaking-change)
- [modbus_client] Lambda sugar esphome#18146 by @exciton (new-feature)
- [bluetooth_connection] Engine follow-ups from the rp2 GATT series esphome#18159 by @bdraco
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 6: thermopro_ble, exposure_notifications, xiaomi_ble) esphome#18168 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 7: xiaomi_cgd1, xiaomi_cgdk2, xiaomi_cgg1) esphome#18170 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 8: xiaomi_cgpr1, xiaomi_gcls002, xiaomi_hhccjcy01) esphome#18171 by @Bl00d-B0b (new-feature) (breaking-change)
- [usb_cdc_acm] Don’t discard queued TX data when USB flush times out esphome#17637 by @kbx81
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 9: xiaomi_hhccjcy10, xiaomi_hhccpot002, xiaomi_jqjcy01ym) esphome#18172 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 10: xiaomi_lywsd02, xiaomi_lywsd02mmc, xiaomi_lywsd03mmc) esphome#18174 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 11: xiaomi_lywsdcgq, xiaomi_mhoc303, xiaomi_mhoc401) esphome#18178 by @Bl00d-B0b (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 12: xiaomi_miscale, xiaomi_mjyd02yla, xiaomi_mue4094rt) esphome#18180 by @Bl00d-B0b (new-feature) (breaking-change)
- [modbus] Route broadcast writes (address 0) to all server devices esphome#17387 by @zweckj (new-feature) (breaking-change)
- [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 13: xiaomi_rtcgq02lm, xiaomi_wx08zm, xiaomi_xmwsdj04mmc) esphome#18183 by @Bl00d-B0b (new-feature) (breaking-change)
- [modbus] Make sure we log on no accepting device esphome#18187 by @zweckj
- [bluetooth_proxy] Deliver esp32 advertisements through the hub callback esphome#18173 by @bdraco
- [bluetooth_connection] Explicit pairing for rp2 esphome#18166 by @bdraco
- [ble_device_base] Bind the GATT backend at compile time esphome#18185 by @bdraco
- [bluetooth_proxy] Deliver scanner state through the hub callback esphome#18175 by @bdraco
- [esp32_ble_tracker] Retire the raw listener path and parser-type enum esphome#18177 by @bdraco
- [tuya] GMT time 0x0C command handler esphome#17158 by @jptrsn
- [esp32_ble_tracker] Retire the scanner-state listener interface esphome#18179 by @bdraco
- [ble_device_base] Bind BLEHub to the build’s tracker at compile time esphome#18181 by @bdraco
- [modbus] Rename send_pdu() to queue_pdu() esphome#18196 by @exciton
- [ci] Name release runs after the version or dev tag they build esphome#18110 by @jesserockz
- Bump bundled esphome-device-builder to 1.9.5 esphome#18223 by @esphome[bot]
- [core] Store the validated-config cache as JSON to drop YAML off the upload fast path esphome#18106 by @bdraco
- [core] Use Happy Eyeballs for remote file downloads esphome#18050 by @bdraco
- [ld6002b] Add area and zone configuration (5/5) esphome#17823 by @hepter (new-feature)
- [sendspin] Bump sendspin-cpp to v0.7.1 esphome#18232 by @kahrendt
- [core] Skip colorama init for terminal and dashboard runs esphome#18224 by @bdraco
- Normalize marker-wrapped callable keys in the schema dump esphome#18218 by @bdraco
- [ble_device_base] Merge adv and scan response before delivery on rp2 esphome#18217 by @bdraco
- [bluetooth_proxy] Migrate esp32 onto the neutral GATT backend esphome#18198 by @bdraco
- [core] Enforce the preferences contracts with concepts esphome#18191 by @bdraco
- [ota] Enforce the backend contract with a concept esphome#18192 by @bdraco
- [ufm01] Improve startup with reset retry and passive polling fallback esphome#17567 by @ljungqvist
- [core] Extend ’/’ in names deprecation window to 2027.7.0 esphome#18236 by @bdraco
- [ethernet] Add CH390 SPI ethernet support esphome#18226 by @ptr727 (new-feature)
- [wifi] Save fast connect settings and reset roaming bookkeeping after driver initiated roams esphome#18167 by @bdraco
- [bluetooth_proxy] Pair the advertisement flush time with hub_ to close alignment holes esphome#18234 by @bdraco
- [bluetooth_proxy] Finish the connection scan before reserving a slot esphome#18239 by @bdraco
- [core] Document enum class value naming to avoid platform SDK macro collisions esphome#18241 by @bdraco
- [ble_device_base] Treat a partially bound merger as unbound esphome#18235 by @bdraco
- [ufm01] Prefix PassiveReadResult enumerators to avoid Realtek SDK macro collision esphome#18240 by @bdraco
- [mitsubishi_cn105] Extract top-level hub esphome#16987 by @crnjan (new-feature)
- [bk72xx_ble] Support active scanning by packing the GAPM start command esphome#18169 by @bdraco (new-feature)
- [modbus] Add API for reading/writing coils and discrete inputs in server mode esphome#17264 by @exciton
- [web_server] Fix basic auth with long credentials esphome#18237 by @bdraco
- [modbus_client] Add read/write multiple registers (FC 0x17) esphome#18215 by @exciton (new-feature) (breaking-change)
- [hoermann_hcp] Add Hörmann HCP garage door component esphome#17355 by @zweckj (new-component) (new-feature) (new-platform)
- [mitsubishi_cn105] Add vertical vane direction select esphome#16723 by @crnjan (new-feature) (new-platform)
- [modbus_server] Add coil/discrete-input support esphome#17464 by @exciton (new-feature)
- [mitsubishi_cn105] Refactor property encoding/decoding esphome#16709 by @crnjan
- Bump aioesphomeapi to 45.8.0 esphome#18251 by @bdraco
- [ld24xx] Use MAC address size constants instead of literals esphome#18253 by @jesserockz
- [bluetooth_proxy] Retry dropped services-done, disconnect and scanner-state notifications esphome#18225 by @bdraco
- [core] Use MAC address size constants in BLE components esphome#18252 by @jesserockz
- [api] Add DeviceCapabilities message for optional-feature flags esphome#17984 by @jesserockz
- [rp2] Fix %f formatting in logs esphome#18256 by @bdraco
- [tests] Fix flaky modbus server/controller integration tests esphome#18258 by @bdraco
- [debug] Remove Arduino core dependency from RP2 platform code esphome#18267 by @jesserockz
- [adc] Fix RP2350B internal temperature reading wrong ADC channel esphome#18270 by @jesserockz
- [rp2] Use SDK clock query directly in arch_get_cpu_freq_hz esphome#18269 by @jesserockz
- [core] Use MAC address size constants instead of literals esphome#18254 by @jesserockz
- [hoermann_hcp] Add connectivity binary sensor esphome#18189 by @zweckj (new-feature) (new-platform)
- [core] Flush stdout in safe_print so logs stream live esphome#18261 by @bdraco
- [espidf] Flush the runner’s output so dashboard builds stream esphome#18264 by @bdraco
- [modbus] Properly support client-mode broadcast sends esphome#17467 by @exciton
- [core] Retry transient git network failures with backoff esphome#18242 by @bdraco
- [rp2040_ble][bluetooth_connection] 3 connection slots on rp2 with esp32 parity esphome#18247 by @bdraco (new-feature)
- [core] Show the last line when output stops without a newline esphome#18265 by @bdraco
- Bump aioesphomeapi from 45.8.0 to 45.9.0 esphome#18283 by @esphome[bot]
- [core] Stop dropping complete lines behind an unfinished one esphome#18279 by @bdraco
- [mitsubishi_cn105] Add vertical vane state trigger esphome#16727 by @crnjan (new-feature)
- [core] Show the out-of-flash tip instead of crashing the build esphome#18280 by @bdraco
- Bump aioesphomeapi from 45.9.0 to 45.10.0 esphome#18294 by @esphome[bot]
- [audio] Bump microDecoder to v0.4.0 esphome#18291 by @kahrendt
- [sendspin] Add image platform for artwork esphome#17937 by @kahrendt (new-feature) (new-platform)
- [sendspin] Clear metadata and controller state on disconnect esphome#18289 by @kahrendt
- [tests] Build tests from the tree they run in, not the venv’s editable install esphome#18248 by @exciton
- [mitsubishi_cn105] Add vertical vane control action esphome#16737 by @crnjan (new-feature)
- [bluetooth_proxy] Retry dropped GATT acks and stop the retry log spam esphome#18259 by @bdraco
- [bluetooth_proxy] Latch the unpair reply esphome#18274 by @bdraco
- [bluetooth_proxy] Reset every owed reply in one place esphome#18276 by @bdraco
- [core] Warn when running a different source tree than the one you are in esphome#18288 by @swoboda1337
- [bluetooth_proxy] Latch the connection replies and tighten the send paths esphome#18278 by @bdraco
- [rp2] Record the RP2350 die on generated board entries esphome#18305 by @jesserockz
- [adc] Fix internal temperature channel on RP2350A under arduino-pico esphome#18307 by @jesserockz
- [adc] Deprecate pin: TEMPERATURE in favour of internal_temperature esphome#18304 by @jesserockz
- [api] Gate the bluetooth connection messages on their own define esphome#18281 by @bdraco
- [api] Mark send_message nodiscard so refused frames are never silent esphome#18293 by @bdraco
- [voice_assistant] Do not consume the audio chunk when the send is refused esphome#18295 by @bdraco
- [bluetooth_proxy] Move per-advertisement logging to very verbose esphome#18299 by @bdraco
- [bluetooth_connection] Demote rp2 backend connection logs to verbose esphome#18301 by @bdraco
- [esp32_ble_tracker] Demote scan-state echoes to verbose esphome#18302 by @bdraco
- [bluetooth_proxy] Give partial advertisement batches 200ms to fill on Wi-Fi esphome#18303 by @bdraco
- [esp32_ble_tracker] Don’t log an error when a scan stop is already in flight esphome#18306 by @bdraco
- [api] Move the generic buffer-full log to very verbose esphome#18300 by @bdraco
- [ethernet][network][wifi] Arbitrate the default route from the network priority list esphome#17797 by @kbx81 (new-feature)
- [rp2] Size the lwIP segment pool and heap for concurrent senders esphome#18257 by @bdraco
- [hoermann_hcp] Add garage light control esphome#18190 by @zweckj (new-feature) (new-platform)
- [core] Batch remote file downloads during config validation esphome#18069 by @bdraco
- [internal_temperature] Read the RP2 on-die sensor directly instead of via the Arduino API esphome#18262 by @jesserockz
- [core] Add esphome logs over web_server HTTP SSE esphome#17110 by @bdraco (new-feature)
- Bump CodSpeedHQ/action from 4.18.4 to 4.18.5 esphome#17489 by @dependabot[bot]
- Bump ruff from 0.15.20 to 0.15.21 esphome#17508 by @dependabot[bot]
- Bump actions/stale from 10.3.0 to 10.4.0 esphome#17509 by @dependabot[bot]
- Update tzdata requirement from >=2026.2 to >=2026.3 esphome#17510 by @dependabot[bot]
- Bump clang-tidy from 22.1.7 to 22.1.8 esphome#17565 by @dependabot[bot]
- Bump github/codeql-action/analyze from 4.37.0 to 4.37.1 esphome#17630 by @dependabot[bot]
- Bump github/codeql-action/init from 4.37.0 to 4.37.1 esphome#17629 by @dependabot[bot]
- Bump ruff from 0.15.21 to 0.15.22 esphome#17628 by @dependabot[bot]
- Bump esphome/workflows/.github/workflows/lock.yml from 2026.4.1 to 2026.7.0 esphome#17652 by @dependabot[bot]
- Bump astral-sh/setup-uv from 8.3.2 to 9.0.0 in /.github/actions/restore-python esphome#17757 by @dependabot[bot]
- Bump astral-sh/setup-uv from 8.3.2 to 9.0.0 esphome#17760 by @dependabot[bot]
- Bump github/codeql-action/init from 4.37.1 to 4.37.2 esphome#17758 by @dependabot[bot]
- Bump actions/setup-python from 6.3.0 to 7.0.0 esphome#17731 by @dependabot[bot]
- Bump github/codeql-action/analyze from 4.37.1 to 4.37.2 esphome#17761 by @dependabot[bot]
- Bump actions/checkout from 7.0.0 to 7.0.1 esphome#17733 by @dependabot[bot]
- Bump pypa/gh-action-pypi-publish from 1.14.0 to 1.14.1 esphome#17734 by @dependabot[bot]
- Bump github/codeql-action/analyze from 4.37.2 to 4.37.3 esphome#17786 by @dependabot[bot]
- Bump github/codeql-action/init from 4.37.2 to 4.37.3 esphome#17785 by @dependabot[bot]
- Bump docker/login-action from 4.4.0 to 4.5.1 in the docker-actions group across 1 directory esphome#17817 by @dependabot[bot]
- Bump actions/setup-python from 6.3.0 to 7.0.0 in /.github/actions/restore-python esphome#17732 by @dependabot[bot]
- Bump ruff from 0.15.22 to 0.16.0 esphome#17818 by @dependabot[bot]
- Bump CodSpeedHQ/action from 4.18.5 to 4.19.1 esphome#17890 by @dependabot[bot]
- Bump actions/stale from 10.4.0 to 11.0.0 esphome#17913 by @dependabot[bot]
- Bump docker/login-action from 4.5.1 to 4.5.2 in the docker-actions group esphome#17912 by @dependabot[bot]
- Bump pypa/gh-action-pypi-publish from 1.14.1 to 1.14.2 esphome#17945 by @dependabot[bot]
- Bump CodSpeedHQ/action from 4.19.1 to 5.0.1 esphome#17946 by @dependabot[bot]
- Bump docker/login-action from 4.5.2 to 4.6.0 in the docker-actions group esphome#17944 by @dependabot[bot]
- Bump filelock from 3.32.0 to 3.32.2 esphome#18039 by @dependabot[bot]
- Bump cryptography from 48.0.1 to 50.0.0 esphome#18037 by @dependabot[bot]
- Bump github/codeql-action/init from 4.37.3 to 4.37.4 esphome#18040 by @dependabot[bot]
- Bump ruff from 0.16.0 to 0.16.1 esphome#18038 by @dependabot[bot]
- Bump github/codeql-action/analyze from 4.37.3 to 4.37.4 esphome#18041 by @dependabot[bot]
- Bump esphome/workflows/.github/workflows/stale.yml from 203cea60ebfd18e2b966e57750750e0417a9feec to 61fd37a044cad4e9aa4303027b2a61b6a34da855 esphome#18095 by @dependabot[bot]
- Bump CodSpeedHQ/action from 5.0.1 to 5.0.2 esphome#18094 by @dependabot[bot]
- Bump github/codeql-action/init from 4.37.4 to 4.37.5 esphome#18140 by @dependabot[bot]
- Bump github/codeql-action/analyze from 4.37.4 to 4.37.5 esphome#18139 by @dependabot[bot]
- Bump prek from 0.4.11 to 0.4.12 esphome#18138 by @dependabot[bot]
- Bump resvg-py from 0.3.3 to 0.3.4 esphome#18137 by @dependabot[bot]
- Bump github/codeql-action/analyze from 4.37.5 to 4.37.6 esphome#18163 by @dependabot[bot]
- Bump github/codeql-action/init from 4.37.5 to 4.37.6 esphome#18164 by @dependabot[bot]
- Bump aiohappyeyeballs from 2.6.2 to 2.7.1 esphome#18244 by @dependabot[bot]
- Bump CodSpeedHQ/action from 5.0.2 to 5.0.3 esphome#18246 by @dependabot[bot]
- Bump ruff from 0.16.1 to 0.16.2 esphome#18245 by @dependabot[bot]
- Update argcomplete requirement from >=3.7.0 to >=3.7.2 esphome#18243 by @dependabot[bot]
- Bump platformdirs from 4.11.0 to 4.11.1 esphome#18250 by @dependabot[bot]
- Bump setuptools from 83.0.0 to 84.0.0 esphome#18290 by @dependabot[bot]


