Commit Graph

22310 Commits

Author SHA1 Message Date
J. Nick Koston
5d4fcaaf34 Merge remote-tracking branch 'upstream/dev' into integration 2026-02-11 11:42:01 -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
68c233b3bd Merge branch 'api-optimize-varint-encoding' into integration 2026-02-11 11:37:42 -06:00
J. Nick Koston
8f7e64dd0b Merge remote-tracking branch 'upstream/dev' into integration 2026-02-11 11:37:35 -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
242d152edc Use ESPHOME_DEBUG_API guard instead of DEBUG
CI compile tests also define DEBUG, so a dedicated guard is needed.
Enable ESPHOME_DEBUG_API in integration tests via conftest.py.
2026-02-11 11:34:14 -06:00
J. Nick Koston
e63308aa33 Use DEBUG guard for asserts instead of custom define
Integration tests already pass -DDEBUG, so no custom define needed.
2026-02-11 11:30:51 -06:00
J. Nick Koston
93ff39709a Enable ESPHOME_DEBUG_API in API integration tests 2026-02-11 11:28:08 -06:00
J. Nick Koston
d3e47a5d80 Fix encode_bool to encode actual value when force=true 2026-02-11 11:20:41 -06:00
J. Nick Koston
77d8fc80be Guard asserts with ESPHOME_DEBUG_API to avoid flash overhead 2026-02-11 11:18:50 -06:00
J. Nick Koston
fb1c495506 tweaks 2026-02-11 11:12:46 -06:00
J. Nick Koston
dc2085cc25 tweaks 2026-02-11 11:11:22 -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
J. Nick Koston
25baec48ee [api] Optimize varint encoding to eliminate uint64_t widening
Replace ProtoVarInt temporaries with direct uint32_t encoding functions
to avoid unnecessary 64-bit widening on 32-bit architectures (ESP32 Xtensa).

- Add encode_varint_to_buffer() free function for direct buffer encoding
- Replace encode_varint_raw(ProtoVarInt) with uint32_t-native implementation
- Add encode_varint_raw_64() for the few call sites needing 64-bit (BLE)
- Remove unused ProtoVarInt::encode() and encode_to_buffer_unchecked()
- Remove dead null checks from ProtoVarInt::parse()

Net savings: -152 bytes flash on ESP32 IDF.
2026-02-11 11:02:03 -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
J. Nick Koston
86f0012abd Merge remote-tracking branch 'upstream/dev' into integration 2026-02-11 09:56:47 -06:00
J. Nick Koston
c82d630cf5 Merge branch 'preferences-clear-on-sync' into integration 2026-02-11 09:53:45 -06:00
J. Nick Koston
185786604b [preferences] Replace per-element erase with clear() in sync()
NVS/FDB write failures are permanent (flash worn out, partition full,
handle invalid). The NVS layer already performs internal garbage
collection during writes, so retrying the same call will always fail
again. Keeping failed entries in the vector leaked memory and forced
a reverse-iterate + per-element erase pattern that generated ~130
bytes of inlined vector move/destroy code for NVSData objects.

Replace with a forward range-for and a single clear() at the end.
2026-02-11 09:48:32 -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
e0f3d87c17 Merge remote-tracking branch 'tomaszduda23/logger_threading' into integration 2026-02-11 09:18:41 -06:00
J. Nick Koston
8b53f9a649 revert to 0 disabled to test off path 2026-02-11 08:48:22 -06:00
J. Nick Koston
a451491b47 tweak semantics to match 2026-02-11 08:46:30 -06: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
4f7d4e1fd3 make sure its > 0 in test 2026-02-11 08:36:38 -06:00
J. Nick Koston
1050d083b4 cleanup ifdefs and typos 2026-02-11 08:34:17 -06:00
J. Nick Koston
ba5703254a Merge remote-tracking branch 'origin/web-server-remove-packed-deferred-event' into integration 2026-02-11 08:23:32 -06:00
J. Nick Koston
48cc739bab Add static_assert to guard DeferredEvent size and update comments
Add compile-time check that DeferredEvent has no padding, so future
field additions would trigger a build error rather than silently
reintroducing the unaligned access codegen issue.

Update comments to reference pointer sizes instead of hardcoded "8 bytes".
2026-02-11 08:17:51 -06:00
J. Nick Koston
11735bc2ed Merge branch 'web-server-remove-packed-deferred-event' into integration 2026-02-11 08:13:19 -06:00
J. Nick Koston
e139722e9d [web_server] Remove unnecessary packed attribute from DeferredEvent
DeferredEvent contains two pointers (void* + function pointer), which
are already naturally 4-byte aligned on all ESPHome targets. The struct
is 8 bytes with no padding regardless of packed.

The packed attribute forces the compiler to use byte-by-byte loads and
stores instead of word-aligned access, bloating deq_push_back_with_dedup_
from 163 to 317 bytes due to shift/mask/or sequences for every field
access.

The packed attribute was added in #7538 likely to guarantee the struct
stayed at 8 bytes, but this is already the case without it since both
fields are pointer-sized.
2026-02-11 08:11:31 -06:00
J. Nick Koston
48e0c9c76b Merge branch 'preferences-eliminate-heap-fallback' into integration 2026-02-11 07:31:30 -06:00
J. Nick Koston
fe5088c6e1 [esp8266][rp2040] Eliminate heap fallback in preference save/load
Replace SmallBufferWithHeapFallback with a fixed stack buffer sized
to the physical storage limit. No single preference can exceed the
storage it resides in, so heap allocation is never needed.

ESP8266: buffer sized to max(flash_storage, rtc_normal_region) —
128 words (512B) with restore_from_flash, 96 words (384B) without.
RP2040: buffer sized to flash storage (512B).

Eliminates new[]/delete[] codegen from save()/load() virtual methods.
2026-02-11 07:27:24 -06:00
Tomasz Duda
94471be18b fix 2026-02-11 13:18:39 +01:00
Tomasz Duda
d1033e25fe fix 2026-02-11 13:09:03 +01:00
Tomasz Duda
22cd2e8274 fix 2026-02-11 13:08:07 +01:00
Tomasz Duda
054716fa51 fix 2026-02-11 12:54:35 +01:00
Tomasz Duda
eee83b0edf fix 2026-02-11 12:27:03 +01:00
Tomasz Duda
2abf013eb4 fix 2026-02-11 12:15:54 +01:00
Tomasz Duda
89cc5e91b6 fix 2026-02-11 11:36:21 +01:00
Tomasz Duda
d348a3ded0 fix 2026-02-11 11:24:37 +01:00
Tomasz Duda
66a2860526 fix 2026-02-11 10:36:13 +01:00
Tomasz Duda
ccb1d7e5bc fix 2026-02-11 10:25:16 +01:00
Tomasz Duda
9f46bed686 fix 2026-02-11 10:10:47 +01:00
Tomasz Duda
b79780f885 Merge remote-tracking branch 'origin/dev' into logger_threading 2026-02-11 09:52:40 +01:00
Tomasz Duda
d15c466f7e fix 2026-02-11 09:52:32 +01: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