J. Nick Koston
95af5c233e
[wifi] Distinguish failed roam vs scan-induced disconnect in log
...
Split the RECONNECTING log message into two cases:
- "Reconnected after failed roam" when a specific roam target was
set but we ended up on a different AP
- "Reconnected after roam scan" when no roam target was set (the
disconnect was caused by going off-channel during the scan itself)
2026-03-23 13:27:35 -10:00
J. Nick Koston
0814685af0
[wifi] Review fixes: clear grace period on reconnect, log BSSID, fix layout
...
- Clear roaming_scan_end_ on successful reconnect to prevent grace
period from incorrectly applying to a second disconnect
- Log target BSSID in "Roam successful (via retry)" message
- Move bssid_t roaming_target_bssid_ to 1-byte section to avoid
2 bytes struct padding before ap_timeout_
2026-03-23 13:11:42 -10:00
J. Nick Koston
b357758369
[wifi] Fix use-after-free: read target BSSID before releasing scan results
...
best is a pointer into scan_result_. Move roaming_target_bssid_
assignment before release_scan_results_() to avoid dangling pointer.
2026-03-23 13:09:37 -10:00
J. Nick Koston
ea37542b41
[wifi] Track roam target BSSID to detect successful roam via retry
...
When a roam connection fails on the first attempt, retry_connect()
transitions to RECONNECTING. The subsequent scan-based retry may
connect to the same better AP, but the success handler treated all
RECONNECTING connections as failed roams and preserved the attempts
counter. This meant a successful roam (that needed two tries) would
incorrectly consume an attempt.
Fix by storing the roam target BSSID and checking it on reconnection.
If the device connected to the intended target, reset the counter
(successful roam). If it fell back to a different AP, preserve the
counter (failed roam, prevent ping-pong).
2026-03-23 13:05:15 -10:00
J. Nick Koston
96657f71a2
[wifi] Fix roaming counter reset from delayed disconnect after scan
...
On ESP8266, the roaming scan goes off-channel for ~3 seconds. Some
APs aggressively disconnect the client (Beacon Timeout) 8-20 seconds
after the scan finishes. By that time, process_roaming_scan_() has
already set roaming_state_ back to IDLE. When retry_connect() runs,
it sees IDLE and calls clear_roaming_state_(), resetting the attempts
counter to 0. This creates an infinite loop of "attempt 1/3" every
5 minutes.
The aggressive AP behavior cannot be fixed from the ESP side, but we
can prevent the counter from resetting so roaming eventually stops
after 3 attempts.
Fix by recording when the roaming scan completes and adding a 30s
grace period. If a disconnect occurs within that window, the state
transitions to RECONNECTING (preserving the counter) instead of
clearing it.
Closes https://github.com/esphome/esphome/issues/15124
2026-03-23 12:34:56 -10:00
dependabot[bot]
332118db56
Bump pytest-cov from 7.0.0 to 7.1.0 ( #15123 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-23 11:44:26 -10:00
Clyde Stubbs
6956bf7e53
[text] Add text_sensor for read-only view of text component ( #15090 )
2026-03-24 10:24:25 +13:00
Daniel Kent and Jonathan Swoboda
11b829dda1
[spa06_spi] Add SPA06-003 Temperature and Pressure Sensor - SPI support (Part 3 of 3) ( #14523 )
...
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
2026-03-23 15:59:17 -04:00
J. Nick Koston
1e16b30380
[ethernet] Add ENC28J60 SPI Ethernet support ( #14945 )
2026-03-23 19:18:58 +00:00
Daniel Kent
4c1363b104
[spi] Add LOG_SPI_DEVICE macro ( #15118 )
2026-03-23 15:07:40 -04:00
J. Nick Koston
9da0c5bc85
[wifi] Fix roaming attempt counter reset on disconnect during scan ( #15099 )
2026-03-23 08:47:15 -10:00
J. Nick Koston
4b0c711f77
[ci] Ban std::bind in new C++ code ( #14969 )
2026-03-23 08:23:35 -10:00
J. Nick Koston
9385f16128
[text_sensor] Guard raw_callback_ behind USE_TEXT_SENSOR_FILTER, save 4 bytes per instance ( #15097 )
2026-03-23 08:23:22 -10:00
J. Nick Koston
36d2e58b11
[api] Make ProtoDecodableMessage::decode() non-virtual ( #15076 )
2026-03-23 08:23:08 -10:00
J. Nick Koston
03d6b36fe0
[gpio] Compile out interlock fields when unused ( #15111 )
2026-03-23 08:22:38 -10:00
J. Nick Koston
3b5b51b4f0
[time] Point to valid IANA timezone list on validation failure ( #15110 )
2026-03-23 08:22:25 -10:00
Clyde Stubbs
e8c5dfca3e
[lvgl] Various fixes ( #15098 )
2026-03-23 12:09:30 -04:00
Kevin Ahrendt
5a984b54cf
[audio] Bump microOpus to avoid creating an extra opus-staged directory ( #14974 )
2026-03-23 08:31:05 -04:00
Simone Rossetto and J. Nick Koston
43879964bd
[wireguard] bump esp_wireguard to 0.4.4 for mbedtls 4.0+ compatibility ( #15104 )
...
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-03-22 23:03:19 -10:00
J. Nick Koston
5560c9eef7
[test] Fix flakey ld2412 integration test race condition ( #15100 )
2026-03-22 21:10:51 -10:00
J. Nick Koston
f4097d5a95
[api] Devirtualize API command dispatch ( #15044 )
2026-03-23 19:57:40 +13:00
Keith Burzinski and Claude Sonnet 4.6
225330413a
[uart] Rename FlushResult to UARTFlushResult with UART_FLUSH_RESULT_ prefix ( #15101 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-23 01:55:14 -05:00
J. Nick Koston
e67b5a78d0
[esp32] Patch DRAM segment for testing mode to fix grouped component test overflow ( #15102 )
2026-03-23 01:51:40 -05:00
J. Nick Koston
baf365404c
[network] Inline get_use_address() to eliminate function call overhead ( #14942 )
2026-03-23 04:18:43 +00:00
J. Nick Koston
0de2c758aa
[scheduler] Use placement-new for std::function move in set_timer_common_ ( #14757 )
2026-03-23 16:31:27 +13:00
J. Nick Koston
597bb18543
[benchmark] Add binary sensor publish and sensor filter benchmarks ( #15035 )
2026-03-23 16:30:57 +13:00
Jesse Hills
ebdf20adc0
Merge branch 'release' into dev
2026-03-23 16:10:17 +13:00
Jesse Hills
7ecdf6db2e
Merge pull request #15084 from esphome/bump-2026.3.1
...
2026.3.1
2026.3.1
2026-03-23 16:09:32 +13:00
J. Nick Koston
8a3b5a8def
[core] Fix placement new storage name for templated types ( #15096 )
2026-03-23 16:09:23 +13:00
J. Nick Koston
98d9fd76b3
[mqtt] Fix const-correctness for trigger constructors ( #15093 )
2026-03-22 16:27:20 -10:00
J. Nick Koston
6992219e34
[core] Attribute placement new storage symbols to components ( #15092 )
2026-03-22 16:27:07 -10:00
J. Nick Koston
fbe3e7d99c
[api] Emit raw tag+value writes for forced fixed32 key fields ( #15051 )
2026-03-22 15:28:46 -10:00
J. Nick Koston
9cdc17566a
[combination] Use FixedVector and parent pointer to enable inline Callback storage ( #14947 )
2026-03-22 15:06:45 -10:00
cd05462e9f
[core] Use placement new allocation for Pvariables ( #15079 )
...
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-03-22 14:42:04 -10:00
J. Nick Koston and Claude Opus 4.6
83d02c602a
[logger] Fix dummy_main.cpp Logger constructor for clang-tidy ( #15088 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-23 13:25:04 +13:00
J. Nick Koston and Claude Opus 4.6
e85065b1c4
[logger] Fix dummy_main.cpp Logger constructor for clang-tidy ( #15088 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-22 14:06:00 -10:00
J. Nick Koston
d0e705d948
[core] Inline Application::loop() to eliminate stack frame ( #15041 )
2026-03-22 12:46:28 -10:00
J. Nick Koston
2c06464f7b
[packet_transport] Use FixedVector and parent pointer to enable inline Callback storage ( #14946 )
2026-03-22 12:41:54 -10:00
J. Nick Koston
84727b1f71
[esp32] Validate eFuse MAC reads and reject garbage MACs ( #15049 )
2026-03-22 12:41:01 -10:00
J. Nick Koston
aef987dccf
[core] Fix Callback::create memcpy from function reference ( #14995 )
2026-03-22 12:37:46 -10:00
J. Nick Koston
b2b61bea6a
[web_server_idf] Inline send() to reduce httpd task stack depth ( #15045 )
2026-03-22 12:33:06 -10:00
J. Nick Koston
30f66be1da
[esp32] Mention ignore_pin_validation_error in flash pin error message ( #14998 )
2026-03-22 12:32:42 -10:00
J. Nick Koston
6caa9ee227
[logger] Move log level lookup tables to PROGMEM ( #15003 )
2026-03-22 12:32:08 -10:00
J. Nick Koston
9152f77cdd
[core] Reduce automation call chain stack depth ( #15042 )
2026-03-22 12:31:48 -10:00
J. Nick Koston
4d09eb2cec
[tests] Fix flaky ld24xx integration tests by disabling API batching ( #15050 )
2026-03-22 12:29:28 -10:00
J. Nick Koston
5cc4f6e85a
[logger] Add task_log_buffer_zephyr.cpp to platform source filter ( #15081 )
2026-03-22 12:29:12 -10:00
J. Nick Koston
6d16c57747
[sht4x] Add missing hal.h include for millis() on ESP-IDF ( #15087 )
2026-03-23 11:23:21 +13:00
J. Nick Koston
27f3a5f5f4
[sht4x] Add missing hal.h include for millis() on ESP-IDF ( #15087 )
2026-03-22 11:54:54 -10:00
J. Nick Koston
45c0e6ef7f
[logger] Fix unit test Logger constructor call ( #15086 )
2026-03-23 09:52:46 +13:00
J. Nick Koston
593dbc9e67
[logger] Fix unit test and benchmark Logger constructor calls ( #15085 )
2026-03-23 09:50:58 +13:00