ESPHome 2026.1.0 - January 2026
Full list of changes

New Features

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)
Breaking Changes

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::string from 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_COOL to MODE_AUTO in 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_frame safer, make set_home_id protected 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::string esphome#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_mode without 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::string names 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
All Changelogs

BETA