2025.7.0b1
Pre-release
Pre-release
- [core/pins] improve pins types esphome#8848 by @ximex
- [binary_sensor] Add action to invalidate state and pass to HA esphome#8961 by @clydebarrow (breaking-change)
- Bump pytest-cov from 6.1.1 to 6.2.1 esphome#9063 by @dependabot[bot]
- ina219: powerdown the sensor on shutdown esphome#9053 by @youknow0
- Bump pytest-asyncio from 0.26.0 to 1.0.0 esphome#9067 by @dependabot[bot]
- Build with C++17 esphome#8603 by @HeMan
- Move some consts to
const.pyesphome#9084 by @kbx81 - Reduce Component memory usage by 20 bytes per component esphome#9080 by @bdraco
- [ruff] Apply various ruff suggestions esphome#8947 by @jesserockz
- Bump LibreTiny recommended version to 1.9.1 esphome#9110 by @swoboda1337
- Bump docker/setup-buildx-action from 3.10.0 to 3.11.0 in the docker-actions group esphome#9105 by @dependabot[bot]
- [esp32_hall] Remove esp32_hall esphome#9117 by @swoboda1337 (breaking-change)
- Resolve esphome::optional vs std::optional ambiguity in code generation esphome#9119 by @bdraco
- Add intent progress event to voice assistant enum esphome#9103 by @synesthesiam
- Pin libretiny to 1.9.1 esphome#9118 by @swoboda1337
- Bump ruff from 0.11.13 to 0.12.0 esphome#9120 by @dependabot[bot]
- Bump ruff in pre-commit to 0.12.0 esphome#9121 by @bdraco
- [heatpumpir] Bump HeatpumpIR to 1.0.35 esphome#9123 by @swoboda1337
- [i2s_audio] Bump esphome/ESP32-audioI2S to 2.3.0 esphome#9124 by @swoboda1337
- Reduce CPU overhead by allowing components to disable their loop() esphome#9089 by @bdraco
- Add support for Xiaomi XMWSDJ04MMC esphome#8591 by @medusalix (new-integration)
- [web_server] Upgrade ESPAsync libraries esphome#8867 by @kuba2k2 (breaking-change)
- Bump docker/setup-buildx-action from 3.11.0 to 3.11.1 in the docker-actions group esphome#9133 by @dependabot[bot]
- Bump aioesphomeapi from 32.2.3 to 32.2.4 esphome#9132 by @dependabot[bot]
- Bump pytest from 8.4.0 to 8.4.1 esphome#9131 by @dependabot[bot]
- Bump ESP32 Arduino version to 3.1.3 esphome#8604 by @swoboda1337 (breaking-change)
- Remove empty generated protobuf methods esphome#9098 by @bdraco
- Reduce code duplication in auto-generated API protocol code esphome#9097 by @bdraco
- Use smaller atomic types for ESP32 BLE Tracker ring buffer indices esphome#9106 by @bdraco
- Optimize API server performance by using cached loop time esphome#9104 by @bdraco
- Optimize API component memory usage by reordering class members to reduce padding esphome#9111 by @bdraco
- Optimize bluetooth_proxy memory usage on ESP32 esphome#9114 by @bdraco
- Add enable_loop_soon_any_context() for thread and ISR-safe loop enabling esphome#9127 by @bdraco
- Optimize OTA loop to avoid unnecessary stack allocations esphome#9129 by @bdraco
- [i2c] Expose internal i2c bus port number esphome#9136 by @jesserockz
- Disable Ethernet loop polling when connected and stable esphome#9102 by @bdraco
- Clean up RAMAllocators in audio related code esphome#9140 by @jesserockz
- Clean up RAMAllocators in http_request code esphome#9143 by @jesserockz
- Clean up RAMAllocators in display related code esphome#9141 by @jesserockz
- [i2c] Make
get_port()public esphome#9146 by @jesserockz - [esp32_camera] Allow sharing i2c bus esphome#9137 by @jesserockz
- [nextion] Add command queuing to prevent command loss when spacing is active esphome#9139 by @edwardtfn
- [nextion] Cached timing optimization esphome#9150 by @edwardtfn
- [wifi, wifi_info] Tidy up/shorten more log messages esphome#9151 by @kbx81
- [bh1750] Remove redundant platform name from logging esphome#9153 by @kbx81
- Add option to enable support for USB Hubs esphome#9154 by @RoganDawes
- [spi] Enable >6 devices with ESP-IDF esphome#9128 by @clydebarrow
- Clean up RAMAllocators in light related code esphome#9142 by @jesserockz
- [nextion] Extract common
upload_end_function to shared file esphome#9155 by @edwardtfn - Bump esptool from 4.8.1 to 4.9.0 esphome#9158 by @dependabot[bot]
- Improve on C++17 esphome#9170 by @HeMan
- Bump aioesphomeapi from 32.2.4 to 33.1.0 esphome#9173 by @dependabot[bot]
- Bump flake8 from 7.2.0 to 7.3.0 esphome#9172 by @dependabot[bot]
- [nextion] Revert to
millis()onrecv_ret_string_esphome#9168 by @edwardtfn - [const] Move
CONF_DEVICEStoconst.pyesphome#9179 by @jesserockz - Reduce Logger memory usage by optimizing variable sizes esphome#9161 by @bdraco
- Fix slow noise handshake by reading multiple messages per loop esphome#9130 by @bdraco
- Reduce RAM usage for scheduled tasks esphome#9180 by @bdraco
- Pre-reserve looping components vector to reduce memory allocations esphome#9177 by @bdraco
- [lvgl] Add start_value to bar; make values templatable and updateable esphome#9056 by @clydebarrow
- [lvgl] Use styles instead of object properties for themes esphome#9116 by @clydebarrow
- Feature fontmetrics esphome#8978 by @JonasB2497
- Image should not update when setting URL esphome#8885 by @gpambrozio
- Bump aioesphomeapi from 33.1.0 to 33.1.1 esphome#9187 by @dependabot[bot]
- [opt3001] New component esphome#6625 by @ccutrer (new-integration)
- [mqtt] Don't wait for connection unless configured to esphome#8933 by @jesserockz (breaking-change)
- [modbus_controller] Fix modbus read_lambda precision for non-floats or large integers esphome#9159 by @jpeletier
- [helpers] Add
format_mac_address_prettyfunction, migrate components esphome#9193 by @kbx81 - [ld2450] Use
App.get_loop_component_start_time(), shorten log messages esphome#9192 by @kbx81 - [ld2420] Shorten log messages + other clean-up esphome#9200 by @kbx81
- [ld2410] Use
App.get_loop_component_start_time(), shorten log messages esphome#9194 by @kbx81 - [esp32_hall] Add dummy component esphome#9125 by @swoboda1337
- fix(MQTT): Call disconnect callback on DNS error esphome#9016 by @Rapsssito
- Rename kVARh/VARh to kvarh/varh esphome#9191 by @Drafteed
- [API] Sub devices and areas esphome#8544 by @dala318 (breaking-change)
- [binary_sensor] Add timeout filter esphome#9198 by @clydebarrow
- [lvgl] Allow linear positioning of grid cells esphome#9196 by @clydebarrow
- Reduce memory required for sensor entities esphome#9201 by @bdraco (breaking-change)
- Reduce logger CPU usage by disabling loop when buffer is empty esphome#9160 by @bdraco
- Optimize API connection loop performance esphome#9184 by @bdraco
- Optimize TemplatableValue memory esphome#9202 by @bdraco (breaking-change)
- Optimize API connection memory with tagged pointers esphome#9203 by @bdraco
- Fix missing protobuf message dump for batched messages with very verbose logging esphome#9206 by @bdraco
- Optimize Application class memory layout and reduce loop_interval size esphome#9208 by @bdraco (breaking-change)
- Use shared workflow for locking esphome#9211 by @jesserockz
- [esp32] Improve and simplify IDF component support esphome#9163 by @swoboda1337
- [ld2450] More optimizing, fix copypasta esphome#9210 by @kbx81
- [ci] Lint lock.yml esphome#9214 by @jesserockz
- [script] Add exec bit to run-in-env esphome#9212 by @jesserockz
- [ld2410] More optimizations esphome#9209 by @kbx81
- [ld2450] Move consts to cpp file, optimize memory use esphome#9215 by @kbx81
- [tests] Remove extra newline esphome#9213 by @jesserockz
- Optimize SafeModeComponent memory layout to reduce padding esphome#9228 by @bdraco
- [esp32_hosted] Add support for remote wifi esphome#8833 by @swoboda1337 (new-integration)
- use c++17
[[fallthrough]];esphome#9149 by @ximex - [esp32] Update IDF components to use the registry esphome#9223 by @swoboda1337
- [wifi] Reduce memory usage esphome#9232 by @bdraco
- [ethernet] Reduce memory usage by 8 bytes esphome#9231 by @bdraco
- [gpio] Reduce ESP32 memory usage by optimizing struct padding esphome#9230 by @bdraco
- Reduce component_iterator memory usage esphome#9205 by @bdraco
- Upgrade to use C++20 esphome#9135 by @HeMan
- [mcp23xxx_base] fix pin interrupts esphome#9244 by @ssieb
- [i2c] Disable i2c scan on certain idf versions esphome#9237 by @swoboda1337
- Reduce libretiny logconfig messages esphome#9239 by @bdraco
- Disable dynamic log level control for ESP32 ESP-IDF builds esphome#9233 by @bdraco
- Silence protobuf compatibility warnings when importing aioesphomeapi esphome#9236 by @bdraco
- [esp32] Allow 5.4.2 esphome#9243 by @swoboda1337
- Bump ruff from 0.12.0 to 0.12.1 esphome#9241 by @dependabot[bot]
- Remove backports of
stdesphome#9246 by @HeMan - Fix buffer corruption in API message encoding with very verbose logging esphome#9249 by @bdraco
- Extract lock-free queue and event pool to core helpers esphome#9238 by @bdraco
- Replace ping retry timer with batch queue fallback esphome#9207 by @bdraco
- [thermostat] Memory optimizations esphome#9259 by @kbx81
- [adc] Memory optimizations esphome#9247 by @kbx81
- [light] Memory optimizations esphome#9260 by @kbx81
- Reduce web_server code duplication by extracting detail parameter parsing esphome#9257 by @bdraco
- Remove redundant get_setup_priority() overrides returning default value esphome#9253 by @bdraco
- Bump aioesphomeapi from 33.1.1 to 34.0.0 esphome#9265 by @dependabot[bot]
- Fix MQTT blocking main loop for multiple seconds at a time esphome#8325 by @dwmw2
- Remove single-use send_*_info wrappers in API connection esphome#9255 by @bdraco
- Reduce API memory footprint through bitfield consolidation and type sizing esphome#9252 by @bdraco
- Reduce flash usage by making add_message_object non-template esphome#9258 by @bdraco
- Remove unused return value from read_message and fix ifdef placement in generated API code esphome#9256 by @bdraco
- Reduce web_server RAM usage by 96 bytes with conditional sorting compilation esphome#9227 by @bdraco
- Add interrupt support to GPIO binary sensors esphome#9115 by @bdraco
- [pi4ioe5v6408] Add new IO Expander esphome#8888 by @jesserockz (new-integration)
- Reduce loop enable/disable log spam by using very verbose level esphome#9267 by @bdraco
- Fix thread-safe cleanup of event source connections in ESP-IDF web server esphome#9268 by @bdraco
- Reduce API component memory usage with conditional compilation esphome#9262 by @bdraco
- Optimize scheduler string storage to eliminate heap allocations esphome#9251 by @bdraco
- Optimize web_server UrlMatch to avoid heap allocations esphome#9263 by @bdraco
- Add support for LN882X Family (with LibreTiny) esphome#8954 by @lamauny (new-integration) (notable-change)
- Support DM9051 SPI ethernet device esphome#6861 by @bmork
- [light] Fix transitions with
lerpesphome#9269 by @kbx81 - [remote_base] Fix dumper base class and enable schema extension esphome#9218 by @gabest11
- [ld2420] Move consts to cpp file, optimize memory use esphome#9216 by @kbx81
- Update libsodium to 1.0.20 esphome#9240 by @bdraco
- Fixes for async MQTT esphome#9273 by @dwmw2
- Fix flaky test_api_conditional_memory by waiting for all required states esphome#9271 by @bdraco
- [pins] Update
internal_gpio_pin_numberto work directly likeinternal_gpio_output_pin_numberesphome#9270 by @jesserockz (breaking-change) - [http_request.update] Fix
size_tprinting esphome#9144 by @jesserockz - [smt100] Rename
dielectric_constanttopermittivityesphome#9175 by @piechade (breaking-change) - [ethernet] P4 changes and 5.3.0 deprecated warnings esphome#8457 by @swoboda1337
- Fix - Pass thread TLVs down to openthread if they are defined esphome#9182 by @mrene
- Fix entity hash collisions by enforcing unique names across devices per platform esphome#9276 by @bdraco (breaking-change)
- [host] Disable platformio ldf esphome#9277 by @jesserockz
- Jinja expressions in configs (Take #3) esphome#8955 by @jpeletier (notable-change)
- Use interrupt based approach for esp32_touch esphome#9059 by @bdraco
- Add OTA support to ESP-IDF webserver esphome#9264 by @bdraco
- [modbus] Modbus server role: write holding registers esphome#9156 by @jpeletier
- [esp32] Remove IDF 4 support and clean up code esphome#9145 by @swoboda1337 (breaking-change)
- Fix regression: BK7231N devices not returning entities via API esphome#9283 by @bdraco
- [esp32_rmt_led_strip] Reduce memory usage by 32x with IDF 5.3 esphome#8388 by @swoboda1337
- [api] Dump bytes fields as hex instead of unreadable string esphome#9288 by @jesserockz
- Reduce Component memory usage by 40% (8 bytes per component) esphome#9278 by @bdraco
- Replace custom OTA implementation in web_server_base esphome#9274 by @bdraco (new-integration) (breaking-change)
- pulse_meter total esphome#9282 by @prchal
- Mmc5603 fix for devices that don't retrieve chip_id esphome#8959 by @jsb2092
- made qr_code elements optional esphome#8896 by @JonasB2497
- [nextion] memory optimization esphome#9164 by @edwardtfn
- Use encode_bytes() for protobuf bytes fields esphome#9289 by @bdraco
- [core] Deleting CMakeCache.txt for fast recompilation with ESP-IDF esphome#8750 by @zkoalexey
- [heatpumpir] Add Support for PHS32 HeatPump esphome#7378 by @mrtntome
- OpenThread - add Device Type esphome#9272 by @rwrozelle
- Don't compile
state_to_string()unless debugging. esphome#7473 by @colmbuckley - [time] Add
USE_TIME_TIMEZONEdefine esphome#9290 by @jesserockz - [time] fix clang-tidy esphome#9292 by @tomaszduda23
- [esp32_touch] Fix threshold esphome#9291 by @clydebarrow
- [ds2484] New component esphome#9147 by @mrk-its (new-integration)
- Fix missing ifdef guards in API protobuf generator esphome#9296 by @bdraco
- Save flash and RAM by conditionally compiling unused API password code esphome#9297 by @bdraco
- [Packet transport] Ping timeout sensor esphome#8694 by @dala318
- Allow disabling API batch delay for real-time state updates esphome#9298 by @bdraco
- Packages: optional base path for remote git packages esphome#9279 by @dudanov
- Bump aioesphomeapi from 34.0.0 to 34.1.0 esphome#9301 by @dependabot[bot]
- [sx127x] Add sx127x component esphome#7490 by @swoboda1337 (new-integration)
- [microphone] simplify mute handling to avoid unnecessary copies esphome#9303 by @kahrendt
- Bump ruff from 0.12.1 to 0.12.2 esphome#9311 by @dependabot[bot]
- Add device_id to entity state messages for sub-device support esphome#9304 by @bdraco
- Fix web_server URL parsing lifetime issue esphome#9309 by @bdraco
- Reduce web_server loop overhead on ESP32 by avoiding unnecessary semaphore operations esphome#9308 by @bdraco
- Fix compiler warning in tsl2591 component esphome#9310 by @mikelawrence
- Fix web_server busy loop with ungracefully disconnected clients esphome#9312 by @bdraco
- Bump puremagic from 1.29 to 1.30 esphome#9320 by @dependabot[bot]
- Add const char overload for Component::defer() esphome#9324 by @bdraco
- [rtttl] trim extraneous whitespace in "ac_dimmer" in "PWM_BAD" list esphome#9318 by @ximex
- Mark ESPTime comparison operators as const esphome#9335 by @freundTech
- [ld2450] Reduce CPU usage, eliminate redundant sensor updates esphome#9334 by @bdraco
- [nextion] Memory optimization esphome#9338 by @edwardtfn
- Reduce RAM usage by optimizing Color constant storage esphome#9339 by @bdraco (breaking-change)
- Eliminate API component guard variable to save 8 bytes RAM esphome#9341 by @bdraco
- Eliminate web_server_idf guard variable to save 8 bytes RAM esphome#9344 by @bdraco
- [scd4x] Optimize logging + minor code clean-up esphome#9347 by @kbx81
- [ld2410] Reduce RAM usage, general clean-up esphome#9346 by @kbx81
- [sx127x] Improve error handling esphome#9351 by @swoboda1337
- Fix defer() thread safety issues on multi-core platforms esphome#9317 by @bdraco
- [update, http_request_update] Implement update available trigger esphome#9174 by @jhbruhn
- Split LockFreeQueue into base and notifying variants to reduce memory usage esphome#9330 by @bdraco
- Fix bluetooth proxy busy loop when disconnecting pending BLE connections esphome#9332 by @bdraco
- Use std::span to eliminate heap allocation for single-packet API transmissions esphome#9313 by @bdraco
- [sx127x] Fix shaping print in dump_config and preallocate packet esphome#9357 by @swoboda1337
- Introduce base Camera class to support alternative camera implementations esphome#9285 by @DT-art1 (new-integration)
- [scd4x] Memory optimization esphome#9358 by @kbx81
- [nextion] Replace boolean flags with bitfields to optimize memory usage esphome#9359 by @edwardtfn
- [inkplate6] Require 240mhz cpu frequency esphome#9356 by @jesserockz
- [sx126x] Add sx126x component esphome#8516 by @swoboda1337 (new-integration)
- [nextion] Optimize settings memory usage with compile-time defines esphome#9350 by @edwardtfn
- [ld2450] Clean-up for consistency, reduce CPU usage when idle esphome#9363 by @kbx81
- [nextion] Review
touch_sleep_timeoutesphome#9345 by @edwardtfn - [core] Move platform helper implementations into their own file esphome#9361 by @jesserockz
- [nextion] Add optional device info storage configuration esphome#9366 by @edwardtfn
- Optimize Bluetooth proxy batching and increase scan buffer capacity esphome#9328 by @bdraco
- Fix scheduler race conditions and add comprehensive test suite esphome#9348 by @bdraco
- Reduce LightCall memory usage by 50 bytes per call esphome#9333 by @bdraco
- Optimize entity icon memory usage with USE_ENTITY_ICON flag esphome#9337 by @bdraco
- Reduce core RAM usage by 40 bytes with static initialization optimizations esphome#9340 by @bdraco
- Fix flaky test_api_conditional_memory by disabling API batch delay esphome#9360 by @bdraco
- Fix format specifier warnings in QuantileFilter logging esphome#9364 by @bdraco
- Optimize logger performance by eliminating redundant strlen calls esphome#9369 by @bdraco
- Replace deprecated sprintf with snprintf in API protobuf code generation esphome#9365 by @bdraco
- Refactor duplicate socket read error handling in API frame helper esphome#9370 by @bdraco
- Refactor entity lookup methods with macros in preparation for device_id support esphome#9371 by @bdraco
- Refactor API entity update dispatch to reduce code duplication esphome#9372 by @bdraco
- Don't compile unnecessary platform files (e.g. ESP8266 files on ESP32) esphome#9354 by @bdraco
- Refactor voice assistant API methods to reduce code duplication esphome#9374 by @bdraco
- Eliminate bluetooth_proxy guard variable to save 8 bytes RAM esphome#9343 by @bdraco
- [nextion] Optimize component memory usage with bitfield state management esphome#9373 by @edwardtfn
- Fix brightness setting not working on SSD1305 128x32 OLEDs esphome#9376 by @DooMMasteR
- Optimize logger callback API by including message length parameter esphome#9368 by @bdraco (breaking-change)
- Run integration tests only on Python 3.13 to reduce CI resource usage esphome#9377 by @bdraco
- Fix flaky test_api_conditional_memory and improve integration test patterns esphome#9379 by @bdraco
- [helpers] Improve
format_hex_prettyesphome#9380 by @jesserockz - hydreon_rgxx: remove precipitation_intensity from RG9 esphome#9367 by @functionpointer
- [image] Add byte order option and unit tests esphome#9326 by @clydebarrow
- Fix integration test race condition by isolating PlatformIO directories esphome#9383 by @bdraco
- Fix format string error in waveshare_epaper.cpp esphome#9322 by @tmpeh
- Fix race condition in scheduler string lifetime integration test esphome#9382 by @bdraco
- lps22: add a component esphome#7540 by @nagisa (new-integration)
- [nfc] Update code to use
format_hex_prettyesphome#9384 by @jesserockz - [helpers] Fix
format_hex_prettyresize without separator esphome#9389 by @jesserockz - Add support for GL-R01 I2C - Time of Flight sensor esphome#8329 by @pkejval (new-integration)
- [esp32] Improve flexibility of
only_on_variantesphome#9390 by @jesserockz - ESP_EXT1_WAKEUP_ANY_LOW is for s2/s3/c6/h2; ESP_EXT1_WAKEUP_ALL_LOW otherwise esphome#9387 by @candrews
- [apds9960] Add 0x9E ID esphome#9392 by @Merikei
- Bump aioesphomeapi from 34.1.0 to 34.2.0 esphome#9391 by @dependabot[bot]