J. Nick Koston
c283e11ffa
Fix clang-tidy: add braces around if statements, extract ensure helpers
2026-03-26 13:32:32 -10:00
J. Nick Koston
805bc4c9a8
Use leak-on-purpose raw pointers for Climate-owned vectors
...
Climate entities live for the entire program lifetime, so the custom
mode vectors never need to be freed. Use raw pointers (null by default,
allocated on first set_supported_custom_*() call) instead of inline
std::vector members.
This saves 48 bytes of RAM per Climate instance (two empty vectors)
for components that don't use custom modes (bang_bang, pid, etc.),
and avoids any copy overhead in get_traits().
2026-03-26 13:22:46 -10:00
J. Nick Koston
ba57555b6f
Make compat owned vectors skip-on-copy to eliminate copy overhead
...
Wrap the deprecated owned vectors in a struct with a no-op copy
constructor. This way ClimateTraits copies (which happen on every
get_traits() call) don't pay the 48-byte cost of copying two empty
vectors. The compat data only matters for the original traits object
where the deprecated setter was called.
2026-03-26 13:13:16 -10:00
J. Nick Koston
b2290891a3
Revert benchmark changes — keep identical to base for apples-to-apples comparison
2026-03-26 13:11:24 -10:00
J. Nick Koston
fe395ac41d
Use plain vector compat members, add custom modes benchmark
...
The owned vectors add 48 bytes to ClimateTraits copies — this is the
cost of backward compat and will be removed in 2026.11.0.
Add ClimatePublish_WithCustomModes benchmark to show the improvement
for climate devices that use custom fan modes and presets (the case
that previously heap-allocated on every publish).
2026-03-26 13:10:47 -10:00
J. Nick Koston
3f1dfd0f3f
Fix deprecation dates: 2026.5.0 deprecated, 2026.11.0 removed
2026-03-26 13:05:33 -10:00
J. Nick Koston
a723ca31ed
Add deprecated compat layer, restore const ref return type
...
Keep the old set_supported_custom_fan_modes() and
set_supported_custom_presets() overloads on ClimateTraits as deprecated
compatibility shims. They self-own the data so external components
continue to compile without changes (heap alloc but functional).
Restores get_supported_custom_fan_modes() / get_supported_custom_presets()
to return const vector & (not pointer) for full backward compat.
2026-03-26 13:02:22 -10:00
J. Nick Koston
236d1ea88f
Fix: use inline function for empty vector to avoid EMPTY macro clash and static local overhead
2026-03-26 12:56:30 -10:00
J. Nick Koston
013d832475
Fix clang-tidy: rename static constant empty to EMPTY
2026-03-26 12:42:15 -10:00
J. Nick Koston
7ae1f2f6d7
[climate] Store custom mode vectors on Climate entity, not ClimateTraits
...
ClimateTraits contained two std::vector<const char *> members for custom
fan modes and custom presets. Every get_traits() / traits() call
reconstructed these vectors, causing heap allocations on every
publish_state() and control()/perform() call — the hottest paths in the
climate component.
Move the vector storage to the Climate base class and have ClimateTraits
hold const pointers instead. get_traits() wires the pointers
automatically. This eliminates all heap allocation from ClimateTraits
copies, making the struct trivially copyable (floats + bitmasks +
2 pointers).
Additionally, set_custom_fan_mode_() and set_custom_preset_() no longer
need to call get_traits() just to search for a mode — they search the
Climate-owned vectors directly, removing another traits rebuild from the
control/perform path.
2026-03-26 12:38:25 -10:00
dependabot[bot] and J. Nick Koston
6aafb521c1
Bump ruff from 0.15.7 to 0.15.8 ( #15192 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
2026-03-26 19:59:21 +00:00
Edward Firmo
81f0aa1168
[nextion] Replace or/and operators and missing this-> ( #15191 )
2026-03-26 09:54:50 -10:00
dependabot[bot]
3152642571
Bump codecov/codecov-action from 5.5.3 to 6.0.0 ( #15194 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-26 09:48:06 -10:00
dependabot[bot]
1e2c410abf
Bump cryptography from 46.0.5 to 46.0.6 ( #15193 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-26 09:47:18 -10:00
J. Nick Koston and Copilot
a008c27fcf
[climate] Avoid duplicate get_traits() in publish_state ( #15181 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-03-26 15:01:08 -04:00
Clyde Stubbs
1edf952dda
[font] Add unit tests verifying correct processing of glyphs ( #15178 )
2026-03-26 14:59:06 -04:00
Edward Firmo
d9ada4536c
[nextion] Fix leading space in pressed color string commands ( #15190 )
2026-03-26 14:58:12 -04:00
Jonathan Swoboda
bf89a191f0
[wifi] Guard coex_background_scan with CONFIG_SOC_WIFI_SUPPORTED ( #15187 )
2026-03-26 13:39:35 -04:00
Jonathan Swoboda
c2456409bd
[core] Improve clean-all with no arguments ( #15184 )
2026-03-26 13:39:19 -04:00
J. Nick Koston
02e23eb386
[benchmark] Add light call and publish benchmarks ( #15176 )
2026-03-26 07:33:10 -10:00
J. Nick Koston
6898284361
[benchmark] Add cover publish_state and call benchmarks ( #15179 )
2026-03-26 07:32:54 -10:00
J. Nick Koston
f3a31be6d0
[benchmark] Add climate publish_state and call benchmarks ( #15180 )
2026-03-26 07:32:39 -10:00
Daniel Kent and Jonathan Swoboda
9260401747
[bmp581] Add SPI support for BMP581 ( #13124 )
...
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
2026-03-26 12:11:46 -04:00
J. Nick Koston
8a6b009173
[light] Move normal state logging to VERBOSE ( #15177 )
2026-03-26 15:53:33 +13:00
Keith Burzinski and J. Nick Koston
676ac9d8b8
[infrared][ir_rf_proxy] Add receiver_frequency config for IR receiver demodulation frequency ( #15156 )
...
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-03-26 15:30:46 +13:00
J. Nick Koston
29e263ad7d
[esp32] Wrap vfprintf to fix printf stub on picolibc (IDF 6) ( #15172 )
2026-03-25 19:43:01 -04:00
Jonathan Swoboda
a075f63b59
[uart] Fix debug callback missing peeked byte and reading past end ( #15169 )
2026-03-25 16:50:37 -04:00
J. Nick Koston
ec60da893f
[core] Move state logging to client-side formatting, console to VERBOSE ( #15155 )
2026-03-25 19:45:06 +00:00
dependabot[bot]
d8fbce365a
Bump requests from 2.32.5 to 2.33.0 ( #15170 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-25 09:38:20 -10:00
Jonathan Swoboda
f6c5767a83
[inkplate] Use atomic GPIO write to prevent ISR race ( #15166 )
2026-03-25 14:10:28 -04:00
Jonathan Swoboda
19615f2eae
[bme68x_bsec2] Fix uninitialized bme68x_conf in measurement duration calculation ( #15168 )
2026-03-25 14:10:04 -04:00
Jonathan Swoboda
c42c6745b9
[mcp9600] Fix setup success check using OR instead of AND ( #15165 )
2026-03-25 08:06:48 -10:00
65d0a91fcc
[nextion] Add defined keys to defines.h ( #14971 )
...
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-03-25 18:01:52 +00:00
J. Nick Koston
a22d47c719
[api] Add --no-states flag to esphome logs command ( #15160 )
2026-03-25 07:36:53 -10:00
J. Nick Koston
010516aef2
[benchmark] Add sensor publish_state benchmarks ( #15034 )
2026-03-25 07:33:17 -10:00
Jonathan Swoboda
a15389318f
[audio] Bump esp-audio-libs to 2.0.4 ( #15164 )
2026-03-25 11:57:33 -04:00
Edward Firmo
5d67868ac6
[nextion] Fix inline doc parameter types for page and touch callbacks ( #14972 )
2026-03-25 10:39:46 -04:00
Clyde Stubbs and Copilot
e0d8000007
[ai] Add instructions regarding constructor parameters ( #15091 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-03-25 10:34:34 -04:00
b66ff374a2
[esp32] Fix GPIO strapping pins and add USB-JTAG warnings ( #15105 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
2026-03-25 14:26:33 +00:00
Brandon der Blätter
6c981e83db
[hub75] Add SCAN_1_8_32PX_FULL wiring option ( #15130 )
2026-03-25 09:52:50 -04:00
Clyde Stubbs and Copilot
2355fcb44e
[lvgl] Update function and type names ( #15109 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-03-25 09:51:51 -04:00
f5bbff0b05
[core] Add CONF_LIBRETINY constant to const.py ( #15141 )
...
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
2026-03-25 07:40:39 -04:00
Clyde Stubbs
c45c9da771
[lvgl] Various 9.5 fixes ( #15157 )
2026-03-25 20:51:23 +11:00
dependabot[bot]
7a40759567
Bump aioesphomeapi from 44.7.0 to 44.8.0 ( #15159 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-25 08:55:12 +00:00
J. Nick Koston
af5b98c635
[time] Remove dummy placeholder values for recalc_timestamp_utc() ( #15129 )
2026-03-25 01:07:28 +00:00
J. Nick Koston
690dc324c9
[logger] Move task log buffer storage to BSS ( #15153 )
2026-03-25 00:52:37 +00:00
Jonathan Swoboda
26e78c840c
[wifi] Filter fast_connect by band_mode and use background scan for roaming ( #15152 )
2026-03-24 20:21:04 -04:00
J. Nick Koston
9c9ae190ee
[core] Use compile-time HasElse parameter in IfAction ( #15134 )
2026-03-24 14:13:59 -10:00
J. Nick Koston
238adbe008
[wifi] Fix roaming counter reset from delayed disconnect and successful retry ( #15126 )
2026-03-24 14:04:17 -10:00
J. Nick Koston
f457b995f7
[datetime] Fix state_as_esptime() returning invalid timestamp ( #15128 )
2026-03-24 14:03:56 -10:00