ESPHome 2026.6.0 - June 2026
Release Overview
Section titled “Release Overview”ESPHome 2026.6.0 retires the legacy in-tree dashboard, replacing it with the new ESPHome Device Builder,
which reached 1.0.0 this release. The release also raises the default WiFi
security mode on ESP8266 to WPA2 and finally makes WiFi and ethernet enable_on_boot: false reclaim the
15–30 KB and 3–8 KB of internal SRAM they were always supposed to, and delivers up to 4.5× faster LVGL config
validation. A wide audio-stack modernization brings zero-copy ring buffers, any-bit-depth mixing, and a new
router speaker, while a multi-PR effort prepares the codebase for ESP-IDF 6 and native RISC-V clang-tidy. It
also adds a new motion IMU framework with BMI270 and LSM6DS drivers, two USB-serial drivers, a PCM5122 audio
DAC, YAML frontmatter, and a top-level build_flags option that finally works on native IDF.
Upgrade Checklist
Section titled “Upgrade Checklist”- If you use an ESP8266 on a legacy WPA-only (TKIP) router, pin
min_auth_mode: WPAunderwifi:or the device will stop associating - If you use the
dsmrelectricity_switch_positionsensor, move it fromsensor:totext_sensor: - If you use the
nextiondisplay withdump_device_info: true, remove that option (device info is always logged now) - If you still load components from a
custom_components/folder, migrate them toexternal_components: - If your
time:component usesplatform: homeassistantwith an explicittimezone:, note that Home Assistant will no longer override your configured zone - If you use the
dlms_metercomponent with theprovider:option, expect a deprecation warning; the option is now ignored and will be removed in 2026.11.0 - If you maintain external components calling
mark_failed("...")orstatus_set_error("..."), switch tomark_failed(LOG_STR("..."))/status_set_error(LOG_STR("...")) - If you maintain external components using
cv.only_with_esp_idforCORE.using_esp_idf, replace them withcv.only_on_esp32/CORE.is_esp32 - If you have lambdas calling
text_sensor->raw_state, switch totext_sensor->get_raw_state() - If you have lambdas referencing the
mipi_dsi::MIPI_DSIC++ type, rename it tomipi_dsi::MipiDsi
ESPHome Device Builder Replaces the Legacy Dashboard
Section titled “ESPHome Device Builder Replaces the Legacy Dashboard”The new ESPHome Device Builder, shipped as an opt-in public beta in 2026.5.0, reached 1.0.0 this release and replaces the legacy in-tree dashboard, which is being retired. The Device Builder lives in two repos, device-builder (Python backend) and device-builder-frontend (web UI), and as of 2026.6.0 it is the dashboard bundled by default in the official Home Assistant ESPHome add-on.

