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
e9d25645cb
[api] Move auth check helpers from ProtoService to APIConnection
...
check_connection_setup_() and check_authenticated_() call virtual
methods (is_connection_setup, on_no_setup_connection). When defined
in ProtoService, the compiler cannot devirtualize these calls.
Moving them to APIConnection (final) enables devirtualization.
2026-03-20 21:10:41 -10:00
J. Nick Koston
9583a6a921
[api] Restore override on is_authenticated (ProtoService virtual)
2026-03-20 21:05:03 -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
d203a46ef8
[api] Enable HAVE_WEAK_SYMBOLS and HAVE_INLINE_ASM for libsodium ( #15038 )
2026-03-21 04:17:37 +00:00
J. Nick Koston
1920d8a887
[benchmark] Add noise encryption benchmarks ( #15037 )
2026-03-20 17:35:17 -10:00
J. Nick Koston
95dea59382
[core] Use SplitMix32 PRNG for random_uint32() ( #14984 )
2026-03-20 15:25:54 -10:00
J. Nick Koston
f3cddcee21
[core] Store parent pointers as members to enable inline Callback storage ( #14923 )
2026-03-20 15:25:40 -10:00
J. Nick Koston
21e384cafd
[esp32] Disable PicolibC Newlib compatibility shim on IDF 6.0+ ( #15008 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-03-20 15:10:18 -10:00
J. Nick Koston
32db055b98
[number] Clean up NumberCall::perform() increment/decrement logic ( #15000 )
2026-03-20 15:09:28 -10:00
J. Nick Koston
2c87260046
[core] Optimize Component::is_ready() with bitmask check ( #15005 )
2026-03-20 15:09:13 -10:00
J. Nick Koston
51ccad8461
[preferences] Shorten TAG strings across all platforms ( #15004 )
2026-03-20 15:09:01 -10:00
J. Nick Koston
7f500c4b6e
[modbus] Fix size_t format warning in clear_rx_buffer_ ( #15002 )
2026-03-20 15:08:46 -10:00
J. Nick Koston
564d155cb6
[wifi] Use LOG_STR_LITERAL for scan complete log on ESP8266 ( #15001 )
2026-03-20 15:08:33 -10:00
J. Nick Koston
edf5542559
[analyze-memory] Attribute extern C symbols to components via source file mapping ( #15006 )
2026-03-20 15:05:17 -10:00
J. Nick Koston
51335e8830
[ledc] Fix deprecated intr_type warning on ESP-IDF 6.0+ ( #15009 )
2026-03-20 15:01:30 -10:00
J. Nick Koston
391ffe34f8
[rp2040] Fix get_mac_address_raw to use ethernet MAC when WiFi unavailable ( #15033 )
2026-03-20 15:01:11 -10:00
J. Nick Koston
12ead0408a
[gpio] Use constexpr uint32_t timer ID for interlock timeout ( #15010 )
2026-03-20 15:00:56 -10:00
Daniel Kent
2d39cc2540
[spa06_i2c] Add SPA06-003 Temperature and Pressure Sensor - I2C support (Part 2 of 3) ( #14522 )
...
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
2026-03-21 00:38:04 +00:00
J. Nick Koston
a9a8f4cb3b
[time] Fix timezone_offset() and recalc_timestamp_local() always returning UTC ( #14996 )
2026-03-20 13:58:14 -10:00
J. Nick Koston
8fa2e75afa
[core] Add copy() method to StringRef for std::string compatibility ( #15028 )
2026-03-20 13:58:02 -10:00
J. Nick Koston
0b01f9fc42
[web_server] Increase httpd task stack size to prevent stack overflow ( #14997 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-03-20 13:57:51 -10:00
Jonathan Swoboda
ed8c062d9f
[esp32_touch] Fix initial state never published when sensor untouched ( #15032 )
2026-03-20 19:53:02 -04: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]
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]
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]
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
d59c006ff9
[uart] Fix UART0 default pin IOMUX loopback on ESP32 ( #14978 )
2026-03-19 20:56:51 -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
Kent Gibson
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
Clyde Stubbs
7df550f2a9
Ensure lvgl libs available when editing for host ( #14987 )
2026-03-20 01:52:52 +00:00
Clyde Stubbs
b02f0e3c5f
[sdl] Fix get_width()/height() when rotation used ( #14950 )
2026-03-20 12:39:10 +11:00
J. Nick Koston
151f71e033
[ci] Add libretiny and zephyr to memory impact platform filter ( #14985 )
2026-03-19 14:12:15 -10:00
J. Nick Koston
7ac001e994
[mhz19] Fix unused function warning for detection_range_to_log_string ( #14981 )
2026-03-19 14:12:03 -10:00
J. Nick Koston
de177d2445
[logger] Fix ESP8266 crash with VERY_VERBOSE log level ( #14980 )
2026-03-19 14:11:49 -10:00
J. Nick Koston
a9cb7143dc
[core] Inline calculate_looping_components_ into header ( #14944 )
2026-03-19 14:11:17 -10:00
J. Nick Koston
902258b56e
[preferences] Compile out loop() when flash_write_interval is non-zero ( #14943 )
2026-03-19 14:11:06 -10:00
dependabot[bot]
c2a96ea293
Bump ruff from 0.15.6 to 0.15.7 ( #14977 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-19 10:54:53 -10:00
J. Nick Koston
37a3c3ab3a
[core] Replace std::bind with placeholders to lambdas ( #14962 )
2026-03-19 08:50:38 -10:00
J. Nick Koston
a8ed781f3e
[time] Fix lookup of top-level IANA timezone keys like UTC and GMT ( #14952 )
2026-03-19 08:44:35 -10:00
J. Nick Koston
63f0d054b7
[core] Replace std::bind with lambda in DelayAction ( #14968 )
2026-03-19 08:44:16 -10:00
J. Nick Koston
e7dcf54a77
[http_request] Replace std::bind with lambdas in HttpRequestSendAction ( #14966 )
2026-03-19 08:44:02 -10:00
J. Nick Koston
1ba5504944
[mqtt] Replace std::bind with lambda in MQTTPublishJsonAction ( #14965 )
2026-03-19 08:43:47 -10:00
J. Nick Koston
5637116378
[mqtt] Replace std::bind with lambdas in CustomMQTTDevice ( #14964 )
2026-03-19 08:43:22 -10:00