FFFF
Skip to content

[sendspin] Bump sendspin-cpp to v0.7.1 - #18232

Merged
bdraco merged 1 commit into
devfrom
sendspin-cpp-v0.7.1
Aug 10, 2026
Merged

[sendspin] Bump sendspin-cpp to v0.7.1#18232
bdraco merged 1 commit into
devfrom
sendspin-cpp-v0.7.1

Conversation

@kahrendt
@kahrendt kahrendt commented Aug 10, 2026
Copy link
Copy Markdown
Contributor

What does this implement/fix?

Bumps sendspin-cpp (GitHub and Espressif Registry) to v0.7.1 (Changelog).

This fixes a potential stack overflow when metadata is enabled (see Sendspin/sendspin-cpp#102).

Types of changes

  • Bugfix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • New developer-facing feature (adds functionality for component developers; no end-user configuration change)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected) — policy
  • Developer breaking change (an API change that could break external components) — policy
  • Undocumented C++ API change (removal or change of undocumented public methods that lambda users may depend on) — policy
  • Code quality improvements to existing code or addition of tests
  • Other

Related issue or feature (if applicable): not applicable

Pull request in esphome.io with documentation (if applicable): not applicable

Pull request in developers.esphome.io with developer documentation (if applicable): not applicable

Test Environment

  • ESP32
  • ESP32 IDF
  • ESP8266
  • RP2040/RP2350
  • BK72xx
  • RTL87xx
  • LN882x
  • nRF52840

Example entry for config.yaml:

# Example config.yaml

sendspin:

Checklist:

  • The code change is tested and works locally.
  • Tests have been added to verify that the new code works (under tests/ folder).

If user exposed functionality or configuration variables are added/changed:

Copilot AI lite review requested due to automatic review settings August 10, 2026 13:32
@esphome
esphome Bot commented Aug 10, 2026
Copy link
Copy Markdown
Contributor

To use the changes in this PR:

# Clone the repository:
git clone https://github.com/esphome/esphome
cd esphome

# Checkout the PR branch:
git fetch origin pull/18232/head:sendspin-cpp-v0.7.1
git checkout sendspin-cpp-v0.7.1

# Install the development version:
script/setup

# Activate the development version:
source venv/bin/activate

Now you can run esphome as usual to test the changes in this PR.


(Added by the PR bot)

@kahrendt kahrendt changed the title Bump sendspin-cpp to v0.7.1 [sendspin] Bump sendspin-cpp to v0.7.1 Aug 10, 2026
Copilot AI left a comment
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates ESPHome’s ESP-IDF component dependency and the Sendspin component integration to use sendspin/sendspin-cpp v0.7.1, aligning the build-time dependency pin with the runtime inclusion used by the Sendspin component.

Changes:

  • Bump sendspin/sendspin-cpp dependency in esphome/idf_component.yml from 0.7.0 to 0.7.1.
  • Update the Sendspin component to request sendspin/sendspin-cpp ref="0.7.1" during code generation.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
esphome/idf_component.yml Updates the ESP-IDF component manager dependency pin for sendspin/sendspin-cpp to v0.7.1.
esphome/components/sendspin/init.py Updates the component’s add_idf_component() reference so Sendspin builds against sendspin-cpp v0.7.1.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@codecov
codecov Bot commented Aug 10, 2026
Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 87.37%. Comparing base (25cb440) to head (71c09b6).

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##              dev   #18
8000
232   +/-   ##
=======================================
  Coverage   87.37%   87.37%           
=======================================
  Files          65       65           
  Lines       14791    14791           
  Branches     2226     2226           
=======================================
  Hits        12923    12923           
  Misses       1558     1558           
  Partials      310      310           
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@bdraco bdraco added this to the 2026.8.0 milestone Aug 10, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Memory Impact Analysis

Components: sendspin
Platform: esp32-idf

