Commit Graph
25152 Commits
Author SHA1 Message Date
J. Nick Koston 405bb60b0d Merge remote-tracking branch 'origin/ota-sbo-fix' into integration 2026-03-18 11:10:31 -10:00
J. Nick Koston c9e96fc848 Merge branch 'dev' into ota-sbo-fix 2026-03-18 10:59:17 -10:00
J. Nick Koston 7cc3bf6425 [ota] Move notify_state_deferred_ out of header to avoid inlining at 8 call sites 2026-03-18 10:54:46 -10:00
J. Nick Koston 8ee6392b01 [ota] Add static_assert for OTAState packing assumption 2026-03-18 10:45:57 -10:00
Jonathan Swoboda 73a49493a2 [vbus][shelly_dimmer][st7789v][modbus_controller] Fix integer overflows, off-by-one, and coordinate swap (#14916) 2026-03-18 16:43:42 -04:00
Jonathan Swoboda 4a93d5b544 [vl53l0x][ld2420][ble_client][inkplate] Fix state corruption, crash, OOB read, and shift UB (#14919) 2026-03-18 16:42:53 -04:00
Jonathan Swoboda cc0655a904 [bedjet][light][i2s_audio][ld2412] Fix uninitialized pointers, div-by-zero, and buffer validation (#14925) 2026-03-18 16:42:13 -04:00
J. Nick Koston 0959c35753 Merge remote-tracking branch 'upstream/float-to-raw-optimization' into integration 2026-03-18 10:30:22 -10:00
Jesse Hills a859cb3cce Merge branch 'beta' into dev 2026-03-19 09:20:26 +13:00
Jesse Hills 9e4e2d78dc Merge pull request #14926 from esphome/bump-2026.3.0b5
2026.3.0b5
2026.3.0b5
2026-03-19 09:19:50 +13:00
J. Nick Koston 85be827bb0 Use union instead of memcpy in float_to_raw — xtensa-gcc doesn't optimize memcpy in all contexts 2026-03-18 10:16:37 -10:00
J. Nick Koston e7d1d08fa1 Use memcpy instead of __builtin_bit_cast for ESP8266 compat 2026-03-18 10:12:04 -10:00
J. Nick Koston 856a0b0c83 [api] Use integer comparison for float zero checks in protobuf encoding
Replace floating-point comparison (value != 0.0f) with integer bit-pattern
check via a shared float_to_raw() helper in both encode_float() and
calc_float(). This avoids software float library calls on platforms without
hardware FPU (ESP8266, some LibreTiny chips) and ensures both functions
use identical zero-check logic so size calculation always matches encoding.
2026-03-18 10:04:59 -10:00
J. Nick Koston 80192ad0d0 Merge remote-tracking branch 'upstream/remove-call-loop-wrapper' into integration 2026-03-18 09:58:33 -10:00
J. Nick KostonandCopilot Autofix powered by AI 273419a237 Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-18 09:51:59 -10:00
J. Nick Koston 810f2f4b0d Remove call_loop_ wrapper and call loop() directly 2026-03-18 09:50:22 -10:00
Jonathan Swoboda 47909d5299 [hub75] Bump esp-hub75 to 0.3.5 (#14915) 2026-03-18 09:47:14 -10:00
J. Nick Koston d5731b3700 Merge remote-tracking branch 'upstream/dev' into integration 2026-03-18 09:45:16 -10:00
J. Nick Koston fc03e7d2cd Merge remote-tracking branch 'upstream/callback-drop-captures' into integration 2026-03-18 09:44:58 -10:00
dependabot[bot] 16667bf5be Bump aioesphomeapi from 44.5.2 to 44.6.0 (#14927)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-18 09:39:26 -10:00
dependabot[bot] ef3afe3e21 Bump codecov/codecov-action from 5.5.2 to 5.5.3 (#14928)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-18 09:33:29 -10:00
dependabot[bot] 3a47317fc8 Bump actions/cache from 5.0.3 to 5.0.4 in /.github/actions/restore-python (#14930)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-18 09:33:15 -10:00
dependabot[bot] 89066e3e20 Bump actions/cache from 5.0.3 to 5.0.4 (#14929)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-18 09:33:00 -10:00
Jesse Hills af9366fdd4 Bump version to 2026.3.0b5 2026-03-19 08:19:26 +13:00
J. Nick Koston 448402ca2c [http_request] Fix data race on update_info_ strings in update task (#14909) 2026-03-19 08:19:26 +13:00
Jonathan Swoboda fc67551edc [tc74][apds9960] Fix signed temperature and FIFO register address (#14907) 2026-03-19 08:19:26 +13:00
Jonathan Swoboda 98d3dce672 [voice_assistant][micro_wake_word] Fix null deref and missing error return (#14906) 2026-03-19 08:19:26 +13:00
Jonathan Swoboda 4cb93d4df8 [sensor][ee895][hdc2010] Fix misc bugs found during component scan (#14890) 2026-03-19 08:19:18 +13:00
Jonathan Swoboda 91e66cfd9d [gree] Fix IR checksum for YAA/YAC/YAC1FB9/GENERIC models (#14888) 2026-03-19 08:17:03 +13:00
Jonathan Swoboda 6cf32af33f [seeed_mr24hpc1] Fix frame parser length handling bugs (#14863) 2026-03-19 08:17:03 +13:00
J. Nick Koston 33e646cedf [core] Store parent pointer as member to enable inline Callback storage
Callback::create() can store callables inline (no heap allocation)
when they fit in sizeof(void*) — i.e., a single [this] capture on
32-bit platforms. Many automation triggers captured [this, parent]
in their callback lambdas, doubling the capture size and forcing
heap allocation.

Store the parent/state pointer as a class member and capture only
[this] in the lambda. This trades 4 bytes of member storage for
avoiding a permanent heap allocation per callback registration.

Components changed: cover, valve, lock, fan, media_player, datetime,
display_menu_base, graphical_display_menu, esp32_improv, mqtt_fan.
2026-03-18 09:05:18 -10:00
J. Nick Koston 9498c554bf [ota] Pack deferred state args into uint32 to avoid heap allocation
The notify_state_deferred_ lambda captured [this, state, progress, error]
(16 bytes on 32-bit), exceeding std::function SBO and forcing a heap
allocation on every OTA progress update.

Pack the three values into a single uint32_t:
- state (8 bits) + error (8 bits) + progress as fixed-point (16 bits)

The lambda now captures [this, packed] (8 bytes), fitting in SBO.
Progress resolution of 0.01% is more than adequate for OTA reporting.
2026-03-18 08:52:44 -10:00
J. Nick Koston 9a80c980cb [scheduler] Early exit cancel path after first match (#14902) 2026-03-18 07:48:26 -10:00
J. Nick Koston c9e6c85e6a [scheduler] Inline fast-path checks into header (#14905) 2026-03-18 07:48:11 -10:00
J. Nick Koston e88c9ba066 [core] Inline progmem_read functions on non-ESP8266 platforms (#14913) 2026-03-18 07:47:42 -10:00
J. Nick Koston 45be290392 [ci] Bump Python to 3.14 in sync-device-classes workflow (#14912) 2026-03-18 07:47:17 -10:00
J. Nick Koston 3f28ab88ca [http_request] Fix data race on update_info_ strings in update task (#14909) 2026-03-18 07:46:18 -10:00
Jonathan Swoboda 1d07f37d62 [opentherm] Migrate from legacy timer API to GPTimer API (#14859) 2026-03-18 09:22:28 -04:00
Jonathan Swoboda 16c5224341 [tc74][apds9960] Fix signed temperature and FIFO register address (#14907) 2026-03-18 07:48:43 -04:00
J. Nick Koston 8120fce094 Merge remote-tracking branch 'upstream/fix-http-request-update-double-launch-v2' into integration 2026-03-17 19:57:26 -10:00
J. Nick Koston a4eaa53c64 Merge branch 'fix-http-request-update-string-race' into fix-http-request-update-double-launch-v2 2026-03-17 19:23:05 -10:00
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 7eea0653dc Merge branch 'dev' into fix-http-request-update-string-race 2026-03-17 19:00:58 -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