Commit Graph
25164 Commits
Author SHA1 Message Date
J. Nick Koston 352e887d77 Merge remote-tracking branch 'upstream/devirtualize-set-update-interval' into integration 2026-03-18 12:50:21 -10:00
J. Nick Koston 2ab54174e9 [core] Devirtualize PollingComponent::set_update_interval
Remove the virtual keyword from set_update_interval and inline the
trivial setter in the header. No component in the tree actually
overrides this on PollingComponent — the only apparent override was
in sds011 which extends Component (not PollingComponent), so it was
just a name-hiding no-op that is also removed here.

This allows the compiler to inline the setter at all 8 call sites
generated by register_component, eliminating function call overhead
and removing a vtable entry.
2026-03-18 12:49:42 -10:00
J. Nick Koston 1be3e07679 Merge branch 'ld2412-inline-setters' into integration 2026-03-18 12:45:29 -10:00
J. Nick Koston dd44e92cb8 [ld2412] Inline trivial gate threshold number setters
Move set_gate_move_threshold_number and set_gate_still_threshold_number
definitions into the header. These are single-line array assignments
called 14 times each (once per gate), and inlining them eliminates
function call overhead, saving ~52 bytes of flash.
2026-03-18 12:45:01 -10:00
J. Nick Koston 1f2cbc3b34 Merge remote-tracking branch 'upstream/dev' into integration 2026-03-18 12:39:05 -10:00
Kevin Ahrendt 9f4c773963 [media_source] Add request helpers for smart sources (#14936) 2026-03-18 12:34:16 -10:00
Kevin Ahrendt ef0eef8117 [const] Move shared volume constants to components/const (#14935) 2026-03-18 21:57:33 +00:00
Jonathan Swoboda 097e6eb41f [i2s_audio] Remove legacy I2S driver support (#14932) 2026-03-18 11:42:56 -10:00
J. Nick Koston 12b8805878 Merge remote-tracking branch 'origin/api-psk-sbo-fix' into integration 2026-03-18 11:10:41 -10:00
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
J. Nick Koston d06c81fb0f Remove unused active_psk parameter from update_noise_psk_
Now that the timeout lambda re-reads from preferences instead of
capturing the PSK, the active_psk parameter is no longer used.
2026-03-18 10:42:35 -10: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 KostonandCopilot Autofix powered by AI 97f2fa7e9d 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:25 -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 3187ab9208 [api] Avoid heap allocation in PSK update timeout lambda
The set_timeout lambda captured a psk_t (std::array<uint8_t, 32>) by
value, making the lambda 36 bytes — well beyond the std::function
small buffer optimization threshold, forcing a heap allocation.

Re-read the PSK from preferences inside the timeout callback instead.
The PSK was just saved to flash moments before the timeout was
scheduled, so re-reading it is reliable and avoids the large capture.

Extract load_and_apply_noise_psk_() helper to deduplicate the
load-from-preferences-and-apply pattern used in both setup() and
the timeout callback.
2026-03-18 08:47:34 -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