What it brings over the legacy dashboard:
- Visual component and automation builder alongside a CodeMirror YAML editor, with a left-sidebar device
navigator. The legacy dashboard was a plain text editor over a
.yamlfile. - Component catalog with dependency resolution and a per-board pin info viewer that maps GPIO capabilities and shows which component is using each pin.
- Firmware job queue with progress, history, and cancel for compile / install / clean, replacing the legacy one-operation-at-a-time model.
- Remote builder: one Device Builder instance can offload OTA builds to another over a peer-paired link (mDNS discovery, out-of-band fingerprint confirmation, identity rotation, per-peer auto-route).
- Labels, areas, an editable friendly name, device cloning, and multi-select bulk actions (update, delete, archive, and label across an arbitrary set of devices).
- Out-of-sync detection: an encryption-state mismatch badge on every device, plus version and config-hash in-sync diagnostics in the device drawer.
- YAML diff view, cross-config YAML search with surrounding context, and a command palette (⌘K / Ctrl-K).
- Card and table views with configurable columns and faceted filters (platform / status / area / labels).
- Real settings UI with light / dark / system theme and localization underway across multiple languages.
- First-run WiFi onboarding and an expanded install-method dialog: Web Serial flashing, server-side USB
(relabeled for the Home Assistant host when running as the add-on),
web.esphome.iodownload, and manual.bindownload.
The 2026.5.0 Use new Device Builder Preview opt-in toggle is gone; the Device Builder is simply the dashboard now.
ESP8266 Default WiFi Security Raised to WPA2
Section titled “ESP8266 Default WiFi Security Raised to WPA2”ESP8266 now defaults to min_auth_mode: WPA2, matching the ESP32 default that has shipped for years. ESPHome
has been printing a deprecation warning on every ESP8266 config without an explicit min_auth_mode since 2026.1,
calling out exactly this flip. With ~40% of ESPHome installs running on ESP8266 hardware, this is the broadest
platform-wide change in the release (#16682 by
@swoboda1337).
Configurations connecting to modern WPA2/WPA3 access points need no change. Devices on legacy WPA-only (TKIP) routers must pin the old behavior explicitly:
wifi: min_auth_mode: WPAWiFi and Ethernet Now Truly Free Their Memory When Disabled at Boot
Section titled “WiFi and Ethernet Now Truly Free Their Memory When Disabled at Boot”enable_on_boot: false on wifi: and ethernet: previously skipped only the start() call, leaving the entire
driver resident in DMA-capable internal SRAM. Two PRs by @kbx81 split the heavy
allocation work into a lazy-init path that only runs when the interface is actually enabled, so a dormant
interface now costs zero internal RAM.
Reclaimed memory on ESP32:
- WiFi: roughly 15–30 KB of DMA-capable internal SRAM freed when
enable_on_boot: false(#16606). Field-tested on ESP32-S3 with W5500 SPI ethernet- I2S audio + bluetooth_proxy: free internal SRAM under peak load went from ~14 KB to ~32 KB, with min-free measurements reaching 78 KB in some configurations.
- Ethernet: roughly 3–8 KB freed when
enable_on_boot: false, matching parity with the WiFi lifecycle (#16607). Bringsethernet.enable/ethernet.disableactions andethernet.connected/ethernet.enabledconditions, mirroring the WiFi automation surface.
This is groundwork for running WiFi and ethernet side by side in a single configuration: each interface can now be brought up on demand without paying for the one that is not in use.
The W5500 SPI driver also got a CPU win in #16596 by @kahrendt: large frame transfers now go through an interrupt-driven DMA path instead of busy-waiting the CPU. Measured streaming 48 kHz 24-bit FLAC over W5500, ethernet task CPU usage dropped from ~5% to ~3.8%, roughly a quarter lower.
LVGL Configuration Validation Up to 4.5× Faster
Section titled “LVGL Configuration Validation Up to 4.5× Faster”The new device builder UI revalidates configurations on every save, which made esphome config latency a
direct UX cost. LVGL configs were the worst offender. A five-PR series by
@bdraco attacks the hot path in LVGL schema construction:
- Memoize and lazily build
container_schema(#16567) - repeated validation median dropped from 210 ms to 17 ms on a representative LVGL config. - Build widget update action schemas lazily (#16569) - saves roughly 200 ms at lvgl import time.
- Merge dict-extend chains (#16614) - 2.81× speed-up
on
read_config(0.246 s → 0.087 s on thelvtesthost.yaml). - Memoize
obj_schemaby widget type (#16615) - 2.14× speed-up stacked on top. - Build
automation_schemaevent validators lazily (#16633)- 4.5× reduction in per-call cost (281 ms → 63 ms across 29 widget types in a microbench).
The user-visible effect: every save in the device builder is noticeably snappier, especially on configurations with large LVGL screens.
Audio Stack Modernization
Section titled “Audio Stack Modernization”@kahrendt led a wide-ranging audio rework this cycle, replacing the
allocate-and-copy AudioSourceTransferBuffer pattern with a zero-copy RingBufferAudioSource across the
critical audio paths.
Zero-copy ring-buffer rollout eliminates one allocation and one extra copy per chunk of audio processing:
resampler(#16560)AudioDecoderfor the speaker media player (#16564)micro_wake_word(#16595)voice_assistant(#16597) - also drops two 1024-byte send buffers in favor of reading directly from the ring buffer
Mixer supports any bit depth (#16524). The mixer speaker
now accepts 8, 16, 24, or 32 bits per sample, lifting the last remaining 16-bit-only restriction from the
audio stack. Backed by esp-audio-libs v3.1.0 / v3.2.0, with the upstream library using template
specializations to keep the new code paths as fast as the old 16-bit-only version.
Resampler bit-depth pass-through (#16892). Now that the mixer handles any bit depth, the resampler defaults to passing the input audio's bit depth through unchanged rather than auto-converting to match the output speaker. This avoids burning CPU cycles in the resampler when the downstream mixer would do a faster conversion anyway.
New router speaker component (#16592) for switching
between output speakers at runtime via the router.speaker.switch_output action. A typical use case is
switching between SPDIF and analog I2S outputs live from a select entity, with audio staying in sync after
the switch. See router for details.
micro_wake_word task stack can live in PSRAM (#16632),
saving roughly 3 KB of internal SRAM on the ESP32-S3 with no measurable performance impact. Set
task_stack_in_psram: true.
PSRAM task-stack handling consolidated (#16628) so
audio_file, audio_http, mixer, resampler, sendspin, and speaker.media_player all share the same
validation pattern, with a bug fix for task_stack_in_psram: false on the speaker media player.
ESP-IDF 6 and Native RISC-V clang-tidy
Section titled “ESP-IDF 6 and Native RISC-V clang-tidy”A multi-PR effort by @swoboda1337 makes static analysis substantially better at catching real-firmware bugs:
script/clang-tidynow supports RISC-V targets natively (#16809)- clang's upstream RISC-V backend can now analyze ESP32-C3/C6/H2/P4 builds instead of falling back to the 32-bit x86 stand-in that was used for the Xtensa path.
- Native ESP-IDF clang-tidy is now the comprehensive pass (#16823).
The arduino toolchain has a blind spot where its headers pull
std::float math overloads into the global namespace, hidingperformance-type-promotion-in-math-fnfindings. The IDF toolchain catches them. - Float-to-double promotion fixed across the codebase
(#16812) -
display,daikin_arc,nau7802,sgp4x,thermopro_ble,tuyaall switched from C<math.h>to the float-typedstd::overloads, keeping math in float on 32-bit MCUs instead of needlessly promoting to double. - clang-tidy passes on ESP-IDF 6 (#16850) - sdkconfig pinned to newlib, GCC-only flags stripped, ledc HAL guard added under static analysis. This is the foundation for upcoming ESP-IDF 6 support.
arduino-esp32stub for managed IDF components (#16695)- on PlatformIO, components like FastLED that declare
REQUIRES arduino-esp32now resolve to a stub that re-exports the framework via CMakeINTERFACE, instead of the IDF Component Manager trying to download a duplicate.
- on PlatformIO, components like FastLED that declare
- 100% patch coverage gating (#16827 by @jesserockz) - new PRs must cover every changed line. The project-level coverage stays informational so contributors are not penalized for pre-existing untested code.
New Components and Hardware Support
Section titled “New Components and Hardware Support”@clydebarrow landed a coordinated IMU stack: a generic motion
hub component that provides acceleration, angular rate, and derived pitch/roll values, plus actions for
automatic pitch/roll calibration (#16226). Two concrete
drivers ride on top:
- Bosch BMI270 (#16202) - used in M5Stack Tab5 and Espressif's EchoEar
- STMicro LSM6DS3TR-C (#16232) - used in the Seeed ReTerminal D1001
New sensors and DACs:
- PCM5122 audio DAC by @remcom (#15709) - the Texas Instruments stereo I2S DAC popular in Raspberry Pi HATs, with mute, digital volume, and four configurable GPIO pins exposed through the standard pin schema.
- XDB401 pressure sensor by @RT530 (#15108) - I2C pressure and temperature from the XIDIBEI XDB401.
USB-serial drivers by @p1ngb4ck:
- FTDI FT23XX family (#14587) - covers FT232R, FT2232C, FT2232H, FT4232H, FT232H, FT230X, and AM/BM variants; chip type auto-detected from the USB descriptor; multi-channel chips supported as separate channels.
- Prolific PL2303 family (#16885) - covers the legacy PL2303H/HX through the modern G-series; baud rate encoding selected per chip type.
New display: WAVESHARE-ESP32-S3-TOUCH-AMOLED-2.16 added to the mipi_spi driver
(#16887 by @clydebarrow).
DLMS Smart Meter Component Overhaul
Section titled “DLMS Smart Meter Component Overhaul”@Tomer27cz refactored the dlms_meter component to use the external
dlms_parser library
(#15458), substantially broadening smart-meter support:
- Dynamic OBIS code schema - define custom sensors, text sensors, or binary sensors by their OBIS code
(e.g.
"1-0:99.99.9") instead of being limited to the hardcoded property list. - Binary sensor support is new.
- Decryption key now optional - meters that broadcast plaintext are supported directly.
- Flexible UART baud rate - the 2400-baud requirement is gone; configure the UART to whatever your meter speaks.
- New configuration variables -
auth_key,custom_patterns,skip_crc, andreceive_timeoutfor meters with non-standard behavior.
The legacy schema continues to work and the provider key is now ignored with a deprecation warning, slated
for removal in 2026.11.0. Existing configurations should still validate without change.
The companion DSMR component also got a fix and feature pass
(#16561 by @PolarGoose),
including support for EON Hungary meters, custom auth keys, and automatic hex-string detection in equipment
ID fields. Note that electricity_switch_position moved from sensor to text_sensor, which may need a YAML
update.
Networking, Zephyr, and Platform Plumbing
Section titled “Networking, Zephyr, and Platform Plumbing”Zephyr IPv6 networking on nRF52 (#16336 by
@Ardumine) is the first step toward OpenThread support on the nRF52840 via
Zephyr. Adds a Zephyr-specific IPAddress class backed by struct in6_addr, networking Kconfig, and three
new nRF52 network test fixtures. IPv6 defaults to enabled on nRF52.
RP2350 / RP2040 variant config (#16602 by
@jesserockz) brings the ESP32-style variant option to the rp2040
platform block, so the same platform can target the RP2040 or RP2350 and emits matching
USE_RP2040_VARIANT_<VARIANT> build flags. The variant is auto-derived from the board's MCU; specifying both
must match.
esp32_hosted PSRAM transport buffers
(#16627 by @swoboda1337) -
new use_psram: true option moves the esp_hosted transport mempool out of DMA-capable internal RAM and into
PSRAM, fixing boot-time sdio_mempool_create asserts on memory-tight ESP32-P4 + LVGL UI configurations.
Configuration and Tooling Improvements
Section titled “Configuration and Tooling Improvements”YAML frontmatter (#16552 by
@jesserockz) - a leading ----separated YAML document is now treated as
opaque metadata, stripped before validation, and captured per-file on CORE.frontmatter. Future tooling
(including the device builder) can consume arbitrary user metadata like author, version, labels:
author: Jesse Hillsversion: 1.0.0labels: [office, climate]---esphome: name: my-nodeesphome.build_flags for IDF + PlatformIO
(#16629 by @swoboda1337) -
a top-level esphome.build_flags list now applies compiler flags on both backends. The existing
platformio_options.build_flags was PlatformIO-only; users on native IDF (ESP32-P4, ESP32-H2) needed this.
esphome config --no-defaults (#16718 by
@jesserockz) emits only the user-supplied configuration after substitutions
and packages resolve, without the hundreds of injected schema defaults. Useful for diffing configs, sharing
minimal reproductions in issues, and sanity-checking what was actually typed.
Codeberg short-form Git URLs (#16501 by
@Eelviny) - codeberg://owner/repo/path/file.yaml is now a supported source
for dashboard_import and short-form packages, alongside github:// and gitlab://.
github:// framework source (#16639 by
@swoboda1337) - esp32.framework.source now accepts
github://owner/repo@ref and https://github.com/owner/repo.git@ref, doing a git clone --depth=1 --recurse-submodules instead of downloading an archive. This is needed because GitHub archive URLs strip
submodules, which ESP-IDF relies on heavily (mbedtls, openthread, tinyusb, …). Primary use case is testing
against pre-release ESP-IDF before any tagged release ships a new chip.
Sensitive value redaction (#16690 by
@bdraco) is now driven by cv.sensitive() markers in the schema rather than a
post-dump regex. WiFi SSIDs are now marked sensitive, joining passwords. External components using the new
marker get redaction automatically; the regex fallback stays as a deprecation bridge through 2026.12.0.
State reporting CLI control (#16746 by
@clydebarrow) - the logs command gained a --states / --no-states flag
and an environment variable for the default, restoring control over whether state changes appear in the log
stream.
Light Component Enhancements
Section titled “Light Component Enhancements”@jesserockz added two light improvements:
light.effect.nextandlight.effect.previousactions (#16491) cycle through a light's configured effects without having to hardcode effect names. Aninclude_none: trueoption lets the cycle pass through the un-effected state. The target light must have at least one effect, checked at config validation time.- Lambda light effects receive the light as
it(#16815) - matches the existing behavior of addressable lambda effects, so simple lambdas can reference the light directly withoutid(my_light).
@clydebarrow also added a rounded property to LVGL meter arcs
(#16669).
Other Notable Features
Section titled “Other Notable Features”- Display metadata for LVGL validation (#16702) -
display drivers now register
byte_order,rotation,draw_rounding,has_writer, andhas_hardware_rotationmetadata, so LVGL can pickbyte_orderautomatically, reject mixed byte orders, and mergedraw_roundingrequirements from the attached display. - Mitsubishi CN105 swing modes (#15653 by @crnjan) - vertical / horizontal / both swing for the Mitsubishi CN105 climate component, with last non-swing vane positions tracked and restored when swing is disabled.
- SDL display screen selection (#16363 by @clydebarrow) - the host-platform SDL display can now be centered on a specific display when multiple are attached.
homeassistant.timehonors explicit timezones (#16583 by @clydebarrow) - atimezone:configured locally is no longer silently overridden by Home Assistant's zone.- I2C host platform support (#14489 by @jesserockz) - basic I2C bus support when running ESPHome on a Linux host platform, useful for testing and host-side integrations.
Notable Bug Fixes
Section titled “Notable Bug Fixes”- Nextion device info storage rewrite (#16059 by
@edwardtfn) - the
connect_infoparser was replaced with fixed-size field extraction, eliminating all heap allocations from thecomokresponse. Device info is now always logged indump_config(); the olddump_device_infoYAML option is gone.
Thank You, Contributors
Section titled “Thank You, Contributors”This release includes 178 pull requests from over 20 contributors. A huge thank you to everyone who made 2026.6.0 possible:
- @swoboda1337 - 57 PRs including the ESP-IDF 6 / native RISC-V clang-tidy infrastructure, the ESP8266 WPA2 default flip, removal of long-deprecated core APIs, and extensive ESP32 platform plumbing
- @kahrendt - 19 PRs including the audio stack modernization
(
RingBufferAudioSourcerollout, any-bit-depth mixer, resampler pass-through, newrouterspeaker) and the W5500 ethernet SPI offload - @clydebarrow - 16 PRs including the new
motionIMU hub with BMI270 and LSM6DS drivers, LVGL display-metadata validation, and the Home Assistant timezone fix - @jesserockz - 9 PRs including YAML frontmatter support,
light.effect.next/light.effect.previousactions, the RP2040/RP2350 variant option,esphome config --no-defaults, and 100% patch-coverage enforcement - @kbx81 - 4 PRs including the WiFi and ethernet lazy-init RAM reclamation work
- @p1ngb4ck - 2 PRs adding the FTDI FT23XX and Prolific PL2303 USB-serial drivers
- @PolarGoose - 2 PRs on DSMR including EON Hungary meter support
and the
dsmr_parserlibrary update - @tomaszduda23 - 2 PRs on the nRF52 native build and network IPv6 enforcement
- @rtyle - 2 PRs fixing QMP6988 sensor I2C error handling
- @Tomer27cz - the DLMS meter component overhaul using the external
dlms_parserlibrary - @Ardumine - Zephyr IPv6 networking support for nRF52
- @remcom - the new PCM5122 audio DAC component
- @RT530 - the new XDB401 pressure sensor component
- @crnjan - swing support for the Mitsubishi CN105 climate component
- @edwardtfn - the Nextion
connect_infoheap-allocation rewrite
Also thank you to @bdraco, @Rapsssito, @burundiocibu, @leodrivera, @SoCuul, @david-collett, @chemelli74, @Eelviny, @gnumpi, @GuzTech, @rwrozelle, @exciton, @i-am-no-magic, and @kpfleming for their contributions, and to everyone who reported issues, tested pre-releases, and helped in the community.
Breaking Changes
Section titled “Breaking Changes”Platform Changes
Section titled “Platform Changes”- WiFi (ESP8266): Default
min_auth_modeflipped fromWPAtoWPA2, matching the ESP32 default. The 2026.1 deprecation warning has been calling this out at every config validation. Devices on legacy WPA-only (TKIP) routers must pinmin_auth_mode: WPAexplicitly underwifi:#16682
Component Changes
Section titled “Component Changes”- DSMR:
electricity_switch_positionmoved fromsensor:totext_sensor:because Hungarian meters emit it as a string (e.g.ON) rather than a number. Update existing configs to declare the entity undertext_sensor:#16561 - DLMS Meter: Refactored to use the external
dlms_parserlibrary, adding dynamic OBIS-code schema, binary sensor support, optional decryption keys, and a configurable UART baud rate (the 2400-baud requirement is gone). The legacy hardcoded property schema continues to work; theprovider:option is now ignored with a deprecation warning and will be removed in 2026.11.0 #15458 - Nextion: The
dump_device_infoYAML option has been removed. Device info is now always stored and logged indump_config(). Removedump_device_info: truefrom anydisplay:Nextion configs #16059 - Home Assistant Time: When a
timezone:is explicitly configured on atime:component withplatform: homeassistant, the zone reported by Home Assistant no longer overrides it. Configurations that relied on HA silently overriding a stale local timezone should remove the localtimezone:entry #16583
Core Changes
Section titled “Core Changes”custom_components/folder removed: The deprecatedcustom_components/directory auto-loader has been removed. Useexternal_componentsinstead. The deprecation warning has been printing since 2025.6 #16679- Sensitive value redaction:
cv.sensitive()now drives runtime redaction directly via a YAML representer instead of a post-dump regex. WiFi SSIDs are now marked sensitive and will be redacted alongside passwords inesphome configoutput. No YAML change needed; pass--show-secretsto bypass redaction as before #16690
Undocumented API Changes
Section titled “Undocumented API Changes”Lambda users and external component authors who reference internal C++ types should note the following change. The type still behaves the same at runtime, but its name was updated to match the project's identifier-naming convention:
-
MIPI DSI display class renamed:
mipi_dsi::MIPI_DSIis nowmipi_dsi::MipiDsi. Any lambda or external component that referenced the old type name must use the new spelling. No behavior change #16837// Beforeauto *display = static_cast<mipi_dsi::MIPI_DSI *>(...);// Afterauto *display = static_cast<mipi_dsi::MipiDsi *>(...);
Breaking Changes for Developers
Section titled “Breaking Changes for Developers”Component::mark_failed/status_set_errorconst char *overloads removed: use theconst LogString *overloads viaLOG_STR("...")#16680cv.only_with_esp_idfandCORE.using_esp_idfremoved: migrate tocv.only_on_esp32andCORE.is_esp32; useCORE.using_toolchain_esp_idffor the rare actual toolchain check #16681text_sensor::TextSensor::raw_statepublic member removed: useget_raw_state()instead #16683nfc::format_uid(span)/nfc::format_bytes(span)heap helpers removed: switch to the stack-buffer variantsnfc::format_uid_to(buf, span)/nfc::format_bytes_to(buf, span)withFORMAT_UID_BUFFER_SIZE/FORMAT_BYTES_BUFFER_SIZE#16684seq<>andgens<>tuple-unpack templates removed fromcore/automation.h: usestd::index_sequence/std::index_sequence_for#16685audio::scale_audio_samplesdeprecated: switch toesp_audio_libs::gain::applyfrom the bundledesp-audio-libs(Q31 scale factor, byte buffers, explicitbytes_per_sample). Scheduled for removal in 2026.12.0 #16831cv.sensitive()schema marker: external component schemas should now wrap sensitive fields withcv.sensitive(...)for redaction inesphome configoutput. The old regex-based fallback stays as a deprecation bridge through 2026.12.0 #16690
For detailed migration guides and API documentation, see the ESPHome Developers Documentation.
Full list of changes
Section titled “Full list of changes”New Features
Section titled “New Features”- [core] Support YAML frontmatter for arbitrary user metadata esphome#16552 by @jesserockz (new-feature)
- [light] Add light.effect.next / light.effect.previous actions esphome#16491 by @jesserockz (new-feature)
- [mixer] Support any bit depth audio esphome#16524 by @kahrendt (new-feature)
- [rp2040] Add variant config option for RP2040/RP2350 esphome#16602 by @jesserockz (new-feature)
- [core] Add esphome.build_flags option for IDF + PlatformIO esphome#16629 by @swoboda1337 (new-feature)
- [esp32_hosted] Bump esp_hosted to 2.12.8 and add use_psram option esphome#16627 by @swoboda1337 (new-feature)
- [micro_wake_word] Allow task stack to be allocated in PSRAM esphome#16632 by @kahrendt (new-feature)
- [router] Add a router speaker component to runtime choose output speaker esphome#16592 by @kahrendt (new-component) (new-feature) (new-platform)
- [espidf] Support github:// and https://github.com/.../.git framework sources esphome#16639 by @swoboda1337 (new-feature)
- [mitsubishi_cn105] Add basic swing support esphome#15653 by @crnjan (new-feature)
- [lvgl] Support
roundedproperty for meter arcs esphome#16669 by @clydebarrow (new-feature) - [network] Add Zephyr IPv6 networking support for nRF52 esphome#16336 by @Ardumine (new-feature)
- [core] Add Codeberg as a supported git url esphome#16501 by @Eelviny (new-feature)
- [ethernet] Add enable_on_boot lifecycle + lazy-init to reclaim DMA-capable SRAM esphome#16607 by @kbx81 (new-feature)
- [cli] Allow state reporting control via env esphome#16746 by @clydebarrow (new-feature)
- [i2c] Add basic host platform support esphome#14489 by @jesserockz (new-feature)
- [lvgl][mipi_spi][mipi_rgb][mipi_dsi][display] Metadata esphome#16702 by @clydebarrow (new-feature)
- [sdl] Add option to choose display screen esphome#16363 by @clydebarrow (new-feature)
- [config] Add --no-defaults flag to config command esphome#16718 by @jesserockz (new-feature)
- [light] Pass light reference into lambda light effect esphome#16815 by @jesserockz (new-feature)
- [usb_uart] Add FTDI FT23XX USB UART driver esphome#14587 by @p1ngb4ck (new-feature)
- [motion] Implement hub component for IMUs esphome#16226 by @clydebarrow (new-component) (new-feature) (new-platform)
- [mipi_spi] add WAVESHARE-ESP32-S3-TOUCH-AMOLED-2.16 esphome#16887 by @clydebarrow (new-feature)
- [pcm5122] Add PCM5122 audio DAC component esphome#15709 by @remcom (new-component) (new-feature) (new-platform)
- [dlms_meter] dlms_parser library esphome#15458 by @Tomer27cz (new-feature) (breaking-change) (new-platform)
- [usb_uart] Add Prolific PL2303 USB-serial driver esphome#16885 by @p1ngb4ck (new-feature)
- [xdb401] XDB401 Pressure Sensor esphome#15108 by @RT530 (new-component) (new-feature) (new-platform)
- [bmi270] Support Bosch BMI270 IMU esphome#16202 by @clydebarrow (new-component) (new-feature) (new-platform)
- [lsm6ds] Add motion platform for STMicro LSM6DS IMU esphome#16232 by @clydebarrow (new-component) (new-feature) (new-platform)
- [resampler] Allow resampler to passthrough bits per sample instead of converting esphome#16892 by @kahrendt (new-feature)
- [esp32] Add flash_mode and flash_frequency config options esphome#16920 by @swoboda1337 (new-feature)
New Components
Section titled “New Components”- [router] Add a router speaker component to runtime choose output speaker esphome#16592 by @kahrendt (new-component) (new-feature) (new-platform)
- [motion] Implement hub component for IMUs esphome#16226 by @clydebarrow (new-component) (new-feature) (new-platform)
- [pcm5122] Add PCM5122 audio DAC component esphome#15709 by @remcom (new-component) (new-feature) (new-platform)
- [xdb401] XDB401 Pressure Sensor esphome#15108 by @RT530 (new-component) (new-feature) (new-platform)
- [bmi270] Support Bosch BMI270 IMU esphome#16202 by @clydebarrow (new-component) (new-feature) (new-platform)
- [lsm6ds] Add motion platform for STMicro LSM6DS IMU esphome#16232 by @clydebarrow (new-component) (new-feature) (new-platform)
New Platforms
Section titled “New Platforms”- [router] Add a router speaker component to runtime choose output speaker esphome#16592 by @kahrendt (new-component) (new-feature) (new-platform)
- [motion] Implement hub component for IMUs esphome#16226 by @clydebarrow (new-component) (new-feature) (new-platform)
- [pcm5122] Add PCM5122 audio DAC component esphome#15709 by @remcom (new-component) (new-feature) (new-platform)
- [dlms_meter] dlms_parser library esphome#15458 by @Tomer27cz (new-feature) (breaking-change) (new-platform)
- [xdb401] XDB401 Pressure Sensor esphome#15108 by @RT530 (new-component) (new-feature) (new-platform)
- [bmi270] Support Bosch BMI270 IMU esphome#16202 by @clydebarrow (new-component) (new-feature) (new-platform)
- [lsm6ds] Add motion platform for STMicro LSM6DS IMU esphome#16232 by @clydebarrow (new-component) (new-feature) (new-platform)
Breaking Changes
Section titled “Breaking Changes”- [nextion] Replace
connect_infovector with fixed-size field parser, always log device info esphome#16059 by @edwardtfn (breaking-change) - [time][homeassistant] Fix timezone handling esphome#16583 by @clydebarrow (breaking-change)
- [core] Remove deprecated custom_components folder loading esphome#16679 by @swoboda1337 (breaking-change)
- [wifi] Default ESP8266 min_auth_mode to WPA2 esphome#16682 by @swoboda1337 (breaking-change)
- [core] Sensitive redaction via yaml_util representer esphome#16690 by @bdraco (breaking-change)
- [dmsr] [breaking] Fix decryption that uses custom auth key. Add CRC to telegram sensor. Automatic hex string detection in equipment_id fields. Support EON Hungary smart meters esphome#16561 by @PolarGoose (breaking-change)
- [dlms_meter] dlms_parser library esphome#15458 by @Tomer27cz (new-feature) (breaking-change) (new-platform)
All changes
Section titled “All changes”- [ci] Prohibit curly braces in PR titles for MDX safety esphome#16412 by @bdraco
- [clang-tidy] Enable readability-container-contains esphome#16438 by @swoboda1337
- [ci] Skip dashboard-deprecation bot on release/beta-bump PRs esphome#16427 by @swoboda1337
- [ci] Add ci-run-all label to force full CI matrix esphome#16421 by @swoboda1337
- [nextion] Replace
connect_infovector with fixed-size field parser, always log device info esphome#16059 by @edwardtfn (breaking-change) - [ci] Fix sync-device-classes workflow (failing daily for weeks) esphome#16448 by @swoboda1337
- [ci] sync-device-classes: use uv for installs and skip pylint esphome#16449 by @bdraco
- [ci] sync-device-classes: drop branch-switch hack, skip no-commit-to-branch instead esphome#16450 by @bdraco
- Synchronise Device Classes from Home Assistant esphome#16452 by @esphome[bot]
- [ci] pr-title-check: skip all bot authors, not just dependabot esphome#16453 by @bdraco
- [uptime] Update device_class for Uptime sensor esphome#16434 by @chemelli74
- [yaml_util] Promote include-discovery helper, share it with bundle esphome#16447 by @bdraco
- [ci] Log top 30 pytest durations esphome#16455 by @bdraco
- [ci] Use uv for pip installs across CI workflows esphome#16451 by @bdraco
- [esp32_ble_server] Fix incorrect BLECharacteristic read truncation (#16420) esphome#16422 by @david-collett
- [tests] Mock determine_cpp_unit_tests in clang_tidy_mode tests esphome#16456 by @bdraco
- [espidf] Accept list input in _str_to_lst_of_str helper esphome#16485 by @jesserockz
- [core] Add progmem_memcpy HAL helper esphome#16470 by @bdraco
- [esp32_ble_server] Honor client offset and MTU in long reads esphome#16458 by @bdraco
- [esp32] Fix sdkconfig int values silently clamped to default esphome#16515 by @swoboda1337
- [esp32] Use new sdkconfig key names that replaced deprecated ones esphome#16522 by @swoboda1337
- [ci] Pin uv version in setup-uv to fix Windows manifest fetch flake esphome#16534 by @bdraco
- [audio] Bump esp-audio-libs to v3.1.0 esphome#16519 by @kahrendt
- [core] Support YAML frontmatter for arbitrary user metadata esphome#16552 by @jesserockz (new-feature)
- [light] Add light.effect.next / light.effect.previous actions esphome#16491 by @jesserockz (new-feature)
- [i2s_audio] Reset dout GPIO when stopping speaker driver esphome#16573 by @kahrendt
- [homeassistant] Reduce log spam for sensors esphome#16555 by @clydebarrow
- [ci] Gate unconditional CI jobs on a single determine-jobs output instead of a path filter esphome#16580 by @bdraco
- [lvgl] Memoize and lazily build container_schema esphome#16567 by @bdraco
- [lvgl] Build widget update action schemas lazily esphome#16569 by @bdraco
- [ci] Fix flash memory overflow on tests esphome#16587 by @clydebarrow
- [audio] Add
clear_buffered_datamethod to RingBufferAudioSource esphome#16594 by @kahrendt - [wifi] Wake main loop when requesting high performance mode esphome#16598 by @kahrendt
- [ethernet] Offload W5500 bulk SPI transfers from the busy-wait path esphome#16596 by @kahrendt
- [api] Fix uint32_t/int32_t format strings for stricter GCC toolchain esphome#16603 by @kbx81
- [espnow, ethernet, network, openthread, wifi] centralize network initialization for ESP32 esphome#14012 by @Rapsssito
- [voice_assistant] Use RingBufferAudioSource esphome#16597 by @kahrendt
- [mixer] Support any bit depth audio esphome#16524 by @kahrendt (new-feature)
- [audio] Use RingBufferAudioSource for decoding esphome#16564 by @kahrendt
- [audio] Use RingBufferAudioSource for resampling esphome#16560 by @kahrendt
- [micro_wake_word] Use RingBufferAudioSource esphome#16595 by @kahrendt
- Lift dependabot pip open PR limit esphome#16609 by @bdraco
- [rp2040] Add variant config option for RP2040/RP2350 esphome#16602 by @jesserockz (new-feature)
- [lvgl] Memoize obj_schema by widget_type esphome#16615 by @bdraco
- [core] Add esphome.build_flags option for IDF + PlatformIO esphome#16629 by @swoboda1337 (new-feature)
- [espidf] Warn instead of skipping libraries with framework mismatch esphome#16630 by @swoboda1337
- [lvgl] Merge dict-extend chains to speed up schema construction esphome#16614 by @bdraco
- [esp32_hosted] Bump esp_hosted to 2.12.8 and add use_psram option esphome#16627 by @swoboda1337 (new-feature)
- [psram] Consolidate task stack in PSRAM handling esphome#16628 by @kahrendt
- [micro_wake_word] Allow task stack to be allocated in PSRAM esphome#16632 by @kahrendt (new-feature)
- [router] Add a router speaker component to runtime choose output speaker esphome#16592 by @kahrendt (new-component) (new-feature) (new-platform)
- [router] Share a single I2S bus in test esphome#16637 by @kahrendt
- [time][homeassistant] Fix timezone handling esphome#16583 by @clydebarrow (breaking-change)
- [espidf] Support github:// and https://github.com/.../.git framework sources esphome#16639 by @swoboda1337 (new-feature)
- [espidf] Keep cmake output filter working when IDF writes raw bytes esphome#16642 by @swoboda1337
- [mitsubishi_cn105] Add basic swing support esphome#15653 by @crnjan (new-feature)
- [core] Enable additional zero-violation ruff lint families esphome#16645 by @bdraco
- [core] Enable ruff EXE (flake8-executable) lint family esphome#16648 by @bdraco
- [core] Enable ruff SLOT (flake8-slots) lint family esphome#16647 by @bdraco
- [core] Enable ruff ISC (flake8-implicit-str-concat) lint family esphome#16646 by @bdraco
- [core] Enable ruff RSE (flake8-raise) lint family esphome#16649 by @bdraco
- [core] Enable ruff C4 (flake8-comprehensions) lint family esphome#16653 by @bdraco
- [tests] Disable hypothesis deadline on flaky IP address test esphome#16652 by @bdraco
- [core] Enable ruff G (flake8-logging-format) lint family esphome#16650 by @bdraco
- [core] Enable ruff PYI (flake8-pyi) lint family esphome#16654 by @bdraco
- [core] Enable ruff B (flake8-bugbear) lint family esphome#16655 by @bdraco
- [core] Enable ruff PTH (flake8-use-pathlib) lint family esphome#16661 by @bdraco
- [core] Enable ruff PIE (flake8-pie) lint family esphome#16658 by @bdraco
- [lvgl] Build automation_schema event validators lazily esphome#16633 by @bdraco
- [voice_assistant] Never send zero-length audio to Home Assistant esphome#16634 by @kahrendt
- [core] Add cv.sensitive marker for schema-level sensitive fields esphome#16673 by @bdraco
- [core] Enable ruff DTZ (flake8-datetimez) lint family esphome#16660 by @bdraco
- [core] Enable ruff PGH (pygrep-hooks) lint family esphome#16651 by @bdraco
- [lvgl] Support
roundedproperty for meter arcs esphome#16669 by @clydebarrow (new-feature) - [core] Remove deprecated custom_components folder loading esphome#16679 by @swoboda1337 (breaking-change)
- [core] Remove deprecated const char* mark_failed/status_set_error esphome#16680 by @swoboda1337
- [core] Remove cv.only_with_esp_idf and CORE.using_esp_idf esphome#16681 by @swoboda1337
- [wifi] Default ESP8266 min_auth_mode to WPA2 esphome#16682 by @swoboda1337 (breaking-change)
- [nfc] Remove deprecated heap-allocating format helpers esphome#16684 by @swoboda1337
- [dsmr] Force BearSSL on ESP8266 to avoid mbedtls link failure esphome#16686 by @swoboda1337
- [core] Remove deprecated seq/gens templates esphome#16685 by @swoboda1337
- [neopixelbus] Deprecate on ESP32 esphome#16676 by @swoboda1337
- [text_sensor] Remove deprecated public raw_state member esphome#16683 by @swoboda1337
- [core] Mark canonical sensitive fields with cv.sensitive esphome#16677 by @bdraco
- [network] Add Zephyr IPv6 networking support for nRF52 esphome#16336 by @Ardumine (new-feature)
- [core] Enable ruff BLE (flake8-blind-except) lint family esphome#16659 by @bdraco
- [core] Sensitive redaction via yaml_util representer esphome#16690 by @bdraco (breaking-change)
- [esp32] Stub arduino-esp32 with INTERFACE re-export to framework esphome#16695 by @swoboda1337
- [core] Add Codeberg as a supported git url esphome#16501 by @Eelviny (new-feature)
- [midea] fix casing of custom fan modes esphome#16419 by @SoCuul
- [growatt_solar] Replace hard coded register addresses with constexpr esphome#16581 by @GuzTech
- [tests] Sandbox PlatformIO paths in test_writer to fix xdist race esphome#16619 by @rwrozelle
- [docs] Update esphome-docs references to esphome.io after repo rename esphome#16705 by @jesserockz
- [network] move ipv6 enforcement to validation step esphome#16701 by @tomaszduda23
- [gpio][binary_sensor] Fix pin validation for external GPIO pins esphome#16528 by @gnumpi
- [core] Use esp_rom_crc.h public API instead of legacy rom/crc.h esphome#16698 by @swoboda1337
- [esp32] Add ESP32-S31, ESP32-H4 and ESP32-H21 variant scaffolding esphome#16700 by @swoboda1337
- [ledc] Adapt to LEDC LL API changes in ESP-IDF 6.1 esphome#16697 by @swoboda1337
- [esp32_camera] Enable PicolibC Newlib compatibility on IDF 6.0+ esphome#16703 by @swoboda1337
- [esp32] Refine ESP-IDF framework version suffix handling esphome#16726 by @swoboda1337
- [ethernet] Bump espressif/dm9051 to 1.1.0 esphome#16735 by @swoboda1337
- [espidf] Derive idedata from the native ESP-IDF compile_commands.json esphome#16742 by @swoboda1337
- [const] Move CONF_SHA256 to common code esphome#16751 by @clydebarrow
- [wifi] Defer esp_wifi_init() to lazy-init so enable_on_boot: false actually saves RAM esphome#16606 by @kbx81
- [ethernet] Add enable_on_boot lifecycle + lazy-init to reclaim DMA-capable SRAM esphome#16607 by @kbx81 (new-feature)
- [cli] Allow state reporting control via env esphome#16746 by @clydebarrow (new-feature)
- [ci] Fix auto label platform restructure false positive esphome#16734 by @exciton
- [i2s_audio] Fix speaker DMA buffer sizing and validate bit depth at compile time esphome#16672 by @kahrendt
- [i2c] Add basic host platform support esphome#14489 by @jesserockz (new-feature)
- [lvgl][mipi_spi][mipi_rgb][mipi_dsi][display] Metadata esphome#16702 by @clydebarrow (new-feature)
- [core] esphome clean wipes the whole build directory esphome#16772 by @swoboda1337
- [dmsr] [breaking] Fix decryption that uses custom auth key. Add CRC to telegram sensor. Automatic hex string detection in equipment_id fields. Support EON Hungary smart meters esphome#16561 by @PolarGoose (breaking-change)
- [lvgl] Fix indicator updates esphome#16780 by @clydebarrow
- [gree] Fix HEAT_COOL advertised when supports_heat is false; restrict YAN swing to vertical esphome#16199 by @leodrivera
- [sdl] Add option to choose display screen esphome#16363 by @clydebarrow (new-feature)
- [logger] Fix USB JTAG VFS symbols linked when logging is disabled esphome#15721 by @burundiocibu
- [config] Add --no-defaults flag to config command esphome#16718 by @jesserockz (new-feature)
- [ci] Fix memory impact build selecting unbuildable platform esphome#16788 by @bdraco
- [mixer] Give mixer test its own speaker id to avoid CI grouping collision esphome#16792 by @swoboda1337
- [clang-tidy] Hash idf_component.yml and trigger hash hook on more inputs esphome#16753 by @swoboda1337
- [esp32] Deduplicate PlatformIO library conversion by resolving the batch together esphome#16756 by @swoboda1337
- [const][animation][dfplayer] Extract CONF_LOOP to const esphome#16797 by @clydebarrow
- [ci] Exclude device-builder slow e2e tests from downstream CI esphome#16801 by @bdraco
- [esp32] Run clang-tidy via the native ESP-IDF toolchain esphome#16748 by @swoboda1337
- [audio] Bump esp-audio-libs to v3.2.0 esphome#16806 by @kahrendt
- [clang-tidy] Support RISC-V targets natively esphome#16809 by @swoboda1337
- [clang-tidy] Add --exclude-grep to skip files by content esphome#16813 by @swoboda1337
- [ota][logger][esp32][internal_temperature] Fix clang-tidy findings surfaced by RISC-V analysis esphome#16811 by @swoboda1337
- [multiple] Avoid float-to-double promotion in math calls esphome#16812 by @swoboda1337
- [i2s_audio] Move test bus into a shared package and give fixtures unique ids esphome#16793 by @bdraco
- [light] Pass light reference into lambda light effect esphome#16815 by @jesserockz (new-feature)
- [audio] Bump esp-audio-libs to v3.2.1 esphome#16818 by @swoboda1337
- [usb_uart] Add FTDI FT23XX USB UART driver esphome#14587 by @p1ngb4ck (new-feature)
- [ci] Add codecov.yml to enforce 100% patch coverage on PRs esphome#16827 by @jesserockz
- [api] Fix nullptr deref when client teardown reenters state dispatch esphome#16834 by @bdraco
- [usb_host][usb_cdc_acm][tinyusb] Fix clang-tidy findings esphome#16836 by @swoboda1337
- [mipi_dsi][mipi_rgb][st7701s][rpi_dpi_rgb] Fix clang-tidy findings esphome#16837 by @swoboda1337
- [ci] Make ESP32 IDF the comprehensive clang-tidy pass esphome#16823 by @swoboda1337
- [usb_uart] Fix clang-tidy findings esphome#16835 by @swoboda1337
- [esp32] Bump platform to 55.03.39, Arduino to 3.3.9 esphome#16803 by @swoboda1337
- [zigbee][openthread][esp32_hosted] Fix clang-tidy findings esphome#16838 by @swoboda1337
- [qmp6988] fix false report of software reset error esphome#16843 by @rtyle
- [qmp6988] fix publishing bogus zero values on i2c error esphome#16840 by @rtyle
- [ci] Share a cached native ESP-IDF install across clang-tidy and build jobs esphome#16841 by @swoboda1337
- [audio] Deprecate unused scale_audio_samples helper esphome#16831 by @kahrendt
- [tuya] Fixed hysteresis bug for Tuya climate esphome#16832 by @i-am-no-magic
- [scripts] Fix build_language_schema esphome#16816 by @clydebarrow
- [esp32_camera] Bump esp32-camera to 2.1.7 esphome#16846 by @swoboda1337
- [improv_serial] Fix build on ESP32-C5/P4 and simplify variant guards esphome#16833 by @swoboda1337
- [tests] Fail component test merge on conflicting duplicate IDs esphome#16795 by @bdraco
- Exit nginx bypass placeholder cleanly on SIGTERM esphome#16845 by @bdraco
- Revert "[tests] Fail component test merge on conflicting duplicate IDs" esphome#16848 by @bdraco
- [fastled_base] Use FastLED IDF component on ESP32 esphome#16804 by @swoboda1337
- [ci] Add ESP32 Variants clang-tidy run (S3/P4/C6) esphome#16825 by @swoboda1337
- [motion] Implement hub component for IMUs esphome#16226 by @clydebarrow (new-component) (new-feature) (new-platform)
- [esp32] Make no-default-board variant test explicit about platformio toolchain esphome#16847 by @swoboda1337
- [esp32] Fix clang-tidy on ESP-IDF 6 esphome#16850 by @swoboda1337
- Include model-driven display schemas in the language schema dump esphome#16872 by @bdraco
- [ade7880][airthings_wave_base] Remove kpfleming from CODEOWNERS esphome#16858 by @kpfleming
- [tests] Fail component test merge on conflicting duplicate IDs esphome#16849 by @bdraco
- [heatpumpir] Bump tonia/HeatpumpIR to 1.0.42 esphome#16880 by @swoboda1337
- [ade7880] Fix reverse active energy reading from reserved register esphome#16822 by @swoboda1337
- [mipi_spi] add WAVESHARE-ESP32-S3-TOUCH-AMOLED-2.16 esphome#16887 by @clydebarrow (new-feature)
- [pcm5122] Add PCM5122 audio DAC component esphome#15709 by @remcom (new-component) (new-feature) (new-platform)
- [dsmr] Update dsmr_parser library to 1.9.0 esphome#16881 by @PolarGoose
- [nrf52] native build - download toolchain and sdk in venv esphome#16388 by @tomaszduda23
- [dlms_meter] dlms_parser library esphome#15458 by @Tomer27cz (new-feature) (breaking-change) (new-platform)
- [usb_uart] Add Prolific PL2303 USB-serial driver esphome#16885 by @p1ngb4ck (new-feature)
- [xdb401] XDB401 Pressure Sensor esphome#15108 by @RT530 (new-component) (new-feature) (new-platform)
- [bmi270] Support Bosch BMI270 IMU esphome#16202 by @clydebarrow (new-component) (new-feature) (new-platform)
- [espidf] Fix idedata generation on Windows esphome#16894 by @swoboda1337
- [platformio] De-duplicate non-ESP32 lib_deps into common:idf-component-libs esphome#16893 by @swoboda1337
- [espidf] Warn when the install path is too long for Windows MAX_PATH esphome#16896 by @swoboda1337
- [lsm6ds] Add motion platform for STMicro LSM6DS IMU esphome#16232 by @clydebarrow (new-component) (new-feature) (new-platform)
- [tests] Isolate ESPHOME_LOG_STATES in main logs-states tests esphome#16905 by @clydebarrow
- [core] Make set_cpp_standard work on the native IDF toolchain esphome#16907 by @swoboda1337
- [resampler] Allow resampler to passthrough bits per sample instead of converting esphome#16892 by @kahrendt (new-feature)
- [improv_serial] Report stopped state when Wi-Fi is disabled esphome#16904 by @kbx81
- [tests] Mock target branch in memory-impact exclusion test esphome#16913 by @jesserockz
- [esp8266] Decode crash handler PC and backtrace in logs esphome#16911 by @bdraco
- [spi] Skip logging on begin_transaction() of an auto-releasing write-only SPI device esphome#16921 by @tjakubo
- [lvgl] Fix schema extraction esphome#16895 by @clydebarrow
- [mipi_spi] Implement automatic mapping of offsets esphome#16722 by @clydebarrow
- [esp32] Fix idedata generation failing on unset ESPHOME_ARDUINO esphome#16925 by @swoboda1337
- [core] Support platformio_options on the native ESP-IDF toolchain esphome#16917 by @swoboda1337
- [esp32] Add flash_mode and flash_frequency config options esphome#16920 by @swoboda1337 (new-feature)
- [psram] Make schema extractable with per-variant options esphome#16949 by @jesserockz
- [mipi_dsi] Add SWRESET command to M5Stack Tab5-V2 init sequence esphome#16975 by @clydebarrow
- [core] Attribute "took a long time" blocking warning to the owning script esphome#16768 by @bdraco
- [audio] Bump microMP3 to v0.2.3 esphome#16977 by @kahrendt
- [openthread] Fix InstanceLock releasing the lock twice on try_acquire esphome#16980 by @swoboda1337
- [docker] Remove alpine base, build only on debian esphome#16991 by @jesserockz
- [ci] Push branch-tagged docker images to ghcr.io for local testing esphome#16992 by @jesserockz
- [core] Stop parent git repos from breaking ESP-IDF/PlatformIO builds esphome#16994 by @jesserockz
- [docker] Bundle device-builder 1.0.1, make HA add-on builder-only esphome#16989 by @jesserockz
- [esp32_hosted] Bump esp_hosted to 2.12.9 esphome#16999 by @swoboda1337
- [ota] Scale ESP-IDF OTA erase watchdog to image size esphome#16998 by @swoboda1337
- Bump bundled esphome-device-builder to 1.0.3 esphome#17005 by @esphome[bot]
- Bump bundled esphome-device-builder to 1.0.4 esphome#17013 by @esphome[bot]
- Bump bundled esphome-device-builder to 1.0.6 esphome#17016 by @esphome[bot]
- Bump ruff from 0.15.12 to 0.15.13 esphome#16437 by @dependabot[bot]
- Bump pytest-codspeed from 5.0.1 to 5.0.2 esphome#16459 by @dependabot[bot]
- Bump requests from 2.34.1 to 2.34.2 esphome#16460 by @dependabot[bot]
- Bump github/codeql-action from 4.35.4 to 4.35.5 esphome#16461 by @dependabot[bot]
- Bump resvg-py from 0.3.1 to 0.3.2 esphome#16466 by @dependabot[bot]
- Bump codecov/codecov-action from 6.0.0 to 6.0.1 esphome#16500 by @dependabot[bot]
- Bump ruff from 0.15.13 to 0.15.14 esphome#16543 by @dependabot[bot]
- Bump actions/stale from 10.2.0 to 10.3.0 esphome#16544 by @dependabot[bot]
- Bump docker/build-push-action from 7.1.0 to 7.2.0 in /.github/actions/build-image esphome#16545 by @dependabot[bot]
- Bump pytest-codspeed from 5.0.2 to 5.0.3 esphome#16575 by @dependabot[bot]
- Bump the docker-actions group across 1 directory with 2 updates esphome#16578 by @dependabot[bot]
- Bump github/codeql-action from 4.35.5 to 4.36.0 esphome#16579 by @dependabot[bot]
- Bump aioesphomeapi from 45.0.4 to 45.2.2 esphome#16611 by @dependabot[bot]
- Bump aioesphomeapi from 45.2.2 to 45.3.1 esphome#16688 by @dependabot[bot]
- Bump pytest-asyncio from 1.3.0 to 1.4.0 esphome#16687 by @dependabot[bot]
- Bump tornado from 6.5.5 to 6.5.6 esphome#16704 by @dependabot[bot]
- Bump ruff from 0.15.14 to 0.15.15 esphome#16712 by @dependabot[bot]
- Bump CodSpeedHQ/action from 4.15.1 to 4.17.0 esphome#16730 by @dependabot[bot]
- Bump esptool from 5.2.0 to 5.3.0 esphome#16774 by @dependabot[bot]
- Bump github/codeql-action from 4.36.0 to 4.36.1 esphome#16775 by @dependabot[bot]
- Bump actions/checkout from 6.0.2 to 6.0.3 esphome#16776 by @dependabot[bot]
- Bump astral-sh/setup-uv from 8.1.0 to 8.2.0 esphome#16791 by @dependabot[bot]
- Bump astral-sh/setup-uv from 8.1.0 to 8.2.0 in /.github/actions/restore-python esphome#16790 by @dependabot[bot]
- Bump ruff from 0.15.15 to 0.15.16 esphome#16807 by @dependabot[bot]
- Bump github/codeql-action from 4.36.1 to 4.36.2 esphome#16808 by @dependabot[bot]
- Bump codecov/codecov-action from 6.0.1 to 7.0.0 esphome#16884 by @dependabot[bot]
- Bump tornado from 6.5.6 to 6.5.7 esphome#16883 by @dependabot[bot]
- Bump py7zr from 0.22.0 to 1.1.0 esphome#16901 by @dependabot[bot]
- Bump cryptography from 48.0.0 to 48.0.1 esphome#16909 by @dependabot[bot]