diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7ef282703c..93c2653124 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,7 +2,7 @@ name: CI on: pull_request: - types: [opened, reopened, synchronize] + types: [opened, edited, reopened, synchronize] permissions: contents: read @@ -40,3 +40,30 @@ jobs: - name: Run production build run: make production + lint: + name: Lint + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + + - name: Set up Python 3.12 + uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0 + with: + python-version: 3.12 + + - name: Install dependencies + run: pip install -r requirements_test.txt + + - name: Register problem matchers + run: | + echo "::add-matcher::.github/workflows/matchers/ci-custom.json" + + - name: markdownlint-cli + uses: nosborn/github-action-markdown-cli@508d6cefd8f0cc99eab5d2d4685b1d5f470042c1 # v3.5.0 + with: + config_file: ".markdownlintrc" + files: . + + - name: Lint + run: python lint.py diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml deleted file mode 100644 index 7c6cdd64a4..0000000000 --- a/.github/workflows/lint.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Lint - -on: - push: - # On other branches the `pull_request` trigger will be used - branches: [current, next] - - pull_request: - types: [opened, edited, reopened, synchronize] - -permissions: - contents: read - -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Install pagefind - uses: jaxxstorm/action-install-gh-release@6096f2a2bbfee498ced520b6922ac2c06e990ed2 # v2.1.0 - with: - repo: cloudcannon/pagefind - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - name: Set up Python 3.12 - uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6 - with: - python-version: 3.12 - - name: Install dependencies - run: pip install -r requirements_test.txt - - name: Register problem matchers - run: | - echo "::add-matcher::.github/workflows/matchers/ci-custom.json" - - name: markdownlint-cli - uses: nosborn/github-action-markdown-cli@508d6cefd8f0cc99eab5d2d4685b1d5f470042c1 # v3.5.0 - with: - config_file: ".markdownlintrc" - files: . - - name: Lint - run: python lint.py diff --git a/content/changelog/2025.10.0.md b/content/changelog/2025.10.0.md index a5c2fc2f73..f513454516 100644 --- a/content/changelog/2025.10.0.md +++ b/content/changelog/2025.10.0.md @@ -396,6 +396,18 @@ continue working, but custom components and advanced setups may require updates. +## Release 2025.10.5 - November 11 + +
+ + +- [const] Add CONF_ROWS [esphome#11249](https://github.com/esphome/esphome/pull/11249) by [@stuartparmenter](https://github.com/stuartparmenter) +- [core] Don't allow python 3.14 [esphome#11527](https://github.com/esphome/esphome/pull/11527) by [@swoboda1337](https://github.com/swoboda1337) +- [usb_uart] Fixes for transfer queue allocation [esphome#11548](https://github.com/esphome/esphome/pull/11548) by [@clydebarrow](https://github.com/clydebarrow) +- [lvgl] Fix rotation with unusual width [esphome#11680](https://github.com/esphome/esphome/pull/11680) by [@clydebarrow](https://github.com/clydebarrow) + +
+ ## Full list of changes ### New Features diff --git a/content/changelog/2025.11.0.md b/content/changelog/2025.11.0.md new file mode 100644 index 0000000000..e933bdac27 --- /dev/null +++ b/content/changelog/2025.11.0.md @@ -0,0 +1,567 @@ +--- +description: "Changelog for ESPHome 2025.10.0." +title: "ESPHome 2025.11.0 - November 2025" +params: + seo: + description: Changelog for ESPHome 2025.11.0. + image: /changelog/images/changelog-2025.11.0.png +--- + +{{< imgtable >}} +"BH1900NUX","components/sensor/bh1900nux","bh1900nux-evk-001.png","" +"HDC2010","components/sensor/hdc2010","hdc2010.png","" +"TinyUSB","components/tinyusb","usb.svg","dark-invert" +"MCP3221","components/sensor/mcp3221","mcp3221.png","" +"HLK-FM22x Face Recognition Module","components/hlk_fm22x","face.svg","dark-invert" +"RX8130 RTC","components/time/rx8130","clock-outline.svg","dark-invert" +{{< /imgtable >}} + + + +## Full list of changes + +### New Features + +- [esp32] Accept more framework URL schemes as sources [esphome#11125](https://github.com/esphome/esphome/pull/11125) by [@j9brown](https://github.com/j9brown) (new-feature) +- [esp32_ble] Add support for hosted BLE [esphome#11167](https://github.com/esphome/esphome/pull/11167) by [@swoboda1337](https://github.com/swoboda1337) (new-feature) +- [esp32] Add option to disable libc locks in IRAM, saving ~1.3KB RAM [esphome#10930](https://github.com/esphome/esphome/pull/10930) by [@bdraco](https://github.com/bdraco) (new-feature) (breaking-change) +- [ina2xx_base] add device reset-on-boot disablement option [esphome#10787](https://github.com/esphome/esphome/pull/10787) by [@joshuaboniface](https://github.com/joshuaboniface) (new-feature) +- [toshiba] Add support for RAS-2819T air conditioner [esphome#9490](https://github.com/esphome/esphome/pull/9490) by [@exotime](https://github.com/exotime) (new-feature) +- [bh1900nux] Add bh1900nux temperature Sensor [esphome#8631](https://github.com/esphome/esphome/pull/8631) by [@B48D81EFCC](https://github.com/B48D81EFCC) (new-component) (new-feature) (new-platform) +- [xgzp68xx] Add oversampling config and tidy up implementation. [esphome#10306](https://github.com/esphome/esphome/pull/10306) by [@ned14](https://github.com/ned14) (new-feature) +- [remote_base] Add Symphony IR protocol (encode/decode) with command_repeats support [esphome#10777](https://github.com/esphome/esphome/pull/10777) by [@leodrivera](https://github.com/leodrivera) (new-feature) +- [thermostat] Add humidity support [esphome#11286](https://github.com/esphome/esphome/pull/11286) by [@kbx81](https://github.com/kbx81) (new-feature) +- [nrf52, ble_nus] add logging over BLE [esphome#9846](https://github.com/esphome/esphome/pull/9846) by [@tomaszduda23](https://github.com/tomaszduda23) (new-component) (new-feature) +- [substitutions] !extend and !remove now support substitutions and jinja [esphome#11203](https://github.com/esphome/esphome/pull/11203) by [@jpeletier](https://github.com/jpeletier) (new-feature) +- [cli] Add `analyze-memory` command [esphome#11395](https://github.com/esphome/esphome/pull/11395) by [@bdraco](https://github.com/bdraco) (new-feature) +- [mipi_rgb] Add Waveshare 5" 1024x600 [esphome#11206](https://github.com/esphome/esphome/pull/11206) by [@clydebarrow](https://github.com/clydebarrow) (new-feature) +- [esp32_improv]: add next_url support for WiFi provisioning [esphome#10757](https://github.com/esphome/esphome/pull/10757) by [@amankrokx](https://github.com/amankrokx) (new-feature) +- [espnow] Add transport platform for packet_transport [esphome#11025](https://github.com/esphome/esphome/pull/11025) by [@EasilyBoredEngineer](https://github.com/EasilyBoredEngineer) (new-feature) (new-platform) +- [sensor] Add optimistic option to heartbeat filter [esphome#10993](https://github.com/esphome/esphome/pull/10993) by [@pkejval](https://github.com/pkejval) (new-feature) +- [openthread] Fix OTA by populating CORE.address with device's mDNS address [esphome#11095](https://github.com/esphome/esphome/pull/11095) by [@danstiner](https://github.com/danstiner) (new-feature) +- [nrf52] support BLE --device for logging [esphome#9861](https://github.com/esphome/esphome/pull/9861) by [@tomaszduda23](https://github.com/tomaszduda23) (new-feature) +- [hdc2010] New component [esphome#6674](https://github.com/esphome/esphome/pull/6674) by [@optimusprimespace](https://github.com/optimusprimespace) (new-component) (new-feature) (new-platform) +- [remote_base] add support for Dyson cool AM07 tower fan [esphome#10163](https://github.com/esphome/esphome/pull/10163) by [@aanban](https://github.com/aanban) (new-feature) +- [remote_transmitter] Add non-blocking mode [esphome#11524](https://github.com/esphome/esphome/pull/11524) by [@swoboda1337](https://github.com/swoboda1337) (new-feature) (breaking-change) +- [lvgl] Trigger improvements and additions [esphome#11628](https://github.com/esphome/esphome/pull/11628) by [@clydebarrow](https://github.com/clydebarrow) (new-feature) +- [component] Add is_idle method and condition [esphome#11651](https://github.com/esphome/esphome/pull/11651) by [@clydebarrow](https://github.com/clydebarrow) (new-feature) +- Add support for Mopeka standard check alternate ID [esphome#10907](https://github.com/esphome/esphome/pull/10907) by [@pixelatedmirror](https://github.com/pixelatedmirror) (new-feature) +- [esp32] Make loop task stack size configurable [esphome#10564](https://github.com/esphome/esphome/pull/10564) by [@idstein](https://github.com/idstein) (new-feature) +- [nrf52, i2c] i2c support for nrf52 [esphome#8150](https://github.com/esphome/esphome/pull/8150) by [@tomaszduda23](https://github.com/tomaszduda23) (new-feature) +- [esp32_hosted] Initial OTA implementation [esphome#11562](https://github.com/esphome/esphome/pull/11562) by [@swoboda1337](https://github.com/swoboda1337) (new-feature) (new-platform) +- [epaper_spi] Refactoring [esphome#11540](https://github.com/esphome/esphome/pull/11540) by [@clydebarrow](https://github.com/clydebarrow) (new-feature) +- [tinyusb] New component [esphome#11678](https://github.com/esphome/esphome/pull/11678) by [@kbx81](https://github.com/kbx81) (new-component) (new-feature) +- [lvgl] Layout improvements [esphome#10149](https://github.com/esphome/esphome/pull/10149) by [@clydebarrow](https://github.com/clydebarrow) (new-feature) +- Dallas indexing [esphome#11346](https://github.com/esphome/esphome/pull/11346) by [@leejoow](https://github.com/leejoow) (new-feature) +- [gp8403] Add gp8413 (15 bits) DAC model [esphome#7726](https://github.com/esphome/esphome/pull/7726) by [@SeByDocKy](https://github.com/SeByDocKy) (new-feature) +- [lvgl] Allow text substitution for NaN [esphome#11712](https://github.com/esphome/esphome/pull/11712) by [@clydebarrow](https://github.com/clydebarrow) (new-feature) +- [openthread] add poll period for mtd devices [esphome#11374](https://github.com/esphome/esphome/pull/11374) by [@rwrozelle](https://github.com/rwrozelle) (new-feature) +- [psram] Add option to disable ignore not found sdkconfig setting [esphome#11411](https://github.com/esphome/esphome/pull/11411) by [@kahrendt](https://github.com/kahrendt) (new-feature) +- Add MCP3221 i2c A-D-Converter [esphome#7764](https://github.com/esphome/esphome/pull/7764) by [@philippderdiedas](https://github.com/philippderdiedas) (new-component) (new-feature) (new-platform) +- [nrf52] api [esphome#11751](https://github.com/esphome/esphome/pull/11751) by [@lboue](https://github.com/lboue) (new-feature) +- [sx126x] Change BUSY, RST, DIO1 pins to general GPIO (from internal) [esphome#11782](https://github.com/esphome/esphome/pull/11782) by [@PaulSchulz](https://github.com/PaulSchulz) (new-feature) +- HLK-FM22X Face Recognition module component [esphome#8059](https://github.com/esphome/esphome/pull/8059) by [@OnFreund](https://github.com/OnFreund) (new-component) (new-feature) (new-platform) +- Add support for RX8130 RTC Chip [esphome#10511](https://github.com/esphome/esphome/pull/10511) by [@Beormund](https://github.com/Beormund) (new-component) (new-feature) (new-platform) +- [nrf52,gpio] add gpio levels for high voltage mode [esphome#9858](https://github.com/esphome/esphome/pull/9858) by [@tomaszduda23](https://github.com/tomaszduda23) (new-feature) +- [wifi] Add min_auth_mode configuration option [esphome#11814](https://github.com/esphome/esphome/pull/11814) by [@bdraco](https://github.com/bdraco) (new-feature) (breaking-change) +- [network, psram, speaker wifi] Use CORE.data to enable high performance networking [esphome#11812](https://github.com/esphome/esphome/pull/11812) by [@kahrendt](https://github.com/kahrendt) (new-feature) (breaking-change) + +### New Components + +- [bh1900nux] Add bh1900nux temperature Sensor [esphome#8631](https://github.com/esphome/esphome/pull/8631) by [@B48D81EFCC](https://github.com/B48D81EFCC) (new-component) (new-feature) (new-platform) +- [nrf52, ble_nus] add logging over BLE [esphome#9846](https://github.com/esphome/esphome/pull/9846) by [@tomaszduda23](https://github.com/tomaszduda23) (new-component) (new-feature) +- [hdc2010] New component [esphome#6674](https://github.com/esphome/esphome/pull/6674) by [@optimusprimespace](https://github.com/optimusprimespace) (new-component) (new-feature) (new-platform) +- [tinyusb] New component [esphome#11678](https://github.com/esphome/esphome/pull/11678) by [@kbx81](https://github.com/kbx81) (new-component) (new-feature) +- Add MCP3221 i2c A-D-Converter [esphome#7764](https://github.com/esphome/esphome/pull/7764) by [@philippderdiedas](https://github.com/philippderdiedas) (new-component) (new-feature) (new-platform) +- HLK-FM22X Face Recognition module component [esphome#8059](https://github.com/esphome/esphome/pull/8059) by [@OnFreund](https://github.com/OnFreund) (new-component) (new-feature) (new-platform) +- Add support for RX8130 RTC Chip [esphome#10511](https://github.com/esphome/esphome/pull/10511) by [@Beormund](https://github.com/Beormund) (new-component) (new-feature) (new-platform) + +### New Platforms + +- [bh1900nux] Add bh1900nux temperature Sensor [esphome#8631](https://github.com/esphome/esphome/pull/8631) by [@B48D81EFCC](https://github.com/B48D81EFCC) (new-component) (new-feature) (new-platform) +- [espnow] Add transport platform for packet_transport [esphome#11025](https://github.com/esphome/esphome/pull/11025) by [@EasilyBoredEngineer](https://github.com/EasilyBoredEngineer) (new-feature) (new-platform) +- [hdc2010] New component [esphome#6674](https://github.com/esphome/esphome/pull/6674) by [@optimusprimespace](https://github.com/optimusprimespace) (new-component) (new-feature) (new-platform) +- [esp32_hosted] Initial OTA implementation [esphome#11562](https://github.com/esphome/esphome/pull/11562) by [@swoboda1337](https://github.com/swoboda1337) (new-feature) (new-platform) +- [gdk101] Fix fw version reporting [esphome#11029](https://github.com/esphome/esphome/pull/11029) by [@Szewcson](https://github.com/Szewcson) (breaking-change) (new-platform) +- Add MCP3221 i2c A-D-Converter [esphome#7764](https://github.com/esphome/esphome/pull/7764) by [@philippderdiedas](https://github.com/philippderdiedas) (new-component) (new-feature) (new-platform) +- HLK-FM22X Face Recognition module component [esphome#8059](https://github.com/esphome/esphome/pull/8059) by [@OnFreund](https://github.com/OnFreund) (new-component) (new-feature) (new-platform) +- Add support for RX8130 RTC Chip [esphome#10511](https://github.com/esphome/esphome/pull/10511) by [@Beormund](https://github.com/Beormund) (new-component) (new-feature) (new-platform) + +### Breaking Changes + +- [wifi] Free scan results memory after connection (saves up to 1.2KB RAM) [esphome#11205](https://github.com/esphome/esphome/pull/11205) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [esp32] Add option to disable libc locks in IRAM, saving ~1.3KB RAM [esphome#10930](https://github.com/esphome/esphome/pull/10930) by [@bdraco](https://github.com/bdraco) (new-feature) (breaking-change) +- [esp32] Reduce tx power on IDF in the event of a brownout [esphome#11306](https://github.com/esphome/esphome/pull/11306) by [@swoboda1337](https://github.com/swoboda1337) (breaking-change) +- [nrf52] add xiao_ble board [esphome#10698](https://github.com/esphome/esphome/pull/10698) by [@tomaszduda23](https://github.com/tomaszduda23) (breaking-change) +- [light] Use bitmask instead of std::set for color modes [esphome#11348](https://github.com/esphome/esphome/pull/11348) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [script] Fix unbounded queue growth, optimize queued mode (default max_runs=5) [esphome#11308](https://github.com/esphome/esphome/pull/11308) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [light] Clean up deprecated functions from 1.21 [esphome#11389](https://github.com/esphome/esphome/pull/11389) by [@jesserockz](https://github.com/jesserockz) (breaking-change) +- [climate] Clean up deprecated functions from 1.20 [esphome#11388](https://github.com/esphome/esphome/pull/11388) by [@jesserockz](https://github.com/jesserockz) (breaking-change) +- [nextion] Clean up deprecated code from 1.20 [esphome#11393](https://github.com/esphome/esphome/pull/11393) by [@jesserockz](https://github.com/jesserockz) (breaking-change) +- remove hexencode due 2022.1 deprecation [esphome#11383](https://github.com/esphome/esphome/pull/11383) by [@JuantAldea](https://github.com/JuantAldea) (breaking-change) +- [uponor_smatrix] Use combined 32 bit addresses instead of separate 16 bit system and device addresses [esphome#11066](https://github.com/esphome/esphome/pull/11066) by [@kroimon](https://github.com/kroimon) (breaking-change) +- [fan] Clean up deprecated code from 2022.2 [esphome#11392](https://github.com/esphome/esphome/pull/11392) by [@jesserockz](https://github.com/jesserockz) (breaking-change) +- [cover] Clean up deprecated functions from 2021.9 [esphome#11391](https://github.com/esphome/esphome/pull/11391) by [@jesserockz](https://github.com/jesserockz) (breaking-change) +- [epaper_spi] Fix busy pin logic [esphome#11349](https://github.com/esphome/esphome/pull/11349) by [@egalli-dev](https://github.com/egalli-dev) (breaking-change) +- [pipsolar] cleanup / refactoring [esphome#10291](https://github.com/esphome/esphome/pull/10291) by [@patagonaa](https://github.com/patagonaa) (breaking-change) +- [esp32] Add advanced options to disable unused VFS features (saves ~8.7 KB flash) [esphome#11441](https://github.com/esphome/esphome/pull/11441) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [event] Replace std::set with FixedVector for event type storage [esphome#11463](https://github.com/esphome/esphome/pull/11463) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [light] Store effect names in flash (const char*) to save RAM [esphome#11487](https://github.com/esphome/esphome/pull/11487) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [climate] Replace std::set with FiniteSetMask for trait storage [esphome#11466](https://github.com/esphome/esphome/pull/11466) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [http_request] Pass trigger variables into on_response/on_error [esphome#11464](https://github.com/esphome/esphome/pull/11464) by [@jesserockz](https://github.com/jesserockz) (breaking-change) +- [select] Store options in flash to reduce RAM usage [esphome#11514](https://github.com/esphome/esphome/pull/11514) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [core] Remove deprecated schema constants [esphome#11591](https://github.com/esphome/esphome/pull/11591) by [@jesserockz](https://github.com/jesserockz) (breaking-change) +- [remote_transmitter] Add non-blocking mode [esphome#11524](https://github.com/esphome/esphome/pull/11524) by [@swoboda1337](https://github.com/swoboda1337) (new-feature) (breaking-change) +- [core] .local addresses are only resolvable if mDNS is enabled [esphome#11508](https://github.com/esphome/esphome/pull/11508) by [@Links2004](https://github.com/Links2004) (breaking-change) +- [fan] Use std::vector for preset modes, preserve config order [esphome#11483](https://github.com/esphome/esphome/pull/11483) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [climate] Replace std::vector with const char* for custom fan modes and presets [esphome#11621](https://github.com/esphome/esphome/pull/11621) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [psram] Require mode for S3 [esphome#11470](https://github.com/esphome/esphome/pull/11470) by [@clydebarrow](https://github.com/clydebarrow) (breaking-change) +- [network] Store use_address in RODATA to save RAM [esphome#11707](https://github.com/esphome/esphome/pull/11707) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [fan] Remove duplicate preset mode storage to save RAM [esphome#11632](https://github.com/esphome/esphome/pull/11632) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [select] Refactor to index-based operations for immediate and future RAM savings [esphome#11623](https://github.com/esphome/esphome/pull/11623) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [core] Reduce action framework argument copies by 83% [esphome#11704](https://github.com/esphome/esphome/pull/11704) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [gdk101] Fix fw version reporting [esphome#11029](https://github.com/esphome/esphome/pull/11029) by [@Szewcson](https://github.com/Szewcson) (breaking-change) (new-platform) +- [event] Store event types in flash memory [esphome#11767](https://github.com/esphome/esphome/pull/11767) by [@bdraco](https://github.com/bdraco) (breaking-change) +- Updated AQI calculation for HM3301 to the new standard [esphome#9442](https://github.com/esphome/esphome/pull/9442) by [@optimusprimespace](https://github.com/optimusprimespace) (breaking-change) +- [core] Remove deprecated EntityBase::hash_base() method [esphome#11783](https://github.com/esphome/esphome/pull/11783) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [core] Implement Global Controller Registry to reduce RAM usage [esphome#11772](https://github.com/esphome/esphome/pull/11772) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [wifi][ethernet] Don't block setup until connected [esphome#9823](https://github.com/esphome/esphome/pull/9823) by [@clydebarrow](https://github.com/clydebarrow) (breaking-change) +- [wifi] Change priority type from float to int8_t [esphome#11830](https://github.com/esphome/esphome/pull/11830) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [wifi] Add min_auth_mode configuration option [esphome#11814](https://github.com/esphome/esphome/pull/11814) by [@bdraco](https://github.com/bdraco) (new-feature) (breaking-change) +- [network, psram, speaker wifi] Use CORE.data to enable high performance networking [esphome#11812](https://github.com/esphome/esphome/pull/11812) by [@kahrendt](https://github.com/kahrendt) (new-feature) (breaking-change) + +### All changes + +
+ + +- [ci] Reduce component test group size to prevent runner disk exhaustion [esphome#11121](https://github.com/esphome/esphome/pull/11121) by [@bdraco](https://github.com/bdraco) +- [ci] Reduce component test group size to 10 to prevent runner disk exhaustion [esphome#11122](https://github.com/esphome/esphome/pull/11122) by [@bdraco](https://github.com/bdraco) +- [esp32] Accept more framework URL schemes as sources [esphome#11125](https://github.com/esphome/esphome/pull/11125) by [@j9brown](https://github.com/j9brown) (new-feature) +- [stale] Increase operations-per-run [esphome#11135](https://github.com/esphome/esphome/pull/11135) by [@swoboda1337](https://github.com/swoboda1337) +- [esp32_ble_tracker] Replace std::vector with StaticVector for listeners and clients [esphome#11173](https://github.com/esphome/esphome/pull/11173) by [@bdraco](https://github.com/bdraco) +- [web_server] Consolidate duplicate client connection checks (saves 288 bytes of flash) [esphome#11116](https://github.com/esphome/esphome/pull/11116) by [@bdraco](https://github.com/bdraco) +- [web_server] Reduce code duplication in JSON generation with helper functions [esphome#11117](https://github.com/esphome/esphome/pull/11117) by [@bdraco](https://github.com/bdraco) +- [mdns] Conditionally store services to reduce RAM usage by 200-464 bytes [esphome#11180](https://github.com/esphome/esphome/pull/11180) by [@bdraco](https://github.com/bdraco) +- [core] Optimize looping_components_ with FixedVector to save flash [esphome#11183](https://github.com/esphome/esphome/pull/11183) by [@bdraco](https://github.com/bdraco) +- [core] Add make_name_with_suffix helper to optimize string concatenation [esphome#11176](https://github.com/esphome/esphome/pull/11176) by [@bdraco](https://github.com/bdraco) +- [http_request] Pass parameters by const reference to reduce flash usage [esphome#11184](https://github.com/esphome/esphome/pull/11184) by [@bdraco](https://github.com/bdraco) +- [socket] Split LWIP socket classes to reduce memory overhead on ESP8266/RP2040 [esphome#11172](https://github.com/esphome/esphome/pull/11172) by [@bdraco](https://github.com/bdraco) +- [esp32_ble] Replace handler vectors with StaticVector for 560B-2KB memory savings [esphome#11200](https://github.com/esphome/esphome/pull/11200) by [@bdraco](https://github.com/bdraco) +- [bluetooth_proxy] Use FixedVector for GATT characteristics and descriptors [esphome#11214](https://github.com/esphome/esphome/pull/11214) by [@bdraco](https://github.com/bdraco) +- [network] Optimize get_use_address() to return const reference instead of a copy [esphome#11218](https://github.com/esphome/esphome/pull/11218) by [@bdraco](https://github.com/bdraco) +- [docs] Add state management best practices to CLAUDE.md [esphome#11224](https://github.com/esphome/esphome/pull/11224) by [@bdraco](https://github.com/bdraco) +- [docs] Add embedded systems optimization best practices to AI instructions [esphome#11225](https://github.com/esphome/esphome/pull/11225) by [@bdraco](https://github.com/bdraco) +- Bump pillow to 11.3.0 [esphome#11239](https://github.com/esphome/esphome/pull/11239) by [@bdraco](https://github.com/bdraco) +- [netlify] Pin python version [esphome#11244](https://github.com/esphome/esphome/pull/11244) by [@jesserockz](https://github.com/jesserockz) +- [wifi] Free scan results memory after connection (saves up to 1.2KB RAM) [esphome#11205](https://github.com/esphome/esphome/pull/11205) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [core] Use FixedVector for automation condition vectors to save 384 bytes flash [esphome#11237](https://github.com/esphome/esphome/pull/11237) by [@bdraco](https://github.com/bdraco) +- [wifi] Use FixedVector for scan results to reduce flash usage [esphome#11216](https://github.com/esphome/esphome/pull/11216) by [@bdraco](https://github.com/bdraco) +- [web_server_idf] Use std::vector instead of std::set for SSE sessions [esphome#11233](https://github.com/esphome/esphome/pull/11233) by [@bdraco](https://github.com/bdraco) +- [light] Use FixedVector for LightState effects list [esphome#11232](https://github.com/esphome/esphome/pull/11232) by [@bdraco](https://github.com/bdraco) +- [api] Convert HomeassistantActionRequest vectors to FixedVector for flash savings [esphome#11229](https://github.com/esphome/esphome/pull/11229) by [@bdraco](https://github.com/bdraco) +- [mdns] Use FixedVector for txt_records to reduce flash usage [esphome#11228](https://github.com/esphome/esphome/pull/11228) by [@bdraco](https://github.com/bdraco) +- [core] Fix regression from #10654 [esphome#11248](https://github.com/esphome/esphome/pull/11248) by [@stuartparmenter](https://github.com/stuartparmenter) +- [const] Add CONF_ROWS [esphome#11249](https://github.com/esphome/esphome/pull/11249) by [@stuartparmenter](https://github.com/stuartparmenter) +- [ci] Group all PR builds, isolate direct changes for full validation on dev [esphome#11193](https://github.com/esphome/esphome/pull/11193) by [@bdraco](https://github.com/bdraco) +- [ci] Add Python 3.14 testing and streamline version matrix [esphome#11238](https://github.com/esphome/esphome/pull/11238) by [@bdraco](https://github.com/bdraco) +- [esp32_hosted] Bump hosted components [esphome#11170](https://github.com/esphome/esphome/pull/11170) by [@swoboda1337](https://github.com/swoboda1337) +- [esp32] Remove kconfiglib from requirements.txt [esphome#11210](https://github.com/esphome/esphome/pull/11210) by [@thanegill](https://github.com/thanegill) +- [esp32_rmt_led_strip] Don't send reset if duration is zero [esphome#11235](https://github.com/esphome/esphome/pull/11235) by [@swoboda1337](https://github.com/swoboda1337) +- [ci] Isolate openthread [esphome#11259](https://github.com/esphome/esphome/pull/11259) by [@swoboda1337](https://github.com/swoboda1337) +- [esp32] Bump IDF version to 5.5.1 and Arduino version to 3.3.2 [esphome#9839](https://github.com/esphome/esphome/pull/9839) by [@swoboda1337](https://github.com/swoboda1337) +- [esp32_ble] Add support for hosted BLE [esphome#11167](https://github.com/esphome/esphome/pull/11167) by [@swoboda1337](https://github.com/swoboda1337) (new-feature) +- [esp32] Add option to disable libc locks in IRAM, saving ~1.3KB RAM [esphome#10930](https://github.com/esphome/esphome/pull/10930) by [@bdraco](https://github.com/bdraco) (new-feature) (breaking-change) +- [api] Use FixedVector for ListEntitiesServicesResponse args [esphome#11230](https://github.com/esphome/esphome/pull/11230) by [@bdraco](https://github.com/bdraco) +- [api] Use std::unique_ptr for fixed-size byte buffers in Noise protocol [esphome#11278](https://github.com/esphome/esphome/pull/11278) by [@bdraco](https://github.com/bdraco) +- [api] Use FixedVector for HomeAssistantServiceCallAction to reduce flash usage and avoid realloc [esphome#11277](https://github.com/esphome/esphome/pull/11277) by [@bdraco](https://github.com/bdraco) +- [git] Automatically recover from broken git repositories in external_components [esphome#11246](https://github.com/esphome/esphome/pull/11246) by [@bdraco](https://github.com/bdraco) +- [api, climate, thermostat] Implement feature_flags for `climate` [esphome#10987](https://github.com/esphome/esphome/pull/10987) by [@kbx81](https://github.com/kbx81) +- [i2s_audio] Refactor to use CORE.data instead of module-level globals [esphome#11223](https://github.com/esphome/esphome/pull/11223) by [@bdraco](https://github.com/bdraco) +- [esp32_ble] Refactor to use CORE.data instead of module-level globals [esphome#11222](https://github.com/esphome/esphome/pull/11222) by [@bdraco](https://github.com/bdraco) +- [esp32_ble_tracker] Refactor to use CORE.data instead of module-level globals [esphome#11220](https://github.com/esphome/esphome/pull/11220) by [@bdraco](https://github.com/bdraco) +- [api] Use FixedVector for ExecuteServiceRequest/Argument arrays to eliminate reallocations [esphome#11270](https://github.com/esphome/esphome/pull/11270) by [@bdraco](https://github.com/bdraco) +- [ci] Merge components with different buses to reduce CI time [esphome#11251](https://github.com/esphome/esphome/pull/11251) by [@bdraco](https://github.com/bdraco) +- [esp32] Reduce tx power on IDF in the event of a brownout [esphome#11306](https://github.com/esphome/esphome/pull/11306) by [@swoboda1337](https://github.com/swoboda1337) (breaking-change) +- [ina2xx_base] add device reset-on-boot disablement option [esphome#10787](https://github.com/esphome/esphome/pull/10787) by [@joshuaboniface](https://github.com/joshuaboniface) (new-feature) +- [tests] Fix ESP32-C3 component test binary size by using larger partition table [esphome#11319](https://github.com/esphome/esphome/pull/11319) by [@bdraco](https://github.com/bdraco) +- Synchronise Device Classes from Home Assistant [esphome#11285](https://github.com/esphome/esphome/pull/11285) by [@esphomebot](https://github.com/esphomebot) +- [toshiba] Add support for RAS-2819T air conditioner [esphome#9490](https://github.com/esphome/esphome/pull/9490) by [@exotime](https://github.com/exotime) (new-feature) +- [cap1188] remove delays in setup [esphome#11317](https://github.com/esphome/esphome/pull/11317) by [@mrtoy-me](https://github.com/mrtoy-me) +- [nrf52] add xiao_ble board [esphome#10698](https://github.com/esphome/esphome/pull/10698) by [@tomaszduda23](https://github.com/tomaszduda23) (breaking-change) +- [bh1900nux] Add bh1900nux temperature Sensor [esphome#8631](https://github.com/esphome/esphome/pull/8631) by [@B48D81EFCC](https://github.com/B48D81EFCC) (new-component) (new-feature) (new-platform) +- [debug] Replace std::map with struct array for ESP32 chip features [esphome#11307](https://github.com/esphome/esphome/pull/11307) by [@bdraco](https://github.com/bdraco) +- [tests] Add i2c_id to mcp47a1 & mcp4725 and remove from isolation [esphome#11324](https://github.com/esphome/esphome/pull/11324) by [@swoboda1337](https://github.com/swoboda1337) +- [ci] Fix test_build_components missing test files with hyphen naming pattern [esphome#11329](https://github.com/esphome/esphome/pull/11329) by [@bdraco](https://github.com/bdraco) +- [xgzp68xx] Add oversampling config and tidy up implementation. [esphome#10306](https://github.com/esphome/esphome/pull/10306) by [@ned14](https://github.com/ned14) (new-feature) +- [remote_base] Add Symphony IR protocol (encode/decode) with command_repeats support [esphome#10777](https://github.com/esphome/esphome/pull/10777) by [@leodrivera](https://github.com/leodrivera) (new-feature) +- [tests] Migrate remote_transmitter/receiver to common bus definitions [esphome#11325](https://github.com/esphome/esphome/pull/11325) by [@bdraco](https://github.com/bdraco) +- [tests] Remove superfluous else-blocks from lambdas [esphome#11322](https://github.com/esphome/esphome/pull/11322) by [@JuantAldea](https://github.com/JuantAldea) +- [total_daily_energy] Fix ID conflicts in component test configuration [esphome#11337](https://github.com/esphome/esphome/pull/11337) by [@bdraco](https://github.com/bdraco) +- [thermostat] Add humidity support [esphome#11286](https://github.com/esphome/esphome/pull/11286) by [@kbx81](https://github.com/kbx81) (new-feature) +- [api] Update to use new climate API [esphome#11357](https://github.com/esphome/esphome/pull/11357) by [@kbx81](https://github.com/kbx81) +- [web_server] Update to use new climate API [esphome#11363](https://github.com/esphome/esphome/pull/11363) by [@kbx81](https://github.com/kbx81) +- [mqtt] Update to use new climate API [esphome#11360](https://github.com/esphome/esphome/pull/11360) by [@kbx81](https://github.com/kbx81) +- [prometheus] Update to use new climate API [esphome#11361](https://github.com/esphome/esphome/pull/11361) by [@kbx81](https://github.com/kbx81) +- [nrf52] fix task names in logs [esphome#11367](https://github.com/esphome/esphome/pull/11367) by [@tomaszduda23](https://github.com/tomaszduda23) +- [nrf52, ble_nus] add logging over BLE [esphome#9846](https://github.com/esphome/esphome/pull/9846) by [@tomaszduda23](https://github.com/tomaszduda23) (new-component) (new-feature) +- make types sensors_t and sensor_type_t internal to StatsdComponent [esphome#11345](https://github.com/esphome/esphome/pull/11345) by [@JuantAldea](https://github.com/JuantAldea) +- [api][time] Refactor timezone update logic for cleaner code [esphome#11327](https://github.com/esphome/esphome/pull/11327) by [@bdraco](https://github.com/bdraco) +- [scheduler] Replace defer queue deque with vector to avoid 512-byte upfront allocation [esphome#11305](https://github.com/esphome/esphome/pull/11305) by [@bdraco](https://github.com/bdraco) +- [ci] Add automated memory impact analysis for pull requests [esphome#11242](https://github.com/esphome/esphome/pull/11242) by [@bdraco](https://github.com/bdraco) +- [light] Use bitmask instead of std::set for color modes [esphome#11348](https://github.com/esphome/esphome/pull/11348) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [esp32_ble_client] Remove duplicate MAC address extraction in set_address() [esphome#11358](https://github.com/esphome/esphome/pull/11358) by [@bdraco](https://github.com/bdraco) +- [wifi] Replace std::vector with std::unique_ptr for WiFi scan buffer [esphome#11364](https://github.com/esphome/esphome/pull/11364) by [@bdraco](https://github.com/bdraco) +- [bluetooth_proxy] Merge duplicate loops in get_connection_() [esphome#11359](https://github.com/esphome/esphome/pull/11359) by [@bdraco](https://github.com/bdraco) +- [mdns] Use std::unique_ptr for TXT records to reduce ESP32 flash usage [esphome#11362](https://github.com/esphome/esphome/pull/11362) by [@bdraco](https://github.com/bdraco) +- [sensor] Optimize sliding window filters to eliminate heap fragmentation [esphome#11282](https://github.com/esphome/esphome/pull/11282) by [@bdraco](https://github.com/bdraco) +- [mqtt] Reduce flash usage by optimizing ArduinoJson assignments [esphome#11340](https://github.com/esphome/esphome/pull/11340) by [@bdraco](https://github.com/bdraco) +- [wifi] Optimize WiFi scanning to reduce copies and heap allocations [esphome#11323](https://github.com/esphome/esphome/pull/11323) by [@bdraco](https://github.com/bdraco) +- [script] Fix unbounded queue growth, optimize queued mode (default max_runs=5) [esphome#11308](https://github.com/esphome/esphome/pull/11308) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [wifi] Convert fast_connect to compile-time define, save 156-1024 bytes flash [esphome#11328](https://github.com/esphome/esphome/pull/11328) by [@bdraco](https://github.com/bdraco) +- [wifi] Optimize WiFi scan results with in-place construction [esphome#11330](https://github.com/esphome/esphome/pull/11330) by [@bdraco](https://github.com/bdraco) +- Migrate from hexencode() to format_hex_pretty() in Kuntze component [esphome#11372](https://github.com/esphome/esphome/pull/11372) by [@JuantAldea](https://github.com/JuantAldea) +- [substitutions] !extend and !remove now support substitutions and jinja [esphome#11203](https://github.com/esphome/esphome/pull/11203) by [@jpeletier](https://github.com/jpeletier) (new-feature) +- [light] Clean up deprecated functions from 1.21 [esphome#11389](https://github.com/esphome/esphome/pull/11389) by [@jesserockz](https://github.com/jesserockz) (breaking-change) +- [climate] Clean up deprecated functions from 1.20 [esphome#11388](https://github.com/esphome/esphome/pull/11388) by [@jesserockz](https://github.com/jesserockz) (breaking-change) +- [nextion] Clean up deprecated code from 1.20 [esphome#11393](https://github.com/esphome/esphome/pull/11393) by [@jesserockz](https://github.com/jesserockz) (breaking-change) +- [ci] Fix memory impact analysis failing on fork PRs [esphome#11380](https://github.com/esphome/esphome/pull/11380) by [@bdraco](https://github.com/bdraco) +- remove hexencode due 2022.1 deprecation [esphome#11383](https://github.com/esphome/esphome/pull/11383) by [@JuantAldea](https://github.com/JuantAldea) (breaking-change) +- [substitutions] Recursive substitutions and better jinja error handling and debug help [esphome#10806](https://github.com/esphome/esphome/pull/10806) by [@jpeletier](https://github.com/jpeletier) +- [cli] Add `analyze-memory` command [esphome#11395](https://github.com/esphome/esphome/pull/11395) by [@bdraco](https://github.com/bdraco) (new-feature) +- [ci] Fix fork PR workflow failing to find PRs from forks [esphome#11396](https://github.com/esphome/esphome/pull/11396) by [@bdraco](https://github.com/bdraco) +- [nrf52] add missing defines for tests [esphome#11384](https://github.com/esphome/esphome/pull/11384) by [@tomaszduda23](https://github.com/tomaszduda23) +- [uponor_smatrix] Use combined 32 bit addresses instead of separate 16 bit system and device addresses [esphome#11066](https://github.com/esphome/esphome/pull/11066) by [@kroimon](https://github.com/kroimon) (breaking-change) +- [fan] Clean up deprecated code from 2022.2 [esphome#11392](https://github.com/esphome/esphome/pull/11392) by [@jesserockz](https://github.com/jesserockz) (breaking-change) +- [mipi_rgb] Add Waveshare 5" 1024x600 [esphome#11206](https://github.com/esphome/esphome/pull/11206) by [@clydebarrow](https://github.com/clydebarrow) (new-feature) +- [ci] Skip memory analysis when only Python/config files change in core [esphome#11397](https://github.com/esphome/esphome/pull/11397) by [@bdraco](https://github.com/bdraco) +- [climate] Add basic compile tests for climate component [esphome#11404](https://github.com/esphome/esphome/pull/11404) by [@bdraco](https://github.com/bdraco) +- [tests] Fix flaky test_noise_corrupt_encrypted_frame integration test [esphome#11405](https://github.com/esphome/esphome/pull/11405) by [@bdraco](https://github.com/bdraco) +- [esp32][ci] Fix IRAM overflow in grouped component tests for ESP32-IDF [esphome#11386](https://github.com/esphome/esphome/pull/11386) by [@bdraco](https://github.com/bdraco) +- [cover] Clean up deprecated functions from 2021.9 [esphome#11391](https://github.com/esphome/esphome/pull/11391) by [@jesserockz](https://github.com/jesserockz) (breaking-change) +- MQTT Light - Min/Max Color Temperature [esphome#11103](https://github.com/esphome/esphome/pull/11103) by [@cram42](https://github.com/cram42) +- [climate] First pass at some optimization [esphome#11366](https://github.com/esphome/esphome/pull/11366) by [@kbx81](https://github.com/kbx81) +- [esp32_improv]: add next_url support for WiFi provisioning [esphome#10757](https://github.com/esphome/esphome/pull/10757) by [@amankrokx](https://github.com/amankrokx) (new-feature) +- [epaper_spi] Fix busy pin logic [esphome#11349](https://github.com/esphome/esphome/pull/11349) by [@egalli-dev](https://github.com/egalli-dev) (breaking-change) +- [climate] Migrate components to the new API [esphome#11369](https://github.com/esphome/esphome/pull/11369) by [@JuantAldea](https://github.com/JuantAldea) +- [bang_bang] Various clean-up [esphome#11356](https://github.com/esphome/esphome/pull/11356) by [@kbx81](https://github.com/kbx81) +- [espnow] Add transport platform for packet_transport [esphome#11025](https://github.com/esphome/esphome/pull/11025) by [@EasilyBoredEngineer](https://github.com/EasilyBoredEngineer) (new-feature) (new-platform) +- [pipsolar] cleanup / refactoring [esphome#10291](https://github.com/esphome/esphome/pull/10291) by [@patagonaa](https://github.com/patagonaa) (breaking-change) +- [json] Add basic compile tests [esphome#11409](https://github.com/esphome/esphome/pull/11409) by [@bdraco](https://github.com/bdraco) +- Add tests for FilterOutValueFilter and ThrottleWithPriorityFilter [esphome#11408](https://github.com/esphome/esphome/pull/11408) by [@bdraco](https://github.com/bdraco) +- [esp32] Automatic CONFIG_LWIP_MAX_SOCKETS configuration based on component needs [esphome#11378](https://github.com/esphome/esphome/pull/11378) by [@bdraco](https://github.com/bdraco) +- [sensor] Optimize filter memory usage with ValueListFilter base class [esphome#11407](https://github.com/esphome/esphome/pull/11407) by [@bdraco](https://github.com/bdraco) +- [esp32_improv, improv_base] Reduce flash usage by 352 bytes [esphome#11406](https://github.com/esphome/esphome/pull/11406) by [@bdraco](https://github.com/bdraco) +- [esp32_hosted] Bump esp hosted to 2.6.1 [esphome#11414](https://github.com/esphome/esphome/pull/11414) by [@swoboda1337](https://github.com/swoboda1337) +- [ci] Optimize clang-tidy for small PRs by avoiding unnecessary job spitting [esphome#11402](https://github.com/esphome/esphome/pull/11402) by [@bdraco](https://github.com/bdraco) +- [ci] Prefer platform-specific tests for memory impact analysis [esphome#11398](https://github.com/esphome/esphome/pull/11398) by [@bdraco](https://github.com/bdraco) +- Add basic text_sensor tests [esphome#11424](https://github.com/esphome/esphome/pull/11424) by [@bdraco](https://github.com/bdraco) +- ESP8266: Complete testing mode memory patches with DRAM and Flash [esphome#11427](https://github.com/esphome/esphome/pull/11427) by [@bdraco](https://github.com/bdraco) +- [ci] Fix clang-tidy split decision to account for component dependencies [esphome#11430](https://github.com/esphome/esphome/pull/11430) by [@bdraco](https://github.com/bdraco) +- [core] Add support for extern "C" includes [esphome#11422](https://github.com/esphome/esphome/pull/11422) by [@swoboda1337](https://github.com/swoboda1337) +- [sensor,text_sensor,binary_sensor] Optimize filter parameters with std::initializer_list [esphome#11426](https://github.com/esphome/esphome/pull/11426) by [@bdraco](https://github.com/bdraco) +- [ci] Fix memory impact workflow for new components [esphome#11421](https://github.com/esphome/esphome/pull/11421) by [@bdraco](https://github.com/bdraco) +- [text_sensor] Optimize filters with FixedVector (1.6KB flash savings) [esphome#11423](https://github.com/esphome/esphome/pull/11423) by [@bdraco](https://github.com/bdraco) +- [improv] Put next_url behind defines to save flash [esphome#11420](https://github.com/esphome/esphome/pull/11420) by [@jesserockz](https://github.com/jesserockz) +- [core] Optimize automation actions memory usage with std::initializer_list [esphome#11433](https://github.com/esphome/esphome/pull/11433) by [@bdraco](https://github.com/bdraco) +- [espnow] Fix compilation error with initializer_list after #11433 [esphome#11436](https://github.com/esphome/esphome/pull/11436) by [@bdraco](https://github.com/bdraco) +- [analyze-memory] Improve symbol categorization accuracy [esphome#11440](https://github.com/esphome/esphome/pull/11440) by [@bdraco](https://github.com/bdraco) +- Add additional sensor filter tests [esphome#11438](https://github.com/esphome/esphome/pull/11438) by [@bdraco](https://github.com/bdraco) +- [ci] Fix clang-tidy split mode for core file changes [esphome#11434](https://github.com/esphome/esphome/pull/11434) by [@bdraco](https://github.com/bdraco) +- [climate] Add some integration tests [esphome#11439](https://github.com/esphome/esphome/pull/11439) by [@kbx81](https://github.com/kbx81) +- [sensor] Optimize calibration and Or filters with FixedVector [esphome#11437](https://github.com/esphome/esphome/pull/11437) by [@bdraco](https://github.com/bdraco) +- [binary_sensor] Add compile test for auto repeat [esphome#11443](https://github.com/esphome/esphome/pull/11443) by [@bdraco](https://github.com/bdraco) +- [binary_sensor] Optimize AutorepeatFilter with FixedVector [esphome#11444](https://github.com/esphome/esphome/pull/11444) by [@bdraco](https://github.com/bdraco) +- [climate] Remove unnecessary vector allocations in state save/restore [esphome#11445](https://github.com/esphome/esphome/pull/11445) by [@bdraco](https://github.com/bdraco) +- [sensor] Add optimistic option to heartbeat filter [esphome#10993](https://github.com/esphome/esphome/pull/10993) by [@pkejval](https://github.com/pkejval) (new-feature) +- [light] Decouple AddressableLight and Light transition classes [esphome#11166](https://github.com/esphome/esphome/pull/11166) by [@j9brown](https://github.com/j9brown) +- Add gpio switch interlock compile tests [esphome#11449](https://github.com/esphome/esphome/pull/11449) by [@bdraco](https://github.com/bdraco) +- [CI] Add auto label for chained PRs [esphome#11457](https://github.com/esphome/esphome/pull/11457) by [@jesserockz](https://github.com/jesserockz) +- [light] Add tests for AddressableColorWipeEffectColor/StrobeLightEffectColor [esphome#11456](https://github.com/esphome/esphome/pull/11456) by [@bdraco](https://github.com/bdraco) +- Add compile tests for binary_sensor MultiClickTrigger [esphome#11454](https://github.com/esphome/esphome/pull/11454) by [@bdraco](https://github.com/bdraco) +- [gpio] Optimize switch interlock with FixedVector [esphome#11448](https://github.com/esphome/esphome/pull/11448) by [@bdraco](https://github.com/bdraco) +- [esp32] Add advanced options to disable unused VFS features (saves ~8.7 KB flash) [esphome#11441](https://github.com/esphome/esphome/pull/11441) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [light] Improve gamma correction precision [esphome#11141](https://github.com/esphome/esphome/pull/11141) by [@j9brown](https://github.com/j9brown) +- C++ components unit test framework [esphome#9284](https://github.com/esphome/esphome/pull/9284) by [@jpeletier](https://github.com/jpeletier) +- [light] Replace std::vector with FixedVector in strobe and color_wipe effects [esphome#11455](https://github.com/esphome/esphome/pull/11455) by [@bdraco](https://github.com/bdraco) +- [core] Stop clang-format "fixing" a single line [esphome#11462](https://github.com/esphome/esphome/pull/11462) by [@jesserockz](https://github.com/jesserockz) +- [api] Allow clearing noise psk if dynamically set [esphome#11429](https://github.com/esphome/esphome/pull/11429) by [@jesserockz](https://github.com/jesserockz) +- [binary_sensor] Optimize MultiClickTrigger with FixedVector [esphome#11453](https://github.com/esphome/esphome/pull/11453) by [@bdraco](https://github.com/bdraco) +- [wifi] Test multiple stas in wifi compile tests [esphome#11460](https://github.com/esphome/esphome/pull/11460) by [@bdraco](https://github.com/bdraco) +- [event] Replace std::set with FixedVector for event type storage [esphome#11463](https://github.com/esphome/esphome/pull/11463) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [CI] Fix component detection when core files change in determine-jobs [esphome#11461](https://github.com/esphome/esphome/pull/11461) by [@bdraco](https://github.com/bdraco) +- [light] Add compile test for addressable lights [esphome#11465](https://github.com/esphome/esphome/pull/11465) by [@bdraco](https://github.com/bdraco) +- [wifi] Optimize WiFi network storage with FixedVector [esphome#11458](https://github.com/esphome/esphome/pull/11458) by [@bdraco](https://github.com/bdraco) +- [climate] Fix restore state for fan mode, preset, and swing mode [esphome#11126](https://github.com/esphome/esphome/pull/11126) by [@j9brown](https://github.com/j9brown) +- [light] Eliminate dimming undershoot during addressable light transition [esphome#11471](https://github.com/esphome/esphome/pull/11471) by [@j9brown](https://github.com/j9brown) +- [ci] Fix test detection for components with only variant tests [esphome#11474](https://github.com/esphome/esphome/pull/11474) by [@bdraco](https://github.com/bdraco) +- [ci] Fix component splitter for components with only variant tests [esphome#11476](https://github.com/esphome/esphome/pull/11476) by [@bdraco](https://github.com/bdraco) +- [esp32] Set the location of the IDF component manager cache [esphome#11467](https://github.com/esphome/esphome/pull/11467) by [@swoboda1337](https://github.com/swoboda1337) +- [ci] Fix WiFi testing mode validation and component splitter for variant-only tests [esphome#11481](https://github.com/esphome/esphome/pull/11481) by [@bdraco](https://github.com/bdraco) +- [openthread] Fix OTA by populating CORE.address with device's mDNS address [esphome#11095](https://github.com/esphome/esphome/pull/11095) by [@danstiner](https://github.com/danstiner) (new-feature) +- [fan] Add basic fan compile tests [esphome#11484](https://github.com/esphome/esphome/pull/11484) by [@bdraco](https://github.com/bdraco) +- [nrf52] support BLE --device for logging [esphome#9861](https://github.com/esphome/esphome/pull/9861) by [@tomaszduda23](https://github.com/tomaszduda23) (new-feature) +- [light] Store effect names in flash (const char*) to save RAM [esphome#11487](https://github.com/esphome/esphome/pull/11487) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [light] Use std::initializer_list for add_effects to reduce flash overhead [esphome#11485](https://github.com/esphome/esphome/pull/11485) by [@bdraco](https://github.com/bdraco) +- [light] Extract ColorModeMask into generic FiniteSetMask helper [esphome#11472](https://github.com/esphome/esphome/pull/11472) by [@bdraco](https://github.com/bdraco) +- [improv_serial] Various optimizations [esphome#11473](https://github.com/esphome/esphome/pull/11473) by [@kbx81](https://github.com/kbx81) +- [hdc2010] New component [esphome#6674](https://github.com/esphome/esphome/pull/6674) by [@optimusprimespace](https://github.com/optimusprimespace) (new-component) (new-feature) (new-platform) +- [api] Fix clang-tidy modernize-use-emplace warning for light effects [esphome#11490](https://github.com/esphome/esphome/pull/11490) by [@bdraco](https://github.com/bdraco) +- [ethernet] Add RMII GPIO pin conflict validation [esphome#11488](https://github.com/esphome/esphome/pull/11488) by [@bdraco](https://github.com/bdraco) +- [scheduler] Remove unused deque include after defer queue optimization [esphome#11491](https://github.com/esphome/esphome/pull/11491) by [@bdraco](https://github.com/bdraco) +- [pipsolar] improve sensor readout in HA, set unknown state on timeout / error [esphome#10292](https://github.com/esphome/esphome/pull/10292) by [@patagonaa](https://github.com/patagonaa) +- [tests] Isolate gps component to prevent TinyGPSPlus millis() conflicts [esphome#11499](https://github.com/esphome/esphome/pull/11499) by [@bdraco](https://github.com/bdraco) +- [core][sensor] Eliminate redundant default value setters in generated code [esphome#11495](https://github.com/esphome/esphome/pull/11495) by [@bdraco](https://github.com/bdraco) +- [http_request] Pass collect_headers by const reference instead of by value [esphome#11494](https://github.com/esphome/esphome/pull/11494) by [@bdraco](https://github.com/bdraco) +- [remote_transmitter] Remove delays and use RMT instead [esphome#11505](https://github.com/esphome/esphome/pull/11505) by [@swoboda1337](https://github.com/swoboda1337) +- [esp32] Add IDF 5.4.3 to platform list and switch to tar.xz [esphome#11528](https://github.com/esphome/esphome/pull/11528) by [@swoboda1337](https://github.com/swoboda1337) +- [sntp] Replace std::vector with std::array to save heap memory [esphome#11525](https://github.com/esphome/esphome/pull/11525) by [@bdraco](https://github.com/bdraco) +- [gpio] Skip set_inverted() call for default false value [esphome#11538](https://github.com/esphome/esphome/pull/11538) by [@bdraco](https://github.com/bdraco) +- [core] Don't allow python 3.14 [esphome#11527](https://github.com/esphome/esphome/pull/11527) by [@swoboda1337](https://github.com/swoboda1337) +- Optimize stateless lambdas to use function pointers [esphome#11551](https://github.com/esphome/esphome/pull/11551) by [@bdraco](https://github.com/bdraco) +- [substitutions] fix #11077 Preserve ESPHomeDatabase (document metadata) in substitutions [esphome#11087](https://github.com/esphome/esphome/pull/11087) by [@jpeletier](https://github.com/jpeletier) +- [network] Eliminate runtime string parsing for IP address initialization [esphome#11561](https://github.com/esphome/esphome/pull/11561) by [@bdraco](https://github.com/bdraco) +- [api] Register user services with initializer_list [esphome#11545](https://github.com/esphome/esphome/pull/11545) by [@bdraco](https://github.com/bdraco) +- [light] Optimize LambdaLightEffect and AddressableLambdaLightEffect with function pointers [esphome#11556](https://github.com/esphome/esphome/pull/11556) by [@bdraco](https://github.com/bdraco) +- [core] Optimize TemplatableValue to use function pointers for stateless lambdas [esphome#11554](https://github.com/esphome/esphome/pull/11554) by [@bdraco](https://github.com/bdraco) +- [template] Optimize all template platforms to use function pointers for stateless lambdas [esphome#11555](https://github.com/esphome/esphome/pull/11555) by [@bdraco](https://github.com/bdraco) +- [api] Use FixedVector const references for service array arguments [esphome#11546](https://github.com/esphome/esphome/pull/11546) by [@bdraco](https://github.com/bdraco) +- [core] Simplify ESPTime::strftime() and save 20 bytes flash [esphome#11539](https://github.com/esphome/esphome/pull/11539) by [@bdraco](https://github.com/bdraco) +- [number] Skip set_mode call when using default AUTO mode [esphome#11537](https://github.com/esphome/esphome/pull/11537) by [@bdraco](https://github.com/bdraco) +- [template] Store initial option as index in template select [esphome#11523](https://github.com/esphome/esphome/pull/11523) by [@bdraco](https://github.com/bdraco) +- fix: load_cert_chain requires the path, not a file object [esphome#11543](https://github.com/esphome/esphome/pull/11543) by [@waza-ari](https://github.com/waza-ari) +- [tuya] allow enum for eco id [esphome#11544](https://github.com/esphome/esphome/pull/11544) by [@ssieb](https://github.com/ssieb) +- [nextion] Remove TFT upload baud rate validation to reduce flash usage [esphome#11012](https://github.com/esphome/esphome/pull/11012) by [@edwardtfn](https://github.com/edwardtfn) +- [nextion] Add `set_component_visibility()` method for dynamic visibility control [esphome#11530](https://github.com/esphome/esphome/pull/11530) by [@edwardtfn](https://github.com/edwardtfn) +- [remote_base] add support for Dyson cool AM07 tower fan [esphome#10163](https://github.com/esphome/esphome/pull/10163) by [@aanban](https://github.com/aanban) (new-feature) +- Additional tests for ble_client lambdas [esphome#11565](https://github.com/esphome/esphome/pull/11565) by [@bdraco](https://github.com/bdraco) +- Add additional modbus compile tests [esphome#11567](https://github.com/esphome/esphome/pull/11567) by [@bdraco](https://github.com/bdraco) +- [http_request] update timeout to be uint32_t [esphome#11577](https://github.com/esphome/esphome/pull/11577) by [@rwrozelle](https://github.com/rwrozelle) +- Add additional uart test coverage [esphome#11571](https://github.com/esphome/esphome/pull/11571) by [@bdraco](https://github.com/bdraco) +- [esp32_ble_server][esp32_improv] Eliminate unnecessary heap allocations [esphome#11569](https://github.com/esphome/esphome/pull/11569) by [@bdraco](https://github.com/bdraco) +- [modbus_controller] Optimize lambdas to use function pointers instead of std::function [esphome#11566](https://github.com/esphome/esphome/pull/11566) by [@bdraco](https://github.com/bdraco) +- [ci] Remove base bus components exclusion from memory impact analysis [esphome#11572](https://github.com/esphome/esphome/pull/11572) by [@bdraco](https://github.com/bdraco) +- [ble_client] Use function pointers for lambda actions and sensors [esphome#11564](https://github.com/esphome/esphome/pull/11564) by [@bdraco](https://github.com/bdraco) +- [climate] Replace std::set with FiniteSetMask for trait storage [esphome#11466](https://github.com/esphome/esphome/pull/11466) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [uart] Optimize UART components to eliminate temporary vector allocations [esphome#11570](https://github.com/esphome/esphome/pull/11570) by [@bdraco](https://github.com/bdraco) +- [packages] Tighten package validation [esphome#11584](https://github.com/esphome/esphome/pull/11584) by [@jpeletier](https://github.com/jpeletier) +- [http_request] Pass trigger variables into on_response/on_error [esphome#11464](https://github.com/esphome/esphome/pull/11464) by [@jesserockz](https://github.com/jesserockz) (breaking-change) +- [ci] Change upper Python version being tested to 3.13 [esphome#11587](https://github.com/esphome/esphome/pull/11587) by [@bdraco](https://github.com/bdraco) +- template_alarm_control_panel cleanups [esphome#11469](https://github.com/esphome/esphome/pull/11469) by [@warthog618](https://github.com/warthog618) +- [ci] Fix auto labeller workflow with wrong comment for too-big with labels [esphome#11592](https://github.com/esphome/esphome/pull/11592) by [@jesserockz](https://github.com/jesserockz) +- [logger] Improve level validation errors [esphome#11589](https://github.com/esphome/esphome/pull/11589) by [@jesserockz](https://github.com/jesserockz) +- [fan] Remove deprecated `set_speed` function [esphome#11590](https://github.com/esphome/esphome/pull/11590) by [@jesserockz](https://github.com/jesserockz) +- [select] Store options in flash to reduce RAM usage [esphome#11514](https://github.com/esphome/esphome/pull/11514) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [ci] Fix component tests not running when only test files change [esphome#11580](https://github.com/esphome/esphome/pull/11580) by [@bdraco](https://github.com/bdraco) +- template_alarm_control_panel readability improvements [esphome#11593](https://github.com/esphome/esphome/pull/11593) by [@warthog618](https://github.com/warthog618) +- [core] Remove deprecated schema constants [esphome#11591](https://github.com/esphome/esphome/pull/11591) by [@jesserockz](https://github.com/jesserockz) (breaking-change) +- [remote_transmitter] Add non-blocking mode [esphome#11524](https://github.com/esphome/esphome/pull/11524) by [@swoboda1337](https://github.com/swoboda1337) (new-feature) (breaking-change) +- [core] Fix substitution id redefinition false positive [esphome#11603](https://github.com/esphome/esphome/pull/11603) by [@jpeletier](https://github.com/jpeletier) +- [lvgl] fix typo from previous refactor [esphome#11596](https://github.com/esphome/esphome/pull/11596) by [@stuartparmenter](https://github.com/stuartparmenter) +- [lvgl] memset canvas buffer to prevent display of random garbage [esphome#11582](https://github.com/esphome/esphome/pull/11582) by [@stuartparmenter](https://github.com/stuartparmenter) +- [ci] Restore parallel execution for clang-tidy split mode [esphome#11613](https://github.com/esphome/esphome/pull/11613) by [@bdraco](https://github.com/bdraco) +- [ci] Consolidate component splitting into determine-jobs [esphome#11614](https://github.com/esphome/esphome/pull/11614) by [@bdraco](https://github.com/bdraco) +- [gpio] Skip set_use_interrupt call when using default value [esphome#11612](https://github.com/esphome/esphome/pull/11612) by [@bdraco](https://github.com/bdraco) +- [template] Eliminate optional wrapper to save 4 bytes RAM per instance [esphome#11610](https://github.com/esphome/esphome/pull/11610) by [@bdraco](https://github.com/bdraco) +- [e131] Replace std::set with std::vector to reduce flash usage [esphome#11598](https://github.com/esphome/esphome/pull/11598) by [@bdraco](https://github.com/bdraco) +- [core] .local addresses are only resolvable if mDNS is enabled [esphome#11508](https://github.com/esphome/esphome/pull/11508) by [@Links2004](https://github.com/Links2004) (breaking-change) +- [substitutions] fix jinja parsing strings that look like sets as sets [esphome#11611](https://github.com/esphome/esphome/pull/11611) by [@jpeletier](https://github.com/jpeletier) +- [automations] Update error message [esphome#11640](https://github.com/esphome/esphome/pull/11640) by [@clydebarrow](https://github.com/clydebarrow) +- [ruff] Remove deprecated UP038 rule from ignore list [esphome#11646](https://github.com/esphome/esphome/pull/11646) by [@bdraco](https://github.com/bdraco) +- [lvgl] Trigger improvements and additions [esphome#11628](https://github.com/esphome/esphome/pull/11628) by [@clydebarrow](https://github.com/clydebarrow) (new-feature) +- [cpp_generator] Align isinstance() with codebase style (tuple vs PEP 604) [esphome#11645](https://github.com/esphome/esphome/pull/11645) by [@bdraco](https://github.com/bdraco) +- [json] Fix component test compilation errors [esphome#11647](https://github.com/esphome/esphome/pull/11647) by [@bdraco](https://github.com/bdraco) +- [nrf52] fix compilation warning [esphome#11656](https://github.com/esphome/esphome/pull/11656) by [@tomaszduda23](https://github.com/tomaszduda23) +- [core] Remove redundant fd bounds check in yield_with_select_() [esphome#11666](https://github.com/esphome/esphome/pull/11666) by [@bdraco](https://github.com/bdraco) +- [api] Remove unnecessary intermediate variable in frame helpers [esphome#11668](https://github.com/esphome/esphome/pull/11668) by [@bdraco](https://github.com/bdraco) +- Add basic tests for web_server_idf [esphome#11659](https://github.com/esphome/esphome/pull/11659) by [@bdraco](https://github.com/bdraco) +- add integration test for script re-entry argument issue [esphome#11652](https://github.com/esphome/esphome/pull/11652) by [@afflux](https://github.com/afflux) +- [nextion] Send `auto_wake_on_touch` as part of startup commands on loop [esphome#11670](https://github.com/esphome/esphome/pull/11670) by [@edwardtfn](https://github.com/edwardtfn) +- ESP32 Pin loopTask to CORE 1 [esphome#11669](https://github.com/esphome/esphome/pull/11669) by [@glmnet](https://github.com/glmnet) +- [nrf52,gpio] switch input gpio to polling mode [esphome#11664](https://github.com/esphome/esphome/pull/11664) by [@tomaszduda23](https://github.com/tomaszduda23) +- [nrf52] enable nrf52 test [esphome#11379](https://github.com/esphome/esphome/pull/11379) by [@tomaszduda23](https://github.com/tomaszduda23) +- Enable IPv6 for host [esphome#11630](https://github.com/esphome/esphome/pull/11630) by [@HeMan](https://github.com/HeMan) +- Use lists inits initialization instead of std::fill [esphome#11532](https://github.com/esphome/esphome/pull/11532) by [@JuantAldea](https://github.com/JuantAldea) +- [nrf52, zigbee] OnlyWith support list of components [esphome#11533](https://github.com/esphome/esphome/pull/11533) by [@tomaszduda23](https://github.com/tomaszduda23) +- actions: fix loop re-entry [esphome#7972](https://github.com/esphome/esphome/pull/7972) by [@afflux](https://github.com/afflux) +- [component] Add is_idle method and condition [esphome#11651](https://github.com/esphome/esphome/pull/11651) by [@clydebarrow](https://github.com/clydebarrow) (new-feature) +- [font][image] Use ESPHome urls for remote images [esphome#11675](https://github.com/esphome/esphome/pull/11675) by [@clydebarrow](https://github.com/clydebarrow) +- [esphome][ota] Add write_byte_() helper to reduce code duplication [esphome#11511](https://github.com/esphome/esphome/pull/11511) by [@bdraco](https://github.com/bdraco) +- [esp32_ble] Optimize loop() to reduce flash usage by ~104 bytes [esphome#11627](https://github.com/esphome/esphome/pull/11627) by [@bdraco](https://github.com/bdraco) +- [ble_client] Fix premature disconnections by reading characteristics immediately after service discovery [esphome#11410](https://github.com/esphome/esphome/pull/11410) by [@bdraco](https://github.com/bdraco) +- Add action continuation tests [esphome#11674](https://github.com/esphome/esphome/pull/11674) by [@bdraco](https://github.com/bdraco) +- [web_server] Remove redundant assignment in deq_push_back_with_dedup_ [esphome#11642](https://github.com/esphome/esphome/pull/11642) by [@bdraco](https://github.com/bdraco) +- [web_server] Eliminate nested lambdas in DeferredUpdateEventSourceList [esphome#11641](https://github.com/esphome/esphome/pull/11641) by [@bdraco](https://github.com/bdraco) +- [web_server] Use zero-copy entity ID comparison in request handlers [esphome#11644](https://github.com/esphome/esphome/pull/11644) by [@bdraco](https://github.com/bdraco) +- [esp32_ble] Reduce GATT event latency from 8ms to 12μs with notification socket [esphome#11663](https://github.com/esphome/esphome/pull/11663) by [@bdraco](https://github.com/bdraco) +- [fan] Use std::vector for preset modes, preserve config order [esphome#11483](https://github.com/esphome/esphome/pull/11483) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [web_server_idf] Reduce flash by eliminating temporary string allocations in event formatting [esphome#11658](https://github.com/esphome/esphome/pull/11658) by [@bdraco](https://github.com/bdraco) +- [scheduler] Refactor call() for improved code organization [esphome#11643](https://github.com/esphome/esphome/pull/11643) by [@bdraco](https://github.com/bdraco) +- [core] Avoid redundant millis() calls in base_automation loop methods [esphome#11676](https://github.com/esphome/esphome/pull/11676) by [@bdraco](https://github.com/bdraco) +- [esp32_ble] Wake main loop for GAP security events [esphome#11677](https://github.com/esphome/esphome/pull/11677) by [@bdraco](https://github.com/bdraco) +- [climate] Replace std::vector with const char* for custom fan modes and presets [esphome#11621](https://github.com/esphome/esphome/pull/11621) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [nrf52,debug] fix status of nRESET pin, add extra registry from UICR [esphome#11667](https://github.com/esphome/esphome/pull/11667) by [@tomaszduda23](https://github.com/tomaszduda23) +- [template] alarm_control_panel more ESP_LOGCONFIG reductions [esphome#11691](https://github.com/esphome/esphome/pull/11691) by [@warthog618](https://github.com/warthog618) +- [mqtt] Fix climate custom fan mode and preset compilation errors [esphome#11692](https://github.com/esphome/esphome/pull/11692) by [@bdraco](https://github.com/bdraco) +- Add support for Mopeka standard check alternate ID [esphome#10907](https://github.com/esphome/esphome/pull/10907) by [@pixelatedmirror](https://github.com/pixelatedmirror) (new-feature) +- [esp32] Make loop task stack size configurable [esphome#10564](https://github.com/esphome/esphome/pull/10564) by [@idstein](https://github.com/idstein) (new-feature) +- [nrf52, i2c] i2c support for nrf52 [esphome#8150](https://github.com/esphome/esphome/pull/8150) by [@tomaszduda23](https://github.com/tomaszduda23) (new-feature) +- [core][esp32_ble][socket] Add wake_loop_threadsafe() helper for background thread wakeups [esphome#11681](https://github.com/esphome/esphome/pull/11681) by [@bdraco](https://github.com/bdraco) +- [usb_host] Add wake_loop_threadsafe() for low-latency USB event processing [esphome#11683](https://github.com/esphome/esphome/pull/11683) by [@bdraco](https://github.com/bdraco) +- [esp32_hosted] Initial OTA implementation [esphome#11562](https://github.com/esphome/esphome/pull/11562) by [@swoboda1337](https://github.com/swoboda1337) (new-feature) (new-platform) +- [epaper_spi] Refactoring [esphome#11540](https://github.com/esphome/esphome/pull/11540) by [@clydebarrow](https://github.com/clydebarrow) (new-feature) +- [micro_wake_word] Add wake_loop_threadsafe() for low-latency wake word detection [esphome#11698](https://github.com/esphome/esphome/pull/11698) by [@bdraco](https://github.com/bdraco) +- [usb_uart] Fixes for transfer queue allocation [esphome#11548](https://github.com/esphome/esphome/pull/11548) by [@clydebarrow](https://github.com/clydebarrow) +- [helpers] Add `get_mac_address_into_buffer()` [esphome#11700](https://github.com/esphome/esphome/pull/11700) by [@kbx81](https://github.com/kbx81) +- [tinyusb] New component [esphome#11678](https://github.com/esphome/esphome/pull/11678) by [@kbx81](https://github.com/kbx81) (new-component) (new-feature) +- [ci] Fix memory impact analysis to filter incompatible platform components [esphome#11706](https://github.com/esphome/esphome/pull/11706) by [@bdraco](https://github.com/bdraco) +- [core] Fix ESPTime crash [esphome#11705](https://github.com/esphome/esphome/pull/11705) by [@swoboda1337](https://github.com/swoboda1337) +- [psram] Require mode for S3 [esphome#11470](https://github.com/esphome/esphome/pull/11470) by [@clydebarrow](https://github.com/clydebarrow) (breaking-change) +- [lvgl] Layout improvements [esphome#10149](https://github.com/esphome/esphome/pull/10149) by [@clydebarrow](https://github.com/clydebarrow) (new-feature) +- [lvgl] Fix rotation with unusual width [esphome#11680](https://github.com/esphome/esphome/pull/11680) by [@clydebarrow](https://github.com/clydebarrow) +- [mqtt] Add wake_loop_threadsafe() for low-latency event processing on ESP32 [esphome#11695](https://github.com/esphome/esphome/pull/11695) by [@bdraco](https://github.com/bdraco) +- [espnow] Add wake_loop_threadsafe() for low-latency event processing [esphome#11696](https://github.com/esphome/esphome/pull/11696) by [@bdraco](https://github.com/bdraco) +- [esp32_ble] Remove leftover lwip/sockets.h include [esphome#11702](https://github.com/esphome/esphome/pull/11702) by [@bdraco](https://github.com/bdraco) +- [ci] Fix non-component files incorrectly detected as components [esphome#11701](https://github.com/esphome/esphome/pull/11701) by [@bdraco](https://github.com/bdraco) +- [ci] Cache component dependency graph for up to 3.4x faster determine-jobs [esphome#11648](https://github.com/esphome/esphome/pull/11648) by [@bdraco](https://github.com/bdraco) +- Dallas indexing [esphome#11346](https://github.com/esphome/esphome/pull/11346) by [@leejoow](https://github.com/leejoow) (new-feature) +- [sgp30] Fix reading from preexisting stored baseline even with `store_baseline:false` [esphome#7922](https://github.com/esphome/esphome/pull/7922) by [@chaserhkj](https://github.com/chaserhkj) +- [max7219digit] support `flip_x` when `rotate_chip` is 90° or 270° [esphome#6109](https://github.com/esphome/esphome/pull/6109) by [@Tugzrida](https://github.com/Tugzrida) +- [gp8403] Add gp8413 (15 bits) DAC model [esphome#7726](https://github.com/esphome/esphome/pull/7726) by [@SeByDocKy](https://github.com/SeByDocKy) (new-feature) +- [gt911] Fix gt911 touchscreen with reset pin not initializing when loglevel is set to NONE [esphome#11715](https://github.com/esphome/esphome/pull/11715) by [@jpeletier](https://github.com/jpeletier) +- [automations] Reduce memory usage in if/while/repeat actions (32-36 bytes per instance) [esphome#11650](https://github.com/esphome/esphome/pull/11650) by [@bdraco](https://github.com/bdraco) +- [network] Store use_address in RODATA to save RAM [esphome#11707](https://github.com/esphome/esphome/pull/11707) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [fan] Remove duplicate preset mode storage to save RAM [esphome#11632](https://github.com/esphome/esphome/pull/11632) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [lvgl] Fix case sensitivity in flex layout [esphome#11717](https://github.com/esphome/esphome/pull/11717) by [@clydebarrow](https://github.com/clydebarrow) +- [display] Optimize display writers with function pointers for stateless lambdas [esphome#11629](https://github.com/esphome/esphome/pull/11629) by [@bdraco](https://github.com/bdraco) +- [select] Refactor to index-based operations for immediate and future RAM savings [esphome#11623](https://github.com/esphome/esphome/pull/11623) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [const] Move `CONF_ENABLED` to const.py [esphome#11719](https://github.com/esphome/esphome/pull/11719) by [@Gnuspice](https://github.com/Gnuspice) +- [core] Reduce action framework argument copies by 83% [esphome#11704](https://github.com/esphome/esphome/pull/11704) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [select][lvgl] Fix FixedVector size() returning 0 when using operator[] after init() [esphome#11721](https://github.com/esphome/esphome/pull/11721) by [@bdraco](https://github.com/bdraco) +- [wifi_info] Reduce heap usage by up to 1.7KB in scan_results sensor [esphome#11723](https://github.com/esphome/esphome/pull/11723) by [@bdraco](https://github.com/bdraco) +- [voice_assistant] Eliminate substr() allocations in text truncation [esphome#11725](https://github.com/esphome/esphome/pull/11725) by [@bdraco](https://github.com/bdraco) +- [rtttl] Reduce flash usage by eliminating substr() allocations [esphome#11722](https://github.com/esphome/esphome/pull/11722) by [@bdraco](https://github.com/bdraco) +- [ld2420] Eliminate substr() allocation in firmware version parsing [esphome#11724](https://github.com/esphome/esphome/pull/11724) by [@bdraco](https://github.com/bdraco) +- [scheduler] Extract helper functions to improve code readability [esphome#11730](https://github.com/esphome/esphome/pull/11730) by [@bdraco](https://github.com/bdraco) +- [template] Mark all component classes as final [esphome#11733](https://github.com/esphome/esphome/pull/11733) by [@bdraco](https://github.com/bdraco) +- [mqtt] Use StringRef to avoid string copies in discovery [esphome#11731](https://github.com/esphome/esphome/pull/11731) by [@bdraco](https://github.com/bdraco) +- [mdns] Eliminate redundant hostname copy to save heap memory [esphome#11734](https://github.com/esphome/esphome/pull/11734) by [@bdraco](https://github.com/bdraco) +- [core] Deprecate get_icon(), get_device_class(), get_unit_of_measurement() and fix remaining non-MQTT usages [esphome#11732](https://github.com/esphome/esphome/pull/11732) by [@bdraco](https://github.com/bdraco) +- [tests] Fix ID collision between bl0940 and nau7802 component tests [esphome#11739](https://github.com/esphome/esphome/pull/11739) by [@bdraco](https://github.com/bdraco) +- [ci] Skip memory impact analysis for release and beta branches [esphome#11740](https://github.com/esphome/esphome/pull/11740) by [@bdraco](https://github.com/bdraco) +- [lvgl] Allow text substitution for NaN [esphome#11712](https://github.com/esphome/esphome/pull/11712) by [@clydebarrow](https://github.com/clydebarrow) (new-feature) +- [ci] Skip memory impact analysis when more than 40 components changed [esphome#11741](https://github.com/esphome/esphome/pull/11741) by [@bdraco](https://github.com/bdraco) +- Update AI instructions with C++ style guidelines from developers docs [esphome#11743](https://github.com/esphome/esphome/pull/11743) by [@bdraco](https://github.com/bdraco) +- [api] Store YAML service names in flash instead of heap [esphome#11744](https://github.com/esphome/esphome/pull/11744) by [@bdraco](https://github.com/bdraco) +- [core] Add helper functions for clamp_at_... [esphome#10387](https://github.com/esphome/esphome/pull/10387) by [@clydebarrow](https://github.com/clydebarrow) +- [core] Fix wait_until and for_condition timing regression in automation chains [esphome#11716](https://github.com/esphome/esphome/pull/11716) by [@bdraco](https://github.com/bdraco) +- [select] Convert remaining components to use index-based control() [esphome#11693](https://github.com/esphome/esphome/pull/11693) by [@bdraco](https://github.com/bdraco) +- [gdk101] Fix fw version reporting [esphome#11029](https://github.com/esphome/esphome/pull/11029) by [@Szewcson](https://github.com/Szewcson) (breaking-change) (new-platform) +- [openthread] add poll period for mtd devices [esphome#11374](https://github.com/esphome/esphome/pull/11374) by [@rwrozelle](https://github.com/rwrozelle) (new-feature) +- [socket] Deduplicate IP formatting in LWIP raw TCP implementation [esphome#11747](https://github.com/esphome/esphome/pull/11747) by [@bdraco](https://github.com/bdraco) +- [psram] Add option to disable ignore not found sdkconfig setting [esphome#11411](https://github.com/esphome/esphome/pull/11411) by [@kahrendt](https://github.com/kahrendt) (new-feature) +- Add MCP3221 i2c A-D-Converter [esphome#7764](https://github.com/esphome/esphome/pull/7764) by [@philippderdiedas](https://github.com/philippderdiedas) (new-component) (new-feature) (new-platform) +- [ci] Reduce release time by removing 468 redundant ESP32-C3 IDF tests [esphome#11737](https://github.com/esphome/esphome/pull/11737) by [@bdraco](https://github.com/bdraco) +- [wifi] Guard AP-related members with USE_WIFI_AP to save RAM [esphome#11753](https://github.com/esphome/esphome/pull/11753) by [@bdraco](https://github.com/bdraco) +- [wifi] Refactor AP selection to use index instead of copy (saves 88 bytes) [esphome#11749](https://github.com/esphome/esphome/pull/11749) by [@bdraco](https://github.com/bdraco) +- [core] Use ESPDEPRECATED macro for deprecation warnings [esphome#11755](https://github.com/esphome/esphome/pull/11755) by [@bdraco](https://github.com/bdraco) +- [ai_instructions] Add public API and breaking changes guidelines [esphome#11756](https://github.com/esphome/esphome/pull/11756) by [@bdraco](https://github.com/bdraco) +- [tests] Fix determine_jobs tests failing when target branch is beta [esphome#11758](https://github.com/esphome/esphome/pull/11758) by [@bdraco](https://github.com/bdraco) +- [ci] Fix component batching for beta/release branches (3-4 → 40 per batch) [esphome#11759](https://github.com/esphome/esphome/pull/11759) by [@bdraco](https://github.com/bdraco) +- [event] Store event types in flash memory [esphome#11767](https://github.com/esphome/esphome/pull/11767) by [@bdraco](https://github.com/bdraco) (breaking-change) +- Updated AQI calculation for HM3301 to the new standard [esphome#9442](https://github.com/esphome/esphome/pull/9442) by [@optimusprimespace](https://github.com/optimusprimespace) (breaking-change) +- Expand uart.write tests [esphome#11785](https://github.com/esphome/esphome/pull/11785) by [@bdraco](https://github.com/bdraco) +- Add ble_client lambda compile tests [esphome#11787](https://github.com/esphome/esphome/pull/11787) by [@bdraco](https://github.com/bdraco) +- Add additional compile time tests for canbus [esphome#11789](https://github.com/esphome/esphome/pull/11789) by [@bdraco](https://github.com/bdraco) +- Add additional sx126x lambda tests [esphome#11791](https://github.com/esphome/esphome/pull/11791) by [@bdraco](https://github.com/bdraco) +- Add additional sx127x lambda tests [esphome#11793](https://github.com/esphome/esphome/pull/11793) by [@bdraco](https://github.com/bdraco) +- Add additional speaker lambda tests [esphome#11797](https://github.com/esphome/esphome/pull/11797) by [@bdraco](https://github.com/bdraco) +- Add additional udp lambda tests [esphome#11795](https://github.com/esphome/esphome/pull/11795) by [@bdraco](https://github.com/bdraco) +- Add additonal abbwelcome remote_base tests [esphome#11799](https://github.com/esphome/esphome/pull/11799) by [@bdraco](https://github.com/bdraco) +- Add additional tests for remote_transmitter raw [esphome#11801](https://github.com/esphome/esphome/pull/11801) by [@bdraco](https://github.com/bdraco) +- [ble_client] Optimize ble_write memory usage - store static data in flash [esphome#11786](https://github.com/esphome/esphome/pull/11786) by [@bdraco](https://github.com/bdraco) +- [canbus] Optimize canbus.send memory usage - store static data in flash [esphome#11788](https://github.com/esphome/esphome/pull/11788) by [@bdraco](https://github.com/bdraco) +- [sx126x] Optimize send_packet action memory usage - store static data in flash [esphome#11790](https://github.com/esphome/esphome/pull/11790) by [@bdraco](https://github.com/bdraco) +- [remote_base] Optimize raw transmit action memory usage - use function pointers [esphome#11800](https://github.com/esphome/esphome/pull/11800) by [@bdraco](https://github.com/bdraco) +- [sx127x] Optimize send_packet action memory usage - store static data in flash [esphome#11792](https://github.com/esphome/esphome/pull/11792) by [@bdraco](https://github.com/bdraco) +- [remote_base] Eliminate substr() allocations in Pronto dump logging [esphome#11726](https://github.com/esphome/esphome/pull/11726) by [@bdraco](https://github.com/bdraco) +- [bl0940] Fix calibration number preference hash for multi-device configs [esphome#11769](https://github.com/esphome/esphome/pull/11769) by [@bdraco](https://github.com/bdraco) +- [speaker] Optimize speaker.play action memory usage - store static data in flash [esphome#11796](https://github.com/esphome/esphome/pull/11796) by [@bdraco](https://github.com/bdraco) +- [udp] Optimize udp.write action memory usage - store static data in flash [esphome#11794](https://github.com/esphome/esphome/pull/11794) by [@bdraco](https://github.com/bdraco) +- [uart] Store static data in flash and use function pointers for lambdas [esphome#11784](https://github.com/esphome/esphome/pull/11784) by [@bdraco](https://github.com/bdraco) +- [core] Remove deprecated EntityBase::hash_base() method [esphome#11783](https://github.com/esphome/esphome/pull/11783) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [remote_base] Optimize abbwelcome action memory usage - store static data in flash [esphome#11798](https://github.com/esphome/esphome/pull/11798) by [@bdraco](https://github.com/bdraco) +- [nrf52] api [esphome#11751](https://github.com/esphome/esphome/pull/11751) by [@lboue](https://github.com/lboue) (new-feature) +- [core] Implement Global Controller Registry to reduce RAM usage [esphome#11772](https://github.com/esphome/esphome/pull/11772) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [sx126x] Change BUSY, RST, DIO1 pins to general GPIO (from internal) [esphome#11782](https://github.com/esphome/esphome/pull/11782) by [@PaulSchulz](https://github.com/PaulSchulz) (new-feature) +- Ensure event paths are enabled in api compile tests [esphome#11776](https://github.com/esphome/esphome/pull/11776) by [@bdraco](https://github.com/bdraco) +- [nrf52,watchdog] do not disable watchog if it is not nesesery [esphome#11686](https://github.com/esphome/esphome/pull/11686) by [@tomaszduda23](https://github.com/tomaszduda23) +- HLK-FM22X Face Recognition module component [esphome#8059](https://github.com/esphome/esphome/pull/8059) by [@OnFreund](https://github.com/OnFreund) (new-component) (new-feature) (new-platform) +- [tests] Add unit test coverage for web_port property [esphome#11811](https://github.com/esphome/esphome/pull/11811) by [@bdraco](https://github.com/bdraco) +- [ai] simplify namespace syntax [esphome#11824](https://github.com/esphome/esphome/pull/11824) by [@ximex](https://github.com/ximex) +- [lvgl] Automatically register widget types [esphome#11394](https://github.com/esphome/esphome/pull/11394) by [@stuartparmenter](https://github.com/stuartparmenter) +- Add support for RX8130 RTC Chip [esphome#10511](https://github.com/esphome/esphome/pull/10511) by [@Beormund](https://github.com/Beormund) (new-component) (new-feature) (new-platform) +- [wifi] Fix mesh network failover and improve retry logic reliability [esphome#11805](https://github.com/esphome/esphome/pull/11805) by [@bdraco](https://github.com/bdraco) +- [tests] Migrate components to shared packages and fix ID ambiguity [esphome#11819](https://github.com/esphome/esphome/pull/11819) by [@bdraco](https://github.com/bdraco) +- [CI] Don't request codeowners review in forks [esphome#11827](https://github.com/esphome/esphome/pull/11827) by [@jesserockz](https://github.com/jesserockz) +- [wifi][ethernet] Don't block setup until connected [esphome#9823](https://github.com/esphome/esphome/pull/9823) by [@clydebarrow](https://github.com/clydebarrow) (breaking-change) +- [core] Update clamp functions to allow mixed but comparable types [esphome#11828](https://github.com/esphome/esphome/pull/11828) by [@clydebarrow](https://github.com/clydebarrow) +- [nrf52,gpio] add gpio levels for high voltage mode [esphome#9858](https://github.com/esphome/esphome/pull/9858) by [@tomaszduda23](https://github.com/tomaszduda23) (new-feature) +- [nrf52,pcf8563] fix build error [esphome#11846](https://github.com/esphome/esphome/pull/11846) by [@tomaszduda23](https://github.com/tomaszduda23) +- [nrf52,ssd1306_i2c] fix build error [esphome#11847](https://github.com/esphome/esphome/pull/11847) by [@tomaszduda23](https://github.com/tomaszduda23) +- [lvgl]Adjust condition for LVGL style transformation defines [esphome#11845](https://github.com/esphome/esphome/pull/11845) by [@CzBiX](https://github.com/CzBiX) +- [nrf52,debug] add partition dump [esphome#11839](https://github.com/esphome/esphome/pull/11839) by [@tomaszduda23](https://github.com/tomaszduda23) +- [nrf52] fix boot loop [esphome#11854](https://github.com/esphome/esphome/pull/11854) by [@tomaszduda23](https://github.com/tomaszduda23) +- [wifi] Fix infinite retry loop when no hidden networks and captive portal active [esphome#11831](https://github.com/esphome/esphome/pull/11831) by [@bdraco](https://github.com/bdraco) +- [wifi] Change priority type from float to int8_t [esphome#11830](https://github.com/esphome/esphome/pull/11830) by [@bdraco](https://github.com/bdraco) (breaking-change) +- [wifi] Fix all-hidden networks duplicate attempts and scan skipping [esphome#11848](https://github.com/esphome/esphome/pull/11848) by [@bdraco](https://github.com/bdraco) +- [wifi] Add min_auth_mode configuration option [esphome#11814](https://github.com/esphome/esphome/pull/11814) by [@bdraco](https://github.com/bdraco) (new-feature) (breaking-change) +- [wifi] Fix scan and connection failures after adapter restart [esphome#11851](https://github.com/esphome/esphome/pull/11851) by [@bdraco](https://github.com/bdraco) +- [wifi] Restore two-attempt BSSID filtering for mesh networks [esphome#11844](https://github.com/esphome/esphome/pull/11844) by [@bdraco](https://github.com/bdraco) +- [wifi] Conditionally compile manual_ip to save 24-72 bytes RAM [esphome#11833](https://github.com/esphome/esphome/pull/11833) by [@bdraco](https://github.com/bdraco) +- [network, psram, speaker wifi] Use CORE.data to enable high performance networking [esphome#11812](https://github.com/esphome/esphome/pull/11812) by [@kahrendt](https://github.com/kahrendt) (new-feature) (breaking-change) + +
+ +
+ + +- Bump pyupgrade from 3.20.0 to 3.21.0 [esphome#11139](https://github.com/esphome/esphome/pull/11139) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump github/codeql-action from 4.30.7 to 4.30.8 [esphome#11163](https://github.com/esphome/esphome/pull/11163) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump pylint from 3.3.9 to 4.0.0 [esphome#11211](https://github.com/esphome/esphome/pull/11211) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump aioesphomeapi from 41.16.1 to 41.17.0 [esphome#11231](https://github.com/esphome/esphome/pull/11231) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump ruamel-yaml-clib from 0.2.12 to 0.2.14 [esphome#10842](https://github.com/esphome/esphome/pull/10842) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump aioesphomeapi from 41.17.0 to 41.18.0 [esphome#11247](https://github.com/esphome/esphome/pull/11247) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump pylint from 4.0.0 to 4.0.1 [esphome#11267](https://github.com/esphome/esphome/pull/11267) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump aioesphomeapi from 41.18.0 to 42.0.0 [esphome#11273](https://github.com/esphome/esphome/pull/11273) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump ruff from 0.14.0 to 0.14.1 [esphome#11303](https://github.com/esphome/esphome/pull/11303) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump github/codeql-action from 4.30.8 to 4.30.9 [esphome#11326](https://github.com/esphome/esphome/pull/11326) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump aioesphomeapi from 42.0.0 to 42.1.0 [esphome#11350](https://github.com/esphome/esphome/pull/11350) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump aioesphomeapi from 42.1.0 to 42.2.0 [esphome#11352](https://github.com/esphome/esphome/pull/11352) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump pylint from 4.0.1 to 4.0.2 [esphome#11418](https://github.com/esphome/esphome/pull/11418) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump actions/download-artifact from 4.3.0 to 5.0.0 [esphome#11419](https://github.com/esphome/esphome/pull/11419) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump bleak from 1.0.1 to 1.1.1 [esphome#11492](https://github.com/esphome/esphome/pull/11492) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump aioesphomeapi from 42.2.0 to 42.3.0 [esphome#11493](https://github.com/esphome/esphome/pull/11493) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump ruamel-yaml from 0.18.15 to 0.18.16 [esphome#11482](https://github.com/esphome/esphome/pull/11482) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump aioesphomeapi from 42.3.0 to 42.4.0 [esphome#11586](https://github.com/esphome/esphome/pull/11586) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump aioesphomeapi from 42.4.0 to 42.5.0 [esphome#11597](https://github.com/esphome/esphome/pull/11597) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump github/codeql-action from 4.30.9 to 4.31.0 [esphome#11522](https://github.com/esphome/esphome/pull/11522) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump actions/upload-artifact from 4.6.2 to 5.0.0 [esphome#11520](https://github.com/esphome/esphome/pull/11520) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump actions/download-artifact from 5.0.0 to 6.0.0 [esphome#11521](https://github.com/esphome/esphome/pull/11521) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump ruff from 0.14.1 to 0.14.2 [esphome#11519](https://github.com/esphome/esphome/pull/11519) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump github/codeql-action from 4.31.0 to 4.31.2 [esphome#11626](https://github.com/esphome/esphome/pull/11626) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump ruff from 0.14.2 to 0.14.3 [esphome#11633](https://github.com/esphome/esphome/pull/11633) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump aioesphomeapi from 42.5.0 to 42.6.0 [esphome#11682](https://github.com/esphome/esphome/pull/11682) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump ruff from 0.14.3 to 0.14.4 [esphome#11768](https://github.com/esphome/esphome/pull/11768) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump aioesphomeapi from 42.6.0 to 42.7.0 [esphome#11771](https://github.com/esphome/esphome/pull/11771) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump pytest-asyncio from 1.2.0 to 1.3.0 [esphome#11815](https://github.com/esphome/esphome/pull/11815) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump pyupgrade from 3.21.0 to 3.21.1 [esphome#11816](https://github.com/esphome/esphome/pull/11816) by [@dependabot[bot]](https://github.com/apps/dependabot) +- Bump pytest from 8.4.2 to 9.0.0 [esphome#11817](https://github.com/esphome/esphome/pull/11817) by [@dependabot[bot]](https://github.com/apps/dependabot) + +
+ + + +## All Changelogs + +{{< changelogs >}} diff --git a/content/changelog/_index.md b/content/changelog/_index.md index 17ff88e035..9c805b76c4 100644 --- a/content/changelog/_index.md +++ b/content/changelog/_index.md @@ -3,4 +3,4 @@ description: "Changelog" title: "Changelog" --- -{{< redirect url="/changelog/2025.10.0.html" >}} +{{< redirect url="/changelog/2025.11.0.html" >}} diff --git a/content/changelog/images/changelog-2025.11.0.png b/content/changelog/images/changelog-2025.11.0.png new file mode 100644 index 0000000000..f69e56a835 Binary files /dev/null and b/content/changelog/images/changelog-2025.11.0.png differ diff --git a/content/components/_index.md b/content/components/_index.md index dfb5648d56..b00c2c89ff 100644 --- a/content/components/_index.md +++ b/content/components/_index.md @@ -364,6 +364,7 @@ Sensors are organized into categories; if a given sensor fits into more than one "AM2315C","components/sensor/am2315c","am2315c.jpg","Temperature & Humidity","" "AM2320","components/sensor/am2320","am2320.jpg","Temperature & Humidity","" "b-parasite","components/sensor/b_parasite","b_parasite.jpg","Moisture & Temperature & Humidity & Light","" +"BH1900NUX","components/sensor/bh1900nux","bh1900nux-evk-001.png","Temperature","" "BME280","components/sensor/bme280","bme280.jpg","Temperature & Humidity & Pressure","" "BME68x via BSEC2","components/sensor/bme68x_bsec2","bme680.jpg","Temperature & Humidity & Pressure & Gas","" "BME680 via BSEC","components/sensor/bme680_bsec","bme680.jpg","Temperature & Humidity & Pressure & Gas","" diff --git a/content/components/display/st7701s.md b/content/components/display/st7701s.md index 4d529cc8dd..5aaece3470 100644 --- a/content/components/display/st7701s.md +++ b/content/components/display/st7701s.md @@ -14,6 +14,10 @@ params: This display driver supports displays with 16 bit parallel interfaces, often referred to as "RGB". It currently supports the ST7701S chip. +> [!WARNING] +> This component has been made redundant since the ST7701S is now supported by the {{< docref "mipi_rgb" >}}. +> This component will be removed in a future release. + This driver has been tested with the following displays: - Seeed Sensecap Indicator diff --git a/content/components/media_player/speaker.md b/content/components/media_player/speaker.md index 6e93320e8f..1f74e8adf7 100644 --- a/content/components/media_player/speaker.md +++ b/content/components/media_player/speaker.md @@ -45,7 +45,7 @@ media_player: - **media_pipeline** (*Optional*, Pipeline Schema): Configuration settings for the media pipeline. Same options as the `announcement_pipeline`. - **buffer_size** (*Optional*, positive integer): The buffer size in bytes for each pipeline. Must be between `4000` and `4000000`. Defaults to `1000000`. -- **codec_support_enabled** (*Optional*, boolean): Enables the MP3 and FLAC decoders and optimizes the WiFi configuration for streaming high quality audio. Defaults to `true`. +- **codec_support_enabled** (*Optional*, boolean): Enables the MP3 and FLAC decoders. Defaults to `true`. - **task_stack_in_psram** (*Optional*, boolean): Run the audio tasks in external memory. Defaults to `false`. - **volume_increment** (*Optional*, percentage): Increment amount that the `media_player.volume_up` and `media_player.volume_down` actions will increase or decrease volume by. Defaults to `5%`. - **volume_initial** (*Optional*, percentage): The default volume that mediaplayer uses for first boot where a volume has not been previously saved. Defaults to `50%`. @@ -171,6 +171,17 @@ Configuration variables: Decoding audio files is CPU and memory intensive. PSRAM external memory is strongly recommended. To use the component on a memory constrained device, define only the announcement pipeline, decrease the buffer size, set `codec_support_enabled` to false, and set the pipeline transcode setting format to `WAV` with a low sample rate and only 1 channel. +### Network Optimizations + +The speaker media player automatically enables high-performance networking to optimize audio streaming. This configures both WiFi and TCP/IP settings for better throughput and lower latency. The optimization level is PSRAM-aware: + +- **With PSRAM guaranteed** ({{< docref "psram" >}} configured with `ignore_not_found: false`): Aggressive settings with 512KB TCP windows and 512 WiFi RX buffers +- **Without PSRAM guaranteed**: Conservative optimized settings with 65KB TCP windows and 64 WiFi buffers + +If you experience out-of-memory issues, you can disable these optimizations by setting `enable_high_performance: false` in the {{< docref "network" >}} component configuration. + +### Audio Codec Performance + In general, decoding FLAC has the lowest CPU usage, but requires a strong WiFi connection. Decoding MP3 requires less data to be sent over WiFi but is more CPU intensive to decode. Decoding WAV is only recommended at low sample rates if streamed over a network connection. Increasing the buffer size may reduce stuttering, but do not set it to the entire size of the external memory. Each pipeline allocates the configured amount, and this setting also does not take into account other smaller buffers allocated throughout the audio stack. @@ -183,12 +194,16 @@ Only set `task_stack_in_psram` to true if you have many components configured an While you are troubleshooting, simplify your setup as much as possible. Only configure the `announcement_pipeline` and do not use `resampler` or `mixer` speakers. +### Audio Issues + If you can't hear anything, check whether your hardware requires a GPIO pin to be high or low to enable the speaker. Verify you have the correct speaker channel configured: try setting your speaker configuration to stereo if you are unsure which channels are available. If the audio quality is poor, check your output speaker configuration. Experiment with the bits per sample, channels, and sample rate settings. In general, higher sample rates improve audio quality: try using `44100` Hz or `48000` Hz instead of `16000` Hz. If there is a noticeable delay before a pause command takes effect, reduce the buffer duration in the output speaker. Be sure to adjust both the hardware speaker component settings and the `mixer` speaker component settings, if used. +If audio stutters, and your device has PSRAM, add ({{< docref "psram" >}} configured with `ignore_not_found: false`) so that the networking stack uses higher performance optimization settings. + ## See also - {{< docref "/components/speaker" >}} diff --git a/content/components/network.md b/content/components/network.md index 5fc4aa5e48..f1b0dafc14 100644 --- a/content/components/network.md +++ b/content/components/network.md @@ -3,7 +3,7 @@ description: "Network component" title: "Network component" params: seo: - description: + description: image: network-wifi.svg --- @@ -15,12 +15,36 @@ networks (WiFi, Ethernet). network: enable_ipv6: true min_ipv6_addr_count: 2 + enable_high_performance: true ``` ## Configuration variables - **enable_ipv6** (*Optional*, boolean): Enables IPv6 support. Defaults to `false`. - **min_ipv6_addr_count** (*Optional*, integer): ESPHome considers the network to be connected when it has one IPv4 address and this number of IPv6 addresses. Defaults to `0` so as to not hang on boot with networks where IPv6 is not enabled. `2` is typically a reasonable value for configurations requiring IPv6. +- **enable_high_performance** (*Optional*, boolean): Explicitly enables or disables high-performance networking optimizations. Only supported on ESP32 devices. When not specified, this is automatically enabled by components that benefit from optimized network settings. Set to `false` to disable these optimizations if they cause memory issues on your device. Defaults to component-driven behavior. + +## High-performance networking + +The network component can automatically apply optimized settings for components that require high throughput or low latency, such as media streaming. When enabled, this feature configures both the lwIP TCP/IP stack and WiFi driver with settings optimized for performance. + +### PSRAM-Aware Optimizations + +The optimization level depends on whether PSRAM is guaranteed to be available (configured via the {{< docref "psram" >}} component with `ignore_not_found: false`): + +**With PSRAM guaranteed:** + +- TCP send/receive buffers: 512KB windows with window scaling enabled +- WiFi RX buffers: 512 dynamic buffers +- WiFi TX buffers: 32 static buffers +- AMPDU aggregation: Optimized block acknowledgment windows + +**Without PSRAM (or when not guaranteed):** + +- TCP send/receive buffers: 65KB windows +- WiFi RX buffers: 64 dynamic buffers +- WiFi TX buffers: 64 dynamic buffers +- AMPDU aggregation: Standard block acknowledgment windows > [!NOTE] > The [lwIP](https://savannah.nongnu.org/projects/lwip/) library used for the network component currently only implements IPv6 SLAAC according to [RFC4862](https://datatracker.ietf.org/doc/rfc4862/). The interface identifier (IID) is directly generated from the device MAC address. @@ -29,5 +53,5 @@ network: ## See Also -- {{< docref "/components/wifi" >}} -- {{< docref "/components/ethernet" >}} +- {{< docref "wifi/" >}} +- {{< docref "ethernet/" >}} diff --git a/content/components/wifi.md b/content/components/wifi.md index 11eadcf6be..fb8619a8eb 100644 --- a/content/components/wifi.md +++ b/content/components/wifi.md @@ -467,6 +467,20 @@ on_...: The lambda equivalent for this is `!id(wifi_id).is_disabled()`. +### `wifi.ap_active` Condition + +This [Condition](/automations/actions#all-conditions) checks if WiFi AP is currently active or not. + +```yaml +on_...: + - if: + condition: wifi.ap_active + then: + - logger.log: WiFi AP is active! +``` + +The lambda equivalent for this is `id(wifi_id).is_ap_active()`. + ## See Also - {{< docref "captive_portal/" >}} diff --git a/content/guides/supporters.md b/content/guides/supporters.md index cb41009184..bc1d4196b1 100644 --- a/content/guides/supporters.md +++ b/content/guides/supporters.md @@ -65,6 +65,7 @@ ESPHome was originally founded by [Otto Winter (@OttoWinter)](https://github.com - [Ian Blais (@aeonsablaze)](https://github.com/aeonsablaze) - [Johan Bloemberg (@aequitas)](https://github.com/aequitas) - [Andrew Erickson (@aerickson)](https://github.com/aerickson) +- [Ben (@af3556)](https://github.com/af3556) - [Attila Farago (@afarago)](https://github.com/afarago) - [Kjell Braden (@afflux)](https://github.com/afflux) - [Alejandro Galfrascoli (@AGalfra)](https://github.com/AGalfra) @@ -952,6 +953,7 @@ ESPHome was originally founded by [Otto Winter (@OttoWinter)](https://github.com - [Jake Crosby (@jake-nz)](https://github.com/jake-nz) - [jakehdk (@jakehdk)](https://github.com/jakehdk) - [Jake Shirley (@JakeShirley)](https://github.com/JakeShirley) +- [Jakob S. (@jakicoll)](https://github.com/jakicoll) - [Jonathan Kollasch (@jakllsch)](https://github.com/jakllsch) - [Jakob Reiter (@jakommo)](https://github.com/jakommo) - [jakub-medrzak (@jakub-medrzak)](https://github.com/jakub-medrzak) @@ -1279,6 +1281,7 @@ ESPHome was originally founded by [Otto Winter (@OttoWinter)](https://github.com - [Piotr Majkrzak (@majkrzak)](https://github.com/majkrzak) - [Major Péter (@majorpeter)](https://github.com/majorpeter) - [Dmitry (@mak-42)](https://github.com/mak-42) +- [Makerfabs (@Makerfabs)](https://github.com/Makerfabs) - [Max Slotov (@makstech)](https://github.com/makstech) - [Kasper Malfroid (@malfroid)](https://github.com/malfroid) - [Malle355 (@Malle355)](https://github.com/Malle355) @@ -2268,4 +2271,4 @@ ESPHome was originally founded by [Otto Winter (@OttoWinter)](https://github.com - [Christian Zufferey (@zuzu59)](https://github.com/zuzu59) - [Zynth-dev (@Zynth-dev)](https://github.com/Zynth-dev) -*This page was last updated November 4, 2025.* +*This page was last updated November 11, 2025.* diff --git a/data/version.yaml b/data/version.yaml index 620131fe34..591e925c4f 100644 --- a/data/version.yaml +++ b/data/version.yaml @@ -1,2 +1,2 @@ -release: 2025.11.0-dev +release: 2025.11.0b1 version: '2025.11' diff --git a/themes/esphome-theme/layouts/_default/_markup/render-link.html b/themes/esphome-theme/layouts/_default/_markup/render-link.html index da7fe3a15d..f829020b15 100644 --- a/themes/esphome-theme/layouts/_default/_markup/render-link.html +++ b/themes/esphome-theme/layouts/_default/_markup/render-link.html @@ -8,8 +8,9 @@ {{- $foundLocal := false -}} {{- if $entries -}} + {{- $currentPage := strings.TrimPrefix "content/" .Page.File.Path | strings.TrimSuffix ".md" -}} {{- range $entries -}} - {{- if eq .page .Page.File.Path -}} + {{- if eq .page $currentPage -}} {{- $foundLocal = true -}} {{- end -}} {{- end -}}