J. Nick Koston
709a1e1eb6
[api] Mark the raw encode helpers nodiscard too and drop a duplicate cursor test
...
The generated file scan already covers every emitted call, so the parametrized copy of
the same assertion goes.
2026-09-07 13:48:53 +02:00
J. Nick Koston
822b701792
[api] Mark the cursor returning encode helpers nodiscard
...
A call that drops the returned cursor would silently truncate the message, so the
compiler now warns on it and a unit test scans the generated file for the same mistake.
Also corrects the outlining comment for ESP8266, where the inline write is a few byte
stores rather than one, and the RAW_ENCODE_MAP annotation.
2026-09-07 12:37:48 +02:00
J. Nick Koston
adbbda4072
[api] Emit every encode call through one generator helper
...
_encode_call() owns the cursor assignment and the _force suffix, so
the convention lives in one place instead of at every emission site;
the fixed32 fast path is an arm of the generic encode_content keyed by
a per type value template. write_fixed32_le uses convert_little_endian
instead of its own byte order switch. The integration test shares a
StateWaiter from state_utils and leaves the disconnect to the fixture.
2026-09-07 11:09:07 +02:00
J. Nick Koston
490aca17e6
[api] Share the fixed32 emission between float and fixed32 fields
...
One helper next to the other precomputed tag paths decides how a
single byte tag fixed32 field is written; the float and fixed32 types
only differ in the value expression. Drop the non forced std::string
encode_string overload, which the generator never emits, and build the
generator tests from one block of field type constants.
2026-09-07 10:33:21 +02:00
J. Nick Koston
3b14f4dfc8
[api] Pass the encode cursor by value through the protobuf helpers
...
The ProtoEncode helpers took the write cursor by reference and a
bool force flag. At -Os the compiler outlines most of them, so every
call site had to keep pos in a stack slot and pass its address, plus
a constant for the flag. The helpers now take the cursor by value and
return the advanced cursor, so consecutive calls chain through the
return register; forced fields call a _force overload instead of
passing a flag.
The fixed32 writers use __builtin_memcpy, which stays a builtin under
ESP-IDF's -fno-builtin-memcpy, and are outlined on embedded targets so
each fixed32 or float field is a short call instead of an inline
memcpy call. Non-forced float and fixed32 fields with a single-byte
tag share the same writer behind a zero check.
Generated encode bodies shrink by 18 percent on an ESP32 IDF proxy
build (2360 to 1932 bytes for 27 messages); entity messages gain the
most, for example ListEntitiesSensorResponse::encode 190 to 134 bytes
and SensorStateResponse::encode 78 to 49 bytes.
2026-09-07 09:21:54 +02:00
Jesse Hills
d58b37faa1
[esp32_hosted] Add ESP-NOW-over-hosted shim for the ESP32-P4 ( #17712 )
2026-09-07 10:29:20 +12:00
J. Nick Koston
8966567be0
[core] Show the other downloader's progress while a prefetch job waits on its lock ( #18983 )
2026-09-07 10:28:31 +12:00
J. Nick Koston
688af60cbf
[noise] Bump noise-c to 0.1.24 and libsodium to 1.10021.6 ( #18989 )
2026-09-07 10:12:52 +12:00
J. Nick Koston
833dd0e812
[ota] Offer encryption with the api key so enabling it works over OTA ( #18979 )
2026-09-06 23:59:40 +02:00
J. Nick Koston and pre-commit-ci-lite[bot]
f65ab5629e
[esp8266] Drop Arduino framework versions before 3.0.0 ( #18917 ) to
...
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2026-09-03 15:16:36 -04:00
J. Nick Koston and Jesse Hills
3f68930001
[ota] Add Noise encryption to the OTA platform ( #18489 )
...
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com >
2026-09-02 08:11:57 +12:00
J. Nick Koston
d6758377d1
[core] Clone git libraries in parallel in the library prefetch ( #18836 )
2026-09-01 14:25:58 +12:00
J. Nick Koston
0f982f03b2
[core] Prefetch tool-scons by PlatformIO's core spec ( #18831 )
2026-09-01 11:55:53 +12:00
J. Nick Koston
ad69718ecc
[core] Configure the platform again after prefetching its packages ( #18830 )
2026-08-31 13:01:13 -05:00
J. Nick Koston
2f1d3f8299
[core] Deduplicate the host program path lookup ( #18897 )
2026-08-30 17:34:16 -05:00
J. Nick Koston
6957576867
[esp32] Skip full rebuild on sdkconfig change with the esp-idf toolchain ( #18876 )
2026-08-29 03:09:12 +00:00
J. Nick Koston
3fea080ed8
[core] Hash downloaded file paths at the default data dir location ( #18824 )
2026-08-28 21:08:15 -05:00
Clyde Stubbs
c9848d8fa6
[light] Fix gamma table dead zone collapsing to 0 ( #18845 )
2026-08-29 08:37:20 +10:00
J. Nick Koston
0dce7f4845
[esp8266] Add the native library backend ( #18558 )
2026-08-28 13:50:52 -05:00
J. Nick Koston
4333870590
[core] Use uv for the ESP-IDF Python environment when available ( #18838 )
2026-08-28 13:43:48 -05:00
J. Nick Koston
cc41fd0beb
[core] Make rmtree tolerate missing paths and concurrent directory changes ( #18846 )
2026-08-28 13:42:42 -05:00
J. Nick Koston
b99e7f5ae2
[core] Install prefetched PlatformIO packages with parallel extraction ( #18775 )
2026-08-27 03:02:02 +00:00
J. Nick Koston
2104096f02
[core] Prefetch PlatformIO packages in parallel ( #18769 )
2026-08-27 14:42:30 +12:00
J. Nick Koston
9baff76520
[api] Treat homeassistant.event variables as lambdas ( #18759 )
2026-08-26 16:29:14 +12:00
J. Nick Koston
9e4c52989c
[esp8266] Add the native framework and toolchain installer ( #18557 )
2026-08-25 20:24:47 -05:00
J. Nick Koston
7ff56c62f9
[core] Add shared registry, ninja, and cache infrastructure for native toolchains ( #18570 )
2026-08-26 13:23:16 +12:00
J. Nick Koston
370e8fffed
[core] Add the arduino toolchain seam and validate --toolchain on every platform ( #18556 )
2026-08-26 11:16:02 +12:00
c272c4c1a6
[lvgl] Add table widget ( #18422 )
...
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com >
Co-authored-by: J. Nick Koston <nick@koston.org >
Co-authored-by: J. Nick Koston <nick+github@koston.org >
2026-08-26 08:44:42 +10:00
J. Nick Koston
150f75d8f6
[esp8266] Add linker-script surgery and board build metadata for the native toolchain ( #18555 )
2026-08-26 10:29:57 +12:00
J. Nick Koston
145373ed13
[api] Widen message type storage to uint16_t ( #18526 )
2026-08-25 18:04:41 +00:00
J. Nick Koston
688e833413
[core] Consolidate HTTP download paths ( #18742 )
2026-08-25 12:38:20 -05:00
J. Nick Koston and pre-commit-ci-lite[bot]
19b434f99c
[espidf] Cache the discovered component list to skip the discovery configure ( #18752 )
...
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2026-08-25 12:36:57 -05:00
J. Nick Koston
b3d9aa2d84
[core] Log which source change triggered a rebuild ( #18552 )
2026-08-24 18:46:43 -05:00
J. Nick Koston
19866c60ee
[core] Parallelize registry and tool downloads ( #18662 )
2026-08-24 15:59:00 -05:00
J. Nick Koston
3f0ec0b157
[espidf] Always reconfigure after component discovery ( #18730 )
2026-08-25 08:56:59 +12:00
Keith Burzinski and J. Nick Koston
b97c877992
[api] Acknowledge proxy subscribe and configuration requests ( #18312 )
...
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-08-24 20:27:24 +00:00
J. Nick Koston
5f6a910e2d
[core] Harden the shared library converter ( #18685 )
2026-08-23 22:24:12 -05:00
J. Nick Koston
9974ad97fa
[core] Extract the shared idedata and size-summary helpers into build_helpers ( #18661 )
2026-08-23 21:59:19 -05:00
J. Nick Koston
4510f10491
[core] Treat a malformed build_info.json as stale instead of crashing ( #18669 )
2026-08-24 11:13:57 +12:00
J. Nick Koston
0ecc7045fa
[core] Parse the common on/off spellings in boolean env vars ( #18667 )
2026-08-24 11:13:34 +12:00
J. Nick Koston
e6c49e2bd9
[core] Retry transient network errors when downloading external files ( #18538 )
2026-08-24 08:25:39 +12:00
J. Nick Koston
4efd308345
[tests] Fix flaky pty log probe test on macOS ( #18681 )
2026-08-23 11:26:55 -05:00
J. Nick Koston
cf31c08a5c
[core] Skip copying entity automation and filter sources when unused ( #18602 )
2026-08-23 09:05:04 -05:00
J. Nick Koston
33484108a9
[core] Replace a damaged existing file in write_file_if_changed ( #18665 )
2026-08-23 09:04:24 -05:00
J. Nick Koston
74bdf275d2
[core] Dump the main.cpp config comment with sorted keys ( #18653 )
2026-08-22 20:58:28 -05:00
J. Nick Koston
c062d0c717
[ota] Log prepare, upload, and total OTA timing in espota2 ( #18582 )
2026-08-22 20:57:13 -05:00
David van 't Wout
2ab09e1a77
[core] Add add_cmake_arg ( #18498 )
2026-08-20 12:30:33 -05:00
J. Nick Koston
a3ea77c2f1
[core] Keep templated !include filenames as strings so Windows path normalization cannot corrupt them ( #18549 )
2026-08-20 11:32:15 -05:00
J. Nick Koston
a8e721abeb
[esp32] Apply IDF component exclusions to native toolchain builds ( #18531 )
2026-08-20 10:03:49 -04:00
J. Nick Koston
132f494195
[nrf52] Rebuild the Python env when its interpreter symlink dangles ( #18540 )
2026-08-20 07:59:57 -04:00