J. Nick Koston
c53d50b6cf
[wifi] Use DHCP_STATE_BOUND check instead of netif_is_link_up
...
netif_is_link_up() is insufficient — if wifi_station_connect()
completes quickly (e.g. fast_connect), the setup() call at line 710
could reach dhcp_renew() with link up but DHCP still in SELECTING
or REQUESTING state, causing the same state corruption.
Check dhcp->state == DHCP_STATE_BOUND directly to ensure dhcp_renew()
is only called when there is an actual lease to renew.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 14:36:51 -06:00
J. Nick Koston
de76dfd117
[wifi] Fix ESP8266 DHCP state corruption from premature dhcp_renew()
...
wifi_apply_hostname_() calls dhcp_renew() on all interfaces with DHCP
data, including when WiFi is not yet connected. lwIP's dhcp_renew()
unconditionally sets the DHCP state to RENEWING (line 1159 in dhcp.c)
before attempting to send, and never rolls back the state on failure.
This corrupts the DHCP state machine: when WiFi later connects and
dhcp_network_changed() is called, it sees RENEWING state and calls
dhcp_reboot() instead of dhcp_discover(). dhcp_reboot() sends a
broadcast DHCP REQUEST for IP 0.0.0.0 (since no lease was ever
obtained), which can put some routers into a persistent bad state
that requires a router restart to clear.
This bug has existed since commit 072b2c445c (Dec 2019, "Add ESP8266
core v2.6.2") and affects every ESP8266 WiFi connection attempt. Most
routers handle the bogus DHCP REQUEST gracefully (NAK then fallback
to DISCOVER), but affected routers get stuck and refuse connections
from the device until restarted.
Fix: guard the dhcp_renew() call with netif_is_link_up() so it only
runs when the interface actually has an active link. The hostname is
still set on the netif regardless, so it will be included in DHCP
packets when the connection is established normally.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 14:02:21 -06:00
Kevin Ahrendt
903971de12
[runtime_image, online_image] Create runtime_image component to decode images ( #10212 )
2026-02-13 11:25:43 -05:00
J. Nick Koston
b04e427f01
[usb_host] Extract cold path from loop(), replace std::string with buffer API ( #13957 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-02-13 06:39:00 -06:00
J. Nick Koston
e0c03b2dfa
[api] Fix ESP8266 noise API handshake deadlock and prompt socket cleanup ( #13972 )
2026-02-12 18:20:58 -06:00
J. Nick Koston
7dff631dcb
[core] Flatten single-callsite vector realloc functions ( #13970 )
2026-02-12 18:20:39 -06:00
J. Nick Koston
36aba385af
[web_server] Flatten deq_push_back_with_dedup_ to inline vector realloc ( #13968 )
2026-02-12 18:20:21 -06:00
Jonathan Swoboda
136d17366f
[docker] Suppress git detached HEAD advice ( #13962 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-12 16:12:17 -05:00
Jonathan Swoboda
db7870ef5f
[alarm_control_panel] Fix flaky integration test race condition ( #13964 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-12 16:04:39 -05:00
dependabot[bot]
bbc88d92ea
Bump docker/build-push-action from 6.19.1 to 6.19.2 in /.github/actions/build-image ( #13965 )
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-12 14:31:43 -06:00
Jesse Hills
1604b5d6e4
Merge branch 'beta' into dev
2026-02-13 07:11:49 +13:00
Jesse Hills
e000858d77
Merge pull request #13951 from esphome/bump-2026.2.0b1
...
2026.2.0b1
2026.2.0b1
2026-02-13 07:11:07 +13:00
J. Nick Koston
7fd535179e
[helpers] Add heap warnings to format_hex_pretty, deprecate ethernet/web_server std::string APIs ( #13959 )
2026-02-12 17:47:44 +00:00
Lukáš Maňas
e3a457e402
[pulse_meter] Fix early edge detection ( #12360 )
...
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
2026-02-12 17:20:54 +00:00
J. Nick Koston
0dcff82bb4
[wifi] Deprecate wifi_ssid() in favor of wifi_ssid_to() ( #13958 )
2026-02-12 17:14:36 +00:00
J. Nick Koston
cde8b66719
[web_server] Switch from getParam to arg API to eliminate heap allocations ( #13942 )
2026-02-12 11:04:41 -06:00
J. Nick Koston
0e1433329d
[api] Extract cold code from APIServer::loop() hot path ( #13902 )
2026-02-12 11:04:23 -06:00
J. Nick Koston
60fef5e656
[analyze_memory] Fix mDNS packet buffer miscategorized as wifi_config ( #13949 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-12 10:26:54 -06:00
J. Nick Koston
725e774fe7
[web_server] Guard icon JSON field with USE_ENTITY_ICON ( #13948 )
2026-02-12 10:26:36 -06:00
J. Nick Koston
9aa98ed6c6
[uart] Remove redundant mutex, fix flush race, conditional event queue ( #13955 )
2026-02-12 10:26:10 -06:00
Guillermo Ruffino
7b251dcc31
[schema-gen] fix Windows: ensure UTF-8 encoding when reading component files ( #13952 )
2026-02-12 11:23:59 -05:00
schrob
8a08c688f6
[mipi_spi] Add Waveshare 1.83 v2 panel ( #13680 )
2026-02-12 23:25:51 +11:00
Jesse Hills
d6461251f9
Bump version to 2026.3.0-dev
2026-02-12 23:04:19 +13:00
Jesse Hills
97d6f394de
Bump version to 2026.2.0b1
2026-02-12 23:04:18 +13:00
J. Nick Koston
da1ea2cfa3
[ethernet] Add per-PHY compile guards to eliminate unused PHY drivers ( #13947 )
2026-02-12 05:07:05 +00:00
Awesome Walrus
c9d2adb717
[wifi] Allow fast_connect without preconfigured networks ( #13946 )
2026-02-11 21:34:59 -06:00
Jonathan Swoboda
db6aea8969
Allow Python 3.14 ( #13945 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-11 22:11:48 -05:00
Jonathan Swoboda
96eb129cf8
[esp32] Bump Arduino to 3.3.7, platform to 55.03.37 ( #13943 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-11 20:29:17 -05:00
J. Nick Koston
ae42bfa404
[web_server_idf] Remove std::string temporaries from multipart header parsing ( #13940 )
2026-02-11 17:42:33 -06:00
J. Nick Koston
fecb145a71
[web_server_idf] Revert multipart upload buffer back to heap to fix httpd stack overflow ( #13941 )
2026-02-11 17:42:18 -06:00
J. Nick Koston
e12ed08487
[wifi] Add CompactString to reduce WiFi scan heap fragmentation ( #13472 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-02-11 21:24:24 +00:00
tomaszduda23
374cbf4452
[nrf52,zigbee] count sleep time of zigbee thread ( #13933 )
...
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
2026-02-11 21:21:10 +00:00
dependabot[bot]
7287a43f2a
Bump docker/build-push-action from 6.18.0 to 6.19.1 in /.github/actions/build-image ( #13937 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-11 15:12:05 -06:00
J. Nick Koston
483b7693e1
[api] Fix debug asserts in production code, encode_bool bug, and reduce flash overhead ( #13936 )
...
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
2026-02-11 13:57:08 -06:00
J. Nick Koston
c9c125aa8d
[socket] Devirtualize Socket::ready() and implement working ready() for LWIP raw TCP ( #13913 )
...
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2026-02-11 17:54:58 +00:00
schrob
8d62a6a88a
[openthread] Fix warning on old C89 implicit field zero init ( #13935 )
2026-02-11 11:54:31 -06:00
J. Nick Koston
0ec02d4886
[preferences] Replace per-element erase with clear() in sync() ( #13934 )
2026-02-11 11:41:53 -06:00
Nate Clark
1411868a0b
[mqtt.cover] Add option to publish states as JSON payload ( #12639 )
...
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-02-11 11:40:27 -06:00
J. Nick Koston
069c90ec4a
[api] Split process_batch_ to reduce stack on single-message hot path ( #13907 )
2026-02-11 11:34:43 -06:00
J. Nick Koston
930a186168
[web_server_idf] Use constant-time comparison for Basic Auth ( #13868 )
2026-02-11 11:03:27 -06:00
Djordje Mandic
b1f0db9da8
[bl0942] Update reference values ( #12867 )
2026-02-11 11:10:32 -05:00
J. Nick Koston
923445eb5d
[light] Eliminate redundant clamp in LightCall::validate_() ( #13923 )
2026-02-11 10:06:44 -06:00
tomaszduda23
9bdae5183c
[nrf52,logger] add support for task_log_buffer_size ( #13862 )
...
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
2026-02-11 15:43:55 +00:00
J. Nick Koston
37f97c9043
[esp8266][rp2040] Eliminate heap fallback in preference save/load ( #13928 )
2026-02-11 08:41:15 -06:00
J. Nick Koston
8e785a2216
[web_server] Remove unnecessary packed attribute from DeferredEvent ( #13932 )
2026-02-11 08:40:41 -06:00
schrob
4fb1ddf212
[api] Fix compiler format warnings ( #13931 )
2026-02-11 08:40:21 -06:00
J. Nick Koston
38bba3f5a2
[scheduler] Reduce set_timer_common_ hot path size by 25% ( #13899 )
2026-02-11 16:42:13 +13:00
J. Nick Koston
225c13326a
[core] Extract dump_config from Application::loop() hot path ( #13900 )
2026-02-11 16:41:07 +13:00
J. Nick Koston
5281fd3273
[api] Extract cold code from APIConnection::loop() hot path ( #13901 )
2026-02-11 16:30:34 +13:00
J. Nick Koston
e3bafc1b45
[esp32_ble] Extract state transitions from ESP32BLE::loop() hot path ( #13903 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-02-11 16:29:29 +13:00