J. Nick Koston
4ce24389b7
[api] Add max_data_length = 47 for device_class fields
2026-04-03 14:06:00 -10:00
J. Nick Koston
fd68e9a827
[api] Rename encode_raw_short_string to encode_short_string
2026-04-03 14:01:14 -10:00
J. Nick Koston
2d13def0ee
[api] Add encode_raw_short_string for forced string fields with max_data_length
...
Replace 3-call sequence (write_raw_byte + write_raw_byte + encode_raw)
with single inlined encode_raw_short_string call for forced string
fields with max_data_length < 128. The compiler can hoist the pos
pointer across all three writes in one function boundary.
2026-04-03 14:00:01 -10:00
J. Nick Koston
675400cc31
[api] Use .empty() for string zero check in single-byte varint size
2026-04-03 13:51:25 -10:00
J. Nick Koston
0124087e73
[api] Add max_data_length = 63 for icon fields
2026-04-03 13:40:27 -10:00
J. Nick Koston
5dbe2a7741
[api] Add comment tying max_data_length = 120 to NAME_MAX_LENGTH
2026-04-03 13:36:32 -10:00
J. Nick Koston
e174e579ed
[api] Add max_data_length proto option and optimize entity name/object_id
...
Add max_data_length field option for string/bytes fields. When
max_data_length < 128, the codegen emits constant-size length varint
calculations and direct byte writes.
Annotate all entity name and object_id fields with
(max_data_length) = 120 and (force) = true across all 25
ListEntities*Response messages (50 fields).
Generated code changes:
- calculate_size: `calc_length(1, size)` -> `2 + size` (constant)
- encode: `encode_string(N, ref)` -> `write_raw_byte(tag) + write_raw_byte(len) + encode_raw(data, len)`
Eliminates 2 function calls per field per entity list response,
removes zero-check branches, and removes varint size computation.
2026-04-03 13:33:51 -10:00
J. Nick Koston
9ece286a26
[api] Simplify _get_single_byte_varint_size
2026-04-03 12:32:32 -10:00
J. Nick Koston
fa80caf0ff
[api] Fall back to RAW_ENCODE_MAP when SMALL_MAP has no entry
2026-04-03 12:31:44 -10:00
J. Nick Koston
f3238a857e
[api] Select encode map before lookup
2026-04-03 12:31:01 -10:00
J. Nick Koston
02b424388e
[api] Use RAW_ENCODE_SMALL_MAP for max_value encode optimization
...
Replace inline encode_func check with a lookup table, matching the
existing RAW_ENCODE_MAP pattern.
2026-04-03 12:28:51 -10:00
J. Nick Koston
363d811cc1
[api] Use _get_simple_size_calculation for FixedArrayBytesType fallback
...
Replace inline calc_length/calc_length_force formatting with the
existing helper method.
2026-04-03 12:27:55 -10:00
J. Nick Koston
1e68a90ac9
[api] Extract _get_single_byte_varint_size helper in codegen
...
Refactor the constant-size varint pattern into a reusable helper
method on the TypeInfo base class, used by both UInt32Type (max_value)
and FixedArrayBytesType (fixed_array_size < 128).
2026-04-03 12:26:51 -10:00
J. Nick Koston
e35aa729f3
[api] Add max_value proto option for constant-size varint codegen
...
Add a max_value field option to api_options.proto that tells the code
generator the maximum value a field can have. When max_value < 128,
the generated calculate_size() uses constant arithmetic instead of
calling varint size functions, and encode() uses direct byte writes
instead of varint encoding.
Also optimize FixedArrayBytesType: when fixed_array_size < 128, the
length varint is always 1 byte, so calculate_size() uses constant
arithmetic and encode() uses write_raw_byte for the length.
Applied to BluetoothLERawAdvertisement.address_type (max_value=4).
Measured on ESP32 (upstairsdesk89proxy):
- BluetoothLERawAdvertisement::calculate_size: 88 → 71 bytes (-19%)
- BluetoothLERawAdvertisement::encode: 199 → 179 bytes (-10%)
- Total BLE proxy hot path: 1807 → 1770 bytes (-37 bytes)
2026-04-03 12:21:37 -10:00
dependabot[bot] and dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
f8f65c1a7b
Bump click from 8.3.1 to 8.3.2 ( #15421 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-03 09:42:37 -10:00
J. Nick Koston
d90e2a6a9a
[core] Use __builtin_ctz for FiniteSetMask bit scanning ( #15400 )
2026-04-03 08:28:54 -10:00
J. Nick Koston
4969fd6e99
[light] Use reciprocal multiply in normalize_color ( #15401 )
2026-04-03 08:28:41 -10:00
J. Nick Koston
95683b7416
[light] Pass LightTraits to avoid redundant virtual get_traits() calls ( #15403 )
2026-04-03 08:28:29 -10:00
J. Nick Koston
38f4dc3217
[uptime] Pass known length to publish_state to avoid redundant strlen ( #15410 )
2026-04-03 08:28:07 -10:00
J. Nick Koston
f2a0d9943d
[benchmarks] Add host platform benchmarks for text_sensor and button ( #15407 )
2026-04-03 08:27:55 -10:00
J. Nick Koston
ea0227a206
[benchmarks] Add host platform benchmarks for number, select, and switch ( #15405 )
2026-04-03 08:27:44 -10:00
J. Nick Koston
5a23669747
[scheduler] Fix unrealistic scheduler benchmarks missing periodic drain ( #15396 )
2026-04-03 08:27:29 -10:00
J. Nick Koston
2a5933e4f7
[host] Add graceful shutdown on SIGINT/SIGTERM ( #15387 )
2026-04-03 08:27:13 -10:00
Jonathan Swoboda
6fecd72049
[ezo_pmp] Fix change_i2c_address action using wrong template type ( #15393 )
2026-04-03 08:35:16 -04:00
Clyde Stubbs
8360502a94
[ci] Fix deprecated-component matcher ( #15417 )
2026-04-03 08:01:04 -04:00
Jonathan Swoboda
5548a32771
[ili9xxx] Fix SPI MOSI pin validation never executing ( #15399 )
2026-04-03 21:15:51 +11:00
Clyde Stubbs
6f05e3d204
[ci] Run ci-custom.py as a pre-commit check ( #15411 )
2026-04-03 12:54:44 +11:00
Jonathan Swoboda and clydebarrow
bcd8ddeabe
[lvgl] Fix ext_click_area property application ( #15394 )
...
Co-authored-by: clydebarrow <2366188+clydebarrow@users.noreply.github.com >
2026-04-03 12:44:54 +11:00
Clyde Stubbs
af662da90d
[mipi_spi] Rotation and buffer size changes ( #15047 )
2026-04-03 12:28:45 +11:00
Keith Burzinski
710186998b
[ota] Use modernized namespace syntax ( #15398 )
2026-04-02 19:12:05 -04:00
J. Nick Koston
be3e0c27bf
[core] Inline fast path for enable_loop ( #15392 )
2026-04-02 21:28:12 +00:00
Jonathan Swoboda
4d0d3cc271
[sen5x] Remove dead voc_baseline config option ( #15391 )
2026-04-02 10:53:53 -10:00
Jonathan Swoboda
4134763f34
[at581x][canbus] Fix walrus operator skipping falsy config values ( #15390 )
2026-04-02 20:32:10 +00:00
1e72f0ee5a
[nextion] Gate waveform code behind USE_NEXTION_WAVEFORM, use StaticRingBuffer ( #15273 )
...
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+github@koston.org >
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-04-02 20:17:20 +00:00
J. Nick Koston
63710a4cb7
[spi] Add spi0 and spi1 to reserved IDs for RP2040 compatibility ( #15388 )
2026-04-02 16:10:16 -04:00
c82166e5f3
[dsmr] Allow setting MBUS id for thermal sensors in DSMR component ( #7519 )
...
Co-authored-by: J. Nick Koston <nick@koston.org >
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
2026-04-02 10:06:49 -10:00
Jonathan Swoboda
90624e6eca
[deep_sleep] Fix wakeup_pin_mode rejecting lowercase on ESP32/BK72XX ( #15384 )
2026-04-02 09:34:27 -10:00
Jonathan Swoboda
6b89998b60
[template] Fix cover position_action overridden by has_position default ( #15379 )
2026-04-02 09:29:33 -10:00
Jonathan Swoboda
dde472b0cf
[pipsolar] Fix set_level action passing string to cv.use_id ( #15380 )
2026-04-02 09:28:44 -10:00
f7222a0e6c
Bump ruff from 0.15.8 to 0.15.9 ( #15385 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
2026-04-02 19:28:30 +00:00
Jonathan Swoboda
0262d20bbe
[mlx90393] Remove call to non-existent set_drdy_pin method ( #15381 )
2026-04-02 09:26:47 -10:00
Jonathan Swoboda
37b33f62de
[htu21d] Fix set_heater action reading wrong config key ( #15378 )
2026-04-02 09:25:54 -10:00
Jonathan Swoboda
2f405fd96f
[espnow] Fix enable_on_boot config option not passed to C++ ( #15377 )
2026-04-02 09:25:15 -10:00
dependabot[bot] and dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
67ee727e38
Bump docker/login-action from 4.0.0 to 4.1.0 in the docker-actions group ( #15386 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-02 09:24:26 -10:00
Jonathan Swoboda
12a0f5959f
[bl0940] Fix reference_voltage config ignored in non-legacy mode ( #15375 )
2026-04-02 09:23:04 -10:00
Jonathan Swoboda
5dcae1a133
[climate] Fix MQTT target_temperature_low_state_topic calling wrong setter ( #15376 )
2026-04-02 09:22:07 -10:00
Jonathan Swoboda
0343121e9b
[ble_client] Fix descriptor_uuid ignored for text sensors ( #15374 )
2026-04-02 09:21:18 -10:00
J. Nick Koston
da09e1e1ce
[time] Use O(1) closed-form leap year math for epoch-to-year conversion ( #15368 )
2026-04-02 09:19:47 -10:00
Jonathan Swoboda
e7e590b36f
[thermostat] Fix on_boot_restore_from DEFAULT_PRESET validation bypass ( #15383 )
2026-04-02 19:08:43 +00:00
Kevin Ahrendt
da8d9d9c2d
[audio] use microFLAC library for decoding ( #15372 )
2026-04-02 11:37:14 -04:00