Commit Graph
25365 Commits
Author SHA1 Message Date
J. Nick Koston 3541dced07 Merge remote-tracking branch 'upstream/dev' into integration 2026-03-20 12:25:10 -10:00
J. Nick Koston 6a545efa62 Merge remote-tracking branch 'upstream/fix-httpd-stack-overflow' into integration 2026-03-20 12:25:07 -10:00
J. Nick KostonandCopilot c5471ebaad Update esphome/components/web_server_idf/web_server_idf.cpp
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-20 12:24:08 -10:00
J. Nick Koston 5e516e78e4 [wifi] Fix ESP8266 power_save_mode mapping (LIGHT/HIGH were swapped) (#15029) 2026-03-20 12:13:49 -10:00
J. Nick Koston 896b6ec8c9 [api] Increase noise handshake timeout to 60s for slow WiFi environments (#15022) 2026-03-20 17:06:23 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 9e7cdaf475 Bump aioesphomeapi from 44.6.1 to 44.6.2 (#15027)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-20 11:10:40 -10:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> a3fd1d5d00 Bump github/codeql-action from 4.33.0 to 4.34.1 (#15023)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-20 10:41:45 -10:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 7257bed1e9 Bump CodSpeedHQ/action from 4.11.1 to 4.12.1 (#15024)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-20 10:41:20 -10:00
Javier Peletier 5a9977cf5c [lvgl] Fix arc indicator widget not registered in widget_map (#14986) 2026-03-21 07:35:41 +11:00
Keith Roehrenbeck 12b3aec567 [ld2450] Fix zone target counts including untracked ghost targets (#15026) 2026-03-20 10:11:57 -10:00
J. Nick Koston 4395492ba9 Merge remote-tracking branch 'upstream/gpio-switch-interlock-timeout-id' into integration 2026-03-20 00:01:58 -10:00
J. Nick Koston b51d6165df [gpio] Use constexpr uint32_t timer ID for interlock timeout
Replace string-based timeout ID "interlock" with a constexpr
uint32_t, saving 12 bytes of RAM on ESP8266 and avoiding the
string hash lookup.
2026-03-19 23:57:50 -10:00
J. Nick Koston 855972135f Merge remote-tracking branch 'upstream/fix-ledc-deprecated-intr-type' into integration 2026-03-19 23:23:54 -10:00
J. Nick Koston b4acb9b613 [ledc] Fix deprecated intr_type warning on ESP-IDF 6.0+
The intr_type field of ledc_channel_config_t was deprecated in
ESP-IDF 6.0 as the driver now handles interrupts internally.
Guard the assignment with a version check to silence the warning.
2026-03-19 23:22:51 -10:00
J. Nick Koston 0e2529197d Merge branch 'disable-picolibc-newlib-compat' into integration 2026-03-19 23:10:33 -10:00
J. Nick Koston f66f29fbf5 Merge remote-tracking branch 'upstream/analyze-memory-extern-c' into integration 2026-03-19 23:10:27 -10:00
J. Nick Koston a259b1e8b4 Guard _scan_source_symbols against missing nm_path 2026-03-19 23:09:34 -10:00
J. Nick Koston 4d7e06da0a [esp32] Disable PicolibC Newlib compatibility shim on IDF 6.0+
ESP-IDF 6.0 switched from Newlib to PicolibC. The Newlib compatibility
shim (CONFIG_LIBC_PICOLIBC_NEWLIB_COMPATIBILITY) provides thread-local
stdin/stdout/stderr and getreent() for code compiled against Newlib.

ESPHome doesn't link against Newlib-built libraries that use stdio,
so the shim is unnecessary overhead. The cost is small (a few dozen
bytes of TLS per FreeRTOS task) but there's no reason to carry it.

Users linking precompiled Newlib binaries can re-enable via:
  sdkconfig_options:
    CONFIG_LIBC_PICOLIBC_NEWLIB_COMPATIBILITY: "y"
2026-03-19 23:07:17 -10:00
J. Nick Koston fcb779e9e4 Merge remote-tracking branch 'upstream/analyze-memory-extern-c' into integration 2026-03-19 22:42:44 -10:00
J. Nick Koston 8a82a1c7b1 [analyze-memory] Attribute extern C symbols to ESPHome components via source file mapping
Symbols declared with extern "C" linkage (like resetPins in esp8266/core.cpp)
lack C++ namespace prefixes, causing them to fall through to "other" in the
memory analysis. This adds source-file-based attribution by scanning ESPHome
object files with nm to build a symbol-to-component map.

Also removes resetPins from the arduino_core heuristic pattern since it's
an ESPHome function, not an Arduino one.
2026-03-19 22:41:34 -10:00
J. Nick Koston 79a73a7bc9 Merge remote-tracking branch 'upstream/is-ready-bitmask' into integration 2026-03-19 22:16:31 -10:00
J. Nick Koston 453cbbe81c [core] Optimize Component::is_ready() with bitmask check
Replace three separate equality comparisons with a single bitmask
shift-and-test. This compiles to fully branchless code and halves
the function size on Xtensa (38 → 19 bytes, 14 → 7 instructions).
2026-03-19 22:14:13 -10:00
J. Nick Koston 5b94c7d4d6 Merge remote-tracking branch 'upstream/preferences-shorten-tag' into integration 2026-03-19 22:02:19 -10:00
J. Nick Koston 24605b0e30 [preferences] Shorten TAG strings across all platforms
Only one preferences backend is ever compiled per binary, so the
platform prefix is redundant. Shorten all TAG strings from
"<platform>.preferences" to just "preferences".

Saves 4-8 bytes of RAM per platform (tag string stored in .rodata
on ESP8266).
2026-03-19 21:59:59 -10:00
J. Nick Koston 1d3e33d3ce Merge remote-tracking branch 'upstream/logger-progmem-lookup-tables' into integration 2026-03-19 21:52:27 -10:00
J. Nick Koston 0ca44e061e [logger] Move log level lookup tables to PROGMEM
Move LOG_LEVEL_COLOR_DIGIT and LOG_LEVEL_LETTER_CHARS arrays from
.rodata (RAM) to PROGMEM (flash) on ESP8266. These small lookup
tables were consuming 16 bytes of RAM unnecessarily.

Results on a minimal ESP8266 config:
- RAM: -16 bytes (.rodata 948 → 932 bytes)
- Flash: +32 bytes (PROGMEM access code)
2026-03-19 21:51:11 -10:00
J. Nick Koston 263324dec0 Merge remote-tracking branch 'origin/fix-time-timezone-offset' into integration 2026-03-19 21:43:09 -10:00
J. Nick Koston ab6bd0b8cc tidy 2026-03-19 21:27:13 -10:00
J. Nick Koston c3514d6496 Merge remote-tracking branch 'upstream/wifi-log-str-literal' into integration 2026-03-19 21:21:17 -10:00
J. Nick Koston 8211218483 [wifi] Use LOG_STR_LITERAL for scan complete log string literals
Wrap string literal ternary args in LOG_STR_LITERAL to keep them
in flash on ESP8266.
2026-03-19 21:00:12 -10:00
J. Nick Koston d59c006ff9 [uart] Fix UART0 default pin IOMUX loopback on ESP32 (#14978) 2026-03-19 20:56:51 -10:00
J. Nick Koston 609d60aa12 Merge branch 'number-call-cleanup' into integration 2026-03-19 20:53:03 -10:00
J. Nick Koston 310b50ffc6 [number] Clean up NumberCall::perform() increment/decrement logic
Extract cycle_or_clamp_ helper and simplify the increment/decrement
branches by flattening nested conditionals. Use LOG_STR_LITERAL for
cycling log strings.
2026-03-19 20:52:03 -10:00
J. Nick Koston 533301c909 Merge remote-tracking branch 'upstream/rp2040-lwip-tune' into integration 2026-03-19 19:57:09 -10:00
J. Nick Koston 0b0184f089 Merge remote-tracking branch 'upstream/esp32-pico-flash-pin-hint' into integration 2026-03-19 19:56:52 -10:00
J. Nick Koston d0726754c3 [esp32] Mention ignore_pin_validation_error in flash pin error message
ESP32 modules like the ESP32-PICO-V3-02 use a different flash pin
configuration where GPIO7 and GPIO8 are freely usable. The existing
ignore_pin_validation_error option allows bypassing this check but
the error message did not mention it, making it hard to discover.
2026-03-19 19:53:28 -10:00
J. Nick Koston 3f19012d66 Merge branch 'dev' into rp2040-lwip-tune 2026-03-19 19:35:01 -10:00
J. Nick Koston 1caeffbc73 Merge remote-tracking branch 'upstream/fix-httpd-stack-overflow' into integration 2026-03-19 19:19:13 -10:00
J. Nick Koston 402a308540 Fix clang-format: use lower_snake_case for function-local constant 2026-03-19 19:18:58 -10:00
J. Nick Koston 82620aa565 Merge remote-tracking branch 'upstream/fix-callback-function-ref-memcpy' into integration 2026-03-19 18:58:56 -10:00
J. Nick Koston 1c35ddf1f3 Merge remote-tracking branch 'upstream/fix-httpd-stack-overflow' into integration 2026-03-19 18:58:53 -10:00
J. Nick Koston 86f15b20ee Merge remote-tracking branch 'origin/integration' into integration 2026-03-19 18:58:19 -10:00
J. Nick Koston aaa911b7e4 Merge remote-tracking branch 'upstream/fix-time-timezone-offset' into integration 2026-03-19 18:58:04 -10:00
J. Nick Koston b877b4a57e [web_server] Increase httpd task stack size to prevent stack overflow
The SerializationBuffer introduced in #13625 places a 640-byte buffer
on the stack. When handling HTTP requests on the ESP-IDF httpd task
(which has a default stack of 4096 bytes), the deep call chain from
handleRequest through JSON serialization and lwip_send can overflow.

Increase the httpd task stack by 256 bytes to restore headroom.

Fixes #14991
2026-03-19 18:54:22 -10:00
J. Nick Koston 197dd332b1 [time] Fix timezone_offset() and recalc_timestamp_local() always using UTC fallback
time.h was missing #include "esphome/core/defines.h", so USE_TIME_TIMEZONE
was never defined when compiling time.cpp. Both functions always took the
#else path, returning 0 offset and treating local time as UTC.
2026-03-19 18:47:45 -10:00
J. Nick Koston 02ada93ea5 [wifi] Reject WiFi config on RP2040/RP2350 boards without CYW43 chip (#14990) 2026-03-19 18:40:33 -10:00
J. Nick Koston abd6a4f6a9 [core] Fix Callback::create memcpy from function reference
When Callback::create receives a function reference (e.g. void(&)(int)),
&callable gives the address of the function's machine code, not a
pointer variable. The memcpy then reads bytes from executable code
memory instead of copying a function pointer value.

Fix by decaying the callable into a local variable before memcpy,
which converts function references to function pointers stored on
the stack.

No current callers trigger this bug (all pass lambdas), but this
prevents incorrect behavior if bare function names are ever passed.
2026-03-19 18:01:48 -10:00
J. Nick Koston 5da2073d45 Merge branch 'dev' into rp2040-lwip-tune 2026-03-19 16:22:33 -10:00
J. Nick Koston 6348eafcb6 Merge remote-tracking branch 'upstream/fix-rp2040-wifi-validation' into integration 2026-03-19 16:15:46 -10:00
6e87f8eb4e [template] alarm_control_panel collapse SensorDataStore and bypassed_sensor_indicies into SensorInfo (#14852)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2026-03-20 02:06:58 +00:00