J. Nick Koston
c1f8bdedc2
Merge remote-tracking branch 'upstream/dev' into api-proto-max-length
...
# Conflicts:
# esphome/components/api/api_pb2.cpp
2026-04-06 14:48:45 -10:00
J. Nick Koston
d15fa84f4f
[api] Auto-derive max_value for enum fields in protobuf codegen ( #15469 )
2026-04-06 14:39:55 -10:00
Jonathan Swoboda
4fa3e48d33
[remote_base] Fix misc protocol schema and codegen bugs ( #15497 )
2026-04-07 00:34:07 +00:00
Jonathan Swoboda
094e0440c6
[config] Fix unfilled placeholder in dimensions() error message ( #15498 )
2026-04-06 14:30:36 -10:00
J. Nick Koston
b155c13117
[api] Use integer comparison for float zero checks in protobuf encoding ( #15490 )
2026-04-07 12:25:53 +12:00
Jonathan Swoboda
0816579fa9
[prometheus] Fix relabel validation not checking for required keys ( #15496 )
2026-04-06 14:20:46 -10:00
Jonathan Swoboda
c6e683cc33
[pmsx003] Connect model-specific sensor validation to schema ( #15495 )
2026-04-06 14:19:53 -10:00
Jonathan Swoboda
14bcd9db59
[neopixelbus] Fix SPI pin validation accepting one wrong pin on ESP8266 ( #15494 )
2026-04-06 14:18:59 -10:00
Jonathan Swoboda
d9da91efbe
[bl0940] Fix restore_value reading from wrong config dict ( #15492 )
2026-04-06 14:14:17 -10:00
J. Nick Koston
7293683297
Merge branch 'integration' of https://github.com/esphome/esphome into integration
2026-04-06 14:09:54 -10:00
J. Nick Koston
6523ed05b8
Merge branch 'float-to-raw-optimization-v2' into integration
...
# Conflicts:
# esphome/components/api/proto.h
2026-04-06 14:08:50 -10:00
J. Nick Koston
136eabebb4
Merge branch 'api-enum-auto-max-value' into integration
...
# Conflicts:
# esphome/components/api/api_pb2.cpp
# script/api_protobuf/api_protobuf.py
2026-04-06 14:07:38 -10:00
Jesse Hills
017af24c22
Merge branch 'release' into dev
2026-04-07 12:06:30 +12:00
Jesse Hills
496c395f1a
Merge pull request #15489 from esphome/bump-2026.3.3
...
2026.3.3
2026.3.3
2026-04-07 12:05:46 +12:00
J. Nick Koston
13e35db055
Restore IRAM_ATTR on wake_loop functions
2026-04-06 14:03:19 -10:00
J. Nick Koston
7c671cd0e6
Merge branch 'api-proto-max-length' into integration
...
# Conflicts:
# esphome/components/api/api_connection.cpp
# esphome/components/api/api_pb2.cpp
# esphome/components/api/proto.h
# esphome/core/application.h
# esphome/core/component.cpp
# script/api_protobuf/api_protobuf.py
2026-04-06 14:02:14 -10:00
J. Nick Koston
2eb3e25278
Add debug assert to encode_short_string_force for size < 128
2026-04-06 13:58:10 -10:00
Jonathan Swoboda
29ca7bc8f9
[espnow] Fix string data generating invalid C++ char literals ( #15493 )
2026-04-06 19:57:16 -04:00
J. Nick Koston
be476c3a79
Merge remote-tracking branch 'upstream/api/peel-first-write-iteration' into integration
2026-04-06 13:49:16 -10:00
J. Nick Koston
17e5320836
do not force inline
2026-04-06 13:40:50 -10:00
J. Nick Koston
87622c9a74
[api] Add max_data_length proto option and optimize entity string encoding
...
Add a max_data_length field option to api_options.proto for string/bytes
fields. When max_data_length < 128 and force = true, the code generator
uses encode_short_string_force() — a single call that writes the tag
byte, 1-byte length varint, and raw string data with no branching. Size
calculation simplifies from calc_length(1, size) to 2 + size.
Annotate entity fields across all 25 ListEntities*Response messages:
- name and object_id: max_data_length = 120, force = true (50 fields)
- icon: max_data_length = 63 (25 fields)
The 120 and 63 values match NAME_MAX_LENGTH and ICON_MAX_LENGTH in
esphome/core/config.py, validated at config time.
2026-04-06 13:28:50 -10:00
J. Nick Koston
37258de6b1
[api] Auto-derive max_value for enum fields in protobuf codegen
...
Scan all enum definitions in api.proto at codegen time and automatically
populate max_value for enum-typed fields. This eliminates the need for
manual (max_value) annotations on every enum field.
When max_value < 128, the generated calculate_size uses constant-size
arithmetic instead of a function call:
- `calc_uint32(1, static_cast<uint32_t>(field))` → `field ? 2 : 0`
For repeated enum fields with constant element size, the per-element
loop is replaced with a multiply: `size += count * bytes_per_element`.
2026-04-06 13:19:37 -10:00
Jesse Hills
62d0c25a2b
[CI] Add branches-ignore for release and beta in PR title check ( #15491 )
2026-04-07 11:14:59 +12:00
J. Nick Koston
a1cc7ea861
[api] Use integer comparison for float zero checks in protobuf encoding
...
encode_float() already used union type-punning to convert a float to
its raw uint32_t bits for encoding. However, its zero check still used
a floating-point comparison (value == 0.0f), and calc_float() used
value != 0.0f with no type-punning at all.
Extract the existing union type-punning into a shared float_to_raw()
helper and use it in both places, so the zero check is a simple integer
comparison (raw == 0) in both encode_float() and calc_float(). This
ensures size calculation always matches encoding.
On platforms without hardware FPU (ESP8266, some LibreTiny chips),
value != 0.0f compiles to a software float library call (__nesf2 or
similar). The new code does a single integer comparison instead.
2026-04-06 13:01:19 -10:00
Jesse Hills
1c67e4ce4c
Bump version to 2026.3.3
2026-04-07 10:50:41 +12:00
Clyde Stubbs
162c8810db
[esp32] Clean build when sdkconfig options change ( #15439 )
2026-04-07 10:50:41 +12:00
Clyde Stubbs
9036c29c8a
[online_image] Clear LVGL dsc when image size changes. ( #15360 )
2026-04-07 10:50:41 +12:00
Edward Firmo
9bd936112d
[nextion] Fix queue age check using inconsistent time sources ( #15317 )
2026-04-07 10:50:41 +12:00
Clyde Stubbs
c98bb9060f
[lvgl] Fix setting triggers on display ( #15364 )
2026-04-07 10:48:14 +12:00
Clyde Stubbs
ce0d360790
[lvgl] Implement rotation directly ( #14955 )
2026-04-07 10:46:42 +12:00
J. Nick Koston and pre-commit-ci-lite[bot]
2b5ee69eb2
[api] Speed up protobuf encode 17-20% with register-optimized write path ( #15290 )
...
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2026-04-06 12:42:18 -10:00
Jonathan Swoboda and J. Nick Koston
5a14d6a4ad
[multiple] Add missing device_class to sensor schemas (batch 2) ( #15487 )
...
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-04-06 22:38:47 +00:00
Jonathan Swoboda
6f62b2f18c
[thermostat] Remove non-functional cv.templatable from preset fields ( #15481 )
2026-04-06 12:20:38 -10:00
Jonathan Swoboda
c78fb964a2
[multiple] Add missing state_class to remaining sensor schemas ( #15486 )
2026-04-06 12:15:42 -10:00
Jonathan Swoboda
8650c5b013
[multiple] Add missing state_class to sensor schemas ( #15478 )
2026-04-06 17:19:20 -04:00
Jonathan Swoboda
5051891813
[esp32] Fix ESP32-C6 pin validator rejecting GPIO 24-30 with wrong error ( #15477 )
2026-04-06 17:02:28 -04:00
Jonathan Swoboda
95e2b0a8b0
[multiple] Add missing device_class to sensor schemas ( #15479 )
2026-04-06 17:02:20 -04:00
J. Nick Koston and Jonathan Swoboda
ab45591507
[core] Move wake_loop out of socket component into core ( #15446 )
...
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
2026-04-06 21:01:03 +00:00
Jonathan Swoboda
62b4b250c7
[opentherm] Fix step=0 default overriding entity step ( #15484 )
2026-04-07 08:35:50 +12:00
Jonathan Swoboda
a7963bee98
[gcja5][cd74hc4067][openthread_info] Fix PollingComponent mismatches ( #15476 )
2026-04-06 16:31:40 -04:00
Jonathan Swoboda
e86978f0da
[rpi_dpi_rgb][st7701s][ags10] Fix Optional config keys accessed unconditionally ( #15474 )
2026-04-06 16:30:46 -04:00
Jonathan Swoboda
6044f41db5
[multiple] Add missing cv.COMPONENT_SCHEMA to CONFIG_SCHEMA ( #15475 )
2026-04-06 16:30:15 -04:00
Jonathan Swoboda
a64f09a43f
[sprinkler][dfplayer][max6956][rf_bridge] Fix cg.templatable type mismatches ( #15480 )
2026-04-06 16:29:59 -04:00
Jonathan Swoboda
dbd4e77d61
[pylontech] Remove unnecessary Component inheritance from sensor/text_sensor ( #15482 )
2026-04-06 16:23:10 -04:00
Boris Krivonog
02185fb4f4
[mitsubishi_cn105] Add climate component for Mitsubishi A/C units with CN105 connector (Part 5) ( #15483 )
2026-04-06 09:59:18 -10:00
J. Nick Koston
f0e3b992cf
Use indexed writes in write_short_string
...
Single pointer advance instead of repeated post-increments.
2026-04-06 08:51:42 -10:00
J. Nick Koston
b8981aae12
Revert write_short_string for non-forced strings
...
Inlining the empty check + write_short_string for every non-forced
string field doubles code size vs a single encode_string call.
2026-04-06 08:49:37 -10:00
J. Nick Koston
4099064207
Use write_short_string for non-forced strings with max_data_length < 128
...
Add empty check wrapper for non-forced short strings instead of falling
through to the general encode_string path.
2026-04-06 08:43:24 -10:00
J. Nick Koston and Claude Opus 4.6
33285dfe27
Fix merge issues: write_short_string to static ProtoEncode, add debug arg
...
- Convert ProtoEncode::write_short_string to static method with pos param
- Fix codegen to emit ProtoEncode::write_short_string(pos, ...)
- Add PROTO_ENCODE_DEBUG_INIT to encode_fn call in encode_to_buffer
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-06 08:33:13 -10:00
J. Nick Koston and Claude Opus 4.6
7122fb6f88
Merge remote-tracking branch 'upstream/api-sint32-short-varint' into integration
...
Fix double static_cast in enum encode precomputed tag path by
passing raw field ref instead of pre-cast value_expr.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-06 08:31:05 -10:00