ESPHome 2026.3.0 - March 2026
Full list of changes
Section titled “Full list of changes”New Features
Section titled “New Features”- [mipi_spi] Add Waveshare 1.83 v2 panel esphome#13680 by @schdro (new-feature)
- [epaper_spi] Add WeAct 3-color e-paper display support esphome#13894 by @pgolawsk (new-feature)
- [epaper_spi] Add Waveshare 7.5in e-Paper (H) esphome#13991 by @corneliusludmann (new-feature)
- [media_player] Add more commands to support Sendspin esphome#12258 by @kahrendt (new-feature)
- [audio, speaker] Add support for decoding Ogg Opus files esphome#13967 by @kahrendt (new-feature) (breaking-change)
- [esp32_camera] Add support for sensors without JPEG support esphome#9496 by @mback2k (new-feature)
- [esp32] Add engineering_sample option for ESP32-P4 esphome#14139 by @swoboda1337 (new-feature) (breaking-change)
- [wifi] Add band_mode configuration for ESP32-C5 dual-band WiFi esphome#14148 by @swoboda1337 (new-feature)
- [nrf52,logger] Early debug esphome#11685 by @tomaszduda23 (new-feature)
- [cc1101] actions to change general and tuner settings esphome#14141 by @sxtfov (new-feature)
- [hdc302x] Add new component esphome#10160 by @joshuasing (new-component) (new-feature) (new-platform)
- [version] text sensor add option
hide_hashto restore the pre-2026.1 behavior esphome#14251 by @nagyrobi (new-feature) - [esp_ldo] Add channels 1&2 support with additional option to enable it, add source voltage bypass/pass-through esphome#14177 by @p1ngb4ck (new-feature)
- [mipi_dsi] Add more Waveshare panels and comments esphome#14023 by @gtjoseph (new-feature)
- [esp32_touch] Migrate to new unified touch sensor driver (esp_driver_touch_sens) esphome#14033 by @swoboda1337 (new-feature)
- [esp32_ble] allow setting of min/max key_size and auth_req_mode esphome#7138 by @whitty (new-feature)
- [esp32_hosted] Add configurable SDIO clock frequency esphome#14319 by @deirdreobyrne (new-feature)
- [safe_mode] Add feature to explicitly mark a boot as successful esphome#14306 by @mcassaniti (new-feature)
- [esp32] Enable
execute_from_psramfor P4 esphome#14329 by @clydebarrow (new-feature) - [sen6x] Add SEN6x sensor support esphome#12553 by @mebner86 (new-component) (new-feature) (new-platform)
- [gt911] Support for interrupt line via IO Expander (resubmit) esphome#14358 by @PedanticAvenger (new-feature)
- [media_source] Add new Media Source platform component esphome#14417 by @kahrendt (new-component) (new-feature)
- [lps22] Add support for the LPS22DF variant esphome#14397 by @melak (new-feature)
- [openthread] Add tx power option esphome#14200 by @schdro (new-feature)
- [speaker] Add off on capability to media player esphome#9295 by @rwrozelle (new-feature)
- [integration] Add set method to publish and save sensor value esphome#13316 by @JiriPrchal (new-feature)
- [openthread] static log level code quality improvement esphome#14456 by @rwrozelle (new-feature) (breaking-change)
- [audio_file] New component for embedding files into firmware esphome#14434 by @kahrendt (new-component) (new-feature)
- [audio_file] Add media source platform esphome#14436 by @kahrendt (new-feature)
- [ble_nus] Add uart support esphome#14320 by @tomaszduda23 (new-feature)
- [rp2040] Fix Pico W LED pin and auto-generate board definitions for arduino-pico 5.5.x esphome#14528 by @bdraco (new-feature)
- [http_request] Make TLS buffer configurable on ESP8266 esphome#14009 by @AndreKR (new-feature)
- [uart][usb_uart] Add debug_prefix option to distinguish multiple defined uarts in log esphome#14525 by @p1ngb4ck (new-feature)
- [uart] Return
flushresult, expose timeout via config esphome#14608 by @kbx81 (new-feature) - [usb_uart] Return
flushresult, expose timeout via config esphome#14616 by @kbx81 (new-feature) - [nrf52, ota] ble and serial OTA based on mcumgr esphome#11932 by @tomaszduda23 (new-component) (new-feature) (new-platform)
- [serial_proxy] New component esphome#13944 by @kbx81 (new-component) (new-feature)
- [nextion] Add configurable HTTP parameters for TFT upload esphome#14234 by @edwardtfn (new-feature) (breaking-change)
- [rp2040] Use picotool for BOOTSEL upload and improve upload UX esphome#14483 by @bdraco (new-feature)
- [rp2040_ble] Add BLE component for RP2040/RP2350 esphome#14603 by @bdraco (new-component) (new-feature)
- [runtime_image] Add support for 8bit BMPs and fix existing issues esphome#10733 by @mahumpula (new-feature)
- [speaker_source] Add new media player esphome#14649 by @kahrendt (new-component) (new-feature) (new-platform)
- [dew_point] Add dew_point sensor component esphome#14441 by @CFlix (new-component) (new-feature) (new-platform)
- [speaker_source] Add playlist management esphome#14652 by @kahrendt (new-feature)
- [speaker_source] Add shuffle support esphome#14653 by @kahrendt (new-feature)
- [speaker_source] Add announcement pipeline esphome#14654 by @kahrendt (new-feature)
New Components
Section titled “New Components”- [runtime_image, online_image] Create runtime_image component to decode images esphome#10212 by @kahrendt (new-component)
- [hdc302x] Add new component esphome#10160 by @joshuasing (new-component) (new-feature) (new-platform)
- [sen6x] Add SEN6x sensor support esphome#12553 by @mebner86 (new-component) (new-feature) (new-platform)
- [media_source] Add new Media Source platform component esphome#14417 by @kahrendt (new-component) (new-feature)
- [audio_file] New component for embedding files into firmware esphome#14434 by @kahrendt (new-component) (new-feature)
- [nrf52, ota] ble and serial OTA based on mcumgr esphome#11932 by @tomaszduda23 (new-component) (new-feature) (new-platform)
- [serial_proxy] New component esphome#13944 by @kbx81 (new-component) (new-feature)
- [rp2040_ble] Add BLE component for RP2040/RP2350 esphome#14603 by @bdraco (new-component) (new-feature)
- [speaker_source] Add new media player esphome#14649 by @kahrendt (new-component) (new-feature) (new-platform)
- [dew_point] Add dew_point sensor component esphome#14441 by @CFlix (new-component) (new-feature) (new-platform)
New Platforms
Section titled “New Platforms”- [hdc302x] Add new component esphome#10160 by @joshuasing (new-component) (new-feature) (new-platform)
- [sen6x] Add SEN6x sensor support esphome#12553 by @mebner86 (new-component) (new-feature) (new-platform)
- [nrf52, ota] ble and serial OTA based on mcumgr esphome#11932 by @tomaszduda23 (new-component) (new-feature) (new-platform)
- [nrf52] allow to update OTA via cmd esphome#12344 by @tomaszduda23 (new-platform)
- [speaker_source] Add new media player esphome#14649 by @kahrendt (new-component) (new-feature) (new-platform)
- [dew_point] Add dew_point sensor component esphome#14441 by @CFlix (new-component) (new-feature) (new-platform)
Breaking Changes
Section titled “Breaking Changes”- [audio, speaker] Add support for decoding Ogg Opus files esphome#13967 by @kahrendt (new-feature) (breaking-change)
- [opentherm] Remove deprecated opentherm_version config option esphome#14103 by @swoboda1337 (breaking-change)
- [esp32] Add engineering_sample option for ESP32-P4 esphome#14139 by @swoboda1337 (new-feature) (breaking-change)
- [time] Eliminate libc timezone bloat (~9.5KB flash ESP32, ~2% RAM on ESP8266) esphome#13635 by @bdraco (breaking-change)
- [rp2040] Update arduino-pico framework from 3.9.4 to 5.5.0 esphome#14328 by @bdraco (breaking-change)
- [sgp30] Fix serial number truncation from 48-bit to 24-bit esphome#14478 by @swoboda1337 (breaking-change)
- [openthread] static log level code quality improvement esphome#14456 by @rwrozelle (new-feature) (breaking-change)
- [core] Move entity icon strings to PROGMEM on ESP8266 esphome#14437 by @bdraco (breaking-change)
- [core] Move device class strings to PROGMEM on ESP8266 esphome#14443 by @bdraco (breaking-change)
- [rp2040] Wrap printf/vprintf/fprintf to eliminate _vfprintf_r (~9.2 KB flash) esphome#14622 by @bdraco (breaking-change)
- [esp8266] Wrap printf/vprintf/fprintf to eliminate _vfiprintf_r (~1.6 KB flash) esphome#14621 by @bdraco (breaking-change)
- [nextion] Add configurable HTTP parameters for TFT upload esphome#14234 by @edwardtfn (new-feature) (breaking-change)
- [micronova] Add command queue esphome#12268 by @edenhaus (breaking-change)
All changes
Section titled “All changes”- [mipi_spi] Add Waveshare 1.83 v2 panel esphome#13680 by @schdro (new-feature)
- [web_server] Guard icon JSON field with USE_ENTITY_ICON esphome#13948 by @bdraco
- [analyze_memory] Fix mDNS packet buffer miscategorized as wifi_config esphome#13949 by @bdraco
- [web_server] Switch from getParam to arg API to eliminate heap allocations esphome#13942 by @bdraco
- [wifi] Deprecate wifi_ssid() in favor of wifi_ssid_to() esphome#13958 by @bdraco
- [helpers] Add heap warnings to format_hex_pretty, deprecate ethernet/web_server std::string APIs esphome#13959 by @bdraco
- [web_server] Flatten deq_push_back_with_dedup_ to inline vector realloc esphome#13968 by @bdraco
- [core] Flatten single-callsite vector realloc functions esphome#13970 by @bdraco
- [usb_host] Extract cold path from loop(), replace std::string with buffer API esphome#13957 by @bdraco
- [runtime_image, online_image] Create runtime_image component to decode images esphome#10212 by @kahrendt (new-component)
- [core] Make LOG_ENTITY_ICON a no-op when icons are compiled out esphome#13973 by @bdraco
- [nfc] Replace constant std::vector with static constexpr std::array esphome#13978 by @bdraco
- [http_request] Improve TLS logging on ESP8266 esphome#13985 by @AndreKR
- [epaper_spi] Add WeAct 3-color e-paper display support esphome#13894 by @pgolawsk (new-feature)
- [audio] Support reallocating non-empty AudioTransferBuffer esphome#13979 by @kahrendt
- [epaper_spi] Add Waveshare 7.5in e-Paper (H) esphome#13991 by @corneliusludmann (new-feature)
- [runtime_image] Remove stored RAMAllocator member esphome#13998 by @bdraco
- [online_image] Remove stored RAMAllocator member from DownloadBuffer esphome#13999 by @bdraco
- [camera, camera_encoder] Remove stored RAMAllocator member esphome#13997 by @bdraco
- [json, core] Remove stored RAMAllocator, make constructors constexpr esphome#14000 by @bdraco
- [api] Remove unused reserve from APIServer constructor esphome#14017 by @bdraco
- [display] Make COLOR_OFF and COLOR_ON inline constexpr esphome#14044 by @bdraco
- [core] Make setup_priority and component state constants constexpr esphome#14041 by @bdraco
- [pca9685] Make mode constants inline constexpr esphome#14042 by @bdraco
- [tlc59208f] Make mode constants inline constexpr esphome#14043 by @bdraco
- [core] Remove dead global_state variable esphome#14060 by @bdraco
- [core] Remove unnecessary IRAM_ATTR from yield(), delay(), feed_wdt(), and arch_feed_wdt() esphome#14063 by @bdraco
- [api] Add handshake timeout to prevent connection slot exhaustion esphome#14050 by @bdraco
- [http_request] Replace heavy STL containers with std::vector for headers esphome#14024 by @bdraco
- [core] Shrink Application::dump_config_at_ from size_t to uint16_t esphome#14053 by @bdraco
- [core] Conditionally compile setup_priority override infrastructure esphome#14057 by @bdraco
- [mqtt] Use constexpr for compile-time constants esphome#14075 by @bdraco
- [web_server] Move climate static traits to DETAIL_ALL only esphome#14066 by @bdraco
- [bluetooth_proxy][esp32_ble_client][esp32_ble_server] Use constexpr for compile-time constants esphome#14073 by @bdraco
- [api] Use constexpr for compile-time constant esphome#14072 by @bdraco
- [packet_transport] Use constexpr for compile-time constants esphome#14074 by @bdraco
- [remote_base] Use constexpr for compile-time constants esphome#14076 by @bdraco
- [core] Use constexpr for compile-time constants esphome#14071 by @bdraco
- [http_request] Replace std::map with std::vector in action template esphome#14026 by @bdraco
- [nfc] Use constexpr for compile-time constants esphome#14077 by @bdraco
- [pn7160] Use constexpr for compile-time constants esphome#14078 by @bdraco
- [bluetooth_proxy] Use constexpr for remaining compile-time constants esphome#14080 by @bdraco
- [audio] Add support for sinking via an arbitrary callback esphome#14035 by @kahrendt
- [media_player] Add more commands to support Sendspin esphome#12258 by @kahrendt (new-feature)
- [mdns] add Sendspin advertisement support esphome#14013 by @kahrendt
- [audio, speaker] Add support for decoding Ogg Opus files esphome#13967 by @kahrendt (new-feature) (breaking-change)
- [esp32_camera] Add support for sensors without JPEG support esphome#9496 by @mback2k (new-feature)
- [esp32_ble_server] add test for lambda characteristic esphome#14091 by @Rapsssito
- [socket] Log error when UDP socket requested on LWIP TCP-only platforms esphome#14089 by @bdraco
- [logger] Replace LogListener virtual interface with LogCallback struct esphome#14084 by @bdraco
- [core] Devirtualize call_loop() and mark_failed() in Component esphome#14083 by @bdraco
- [cse7761] Use constexpr for compile-time constants esphome#14081 by @bdraco
- [ci] Update lint message to recommend constexpr over static const esphome#14099 by @bdraco
- [e131] Replace std::map with std::vector for universe tracking esphome#14087 by @bdraco
- [web_server] Reduce set_json_id flash and stack usage esphome#14029 by @bdraco
- [core] Optimize WarnIfComponentBlockingGuard::finish() hot path esphome#14040 by @bdraco
- [audio] Support decoding audio directly from flash esphome#14098 by @kahrendt
- [opentherm] Remove deprecated opentherm_version config option esphome#14103 by @swoboda1337 (breaking-change)
- [esp32] Remove deprecated add_idf_component() parameters and IDF component refresh option esphome#14105 by @swoboda1337
- [i2c] Remove deprecated stop parameter overloads and readv/writev methods esphome#14106 by @swoboda1337
- [audio] Disable FLAC CRC validation to improve decoding effeciancy esphome#14108 by @kahrendt
- [json] Add SerializationBuffer for stack-first JSON serialization esphome#13625 by @bdraco
- [core] Use constexpr for PROGMEM arrays esphome#14127 by @bdraco
- [esp8266][web_server] Use constexpr for PROGMEM arrays in codegen esphome#14128 by @bdraco
- [core] Use constexpr for hand-written PROGMEM arrays in C++ esphome#14129 by @bdraco
- [e131] Drain all queued packets per loop iteration esphome#14133 by @bdraco
- [esp32] Bump ESP-IDF to 5.5.3 esphome#14122 by @swoboda1337
- [esp32] Bump ESP-IDF to 5.5.3.1, revert GATTS workaround esphome#14147 by @bdraco
- [esp32] Add engineering_sample option for ESP32-P4 esphome#14139 by @swoboda1337 (new-feature) (breaking-change)
- [wifi] Add band_mode configuration for ESP32-C5 dual-band WiFi esphome#14148 by @swoboda1337 (new-feature)
- [e131] Remove dead LWIP TCP code path from loop() esphome#14155 by @swoboda1337
- [safe_mode] Extract RTC_KEY constant for shared use esphome#14121 by @pgolawsk
- [nrf52,logger] Early debug esphome#11685 by @tomaszduda23 (new-feature)
- [logger] Fix loop disable optimization using wrong preprocessor guard esphome#14158 by @bdraco
- [core] Deduplicate base64 encode/decode logic esphome#14143 by @bdraco
- [usb_host] Implement disable_loop/enable_loop pattern for USB components esphome#14163 by @bdraco
- [api] Warn when clients connect with outdated API version esphome#14145 by @bdraco
- [api,ota,captive_portal] Fix fd leaks and clean up socket_ip_loop_monitored setup paths esphome#14167 by @bdraco
- [uptime] Use scheduler millis_64() for rollover-safe uptime tracking esphome#14170 by @bdraco
- [logger] Reduce UART driver heap waste on ESP32 esphome#14168 by @bdraco
- [api] Write protobuf encode output to pre-sized buffer directly esphome#14018 by @bdraco
- [mqtt] add missing precision in HA autodiscovery esphome#14010 by @Rapsssito
- [cc1101] actions to change general and tuner settings esphome#14141 by @sxtfov (new-feature)
- [epaper_spi] Fix color mapping for weact esphome#14134 by @clydebarrow
- [nrf52] print line number after crash in logs esphome#14165 by @tomaszduda23
- [ci] Suggest StringRef instead of std::string_view esphome#14183 by @bdraco
- [scheduler] Reduce lock acquisitions in process_defer_queue_ esphome#14107 by @bdraco
- [scheduler] Use relaxed memory ordering for atomic reads under lock esphome#14140 by @bdraco
- [scheduler] De-template and consolidate scheduler helper functions esphome#14164 by @bdraco
- [platformio] Add exponential backoff and session reset to download retries esphome#14191 by @bdraco
- [nextion] Add error log for failed HTTP status during TFT upload esphome#14190 by @edwardtfn
- [web_server_base] Remove unnecessary Component inheritance and modernize esphome#14204 by @bdraco
- [core] Conditionally compile get_loop_priority with USE_LOOP_PRIORITY esphome#14210 by @bdraco
- [http_request] Replace
std::list<Header>withstd::vectorinperform()chain esphome#14027 by @bdraco - [logger] Make tx_buffer_ compile-time sized esphome#14205 by @bdraco
- [libretiny] Tune oversized lwIP defaults for ESPHome esphome#14186 by @bdraco
- [core] Move CONF_OUTPUT_POWER into const.py esphome#14201 by @schdro
- [binary_sensor] Conditionally compile filter infrastructure esphome#14215 by @bdraco
- [sensor] Conditionally compile filter infrastructure esphome#14214 by @bdraco
- [text_sensor] Conditionally compile filter infrastructure esphome#14213 by @bdraco
- [openthread_info] Optimize: Devirtualize/unify esphome#14208 by @schdro
- [openthread] Add Thread version DEBUG trace esphome#14196 by @schdro
- [openthread] Refactor to optimize and match code rules esphome#14156 by @schdro
- [logger] Use subtraction-based line number formatting to avoid division esphome#14219 by @bdraco
- [core] Fix multiline log continuations without leading whitespace esphome#14217 by @swoboda1337
- [hdc302x] Add new component esphome#10160 by @joshuasing (new-component) (new-feature) (new-platform)
- [core] Avoid expensive modulo in LockFreeQueue for non-power-of-2 sizes esphome#14221 by @bdraco
- [remote_transmitter/remote_receiver] Rename _esp32.cpp to _rmt.cpp esphome#14226 by @swoboda1337
- [http_request] Retry update check on startup until network is ready esphome#14228 by @swoboda1337
- [esp32,core] Move CONF_ENABLE_OTA_ROLLBACK to core esphome#14231 by @tomaszduda23
- [nrf52,logger] generate crash magic in python esphome#14173 by @tomaszduda23
- [nfc] Fix logging tag for nfc helpers esphome#14235 by @jamesmyatt
- [core] Add pow10_int helper, replace powf in normalize_accuracy and sensor filters esphome#14114 by @bdraco
- [core] Move build_info_data.h out of application.h to fix incremental rebuilds esphome#14230 by @swoboda1337
- [version] Use C++17 nested namespace syntax esphome#14240 by @bdraco
- [switch] Use C++17 nested namespace syntax esphome#14241 by @bdraco
- [text] Use C++17 nested namespace syntax esphome#14242 by @bdraco
- [text_sensor] Use C++17 nested namespace syntax esphome#14243 by @bdraco
- [usb_host] Use C++17 nested namespace syntax esphome#14244 by @bdraco
- [i2c] Use C++17 nested namespace syntax esphome#14245 by @bdraco
- [ethernet] Use C++17 nested namespace syntax esphome#14246 by @bdraco
- [cse7766] Use C++17 nested namespace syntax esphome#14247 by @bdraco
- [network] Use C++17 nested namespace syntax esphome#14248 by @bdraco
- [esp32] Improve ESP32-P4 engineering sample warning message esphome#14252 by @swoboda1337
- [version] text sensor add option
hide_hashto restore the pre-2026.1 behavior esphome#14251 by @nagyrobi (new-feature) - [core] Prevent inlining of mark_matching_items_removed_locked_ on Thumb-1 esphome#14256 by @bdraco
- [esp32_ble_server] add max_clients option for multi-client support esphome#14239 by @RAR
- [web_server_idf] Pass std::function by rvalue reference esphome#14262 by @bdraco
- [api] Pass std::function by rvalue reference in state subscriptions esphome#14261 by @bdraco
- [core] Pass std::function by rvalue reference in scheduler esphome#14260 by @bdraco
- [core] Use custom deleter for SchedulerItem unique_ptr to prevent destructor inlining esphome#14258 by @bdraco
- [dlms_meter/kamstrup_kmp] Replace powf with pow10_int esphome#14125 by @bdraco
- [light] Add additional light effect test cases esphome#14266 by @bdraco
- [light] Replace std::lerp with lightweight lerp_fast in LightColorValues::lerp esphome#14238 by @bdraco
- [sensirion_common] Move sen5x’s sensirion_convert_to_string_in_place() function to sensirion_common esphome#14269 by @mikelawrence
- [config] Improve dimensions validation and fix online_image resize aspect ratio esphome#14274 by @swoboda1337
- [web_server] Fix uptime display overflow after ~24.8 days esphome#13739 by @bdraco
- Update webserver local assets to 20260225-155043 esphome#14275 by @esphomebot
- [ac_dimmer] Use a shared ESP32 GPTimer for multiple dimmers esphome#13523 by @Szpadel
- [core] more accurate check for leap year and valid day_of_month esphome#14197 by @ximex
- [api] Split ProtoVarInt::parse into 32-bit and 64-bit phases esphome#14039 by @bdraco
- [lcd_base] Fix millis() truncation to uint8_t esphome#14289 by @swoboda1337
- [shelly_dimmer] Fix millis overflow in ACK timeout check esphome#14288 by @swoboda1337
- [bl0942] Fix millis overflow in packet timeout check esphome#14285 by @swoboda1337
- [light] Fix millis overflow in transition progress and flash timing esphome#14292 by @swoboda1337
- [ble_presence] Fix millis overflow in presence timeout check esphome#14293 by @swoboda1337
- [lightwaverf] Fix millis overflow in send timeout check esphome#14294 by @swoboda1337
- [pn532] Replace millis zero sentinel with optional esphome#14295 by @swoboda1337
- [ld2420] Fix buffer overflows in command response parsing esphome#14297 by @swoboda1337
- [gp8403] Fix enum size mismatch in voltage register write esphome#14296 by @swoboda1337
- [mcp2515] Fix millis overflow in set_mode_ timeout esphome#14298 by @swoboda1337
- [wled] Fix millis overflow in blank timeout esphome#14300 by @swoboda1337
- [logger] Mark Logger and LoggerMessageTrigger as final esphome#14291 by @bdraco
- [mdns] Mark MDNSComponent as final esphome#14290 by @bdraco
- [ota] Mark OTA backend and component leaf classes as final esphome#14287 by @bdraco
- [api] Mark ListEntitiesIterator and InitialStateIterator as final esphome#14284 by @bdraco
- [web_server] Mark classes as final esphome#14283 by @bdraco
- [safe_mode] Mark SafeModeComponent and SafeModeTrigger as final esphome#14282 by @bdraco
- [core] ESP32: massively reduce main loop socket polling overhead by replacing select() esphome#14249 by @bdraco
- [ci] Add undocumented C++ API change checkbox and auto-label esphome#14317 by @bdraco
- Add socket compile tests for libretiny platforms esphome#14314 by @bdraco
- [core] Use placement new for global Application instance esphome#14052 by @bdraco
- [wifi] Use memcpy-based insertion sort for scan results esphome#13960 by @bdraco
- [libretiny] Use -Os optimization for ESPHome source on BK72xx (SDK remains at -O1) esphome#14322 by @bdraco
- [libretiny] Use C++17 nested namespace syntax esphome#14325 by @bdraco
- [esp_ldo] Add channels 1&2 support with additional option to enable it, add source voltage bypass/pass-through esphome#14177 by @p1ngb4ck (new-feature)
- [api] Add DEFROSTING to ClimateAction esphome#13976 by @lyubomirtraykov
- Update webserver local assets to 20260226-220330 esphome#14330 by @esphomebot
- [mipi_dsi] Add more Waveshare panels and comments esphome#14023 by @gtjoseph (new-feature)
- [time] Eliminate libc timezone bloat (~9.5KB flash ESP32, ~2% RAM on ESP8266) esphome#13635 by @bdraco (breaking-change)
- [web_server_idf] Prefer make_unique_for_overwrite for noninit recv buffer esphome#14279 by @bdraco
- [rp2040] Update arduino-pico framework from 3.9.4 to 5.5.0 esphome#14328 by @bdraco (breaking-change)
- [esp8266] Remove forced scanf linkage to save ~8KB flash esphome#13678 by @bdraco
- [usb_uart] Performance, correctness and reliability improvements esphome#14333 by @kbx81
- [esp32_touch] Migrate to new unified touch sensor driver (esp_driver_touch_sens) esphome#14033 by @swoboda1337 (new-feature)
- [esp32_ble] allow setting of min/max key_size and auth_req_mode esphome#7138 by @whitty (new-feature)
- [core] Extend fast select optimization to LibreTiny platforms esphome#14254 by @bdraco
- [audio] Bump microOpus to v0.3.4 esphome#14346 by @kahrendt
- [mdns] Update espressif/mdns to v1.10.0 esphome#14338 by @bdraco
- [esp32_hosted] Add configurable SDIO clock frequency esphome#14319 by @deirdreobyrne (new-feature)
- [core] Add millis_64() HAL function with native ESP32 implementation esphome#14339 by @bdraco
- [wifi] Remove stale TODO comment for ESP8266 callback deferral esphome#14347 by @bdraco
- [wifi] Use direct SDK APIs for LibreTiny SSID retrieval esphome#14349 by @bdraco
- [safe_mode] Add feature to explicitly mark a boot as successful esphome#14306 by @mcassaniti (new-feature)
- [ci] Skip memory impact target branch build when tests don’t exist esphome#14316 by @bdraco
- [wifi] Add LibreTiny component test configs esphome#14351 by @bdraco
- [core] Fix Application asm label for Mach-O using USER_LABEL_PREFIX esphome#14334 by @bdraco
- [host] Use native clock_gettime for millis_64() esphome#14340 by @bdraco
- [color] Use integer math in Color::gradient to reduce code size esphome#14354 by @bdraco
- [esp32] Enable
execute_from_psramfor P4 esphome#14329 by @clydebarrow (new-feature) - [zephyr] Use native k_uptime_get() for millis_64() esphome#14350 by @bdraco
- [component] Devirtualize call_dump_config esphome#14355 by @bdraco
- [ci] Add PR title format check esphome#14345 by @swoboda1337
- [rp2040] Use native time_us_64() for millis_64() esphome#14356 by @bdraco
- [sht3xd] Allow sensors that don’t support serial number read esphome#14224 by @lwratten
- [sen6x] Add SEN6x sensor support esphome#12553 by @mebner86 (new-component) (new-feature) (new-platform)
- [ci] Fix C++ unit tests missing time component dependency esphome#14364 by @bdraco
- [gps] Fix codegen deadlock when automations reference sibling sensors esphome#14365 by @swoboda1337
- [web_server] Add climate preset, fan mode, and humidity support esphome#14061 by @rwagoner
- [sen6x] Fix test sensor ID collisions with sen5x esphome#14367 by @bdraco
- [esp32] Wrap printf/vprintf/fprintf to eliminate _vfprintf_r (~11 KB flash) esphome#14362 by @bdraco
- [gt911] Support for interrupt line via IO Expander (resubmit) esphome#14358 by @PedanticAvenger (new-feature)
- [core] Make register_component protected, remove runtime checks esphome#14371 by @bdraco
- [api] Outline keepalive ping logic from APIConnection::loop() esphome#14374 by @bdraco
- [core] Inline set_component_state_ and use it in Application esphome#14369 by @bdraco
- [core] Move CONF_STOP_BITS, CONF_DATA_BITS, CONF_PARITY to const.py esphome#14379 by @bdraco
- [ld2410][ld2412] Fix signed char causing incorrect distance values esphome#14380 by @bdraco
- [uart] Replace wake-on-RX task+queue with direct ISR callback esphome#14382 by @bdraco
- [ci] Fix TypeError in ci-custom.py when POST lint checks fail esphome#14378 by @bdraco
- [ld2450] Use atan2f for angle calculation esphome#14388 by @bdraco
- [ld2450] Use integer dedup for direction text sensor updates esphome#14386 by @bdraco
- [ld2450] Single-pass zone target counting esphome#14387 by @bdraco
- [core] Extract set_status_flag_ helper to deduplicate status_set methods esphome#14384 by @bdraco
- [uart] Enable wake-on-RX by default on ESP32 esphome#14391 by @bdraco
- [api] Use StringRef for user service string arguments esphome#13974 by @bdraco
- [preferences] Reduce heap churn with small inline buffer optimization esphome#13259 by @bdraco
- [time,api] Send pre-parsed timezone struct over protobuf esphome#14233 by @bdraco
- [rtttl] improve comments Part 2 esphome#13971 by @ximex
- [openthread] Disable default enabled OT diag code esphome#14399 by @schdro
- [api] Remove virtual destructor from ProtoMessage esphome#14393 by @bdraco
- [ld2410] Add UART mock integration test for LD2410 component esphome#14377 by @bdraco
- [core] Wake main loop from ISR in enable_loop_soon_any_context() esphome#14383 by @bdraco
- [openthread] Disable default enabled OT console build esphome#14390 by @schdro
- Create integration tests for modbus esphome#14395 by @exciton
- Use cached files on network errors in external_files esphome#14055 by @Copilot
- [core] Move millis_64 rollover tracking out of Scheduler esphome#14360 by @bdraco
- [core] Auto-wrap static strings in PROGMEM on ESP8266 via TemplatableValue esphome#13885 by @bdraco
- [light] Replace powf gamma with pre-computed lookup tables (LUT) esphome#14123 by @bdraco
- [web_server] Avoid temporary std::string allocations in request parameter parsing esphome#14366 by @bdraco
- [core] Deduplicate ControllerRegistry notify dispatch loop esphome#14394 by @bdraco
- [light] Resolve effect names to indices at codegen time esphome#14265 by @bdraco
- [socket] Devirtualize socket abstraction layer esphome#14398 by @bdraco
- [core] Compile-time detection of loop() overrides esphome#14405 by @bdraco
- [mcp23016] Fix register access to use 16-bit paired transactions esphome#13676 by @netixx
- [socket] Fix pre-existing bugs found during socket devirtualization review esphome#14404 by @bdraco
- [core] Fix compile-time loop() detection for multiple inheritance esphome#14411 by @bdraco
- [core] Add ESP8266 support to wake_loop_any_context() esphome#14392 by @bdraco
- [core] Eliminate __udivdi3 in millis() on ESP32 and RP2040 esphome#14409 by @bdraco
- [const] Move CONF_WATCHDOG esphome#14415 by @LinoSchmidt
- [tests] Fix flaky log assertion race in oversized payload tests esphome#14414 by @bdraco
- [ci] Skip PR title check for dependabot PRs esphome#14418 by @swoboda1337
- [media_source] Add new Media Source platform component esphome#14417 by @kahrendt (new-component) (new-feature)
- [lps22] Add support for the LPS22DF variant esphome#14397 by @melak (new-feature)
- [ld2450] Clear all related sensors when a target is not being tracked esphome#13602 by @ccutrer
- [core] Inline HighFrequencyLoopRequester::is_high_frequency() esphome#14423 by @bdraco
- [openthread] Add tx power option esphome#14200 by @schdro (new-feature)
- [const][uart][usb_uart][weikai][core] Move constants to components/const esphome#14430 by @clydebarrow
- [speaker] Add off on capability to media player esphome#9295 by @rwrozelle (new-feature)
- [socket] Cache lwip_sock pointers and inline ready() chain esphome#14408 by @bdraco
- [core] Pack entity string properties into PROGMEM-indexed uint8_t fields esphome#14171 by @bdraco
- [ci] Add lint check to prevent powf in core and base entity platforms esphome#14126 by @bdraco
- [bk72xx] Fix ~100ms loop stalls by raising main task priority esphome#14420 by @bdraco
- [core] Inline trivial Component state accessors esphome#14425 by @bdraco
- [ci] Add code-owner-approved label workflow esphome#14421 by @bdraco
- [usb_uart] Don’t claim interrupt interface for ch34x esphome#14431 by @clydebarrow
- [rtttl] add new codeowner esphome#14440 by @ximex
- [tests] Fix integration test race condition in PlatformIO cache init esphome#14435 by @swoboda1337
- [globals] Fix handling of string booleans in yaml esphome#14447 by @jesserockz
- [core] add a StaticTask helper to manage task lifecycles esphome#14446 by @kahrendt
- [core] Replace custom esphome::optional with std::optional esphome#14368 by @bdraco
- [media_source] Clarify threading contract esphome#14433 by @kahrendt
- [core] improve help text for —device option, mention
OTAesphome#14445 by @tvogel - [integration] Add set method to publish and save sensor value esphome#13316 by @JiriPrchal (new-feature)
- [runtime_stats] Use micros() for accurate per-component timing esphome#14452 by @bdraco
- [core] Call loop() directly in main loop, bypass call() indirection esphome#14451 by @bdraco
- [ld2412] Add integration tests with mock UART esphome#14448 by @bdraco
- [sx127x] Fix preamble MSB register always written as zero esphome#14457 by @swoboda1337
- [remote_base][remote_receiver] Fix OOB access in pronto comparison and RMT buffer allocation esphome#14459 by @swoboda1337
- [pn7160][pn7150][pn532] Fix tag purge skipping, NDEF bounds check, and NDEF length byte order esphome#14460 by @swoboda1337
- [fingerprint_grow] Fix OOB write and uint16 overflow esphome#14462 by @swoboda1337
- [ld2420] Fix buffer overflows in simple mode, energy mode, and calibration esphome#14458 by @swoboda1337
- [mixer][resampler][speaker] Use core static task manager esphome#14454 by @kahrendt
- [inkplate][ezo_pmp][ezo][packet_transport] Fix use-after-free bugs esphome#14467 by @swoboda1337
- [esp32_improv][rf_bridge][esp32_ble_server][display][lvgl][pipsolar] Fix unsigned integer underflows esphome#14466 by @swoboda1337
- [ci] Add missing issues: write permission to codeowner approval workflow esphome#14477 by @bdraco
- [ds2484] Fix read64() using uint8_t accumulator instead of uint64_t esphome#14479 by @swoboda1337
- [sgp30] Fix serial number truncation from 48-bit to 24-bit esphome#14478 by @swoboda1337 (breaking-change)
- [zwave_proxy] Fix uint8_t overflow for buffer index and frame end esphome#14480 by @swoboda1337
- [ai] Add docs note about keeping component index pages in sync esphome#14465 by @bharvey88
- [tests] Fix flaky uart_mock integration tests esphome#14476 by @bdraco
- [ci] Fix codeowner approval label workflow for fork PRs esphome#14490 by @bdraco
- [packet_transport] Minimise heap allocations esphome#14482 by @clydebarrow
- [openthread] Cache is_connected() for cheap inline access esphome#14484 by @rwrozelle
- [network] Inline network::is_connected() and ethernet is_connected() esphome#14464 by @bdraco
- [api] Devirtualize frame helper calls when protocol is fixed at compile time esphome#14468 by @bdraco
- [dfrobot_sen0395][sx1509] Fix structural bugs esphome#14494 by @swoboda1337
- [veml7700] Fix initial settling timeout using raw enum instead of milliseconds esphome#14487 by @swoboda1337
- [ssd1322][ssd1325][ssd1327] Fix nibble mask bug in grayscale draw_pixel esphome#14496 by @swoboda1337
- [sht4x][grove_tb6612fng] Fix logic bugs esphome#14497 by @swoboda1337
- [openthread] static log level code quality improvement esphome#14456 by @rwrozelle (new-feature) (breaking-change)
- [dfplayer][ufire_ise][ufire_ec][qmp6988][atm90e26] Fix wrong operators and masks esphome#14491 by @swoboda1337
- [pn532_spi] Fix preamble check logic and OOB access when full_len is zero esphome#14486 by @swoboda1337
- [ota] Devirtualize OTA backend calls esphome#14473 by @bdraco
- [GPS] fix component Python declaration to match C++ implementation esphome#14519 by @oarcher
- [sim800l][tormatic][tx20] Fix OOB access, div-by-zero, and off-by-one esphome#14512 by @swoboda1337
- [rc522][sml][kamstrup_kmp] Fix buffer bounds checks esphome#14515 by @swoboda1337
- [haier][bedjet][vbus][lightwaverf] Fix buffer overflow bugs esphome#14493 by @swoboda1337
- [alpha3][mpu6886][emc2101] Fix copy-paste bugs esphome#14492 by @swoboda1337
- [usb_cdc_acm][scd4x][pulse_counter][mopeka_std_check][ruuvi_ble] Fix assorted one-liner bugs esphome#14495 by @swoboda1337
- [audio_file] New component for embedding files into firmware esphome#14434 by @kahrendt (new-component) (new-feature)
- [wled][lcd_base][touchscreen][ee895] Fix off-by-one, buffer overrun, empty deref, and uninitialized pointers esphome#14513 by @swoboda1337
- [nfc] Fix off-by-one in NDEF message parsing esphome#14485 by @swoboda1337
- [wifi] Cache is_connected() for cheap inline access esphome#14463 by @bdraco
- [xiaomi_ble][pvvx_mithermometer][atc_mithermometer] Add BLE service data bounds checks esphome#14514 by @swoboda1337
- [modbus] Fix timing bugs and better adhere to spec esphome#8032 by @exciton
- [usb_uart][nextion][feedback][whirlpool][packet_transport][he60r][hc8][runtime_stats] Fix millis() wrapping bugs esphome#14474 by @swoboda1337
- [cse7761][ads1115][tmp1075][matrix_keypad][seeed_mr60bha2] Fix assorted bugs esphome#14518 by @swoboda1337
- [audio] Extract detect_audio_file_type helper esphome#14507 by @kahrendt
- [rp2040] Update arduino-pico to 5.5.1 and fix WiFi AP fallback esphome#14500 by @bdraco
- [st7735][st7789v][st7920] Fix display buffer overflows and dead code esphome#14511 by @swoboda1337
- [uart] init tx_pin, rx_pin, flow control, rx_buffer_size esphome#14524 by @tomaszduda23
- [openthread][ethernet][wifi] Add IPv6 address array bounds assert esphome#14488 by @swoboda1337
- [audio_file] Add media source platform esphome#14436 by @kahrendt (new-feature)
- [ethernet] add get_eth_handle() function esphome#14527 by @Gnuspice
- [host] Add null checks for getenv and fopen in preferences esphome#14531 by @swoboda1337
- [bluetooth_proxy] Add null checks for api_connection esphome#14536 by @swoboda1337
- [ble_nus] Add uart support esphome#14320 by @tomaszduda23 (new-feature)
- [sx127x][sx126x][max6956] Fix null deref, unterminated string, and pin bounds check esphome#14529 by @swoboda1337
- [mipi_dsi][e131] Fix semaphore cast, missing return, and light count overread esphome#14530 by @swoboda1337
- [esp32] Fix wrong variable usage in P4 pin validation error msg esphome#14539 by @ximex
- [esp32] Fix ESP32-S3 pin validation error message esphome#14540 by @ximex
- [nrf52] prepare for usb cdc esphome#14174 by @tomaszduda23
- [core] Move entity icon strings to PROGMEM on ESP8266 esphome#14437 by @bdraco (breaking-change)
- [core] Replace Application name/friendly_name std::string with StringRef esphome#14532 by @bdraco
- [rp2040] Fix Pico W LED pin and auto-generate board definitions for arduino-pico 5.5.x esphome#14528 by @bdraco (new-feature)
- [hlk_fm22x] Fix oversized response rejection breaking GET_ALL_FACE_IDS esphome#14506 by @bdraco
- [ci] Use pull_request_target for codeowner approved label workflow esphome#14561 by @bdraco
- [sgp4x] Fix undefined behavior from mutating entity config at runtime esphome#14562 by @bdraco
- [rtttl] Add AudioStreamInfo and set volume esphome#14439 by @ximex
- [core] Move device class strings to PROGMEM on ESP8266 esphome#14443 by @bdraco (breaking-change)
- [tm1638][rp2040_pio_led_strip][atm90e32] Fix bounds checks and off-by-one esphome#14559 by @swoboda1337
- [api] Devirtualize protobuf encode/calculate_size esphome#14449 by @bdraco
- [multiple] Add default initializers to uninitialized member variables esphome#14556 by @swoboda1337
- [esp32_ble_server][espnow][time] Fix logic bugs esphome#14553 by @swoboda1337
- [multiple] Fix cast/operator precedence bugs esphome#14560 by @swoboda1337
- [noblex] Fix IR receive losing decoded bytes between calls esphome#14533 by @swoboda1337
- [light] Fix unsigned underflow in addressable scan effect esphome#14546 by @swoboda1337
- [pid][nextion][pn532_i2c][pipsolar] Fix copy-paste and logic bugs esphome#14551 by @swoboda1337
- [esp32_ble_server][weikai][ade7880] Fix copy-paste bugs esphome#14552 by @swoboda1337
- [multiple] Fix assorted medium-severity bugs esphome#14555 by @swoboda1337
- [bmp581_base][bl0906] Fix 24-bit sign extension bugs esphome#14558 by @swoboda1337
- [shelly_dimmer][lvgl][seeed_mr60fda2][packet_transport] Fix buffer bounds checks esphome#14534 by @swoboda1337
- [ltr501][pvvx_mithermometer][smt100] Convert static locals to instance members esphome#14569 by @swoboda1337
- [iaqcore][scd30][sen21231][beken_spi_led_strip] Fix uninitialized variables and missing error checks esphome#14568 by @swoboda1337
- [lightwaverf] Fix ISR safety issues esphome#14563 by @swoboda1337
- [mipi_rgb] Fix byte order and dirty bounds in fill() esphome#14537 by @swoboda1337
- [http_request] Make TLS buffer configurable on ESP8266 esphome#14009 by @AndreKR (new-feature)
- [climate][haier][template][core] Relocate CONF_CURRENT_TEMPERATURE to general const file esphome#14503 by @rsre
- [api] Sync api.proto from aioesphomeapi esphome#14579 by @bdraco
- [openthread] move esp functions into correct file esphome#14588 by @rwrozelle
- [nrf52][zephyr] support for multi on rate callbacks esphome#14557 by @tomaszduda23
- [uart] Add error message when initializing UART with unsupported configuration esphome#13229 by @sredman
- [uart] Fully enable raw mode with host serial esphome#14573 by @puddly
- [captive_portal] Enable support for RP2040 esphome#14505 by @bdraco
- [bluetooth_proxy] Add BLE connection parameters API esphome#14577 by @bdraco
- [core] Merge set_name + set_entity_strings into configure_entity_ esphome#14444 by @bdraco
- [api] Single-pass protobuf encode for BLE proxy advertisements esphome#14575 by @bdraco
- [api] Inline APIServer::is_connected() for common no-arg path esphome#14574 by @bdraco
- [core] Inline status_clear_warning/error fast path esphome#14571 by @bdraco
- [component] Fix components for compatibility with stricter compilers esphome#14545 by @diorcety
- [uart][usb_uart] Add debug_prefix option to distinguish multiple defined uarts in log esphome#14525 by @p1ngb4ck (new-feature)
- [ci] Add RP2350 to PR template test environment esphome#14599 by @bdraco
- [ld2420] Add integration tests with mock UART esphome#14471 by @bdraco
- [i2s_audio] Include legacy driver IDF component when use_legacy is set esphome#14613 by @bdraco
- [api] Fix value-initialization of DeviceInfoResponse esphome#14615 by @bdraco
- [vbus][rf_bridge][sensirion_common] Add buffer size guards esphome#14597 by @swoboda1337
- [api] Add force proto field option to skip zero checks on hot path esphome#14610 by @bdraco
- [uart] Return
flushresult, expose timeout via config esphome#14608 by @kbx81 (new-feature) - [usb_uart] Return
flushresult, expose timeout via config esphome#14616 by @kbx81 (new-feature) - [nrf52, ota] ble and serial OTA based on mcumgr esphome#11932 by @tomaszduda23 (new-component) (new-feature) (new-platform)
- [api] Inline varint and encode_varint_raw fast paths for hot loop performance esphome#14607 by @bdraco
- [nrf52] allow to update OTA via cmd esphome#12344 by @tomaszduda23 (new-platform)
- [serial_proxy] New component esphome#13944 by @kbx81 (new-component) (new-feature)
- [usb_uart] ch34x chip-type & port-count enumeration esphome#14544 by @p1ngb4ck
- [ethernet] Fix commit 3f700bac1cebf7eb6ff3b20a87d8c8af5cb9fc41 esphome#14618 by @diorcety
- [ble_nus] make ble_nus timeout shorter than watchdog esphome#14619 by @tomaszduda23
- [ci] Add medium-pr label for PRs with ≤100 lines changed esphome#14628 by @bdraco
- [mixer_speaker] Add task debounce esphome#14581 by @kbx81
- [i2s_audio] Fix mono sample swap and block 8-bit mono on ESP32 esphome#14516 by @swoboda1337
- [esp32_ble] Optimize BLE event hot path performance esphome#14627 by @bdraco
- [scheduler] Use
std::atomic<uint8_t>instead ofstd::atomic<bool>for remove flag esphome#14626 by @bdraco - [api] Inline fast path of try_to_clear_buffer esphome#14630 by @bdraco
- [core] Skip zero-initialization of StaticVector data array esphome#14592 by @bdraco
- [esp32_ble] Inline ble_addr_to_uint64 to eliminate call overhead esphome#14591 by @bdraco
- [modbus] Fix timeout for non-hardware UARTs (e.g., USB UART) esphome#14614 by @bdraco
- [rp2040] Wrap printf/vprintf/fprintf to eliminate _vfprintf_r (~9.2 KB flash) esphome#14622 by @bdraco (breaking-change)
- [esp8266] Wrap printf/vprintf/fprintf to eliminate _vfiprintf_r (~1.6 KB flash) esphome#14621 by @bdraco (breaking-change)
- [ld2450] Add integration tests with mock UART esphome#14611 by @bdraco
- [api] Bump noise-c to 0.1.11 esphome#14632 by @bdraco
- [const] Move CONF_ENABLE_FULL_PRINTF to const.py esphome#14633 by @bdraco
- [core] Pack entity flags into configure_entity_() and protect setters esphome#14564 by @bdraco
- [socket] Add socket wake support for RP2040 esphome#14498 by @bdraco
- [api] Skip state_action_() call in noise data path esphome#14629 by @bdraco
- [nextion] Add configurable HTTP parameters for TFT upload esphome#14234 by @edwardtfn (new-feature) (breaking-change)
- [multiple] Add default initializers to uninitialized member variables esphome#14636 by @swoboda1337
- [multiple] Add array bounds checks esphome#14635 by @swoboda1337
- [ci] Match symbols with changed signatures in memory impact analysis esphome#14600 by @bdraco
- [ci-custom] Directions on constant hoisting esphome#14637 by @clydebarrow
- [multiple] Add division by zero guards esphome#14634 by @swoboda1337
- [multiple] Fix undefined behavior across components esphome#14639 by @swoboda1337
- [runtime_image][st7701s] Fix BMP decoder and LCD init bugs esphome#14663 by @swoboda1337
- [api][at581x][vl53l0x] Fix bounds check issues in 3 components esphome#14660 by @swoboda1337
- [hmc5883l][mmc5603][honeywellabp2][xgzp68xx][max9611] Fix uninitialized members esphome#14659 by @swoboda1337
- [wifi][captive_portal][heatpumpir][es8388] Fix wrong behavior in 4 components esphome#14657 by @swoboda1337
- [multiple] Remove unnecessary heap allocations in 4 components esphome#14656 by @swoboda1337
- [multiple] Fix crashes from malformed external input (batch 2) esphome#14651 by @swoboda1337
- [multiple] Fix wrong behavior in 5 components esphome#14647 by @swoboda1337
- [multiple] Fix minor bugs in 8 components esphome#14650 by @swoboda1337
- [demo] Fix alarm control panel auth bypass when code is omitted esphome#14645 by @swoboda1337
- [ble_scanner] Escape special characters in JSON output esphome#14664 by @swoboda1337
- [multiple] Fix wrong behavior in sensor calculations and drivers esphome#14644 by @swoboda1337
- [api][serial_proxy] Fix dangling pointer esphome#14640 by @kbx81
- [canbus] Fix multiple MCP component bugs esphome#14461 by @swoboda1337
- [multiple] Fix reliability issues in 5 components esphome#14655 by @swoboda1337
- [ci] Make codeowner label update non-fatal for fork PRs esphome#14668 by @bdraco
- [ci] Skip YAML anchor keys in integration fixture component extraction esphome#14670 by @bdraco
- [multiple] Fix crashes from malformed external input esphome#14643 by @swoboda1337
- [sen6x] fix memory leak issue esphome#14623 by @tuct
- [cpptests] support testing platform components esphome#13075 by @jpeletier
- [serial_proxy] Reduce loop() overhead by disabling when idle and splitting read path esphome#14673 by @bdraco
- [bl0940] Fix reset_calibration() declaration missing from header esphome#14676 by @anunayk
- [core] ESP-IDF compilation fixes esphome#14541 by @diorcety
- [rp2040] Use picotool for BOOTSEL upload and improve upload UX esphome#14483 by @bdraco (new-feature)
- [api] Inline ProtoVarInt::parse fast path and return consumed in struct esphome#14638 by @bdraco
- [api] Replace
std::vector<uint8_t>with APIBuffer to skip zero-fill esphome#14593 by @bdraco - [scheduler] Replace unique_ptr with raw pointers, add leak detection esphome#14620 by @bdraco
- [core] Require explicit synchronous= for register_action esphome#14606 by @bdraco
- [log] Detect early log calls before logger init and optimize hot path esphome#14538 by @bdraco
- [rp2040_ble] Add BLE component for RP2040/RP2350 esphome#14603 by @bdraco (new-component) (new-feature)
- [esp32_hosted] Bump esp_wifi_remote and esp_hosted versions esphome#14680 by @swoboda1337
- [runtime_image] Add support for 8bit BMPs and fix existing issues esphome#10733 by @mahumpula (new-feature)
- [speaker_source] Add new media player esphome#14649 by @kahrendt (new-component) (new-feature) (new-platform)
- [config] Allow !extend/!remove on components without id in schema esphome#14682 by @swoboda1337
- [core] Warn on crystal frequency mismatch during serial upload esphome#14582 by @bdraco
- [dew_point] Add dew_point sensor component esphome#14441 by @CFlix (new-component) (new-feature) (new-platform)
- [socket] Fix RP2040 TCP race condition between lwip callbacks and main loop esphome#14679 by @bdraco
- [esp32] gpio type improvements esphome#14517 by @ximex
- [bme280] Change communication error message to include “no response” hint. esphome#14686 by @CFlix
- [rp2040] Add HardFault crash handler with backtrace esphome#14685 by @bdraco
- [core] Fix waiting for port indefinitely esphome#14688 by @kbx81
- [logger] Fix UART selection not applied before
pre_setup()esphome#14690 by @kbx81 - Enable the address and behavior sanitizers for C++ component unit tests esphome#13490 by @ademuri
- [socket] Fix RP2040 heap corruption from malloc in lwip accept callback esphome#14687 by @bdraco
- [micronova] Add command queue esphome#12268 by @edenhaus (breaking-change)
- [multiple] Convert static function locals to member variables esphome#14689 by @swoboda1337
- [speaker_source] Add playlist management esphome#14652 by @kahrendt (new-feature)
- [sensirion_common] Use SmallBufferWithHeapFallback helper esphome#14270 by @mikelawrence
- [speaker_source] Add shuffle support esphome#14653 by @kahrendt (new-feature)
- Bump pyupgrade to v3.21.2 for Python 3.14 compatibility esphome#14699 by @swoboda1337
- [dashboard] Use sys.executable for dashboard subprocess commands esphome#14698 by @swoboda1337
- [speaker_source] Add announcement pipeline esphome#14654 by @kahrendt (new-feature)
- Bump docker/build-push-action from 6.19.1 to 6.19.2 in /.github/actions/build-image esphome#13965 by @dependabot[bot]
- Bump github/codeql-action from 4.32.2 to 4.32.3 esphome#13981 by @dependabot[bot]
- Bump ruff from 0.15.0 to 0.15.1 esphome#13980 by @dependabot[bot]
- Bump actions/stale from 10.1.1 to 10.2.0 esphome#14036 by @dependabot[bot]
- Bump pillow from 11.3.0 to 12.1.1 esphome#14048 by @dependabot[bot]
- Bump cryptography from 45.0.1 to 46.0.5 esphome#14049 by @dependabot[bot]
- Bump esptool from 5.1.0 to 5.2.0 esphome#14058 by @dependabot[bot]
- Bump github/codeql-action from 4.32.3 to 4.32.4 esphome#14161 by @dependabot[bot]
- Bump pylint from 4.0.4 to 4.0.5 esphome#14160 by @dependabot[bot]
- Bump ruff from 0.15.1 to 0.15.2 esphome#14159 by @dependabot[bot]
- Bump aioesphomeapi from 44.0.0 to 44.1.0 esphome#14232 by @dependabot[bot]
- Bump aioesphomeapi from 44.1.0 to 44.2.0 esphome#14324 by @dependabot[bot]
- Bump ruff from 0.15.2 to 0.15.3 esphome#14323 by @dependabot[bot]
- Bump actions/upload-artifact from 6.0.0 to 7.0.0 esphome#14326 by @dependabot[bot]
- Bump ruff from 0.15.3 to 0.15.4 esphome#14357 by @dependabot[bot]
- Bump actions/download-artifact from 7.0.0 to 8.0.0 esphome#14327 by @dependabot[bot]
- Bump click from 8.1.7 to 8.3.1 esphome#11955 by @dependabot[bot]
- Bump github/codeql-action from 4.32.4 to 4.32.5 esphome#14416 by @dependabot[bot]
- Bump the docker-actions group across 1 directory with 2 updates esphome#14520 by @dependabot[bot]
- Bump github/codeql-action from 4.32.5 to 4.32.6 esphome#14566 by @dependabot[bot]
- Bump docker/build-push-action from 6.19.2 to 7.0.0 in /.github/actions/build-image esphome#14567 by @dependabot[bot]
- Bump ruff from 0.15.4 to 0.15.5 esphome#14565 by @dependabot[bot]
- Bump aioesphomeapi from 44.2.0 to 44.3.1 esphome#14580 by @dependabot[bot]
- Bump aioesphomeapi from 44.3.1 to 44.4.0 esphome#14609 by @dependabot[bot]
- Bump aioesphomeapi from 44.4.0 to 44.5.0 esphome#14617 by @dependabot[bot]
- Bump aioesphomeapi from 44.5.0 to 44.5.1 esphome#14624 by @dependabot[bot]
- Bump setuptools from 82.0.0 to 82.0.1 esphome#14665 by @dependabot[bot]