J. Nick Koston
043290c204
Merge remote-tracking branch 'upstream/dev' into integration
...
# Conflicts:
# esphome/__main__.py
# esphome/core/log.cpp
# esphome/core/log.h
# esphome/util.py
# tests/component_tests/logger/test_logger.py
# tests/component_tests/logger/test_logger.yaml
# tests/unit_tests/test_util.py
2026-03-10 10:34:19 -10:00
Kevin Ahrendt and J. Nick Koston
8ca6ee4349
[speaker_source] Add new media player ( #14649 )
...
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
2026-03-10 20:25:26 +00:00
mahumpula and Jonathan Swoboda
780e009bf4
[runtime_image] Add support for 8bit BMPs and fix existing issues ( #10733 )
...
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
2026-03-10 16:23:49 -04:00
Jonathan Swoboda and Claude Opus 4.6
04d80cfb75
[esp32_hosted] Bump esp_wifi_remote and esp_hosted versions ( #14680 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 15:17:30 -04:00
J. Nick Koston
9404eadaf8
[rp2040_ble] Add BLE component for RP2040/RP2350 ( #14603 )
2026-03-10 09:12:28 -10:00
J. Nick Koston
4d2ef09a29
[log] Detect early log calls before logger init and optimize hot path ( #14538 )
2026-03-10 09:12:10 -10:00
J. Nick Koston
89bb5d9e42
[core] Require explicit synchronous= for register_action ( #14606 )
2026-03-10 09:11:45 -10:00
J. Nick Koston
9dd3ec258c
[scheduler] Replace unique_ptr with raw pointers, add leak detection ( #14620 )
2026-03-10 09:11:28 -10:00
J. Nick Koston
c709010c4c
[api] Replace std::vector<uint8_t> with APIBuffer to skip zero-fill ( #14593 )
2026-03-10 09:11:12 -10:00
J. Nick Koston and Claude Opus 4.6
6e468936ec
[api] Inline ProtoVarInt::parse fast path and return consumed in struct ( #14638 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 09:10:55 -10:00
J. Nick Koston
2c7ef4f758
[rp2040] Use picotool for BOOTSEL upload and improve upload UX ( #14483 )
2026-03-10 09:10:33 -10:00
Diorcet Yann
06a127f64b
[core] ESP-IDF compilation fixes ( #14541 )
2026-03-10 11:52:48 -04:00
Anunay Kulshrestha and Claude
fba21e6dd4
[bl0940] Fix reset_calibration() declaration missing from header ( #14676 )
...
Co-authored-by: Claude <noreply@anthropic.com >
2026-03-10 10:44:19 -04:00
J. Nick Koston
4d1e1645dc
Merge branch 'fix-rp2040-tcp-race' into integration
2026-03-10 01:08:22 -10:00
J. Nick Koston
81d12fd14a
[socket] Hold lwip lock for entire write() operation
...
Same pattern as writev — write() calls internal_write_() then
internal_output_(), each acquiring the lock separately. Hold
the lock at the outer scope so inner calls just bump the
recursion counter.
2026-03-10 00:57:36 -10:00
J. Nick Koston
cc05bf3ed2
[socket] Add LWIP_LOCK to socket factory functions
...
tcp_new() is an lwip core API call that must be bracketed with
the lwip lock on RP2040 per pico-sdk docs. Add LWIP_LOCK() to
socket() and socket_listen() factory functions.
2026-03-10 00:55:34 -10:00
J. Nick Koston
c182c0c74f
[socket] Hold lwip lock for entire readv/writev scatter-gather operation
...
Avoid repeated lock acquire/release cycles per iovec element.
The recursive mutex re-entry in inner calls is nearly free (counter
bump), while the outer lock prevents the expensive IRQ disable/enable
on each iteration.
2026-03-10 00:53:01 -10:00
J. Nick Koston
a88e9b8146
[socket] Fix RP2040 TCP race condition between lwip callbacks and main loop
...
On RP2040 (Pico W), arduino-pico sets PICO_CYW43_ARCH_THREADSAFE_BACKGROUND=1,
which means lwip callbacks (recv_fn, accept_fn, err_fn) run from a PendSV
interrupt — not the main loop. This allows them to preempt read(), write(),
close(), and accept() at any point, causing race conditions on shared state
like the rx_buf_ pbuf chain.
The most critical race: recv_fn calls pbuf_cat(rx_buf_, pb) while read() is
freeing nodes in the same chain, leading to use-after-free and lwip's
"Creating an infinite loop" assertion panic. This is the root cause of #10681 .
Fix: implement RP2040's LwIPLock (previously a no-op) to call
cyw43_arch_lwip_begin/end, which acquires the pico-sdk async_context recursive
mutex. Add LWIP_LOCK() guards to all main-loop lwip API call sites in the
socket layer.
On ESP8266, lwip callbacks run cooperatively from the main loop, so
LwIPLock remains a no-op.
Closes #10681
2026-03-10 00:34:20 -10:00
J. Nick Koston
4b50d14496
[serial_proxy] Reduce loop() overhead by disabling when idle and splitting read path ( #14673 )
2026-03-10 02:10:03 -05:00
J. Nick Koston
1202f54a75
Merge branch 'serial-proxy-loop-stack-optimization' into integration
2026-03-09 20:49:48 -10:00
J. Nick Koston
5d6301d312
missing guard
2026-03-09 20:42:41 -10:00
J. Nick Koston
cd6ef8e41d
[serial_proxy] Reduce loop() stack usage by splitting read path
...
Split the 256-byte UART read buffer into a separate noinline
read_and_send_() helper so the common "no data" path in loop()
only needs a 32-byte stack frame instead of 288 bytes.
Also reorder checks so api_connection_ == nullptr bails out
first, avoiding the more expensive disconnect detection when
no client is subscribed.
2026-03-09 20:34:45 -10:00
J. Nick Koston
bc6691da9a
Merge remote-tracking branch 'origin/rp2040-upload-improvements' into integration
2026-03-09 17:49:47 -10:00
J. Nick Koston
4b83de10e5
make linux error reporting more helpful
2026-03-09 17:45:03 -10:00
J. Nick Koston
399d695a39
Merge remote-tracking branch 'upstream/dev' into rp2040-upload-improvements
2026-03-09 17:45:00 -10:00
e82f0f4432
[cpptests] support testing platform components ( #13075 )
...
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-03-10 02:41:02 +00:00
00f809f5f0
[sen6x] fix memory leak issue ( #14623 )
...
Co-authored-by: J. Nick Koston <nick@koston.org >
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
Co-authored-by: J. Nick Koston <nick+github@koston.org >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-03-09 21:45:20 -04:00
c31ac662bd
[multiple] Fix crashes from malformed external input ( #14643 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
2026-03-09 20:39:58 -04:00
J. Nick Koston
d6ce5dda81
[ci] Skip YAML anchor keys in integration fixture component extraction ( #14670 )
2026-03-09 22:54:56 +00:00
J. Nick Koston
dadbdd0f7b
[ci] Make codeowner label update non-fatal for fork PRs ( #14668 )
2026-03-09 12:34:31 -10:00
d96be88ff5
[multiple] Fix reliability issues in 5 components ( #14655 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-03-09 18:32:57 -04:00
Jonathan Swoboda and Claude Opus 4.6
d2686b49be
[canbus] Fix multiple MCP component bugs ( #14461 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 18:15:33 -04:00
Keith Burzinski
468ce74c8e
[api][serial_proxy] Fix dangling pointer ( #14640 )
2026-03-09 17:04:47 -05:00
Jonathan Swoboda and Claude Opus 4.6
b3fc43c13c
[multiple] Fix wrong behavior in sensor calculations and drivers ( #14644 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 18:00:17 -04:00
Jonathan Swoboda and Claude Opus 4.6
308e8e78cd
[ble_scanner] Escape special characters in JSON output ( #14664 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 17:59:36 -04:00
Jonathan Swoboda and Claude Opus 4.6
470d9160a5
[demo] Fix alarm control panel auth bypass when code is omitted ( #14645 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 17:57:02 -04:00
Jonathan Swoboda and Claude Opus 4.6
9902447834
[multiple] Fix minor bugs in 8 components ( #14650 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 17:51:50 -04:00
Jonathan Swoboda and Claude Opus 4.6
7c1b9f0cb4
[multiple] Fix wrong behavior in 5 components ( #14647 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 17:22:06 -04:00
Jonathan Swoboda and Claude Opus 4.6
fecedeb018
[multiple] Fix crashes from malformed external input (batch 2) ( #14651 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 17:20:09 -04:00
Jonathan Swoboda and Claude Opus 4.6
9418f35cc3
[multiple] Remove unnecessary heap allocations in 4 components ( #14656 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 17:18:44 -04:00
Jonathan Swoboda and Claude Opus 4.6
08a0608a48
[wifi][captive_portal][heatpumpir][es8388] Fix wrong behavior in 4 components ( #14657 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 17:18:21 -04:00
Jonathan Swoboda and Claude Opus 4.6
b721cd48e5
[hmc5883l][mmc5603][honeywellabp2][xgzp68xx][max9611] Fix uninitialized members ( #14659 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 17:18:07 -04:00
Jonathan Swoboda and Claude Opus 4.6
75f55adbfa
[api][at581x][vl53l0x] Fix bounds check issues in 3 components ( #14660 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 17:17:31 -04:00
Jonathan Swoboda and Claude Opus 4.6
a379e5a635
[runtime_image][st7701s] Fix BMP decoder and LCD init bugs ( #14663 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 17:16:29 -04:00
dependabot[bot]
019db74582
Bump setuptools from 82.0.0 to 82.0.1 ( #14665 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-09 20:44:27 +00:00
Jonathan Swoboda and Claude Opus 4.6
31f4b4d00d
[multiple] Fix undefined behavior across components ( #14639 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 07:33:08 -04:00
J. Nick Koston
1b4de89d02
Merge remote-tracking branch 'upstream/proto-byte-buffer' into integration
2026-03-08 22:08:11 -10:00
J. Nick Koston
7ac8b790fc
Remove redundant rx_buf_ size checks before resize
...
APIBuffer::resize() is already just a capacity check + store,
making the outer size-equality guard redundant. Saves ~8 bytes
of code size across both frame helpers.
2026-03-08 22:07:23 -10:00
J. Nick Koston
6f89428333
Merge branch 'inline-varint-parse-fast-path' into integration
2026-03-08 21:06:43 -10:00
J. Nick Koston and Claude Opus 4.6
765bb3298e
[api] Use PROTO_VARINT_PARSE_FAILED constant in parse failure returns
...
Replace magic {0, 0} with {0, PROTO_VARINT_PARSE_FAILED} in parse_slow()
and parse_wide() for consistency with the named sentinel.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-08 21:06:22 -10:00