Commit Graph
27841 Commits
Author SHA1 Message Date
J. Nick Koston 58100f2720 [api] Fix batch messages stuck in Nagle buffer and missing flush on list entities completion
The multi-message batch path in process_batch_multi_ bypassed
set_nodelay_for_message(), so batch data written to the socket would
sit in LWIP's Nagle buffer when log messages had previously enabled
Nagle. The remote wouldn't ACK until it sent its own data (e.g. a
ping), which could take 20+ seconds. This caused log-only API clients
(like esphome logs) to time out waiting for ListEntitiesDoneResponse.

Additionally, when LIST_ENTITIES completed without a state subscription,
the batched entity listing responses were never explicitly flushed —
they waited for the 100ms batch timer instead of being sent immediately
like the INITIAL_STATE completion path already did.

Fixes both issues:
- Call set_nodelay_for_message(false) before write_protobuf_messages
  in process_batch_multi_ to ensure TCP_NODELAY is on
- Extract finalize_iterator_sync_() helper and call it when
  LIST_ENTITIES completes without state_subscription
2026-04-08 10:37:05 -10:00
J. Nick Koston 4a18ef87d7 [codegen] Fix templatable float type to use cg.float_ (#15568) 2026-04-08 20:23:36 +00:00
2cd92a311b [esp32] Capture both cores' backtraces in crash handler (#15559)
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
Co-authored-by: J. Nick Koston <nick@koston.org>
2026-04-08 20:14:18 +00:00
J. Nick Koston 94f1e48d95 [esp32] Preserve crash data across OTA rollback reboots (#15578) 2026-04-08 16:09:43 -04:00
Jonathan Swoboda 19c8f0ac7a [zephyr] Fix user overlay only emitting first property (#15560) 2026-04-08 09:46:36 -10:00
J. Nick Koston 312dea7ddb [json] Fix heap buffer overflow in SerializationBuffer truncation path (#15566) 2026-04-08 19:46:16 +00:00
Jonathan Swoboda fb0033947c [qspi_dbi] Connect _validate to CONFIG_SCHEMA (#15563) 2026-04-08 09:45:43 -10:00
Jonathan Swoboda 4b8f99ed10 [modbus_controller] Fix output missing address validation and text_sensor division (#15561) 2026-04-08 09:44:19 -10:00
Jonathan Swoboda 4a764ae1e3 [spi] Fix IndexError on invalid RP2040 CLK pin (#15562) 2026-04-08 09:42:47 -10:00
J. Nick Koston 5b840c1662 [codegen] Fix templatable bool type to use cg.bool_ (#15569) 2026-04-08 19:39:12 +00:00
dependabot[bot] 62d84db5a4 Bump CodSpeedHQ/action from 4.13.0 to 4.13.1 (#15577)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-08 09:38:17 -10:00
J. Nick Koston 019d415bbd [codegen] Fix templatable int type to use cg.int_ (#15571) 2026-04-08 19:37:11 +00:00
J. Nick Koston 707a07108f Merge branch 'crash-handler-rollback-fix' into integration 2026-04-08 09:34:38 -10:00
J. Nick Koston d9ebe1e1e7 Merge branch 'crash-handler-dual-core' into integration 2026-04-08 09:34:33 -10:00
J. Nick Koston 3b11be2123 Merge branch 'crash-handler-dual-core' of https://github.com/swoboda1337/esphome into crash-handler-dual-core 2026-04-08 09:33:15 -10:00
J. Nick Koston ffd58ac8d5 dead store 2026-04-08 09:33:06 -10:00
J. Nick Koston 0f72491a78 Keep s_crash_data_valid after clearing magic
Don't reset s_crash_data_valid in crash_handler_clear() so that
additional API clients connecting during the same boot session
can still receive the crash log.
2026-04-08 09:31:59 -10:00
J. Nick Koston 2ab7f032a8 [esp32] Preserve crash data across OTA rollback reboots
Don't clear the crash data magic marker at boot time. Previously,
crash_handler_read_and_clear() would clear the magic immediately,
so if OTA rollback triggered a reboot before an API client connected,
the crash trace was lost.

Now the magic is only cleared after crash_handler_log() delivers the
data to an API client via crash_handler_clear().
2026-04-08 09:31:30 -10:00
J. Nick Koston 5e5e9879f4 Merge branch 'dev' into crash-handler-dual-core 2026-04-08 09:22:54 -10:00
Clyde Stubbs 7de060ed55 [lvgl] Fix args for lambda in set_rotation action (#15555) 2026-04-09 07:22:24 +12:00
J. Nick Koston 12d1dedb59 minimize iram code duplication 2026-04-08 09:20:41 -10:00
J. Nick Koston cfa41b3467 [codegen] Add cg.int8 type and fix templatable int8 types (#15573) 2026-04-09 07:20:16 +12:00
J. Nick Koston 0a42a11f1c [at581x] Fix non-templated frequency/power_consumption constants for TemplatableFn (#15576) 2026-04-08 09:10:46 -10:00
J. Nick Koston 063a8ce666 [codegen] Fix templatable uint32 type to use cg.uint32 (#15574) 2026-04-08 09:03:25 -10:00
J. Nick Koston a2bd83382b [codegen] Fix templatable uint8 type to use cg.uint8 (#15572) 2026-04-08 09:00:59 -10:00
J. Nick Koston 869cace2f3 [web_server] Truncate update entity summary to 256 characters (#15570) 2026-04-08 08:59:49 -10:00
J. Nick Koston b83edf6c17 [script] Resolve IncludeFile objects in component config merge (#15575) 2026-04-08 08:57:56 -10:00
J. Nick Koston e1aa92b983 [rotary_encoder] Fix templatable value type to use cg.int32 (#15567) 2026-04-08 14:13:37 -04:00
Jonathan Swoboda 2b07bebe8d Add bounds check on info->core and static_assert for dual-core 2026-04-08 09:00:43 -04:00
Jonathan Swoboda 4f06a913a8 Remove unnecessary comment 2026-04-08 08:58:51 -04:00
Jonathan Swoboda 3b22c4cd62 Capture both cores' backtraces in crash handler
On dual-core ESP32 chips, the crash handler now captures the backtrace
from both cores during a panic. This is especially useful for interrupt
WDT crashes where the panic runs on CPU0 (idle task) but the actual
problem is on CPU1 (where ESPHome's main loop runs).
2026-04-08 08:53:07 -04:00
J. Nick Koston a72609e640 [yaml] Resolve top-level IncludeFile in load_yaml (#15557) 2026-04-08 08:39:14 -04:00
J. Nick KostonandCopilot a8b7c7a4ac [core] Add TemplatableFn for 4-byte function-pointer templatable storage (#15545)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-08 08:38:00 -04:00
J. Nick Koston ca61dc5d69 Merge remote-tracking branch 'upstream/test_merge_to_beta_again' into integration 2026-04-07 22:48:15 -10:00
J. Nick Koston 7ba5398418 Merge remote-tracking branch 'upstream/templatable-value-specialize' into integration 2026-04-07 22:48:10 -10:00
J. Nick Koston 618ee77e43 Merge remote-tracking branch 'upstream/fix-test-build-include-file' into test_merge_to_beta_again 2026-04-07 22:47:14 -10:00
J. Nick Koston 09ac7f4c41 Merge remote-tracking branch 'upstream/templatable-value-specialize' into test_merge_to_beta_again 2026-04-07 22:47:07 -10:00
J. Nick Koston 67f26b6cf7 fix 8266 flash string opt 2026-04-07 22:46:31 -10:00
J. Nick Koston 5079c86d1d Merge remote-tracking branch 'upstream/templatable-value-specialize' into integration 2026-04-07 21:51:20 -10:00
J. Nick Koston 76ef8be109 make the bot happy 2026-04-07 21:50:25 -10:00
J. Nick Koston b53f1c694b Add test for top-level !include resolution in load_yaml 2026-04-07 21:36:49 -10:00
J. Nick Koston 19740f44b4 Merge branch 'templatable-value-specialize' into test_merge_to_beta_again 2026-04-07 21:33:46 -10:00
J. Nick Koston 15c0996364 Merge remote-tracking branch 'origin/fix-test-build-include-file' into test_merge_to_beta_again 2026-04-07 21:33:41 -10:00
J. Nick Koston 01ae695439 Fix load_yaml returning unresolved IncludeFile for top-level !include
Move the IncludeFile resolution into _load_yaml_internal so all callers
get resolved content, rather than patching individual call sites.
2026-04-07 21:33:06 -10:00
J. Nick Koston fe17c86f58 now fix is always the same for unwrapped 2026-04-07 21:32:20 -10:00
J. Nick Koston 64d3fa52ce Fix test_build_components crash with top-level !include test files
The IncludeFile representer added in #15549 defers !include resolution,
but the component test scripts assumed load_yaml always returns a dict.
Test files using top-level !include (e.g. usb_uart) caused a TypeError:
'argument of type IncludeFile is not iterable'.

Resolve IncludeFile objects by calling .load() before processing.
2026-04-07 21:25:41 -10:00
J. Nick Koston b18c911429 another one 2026-04-07 21:24:01 -10:00
J. Nick Koston 8c0e619803 fix missing templatable in lightwaverf and match name to code 2026-04-07 21:24:01 -10:00
J. Nick Koston a5819d1185 another one 2026-04-07 21:23:27 -10:00
J. Nick Koston a01ba05dca fix missing templatable in lightwaverf and match name to code 2026-04-07 21:20:26 -10:00