J. Nick Koston
5cf27a8927
Merge branch 'dev' into api-flash-string-progmem
2026-02-09 11:26:46 -06:00
J. Nick Koston
5d5344cf91
Add tests for cg.templatable() auto FlashStringLiteral wrapping
...
Cover the new automatic ESPHOME_F() wrapping behavior: static strings
with std::string output_type, non-string values, None output_type,
to_exp callable/dict, and lambda passthrough.
2026-02-09 10:56:56 -06:00
J. Nick Koston
b0cf94c409
Auto-wrap static strings in ESPHOME_F() via templatable()
...
Move FlashStringLiteral wrapping from per-component manual code into
cg.templatable() itself. When output_type is std::string and the value
is a static string (not a lambda), it is automatically wrapped in
ESPHOME_F() for PROGMEM storage on ESP8266. On other platforms
ESPHOME_F() is a no-op returning const char*.
This makes all ~50 existing cg.templatable(..., cg.std_string) call
sites across every component benefit automatically, with no
per-component changes needed.
Simplify api/__init__.py by switching from output_type=None to
cg.std_string and removing the manual isinstance/FlashStringLiteral
checks that are now redundant.
2026-02-09 10:38:41 -06:00
Kevin Ahrendt
c28c97fbaf
[mixer] Refactor for stability and to support Sendspin ( #12253 )
...
Co-authored-by: J. Nick Koston <nick@koston.org >
Co-authored-by: J. Nick Koston <nick+github@koston.org >
2026-02-09 10:19:00 -05:00
J. Nick Koston
3cde3daceb
[api] Collapse APIServerConnection intermediary layer ( #13872 )
2026-02-09 08:45:33 -06:00
J. Nick Koston
be4e573cc4
[esp32_hosted] Replace set_retry with set_interval to avoid heap allocation ( #13844 )
2026-02-09 08:45:18 -06:00
J. Nick Koston
66af998098
[dashboard] Handle malformed Basic Auth headers gracefully ( #13866 )
2026-02-09 08:45:03 -06:00
J. Nick Koston
938a11595d
[speaker] Replace set_retry with set_interval to avoid heap allocation ( #13843 )
2026-02-09 08:44:50 -06:00
J. Nick Koston
c812ac8b29
[ms8607] Replace set_retry with set_timeout chain to avoid heap allocation ( #13842 )
2026-02-09 08:44:35 -06:00
J. Nick Koston
248fc06dac
[scheduler] Eliminate heap allocation in full_cleanup_removed_items_ ( #13837 )
2026-02-09 08:44:20 -06:00
J. Nick Koston
8b8acb3b27
[dashboard] Use constant-time comparison for username check ( #13865 )
2026-02-09 08:31:06 -06:00
J. Nick Koston
1c60efa4b6
[ota] Use secrets module for OTA authentication cnonce ( #13863 )
2026-02-09 08:30:49 -06:00
J. Nick Koston
4ef238eb7b
[analyze-memory] Attribute third-party library symbols via nm scanning ( #13878 )
2026-02-09 08:26:03 -06:00
J. Nick Koston
c990da265a
Add unit tests for FlashStringLiteral
...
Cover the three lines reported uncovered by codecov in
cpp_generator.py (FlashStringLiteral.__init__ and __str__).
2026-02-09 07:45:03 -06:00
J. Nick Koston
91487e7f14
[api] Store HomeAssistant action strings in PROGMEM on ESP8266
...
On ESP8266, .rodata is copied to RAM at boot. Every string literal in
HomeAssistantServiceCallAction (service names, data keys, data values)
permanently consumes RAM even though the action may rarely fire.
Add FLASH_STRING type to TemplatableValue that stores PROGMEM pointers
on ESP8266 via the existing __FlashStringHelper* type. At play() time,
strings are copied from flash to temporary std::string storage — safe
because service calls are not in the hot path.
Add FlashStringLiteral codegen helper (cg.FlashStringLiteral) that wraps
strings in ESPHOME_F() — expands to F() on ESP8266 (PROGMEM), plain
string on other platforms (no-op). This helper can be adopted by other
components incrementally.
On non-ESP8266 platforms, FLASH_STRING is never set and all existing
code paths are unchanged.
2026-02-09 07:39:06 -06:00
J. Nick Koston
22c77866d8
[e131] Remove unnecessary heap allocation from packet receive loop ( #13852 )
2026-02-09 06:42:26 -06:00
J. Nick Koston
790ac620ab
[web_server_idf] Use C++17 nested namespace style ( #13856 )
2026-02-09 06:42:12 -06:00
tronikos
fb93283720
[water_heater] Add state masking to distinguish explicit commands from no-change ( #13879 )
2026-02-09 03:52:49 -06:00
J. Nick Koston
bed01da345
[api] Guard varint parsing against overlong encodings ( #13870 )
2026-02-09 03:45:40 -06:00
J. Nick Koston
422f413680
[lps22] Replace set_retry with set_interval to avoid heap allocation ( #13841 )
2026-02-09 03:26:44 -06:00
J. Nick Koston
c3c0c40524
[mqtt] Return friendly_name_() by const reference to avoid string copies ( #13810 )
2026-02-09 03:26:29 -06:00
J. Nick Koston
46f8302d8f
[mqtt] Use stack buffer for discovery topic to avoid heap allocation ( #13812 )
2026-02-09 03:26:15 -06:00
J. Nick Koston
e24528c842
[analyze-memory] Attribute CSWTCH symbols from SDK archives ( #13850 )
2026-02-09 03:25:59 -06:00
J. Nick Koston
5370687001
[wizard] Use secrets module for fallback AP password generation ( #13864 )
2026-02-09 03:25:41 -06:00
J. Nick Koston
6ee185c58a
[dashboard] Use resolve/relative_to for download path validation ( #13867 )
2026-02-09 03:25:23 -06:00
J. Nick Koston
eb6a6f8d0d
[web_server_idf] Remove unused host() method ( #13869 )
2026-02-09 03:25:05 -06:00
J. Nick Koston
140ec0639c
[api] Elide empty message construction in protobuf dispatch ( #13871 )
2026-02-09 03:24:45 -06:00
Clyde Stubbs
756f1c6b7e
[lvgl] Fix crash with unconfigured top_layer ( #13846 )
2026-02-08 21:53:43 -05:00
tomaszduda23
28b9487b25
[nrf52,logger] fix printk ( #13874 )
2026-02-08 17:52:05 +00:00
J. Nick Koston
41fedaedb3
[udp] Eliminate per-loop heap allocation using std::span ( #13838 )
...
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com >
2026-02-08 08:26:47 -06:00
schrob
7b40e8afcb
[epaper_spi] Declare leaf classes final ( #13776 )
2026-02-07 19:21:37 -06:00
J. Nick Koston
a43e3e5948
[dashboard] Close WebSocket after process exit to prevent zombie connections ( #13834 )
2026-02-07 15:19:20 -06:00
schrob
9de91539e6
[epaper_spi] Add Waveshare 1.54-G ( #13758 )
2026-02-08 06:24:57 +11:00
tronikos
eb7aa3420f
Add target_temperature to the template water heater ( #13661 )
...
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-02-06 21:23:42 +01:00
J. Nick Koston
86f91eed2f
[mqtt] Move switch string tables to PROGMEM_STRING_TABLE ( #13802 )
...
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>
2026-02-06 19:30:05 +01:00
J. Nick Koston
41cecbfb0f
[template] Convert alarm sensor type to PROGMEM_STRING_TABLE and narrow enum to uint8_t ( #13804 )
2026-02-06 18:22:26 +00:00
Jonathan Swoboda
9315da79bc
[core] Add missing requests dependency to requirements.txt ( #13803 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-06 13:03:16 -05:00
PolarGoose
155447f541
[dsmr] Fix issue with parsing lines like 1-0:0.2.0((ER11)) ( #13780 )
2026-02-06 12:53:59 -05:00
J. Nick Koston
238e40966f
[light] Move CSWTCH lookup table to PROGMEM in get_suitable_color_modes_mask_ ( #13801 )
2026-02-06 17:33:26 +00:00
J. Nick Koston
f9192b5f75
[wifi] Avoid jump tables in LOG_STR switch statements to save ESP8266 RAM ( #13799 )
2026-02-06 18:20:46 +01:00
J. Nick Koston
2917057da8
[analyze-memory] Trace CSWTCH switch table symbols to source components ( #13798 )
...
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
2026-02-06 18:08:30 +01:00
J. Nick Koston
c7c9ffe7e1
[light] Convert color_mode_to_human to PROGMEM_STRING_TABLE using to_bit() ( #13797 )
2026-02-06 17:38:03 +01:00
J. Nick Koston
368ef5687b
[update] Move update_state_to_string to update component and convert to PROGMEM_STRING_TABLE ( #13796 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-02-06 17:37:41 +01:00
J. Nick Koston
b7dc975331
[core] Convert entity string lookups to PROGMEM_STRING_TABLE ( #13794 )
2026-02-06 17:37:19 +01:00
J. Nick Koston
44f308502e
[gpio] Convert interrupt_type_to_string to PROGMEM_STRING_TABLE ( #13795 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-02-06 17:37:02 +01:00
J. Nick Koston
ec477801ca
[wifi] Defer ESP8266 WiFi listener callbacks from system context to main loop ( #13789 )
2026-02-06 16:23:19 +00:00
J. Nick Koston
c3622ef7fb
[http_request] Fix chunked transfer encoding on Arduino platforms ( #13790 )
2026-02-06 15:52:41 +01:00
J. Nick Koston
e4ad2082bc
[core] Add PROGMEM_STRING_TABLE macro for flash-optimized string lookups ( #13659 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-02-06 15:26:16 +01:00
Andrew Rankin
7afd0eb1aa
[esp32_ble] include sdkconfig.h before ESP-Hosted preprocessor guards ( #13787 )
...
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-06 11:36:55 +00:00
Clyde Stubbs
112a2c5d92
[const] Move some constants to common ( #13788 )
2026-02-06 20:11:08 +11:00