Commit Graph
13755 Commits
Author SHA1 Message Date
J. Nick Koston e436265d6c [http_request] Prevent double update task launch
Guard against launching a second FreeRTOS update task while one is
already running. Without this, calling update() twice (e.g. from both
the polling interval and the initial check interval) could spawn two
concurrent tasks both writing to the same UpdateInfo.

With the single-defer structure from the race fix PR, clearing the
handle only needs to happen in one place — at the top of the deferred
lambda, before any other work.
2026-03-17 19:21:15 -10:00
J. Nick Koston 7b04f4ea8b [http_request] Soften SBO comment to say supported toolchains 2026-03-17 18:51:12 -10:00
J. Nick Koston fd70517445 [http_request] Use file-local TaskResult instead of modifying UpdateInfo
Address review feedback:
- Move error_str out of public UpdateInfo into file-local TaskResult
- Add container.reset() before vTaskDelete (doesn't call destructors)
- Remove redundant has_progress/progress assignments after move
- Add comment on delete after std::move
2026-03-17 18:39:01 -10:00
J. Nick Koston 17476934c8 [http_request] Guard against empty firmware_url before path merge
Accessing path[0] on an empty string is undefined behavior.
Add an empty check before the relative URL merge logic.
2026-03-17 18:34:24 -10:00
J. Nick Koston 564128127b [http_request] Call container->end() on non-OK status, fix comment
Address Copilot review feedback:
- Call container->end() when status_code != HTTP_STATUS_OK (pre-existing
  bug, but easy to fix while we're here)
- Update error_str comment to say "update check failure" not "fetch failure"
2026-03-17 18:33:55 -10:00
J. Nick Koston e93e064304 [http_request] Inline apply_manifest_result_main_loop_ into defer lambda
One less method — the logic lives directly in the lambda body.
No flash change (compiler was already inlining the call).
2026-03-17 18:27:53 -10:00
J. Nick Koston 211273d46c [http_request] Inline fetch_manifest_ back into update_task
Eliminates separate function call overhead — compiler can optimize
across the single function. Saves ~32 bytes flash on ESP8266.
2026-03-17 18:26:22 -10:00
J. Nick Koston f496936b31 [http_request] Reduce flash cost of update race fix
- Move state computation to main loop callback (avoids 2 extra lambda captures)
- Add error_str field to UpdateInfo so error info rides with the pointer
- Allocate UpdateInfo once at top of fetch_manifest_ (single ownership path)
- Lambda captures only 2 pointers (8 bytes), fits std::function SBO

Reduces ESP8266 flash delta from +480 to ~+288 bytes.
2026-03-17 18:23:51 -10:00
J. Nick Koston a28a6f7d93 [http_request] Fix data race on update_info_ strings in update task
The update task runs in a FreeRTOS thread on ESP32 and was writing
directly to update_info_ std::string fields while the main loop
reads them via API (as StringRef pointers into the string buffer),
MQTT, web server, and Prometheus. This is undefined behavior that
can cause use-after-free crashes when a string reallocation
invalidates a StringRef held by the API serialization path.

Move all update_info_ and state_ writes into the existing defer()
callback so they execute on the main loop. The task now accumulates
results in a local UpdateInfo struct and moves it into update_info_
in the deferred callback, eliminating the cross-thread data race
with zero steady-state memory overhead.
2026-03-17 17:58:10 -10:00
Jonathan Swoboda 2531fb1a02 [voice_assistant][micro_wake_word] Fix null deref and missing error return (#14906) 2026-03-17 23:12:13 -04:00
J. Nick Koston 3e845d387a [tests] Fix test_show_logs_serial taking 30s due to unmocked serial port wait (#14903) 2026-03-17 14:44:17 -10:00
b9e8da92c7 [scheduler] Fix UB in cross-thread counter/vector reads, add atomic fast-path (#14880)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2026-03-18 00:19:31 +00:00
0c5f055d45 [core] cpp tests: Allow customizing code generation during tests (#14681)
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
Co-authored-by: J. Nick Koston <nick@koston.org>
2026-03-18 00:16:01 +00:00
J. Nick KostonandJesse Hills 342020e1d3 [mqtt] Fix data race on inbound event queue (#14891)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2026-03-17 13:49:24 -10:00
J. Nick Koston 62f9bc79c4 [ci] Add CodSpeed badge to README (#14901) 2026-03-17 13:48:21 -10:00
Jonathan Swoboda 53bfb02a21 [sensor][ee895][hdc2010] Fix misc bugs found during component scan (#14890) 2026-03-17 19:46:26 -04:00
J. Nick Koston 83484a8828 [esp32_ble_server] Remove vestigial semaphore from BLECharacteristic (#14900) 2026-03-17 13:38:41 -10:00
J. Nick Koston ece235218f [debug][bme680_bsec] Use fnv1_hash_extend to avoid temporary string allocations (#14876) 2026-03-17 13:27:46 -10:00
J. Nick Koston f3409acfa8 [core] Document EventPool sizing requirement with LockFreeQueue (#14897) 2026-03-17 13:08:58 -10:00
J. Nick KostonandCopilot Autofix powered by AI 77b7201eb8 [ci] Run CodSpeed benchmarks on push to dev for baseline (#14899)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-17 13:08:45 -10:00
J. Nick Koston 6b91df8d75 [esp32_ble][esp32_ble_server] Inline is_active/is_running and remove STL bloat (#14875) 2026-03-17 13:05:16 -10:00
J. Nick Koston 1670f04a87 [core] Add CodSpeed C++ benchmarks for protobuf, main loop, and helpers (#14878) 2026-03-17 12:29:38 -10:00
J. Nick Koston 1adf05e2d5 [esp32_ble] Fix EventPool/LockFreeQueue sizing off-by-one (#14892) 2026-03-17 22:24:02 +00:00
J. Nick Koston a94bb74d04 [usb_uart] Fix EventPool/LockFreeQueue sizing off-by-one (#14895) 2026-03-18 11:18:31 +13:00
J. Nick Koston c19c75220b [usb_host] Fix EventPool/LockFreeQueue sizing off-by-one (#14896) 2026-03-18 11:17:59 +13:00
J. Nick Koston 97382ed814 [usb_cdc_acm] Fix EventPool/LockFreeQueue sizing off-by-one (#14894) 2026-03-18 11:17:43 +13:00
J. Nick Koston 5f06679d78 [espnow] Fix EventPool/LockFreeQueue sizing off-by-one (#14893) 2026-03-18 11:16:44 +13:00
Jonathan Swoboda 851e8b6c0d [gree] Fix IR checksum for YAA/YAC/YAC1FB9/GENERIC models (#14888) 2026-03-17 16:28:13 -04:00
J. Nick Koston 9a729608d5 [core] Add back deprecated set_internal() for external projects (#14887) 2026-03-17 19:58:05 +00:00
Jonathan Swoboda 53fa346ddc [speaker] Fix media playlist using announcement delay (#14889) 2026-03-17 19:18:49 +00:00
J. Nick Koston b3210de374 [core] Extract shared C++ build helpers from cpp_unit_test.py (#14883) 2026-03-17 08:53:36 -10:00
J. Nick Koston 82ccc37ba1 [ethernet] Mark EthernetComponent as final (#14842) 2026-03-17 08:14:52 -10:00
J. Nick Koston 3826e95506 [api] Fix ProtoMessage protected destructor compile error on host platform (#14882) 2026-03-17 08:14:36 -10:00
Jonathan Swoboda b083491e74 [microphone] Switch IDF test to new I2S driver (#14886) 2026-03-17 13:46:32 -04:00
Diorcet Yann 73ca0ff106 [core] Small improvements (#14884) 2026-03-17 09:22:31 -04:00
Jesse Hills bba11b3b1e Merge branch 'beta' into dev 2026-03-17 14:14:03 +13:00
Jesse Hills a40d97f346 Merge pull request #14873 from esphome/bump-2026.3.0b3
2026.3.0b3
2026.3.0b3
2026-03-17 14:13:29 +13:00
Jesse Hills d6c67d5c35 Bump version to 2026.3.0b3 2026-03-17 11:45:03 +13:00
Jonathan Swoboda 0816b27398 [core] Support both dot and dash separators in Version.parse (#14858) 2026-03-17 11:45:03 +13:00
Jonathan Swoboda 9133582aa0 [as3935] Fix ENERGY_MASK dropping bit 4 of lightning energy MMSB (#14861) 2026-03-17 11:45:02 +13:00
Jonathan Swoboda f36b0fcb61 [am43] Fix battery update throttle using wrong type (#14864) 2026-03-17 11:45:02 +13:00
Jonathan Swoboda bb0a5dc8a8 [lilygo_t5_47] Fix Y coordinate mapping and clamp touch point count (#14865) 2026-03-17 11:45:02 +13:00
Jonathan Swoboda 0c260e483e [gpio][dallas_temp] Fix one_wire read64() and DS18S20 division by zero (#14866) 2026-03-17 11:45:02 +13:00
tomaszduda23 b8ce907976 [ble_nus] fix uart debug (#14850) 2026-03-17 11:45:02 +13:00
dependabot[bot] ffce637ea5 Bump aioesphomeapi from 44.5.1 to 44.5.2 (#14849)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-17 11:45:02 +13:00
d6fba39037 [runtime_image] Add esp-dsp dependency for JPEGDEC SIMD on ESP32 (#14840)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2026-03-17 11:45:02 +13:00
J. Nick Koston 5d5c2723b2 [fastled] Include esp_lcd IDF component for ESP32-S3 compatibility (#14839) 2026-03-17 11:45:02 +13:00
guillempagesandJonathan Swoboda 06d1498c47 [runtime_image] Update jpegdec lib version (#14726)
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
2026-03-17 11:45:02 +13:00
Fabrice 2142bc1b76 [mipi_rgb] Make h- and v-sync pins optional (#14870) 2026-03-17 09:25:11 +11:00
KamilCuk f81e04b036 [web_server] Fix wrong printf format specifier (#14836) 2026-03-16 11:30:31 -10:00