ESPHome 2025.11.0 - November 2025
Release Overview
ESPHome 2025.11.0 is a performance and reliability-focused release that makes your devices faster, more reliable, and more capable than ever before. WiFi connectivity gets a complete overhaul with intelligent mesh network handling, dramatically faster connection times, and enhanced security controls. Memory optimizations free up 2-31KB of RAM and 10KB+ of flash, giving even resource-constrained devices room to grow. A new infrastructure change slashes event processing latency by 600-1,300x—making BLE Proxy GATT operations rival local Bluetooth adapters, even over the network.
WiFi improvements address the most common connectivity pain points: devices no longer get stuck on failed access points in mesh networks, hidden network connections are 2-6 seconds faster, and the new min_auth_mode option provides security controls with WPA2 defaults. The redesigned connection strategy with intelligent AP selection and reliable reconnection logic delivers the rock-solid WiFi performance users expect.
Ultra-low latency event processing transforms responsiveness across BLE, USB, MQTT, ESP-NOW, and wake word detection—reducing latency from 0-16ms to just ~12 microseconds. Voice assistants respond faster to wake words, BLE devices pair quicker, and MQTT automations trigger with sub-millisecond precision. This zero-configuration optimization automatically benefits all affected components on ESP32 platforms.
Memory optimizations touch nearly every core component—WiFi scan management, select options, lights, climate controls, sensors, and the action framework. Sensor filter optimizations deliver the most dramatic gains, with sliding window filters saving up to 25KB of RAM on configurations that previously struggled with memory constraints. These improvements enable more complex configurations on the same hardware.
New hardware support expands ESPHome’s reach with 7 new components including the HDC2010 sensor, MCP3221 ADC, HLK-FM22X face recognition module, BH1900NUX sensor, RX8130 RTC, and TinyUSB foundation support for ESP32-S2/S3. Platform enhancements bring I2C and BLE logging to nRF52, while ESP32 gains hosted BLE for chips without native Bluetooth and ESP-NOW transport capabilities.
Enhanced WiFi Security and Reliability
Dramatically Improved WiFi Reliability and Connection Times (#11805)
A major step forward in WiFi reliability addresses critical connectivity issues in mesh networks and multi-AP environments. Previously, devices would get stuck repeatedly trying the strongest signal even when that access point was rejecting connections—a bug introduced in 2025.8.2 that made the priority-based failover system ineffective.
The redesigned connection strategy delivers measurable improvements:
- Intelligent AP selection: Connection failure history now takes precedence over signal strength, enabling automatic failover to working access points instead of getting stuck on failed BSSIDs
- Faster initial connections: Explicit hidden network probing phase with smart skipping of visible networks reduces connection time by 2-6 seconds
- Reliable reconnections: Two-attempt BSSID filtering eliminates false positives from normal WiFi stack transitions
- Natural mesh handling: Simplified architecture removes 150+ lines of complex BSSID cycling logic—the priority degradation system now naturally handles mesh networks through scan-based retry cycles
- Clearer diagnostics: State machine-based retry phases with improved logging make connection issues easier to troubleshoot
- Memory efficiency: Automatic priority reset when all BSSIDs fail equally (saves up to 96 bytes)
This release restores and improves upon the reliable failover behavior users expect in multi-AP deployments, while reducing connection latency and memory overhead.
Configurable Minimum Authentication Mode (#11814)
Added min_auth_mode configuration option to control WiFi authentication security:
- Secure default: WPA2 minimum authentication mode protects against downgrade attacks
- Explicit security control: Choose between WPA, WPA2, or WPA3 (ESP32 only)
- Backward compatibility: Can be lowered to WPA for legacy routers
wifi:
ssid: "MyNetwork"
password: "password123"
min_auth_mode: WPA2 # Recommended for securityMemory Optimizations for Resource-Constrained Devices
ESPHome 2025.11.0 delivers substantial memory improvements across the entire framework, with measured savings ranging from 2-7KB of RAM on typical devices and up to 31KB of RAM on sensor-heavy configurations. Flash savings reach 10KB+ on ESP32/ESP8266 platforms.
Sensor Filter Optimizations:
- Sliding window filters (#11282) - Saves 22-25KB RAM on large batch windows, 90% on sliding windows, 1,748 bytes flash on ESP8266. Prevents OOM crashes on ESP32 devices with multiple sensors
- Filter value lists (#11407) - Saves 444 bytes flash on ESP8266, 18-52% faster execution
- Calibration/OR filters (#11437) - Saves 464 bytes flash, 48 bytes RAM on ESP8266
Component Optimizations:
- WiFi component (#11205) - Saves 440-1,192 bytes RAM depending on network density
- Select component (#11514) - Saves 270-2,800 bytes per select depending on option count
- Light component (#11348) - Saves 1,756 bytes flash on ESP8266, ~108 bytes RAM per 6 lights
- Climate component (#11466, #11621) - Saves ~440 bytes RAM per climate entity
- Fan component (#11483, #11632) - Saves ~24 bytes per fan
- Event component (#11463, #11767) - Saves 1,248 bytes flash
- Global Controller Registry (#11772) - Saves 388-6,148 bytes RAM depending on entity count
- Action framework (#11704) - Saves 356 bytes flash, eliminates RAM allocations in automations
- Script component (#11308) - Saves 1,592 bytes flash on ESP32
- ESP32-IDF (#10930, #11441) - Saves ~10KB combined (1.3KB + 8.7KB)
- Network component (#11707) - Saves 32-72 bytes per network component
- Light effects (#11487) - Saves 24-32 bytes per effect
- WiFi priority (#11830) - Saves 3 bytes per network entry plus up to 96 bytes from auto-recovery
Note on Breaking Changes: These optimizations required API changes for external component developers. See Breaking Changes section for migration details. Standard YAML configurations remain fully compatible but custom code in lambdas may require updates.
Ultra-Low Latency Event Processing
Thread-Safe Loop Wake Mechanism (#11681)
A new infrastructure change eliminates event processing delays across multiple components. Previously, events from background tasks (BLE, USB, MQTT, ESP-NOW, wake word detection) would queue and wait up to 16ms for the next select() timeout before processing. The new wake_loop_threadsafe() mechanism uses a UDP loopback socket to immediately wake the main event loop when events arrive.
Latency Improvements:
- Before: 0-16ms average ~8ms
- After: ~12 microseconds
- Speedup: 600-1,300x faster event processing
Components with Ultra-Low Latency:
- BLE operations (#11663) - Bluetooth Proxy, BLE Client GATT operations, HomeKit pairing
- USB Host (#11683) - USB event processing over 1000x faster
- MQTT (#11695) - ESP32 only (ESP8266 already runs in main loop)
- ESP-NOW (#11696) - Packet reception and transmission completion
- Micro Wake Word (#11698) - Near-instant automation responses, all triggers fire within same millisecond
Real-World Impact:
- BLE Proxy GATT operations now rival or exceed BlueZ local adapters in Home Assistant, even when operating over the network
- Faster wake word detection response for voice assistants
- Improved BLE connection and pairing times
- Reduced MQTT automation trigger latency
- Faster USB event handling (e.g., Z-Wave PoE proxies)
This optimization requires no configuration changes and automatically benefits all affected components on ESP32 platforms.
High-Performance Networking for Media Streaming
Automatic Network Performance Tuning (#11812)
Introduced centralized high-performance networking system where components request optimized settings through network.require_high_performance_networking():
- PSRAM-aware configuration: Aggressive settings (512KB TCP windows) when PSRAM guaranteed, conservative (65KB windows) otherwise
- WiFi optimization: Automatically applies optimized WiFi driver settings when high-performance mode enabled
- Automatic enablement: Speaker media player automatically enables high-performance networking (fixes streaming stuttering issues)
- User control: New
network.enable_high_performanceoption to explicitly enable/disable
This optimization is critical for ESP32-S3 devices running voice assistants and media streaming, eliminating audio stuttering caused by insufficient WiFi buffer sizes.
PSRAM Configuration Options (#11411)
Added ignore_not_found option (default true) to allow disabling CONFIG_SPIRAM_IGNORE_NOTFOUND. When set to false on devices with guaranteed PSRAM, enables WiFi driver to configure larger buffers for optimal streaming performance. Also improves boot reliability by managing heap allocations before PSRAM initialization.
New Hardware Support
7 New Sensor/Device Components:
- HDC2010 (#6674) - Texas Instruments temperature and humidity sensor
- MCP3221 (#7764) - I2C A-D converter with configurable reference voltage
- HLK-FM22X (#8059) - Face recognition module family
- BH1900NUX (#8631) - Rohm Semiconductor temperature sensor
- RX8130 (#10511) - Epson RTC chip (used in M5Stack devices)
- BLE NUS Logger (#9846) - Logging over BLE for nRF52 platform
- TinyUSB (#11678) - USB device functionality foundation for ESP32-S2/S3
Extended Hardware Support:
- GP8403 DAC now supports GP8413 (15-bit) model (#7726) with higher precision
- Toshiba climate supports RAS-2819T air conditioner (#9490) with two-packet IR protocol
- Dallas temperature sensors support index-based addressing (#11346) for devices without programmable addresses
- SX126x LoRa module pins now support GPIO port expanders (#11782) for SeeedStudio SenseCAP Indicator
- Mopeka Standard Check sensors support alternate ID 0x44 (#10907)
Platform & Feature Expansions:
- nRF52 platform - I2C support (#8150), BLE NUS logging (#9846, #9861), GPIO voltage control (#9858), GPIO input by switching to polling mode (#11664), and Seeed XIAO BLE board improvements (#10698)
- ESP-NOW transport - Added ESP-NOW as a transport platform for packet_transport component (#11025)
- IR Remote protocols - Dyson AM07 fan support (#10163), Symphony protocol (#10777), Toshiba RAS-2819T AC (#9490)
ESP32 Platform Enhancements
ESP-IDF 5.5.1 and Arduino 3.3.2 (#9839)
Major framework updates bring the latest ESP-IDF 5.5.1 and Arduino 3.3.2 to ESPHome:
- ESP-IDF 5.5.1: Latest features and bug fixes from Espressif
- Arduino 3.3.2: Updated Arduino framework with improved stability
- Memory improvements: Significant RAM gains (+3.1-3.3MB free RAM)
- Platform version: Updated to 55.03.31-1
These updates are automatically applied when using the default framework versions.
Hosted BLE Support (#11167)
ESP32 P4 and other chips without integrated Bluetooth now support BLE through external controllers using ESP-Hosted API. Enables Bluetooth Proxy functionality on previously unsupported ESP32 variants.
Hosted OTA Support (#11562)
Firmware updates for ESP32 co-processors are now supported via ESP-Hosted API, enabling OTA functionality for hosted configurations.
Brownout Protection (#11306)
ESP-IDF builds now automatically reduce PHY TX power during brownout conditions to prevent boot loops. This feature was previously only available in Arduino framework builds. Can be disabled if needed through sdkconfig options.
Configurable Main Loop Stack Size (#10564)
ESP32 ESP-IDF configurations can now tune the main loop stack size for complex setups:
esp32:
framework:
type: esp-idf
advanced:
main_loop_stack_size: 16384 # Increase for deeply nested componentsFramework Source Options (#11125)
ESP32 framework configuration now accepts additional PlatformIO source schemes beyond HTTP, including symlink://, git://, and other repository protocols for local development.
OpenThread Improvements
Over-The-Air Updates (#11095)
OpenThread devices (ESP32-H2) now support OTA updates via esphome run. The mDNS address is automatically populated as the device’s default address, eliminating the need to manually specify --device <address>.
Sleepy End Device Support (#11374)
Added poll_period configuration for MTD (Minimal Thread Device) mode, enabling Sleep End Device (SED) behavior for battery-powered Thread devices:
openthread:
device_type: MTD
poll_period: 40s # Radio turns off between pollsnRF52 Platform Expansion
The nRF52 (Zephyr) platform received extensive new functionality:
- I2C Support (#8150) - Full I2C bus support for sensors and peripherals
- BLE Logging (#9846, #9861) - Log viewing via
esphome logs --device BLEor MAC address - GPIO High Voltage Mode (#9858) - Adjustable voltage levels for USB-powered operation
- Xiao BLE Bootloader Fix (#10698) - Corrected default bootloader, fixed upload, added runtime mismatch detection
LVGL Display Enhancements
Simplified Layout System (#10149)
LVGL widgets now support shorthand layout methods for easier configuration:
lvgl:
widgets:
- container:
layout: vertical # Simple flex layout
widgets:
- label:
text: "Item 1"
- label:
text: "Item 2"
- container:
layout: 3x2 # Simple grid layoutNew container widget provides styling-free base with 100% default dimensions. Added stretch option for flex layouts and substantial speedup of config validation.
Rendering Triggers and NaN Substitution (#11628, #11712)
Added on_draw_start and on_draw_end triggers for coordinating e-paper display updates. Text formatting now supports NaN substitution for graceful handling of unavailable sensor values:
lvgl:
widgets:
- label:
text:
format: "%.1f°C"
args: [id(temp_sensor)]
if_nan: "--.-°C" # Show when sensor unavailableDisplay Component Improvements
E-Paper SPI Refactoring (#11540)
Major improvements to e-paper displays:
- Faster transfers: Larger data blocks for Spectra displays
- Optimized state machine: Code-based sequence instead of linear queue saves memory
- Board-specific configs: Pre-configured pin mappings (Seeed-reTerminal-E1002)
- Improved timing: Internal delay handling instead of loop disabling
- Fixed busy pin logic (#11349): Corrected active-low detection
Component Idle Detection (#11651)
New component.is_idle condition and is_idle() method for automations that need to wait for displays to finish updating before proceeding:
lvgl:
on_draw_end:
- component.update: epaper_display
- wait_until:
component.is_idle: epaper_display # Wait for display ready
- lvgl.resume:Configuration and Developer Tools
Advanced Substitution Features (#11203)
The !extend and !remove tags now support substitutions and Jinja templates:
substitutions:
COMPONENT_TO_REMOVE: component3
packages:
base:
- id: !remove ${COMPONENT_TO_REMOVE} # Conditional removalMemory Analysis Command (#11395)
New esphome analyze-memory <config.yaml> command provides detailed memory usage breakdown by component:
- Compiles configuration (fast relink if cached)
- Analyzes memory usage by component and external components
- Displays comprehensive memory report
- Helps identify optimization opportunities
Component-Specific Enhancements
Sensors
- Dallas temperature sensors support index-based addressing (#11346) for devices without programmable addresses
- INA2xx reset control (#10787): Preserve counters through ESP resets with
reset_on_boot: false - XGZP68xx oversampling (#10306): Configurable oversampling up to 32768x for improved accuracy
Improved Improv WiFi Provisioning (#10757)
ESP32 Improv now supports next_url with template substitutions for post-provisioning redirection:
esp32_improv:
next_url: "https://example.com/setup?device={{device_name}}&ip={{ip_address}}"Sensor Heartbeat Filter Options (#10993)
Heartbeat filter adds optimistic mode to forward new values immediately while still repeating periodically:
sensor:
- platform: template
filters:
- heartbeat:
period: 100ms
optimistic: true # Forward immediately + repeatESP-NOW Packet Transport (#11025)
ESP-NOW now available as transport platform for packet_transport component, enabling direct ESP32-to-ESP32 wireless sensor data transmission.
Remote Transmitter Non-Blocking Mode (#11524)
Remote transmitter operations no longer block the main loop by default, preventing “took a long time for an operation” warnings during long IR transmissions.
HTTP Request Trigger Variables (#11464)
HTTP request actions now pass trigger variables correctly into on_response and on_error triggers.
Breaking Changes
User-Facing Breaking Changes
WiFi & Network
WiFi: WiFi and Ethernet components no longer block other components’ setup until connected. Components with setup priority > WIFI (802.3) now initialize immediately, even if network is disconnected. #9823
WiFi min_auth_mode: ESP8266 default will change from
WPAtoWPA2in 2026.6.0. Users with WPA-only routers must explicitly setmin_auth_mode: WPAbefore then. #11814WiFi priority: The
priorityconfiguration option now only accepts integers (-128 to 127) instead of floats. Changepriority: 5.5topriority: 5. #11830.local addresses: .local addresses now require mDNS to be enabled for DNS resolution. Previously attempted DNS resolution could add 10+ second delays. #11508
Network high performance: Speaker media player now always enables high performance networking mode (previously only with codec support). Users can override with
enable_high_performanceunder the network component if needed. #11812
ESP32 Platform
ESP32 brownout protection: ESP-IDF now reduces PHY TX power during brownout to prevent boot loops. Can be disabled with
sdkconfig_options: CONFIG_ESP_PHY_REDUCE_TX_POWER: nif needed. #11306ESP32-S3 PSRAM: PSRAM mode is now required when multiple PSRAM modes are available (ESP32-S3 only). Users must explicitly choose PSRAM mode in configuration. #11470
Component Behavior Changes
Script max_runs: Queued scripts now default to
max_runs: 5(allowing 1 running + 4 queued instances) instead of unlimited to prevent crashes from unbounded memory growth. Setmax_runsexplicitly if you need more capacity. #11308Remote transmitter: Remote transmitter now defaults to non-blocking mode to prevent long blocking operations (>30ms). #11524
Fan preset modes: Fan preset modes now preserve the order defined in YAML instead of being sorted alphabetically. The order in Home Assistant will match your YAML configuration order. #11483
Select state: The public
statemember has been deprecated and will be removed in 2026.5.0. Usecurrent_option()method instead. Deprecation warnings will be shown during compilation. #11623
Component-Specific Changes
HM3301: AQI calculation updated to EPA 2024 standard. Values will change compared to the old 2012 formula. #9442
GDK101: Firmware version is now reported as a string instead of a float division result. #11029
Uponor Smatrix: The
addressproperty of theuponor_smatrixcomponent was removed. Device addresses are now 32-bit instead of separate 16-bit system and device addresses. Update configurations by prepending the previous system address to individual device addresses. #11066Pipsolar: Fixed typo
warnung_low_pv_energyrenamed towarning_low_pv_energy. Update YAML configurations. #10291E-Paper SPI: Busy pin logic corrected to match datasheet (active low). Some e-paper displays may behave differently. #11349
nRF52 bootloader: Default bootloader changed for
xiao_bleandadafruit_itsybitsy_nrf52840boards. Warning shown if generic Adafruit bootloader is used. #10698HTTP request triggers: Changed from multiple on_response/on_error triggers to a single trigger that receives variables. Update automation configurations to use the new variable-based trigger format. #11464
YAML Lambda Changes
Users who access component members directly in YAML lambdas may need updates:
Select: Change
id(my_select).statetoid(my_select).current_option()(deprecated, will be removed in 2026.5.0). #11623Fan: Change
id(my_fan).preset_modetoid(my_fan).get_preset_mode(). #11632Event: Change
id(my_event).last_event_typetoid(my_event).get_last_event_type(). #11767
Breaking Changes for Developers
The following changes affect external component developers. Standard YAML configurations are generally not affected.
Core Framework Changes
Action/Trigger Framework: All action/trigger/condition method signatures changed to use const references (
const Ts&... x) instead of pass-by-value (Ts... x). See the Action Framework Performance Optimization blog post for migration details. #11704Controller API: Controllers now use global registry pattern. Method signatures changed to remove unused state parameters (e.g.,
on_sensor_update(sensor::Sensor *obj)instead ofon_sensor_update(sensor::Sensor *obj, float state)). External controller implementations extremely rare. #11772EntityBase::hash_base(): Removed deprecated virtual method (deprecated since June 2022). Remove
hash_base()overrides from external components. #11783hexencode(): Removed function deprecated since 2022.1. Use alternative encoding methods. #11383
Schema constants: Removed deprecated schema constants from core. Update external components to use current schema helpers. #11591
Component-Specific API Changes
Climate
See the Climate Entity Class: FiniteSetMask and Flash Storage Optimizations blog post for migration details.
Custom modes storage: Changed from
std::set<std::string>toFiniteSetMaskfor supported modes, and fromstd::vector<std::string>tostd::vector<const char *>for custom fan modes and presets. #11466, #11621Member access: Climate device members (
custom_fan_mode_,custom_preset_) are now private. Use protected setter methods (set_custom_fan_mode_(),set_custom_preset_()) in derived classes. #11621Deprecated methods: Removed methods deprecated in 1.20 (July 2021). #11388
Light
See the Light Entity Class: Memory Optimizations blog post for migration details.
Color modes: Replaced
std::set<ColorMode>withColorModeMaskbitmask class. #11348Effect names: Changed from
std::stringtoconst char *for effect names. #11487Deprecated methods: Removed methods deprecated in 2021.8.0. #11389
Fan
See the Fan Entity Class: Preset Mode Flash Storage and Order Preservation blog post for migration details.
Preset modes: Changed from
std::set<std::string>tostd::vector<const char *>. The.preset_modepublic member has been removed - useget_preset_mode()for reading andset_preset_mode_()for writing in derived classes. #11483, #11632Deprecated code: Removed code deprecated in 2022.2. #11392
Select
See the Select Entity Class: Index-Based Operations and Flash Storage blog post for migration details.
Options storage: Changed from
std::vector<std::string>toFixedVector<const char *>. #11514State member: Public
statemember deprecated (will be removed in 2026.5.0). Usecurrent_option()method instead. #11623Index-based operations: Added optional
control(size_t index)override for more efficient implementations. #11623
Event
See the Event Entity Class: Memory Optimizations blog post for migration details.
- Event types storage: Changed from
FixedVector<std::string>toFixedVector<const char *>. Thelast_event_typefield is now private - useget_last_event_type()getter instead. #11463, #11767
Network Components
WiFi scan results: External components that access WiFi scan results after connection must call
wifi.request_wifi_scan_results()in theirto_code()function to prevent cleanup. #11205use_address: Changed from
const std::string &toconst char *in WiFi, Ethernet, and OpenThread components. Update external components callingget_use_address()orset_use_address(). #11707
Other Components
Cover: Removed methods deprecated in 2021.9. Update to current cover API. #11391
Nextion: Removed methods deprecated in 1.20 (July 2021). Update to current nextion API. #11393
ESP32-Specific Changes
- ESP-IDF advanced options: New options to disable libc locks in IRAM and VFS features. External components using these features must call helper functions to register needs. #10930, #11441
Migration Resources
For detailed migration guides and examples, see the ESPHome developer documentation.
The 2025.11 release blog posts include comprehensive migration examples for common use cases.
Full list of changes
New Features
- [esp32] Accept more framework URL schemes as sources esphome#11125 by @j9brown (new-feature)
- [esp32_ble] Add support for hosted BLE esphome#11167 by @swoboda1337 (new-feature)
- [esp32] Add option to disable libc locks in IRAM, saving ~1.3KB RAM esphome#10930 by @bdraco (new-feature) (breaking-change)
- [ina2xx_base] add device reset-on-boot disablement option esphome#10787 by @joshuaboniface (new-feature)
- [toshiba] Add support for RAS-2819T air conditioner esphome#9490 by @exotime (new-feature)
- [bh1900nux] Add bh1900nux temperature Sensor esphome#8631 by @B48D81EFCC (new-component) (new-feature) (new-platform)
- [xgzp68xx] Add oversampling config and tidy up implementation. esphome#10306 by @ned14 (new-feature)
- [remote_base] Add Symphony IR protocol (encode/decode) with command_repeats support esphome#10777 by @leodrivera (new-feature)
- [thermostat] Add humidity support esphome#11286 by @kbx81 (new-feature)
- [nrf52, ble_nus] add logging over BLE esphome#9846 by @tomaszduda23 (new-component) (new-feature)
- [substitutions] !extend and !remove now support substitutions and jinja esphome#11203 by @jpeletier (new-feature)
- [cli] Add
analyze-memorycommand esphome#11395 by @bdraco (new-feature) - [mipi_rgb] Add Waveshare 5" 1024x600 esphome#11206 by @clydebarrow (new-feature)
- [esp32_improv]: add next_url support for WiFi provisioning esphome#10757 by @amankrokx (new-feature)
- [espnow] Add transport platform for packet_transport esphome#11025 by @EasilyBoredEngineer (new-feature) (new-platform)
- [sensor] Add optimistic option to heartbeat filter esphome#10993 by @pkejval (new-feature)
- [openthread] Fix OTA by populating CORE.address with device’s mDNS address esphome#11095 by @danstiner (new-feature)
- [nrf52] support BLE –device for logging esphome#9861 by @tomaszduda23 (new-feature)
- [hdc2010] New component esphome#6674 by @optimusprimespace (new-component) (new-feature) (new-platform)
- [remote_base] add support for Dyson cool AM07 tower fan esphome#10163 by @aanban (new-feature)
- [remote_transmitter] Add non-blocking mode esphome#11524 by @swoboda1337 (new-feature) (breaking-change)
- [lvgl] Trigger improvements and additions esphome#11628 by @clydebarrow (new-feature)
- [component] Add is_idle method and condition esphome#11651 by @clydebarrow (new-feature)
- Add support for Mopeka standard check alternate ID esphome#10907 by @pixelatedmirror (new-feature)
- [esp32] Make loop task stack size configurable esphome#10564 by @idstein (new-feature)
- [nrf52, i2c] i2c support for nrf52 esphome#8150 by @tomaszduda23 (new-feature)
- [esp32_hosted] Initial OTA implementation esphome#11562 by @swoboda1337 (new-feature) (new-platform)
- [epaper_spi] Refactoring esphome#11540 by @clydebarrow (new-feature)
- [tinyusb] New component esphome#11678 by @kbx81 (new-component) (new-feature)
- [lvgl] Layout improvements esphome#10149 by @clydebarrow (new-feature)
- Dallas indexing esphome#11346 by @leejoow (new-feature)
- [gp8403] Add gp8413 (15 bits) DAC model esphome#7726 by @SeByDocKy (new-feature)
- [lvgl] Allow text substitution for NaN esphome#11712 by @clydebarrow (new-feature)
- [openthread] add poll period for mtd devices esphome#11374 by @rwrozelle (new-feature)
- [psram] Add option to disable ignore not found sdkconfig setting esphome#11411 by @kahrendt (new-feature)
- Add MCP3221 i2c A-D-Converter esphome#7764 by @philippderdiedas (new-component) (new-feature) (new-platform)
- [nrf52] api esphome#11751 by @lboue (new-feature)
- [sx126x] Change BUSY, RST, DIO1 pins to general GPIO (from internal) esphome#11782 by @PaulSchulz (new-feature)
- HLK-FM22X Face Recognition module component esphome#8059 by @OnFreund (new-component) (new-feature) (new-platform)
- Add support for RX8130 RTC Chip esphome#10511 by @Beormund (new-component) (new-feature) (new-platform)
- [nrf52,gpio] add gpio levels for high voltage mode esphome#9858 by @tomaszduda23 (new-feature)
- [wifi] Add min_auth_mode configuration option esphome#11814 by @bdraco (new-feature) (breaking-change)
- [network, psram, speaker wifi] Use CORE.data to enable high performance networking esphome#11812 by @kahrendt (new-feature) (breaking-change)
New Components
- [bh1900nux] Add bh1900nux temperature Sensor esphome#8631 by @B48D81EFCC (new-component) (new-feature) (new-platform)
- [nrf52, ble_nus] add logging over BLE esphome#9846 by @tomaszduda23 (new-component) (new-feature)
- [hdc2010] New component esphome#6674 by @optimusprimespace (new-component) (new-feature) (new-platform)
- [tinyusb] New component esphome#11678 by @kbx81 (new-component) (new-feature)
- Add MCP3221 i2c A-D-Converter esphome#7764 by @philippderdiedas (new-component) (new-feature) (new-platform)
- HLK-FM22X Face Recognition module component esphome#8059 by @OnFreund (new-component) (new-feature) (new-platform)
- Add support for RX8130 RTC Chip esphome#10511 by @Beormund (new-component) (new-feature) (new-platform)
New Platforms
- [bh1900nux] Add bh1900nux temperature Sensor esphome#8631 by @B48D81EFCC (new-component) (new-feature) (new-platform)
- [espnow] Add transport platform for packet_transport esphome#11025 by @EasilyBoredEngineer (new-feature) (new-platform)
- [hdc2010] New component esphome#6674 by @optimusprimespace (new-component) (new-feature) (new-platform)
- [esp32_hosted] Initial OTA implementation esphome#11562 by @swoboda1337 (new-feature) (new-platform)
- [gdk101] Fix fw version reporting esphome#11029 by @Szewcson (breaking-change) (new-platform)
- Add MCP3221 i2c A-D-Converter esphome#7764 by @philippderdiedas (new-component) (new-feature) (new-platform)
- HLK-FM22X Face Recognition module component esphome#8059 by @OnFreund (new-component) (new-feature) (new-platform)
- Add support for RX8130 RTC Chip esphome#10511 by @Beormund (new-component) (new-feature) (new-platform)
Breaking Changes
- [wifi] Free scan results memory after connection (saves up to 1.2KB RAM) esphome#11205 by @bdraco (breaking-change)
- [esp32] Add option to disable libc locks in IRAM, saving ~1.3KB RAM esphome#10930 by @bdraco (new-feature) (breaking-change)
- [esp32] Reduce tx power on IDF in the event of a brownout esphome#11306 by @swoboda1337 (breaking-change)
- [nrf52] add xiao_ble board esphome#10698 by @tomaszduda23 (breaking-change)
- [light] Use bitmask instead of std::set for color modes esphome#11348 by @bdraco (breaking-change)
- [script] Fix unbounded queue growth, optimize queued mode (default max_runs=5) esphome#11308 by @bdraco (breaking-change)
- [light] Clean up deprecated functions from 1.21 esphome#11389 by @jesserockz (breaking-change)
- [climate] Clean up deprecated functions from 1.20 esphome#11388 by @jesserockz (breaking-change)
- [nextion] Clean up deprecated code from 1.20 esphome#11393 by @jesserockz (breaking-change)
- remove hexencode due 2022.1 deprecation esphome#11383 by @JuantAldea (breaking-change)
- [uponor_smatrix] Use combined 32 bit addresses instead of separate 16 bit system and device addresses esphome#11066 by @kroimon (breaking-change)
- [fan] Clean up deprecated code from 2022.2 esphome#11392 by @jesserockz (breaking-change)
- [cover] Clean up deprecated functions from 2021.9 esphome#11391 by @jesserockz (breaking-change)
- [epaper_spi] Fix busy pin logic esphome#11349 by @egalli-dev (breaking-change)
- [pipsolar] cleanup / refactoring esphome#10291 by @patagonaa (breaking-change)
- [esp32] Add advanced options to disable unused VFS features (saves ~8.7 KB flash) esphome#11441 by @bdraco (breaking-change)
- [event] Replace std::set with FixedVector for event type storage esphome#11463 by @bdraco (breaking-change)
- [light] Store effect names in flash (const char*) to save RAM esphome#11487 by @bdraco (breaking-change)
- [climate] Replace std::set with FiniteSetMask for trait storage esphome#11466 by @bdraco (breaking-change)
- [http_request] Pass trigger variables into on_response/on_error esphome#11464 by @jesserockz (breaking-change)
- [select] Store options in flash to reduce RAM usage esphome#11514 by @bdraco (breaking-change)
- [core] Remove deprecated schema constants esphome#11591 by @jesserockz (breaking-change)
- [remote_transmitter] Add non-blocking mode esphome#11524 by @swoboda1337 (new-feature) (breaking-change)
- [core] .local addresses are only resolvable if mDNS is enabled esphome#11508 by @Links2004 (breaking-change)
- [fan] Use std::vector for preset modes, preserve config order esphome#11483 by @bdraco (breaking-change)
- [climate] Replace std::vectorstd::string with const char* for custom fan modes and presets esphome#11621 by @bdraco (breaking-change)
- [psram] Require mode for S3 esphome#11470 by @clydebarrow (breaking-change)
- [network] Store use_address in RODATA to save RAM esphome#11707 by @bdraco (breaking-change)
- [fan] Remove duplicate preset mode storage to save RAM esphome#11632 by @bdraco (breaking-change)
- [select] Refactor to index-based operations for immediate and future RAM savings esphome#11623 by @bdraco (breaking-change)
- [core] Reduce action framework argument copies by 83% esphome#11704 by @bdraco (breaking-change)
- [gdk101] Fix fw version reporting esphome#11029 by @Szewcson (breaking-change) (new-platform)
- [event] Store event types in flash memory esphome#11767 by @bdraco (breaking-change)
- Updated AQI calculation for HM3301 to the new standard esphome#9442 by @optimusprimespace (breaking-change)
- [core] Remove deprecated EntityBase::hash_base() method esphome#11783 by @bdraco (breaking-change)
- [core] Implement Global Controller Registry to reduce RAM usage esphome#11772 by @bdraco (breaking-change)
- [wifi][ethernet] Don’t block setup until connected esphome#9823 by @clydebarrow (breaking-change)
- [wifi] Change priority type from float to int8_t esphome#11830 by @bdraco (breaking-change)
- [wifi] Add min_auth_mode configuration option esphome#11814 by @bdraco (new-feature) (breaking-change)
- [network, psram, speaker wifi] Use CORE.data to enable high performance networking esphome#11812 by @kahrendt (new-feature) (breaking-change)
Beta Changes
- [ci] Reduce release time by removing 21 redundant ESP32-S3 IDF tests esphome#11850 by @bdraco
- [esp32] Update the recommended platform to 55.03.31-2 esphome#11865 by @swoboda1337
- [core] Fix wait_until hanging when used in on_boot automations esphome#11869 by @bdraco
- [api] Eliminate heap allocations when transmitting Event types esphome#11773 by @bdraco
- [esp32_ble_tracker] Use initializer_list to eliminate compiler warning and reduce flash usage esphome#11861 by @bdraco
- [api][event] Send events immediately to prevent loss during rapid triggers esphome#11777 by @bdraco
- [thermostat] Replace std::map with FixedVector, reduce flash usage esphome#11875 by @bdraco
- [mqtt] Fix crash with empty broker during upload/logs esphome#11866 by @bdraco
- [light] Fix dangling reference in compute_color_mode causing memory corruption esphome#11868 by @bdraco
- [wifi][ethernet] Fix spurious warnings and unclear status after PR #9823 esphome#11871 by @bdraco
- [wifi] Fix slow reconnection after connection loss for all network types esphome#11873 by @bdraco
- [esp32] Make esp-idf default framework for P4 esphome#11884 by @clydebarrow
- [esp32] Add sdkconfig flag to make OTA work for 32MB flash esphome#11883 by @clydebarrow
- [light] Fix missing
ColorMode::BRIGHTNESScase in logging esphome#11836 by @edwardtfn - [wifi] Allow
use_psramwith Arduino esphome#11902 by @edwardtfn - [uart] Improve error handling and validate buffer size esphome#11895 by @swoboda1337
- [ld2412] Fix stuck targets by adding timeout filter esphome#11919 by @bdraco
- [ld2410] Add timeout filter to prevent stuck targets esphome#11920 by @bdraco
- [scheduler] Fix timing breakage after 49 days of uptime on ESP8266/RP2040 esphome#11924 by @bdraco
- [analyze-memory] Show all core symbols > 100 B instead of top 15 esphome#11909 by @bdraco
- [sntp] Merge multiple instances to fix crash and undefined behavior esphome#11904 by @bdraco
- [web_server.ota] Merge multiple instances to prevent undefined behavior esphome#11905 by @bdraco
- [web_server_idf] Fix lwIP assertion crash by shutting down sockets on connection close esphome#11937 by @bdraco
- [uart] Setup uart pins only if flags are set esphome#11914 by @asergunov
All changes
- [ci] Reduce component test group size to prevent runner disk exhaustion esphome#11121 by @bdraco
- [ci] Reduce component test group size to 10 to prevent runner disk exhaustion esphome#11122 by @bdraco
- [esp32] Accept more framework URL schemes as sources esphome#11125 by @j9brown (new-feature)
- [stale] Increase operations-per-run esphome#11135 by @swoboda1337
- [esp32_ble_tracker] Replace std::vector with StaticVector for listeners and clients esphome#11173 by @bdraco
- [web_server] Consolidate duplicate client connection checks (saves 288 bytes of flash) esphome#11116 by @bdraco
- [web_server] Reduce code duplication in JSON generation with helper functions esphome#11117 by @bdraco
- [mdns] Conditionally store services to reduce RAM usage by 200-464 bytes esphome#11180 by @bdraco
- [core] Optimize looping_components_ with FixedVector to save flash esphome#11183 by @bdraco
- [core] Add make_name_with_suffix helper to optimize string concatenation esphome#11176 by @bdraco
- [http_request] Pass parameters by const reference to reduce flash usage esphome#11184 by @bdraco
- [socket] Split LWIP socket classes to reduce memory overhead on ESP8266/RP2040 esphome#11172 by @bdraco
- [esp32_ble] Replace handler vectors with StaticVector for 560B-2KB memory savings esphome#11200 by @bdraco
- [bluetooth_proxy] Use FixedVector for GATT characteristics and descriptors esphome#11214 by @bdraco
- [network] Optimize get_use_address() to return const reference instead of a copy esphome#11218 by @bdraco
- [docs] Add state management best practices to CLAUDE.md esphome#11224 by @bdraco
- [docs] Add embedded systems optimization best practices to AI instructions esphome#11225 by @bdraco
- Bump pillow to 11.3.0 esphome#11239 by @bdraco
- [netlify] Pin python version esphome#11244 by @jesserockz
- [wifi] Free scan results memory after connection (saves up to 1.2KB RAM) esphome#11205 by @bdraco (breaking-change)
- [core] Use FixedVector for automation condition vectors to save 384 bytes flash esphome#11237 by @bdraco
- [wifi] Use FixedVector for scan results to reduce flash usage esphome#11216 by @bdraco
- [web_server_idf] Use std::vector instead of std::set for SSE sessions esphome#11233 by @bdraco
- [light] Use FixedVector for LightState effects list esphome#11232 by @bdraco
- [api] Convert HomeassistantActionRequest vectors to FixedVector for flash savings esphome#11229 by @bdraco
- [mdns] Use FixedVector for txt_records to reduce flash usage esphome#11228 by @bdraco
- [core] Fix regression from #10654 esphome#11248 by @stuartparmenter
- [const] Add CONF_ROWS esphome#11249 by @stuartparmenter
- [ci] Group all PR builds, isolate direct changes for full validation on dev esphome#11193 by @bdraco
- [ci] Add Python 3.14 testing and streamline version matrix esphome#11238 by @bdraco
- [esp32_hosted] Bump hosted components esphome#11170 by @swoboda1337
- [esp32] Remove kconfiglib from requirements.txt esphome#11210 by @thanegill
- [esp32_rmt_led_strip] Don’t send reset if duration is zero esphome#11235 by @swoboda1337
- [ci] Isolate openthread esphome#11259 by @swoboda1337
- [esp32] Bump IDF version to 5.5.1 and Arduino version to 3.3.2 esphome#9839 by @swoboda1337
- [esp32_ble] Add support for hosted BLE esphome#11167 by @swoboda1337 (new-feature)
- [esp32] Add option to disable libc locks in IRAM, saving ~1.3KB RAM esphome#10930 by @bdraco (new-feature) (breaking-change)
- [api] Use FixedVector for ListEntitiesServicesResponse args esphome#11230 by @bdraco
- [api] Use std::unique_ptr for fixed-size byte buffers in Noise protocol esphome#11278 by @bdraco
- [api] Use FixedVector for HomeAssistantServiceCallAction to reduce flash usage and avoid realloc esphome#11277 by @bdraco
- [git] Automatically recover from broken git repositories in external_components esphome#11246 by @bdraco
- [api, climate, thermostat] Implement feature_flags for
climateesphome#10987 by @kbx81 - [i2s_audio] Refactor to use CORE.data instead of module-level globals esphome#11223 by @bdraco
- [esp32_ble] Refactor to use CORE.data instead of module-level globals esphome#11222 by @bdraco
- [esp32_ble_tracker] Refactor to use CORE.data instead of module-level globals esphome#11220 by @bdraco
- [api] Use FixedVector for ExecuteServiceRequest/Argument arrays to eliminate reallocations esphome#11270 by @bdraco
- [ci] Merge components with different buses to reduce CI time esphome#11251 by @bdraco
- [esp32] Reduce tx power on IDF in the event of a brownout esphome#11306 by @swoboda1337 (breaking-change)
- [ina2xx_base] add device reset-on-boot disablement option esphome#10787 by @joshuaboniface (new-feature)
- [tests] Fix ESP32-C3 component test binary size by using larger partition table esphome#11319 by @bdraco
- Synchronise Device Classes from Home Assistant esphome#11285 by @esphomebot
- [toshiba] Add support for RAS-2819T air conditioner esphome#9490 by @exotime (new-feature)
- [cap1188] remove delays in setup esphome#11317 by @mrtoy-me
- [nrf52] add xiao_ble board esphome#10698 by @tomaszduda23 (breaking-change)
- [bh1900nux] Add bh1900nux temperature Sensor esphome#8631 by @B48D81EFCC (new-component) (new-feature) (new-platform)
- [debug] Replace std::map with struct array for ESP32 chip features esphome#11307 by @bdraco
- [tests] Add i2c_id to mcp47a1 & mcp4725 and remove from isolation esphome#11324 by @swoboda1337
- [ci] Fix test_build_components missing test files with hyphen naming pattern esphome#11329 by @bdraco
- [xgzp68xx] Add oversampling config and tidy up implementation. esphome#10306 by @ned14 (new-feature)
- [remote_base] Add Symphony IR protocol (encode/decode) with command_repeats support esphome#10777 by @leodrivera (new-feature)
- [tests] Migrate remote_transmitter/receiver to common bus definitions esphome#11325 by @bdraco
- [tests] Remove superfluous else-blocks from lambdas esphome#11322 by @JuantAldea
- [total_daily_energy] Fix ID conflicts in component test configuration esphome#11337 by @bdraco
- [thermostat] Add humidity support esphome#11286 by @kbx81 (new-feature)
- [api] Update to use new climate API esphome#11357 by @kbx81
- [web_server] Update to use new climate API esphome#11363 by @kbx81
- [mqtt] Update to use new climate API esphome#11360 by @kbx81
- [prometheus] Update to use new climate API esphome#11361 by @kbx81
- [nrf52] fix task names in logs esphome#11367 by @tomaszduda23
- [nrf52, ble_nus] add logging over BLE esphome#9846 by @tomaszduda23 (new-component) (new-feature)
- make types sensors_t and sensor_type_t internal to StatsdComponent esphome#11345 by @JuantAldea
- [api][time] Refactor timezone update logic for cleaner code esphome#11327 by @bdraco
- [scheduler] Replace defer queue deque with vector to avoid 512-byte upfront allocation esphome#11305 by @bdraco
- [ci] Add automated memory impact analysis for pull requests esphome#11242 by @bdraco
- [light] Use bitmask instead of std::set for color modes esphome#11348 by @bdraco (breaking-change)
- [esp32_ble_client] Remove duplicate MAC address extraction in set_address() esphome#11358 by @bdraco
- [wifi] Replace std::vector with std::unique_ptr for WiFi scan buffer esphome#11364 by @bdraco
- [bluetooth_proxy] Merge duplicate loops in get_connection_() esphome#11359 by @bdraco
- [mdns] Use std::unique_ptr for TXT records to reduce ESP32 flash usage esphome#11362 by @bdraco
- [sensor] Optimize sliding window filters to eliminate heap fragmentation esphome#11282 by @bdraco
- [mqtt] Reduce flash usage by optimizing ArduinoJson assignments esphome#11340 by @bdraco
- [wifi] Optimize WiFi scanning to reduce copies and heap allocations esphome#11323 by @bdraco
- [script] Fix unbounded queue growth, optimize queued mode (default max_runs=5) esphome#11308 by @bdraco (breaking-change)
- [wifi] Convert fast_connect to compile-time define, save 156-1024 bytes flash esphome#11328 by @bdraco
- [wifi] Optimize WiFi scan results with in-place construction esphome#11330 by @bdraco
- Migrate from hexencode() to format_hex_pretty() in Kuntze component esphome#11372 by @JuantAldea
- [substitutions] !extend and !remove now support substitutions and jinja esphome#11203 by @jpeletier (new-feature)
- [light] Clean up deprecated functions from 1.21 esphome#11389 by @jesserockz (breaking-change)
- [climate] Clean up deprecated functions from 1.20 esphome#11388 by @jesserockz (breaking-change)
- [nextion] Clean up deprecated code from 1.20 esphome#11393 by @jesserockz (breaking-change)
- [ci] Fix memory impact analysis failing on fork PRs esphome#11380 by @bdraco
- remove hexencode due 2022.1 deprecation esphome#11383 by @JuantAldea (breaking-change)
- [substitutions] Recursive substitutions and better jinja error handling and debug help esphome#10806 by @jpeletier
- [cli] Add
analyze-memorycommand esphome#11395 by @bdraco (new-feature) - [ci] Fix fork PR workflow failing to find PRs from forks esphome#11396 by @bdraco
- [nrf52] add missing defines for tests esphome#11384 by @tomaszduda23
- [uponor_smatrix] Use combined 32 bit addresses instead of separate 16 bit system and device addresses esphome#11066 by @kroimon (breaking-change)
- [fan] Clean up deprecated code from 2022.2 esphome#11392 by @jesserockz (breaking-change)
- [mipi_rgb] Add Waveshare 5" 1024x600 esphome#11206 by @clydebarrow (new-feature)
- [ci] Skip memory analysis when only Python/config files change in core esphome#11397 by @bdraco
- [climate] Add basic compile tests for climate component esphome#11404 by @bdraco
- [tests] Fix flaky test_noise_corrupt_encrypted_frame integration test esphome#11405 by @bdraco
- [esp32][ci] Fix IRAM overflow in grouped component tests for ESP32-IDF esphome#11386 by @bdraco
- [cover] Clean up deprecated functions from 2021.9 esphome#11391 by @jesserockz (breaking-change)
- MQTT Light - Min/Max Color Temperature esphome#11103 by @cram42
- [climate] First pass at some optimization esphome#11366 by @kbx81
- [esp32_improv]: add next_url support for WiFi provisioning esphome#10757 by @amankrokx (new-feature)
- [epaper_spi] Fix busy pin logic esphome#11349 by @egalli-dev (breaking-change)
- [climate] Migrate components to the new API esphome#11369 by @JuantAldea
- [bang_bang] Various clean-up esphome#11356 by @kbx81
- [espnow] Add transport platform for packet_transport esphome#11025 by @EasilyBoredEngineer (new-feature) (new-platform)
- [pipsolar] cleanup / refactoring esphome#10291 by @patagonaa (breaking-change)
- [json] Add basic compile tests esphome#11409 by @bdraco
- Add tests for FilterOutValueFilter and ThrottleWithPriorityFilter esphome#11408 by @bdraco
- [esp32] Automatic CONFIG_LWIP_MAX_SOCKETS configuration based on component needs esphome#11378 by @bdraco
- [sensor] Optimize filter memory usage with ValueListFilter base class esphome#11407 by @bdraco
- [esp32_improv, improv_base] Reduce flash usage by 352 bytes esphome#11406 by @bdraco
- [esp32_hosted] Bump esp hosted to 2.6.1 esphome#11414 by @swoboda1337
- [ci] Optimize clang-tidy for small PRs by avoiding unnecessary job spitting esphome#11402 by @bdraco
- [ci] Prefer platform-specific tests for memory impact analysis esphome#11398 by @bdraco
- Add basic text_sensor tests esphome#11424 by @bdraco
- ESP8266: Complete testing mode memory patches with DRAM and Flash esphome#11427 by @bdraco
- [ci] Fix clang-tidy split decision to account for component dependencies esphome#11430 by @bdraco
- [core] Add support for extern “C” includes esphome#11422 by @swoboda1337
- [sensor,text_sensor,binary_sensor] Optimize filter parameters with std::initializer_list esphome#11426 by @bdraco
- [ci] Fix memory impact workflow for new components esphome#11421 by @bdraco
- [text_sensor] Optimize filters with FixedVector (1.6KB flash savings) esphome#11423 by @bdraco
- [improv] Put next_url behind defines to save flash esphome#11420 by @jesserockz
- [core] Optimize automation actions memory usage with std::initializer_list esphome#11433 by @bdraco
- [espnow] Fix compilation error with initializer_list after #11433 esphome#11436 by @bdraco
- [analyze-memory] Improve symbol categorization accuracy esphome#11440 by @bdraco
- Add additional sensor filter tests esphome#11438 by @bdraco
- [ci] Fix clang-tidy split mode for core file changes esphome#11434 by @bdraco
- [climate] Add some integration tests esphome#11439 by @kbx81
- [sensor] Optimize calibration and Or filters with FixedVector esphome#11437 by @bdraco
- [binary_sensor] Add compile test for auto repeat esphome#11443 by @bdraco
- [binary_sensor] Optimize AutorepeatFilter with FixedVector esphome#11444 by @bdraco
- [climate] Remove unnecessary vector allocations in state save/restore esphome#11445 by @bdraco
- [sensor] Add optimistic option to heartbeat filter esphome#10993 by @pkejval (new-feature)
- [light] Decouple AddressableLight and Light transition classes esphome#11166 by @j9brown
- Add gpio switch interlock compile tests esphome#11449 by @bdraco
- [CI] Add auto label for chained PRs esphome#11457 by @jesserockz
- [light] Add tests for AddressableColorWipeEffectColor/StrobeLightEffectColor esphome#11456 by @bdraco
- Add compile tests for binary_sensor MultiClickTrigger esphome#11454 by @bdraco
- [gpio] Optimize switch interlock with FixedVector esphome#11448 by @bdraco
- [esp32] Add advanced options to disable unused VFS features (saves ~8.7 KB flash) esphome#11441 by @bdraco (breaking-change)
- [light] Improve gamma correction precision esphome#11141 by @j9brown
- C++ components unit test framework esphome#9284 by @jpeletier
- [light] Replace std::vector with FixedVector in strobe and color_wipe effects esphome#11455 by @bdraco
- [core] Stop clang-format “fixing” a single line esphome#11462 by @jesserockz
- [api] Allow clearing noise psk if dynamically set esphome#11429 by @jesserockz
- [binary_sensor] Optimize MultiClickTrigger with FixedVector esphome#11453 by @bdraco
- [wifi] Test multiple stas in wifi compile tests esphome#11460 by @bdraco
- [event] Replace std::set with FixedVector for event type storage esphome#11463 by @bdraco (breaking-change)
- [CI] Fix component detection when core files change in determine-jobs esphome#11461 by @bdraco
- [light] Add compile test for addressable lights esphome#11465 by @bdraco
- [wifi] Optimize WiFi network storage with FixedVector esphome#11458 by @bdraco
- [climate] Fix restore state for fan mode, preset, and swing mode esphome#11126 by @j9brown
- [light] Eliminate dimming undershoot during addressable light transition esphome#11471 by @j9brown
- [ci] Fix test detection for components with only variant tests esphome#11474 by @bdraco
- [ci] Fix component splitter for components with only variant tests esphome#11476 by @bdraco
- [esp32] Set the location of the IDF component manager cache esphome#11467 by @swoboda1337
- [ci] Fix WiFi testing mode validation and component splitter for variant-only tests esphome#11481 by @bdraco
- [openthread] Fix OTA by populating CORE.address with device’s mDNS address esphome#11095 by @danstiner (new-feature)
- [fan] Add basic fan compile tests esphome#11484 by @bdraco
- [nrf52] support BLE –device for logging esphome#9861 by @tomaszduda23 (new-feature)
- [light] Store effect names in flash (const char*) to save RAM esphome#11487 by @bdraco (breaking-change)
- [light] Use std::initializer_list for add_effects to reduce flash overhead esphome#11485 by @bdraco
- [light] Extract ColorModeMask into generic FiniteSetMask helper esphome#11472 by @bdraco
- [improv_serial] Various optimizations esphome#11473 by @kbx81
- [hdc2010] New component esphome#6674 by @optimusprimespace (new-component) (new-feature) (new-platform)
- [api] Fix clang-tidy modernize-use-emplace warning for light effects esphome#11490 by @bdraco
- [ethernet] Add RMII GPIO pin conflict validation esphome#11488 by @bdraco
- [scheduler] Remove unused deque include after defer queue optimization esphome#11491 by @bdraco
- [pipsolar] improve sensor readout in HA, set unknown state on timeout / error esphome#10292 by @patagonaa
- [tests] Isolate gps component to prevent TinyGPSPlus millis() conflicts esphome#11499 by @bdraco
- [core][sensor] Eliminate redundant default value setters in generated code esphome#11495 by @bdraco
- [http_request] Pass collect_headers by const reference instead of by value esphome#11494 by @bdraco
- [remote_transmitter] Remove delays and use RMT instead esphome#11505 by @swoboda1337
- [esp32] Add IDF 5.4.3 to platform list and switch to tar.xz esphome#11528 by @swoboda1337
- [sntp] Replace std::vectorstd::string with std::array<const char*> to save heap memory esphome#11525 by @bdraco
- [gpio] Skip set_inverted() call for default false value esphome#11538 by @bdraco
- [core] Don’t allow python 3.14 esphome#11527 by @swoboda1337
- Optimize stateless lambdas to use function pointers esphome#11551 by @bdraco
- [substitutions] fix #11077 Preserve ESPHomeDatabase (document metadata) in substitutions esphome#11087 by @jpeletier
- [network] Eliminate runtime string parsing for IP address initialization esphome#11561 by @bdraco
- [api] Register user services with initializer_list esphome#11545 by @bdraco
- [light] Optimize LambdaLightEffect and AddressableLambdaLightEffect with function pointers esphome#11556 by @bdraco
- [core] Optimize TemplatableValue to use function pointers for stateless lambdas esphome#11554 by @bdraco
- [template] Optimize all template platforms to use function pointers for stateless lambdas esphome#11555 by @bdraco
- [api] Use FixedVector const references for service array arguments esphome#11546 by @bdraco
- [core] Simplify ESPTime::strftime() and save 20 bytes flash esphome#11539 by @bdraco
- [number] Skip set_mode call when using default AUTO mode esphome#11537 by @bdraco
- [template] Store initial option as index in template select esphome#11523 by @bdraco
- fix: load_cert_chain requires the path, not a file object esphome#11543 by @waza-ari
- [tuya] allow enum for eco id esphome#11544 by @ssieb
- [nextion] Remove TFT upload baud rate validation to reduce flash usage esphome#11012 by @edwardtfn
- [nextion] Add
set_component_visibility()method for dynamic visibility control esphome#11530 by @edwardtfn - [remote_base] add support for Dyson cool AM07 tower fan esphome#10163 by @aanban (new-feature)
- Additional tests for ble_client lambdas esphome#11565 by @bdraco
- Add additional modbus compile tests esphome#11567 by @bdraco
- [http_request] update timeout to be uint32_t esphome#11577 by @rwrozelle
- Add additional uart test coverage esphome#11571 by @bdraco
- [esp32_ble_server][esp32_improv] Eliminate unnecessary heap allocations esphome#11569 by @bdraco
- [modbus_controller] Optimize lambdas to use function pointers instead of std::function esphome#11566 by @bdraco
- [ci] Remove base bus components exclusion from memory impact analysis esphome#11572 by @bdraco
- [ble_client] Use function pointers for lambda actions and sensors esphome#11564 by @bdraco
- [climate] Replace std::set with FiniteSetMask for trait storage esphome#11466 by @bdraco (breaking-change)
- [uart] Optimize UART components to eliminate temporary vector allocations esphome#11570 by @bdraco
- [packages] Tighten package validation esphome#11584 by @jpeletier
- [http_request] Pass trigger variables into on_response/on_error esphome#11464 by @jesserockz (breaking-change)
- [ci] Change upper Python version being tested to 3.13 esphome#11587 by @bdraco
- template_alarm_control_panel cleanups esphome#11469 by @warthog618
- [ci] Fix auto labeller workflow with wrong comment for too-big with labels esphome#11592 by @jesserockz
- [logger] Improve level validation errors esphome#11589 by @jesserockz
- [fan] Remove deprecated
set_speedfunction esphome#11590 by @jesserockz - [select] Store options in flash to reduce RAM usage esphome#11514 by @bdraco (breaking-change)
- [ci] Fix component tests not running when only test files change esphome#11580 by @bdraco
- template_alarm_control_panel readability improvements esphome#11593 by @warthog618
- [core] Remove deprecated schema constants esphome#11591 by @jesserockz (breaking-change)
- [remote_transmitter] Add non-blocking mode esphome#11524 by @swoboda1337 (new-feature) (breaking-change)
- [core] Fix substitution id redefinition false positive esphome#11603 by @jpeletier
- [lvgl] fix typo from previous refactor esphome#11596 by @stuartparmenter
- [lvgl] memset canvas buffer to prevent display of random garbage esphome#11582 by @stuartparmenter
- [ci] Restore parallel execution for clang-tidy split mode esphome#11613 by @bdraco
- [ci] Consolidate component splitting into determine-jobs esphome#11614 by @bdraco
- [gpio] Skip set_use_interrupt call when using default value esphome#11612 by @bdraco
- [template] Eliminate optional wrapper to save 4 bytes RAM per instance esphome#11610 by @bdraco
- [e131] Replace std::set with std::vector to reduce flash usage esphome#11598 by @bdraco
- [core] .local addresses are only resolvable if mDNS is enabled esphome#11508 by @Links2004 (breaking-change)
- [substitutions] fix jinja parsing strings that look like sets as sets esphome#11611 by @jpeletier
- [automations] Update error message esphome#11640 by @clydebarrow
- [ruff] Remove deprecated UP038 rule from ignore list esphome#11646 by @bdraco
- [lvgl] Trigger improvements and additions esphome#11628 by @clydebarrow (new-feature)
- [cpp_generator] Align isinstance() with codebase style (tuple vs PEP 604) esphome#11645 by @bdraco
- [json] Fix component test compilation errors esphome#11647 by @bdraco
- [nrf52] fix compilation warning esphome#11656 by @tomaszduda23
- [core] Remove redundant fd bounds check in yield_with_select_() esphome#11666 by @bdraco
- [api] Remove unnecessary intermediate variable in frame helpers esphome#11668 by @bdraco
- Add basic tests for web_server_idf esphome#11659 by @bdraco
- add integration test for script re-entry argument issue esphome#11652 by @afflux
- [nextion] Send
auto_wake_on_touchas part of startup commands on loop esphome#11670 by @edwardtfn - ESP32 Pin loopTask to CORE 1 esphome#11669 by @glmnet
- [nrf52,gpio] switch input gpio to polling mode esphome#11664 by @tomaszduda23
- [nrf52] enable nrf52 test esphome#11379 by @tomaszduda23
- Enable IPv6 for host esphome#11630 by @HeMan
- Use lists inits initialization instead of std::fill esphome#11532 by @JuantAldea
- [nrf52, zigbee] OnlyWith support list of components esphome#11533 by @tomaszduda23
- actions: fix loop re-entry esphome#7972 by @afflux
- [component] Add is_idle method and condition esphome#11651 by @clydebarrow (new-feature)
- [font][image] Use ESPHome urls for remote images esphome#11675 by @clydebarrow
- [esphome][ota] Add write_byte_() helper to reduce code duplication esphome#11511 by @bdraco
- [esp32_ble] Optimize loop() to reduce flash usage by ~104 bytes esphome#11627 by @bdraco
- [ble_client] Fix premature disconnections by reading characteristics immediately after service discovery esphome#11410 by @bdraco
- Add action continuation tests esphome#11674 by @bdraco
- [web_server] Remove redundant assignment in deq_push_back_with_dedup_ esphome#11642 by @bdraco
- [web_server] Eliminate nested lambdas in DeferredUpdateEventSourceList esphome#11641 by @bdraco
- [web_server] Use zero-copy entity ID comparison in request handlers esphome#11644 by @bdraco
- [esp32_ble] Reduce GATT event latency from 8ms to 12μs with notification socket esphome#11663 by @bdraco
- [fan] Use std::vector for preset modes, preserve config order esphome#11483 by @bdraco (breaking-change)
- [web_server_idf] Reduce flash by eliminating temporary string allocations in event formatting esphome#11658 by @bdraco
- [scheduler] Refactor call() for improved code organization esphome#11643 by @bdraco
- [core] Avoid redundant millis() calls in base_automation loop methods esphome#11676 by @bdraco
- [esp32_ble] Wake main loop for GAP security events esphome#11677 by @bdraco
- [climate] Replace std::vectorstd::string with const char* for custom fan modes and presets esphome#11621 by @bdraco (breaking-change)
- [nrf52,debug] fix status of nRESET pin, add extra registry from UICR esphome#11667 by @tomaszduda23
- [template] alarm_control_panel more ESP_LOGCONFIG reductions esphome#11691 by @warthog618
- [mqtt] Fix climate custom fan mode and preset compilation errors esphome#11692 by @bdraco
- Add support for Mopeka standard check alternate ID esphome#10907 by @pixelatedmirror (new-feature)
- [esp32] Make loop task stack size configurable esphome#10564 by @idstein (new-feature)
- [nrf52, i2c] i2c support for nrf52 esphome#8150 by @tomaszduda23 (new-feature)
- [core][esp32_ble][socket] Add wake_loop_threadsafe() helper for background thread wakeups esphome#11681 by @bdraco
- [usb_host] Add wake_loop_threadsafe() for low-latency USB event processing esphome#11683 by @bdraco
- [esp32_hosted] Initial OTA implementation esphome#11562 by @swoboda1337 (new-feature) (new-platform)
- [epaper_spi] Refactoring esphome#11540 by @clydebarrow (new-feature)
- [micro_wake_word] Add wake_loop_threadsafe() for low-latency wake word detection esphome#11698 by @bdraco
- [usb_uart] Fixes for transfer queue allocation esphome#11548 by @clydebarrow
- [helpers] Add
get_mac_address_into_buffer()esphome#11700 by @kbx81 - [tinyusb] New component esphome#11678 by @kbx81 (new-component) (new-feature)
- [ci] Fix memory impact analysis to filter incompatible platform components esphome#11706 by @bdraco
- [core] Fix ESPTime crash esphome#11705 by @swoboda1337
- [psram] Require mode for S3 esphome#11470 by @clydebarrow (breaking-change)
- [lvgl] Layout improvements esphome#10149 by @clydebarrow (new-feature)
- [lvgl] Fix rotation with unusual width esphome#11680 by @clydebarrow
- [mqtt] Add wake_loop_threadsafe() for low-latency event processing on ESP32 esphome#11695 by @bdraco
- [espnow] Add wake_loop_threadsafe() for low-latency event processing esphome#11696 by @bdraco
- [esp32_ble] Remove leftover lwip/sockets.h include esphome#11702 by @bdraco
- [ci] Fix non-component files incorrectly detected as components esphome#11701 by @bdraco
- [ci] Cache component dependency graph for up to 3.4x faster determine-jobs esphome#11648 by @bdraco
- Dallas indexing esphome#11346 by @leejoow (new-feature)
- [sgp30] Fix reading from preexisting stored baseline even with
store_baseline:falseesphome#7922 by @chaserhkj - [max7219digit] support
flip_xwhenrotate_chipis 90° or 270° esphome#6109 by @Tugzrida - [gp8403] Add gp8413 (15 bits) DAC model esphome#7726 by @SeByDocKy (new-feature)
- [gt911] Fix gt911 touchscreen with reset pin not initializing when loglevel is set to NONE esphome#11715 by @jpeletier
- [automations] Reduce memory usage in if/while/repeat actions (32-36 bytes per instance) esphome#11650 by @bdraco
- [network] Store use_address in RODATA to save RAM esphome#11707 by @bdraco (breaking-change)
- [fan] Remove duplicate preset mode storage to save RAM esphome#11632 by @bdraco (breaking-change)
- [lvgl] Fix case sensitivity in flex layout esphome#11717 by @clydebarrow
- [display] Optimize display writers with function pointers for stateless lambdas esphome#11629 by @bdraco
- [select] Refactor to index-based operations for immediate and future RAM savings esphome#11623 by @bdraco (breaking-change)
- [const] Move
CONF_ENABLEDto const.py esphome#11719 by @Gnuspice - [core] Reduce action framework argument copies by 83% esphome#11704 by @bdraco (breaking-change)
- [select][lvgl] Fix FixedVector size() returning 0 when using operator[] after init() esphome#11721 by @bdraco
- [wifi_info] Reduce heap usage by up to 1.7KB in scan_results sensor esphome#11723 by @bdraco
- [voice_assistant] Eliminate substr() allocations in text truncation esphome#11725 by @bdraco
- [rtttl] Reduce flash usage by eliminating substr() allocations esphome#11722 by @bdraco
- [ld2420] Eliminate substr() allocation in firmware version parsing esphome#11724 by @bdraco
- [scheduler] Extract helper functions to improve code readability esphome#11730 by @bdraco
- [template] Mark all component classes as final esphome#11733 by @bdraco
- [mqtt] Use StringRef to avoid string copies in discovery esphome#11731 by @bdraco
- [mdns] Eliminate redundant hostname copy to save heap memory esphome#11734 by @bdraco
- [core] Deprecate get_icon(), get_device_class(), get_unit_of_measurement() and fix remaining non-MQTT usages esphome#11732 by @bdraco
- [tests] Fix ID collision between bl0940 and nau7802 component tests esphome#11739 by @bdraco
- [ci] Skip memory impact analysis for release and beta branches esphome#11740 by @bdraco
- [lvgl] Allow text substitution for NaN esphome#11712 by @clydebarrow (new-feature)
- [ci] Skip memory impact analysis when more than 40 components changed esphome#11741 by @bdraco
- Update AI instructions with C++ style guidelines from developers docs esphome#11743 by @bdraco
- [api] Store YAML service names in flash instead of heap esphome#11744 by @bdraco
- [core] Add helper functions for clamp_at_… esphome#10387 by @clydebarrow
- [core] Fix wait_until and for_condition timing regression in automation chains esphome#11716 by @bdraco
- [select] Convert remaining components to use index-based control() esphome#11693 by @bdraco
- [gdk101] Fix fw version reporting esphome#11029 by @Szewcson (breaking-change) (new-platform)
- [openthread] add poll period for mtd devices esphome#11374 by @rwrozelle (new-feature)
- [socket] Deduplicate IP formatting in LWIP raw TCP implementation esphome#11747 by @bdraco
- [psram] Add option to disable ignore not found sdkconfig setting esphome#11411 by @kahrendt (new-feature)
- Add MCP3221 i2c A-D-Converter esphome#7764 by @philippderdiedas (new-component) (new-feature) (new-platform)
- [ci] Reduce release time by removing 468 redundant ESP32-C3 IDF tests esphome#11737 by @bdraco
- [wifi] Guard AP-related members with USE_WIFI_AP to save RAM esphome#11753 by @bdraco
- [wifi] Refactor AP selection to use index instead of copy (saves 88 bytes) esphome#11749 by @bdraco
- [core] Use ESPDEPRECATED macro for deprecation warnings esphome#11755 by @bdraco
- [ai_instructions] Add public API and breaking changes guidelines esphome#11756 by @bdraco
- [tests] Fix determine_jobs tests failing when target branch is beta esphome#11758 by @bdraco
- [ci] Fix component batching for beta/release branches (3-4 → 40 per batch) esphome#11759 by @bdraco
- [event] Store event types in flash memory esphome#11767 by @bdraco (breaking-change)
- Updated AQI calculation for HM3301 to the new standard esphome#9442 by @optimusprimespace (breaking-change)
- Expand uart.write tests esphome#11785 by @bdraco
- Add ble_client lambda compile tests esphome#11787 by @bdraco
- Add additional compile time tests for canbus esphome#11789 by @bdraco
- Add additional sx126x lambda tests esphome#11791 by @bdraco
- Add additional sx127x lambda tests esphome#11793 by @bdraco
- Add additional speaker lambda tests esphome#11797 by @bdraco
- Add additional udp lambda tests esphome#11795 by @bdraco
- Add additonal abbwelcome remote_base tests esphome#11799 by @bdraco
- Add additional tests for remote_transmitter raw esphome#11801 by @bdraco
- [ble_client] Optimize ble_write memory usage - store static data in flash esphome#11786 by @bdraco
- [canbus] Optimize canbus.send memory usage - store static data in flash esphome#11788 by @bdraco
- [sx126x] Optimize send_packet action memory usage - store static data in flash esphome#11790 by @bdraco
- [remote_base] Optimize raw transmit action memory usage - use function pointers esphome#11800 by @bdraco
- [sx127x] Optimize send_packet action memory usage - store static data in flash esphome#11792 by @bdraco
- [remote_base] Eliminate substr() allocations in Pronto dump logging esphome#11726 by @bdraco
- [bl0940] Fix calibration number preference hash for multi-device configs esphome#11769 by @bdraco
- [speaker] Optimize speaker.play action memory usage - store static data in flash esphome#11796 by @bdraco
- [udp] Optimize udp.write action memory usage - store static data in flash esphome#11794 by @bdraco
- [uart] Store static data in flash and use function pointers for lambdas esphome#11784 by @bdraco
- [core] Remove deprecated EntityBase::hash_base() method esphome#11783 by @bdraco (breaking-change)
- [remote_base] Optimize abbwelcome action memory usage - store static data in flash esphome#11798 by @bdraco
- [nrf52] api esphome#11751 by @lboue (new-feature)
- [core] Implement Global Controller Registry to reduce RAM usage esphome#11772 by @bdraco (breaking-change)
- [sx126x] Change BUSY, RST, DIO1 pins to general GPIO (from internal) esphome#11782 by @PaulSchulz (new-feature)
- Ensure event paths are enabled in api compile tests esphome#11776 by @bdraco
- [nrf52,watchdog] do not disable watchog if it is not nesesery esphome#11686 by @tomaszduda23
- HLK-FM22X Face Recognition module component esphome#8059 by @OnFreund (new-component) (new-feature) (new-platform)
- [tests] Add unit test coverage for web_port property esphome#11811 by @bdraco
- [ai] simplify namespace syntax esphome#11824 by @ximex
- [lvgl] Automatically register widget types esphome#11394 by @stuartparmenter
- Add support for RX8130 RTC Chip esphome#10511 by @Beormund (new-component) (new-feature) (new-platform)
- [wifi] Fix mesh network failover and improve retry logic reliability esphome#11805 by @bdraco
- [tests] Migrate components to shared packages and fix ID ambiguity esphome#11819 by @bdraco
- [CI] Don’t request codeowners review in forks esphome#11827 by @jesserockz
- [wifi][ethernet] Don’t block setup until connected esphome#9823 by @clydebarrow (breaking-change)
- [core] Update clamp functions to allow mixed but comparable types esphome#11828 by @clydebarrow
- [nrf52,gpio] add gpio levels for high voltage mode esphome#9858 by @tomaszduda23 (new-feature)
- [nrf52,pcf8563] fix build error esphome#11846 by @tomaszduda23
- [nrf52,ssd1306_i2c] fix build error esphome#11847 by @tomaszduda23
- [lvgl]Adjust condition for LVGL style transformation defines esphome#11845 by @CzBiX
- [nrf52,debug] add partition dump esphome#11839 by @tomaszduda23
- [nrf52] fix boot loop esphome#11854 by @tomaszduda23
- [wifi] Fix infinite retry loop when no hidden networks and captive portal active esphome#11831 by @bdraco
- [wifi] Change priority type from float to int8_t esphome#11830 by @bdraco (breaking-change)
- [wifi] Fix all-hidden networks duplicate attempts and scan skipping esphome#11848 by @bdraco
- [wifi] Add min_auth_mode configuration option esphome#11814 by @bdraco (new-feature) (breaking-change)
- [wifi] Fix scan and connection failures after adapter restart esphome#11851 by @bdraco
- [wifi] Restore two-attempt BSSID filtering for mesh networks esphome#11844 by @bdraco
- [wifi] Conditionally compile manual_ip to save 24-72 bytes RAM esphome#11833 by @bdraco
- [network, psram, speaker wifi] Use CORE.data to enable high performance networking esphome#11812 by @kahrendt (new-feature) (breaking-change)
- Bump pyupgrade from 3.20.0 to 3.21.0 esphome#11139 by @dependabot[bot]
- Bump github/codeql-action from 4.30.7 to 4.30.8 esphome#11163 by @dependabot[bot]
- Bump pylint from 3.3.9 to 4.0.0 esphome#11211 by @dependabot[bot]
- Bump aioesphomeapi from 41.16.1 to 41.17.0 esphome#11231 by @dependabot[bot]
- Bump ruamel-yaml-clib from 0.2.12 to 0.2.14 esphome#10842 by @dependabot[bot]
- Bump aioesphomeapi from 41.17.0 to 41.18.0 esphome#11247 by @dependabot[bot]
- Bump pylint from 4.0.0 to 4.0.1 esphome#11267 by @dependabot[bot]
- Bump aioesphomeapi from 41.18.0 to 42.0.0 esphome#11273 by @dependabot[bot]
- Bump ruff from 0.14.0 to 0.14.1 esphome#11303 by @dependabot[bot]
- Bump github/codeql-action from 4.30.8 to 4.30.9 esphome#11326 by @dependabot[bot]
- Bump aioesphomeapi from 42.0.0 to 42.1.0 esphome#11350 by @dependabot[bot]
- Bump aioesphomeapi from 42.1.0 to 42.2.0 esphome#11352 by @dependabot[bot]
- Bump pylint from 4.0.1 to 4.0.2 esphome#11418 by @dependabot[bot]
- Bump actions/download-artifact from 4.3.0 to 5.0.0 esphome#11419 by @dependabot[bot]
- Bump bleak from 1.0.1 to 1.1.1 esphome#11492 by @dependabot[bot]
- Bump aioesphomeapi from 42.2.0 to 42.3.0 esphome#11493 by @dependabot[bot]
- Bump ruamel-yaml from 0.18.15 to 0.18.16 esphome#11482 by @dependabot[bot]
- Bump aioesphomeapi from 42.3.0 to 42.4.0 esphome#11586 by @dependabot[bot]
- Bump aioesphomeapi from 42.4.0 to 42.5.0 esphome#11597 by @dependabot[bot]
- Bump github/codeql-action from 4.30.9 to 4.31.0 esphome#11522 by @dependabot[bot]
- Bump actions/upload-artifact from 4.6.2 to 5.0.0 esphome#11520 by @dependabot[bot]
- Bump actions/download-artifact from 5.0.0 to 6.0.0 esphome#11521 by @dependabot[bot]
- Bump ruff from 0.14.1 to 0.14.2 esphome#11519 by @dependabot[bot]
- Bump github/codeql-action from 4.31.0 to 4.31.2 esphome#11626 by @dependabot[bot]
- Bump ruff from 0.14.2 to 0.14.3 esphome#11633 by @dependabot[bot]
- Bump aioesphomeapi from 42.5.0 to 42.6.0 esphome#11682 by @dependabot[bot]
- Bump ruff from 0.14.3 to 0.14.4 esphome#11768 by @dependabot[bot]
- Bump aioesphomeapi from 42.6.0 to 42.7.0 esphome#11771 by @dependabot[bot]
- Bump pytest-asyncio from 1.2.0 to 1.3.0 esphome#11815 by @dependabot[bot]
- Bump pyupgrade from 3.21.0 to 3.21.1 esphome#11816 by @dependabot[bot]
- Bump pytest from 8.4.2 to 9.0.0 esphome#11817 by @dependabot[bot]
All Changelogs
- ESPHome 2025.11.0 - November 2025 (current page)
- ESPHome 2025.10.0 - 15th October 2025
- ESPHome 2025.9.0 - 17th September 2025
- ESPHome 2025.8.0 - 20th August 2025
- ESPHome 2025.7.0 - 16th July 2025
- ESPHome 2025.6.0 - 18th June 2025
- ESPHome 2025.5.0 - 21st May 2025
- ESPHome 2025.4.0 - 16th April 2025
- ESPHome 2025.3.0 - 19th March 2025
- ESPHome 2025.2.0 - 19th February 2025
- ESPHome 2024.12.0 - 18th December 2024
- ESPHome 2024.11.0 - 20th November 2024
- ESPHome 2024.10.0 - 16th October 2024
- ESPHome 2024.9.0 - 18th September 2024
- ESPHome 2024.8.0 - 21st August 2024
- ESPHome 2024.7.0 - 17th July 2024
- ESPHome 2024.6.0 - 19th June 2024
- ESPHome 2024.5.0 - 15th May 2024
- ESPHome 2024.4.0 - 17th April 2024
- ESPHome 2024.3.0 - 20th March 2024
- ESPHome 2024.2.0 - 21st February 2024
- ESPHome 2023.12.0 - 20th December 2023
- ESPHome 2023.11.0 - 15th November 2023
- ESPHome 2023.10.0 - 18th October 2023
- ESPHome 2023.9.0 - 27th September 2023
- ESPHome 2023.8.0 - 16th August 2023
- ESPHome 2023.7.0 - 19th July 2023
- ESPHome 2023.6.0 - 21st June 2023
- ESPHome 2023.5.0 - 17th May 2023
- ESPHome 2023.4.0 - 19th April 2023
- ESPHome 2023.3.0 - 15th March 2023
- ESPHome 2023.2.0 - 15th February 2023
- ESPHome 2022.12.0 - 14th December 2022
- ESPHome 2022.11.0 - 16th November 2022
- ESPHome 2022.10.0 - 19th October 2022
- ESPHome 2022.9.0 - 21st September 2022
- ESPHome 2022.8.0 - 17th August 2022
- ESPHome 2022.6.0 - 15th June 2022
- ESPHome 2022.5.0 - 18th May 2022
- ESPHome 2022.4.0 - 20th April 2022
- ESPHome 2022.3.0 - 16th March 2022
- ESPHome 2022.2.0 - 16th February 2022
- ESPHome 2022.1.0 - 19th January 2022
- ESPHome 2021.12.0 - 11th December 2021
- ESPHome 2021.11.0 - 17th November 2021
- ESPHome 2021.10.0 - 20th October 2021
- ESPHome 2021.9.0 - 15th September 2021
- ESPHome 2021.8.0 - 18th August 2021
- Changelog - Version 1.20.0 - 21st July 2021
- Changelog - Version 1.19.0 - 16th June 2021
- Changelog - Version 1.18.0 - 19th May 2021
- Changelog - Version 1.17.0 - 4th May 2021
- Changelog - Version 1.16.0 - February 3, 2021
- Changelog - Version 1.15.0 - September 13, 2020
- Changelog - Version 1.14.0 - November 1
- Changelog - Version 1.13.0 - May 30th 2019
- Changelog - Version 1.12.0
- Changelog - Version 1.11.0
- Changelog - Version 1.10.0
- Changelog - Version 1.9.0
- Version 1.8.0
- Version 1.7.0


