J. Nick Koston
f059a1c2ea
[api] Remove USE_API guards from api_pb2_service (aligned with parent PR)
2026-03-22 21:18:04 -10:00
J. Nick Koston
a5bd718fc9
[api] Make ProtoDecodableMessage::decode() non-virtual
...
decode() is never called polymorphically - all call sites in
read_message_() use concrete types. The only indirect call site was
decode_to_message(), which also always knows the concrete type.
Convert decode_to_message() to a template so the concrete type is
preserved, allowing decode() to be non-virtual. The two classes that
override decode() (ExecuteServiceArgument, ExecuteServiceRequest) now
hide the base method, which works since all calls use concrete types.
This removes one vtable slot (4 bytes) from each decodable message
class vtable, saving ~148 bytes of flash.
2026-03-21 20:51:28 -10:00
J. Nick Koston
1d191d2461
[api] Fix review comments and add USE_API guards
...
- Update comments to reflect that ProtoService methods moved to
APIConnection, not APIServerConnectionBase
- Fix comment referring to read_message as "override"
- Wrap #include "api_connection.h" and read_message_ implementation
in #ifdef USE_API guards
2026-03-20 21:29:42 -10:00
J. Nick Koston
20d3e7c13a
[api] Remove virtual destructor and rename read_message to read_message_
...
The virtual destructor was unnecessary since APIConnection is only
stored as unique_ptr<APIConnection>, never via a base class pointer.
Removing it eliminates the vtable entirely.
Rename read_message to read_message_ per clang-tidy naming convention
for protected methods.
2026-03-20 21:21:09 -10:00
J. Nick Koston
2067053adb
[api] Remove ProtoService base class
...
ProtoService was an abstract interface with 6 pure virtual methods,
but APIConnection was the only concrete implementation. Move all
functionality directly into APIConnection and remove the unnecessary
virtual dispatch and vtable overhead.
2026-03-20 21:14:45 -10:00
J. Nick Koston
391ad05d45
[api] Devirtualize API command dispatch
...
Move read_message() from APIServerConnectionBase into APIConnection
and drop the virtual keyword from all 64 on_* handler declarations.
Since APIConnection is final and the only subclass, the virtual
dispatch was unnecessary. With read_message and the on_* handlers
in the same class, the compiler can devirtualize the calls and
inline small handlers directly into the switch cases.
2026-03-20 20:58:54 -10:00
J. Nick Koston
1920d8a887
[benchmark] Add noise encryption benchmarks ( #15037 )
2026-03-20 17:35:17 -10:00
J. Nick Koston
151f71e033
[ci] Add libretiny and zephyr to memory impact platform filter ( #14985 )
2026-03-19 14:12:15 -10:00
Javier Peletier
0a3393bed3
[core] Disable LeakSanitizer in C++ unit tests ( #14712 )
2026-03-18 23:13:36 -10:00
Javier Peletier
0c5f055d45
[core] cpp tests: Allow customizing code generation during tests ( #14681 )
...
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-03-18 00:16:01 +00:00
J. Nick Koston
1670f04a87
[core] Add CodSpeed C++ benchmarks for protobuf, main loop, and helpers ( #14878 )
2026-03-17 12:29:38 -10:00
J. Nick Koston
b3210de374
[core] Extract shared C++ build helpers from cpp_unit_test.py ( #14883 )
2026-03-17 08:53:36 -10:00
Diorcet Yann
73ca0ff106
[core] Small improvements ( #14884 )
2026-03-17 09:22:31 -04:00
Jonathan Swoboda
18a082de30
[ci] Support URL and version extras in generate-esp32-boards.py ( #14828 )
...
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2026-03-15 14:58:01 -04:00
J. Nick Koston
5e3c44d48f
[rp2040] Add CI check for boards.py freshness ( #14754 )
...
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-03-13 13:28:55 -10:00
J. Nick Koston
56f7b3e61b
[ci] Only run integration tests for changed components ( #14776 )
2026-03-13 13:20:35 -10:00
J. Nick Koston
05d285ba86
[api] Fix heap-buffer-overflow in protobuf message dump for StringRef ( #14721 )
2026-03-12 07:16:53 -10:00
Adam DeMuri
4df3d3554e
Enable the address and behavior sanitizers for C++ component unit tests ( #13490 )
2026-03-10 19:44:05 -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
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
Javier Peletier
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
J. Nick Koston
d6ce5dda81
[ci] Skip YAML anchor keys in integration fixture component extraction ( #14670 )
2026-03-09 22:54:56 +00:00
Clyde Stubbs
f3ca86b670
[ci-custom] Directions on constant hoisting ( #14637 )
2026-03-08 23:48:03 -04:00
J. Nick Koston
088a8a4338
[ci] Match symbols with changed signatures in memory impact analysis ( #14600 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-08 17:23:58 -10:00
tomaszduda23
e4b89a69d4
[nrf52, ota] ble and serial OTA based on mcumgr ( #11932 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: J. Nick Koston <nick@koston.org >
Co-authored-by: J. Nick Koston <nick+github@koston.org >
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2026-03-07 20:32:20 -10:00
J. Nick Koston
be6c3c52ac
[api] Add force proto field option to skip zero checks on hot path ( #14610 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-07 18:59:13 -10:00
J. Nick Koston
77f2c371b2
[api] Single-pass protobuf encode for BLE proxy advertisements ( #14575 )
2026-03-07 07:26:34 -10:00
J. Nick Koston
42dbb51022
[api] Devirtualize protobuf encode/calculate_size ( #14449 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-03-06 19:03:54 +00:00
Kevin Ahrendt
5c5ea8824e
[audio_file] New component for embedding files into firmware ( #14434 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-03-05 09:51:08 -10:00
Clyde Stubbs
f5c37bf486
[packet_transport] Minimise heap allocations ( #14482 )
2026-03-05 14:24:01 +11:00
J. Nick Koston
78602ccacb
[ci] Add lint check to prevent powf in core and base entity platforms ( #14126 )
2026-03-03 07:03:50 -10:00
J. Nick Koston
1f1b20f4fe
[core] Pack entity string properties into PROGMEM-indexed uint8_t fields ( #14171 )
2026-03-03 07:03:24 -10:00
J. Nick Koston
f68a3ed15d
[api] Remove virtual destructor from ProtoMessage ( #14393 )
2026-03-01 18:09:00 -10:00
J. Nick Koston
b7cb65ec49
[ci] Fix TypeError in ci-custom.py when POST lint checks fail ( #14378 )
2026-02-28 14:23:20 -10:00
J. Nick Koston
5c56b99742
[ci] Fix C++ unit tests missing time component dependency ( #14364 )
2026-02-27 13:19:11 -10:00
J. Nick Koston
1ccfcfc8d8
[time] Eliminate libc timezone bloat (~9.5KB flash ESP32, ~2% RAM on ESP8266) ( #13635 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-26 15:12:44 -10:00
J. Nick Koston
8bb577de64
[api] Split ProtoVarInt::parse into 32-bit and 64-bit phases ( #14039 )
2026-02-25 12:23:13 -06:00
Jonathan Swoboda
fb6c7d81d5
[core] Fix multiline log continuations without leading whitespace ( #14217 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 05:08:40 +00:00
J. Nick Koston
9571a979eb
[ci] Suggest StringRef instead of std::string_view ( #14183 )
2026-02-21 13:53:45 -06:00
J. Nick Koston
f77da803c9
[api] Write protobuf encode output to pre-sized buffer directly ( #14018 )
2026-02-20 21:39:18 -06:00
Jonathan Swoboda
9ce01fc369
[esp32] Add engineering_sample option for ESP32-P4 ( #14139 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-20 11:20:05 -05:00
J. Nick Koston
b5a8e1c94c
[ci] Update lint message to recommend constexpr over static const ( #14099 )
2026-02-19 09:06:46 -06:00
Guillermo Ruffino
7b251dcc31
[schema-gen] fix Windows: ensure UTF-8 encoding when reading component files ( #13952 )
2026-02-12 11:23:59 -05:00
J. Nick Koston
6c6da8a3cd
[api] Skip class generation for empty SOURCE_CLIENT protobuf messages ( #13880 )
2026-02-09 18:45:24 +00:00
J. Nick Koston
e4ea016d1e
[ci] Block new std::to_string() usage, suggest snprintf alternatives ( #13369 )
2026-02-09 12:26:19 -06:00
J. Nick Koston
c658d7b57f
[api] Merge auth check into base read_message, eliminate APIServerConnection ( #13873 )
2026-02-09 12:02:02 -06:00
J. Nick Koston
3cde3daceb
[api] Collapse APIServerConnection intermediary layer ( #13872 )
2026-02-09 08:45:33 -06:00
J. Nick Koston
140ec0639c
[api] Elide empty message construction in protobuf dispatch ( #13871 )
2026-02-09 03:24:45 -06:00
J. Nick Koston
55ef8393af
[api] Remove is_single parameter and fix batch buffer preparation ( #13773 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-02-05 15:19:03 +01:00
J. Nick Koston
f4e410f47f
[ci] Block new scanf() usage to prevent ~9.8KB flash bloat ( #13657 )
2026-02-06 02:56:43 +13:00