J. Nick Koston
02f9a78a86
[bk72xx] Address Copilot review: fix UB in scan_backtrace + snprintf truncation
...
- scan_backtrace: do bounds math in uintptr_t space and only cast to
pointer at dereference. Comparing pointers from unrelated objects
(the SP value vs the linker RAM-end symbol) is technically UB in C++
even though it works on flat-address embedded targets.
- crash_handler_log: clamp the snprintf return value before using it
as an offset. snprintf returns < 0 on error or >= size on truncation,
and feeding that straight back into pointer arithmetic is UB.
2026-04-30 13:15:02 -05:00
J. Nick Koston
b0c618ed27
[bk72xx] Emit USE_BK72XX_CRASH_HANDLER via cg.add_define
...
The previous gate lived only in core/defines.h, which is loaded for
static analysis / IDE support but not for actual builds. As a result
the wrap symbols (__wrap_bk_trap_udef/pabt/dabt) were preprocessed out
of crash_handler.cpp at compile time, leaving the linker without a
target for the SDK's wrapped trap calls. Set the define from
libretiny/__init__.py (where the platform-specific codegen lives —
bk72xx/__init__.py is auto-generated and not the right home).
2026-04-30 13:03:25 -05:00
J. Nick Koston
1e3c104cbc
[bk72xx] Read RAM/flash bounds from linker symbols, not constants
...
Addresses review feedback ("unsafe assumptions about memory layout",
"its a heuristic"). The patch_bk72xx_noinit.py extra_script now also
emits PROVIDE(_esphome_{ram,flash}_{start,end}) tied directly to the
linker's MEMORY definition. crash_handler.cpp consumes those symbols
instead of hardcoding bounds, so it tracks the actual variant + board
layout (BK7231N=192KB vs others=256KB, board-specific BKOFFSET_APP /
BKRBL_SIZE_APP) without any chip-aware constants of its own.
Mirrors the linker-symbol pattern already used in
components/esp8266/crash_handler.cpp for the IROM bounds.
2026-04-30 12:57:18 -05:00
J. Nick Koston
5bd5cf1dab
[bk72xx] Use USE_LIBRETINY_VARIANT_BK7231N for variant-specific RAM size
...
Mirrors the split in LibreTiny's lt_mem.c: BK7231N has 192KB RAM, every
other BK72XX variant has 256KB. The previous hardcoded 0x00440000 was
correct for everything except BK7231N, where the stack-scan upper bound
sat 64KB past the chip's physical RAM end.
2026-04-30 12:55:38 -05:00
J. Nick Koston
8fc2e1e542
[bk72xx] Add crash-on-previous-boot detection
...
Brings BK72XX to parity with esp32/esp8266/rp2040: register snapshot +
stack-scanned backtrace are captured during the SDK's exception traps
(undefined instruction / prefetch abort / data abort), persisted across
the watchdog reset in a .noinit RAM region, then logged on the next
boot via the logger and API log subscription paths.
The capture path uses linker --wrap on bk_trap_udef/pabt/dabt — the
trap symbols are defined in LibreTiny's intc.c fixup but called from
the closed-source Beken SDK across translation units, so --wrap takes
effect cleanly. The original SDK behavior (UART register dump +
bk_cpu_shutdown → watchdog reset) is preserved by tail-calling the
real handlers after capture.
A small extra_script (patch_bk72xx_noinit.py) injects a .noinit
section between .bss and _empty_ram in the generated linker script
so the crash record is not zeroed by the C runtime startup and the
heap shrinks to fit rather than overlapping it.
2026-04-30 12:50:16 -05:00
J. Nick Koston
61261b4a59
[libretiny] Move HAL bodies into components/libretiny/hal.cpp + inline trivial dispatches ( #16113 )
2026-04-30 12:33:22 -05:00
J. Nick Koston
d48aad8c4d
[esp32] Replace 512B stack buffer in printf wraps with picolibc cookie FILE ( #16170 )
2026-04-30 13:27:54 -04:00
Kevin Ahrendt
f1d3be4bda
[core] Simplify RAMAllocator and add internal fallback to external mode ( #16171 )
CI / Create common environment (push) Has been cancelled
CI / Check pylint (push) Has been cancelled
CI / Run script/ci-custom (push) Has been cancelled
CI / Check import esphome.__main__ time (push) Has been cancelled
CI / Run pytest (macOS-latest, 3.11) (push) Has been cancelled
CI / Run pytest (macOS-latest, 3.14) (push) Has been cancelled
CI / Run pytest (ubuntu-latest, 3.11) (push) Has been cancelled
CI / Run pytest (ubuntu-latest, 3.13) (push) Has been cancelled
CI / Run pytest (ubuntu-latest, 3.14) (push) Has been cancelled
CI / Run pytest (windows-latest, 3.11) (push) Has been cancelled
CI / Run pytest (windows-latest, 3.14) (push) Has been cancelled
CI / Determine which jobs to run (push) Has been cancelled
CI / Run integration tests (push) Has been cancelled
CI / Run C++ unit tests (push) Has been cancelled
CI / Run CodSpeed benchmarks (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 IDF (push) Has been cancelled
CI / Run script/clang-tidy for ESP8266 (push) Has been cancelled
CI / Run script/clang-tidy for ZEPHYR (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 1/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 2/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 3/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 4/4 (push) Has been cancelled
CI / Test components batch (${{ matrix.components }}) (push) Has been cancelled
CI / pre-commit.ci lite (push) Has been cancelled
CI / Build target branch for memory impact (push) Has been cancelled
CI / Build PR branch for memory impact (push) Has been cancelled
CI / Comment memory impact (push) Has been cancelled
CI / CI Status (push) Has been cancelled
2026-04-30 12:03:40 -04:00
Kevin Ahrendt
2758aa5517
[audio] bump microOpus to v0.4.0 to use fixed-point by default on ESP32 ( #16168 )
2026-04-30 09:12:39 -04:00
Kevin Ahrendt
a8b0133ec1
[audio] Enable specific codecs and configure advanced features ( #16166 )
2026-04-30 08:49:28 -04:00
Clyde Stubbs
1398dcebb4
[st7789v] Add deprecation warnings ( #16162 )
2026-04-30 00:53:37 -05:00
dependabot[bot]
096d0c4279
Bump aioesphomeapi from 44.22.0 to 44.23.0 ( #16161 )
...
CI / Create common environment (push) Has been cancelled
CI / Check pylint (push) Has been cancelled
CI / Run script/ci-custom (push) Has been cancelled
CI / Check import esphome.__main__ time (push) Has been cancelled
CI / Run pytest (macOS-latest, 3.11) (push) Has been cancelled
CI / Run pytest (macOS-latest, 3.14) (push) Has been cancelled
CI / Run pytest (ubuntu-latest, 3.11) (push) Has been cancelled
CI / Run pytest (ubuntu-latest, 3.13) (push) Has been cancelled
CI / Run pytest (ubuntu-latest, 3.14) (push) Has been cancelled
CI / Run pytest (windows-latest, 3.11) (push) Has been cancelled
CI / Run pytest (windows-latest, 3.14) (push) Has been cancelled
CI / Determine which jobs to run (push) Has been cancelled
CI / Run integration tests (push) Has been cancelled
CI / Run C++ unit tests (push) Has been cancelled
CI / Run CodSpeed benchmarks (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 IDF (push) Has been cancelled
CI / Run script/clang-tidy for ESP8266 (push) Has been cancelled
CI / Run script/clang-tidy for ZEPHYR (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 1/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 2/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 3/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 4/4 (push) Has been cancelled
CI / Test components batch (${{ matrix.components }}) (push) Has been cancelled
CI / pre-commit.ci lite (push) Has been cancelled
CI / Build target branch for memory impact (push) Has been cancelled
CI / Build PR branch for memory impact (push) Has been cancelled
CI / Comment memory impact (push) Has been cancelled
CI / CI Status (push) Has been cancelled
CI for docker images / Build docker containers (docker, ubuntu-24.04) (push) Has been cancelled
CI for docker images / Build docker containers (docker, ubuntu-24.04-arm) (push) Has been cancelled
CI for docker images / Build docker containers (ha-addon, ubuntu-24.04) (push) Has been cancelled
CI for docker images / Build docker containers (ha-addon, ubuntu-24.04-arm) (push) Has been cancelled
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-30 04:45:19 +00:00
Jesse Hills
e127268dac
[core] Strip \\?\ prefix from sys.executable for PlatformIO subprocess ( #16158 )
2026-04-30 16:04:52 +12:00
J. Nick Koston
f0bffed3c0
[esp8266] Move HAL bodies into components/esp8266/hal.cpp + inline arch_init ( #16112 )
2026-04-30 15:42:17 +12:00
Jesse Hills
1a871e231d
[ci] Use client-id for GitHub App token generation ( #16155 )
2026-04-30 13:09:37 +12:00
Jesse Hills
47765bd2d0
[ci] Correct version comment on create-github-app-token pin ( #16156 )
2026-04-30 13:08:56 +12:00
dependabot[bot]
8066325e0b
Bump esphome/workflows/.github/workflows/lock.yml from 2026.4.0 to 2026.4.1 ( #16143 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-30 12:52:25 +12:00
J. Nick Koston
b8d24c9e49
[mcp23xxx_base] Reject unsupported interrupt_pin options (inverted, allow_other_uses) ( #16149 )
2026-04-30 11:14:07 +12:00
J. Nick Koston
9b1f5c59bb
[core] Fix null deref in WarnIfComponentBlockingGuard for self-keyed scheduler timers ( #16150 )
2026-04-29 23:05:38 +00:00
Jonathan Swoboda
e4b33fddf5
[esp32] Add ESP-IDF 6.0.1 platform entry ( #16146 )
2026-04-29 18:43:15 -04:00
Jonathan Swoboda
77da64a367
[sx126x] Add cold sleep option and drop unused RTC wakeup bit ( #16144 )
2026-04-29 17:05:51 -04:00
J. Nick Koston
cecccebc64
[core] DelayAction: drop Component inheritance, use self-keyed scheduler ( #16129 )
CI for docker images / Build docker containers (docker, ubuntu-24.04) (push) Has been cancelled
CI for docker images / Build docker containers (docker, ubuntu-24.04-arm) (push) Has been cancelled
CI for docker images / Build docker containers (ha-addon, ubuntu-24.04) (push) Has been cancelled
CI for docker images / Build docker containers (ha-addon, ubuntu-24.04-arm) (push) Has been cancelled
CI / Create common environment (push) Has been cancelled
CI / Check pylint (push) Has been cancelled
CI / Run script/ci-custom (push) Has been cancelled
CI / Check import esphome.__main__ time (push) Has been cancelled
CI / Run pytest (macOS-latest, 3.11) (push) Has been cancelled
CI / Run pytest (macOS-latest, 3.14) (push) Has been cancelled
CI / Run pytest (ubuntu-latest, 3.11) (push) Has been cancelled
CI / Run pytest (ubuntu-latest, 3.13) (push) Has been cancelled
CI / Run pytest (ubuntu-latest, 3.14) (push) Has been cancelled
CI / Run pytest (windows-latest, 3.11) (push) Has been cancelled
CI / Run pytest (windows-latest, 3.14) (push) Has been cancelled
CI / Determine which jobs to run (push) Has been cancelled
CI / Run integration tests (push) Has been cancelled
CI / Run C++ unit tests (push) Has been cancelled
CI / Run CodSpeed benchmarks (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 IDF (push) Has been cancelled
CI / Run script/clang-tidy for ESP8266 (push) Has been cancelled
CI / Run script/clang-tidy for ZEPHYR (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 1/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 2/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 3/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 4/4 (push) Has been cancelled
CI / Test components batch (${{ matrix.components }}) (push) Has been cancelled
CI / pre-commit.ci lite (push) Has been cancelled
CI / Build target branch for memory impact (push) Has been cancelled
CI / Build PR branch for memory impact (push) Has been cancelled
CI / Comment memory impact (push) Has been cancelled
CI / CI Status (push) Has been cancelled
Stale / stale (push) Has been cancelled
Lock closed issues and PRs / lock (push) Has been cancelled
Publish Release / Initialize build (push) Has been cancelled
Publish Release / Build and publish to PyPi (push) Has been cancelled
Publish Release / Build ESPHome amd64 (push) Has been cancelled
Publish Release / Build ESPHome arm64 (push) Has been cancelled
Publish Release / Publish ESPHome docker to dockerhub (push) Has been cancelled
Publish Release / Publish ESPHome docker to ghcr (push) Has been cancelled
Publish Release / Publish ESPHome ha-addon to dockerhub (push) Has been cancelled
Publish Release / Publish ESPHome ha-addon to ghcr (push) Has been cancelled
Publish Release / deploy-ha-addon-repo (push) Has been cancelled
Publish Release / deploy-esphome-schema (push) Has been cancelled
Publish Release / version-notifier (push) Has been cancelled
2026-04-29 20:35:04 +00:00
Jonathan Swoboda
53b682e48f
[ci] Bump clang-tidy from 18.1.8 to 22.1.0.1 ( #16078 )
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-29 20:19:33 +00:00
Mat931
14910e65d9
[ota] Use WatchdogManager for OTA on ESP32 ( #16138 )
...
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-04-29 20:15:21 +00:00
J. Nick Koston
813964714c
[esp32] Move HAL bodies into components/esp32/hal.cpp + inline trivial dispatches ( #16111 )
2026-04-29 20:09:08 +00:00
J. Nick Koston
5a146ab6b7
[valve] Fold ControlAction fields into a single stateless lambda ( #16123 )
2026-04-29 19:20:15 +00:00
J. Nick Koston
61a41402df
[fan] Fold TurnOnAction fields into a single stateless lambda ( #16122 )
2026-04-29 19:16:05 +00:00
Mat931
59b4cfd07c
[watchdog] Use default CHECK_IDLE_TASK and PANIC when configuring the watchdog ( #16142 )
2026-04-29 18:41:12 +00:00
J. Nick Koston
c41f38e16d
[scheduler] Add self-keyed timer API for callers without a Component ( #16127 )
2026-04-29 13:24:37 -05:00
Clyde Stubbs
0ad8a071a7
[espnow] Cleanup method visibility and naming ( #16109 )
2026-04-29 14:18:21 -04:00
J. Nick Koston
985dba9332
[core] Defer heavy module-scope imports in __main__, loader, and config ( #15955 )
2026-04-29 13:17:59 -05:00
GelidusResearch
ca3f7251d4
[ens160] Fix sensor initialization timing ( #16024 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-04-29 14:07:28 -04:00
J. Nick Koston
44cabc191d
[core] Catch body-read errors in download_content ( #16023 )
2026-04-29 14:06:41 -04:00
J. Nick Koston
e5b1991cf7
[fan] Add tests for fan.turn_on action field combinations ( #16125 )
2026-04-29 12:46:06 -05:00
J. Nick Koston
7fba57ce51
[valve] Add tests for valve.control action field combinations ( #16126 )
2026-04-29 12:45:30 -05:00
J. Nick Koston
69a33d8ac0
[core] Inline HAL clock wrappers and split hal.h into per-platform headers ( #15977 )
2026-04-29 12:31:55 -05:00
Jonathan Swoboda
ce61dcf387
[remote_base][core] Drop redundant typename in dependent type contexts ( #16137 )
2026-04-29 16:54:17 +00:00
Jonathan Swoboda
bae6b51652
[kamstrup_kmp][toshiba] Fix signed/unsigned comparisons against sizeof ( #16135 )
2026-04-29 11:33:57 -04:00
Jonathan Swoboda
557c3d4436
[aqi] Use std::max initializer-list for non-negative AQI clamp ( #16134 )
2026-04-29 11:33:29 -04:00
Jonathan Swoboda
bacee89bca
[mixer_speaker] NOLINT bugprone-unchecked-optional-access in audio_mixer_task ( #16130 )
2026-04-29 10:56:13 -04:00
Jonathan Swoboda
2157d11913
[haier] Fix bugprone-unchecked-optional-access; switch HardwareInfo to char[9] ( #16124 )
2026-04-29 14:26:53 +00:00
Jonathan Swoboda
42b8597719
[api] Extend NOLINT to cover bugprone-random-generator-seed in MAC varint test ( #16120 )
2026-04-29 13:58:19 +00:00
Jonathan Swoboda
2bd28eee9d
[tormatic] Use .value() for checked optional access in read_gate_status_ ( #16121 )
2026-04-29 09:51:31 -04:00
J. Nick Koston
0a497d3c22
[light] Fold LightControlAction fields into a single stateless lambda ( #16118 )
2026-04-29 08:35:17 -05:00
Jonathan Swoboda
79da2b9704
[time] Fix bugprone-unchecked-optional-access in CronTrigger::check_time_ ( #16107 )
2026-04-29 08:30:46 -04:00
Jonathan Swoboda
ae5b211c89
[api] Avoid JsonDocument copy-and-swap operator= in ActionResponse ctor ( #16106 )
2026-04-29 08:30:35 -04:00
J. Nick Koston
8ceada8d04
[core] Download external_files in parallel ( #16021 )
CI / Create common environment (push) Has been cancelled
CI / Check pylint (push) Has been cancelled
CI / Run script/ci-custom (push) Has been cancelled
CI / Check import esphome.__main__ time (push) Has been cancelled
CI / Run pytest (macOS-latest, 3.11) (push) Has been cancelled
CI / Run pytest (macOS-latest, 3.14) (push) Has been cancelled
CI / Run pytest (ubuntu-latest, 3.11) (push) Has been cancelled
CI / Run pytest (ubuntu-latest, 3.13) (push) Has been cancelled
CI / Run pytest (ubuntu-latest, 3.14) (push) Has been cancelled
CI / Run pytest (windows-latest, 3.11) (push) Has been cancelled
CI / Run pytest (windows-latest, 3.14) (push) Has been cancelled
CI / Determine which jobs to run (push) Has been cancelled
CI / Run integration tests (push) Has been cancelled
CI / Run C++ unit tests (push) Has been cancelled
CI / Run CodSpeed benchmarks (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 IDF (push) Has been cancelled
CI / Run script/clang-tidy for ESP8266 (push) Has been cancelled
CI / Run script/clang-tidy for ZEPHYR (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 1/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 2/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 3/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 4/4 (push) Has been cancelled
CI / Test components batch (${{ matrix.components }}) (push) Has been cancelled
CI / pre-commit.ci lite (push) Has been cancelled
CI / Build target branch for memory impact (push) Has been cancelled
CI / Build PR branch for memory impact (push) Has been cancelled
CI / Comment memory impact (push) Has been cancelled
CI / CI Status (push) Has been cancelled
Synchronise Device Classes from Home Assistant / Sync Device Classes (push) Has been cancelled
2026-04-29 14:32:30 +12:00
J. Nick Koston
49c7a6928e
[script] Fix cpp_unit_test crash for non-MULTI_CONF platform components ( #16104 )
2026-04-29 14:32:13 +12:00
J. Nick Koston
2fce71e0d4
[wifi] Add phy_mode option for ESP8266 ( #16055 )
2026-04-29 14:31:07 +12:00
J. Nick Koston
80251c54be
[climate] Add climate.control coverage to component tests via thermostat ( #16052 )
2026-04-29 14:27:56 +12:00