Metric Target Branch This PR Change
RAM 45,288 bytes 45,288 bytes ➡️ +0 bytes (0.00%)
Flash 859,135 bytes 853,203 bytes 📉 ✅ -5,932 bytes (-0.69%)
📊 Component Memory Breakdown
Component Target Flash PR Flash Change
rom_functions 31,464 bytes 27,937 bytes 📉 -3,527 bytes (-11.21%)
cpp_runtime 5,102 bytes 4,568 bytes 📉 -534 bytes (-10.47%)
misc_system 26,889 bytes 26,370 bytes 📉 -519 bytes (-1.93%)
wifi_config 18,784 bytes 18,428 bytes 📉 -356 bytes (-1.90%)
memory_alloc 1,753 bytes 1,851 bytes 📈 +98 bytes (+5.59%)
interrupt_handlers 16,121 bytes 16,073 bytes 📉 -48 bytes (-0.30%)
timer 4,400 bytes 4,356 bytes 📉 -44 bytes (-1.00%)
threading 1,858 bytes 1,818 bytes 📉 -40 bytes (-2.15%)
hal_layer 8,279 bytes 8,243 bytes 📉 -36 bytes (-0.43%)
error_handling 4,820 bytes 4,797 bytes 📉 -23 bytes (-0.48%)
efuse 1,134 bytes 1,114 bytes 📉 -20 bytes (-1.76%)
entry_management 230 bytes 213 bytes 📉 -17 bytes (-7.39%)
flash_ops 4,286 bytes 4,270 bytes 📉 -16 bytes (-0.37%)
wifi_stack 145,178 bytes 145,162 bytes 📉 -16 bytes (-0.01%)
spi_flash 7,708 bytes 7,696 bytes 📉 -12 bytes (-0.16%)
[esphome]wifi 12,886 bytes 12,874 bytes 📉 ✅ -12 bytes (-0.09%)
clock_mgmt 1,320 bytes 1,308 bytes 📉 -12 bytes (-0.91%)
libc 35,716 bytes 35,708 bytes 📉 -8 bytes (-0.02%)
[esphome]mdns 564 bytes 560 bytes 📉 ✅ -4 bytes (-0.71%)
esp_system 3,671 bytes 3,667 bytes 📉 -4 bytes (-0.11%)
... ... ... (2 more components not shown)
🔍 Symbol-Level Changes (click to expand)

Changed Symbols

