ESPHome 2026.1.0 - January 2026
Read the ESPHome 2026.1.0 release notes on the blog for the release overview, feature highlights, upgrade checklist, and breaking changes.
Full list of changes
Section titled “Full list of changes”New Features
Section titled “New Features”- [esp32] Add OTA rollback support esphome#12460 by @swoboda1337 (new-feature)
- [hub75] Add set_brightness action esphome#12521 by @stuartparmenter (new-feature)
- [update] Add check action to trigger update checks esphome#12415 by @rogerfachini (new-feature)
- [deep_sleep] Deep sleep for BK72xx esphome#12267 by @szupi-ipuzs (new-feature)
- [mmc5603] enable AUTO_SR_en to compensate for temperature drift esphome#12556 by @pixelgrb (new-feature) (breaking-change)
- [aqi, hm3301, pmsx003] Air Quality Index improvements esphome#12203 by @jasstrong (new-component) (new-feature) (breaking-change)
- [water_heater] (1/4) Implement API/Core/component for new water_heater component esphome#12498 by @dhoeben (new-component) (new-feature)
- Add Event Component to UART esphome#11765 by @eoasmxd (new-feature) (new-platform)
- [bme68x_bsec2] add
id:to allow extending esphome#12649 by @ssieb (new-feature) - Add BTHome advertisments parsing to Xiaomi Mijia BLE Sensors esphome#12635 by @nagyrobi (new-component) (new-feature) (new-platform)
- [spi] Allow any achievable data rate esphome#12753 by @tuct (new-feature)
- [mhz19] Make detection range configurable esphome#12677 by @jvanderneutstulen (new-feature)
- [water_heater] (2/4) Implement template for new water_heater component esphome#12516 by @dhoeben (new-feature)
- [esp32_rmt_led_strip] Support inverted logic esphome#12825 by @Frederic98 (new-feature)
- [water_heater] (4/4) Implement tests for new water_heater component esphome#12517 by @dhoeben (new-feature)
- [hub75] Bump esp-hub75 version to 0.2.2 esphome#12674 by @stuartparmenter (new-feature)
- [nrf52,zigbee] add support for binary_input esphome#11535 by @tomaszduda23 (new-component) (new-feature)
- [dsmr] Remove dependency on Arduino framework. Various bug fixes. Add missing sensors. esphome#11036 by @PolarGoose (new-feature)
- [cc1101] Add freq_offset to on_packet trigger esphome#13008 by @swoboda1337 (new-feature)
- [rd03d] Add Ai-Thinker RD-03D mmWave radar component esphome#12764 by @jasstrong (new-component) (new-feature) (new-platform)
- [aqi] Implement a sensor that computes AQI esphome#12958 by @jasstrong (new-feature) (new-platform)
- [nrf52, zigbee] Add sensor esphome#12187 by @tomaszduda23 (new-feature)
- [wifi] Add basic post-connect roaming support for stationary devices esphome#12809 by @bdraco (new-feature)
- [web_server][captive_portal] Add Brotli compression (saves ~11KB flash when using local) esphome#12959 by @bdraco (new-feature)
- [logger] Add thread-safe logging support for LibreTiny platform esphome#13062 by @bdraco (new-feature)
- [thermostat] Allow
heat_cool_modewithout an automation esphome#13069 by @kbx81 (new-feature) - [mqtt] Include session_present and reason parameters in connection callbacks esphome#12413 by @Rapsssito (new-feature)
- [ac_dimmer] Added support for ESP-IDF (5+) esphome#7072 by @latonita (new-feature)
- [esp32_hosted] Add HTTP-based coprocessor firmware update support esphome#13090 by @swoboda1337 (new-feature) (breaking-change)
- [water_heater] (3/4) Implement web_server for new water_heater component esphome#12511 by @dhoeben (new-feature)
- [esp32_can] Add listen-only mode to esp32_can component esphome#13084 by @mikaabra (new-feature)
- [nrf52,sdk] Add framework version support esphome#12489 by @tomaszduda23 (new-feature)
- [tuya] add color_type_lowercase option esphome#13101 by @lullius (new-feature)
- [mqtt] templatable state and command topics esphome#12441 by @Rapsssito (new-feature)
- [ir_rf_proxy] New component esphome#12985 by @kbx81 (new-component) (new-feature)
- [nrf52,zigbee] Add binary output as switch esphome#13083 by @tomaszduda23 (new-feature)
- [epaper_spi] Add Waveshare 2.13v3 esphome#13117 by @clydebarrow (new-feature)
New Components
Section titled “New Components”- Add hmac-sha256 support esphome#12437 by @dwmw2 (new-component)
- [aqi, hm3301, pmsx003] Air Quality Index improvements esphome#12203 by @jasstrong (new-component) (new-feature) (breaking-change)
- [water_heater] (1/4) Implement API/Core/component for new water_heater component esphome#12498 by @dhoeben (new-component) (new-feature)
- Add BTHome advertisments parsing to Xiaomi Mijia BLE Sensors esphome#12635 by @nagyrobi (new-component) (new-feature) (new-platform)
- [nrf52,zigbee] add support for binary_input esphome#11535 by @tomaszduda23 (new-component) (new-feature)
- [rd03d] Add Ai-Thinker RD-03D mmWave radar component esphome#12764 by @jasstrong (new-component) (new-feature) (new-platform)
- [infrared] Implement experimental API/Core/component for new component/entity type esphome#13129 by @kbx81 (new-component)
- [ir_rf_proxy] New component esphome#12985 by @kbx81 (new-component) (new-feature)
New Platforms
Section titled “New Platforms”- Add Event Component to UART esphome#11765 by @eoasmxd (new-feature) (new-platform)
- Add BTHome advertisments parsing to Xiaomi Mijia BLE Sensors esphome#12635 by @nagyrobi (new-component) (new-feature) (new-platform)
- [rd03d] Add Ai-Thinker RD-03D mmWave radar component esphome#12764 by @jasstrong (new-component) (new-feature) (new-platform)
- [aqi] Implement a sensor that computes AQI esphome#12958 by @jasstrong (new-feature) (new-platform)
Breaking Changes
Section titled “Breaking Changes”- Add build info to image esphome#12425 by @dwmw2 (breaking-change)
- [core] Deprecate custom_components folder esphome#12552 by @swoboda1337 (breaking-change)
- [mmc5603] enable AUTO_SR_en to compensate for temperature drift esphome#12556 by @pixelgrb (new-feature) (breaking-change)
- [aqi, hm3301, pmsx003] Air Quality Index improvements esphome#12203 by @jasstrong (new-component) (new-feature) (breaking-change)
- [sprinkler] Remove internal latching valve support esphome#12603 by @kbx81 (breaking-change)
- [esp32] Breaking Change: Change default framework to ESP-IDF esphome#12746 by @bdraco (breaking-change)
- Fix display driver fill implementations to honor clipping correctly esphome#12808 by @stuartparmenter (breaking-change)
- [ota] Remove MD5 authentication support esphome#12707 by @bdraco (breaking-change)
- [web_server] Fix URL collisions with UTF-8 names and sub-devices esphome#12627 by @bdraco (breaking-change)
- [api] Remove deprecated password authentication esphome#12819 by @bdraco (breaking-change)
- [ultrasonic] Fix timeout issues and deprecate timeout option esphome#12897 by @swoboda1337 (breaking-change)
- [esp8266] Add enable_serial/enable_serial1 helpers to exclude unused Serial objects esphome#12736 by @bdraco (breaking-change)
- [api] Fire on_client_disconnected trigger after removing client from list esphome#13088 by @bdraco (breaking-change)
- [esp32_hosted] Add HTTP-based coprocessor firmware update support esphome#13090 by @swoboda1337 (new-feature) (breaking-change)
- [fan] Return StringRef from get_preset_mode() for safety and modern API esphome#13092 by @bdraco (breaking-change)
- [select] Return StringRef from current_option() esphome#13095 by @bdraco (breaking-change)
- [light] Return StringRef from LightEffect::get_name() and LightState::get_effect_name() esphome#13105 by @bdraco (breaking-change)
- [event] Return StringRef from get_last_event_type() esphome#13104 by @bdraco (breaking-change)
- [climate] Return StringRef from get_custom_fan_mode() and get_custom_preset() esphome#13103 by @bdraco (breaking-change)
- [hub75] Bump esp-hub75 version to 0.3.0 esphome#13243 by @stuartparmenter (breaking-change)
All changes
Section titled “All changes”- [esp32_ble_client] Use stack-based MAC formatting in auth logging esphome#12393 by @bdraco
- [core] Add constexpr parse_hex_char helper and simplify parse_hex esphome#12394 by @bdraco
- [text] Add integration tests for text command API esphome#12401 by @bdraco
- [climate] Save 48 bytes per entity by conditionally compiling visual overrides esphome#12406 by @bdraco
- [api] Release prologue memory after noise handshake completes esphome#12412 by @bdraco
- Add USE_SHA256 define to sha256 component to enable tests esphome#12457 by @dwmw2
- Add HMAC-MD5 component tests esphome#12459 by @dwmw2
- Add host platform support to MD5 component esphome#12458 by @dwmw2
- Add hmac-sha256 support esphome#12437 by @dwmw2 (new-component)
- Add FNV-1a hash functions esphome#12502 by @dwmw2
- [esp32] Fix serial logging on h2, c2 & c61 esphome#12522 by @zigboi
- [esp32] improve types and variable naming esphome#12423 by @ximex
- [climate] Improve temperature unit regex esphome#12032 by @ximex
- [openthread] channel range, fix typo, use C++17 nested namespace syntax esphome#12422 by @ximex
- [spi] Use ESP-IDF driver for ESP32 Arduino esphome#12420 by @swoboda1337
- [http_request] Use ESP-IDF for ESP32 Arduino esphome#12428 by @swoboda1337
- [esp32] Remove Arduino-specific code from core.cpp esphome#12501 by @swoboda1337
- [ledc,mqtt,resampler] Remove unnecessary ESP-IDF framework restrictions esphome#12442 by @swoboda1337
- [esp32] Add OTA rollback support esphome#12460 by @swoboda1337 (new-feature)
- [hub75] Add set_brightness action esphome#12521 by @stuartparmenter (new-feature)
- [update] Add check action to trigger update checks esphome#12415 by @rogerfachini (new-feature)
- [time] Convert to C++17 nested namespace syntax esphome#12463 by @bdraco
- [factory_reset] Optimize memory by storing interval as uint16_t seconds esphome#12462 by @bdraco
- [esphome] Improve OTA field alignment to save 4 bytes on 32-bit esphome#12461 by @bdraco
- [core] Refactor str_snake_case and str_sanitize to use constexpr helpers esphome#12454 by @bdraco
- [deep_sleep] Deep sleep for BK72xx esphome#12267 by @szupi-ipuzs (new-feature)
- [nextion] Use ESP-IDF for ESP32 Arduino esphome#9429 by @edwardtfn
- [esp32] Store preference keys as uint32_t, convert to string only at NVS boundary esphome#12494 by @bdraco
- [libretiny] Store preference keys as uint32_t, convert to string only at FlashDB boundary esphome#12500 by @bdraco
- [text] Avoid string copies in callbacks by passing const ref esphome#12504 by @bdraco
- [spi] Add SPIInterface stub for clang-tidy on unsupported platforms esphome#12532 by @swoboda1337
- [nextion] Fix clang-tidy error on Zephyr for HTTPClient esphome#12538 by @swoboda1337
- [ci] Check changed headers in clang-tidy when using —changed esphome#12540 by @swoboda1337
- [select] Eliminate string allocation in state callbacks esphome#12505 by @bdraco
- [esp32] Dynamically embed managed component server certificates esphome#12509 by @swoboda1337
- Add build info to image esphome#12425 by @dwmw2 (breaking-change)
- [esp32][libretiny] Avoid duplicate snprintf when syncing preferences esphome#12542 by @bdraco
- [wifi] Reduce scan logging to prevent blocking loop during connection esphome#12544 by @bdraco
- [libretiny] Fix millis() ambiguity on BK72XX esphome#12534 by @swoboda1337
- [api] Remove unused force parameter from encode_message esphome#12551 by @bdraco
- [socket] Refactor socket implementations for memory efficiency and code quality esphome#12550 by @bdraco
- [core] Deprecate custom_components folder esphome#12552 by @swoboda1337 (breaking-change)
- [mmc5603] enable AUTO_SR_en to compensate for temperature drift esphome#12556 by @pixelgrb (new-feature) (breaking-change)
- [aqi, hm3301, pmsx003] Air Quality Index improvements esphome#12203 by @jasstrong (new-component) (new-feature) (breaking-change)
- [dht] Fix “Falling edge for bit 39 failed!” for Sonoff THS01 esphome#9225 by @rguca
- [wifi] Replace optional with sentinel values to reduce RAM and clarify API esphome#12446 by @bdraco
- [esp32_ble] Add stack-based UUID formatting to avoid heap allocations esphome#12510 by @bdraco
- [climate] Add zero-copy support for API custom fan mode and preset commands esphome#12402 by @bdraco
- [ota] Replace std::function callbacks with listener interface esphome#12167 by @bdraco
- [alarm_control_panel] Remove redundant per-state callbacks esphome#12171 by @bdraco
- [fan] Add zero-copy support for API preset mode commands esphome#12404 by @bdraco
- [sen5x][sgp4x] Move configuration keys from SEN5x and SGP4x to const.py esphome#12567 by @mebner86
- [core] Migrate entities to use lazy callbacks esphome#12580 by @bdraco
- [tests] Fix race condition in alarm control panel state transitions test esphome#12581 by @bdraco
- [text_sensor] Avoid string copies in callbacks by passing const ref esphome#12503 by @bdraco
- [api] Add zero-copy support for noise encryption key requests esphome#12405 by @bdraco
- [zwave_proxy] Add missing USE_API guards for clang-tidy esphome#12590 by @bdraco
- [const] Add CONF_ON_DATA and consolidate definitions esphome#12595 by @FredM67
- [sprinkler] Squash a few bugs + minor optimization esphome#12436 by @kbx81
- [syslog] Use C++17 nested namespace syntax esphome#12594 by @bdraco
- Add nix files to gitignore esphome#12604 by @polyfloyd
- [syslog] Eliminate heap allocations in log path esphome#12589 by @bdraco
- [api] Add zero-copy support for Home Assistant state response messages esphome#12585 by @bdraco
- [web_server] Replace str_sprintf with stack buffers esphome#12592 by @bdraco
- [water_heater] (1/4) Implement API/Core/component for new water_heater component esphome#12498 by @dhoeben (new-component) (new-feature)
- [logger] RP2040: Use write() with known length instead of println() esphome#12615 by @bdraco
- [thermostat] Enhance timer behavior for immediate response to duration changes esphome#12610 by @clinta
- [codegen] Add static storage class to global variables for size optimization esphome#12616 by @bdraco
- [api] Use union for iterators to reduce APIConnection size by ~16 bytes esphome#12563 by @bdraco
- [esp32_ble] Avoid string allocation when setting BLE device name esphome#12579 by @bdraco
- [esp32_camera] Reduce loop overhead and improve frame latency with wake_loop_threadsafe esphome#12601 by @bdraco
- [core] Add zero-allocation object_id methods esphome#12578 by @bdraco
- [core] Remove deprecated config options from before 2025 esphome#12622 by @swoboda1337
- [thermostat] Optimizations to reduce binary size esphome#12621 by @kbx81
- [sprinkler] Remove internal latching valve support esphome#12603 by @kbx81 (breaking-change)
- [esp32] Remove remaining using_esp_idf checks esphome#12623 by @swoboda1337
- [safe_mode] Defer preference sync in clean_rtc to avoid blocking event loop esphome#12625 by @bdraco
- [web_server] Make internal JSON helper methods private esphome#12624 by @bdraco
- [core] Move comment to PROGMEM on ESP8266 esphome#12554 by @bdraco
- [web_server] Use stack buffers for value formatting to reduce flash usage esphome#12575 by @bdraco
- Add Event Component to UART esphome#11765 by @eoasmxd (new-feature) (new-platform)
- [logger] Zephyr: Use k_str_out() with known length instead of printk() esphome#12619 by @bdraco
- [logger] Host: Use fwrite() with explicit length and remove platform branching esphome#12628 by @bdraco
- [core] Deprecate get_object_id() and migrate remaining usages to get_object_id_to() esphome#12629 by @bdraco
- [alarm_control_panel] Use C++17 nested namespace and remove unused include esphome#12662 by @bdraco
- [text_sensor] Return state by const reference to avoid copies esphome#12661 by @bdraco
- [wifi] Avoid unnecessary string copy in failed connection logging esphome#12659 by @bdraco
- [web_server] Move HTTP header strings to flash on ESP8266 esphome#12668 by @bdraco
- [web_server] Use C++17 nested namespace syntax esphome#12663 by @bdraco
- [wifi_info] Reduce heap allocations in text sensor formatting esphome#12660 by @bdraco
- [esp8266] Native OTA backend to reduce Arduino dependencies esphome#12675 by @bdraco
- [core] Add format_hex_to helper for zero-allocation hex formatting esphome#12670 by @bdraco
- [udp] Use stack buffer for listen address logging in dump_config esphome#12667 by @bdraco
- [wifi] Use StringRef and std::span in WiFiConnectStateListener to avoid allocations esphome#12672 by @bdraco
- [wifi] Eliminate heap allocations in dump_config logging esphome#12664 by @bdraco
- [ethernet] Eliminate heap allocations in dump_config logging esphome#12665 by @bdraco
- [core] Replace USE_ESP_IDF with USE_ESP32 across components esphome#12673 by @swoboda1337
- [internal_temperature] Add ESP32-C5 support esphome#12713 by @Swaptor
- [esp32] Bump to ESP-IDF 5.5.2, Arduino 3.3.5, platform 55.3.35 esphome#12681 by @swoboda1337
- [ota] Use precision format specifier for auth logging esphome#12706 by @bdraco
- [usb_host] sort esp32 variants esphome#12720 by @ximex
- [tests] fix typo mipi tests esphome#12715 by @ximex
- [tests] improve mipi_spi variable naming esphome#12716 by @ximex
- Fixed bug displaying negative numbers in PVVX MiThermometer Display esphome#12735 by @hsand
- [cli] Report program path on host esphome#12743 by @clydebarrow
- [esp32] Breaking Change: Change default framework to ESP-IDF esphome#12746 by @bdraco (breaking-change)
- [esp32] Add IDF framework source for Arduino builds esphome#12731 by @swoboda1337
- Update dallas_temp.cpp esphome#12695 by @bakroistvan
- [bme68x_bsec2] add
id:to allow extending esphome#12649 by @ssieb (new-feature) - [ethernet_info] Eliminate heap allocations in DNS text sensor esphome#12756 by @bdraco
- [core] Add format_hex_pretty_to buffer helper and reduce code duplication esphome#12687 by @bdraco
- [core] Make LockFreeQueue more widely available esphome#12766 by @clydebarrow
- Add BTHome advertisments parsing to Xiaomi Mijia BLE Sensors esphome#12635 by @nagyrobi (new-component) (new-feature) (new-platform)
- [mipi_spi] Use stack buffer for hex formatting in verbose logging esphome#12778 by @bdraco
- Fix display driver fill implementations to honor clipping correctly esphome#12808 by @stuartparmenter (breaking-change)
- [mipi_dsi] Use stack buffer for hex formatting in very verbose logging esphome#12776 by @bdraco
- [mipi_rgb] Use stack buffer for hex formatting in init sequence logging esphome#12777 by @bdraco
- [mitsubishi] Use stack buffer for hex formatting in verbose logging esphome#12779 by @bdraco
- [modbus] Use stack buffer for hex formatting in verbose logging esphome#12780 by @bdraco
- [pn532_spi] Replace format_hex_pretty with stack-based format_hex_pretty_to esphome#12782 by @bdraco
- [qspi_dbi] Replace format_hex_pretty with stack-based format_hex_pretty_to esphome#12783 by @bdraco
- [seeed_mr60bha2] Replace format_hex_pretty with stack-based format_hex_pretty_to esphome#12784 by @bdraco
- [seeed_mr60fda2] Use stack-based format_hex_pretty_to for verbose logging esphome#12785 by @bdraco
- [zwave_proxy] Use stack-based format_hex_pretty_to for very verbose logging esphome#12786 by @bdraco
- [ee895] Use stack-based format_hex_to for verbose logging esphome#12789 by @bdraco
- [mopeka_std_check] Use stack-based format_hex_pretty_to for very verbose logging esphome#12790 by @bdraco
- [espnow] Use stack buffer for hex formatting in verbose logging esphome#12738 by @bdraco
- [i2c] Use stack buffer for hex formatting in verbose logging esphome#12739 by @bdraco
- [hlk_fm22x] Use stack buffer for hex formatting in verbose logging esphome#12740 by @bdraco
- [esp32_ble_tracker] Use stack buffer for hex formatting in very verbose logging esphome#12741 by @bdraco
- [ethernet] Use stack buffer for hex formatting in very verbose logging esphome#12742 by @bdraco
- [ble_client] Use stack buffer for hex formatting in very verbose logging esphome#12744 by @bdraco
- [light] Use StringRef to avoid allocation in JSON effect name serialization esphome#12758 by @bdraco
- [ota] Remove MD5 authentication support esphome#12707 by @bdraco (breaking-change)
- [xiaomi_*] Use stack-based hex formatting for bindkey logging esphome#12798 by @bdraco
- [usb_cdc_acm] Use stack-based hex formatting in verbose logging esphome#12792 by @bdraco
- [spi] Allow any achievable data rate esphome#12753 by @tuct (new-feature)
- [api] Auto-generate StringRef for incoming API string fields esphome#12648 by @bdraco
- [core] Remove unused USE_ESP32_FRAMEWORK_ARDUINO ifdefs esphome#12813 by @swoboda1337
- [ultrasonic] Use interrupt-based measurement for reliability esphome#12617 by @swoboda1337
- [web_server] Fix URL collisions with UTF-8 names and sub-devices esphome#12627 by @bdraco (breaking-change)
- Update webserver local assets to 20260102-230255 esphome#12817 by @esphomebot
- [api] Auto-generate zero-copy pointer access for incoming API bytes fields esphome#12654 by @bdraco
- [api] Use StringRef in handle_action_response to avoid temporary string esphome#12655 by @bdraco
- [packet_transport] Use stack-based format_hex_pretty_to for logging esphome#12791 by @bdraco
- [api] Use pointer to FixedVector for siren tones field esphome#12657 by @bdraco
- [voice_assistant] Use zero-copy buffer access for audio data esphome#12656 by @bdraco
- [ld2410][ld2412][ld2450] Use stack buffers for hex logging esphome#12688 by @bdraco
- [api] Use StringRef in send_action_response and send_execute_service_response esphome#12658 by @bdraco
- [mqtt] Avoid heap allocations when logging IP addresses esphome#12686 by @bdraco
- [tuya] Use stack buffers for hex logging to avoid heap allocations esphome#12689 by @bdraco
- [udp] Avoid heap allocations when joining multicast groups esphome#12685 by @bdraco
- [wifi] Use wifi_ssid_to() to avoid heap allocations in automation and connection checks esphome#12678 by @bdraco
- [captive_portal] Use stack buffer for IP address logging in DNS server esphome#12679 by @bdraco
- [esp32_improv] Use stack buffer for URL formatting to avoid heap allocation esphome#12682 by @bdraco
- [wifi] Use stack buffers for IP address logging to avoid heap allocations esphome#12680 by @bdraco
- [esp32] Add minimum_chip_revision setting and log chip revision at startup esphome#12696 by @bdraco
- [cse7766] Use stack buffer for hex formatting in debug logging esphome#12732 by @bdraco
- [wifi] Use precision format specifier for SSID logging to avoid stack copy esphome#12704 by @bdraco
- [shelly_dimmer] Use stack buffer for hex formatting in command logging esphome#12721 by @bdraco
- [remote_base] Use stack buffer for hex formatting in mirage protocol logging esphome#12722 by @bdraco
- [remote_base] Use stack buffer for hex formatting in haier protocol logging esphome#12723 by @bdraco
- [rc522] Use stack buffers for hex formatting in tag logging esphome#12725 by @bdraco
- [opentherm] Replace heap-allocating format calls with printf format specifiers in debug_error esphome#12726 by @bdraco
- [a01nyub] Use stack buffer for hex formatting in error logging esphome#12727 by @bdraco
- [a02yyuw] Use stack buffer for hex formatting in error logging esphome#12728 by @bdraco
- [jsn_sr04t] Use stack buffer for hex formatting in error logging esphome#12729 by @bdraco
- [sonoff_d1] Use stack buffer for hex formatting in logging esphome#12730 by @bdraco
- [nextion] Use stack buffers for hex formatting in upload logging esphome#12733 by @bdraco
- [epaper_spi] Use stack buffer for hex formatting in command logging esphome#12734 by @bdraco
- [esp32_improv] Use stack buffer for hex formatting in verbose logging esphome#12737 by @bdraco
- [gpio] Avoid heap allocation in dump_summary esphome#12760 by @bdraco
- [core] Remove object_id RAM storage - no longer in hot path after #12627 esphome#12631 by @bdraco
- [api] Remove object_id from API protocol - clients compute it from name #12698 esphome#12818 by @bdraco
- [api] Use stack-based format_hex_pretty_to for packet logging macros esphome#12788 by @bdraco
- [kuntze] Use stack buffer for hex formatting in verbose logging esphome#12775 by @bdraco
- [xiaomi_ble] Use stack-based hex formatting in verbose logging esphome#12793 by @bdraco
- [hte501] Use stack-based hex formatting in verbose logging esphome#12794 by @bdraco
- [addressable_light] Use StringRef to avoid allocation when saving effect name esphome#12759 by @bdraco
- [tee501] Use stack-based hex formatting in verbose logging esphome#12795 by @bdraco
- [gps] add icon for HDOP and use correct state_class for longitude and… esphome#12718 by @ximex
- [vbus] Use stack-based hex formatting in verbose logging esphome#12796 by @bdraco
- [uponor_smatrix] Use stack-based hex formatting in verbose logging esphome#12797 by @bdraco
- [core] Add CONF_ON_START (#12439) esphome#12440 by @robertklep
- [api] Enable zero-copy bytes SOURCE_BOTH messages esphome#12816 by @bdraco
- [esp8266] Exclude unused waveform code to save ~596 bytes RAM esphome#12690 by @bdraco
- [tests] Remove reserved / character from entity names in component tests esphome#12820 by @bdraco
- [uart] make sure that all variables are initialized esphome#12823 by @tomaszduda23
- [api] Remove deprecated password authentication esphome#12819 by @bdraco (breaking-change)
- [nrf52, zephyr] move nrf52-specific code to nrf52 component esphome#12582 by @mrk-its
- [api] Fix KeyError when running logs after password removal esphome#12831 by @bdraco
- [mhz19] Make detection range configurable esphome#12677 by @jvanderneutstulen (new-feature)
- [mhz19] Refactor Actions to Parented esphome#12837 by @jvanderneutstulen
- Fix comment typos esphome#12828 by @jhollowe
- [espnow] Use stack-based MAC formatting and remove dead code esphome#12836 by @bdraco
- [wifi] Combine scan result log lines to reduce loop blocking with many matching APs esphome#12830 by @bdraco
- [core] Fix startup delay from setup timing logs when console connected esphome#12832 by @bdraco
- [wifi] Use stack-based MAC formatting in ESP8266 and IDF event handlers esphome#12834 by @bdraco
- [image] Use alternative version of CairoSVG on Windows esphome#12811 by @clydebarrow
- [absolute_humidity] Combine log statements to reduce loop blocking esphome#12838 by @bdraco
- [nrf52] add printk use case documentation esphome#12839 by @tomaszduda23
- [water_heater] (2/4) Implement template for new water_heater component esphome#12516 by @dhoeben (new-feature)
- [esp32_ble_tracker] Combine log statements to reduce loop blocking esphome#12860 by @bdraco
- [http_request] Combine log statements to reduce loop blocking esphome#12859 by @bdraco
- [water_heater] Combine log statements to reduce loop blocking esphome#12858 by @bdraco
- [update] Combine log statements to reduce loop blocking esphome#12857 by @bdraco
- [ethernet] Combine log statements to reduce loop blocking esphome#12854 by @bdraco
- [uart] Combine log statements to reduce loop blocking esphome#12855 by @bdraco
- [captive_portal] Combine log statements to reduce loop blocking esphome#12853 by @bdraco
- [ac_dimmer] Fix ESP8266 build by requiring waveform support esphome#12852 by @bdraco
- [bp1658cj] Combine log statements to reduce loop blocking esphome#12851 by @bdraco
- [ble_nus] Combine log statements to reduce loop blocking esphome#12850 by @bdraco
- [bedjet] Combine log statements to reduce loop blocking esphome#12848 by @bdraco
- [as3935] Combine log statements to reduce loop blocking esphome#12846 by @bdraco
- [anova] Combine log statements to reduce loop blocking esphome#12845 by @bdraco
- [ads1118] Combine log statements to reduce loop blocking esphome#12844 by @bdraco
- [ads1115] Combine log statements to reduce loop blocking esphome#12843 by @bdraco
- [ade7880] Combine log statements to reduce loop blocking esphome#12842 by @bdraco
- [adc] Combine log statements to reduce loop blocking esphome#12841 by @bdraco
- [esp32_rmt_led_strip] Support inverted logic esphome#12825 by @Frederic98 (new-feature)
- [ac_dimmer] Combine log statements to reduce loop blocking esphome#12840 by @bdraco
- [wifi] Combine log statements to reduce loop blocking esphome#12856 by @bdraco
- [binary_sensor] Combine log statements to reduce loop blocking esphome#12849 by @bdraco
- [esp32] Move heap functions to flash, saving ~6KB esphome#12862 by @bdraco
- [water_heater] (4/4) Implement tests for new water_heater component esphome#12517 by @dhoeben (new-feature)
- [cst816] Combine log statements to reduce loop blocking esphome#12872 by @bdraco
- [esp_ldo] Combine log statements to reduce loop blocking esphome#12886 by @bdraco
- [epaper_spi] Combine log statements to reduce loop blocking esphome#12881 by @bdraco
- [chsc6x] Combine log statements to reduce loop blocking esphome#12871 by @bdraco
- [cap1188] Combine log statements to reduce loop blocking esphome#12868 by @bdraco
- [dht] Combine log statements to reduce loop blocking esphome#12877 by @bdraco
- [espnow] Combine log statements to reduce loop blocking esphome#12887 by @bdraco
- [esp8266_pwm] Combine log statements to reduce loop blocking esphome#12885 by @bdraco
- [endstop] Combine log statements to reduce loop blocking esphome#12879 by @bdraco
- [fan] Combine log statements to reduce loop blocking esphome#12889 by @bdraco
- [debug] Combine log statements to reduce loop blocking esphome#12875 by @bdraco
- [esp32_ble_client] Combine log statements to reduce loop blocking esphome#12883 by @bdraco
- [ezo_pmp] Combine log statements to reduce loop blocking esphome#12888 by @bdraco
- [esp32_ble_tracker] Make start_scan action idempotent esphome#12864 by @bdraco
- [es8388] Combine log statements to reduce loop blocking esphome#12882 by @bdraco
- [esp32][libretiny] Reuse preference buffer to avoid heap churn esphome#12890 by @bdraco
- [esp32_hosted] Combine log statements to reduce loop blocking esphome#12884 by @bdraco
- [ens160_base] Combine log statements to reduce loop blocking esphome#12880 by @bdraco
- [emmeti] Combine log statements to reduce loop blocking esphome#12878 by @bdraco
- [dfrobot_sen0395] Combine log statements to reduce loop blocking esphome#12876 by @bdraco
- [current_based] Combine log statements to reduce loop blocking esphome#12873 by @bdraco
- [cd74hc4067] Combine log statements to reduce loop blocking esphome#12870 by @bdraco
- [cc1101] Combine log statements to reduce loop blocking esphome#12869 by @bdraco
- [factory_reset] Combine log statements to reduce loop blocking esphome#12866 by @bdraco
- [ultrasonic] Fix timeout issues and deprecate timeout option esphome#12897 by @swoboda1337 (breaking-change)
- [hub75] Bump esp-hub75 version to 0.2.2 esphome#12674 by @stuartparmenter (new-feature)
- [gcja5] Combine log statements to reduce loop blocking esphome#12898 by @bdraco
- [gl_r01_i2c] Combine log statements to reduce loop blocking esphome#12899 by @bdraco
- [wifi] Fix LibreTiny thread safety with queue-based event handling esphome#12833 by @bdraco
- [openthread] Combine log statements to reduce loop blocking esphome#12917 by @bdraco
- [opentherm] Combine log statements to reduce loop blocking esphome#12916 by @bdraco
- [my9231] Combine log statements to reduce loop blocking esphome#12915 by @bdraco
- [mqtt] Combine log statements to reduce loop blocking esphome#12914 by @bdraco
- [mcp9600] Combine log statements to reduce loop blocking esphome#12913 by @bdraco
- [mcp3204] Combine log statements to reduce loop blocking esphome#12912 by @bdraco
- [hc8] Combine log statements to reduce loop blocking esphome#12900 by @bdraco
- [hlw8012] Combine log statements to reduce loop blocking esphome#12901 by @bdraco
- [honeywellabp] Combine log statements to reduce loop blocking esphome#12902 by @bdraco
- [ina260] Combine log statements to reduce loop blocking esphome#12903 by @bdraco
- [ina2xx_base] Combine log statements to reduce loop blocking esphome#12904 by @bdraco
- [lc709203f] Combine log statements to reduce loop blocking esphome#12905 by @bdraco
- [ledc] Combine log statements to reduce loop blocking esphome#12906 by @bdraco
- [mopeka_std_check] Combine log statements to reduce loop blocking esphome#12911 by @bdraco
- [modbus] Combine log statements to reduce loop blocking esphome#12910 by @bdraco
- [libretiny_pwm] Combine log statements to reduce loop blocking esphome#12907 by @bdraco
- [m5stack_8angle] Combine log statements to reduce loop blocking esphome#12908 by @bdraco
- [vl53l0x] Combine log statements to reduce loop blocking esphome#12929 by @bdraco
- [tuya] Combine log statements to reduce loop blocking esphome#12924 by @bdraco
- [sx1509] Combine log statements to reduce loop blocking esphome#12920 by @bdraco
- [tlc5947] Combine log statements to reduce loop blocking esphome#12921 by @bdraco
- [tmp1075] Combine log statements to reduce loop blocking esphome#12923 by @bdraco
- [uln2003] Combine log statements to reduce loop blocking esphome#12926 by @bdraco
- [mqtt] Combine log statements to reduce loop blocking esphome#12938 by @bdraco
- [usb_uart] Combine log statements to reduce loop blocking esphome#12928 by @bdraco
- [sun] Combine log statements to reduce loop blocking esphome#12919 by @bdraco
- [waveshare_epaper] Combine log statements to reduce loop blocking esphome#12931 by @bdraco
- [usb_host] Combine log statements to reduce loop blocking esphome#12927 by @bdraco
- [wireguard] Combine log statements to reduce loop blocking esphome#12932 by @bdraco
- [xiaomi_xmwsdj04mmc] Combine log statements to reduce loop blocking esphome#12936 by @bdraco
- [ufire_ec] Combine log statements to reduce loop blocking esphome#12925 by @bdraco
- [xpt2046] Combine log statements to reduce loop blocking esphome#12937 by @bdraco
- [wl_134] Combine log statements to reduce loop blocking esphome#12933 by @bdraco
- [x9c] Combine log statements to reduce loop blocking esphome#12934 by @bdraco
- [xgzp68xx] Combine log statements to reduce loop blocking esphome#12935 by @bdraco
- [voice_assistant] Combine log statements to reduce loop blocking esphome#12930 by @bdraco
- [tlc5971] Combine log statements to reduce loop blocking esphome#12922 by @bdraco
- [wifi] Combine log statements to reduce loop blocking esphome#12939 by @bdraco
- [api] Fix message batch size mismatch and improve naming consistency esphome#12940 by @bdraco
- [pcf8574] Combine log statements to reduce loop blocking esphome#12941 by @bdraco
- [qspi_dbi] Combine log statements to reduce loop blocking esphome#12948 by @bdraco
- [pn7160] Combine log statements to reduce loop blocking esphome#12945 by @bdraco
- [rpi_dpi_rgb] Combine log statements to reduce loop blocking esphome#12953 by @bdraco
- [pn7150] Combine log statements to reduce loop blocking esphome#12944 by @bdraco
- [pn532] Combine log statements to reduce loop blocking esphome#12943 by @bdraco
- [pid] Combine log statements to reduce loop blocking esphome#12942 by @bdraco
- [pulse_counter] Combine log statements to reduce loop blocking esphome#12946 by @bdraco
- [qmp6988] Combine log statements to reduce loop blocking esphome#12947 by @bdraco
- [radon_eye_rd200] Combine log statements to reduce loop blocking esphome#12949 by @bdraco
- [remote_base] Combine log statements to reduce loop blocking esphome#12950 by @bdraco
- [remote_receiver] Combine log statements to reduce loop blocking esphome#12951 by @bdraco
- [rp2040_pwm] Combine log statements to reduce loop blocking esphome#12952 by @bdraco
- [shelly_dimmer] Combine log statements to reduce loop blocking esphome#12956 by @bdraco
- [safe_mode] Combine log statements to reduce loop blocking esphome#12955 by @bdraco
- [runtime_stats] Combine log statements to reduce loop blocking esphome#12954 by @bdraco
- [nrf52,zigbee] add support for binary_input esphome#11535 by @tomaszduda23 (new-component) (new-feature)
- [sht3xd] Combine log statements to reduce loop blocking esphome#12957 by @bdraco
- [st7567_i2c] Combine log statements to reduce loop blocking esphome#12975 by @bdraco
- [st7567_spi] Combine log statements to reduce loop blocking esphome#12976 by @bdraco
- [st7789v] Combine log statements to reduce loop blocking esphome#12978 by @bdraco
- [shtcx] Combine log statements to reduce loop blocking esphome#12960 by @bdraco
- [sim800l] Combine log statements to reduce loop blocking esphome#12961 by @bdraco
- [sm16716] Combine log statements to reduce loop blocking esphome#12962 by @bdraco
- [sm2135] Combine log statements to reduce loop blocking esphome#12963 by @bdraco
- [sonoff_d1] Combine log statements to reduce loop blocking esphome#12966 by @bdraco
- [spi_device] Combine log statements to reduce loop blocking esphome#12967 by @bdraco
- [ssd1325_spi] Combine log statements to reduce loop blocking esphome#12972 by @bdraco
- [sm2335] Combine log statements to reduce loop blocking esphome#12965 by @bdraco
- [sm2235] Combine log statements to reduce loop blocking esphome#12964 by @bdraco
- [ssd1351_spi] Combine log statements to reduce loop blocking esphome#12974 by @bdraco
- [ssd1327_spi] Combine log statements to reduce loop blocking esphome#12973 by @bdraco
- [ssd1322_spi] Combine log statements to reduce loop blocking esphome#12971 by @bdraco
- [ssd1306_spi] Combine log statements to reduce loop blocking esphome#12970 by @bdraco
- [ssd1306_i2c] Combine log statements to reduce loop blocking esphome#12969 by @bdraco
- [spi_led_strip] Combine log statements to reduce loop blocking esphome#12968 by @bdraco
- [st7735] Combine log statements to reduce loop blocking esphome#12977 by @bdraco
- [whirlpool] support for 14 byte whirlpool IR receiver messages esphome#12774 by @mukaschultze
- [esp32_ble] Avoid heap allocation in ESPBTUUID::from_raw for string literals esphome#12980 by @bdraco
- [esp32_ble_tracker, ble_client] Reduce heap allocations with stack-based string formatting esphome#12982 by @bdraco
- [captive_portal] Avoid defer overhead on ESP8266 when saving WiFi credentials esphome#12981 by @bdraco
- [light] Use zero-copy set_effect overload in JSON schema parsing esphome#12979 by @bdraco
- [ci] Add LibreTiny (BK72XX) to memory impact analysis esphome#12983 by @bdraco
- [api] Avoid heap string copies in Home Assistant state subscription callbacks esphome#12506 by @bdraco
- [esphome OTA] Allow compilation on host platform esphome#11655 by @guillempages
- [async_tcp] Add AsyncClient for ESP-IDF and host esphome#12337 by @dwmw2
- [image] Replace use of cairosvg with resvg-py esphome#12863 by @clydebarrow
- [dsmr] Remove dependency on Arduino framework. Various bug fixes. Add missing sensors. esphome#11036 by @PolarGoose (new-feature)
- [cc1101] Add freq_offset to on_packet trigger esphome#13008 by @swoboda1337 (new-feature)
- [radon_eye_rd200] update Radon Eye RD200 with v2/v3 support esphome#7962 by @paukstis
- [voice_assistant] Reduce heap allocation with stack-based timer formatting esphome#13001 by @bdraco
- [midea] Reduce heap allocations with stack-based string formatting esphome#13000 by @bdraco
- [thermopro_ble] Reduce heap allocation with stack-based string formatting esphome#12999 by @bdraco
- [atc_mithermometer] Reduce heap allocations with stack-based string formatting esphome#12996 by @bdraco
- [b_parasite] Reduce heap allocation with stack-based string formatting esphome#12998 by @bdraco
- [ruuvi_ble] Reduce heap allocation with stack-based string formatting esphome#12997 by @bdraco
- [bthome_mithermometer] Reduce heap allocations with stack-based string formatting esphome#12995 by @bdraco
- [bedjet] Use stack-based UUID formatting in logging esphome#12993 by @bdraco
- [xiaomi_ble] Reduce heap allocations with stack-based string formatting esphome#12992 by @bdraco
- [mopeka] Reduce heap allocations with stack-based string formatting esphome#12990 by @bdraco
- [airthings_wave_base, airthings_ble] Use stack-based string formatting in logging esphome#12989 by @bdraco
- [esp8266] Add enable_serial/enable_serial1 helpers to exclude unused Serial objects esphome#12736 by @bdraco (breaking-change)
- [esp8266] Avoid heap allocation in preferences save/load esphome#12465 by @bdraco
- [pvvx_mithermometer] Reduce heap allocations with stack-based string formatting esphome#12994 by @bdraco
- [rd03d] Add Ai-Thinker RD-03D mmWave radar component esphome#12764 by @jasstrong (new-component) (new-feature) (new-platform)
- [radon_eye_rd200, radon_eye_ble] Use stack-based string formatting in logging esphome#12991 by @bdraco
- [opentherm][nau7802] Use direct format specifiers instead of to_string().c_str() esphome#13019 by @bdraco
- [improv_base] Optimize next_url to avoid STL string operations esphome#13015 by @bdraco
- [mqtt] Move Home Assistant discovery keys to PROGMEM on ESP8266 esphome#13011 by @bdraco
- [ble_scanner] Use stack-based string formatting to reduce heap allocations esphome#13013 by @bdraco
- [ota] Fix ESP32-S3 OTA crash with hardware SHA acceleration on IDF 5.5.x esphome#13021 by @bdraco
- [wifi] Clean up duplicate and empty logging output esphome#13018 by @bdraco
- [xiaomi_ble] Simplify set_bindkey using parse_hex and const char* esphome#13014 by @bdraco
- [core] Auto-replace / in entity names with Unicode fraction slash during deprecation period esphome#13016 by @bdraco
- [wifi] Eliminate heap allocations in IP address logging esphome#13017 by @bdraco
- [neopixelbus] Fix ESP8266 compilation by enabling Serial/Serial1 for NeoPixelBus library esphome#13027 by @bdraco
- [async_tcp] Fix build conflicts and use IDF component for ESP32 esphome#13025 by @dwmw2
- [aqi] Implement a sensor that computes AQI esphome#12958 by @jasstrong (new-feature) (new-platform)
- [api] Eliminate
std::stringfrom ClientInfo struct esphome#12566 by @bdraco - [text_sensor][text] Add const char* overloads to publish_state to eliminate heap churn esphome#13030 by @bdraco
- [esp32_camera][uart] Add missing wake_loop_threadsafe() preprocessor guards esphome#13043 by @bdraco
- Map
HEAT_COOLtoMODE_AUTOin HeatpumpIR component esphome#12058 by @poolski - [sml] Eliminate heap allocations in text sensor esphome#13039 by @bdraco
- [openthread_info] Eliminate heap allocations in text sensors esphome#13036 by @bdraco
- [homeassistant] Eliminate heap allocation in text sensor state updates esphome#13035 by @bdraco
- [ethernet_info] Eliminate heap allocations in text sensors esphome#13034 by @bdraco
- [pylontech] Eliminate heap allocations in text sensors esphome#13033 by @bdraco
- [wifi_info] Eliminate heap churn in text sensors esphome#13031 by @bdraco
- [ci] Add lint check to prevent usage of deprecated CORE.using_esp_idf esphome#13029 by @bdraco
- [dsmr] Eliminate heap allocation when publishing telegram esphome#13032 by @bdraco
- [text_sensor][text] Avoid heap allocation when state unchanged esphome#13044 by @bdraco
- [esp32] Don’t warn about no ota rollback if no ota at all esphome#13045 by @clydebarrow
- [zwave_proxy] Add logging if client sends zero-length message esphome#13052 by @kbx81
- [zwave_proxy] Make
send_framesafer, makeset_home_idprotected esphome#13055 by @kbx81 - [nrf52, zigbee] Add sensor esphome#12187 by @tomaszduda23 (new-feature)
- [api] Simplify string handling by removing bifurcated client/server storage esphome#12822 by @bdraco
- [api] Coalesce log packets to reduce buffer pressure and prevent dropped state updates esphome#13026 by @bdraco
- [sun] Eliminate heap allocation in text sensor esphome#13037 by @bdraco
- [ble_client] Eliminate heap allocations in text sensor esphome#13038 by @bdraco
- [analyze-memory] Add RAM symbol analysis by component esphome#13040 by @bdraco
- [preferences] Fix preferences not syncing in safe mode due to component registration order esphome#13041 by @bdraco
- [sun_gtil2] Eliminate heap allocations in text sensor publishing esphome#13047 by @bdraco
- [http_request] Store JSON keys in flash for ESP8266 esphome#13048 by @bdraco
- [mqtt] Use ESPHOME_F() for JSON strings to reduce ESP8266 RAM usage esphome#13049 by @bdraco
- [esp32_hosted] Add SHA256 alignment for hardware DMA compatibility esphome#13050 by @bdraco
- [ld2410/ld2412/ld2450] Use index-based select publish_state to avoid heap allocations esphome#13051 by @bdraco
- [core] Add integer overload for fnv1a_hash_extend esphome#13054 by @bdraco
- [tuya] Avoid heap allocation in text sensor enum publish esphome#13056 by @bdraco
- [core] Improve log timestamp accuracy by batching serial reads esphome#12750 by @bdraco
- [es8388] Use index-based select publish_state to avoid heap allocations esphome#13053 by @bdraco
- [modbus_controller] Replace format_hex_pretty with stack-based format_hex_pretty_to esphome#12781 by @bdraco
- [logger] Add thread-safe logging for host platform esphome#13010 by @bdraco
- [wifi] Add basic post-connect roaming support for stationary devices esphome#12809 by @bdraco (new-feature)
- [debug] Use stack buffers with buf_append helper instead of
std::stringesphome#13020 by @bdraco - [abbwelcome] Use stack-based formatting to eliminate heap allocations esphome#12799 by @bdraco
- [web_server][captive_portal] Add Brotli compression (saves ~11KB flash when using local) esphome#12959 by @bdraco (new-feature)
- Update webserver local assets to 20260107-214817 esphome#13064 by @esphomebot
- [esp32_touch] Disable hardware timeout to prevent continuous interrupts esphome#13059 by @marcbodea
- [logger] Add thread-safe logging support for LibreTiny platform esphome#13062 by @bdraco (new-feature)
- [image] Add define and core data esphome#13058 by @clydebarrow
- [thermostat] Allow
heat_cool_modewithout an automation esphome#13069 by @kbx81 (new-feature) - [logger] Enable loop disable optimization for LibreTiny task log buffer esphome#13078 by @bdraco
- [libretiny] Bump to 1.9.2 esphome#13077 by @bdraco
- [wifi] Disable SoftAP support on Arduino ESP32 when ap: not configured esphome#13076 by @bdraco
- [core] Improve minimum_chip_revision warning for PSRAM users esphome#13074 by @bdraco
- [wifi] Fix infinite roaming when best-signal AP is crashed/broken esphome#13071 by @bdraco
- [mqtt] Reduce heap allocations in topic string building esphome#13072 by @bdraco
- [wifi] Limit ignored disconnect events on LibreTiny to speed up AP failover esphome#13070 by @bdraco
- [mqtt] Include session_present and reason parameters in connection callbacks esphome#12413 by @Rapsssito (new-feature)
- [ac_dimmer] Added support for ESP-IDF (5+) esphome#7072 by @latonita (new-feature)
- [wifi] Warn when AP is configured without captive_portal or web_server esphome#13087 by @bdraco
- [web_server] Use centralized length constants for buffer sizing esphome#13073 by @bdraco
- [api] Fire on_client_disconnected trigger after removing client from list esphome#13088 by @bdraco (breaking-change)
- [hub75] Fix depth and gamma mode defines esphome#13091 by @stuartparmenter
- [api] Add methods supporting efficient packed repeated sint32 field encoding for #12985 esphome#13094 by @kbx81
- [remote_base] Add zero-copy packed sint32 decoder for #12985 esphome#13093 by @kbx81
- Revert “[wifi] Disable SoftAP support on Arduino ESP32 when ap: not configured” esphome#13099 by @bdraco
- [hub75] Fix gamma_correct to use enum value instead of key string esphome#13102 by @stuartparmenter
- [mapping] Fix test SPI data rate for RP2040 esphome#13108 by @bdraco
- [mdns] Remove deprecated api password from test configuration esphome#13107 by @bdraco
- [CI] skip endpoint check due to test grouping esphome#13111 by @tomaszduda23
- [esp32_hosted] Add HTTP-based coprocessor firmware update support esphome#13090 by @swoboda1337 (new-feature) (breaking-change)
- [water_heater] (3/4) Implement web_server for new water_heater component esphome#12511 by @dhoeben (new-feature)
- Update webserver local assets to 20260110-013228 esphome#13113 by @esphomebot
- [aqi] Fix precision loss for low PM concentration values esphome#13120 by @jasstrong
- [esp32_hosted] Bump component versions esphome#13118 by @swoboda1337
- [core] Rename FixedVector::shrink_to_fit() to release() for clarity esphome#13130 by @bdraco
- [api] Proto code generator changes for #12985 esphome#13100 by @kbx81
- [sensor] Use C++17 nested namespace syntax esphome#13116 by @bdraco
- [libretiny] Disable BLE stack on BK7231N to save ~21KB RAM esphome#13131 by @bdraco
- [helpers] Add format_hex_prefixed_to for “0x” prefixed hex formatting esphome#13115 by @bdraco
- [web_server] Fix v1 compilation on ESP-IDF by adding missing write method esphome#13153 by @bdraco
- [wifi] Fix captive portal/improv only attempting last configured network esphome#13086 by @bdraco
- [uptime] Format text sensor output on stack to avoid heap allocations esphome#13150 by @bdraco
- [improv_serial] Use int8_to_str to avoid heap allocation for RSSI formatting esphome#13149 by @bdraco
- [web_server_idf] Reduce heap usage in DefaultHeaders and auth esphome#13141 by @bdraco
- [light] Move LightColorValues::lerp() out of header to reduce code duplication esphome#13138 by @bdraco
- [safe_mode] Conditionally compile callback when on_safe_mode is configured esphome#13136 by @bdraco
- [ch422g][lc709203f][qmc5883l] Avoid heap allocation in status_set_warning calls esphome#13152 by @bdraco
- [runtime_stats] Fix log output formatting alignment esphome#13155 by @bdraco
- [ci] Add RP2040 to memory impact analysis esphome#13134 by @bdraco
- [fan] Return StringRef from get_preset_mode() for safety and modern API esphome#13092 by @bdraco (breaking-change)
- [select] Return StringRef from current_option() esphome#13095 by @bdraco (breaking-change)
- [light] Return StringRef from LightEffect::get_name() and LightState::get_effect_name() esphome#13105 by @bdraco (breaking-change)
- [event] Return StringRef from get_last_event_type() esphome#13104 by @bdraco (breaking-change)
- [climate] Return StringRef from get_custom_fan_mode() and get_custom_preset() esphome#13103 by @bdraco (breaking-change)
- [api] Use StringRef for HomeassistantServiceMap.value to eliminate heap allocations esphome#13154 by @bdraco
- [tuya][rc522][remote_base] Migrate format_hex_pretty() to stack-based alternatives esphome#13158 by @bdraco
- [infrared] Implement experimental API/Core/component for new component/entity type esphome#13129 by @kbx81 (new-component)
- [rd03d] Filter targets with sentinel speed values esphome#13146 by @jasstrong
- [nrf52,zigbee] Warning if spaces in description esphome#13114 by @tomaszduda23
- [api] Use stack buffer for bytes field dumping in proto message logs esphome#13162 by @bdraco
- [mqtt][prometheus][graph] Migrate value_accuracy_to_string() to stack-based alternative esphome#13159 by @bdraco
- [nfc] Use stack-based hex formatting in pn7150/pn7160 components esphome#13163 by @bdraco
- [esp32_can] Add listen-only mode to esp32_can component esphome#13084 by @mikaabra (new-feature)
- [deep_sleep] Fix GPIO wakeup comment esphome#12815 by @jvanderneutstulen
- [deep_sleep] Fix GPIO wakeup on ESP32-C3/C6 esphome#12803 by @jvanderneutstulen
- [nrf52,sdk] Add framework version support esphome#12489 by @tomaszduda23 (new-feature)
- [web_server] Fix select compilation error in v1 esphome#13169 by @bdraco
- [core] Migrate callers and soft deprecate get_mac_address()/get_mac_address_pretty() esphome#13157 by @bdraco
- [infrared] Use set_data() for vector timings in control() esphome#13171 by @bdraco
- [core] Soft deprecate heap-allocating string helpers to prevent fragmentation patterns esphome#13156 by @bdraco
- [tuya] add color_type_lowercase option esphome#13101 by @lullius (new-feature)
- [mqtt] templatable state and command topics esphome#12441 by @Rapsssito (new-feature)
- [ci] Add format_hex_pretty to heap-allocating helper lint check esphome#13178 by @bdraco
- [ir_rf_proxy] New component esphome#12985 by @kbx81 (new-component) (new-feature)
- [socket] Call lwip_read/lwip_write directly on ESP32 to reduce network I/O latency esphome#13179 by @bdraco
- [bme68x_bsec2] use EntityBase instead of Component for the id esphome#13185 by @ssieb
- [ld24xx] add id to support extending esphome#13183 by @ssieb
- [improv_serial] Use stack buffers for webserver URL formatting esphome#13175 by @bdraco
- [api] Use stack buffer for VERY_VERBOSE proto message dumps esphome#13176 by @bdraco
- [mqtt] Avoid intermediate string allocations in publish calls esphome#13174 by @bdraco
- [i2s_audio] Bugfix: Buffer overflow in software volume control esphome#13190 by @kahrendt
- [wifi] Fix ESP8266 disconnect callback order to set error flag before notifying listeners esphome#13189 by @bdraco
- [libretiny] Regenerate boards, enable Cortex-M4 atomics, and consolidate platform code esphome#13191 by @bdraco
- [nrf52,zigbee] Add binary output as switch esphome#13083 by @tomaszduda23 (new-feature)
- [ota] Mark partition valid when OTA begins to prevent rollback blocking esphome#13195 by @swoboda1337
- [epaper_spi] Add Waveshare 2.13v3 esphome#13117 by @clydebarrow (new-feature)
- [ssd1306_i2c] fix “SSD1306 72x40” display initialization (add SSD1306B Iref setup) esphome#13148 by @Cougar
- [logger] Use RAII guards for recursion protection and optimize hot path esphome#13194 by @bdraco
- [logger] Use StaticVector for log listeners with compile-time sizing esphome#13196 by @bdraco
- [wifi] Use StaticVector for WiFi listeners with per-type compile-time sizing esphome#13197 by @bdraco
- [bh1750] Eliminate heap allocations by replacing callbacks with state machine esphome#11950 by @bdraco
- [api] Reduce batch RAM usage by 33% via switch dispatch esphome#13199 by @bdraco
- [usb_cdc_acm] move esp32 implementation to new file esphome#12824 by @tomaszduda23
- [scheduler] Eliminate heap allocations for
std::stringnames and add uint32_t ID API esphome#13200 by @bdraco - [ethernet_info] Convert to event-driven IP state listener pattern esphome#13203 by @bdraco
- [web_server] Store method/domain comparison strings in flash on ESP8266 esphome#13205 by @bdraco
- [image] Correctly handle dimensions in physical units esphome#13209 by @clydebarrow
- [core] Optimize and normalize entity state publishing logs with >> format esphome#13236 by @bdraco
- [api] Fix state updates being sent to clients that did not subscribe esphome#13237 by @bdraco
- [core] Fix platform subcomponents not filtering source files esphome#13208 by @bdraco
- [core] Fix ESP32-S2/S3 hardware SHA crash by aligning HashBase digest buffer esphome#13234 by @bdraco
- [safe_mode] Detect bootloader rollback support at runtime esphome#13230 by @swoboda1337
- [qr_code] Allocate and free memory for QR code buffer esphome#13161 by @rootnegativ1
- [web_server][captive_portal] Change default compression from Brotli to gzip esphome#13246 by @bdraco
- [sprinkler] Fix scheduler deprecation warnings and heap churn with FixedVector esphome#13251 by @bdraco
- [dallas_temp] Use const char* for set_timeout to fix deprecation warning and heap churn esphome#13250 by @bdraco
- [api] Fix clock conflicts when multiple clients connected to homeassistant time esphome#13253 by @bdraco
- [esp32_ble_client] Reduce GATT data event logging to prevent firmware update failures esphome#13252 by @bdraco
- [ntc, resistance] change log level to verbose esphome#13268 by @mrtoy-me
- [hmac_sha256] Replace unsafe sprintf with format_hex_to esphome#13290 by @bdraco
- [hub75] Bump esp-hub75 version to 0.3.0 esphome#13243 by @stuartparmenter (breaking-change)
- [http_request] Unable to handle chunked responses esphome#7884 by @HLFCode
- [network] Fix IPAddress::str_to() to lowercase IPv6 hex digits esphome#13325 by @bdraco
- [api] Fix truncation of Home Assistant attributes longer than 255 characters esphome#13348 by @bdraco
- [core] Fix state leakage and module caching when processing multiple configurations esphome#13368 by @swoboda1337
- [x9c] Fix potentiometer unable to decrement esphome#13382 by @swoboda1337
- [wifi_info] Fix missing state when both IP+DNS or SSID+BSSID configure esphome#13385 by @bdraco
Dependency Changes
Section titled “Dependency Changes”- Bump actions/create-github-app-token from 2.2.0 to 2.2.1 esphome#12370 by @dependabot[bot]
- Bump peter-evans/create-pull-request from 7.0.11 to 8.0.0 esphome#12409 by @dependabot[bot]
- Bump codecov/codecov-action from 5.5.1 to 5.5.2 esphome#12408 by @dependabot[bot]
- Bump tornado from 6.5.2 to 6.5.3 esphome#12430 by @dependabot[bot]
- Bump actions/upload-artifact from 5.0.0 to 6.0.0 esphome#12452 by @dependabot[bot]
- Bump actions/download-artifact from 6.0.0 to 7.0.0 esphome#12449 by @dependabot[bot]
- Bump actions/cache from 4.3.0 to 5.0.1 esphome#12450 by @dependabot[bot]
- Bump github/codeql-action from 4.31.7 to 4.31.8 esphome#12451 by @dependabot[bot]
- Bump actions/cache from 4.3.0 to 5.0.1 in /.github/actions/restore-python esphome#12453 by @dependabot[bot]
- Bump ruff from 0.14.8 to 0.14.9 esphome#12448 by @dependabot[bot]
- Bump aioesphomeapi from 43.2.1 to 43.3.0 esphome#12507 by @dependabot[bot]
- Bump tornado from 6.5.3 to 6.5.4 esphome#12508 by @dependabot[bot]
- Bump github/codeql-action from 4.31.8 to 4.31.9 esphome#12524 by @dependabot[bot]
- Bump ruamel-yaml from 0.18.16 to 0.18.17 esphome#12555 by @dependabot[bot]
- Bump voluptuous from 0.15.2 to 0.16.0 esphome#12573 by @dependabot[bot]
- Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 in the docker-actions group esphome#12574 by @dependabot[bot]
- Bump ruff from 0.14.9 to 0.14.10 esphome#12572 by @dependabot[bot]
- Bump aioesphomeapi from 43.3.0 to 43.4.0 esphome#12597 by @dependabot[bot]
- Bump aioesphomeapi from 43.4.0 to 43.5.0 esphome#12599 by @dependabot[bot]
- Bump aioesphomeapi from 43.5.0 to 43.6.0 esphome#12644 by @dependabot[bot]
- Bump aioesphomeapi from 43.6.0 to 43.7.0 esphome#12699 by @dependabot[bot]
- Bump bleak from 2.0.0 to 2.1.0 esphome#12700 by @dependabot[bot]
- Bump aioesphomeapi from 43.7.0 to 43.8.0 esphome#12701 by @dependabot[bot]
- Bump aioesphomeapi from 43.8.0 to 43.9.0 esphome#12702 by @dependabot[bot]
- Bump aioesphomeapi from 43.9.0 to 43.9.1 esphome#12724 by @dependabot[bot]
- Bump bleak from 2.1.0 to 2.1.1 esphome#12804 by @dependabot[bot]
- Bump aioesphomeapi from 43.9.1 to 43.10.0 esphome#12821 by @dependabot[bot]
- Bump ruamel-yaml from 0.18.17 to 0.19.1 esphome#12768 by @dependabot[bot]
- Bump aioesphomeapi from 43.10.0 to 43.10.1 esphome#12865 by @dependabot[bot]
- Bump ruff from 0.14.10 to 0.14.11 esphome#13082 by @dependabot[bot]
- Bump esphome-dashboard from 20251013.0 to 20260110.0 esphome#13109 by @dependabot[bot]
- Bump aioesphomeapi from 43.10.1 to 43.11.0 esphome#13132 by @dependabot[bot]
- Bump aioesphomeapi from 43.11.0 to 43.12.0 esphome#13139 by @dependabot[bot]
- Bump aioesphomeapi from 43.12.0 to 43.13.0 esphome#13160 by @dependabot[bot]
- Bump github/codeql-action from 4.31.9 to 4.31.10 esphome#13173 by @dependabot[bot]
- Bump yamllint from 1.37.1 to 1.38.0 esphome#13192 by @dependabot[bot]