Symbol Target Size PR Size Change
sendspin::process_stream_start_message(ArduinoJson::V743HB22::JsonObject, sendspin::StreamStartMe...sendspin::process_stream_start_message(ArduinoJson::V743HB22::JsonObject, sendspin::StreamStartMessage*)
3,775 bytes 3,148 bytes 📉 -627 bytes (-16.61%)
sendspin::SendspinClient::process_json_message(sendspin::SendspinConnection*, char const*, unsign...sendspin::SendspinClient::process_json_message(sendspin::SendspinConnection*, char const*, unsigned int, long long)
1,775 bytes 1,635 bytes 📉 -140 bytes (-7.89%)
task_wdt_isr 367 bytes 319 bytes 📉 -48 bytes (-13.08%)
esp_task_wdt_impl_timer_allocate 202 bytes 178 bytes 📉 -24 bytes (-11.88%)
task_wdt_timeout_abort 167 bytes 144 bytes 📉 -23 bytes (-13.77%)
add_entry 230 bytes 213 bytes 📉 -17 bytes (-7.39%)
esp_flash_init_default_chip 180 bytes 164 bytes 📉 -16 bytes (-8.89%)
esp_task_wdt_init 235 bytes 219 bytes 📉 -16 bytes (-6.81%)
get_efuse_mac_custom 139 bytes 123 bytes 📉 -16 bytes (-11.51%)
clk_hal_cpu_get_freq_hz 161 bytes 145 bytes 📉 -16 bytes (-9.94%)
esp_task_wdt_reset 150 bytes 138 bytes 📉 -12 bytes (-8.00%)
esp_iface_mac_addr_set 152 bytes 140 bytes 📉 -12 bytes (-7.89%)
esp_task_wdt_impl_timer_restart 46 bytes 34 bytes 📉 -12 bytes (-26.09%)
esphome::wifi::WiFiComponent::wifi_process_event_(esphome::wifi::IDFWiFiEvent*) 1,237 bytes 1,225 bytes 📉 -12 bytes (-0.97%)
get_flash_clock_divider 77 bytes 65 bytes 📉 -12 bytes (-15.58%)
clk_hal_apll_get_freq_hz 136 bytes 124 bytes 📉 -12 bytes (-8.82%)
esp_crosscore_int_init 100 bytes 91 bytes 📉 -9 bytes (-9.00%)
get_mac_addr_from_mac_table 151 bytes 143 bytes 📉 -8 bytes (-5.30%)
spi_flash_hal_init 282 bytes 274 bytes 📉 -8 bytes (-2.84%)
wpa_validate_wpa_ie 637 bytes 629 bytes 📉 -8 bytes (-1.26%)
subscribe_idle 100 bytes 92 bytes 📉 -8 bytes (-8.00%)
esp_task_wdt_impl_timeout_triggered 31 bytes 23 bytes 📉 -8 bytes (-25.81%)
esp_task_wdt_impl_timer_feed 38 bytes 30 bytes 📉 -8 bytes (-21.05%)
_pmksa_cache_free_entry 39 bytes 31 bytes 📉 -8 bytes (-20.51%)
sendspin::format_client_hello_message[abi:cxx11](sendspin::ClientHelloMessage const*) 1,742 bytes 1,738 bytes 📉 -4 bytes (-0.23%)
clk_hal_lp_slow_get_freq_hz 63 bytes 59 bytes 📉 -4 bytes (-6.35%)
esphome::mdns::MDNSComponent::compile_records_(esphome::StaticVector<esphome::mdns::MDNSService, ...esphome::mdns::MDNSComponent::compile_records_(esphome::StaticVector<esphome::mdns::MDNSService, 1u>&, char const*, char const*)
77 bytes 73 bytes 📉 -4 bytes (-5.19%)
wpa_receive 1,297 bytes 1,293 bytes 📉 -4 bytes (-0.31%)
std::__cxx11::basic_string<char, std::char_traits, std::allocator >::_M_replace(unsig...std::__cxx11::basic_string<char, std::char_traits, std::allocator >::_M_replace(unsigned int, unsigned int, char const*, unsigned int) [$isra$0]
167 bytes 163 bytes 📉 -4 bytes (-2.40%)
get_idx 59 bytes 55 bytes 📉 -4 bytes (-6.78%)
... ... ... (17 more changed symbols not shown)

New Symbols (top 15)

Symbol Size
void std::vector<sendspin::VisualizerDataType, std::allocatorsendspin::VisualizerDataType >::_M...void std::vector<sendspin::VisualizerDataType, std::allocatorsendspin::VisualizerDataType >::_M_realloc_append<sendspin::VisualizerDataType const&>(sendspin::VisualizerDataType const&)
98 bytes
std::_Optional_payload_base<sendspin::ServerVisualizerStreamObject>::_M_reset() 33 bytes
std::_Optional_payload_base<std::vector<sendspin::ServerArtworkChannelObject, std::allocator<send...std::_Optional_payload_base<std::vector<sendspin::ServerArtworkChannelObject, std::allocatorsendspin::ServerArtworkChannelObject > >::_M_reset()
33 bytes
std::_Optional_payload_base<sendspin::ServerPlayerStreamObject>::_M_reset() 30 bytes
std::_Optional_payload_base<sendspin::ServerArtworkStreamObject>::_M_reset() 29 bytes

Removed Symbols (top 15)

Symbol Size
sendspin::process_server_state_message(ArduinoJson::V743HB22::JsonObject, sendspin::ServerStateMe...sendspin::process_server_state_message(ArduinoJson::V743HB22::JsonObject, sendspin::ServerStateMessage*)
3,153 bytes
sendspin::parse_color_field(ArduinoJson::V743HB22::JsonVariantConst, char const*, std::optional<s...sendspin::parse_color_field(ArduinoJson::V743HB22::JsonVariantConst, char const*, std::optional<std::optional<std::array<unsigned char, 3u> > >*)
309 bytes
sendspin::controller_command_from_string(std::__cxx11::basic_string<char, std::char_traits,...sendspin::controller_command_from_string(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)
230 bytes
sendspin::parse_metadata_string_field(ArduinoJson::V743HB22::JsonVariantConst, char const*, std::...sendspin::parse_metadata_string_field(ArduinoJson::V743HB22::JsonVariantConst, char const*, std::optional<std::optional<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > >*)
160 bytes
sendspin::parse_metadata_uint16_field(ArduinoJson::V743HB22::JsonVariantConst, char const*, std::...sendspin::parse_metadata_uint16_field(ArduinoJson::V743HB22::JsonVariantConst, char const*, std::optional<std::optional >*)
140 bytes
ArduinoJson::V743HB22::JsonArrayConst::size() const 52 bytes
std::_Optional_payload_base<std::optional<std::__cxx11::basic_string<char, std::char_traits...std::_Optional_payload_base<std::optional<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > >::_M_move_assign(std::_Optional_payload_base<std::optional<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > >&&)
43 bytes
void std::_Optional_payload_base<std::optional<std::__cxx11::basic_string<char, std::char_traits<...void std::_Optional_payload_base<std::optional<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > >::_M_construct<std::optional<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > >(std::optional<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >&&)
42 bytes
long long ArduinoJson::V743HB22::detail::VariantRefBase<ArduinoJson::V743HB22::detail::MemberProx...long long ArduinoJson::V743HB22::detail::VariantRefBase<ArduinoJson::V743HB22::detail::MemberProxy<ArduinoJson::V743HB22::JsonObject, ArduinoJson::V743HB22::detail::RamString> >::as() const
30 bytes
std::_Optional_payload_base<std::optional<std::__cxx11::basic_string<char, std::char_traits...std::_Optional_payload_base<std::optional<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > >::_M_reset()
29 bytes
std::_Optional_base<std::optional<std::__cxx11::basic_string<char, std::char_traits, std::a...std::_Optional_base<std::optional<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, false, false>::_Optional_base(std::_Optional_base<std::optional<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, false, false>&&)
29 bytes
std::_Vector_base<sendspin::SendspinControllerCommand, std::allocator<sendspin::SendspinControlle...std::_Vector_base<sendspin::SendspinControllerCommand, std::allocatorsendspin::SendspinControllerCommand >::~_Vector_base()
21 bytes
std::_Vector_base<sendspin::ServerArtworkChannelObject, std::allocator<sendspin::ServerArtworkCha...std::_Vector_base<sendspin::ServerArtworkChannelObject, std::allocatorsendspin::ServerArtworkChannelObject >::~_Vector_base()
21 bytes

Note: This analysis measures static RAM and Flash usage only (compile-time allocation).
Dynamic memory (heap) cannot be measured automatically.
⚠️ You must test this PR on a real device to measure free heap and ensure no runtime memory issues.

This analysis runs automatically when components change. Memory usage is measured from a representative test configuration.

@bdraco
bdraco commented Aug 10, 2026
Copy link
Copy Markdown
Member

Thanks @kahrendt

@bdraco
bdraco merged commit 3656375 into dev Aug 10, 2026
74 of 76 checks passed
@bdraco
bdraco deleted the sendspin-cpp-v0.7.1 branch August 10, 2026 14:00
@github-actions github-actions Bot locked and limited conversation to c B79A ollaborators Aug 12, 2026
@jesserockz jesserockz removed this from the 2026.8.0 milestone Aug 12, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

0