From 88b01259d5448bb6cc91931b142fbc0ef54791ff Mon Sep 17 00:00:00 2001 From: Brandon Harvey <8107750+bharvey88@users.noreply.github.com> Date: Thu, 17 Sep 2026 13:16:34 -0500 Subject: [PATCH 1/6] Pass a string literal to set_source_url in apply_ota_source MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ESPHome dev changed http_request update's setter to set_source_url(const char *), and it stores the pointer without copying. The current lambda builds a std::string, which no longer compiles, and adding .c_str() to a local std::string would leave the component holding a dangling pointer once the lambda returns. Select between two string literals instead. Literals have static storage duration, so the stored pointer stays valid for the life of the device. This also builds on 2026.8.x, where the setter still takes a std::string and const char * converts implicitly, so no min_version change is needed. Version: 26.9.17.1 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- Integrations/ESPHome/Core.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Integrations/ESPHome/Core.yaml b/Integrations/ESPHome/Core.yaml index 7ddfcc8..17441a4 100644 --- a/Integrations/ESPHome/Core.yaml +++ b/Integrations/ESPHome/Core.yaml @@ -1,5 +1,5 @@ substitutions: - version: "26.8.28.1" + version: "26.9.17.1" stable_manifest_base: "https://apolloautomation.github.io/CAST-1" beta_manifest_base: "https://github.com/ApolloAutomation/CAST-1/releases/download/beta-fw" stable_manifest_dir: "firmware" @@ -696,10 +696,10 @@ script: then: - lambda: |- const bool beta = id(firmware_channel).current_option() == "Beta"; - std::string url = beta + const char *url = beta ? "${beta_manifest_base}/${beta_manifest_file}" : "${stable_manifest_base}/${stable_manifest_dir}/manifest.json"; - ESP_LOGI("firmware", "OTA manifest set to: %s", url.c_str()); + ESP_LOGI("firmware", "OTA manifest set to: %s", url); id(update_http_request).set_source_url(url); - component.update: update_http_request - id: statusCheck From 182db07077989d14875434efe6595e96f427f9f9 Mon Sep 17 00:00:00 2001 From: Brandon Harvey <8107750+bharvey88@users.noreply.github.com> Date: Thu, 17 Sep 2026 13:29:23 -0500 Subject: [PATCH 2/6] Re-enable the dev leg of the ESPHome CI matrix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The dev leg was dropped on 2026-07-07 (1d5470b) with the note "dev excluded until the TemplateSelect .state incompatibility is fixed". That incompatibility was fixed the same day in 2d2d311, and again for the wizmote selects on 2026-07-12 in 8a5ed17. Every select in the config now uses current_option(); the remaining .state calls are on text, switch and binary_sensor components, where it is still correct. The leg was never turned back on, so two breaks against ESPHome dev went unnoticed until a local dev build surfaced them: the OTA manifest lambda no longer compiling against the new set_source_url signature, and the esp32_improv deprecation. The first would have broken builds for anyone compiling this YAML on the day 2026.10.0 released. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 06ae52e..be3729e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: with: yaml-files: | Integrations/ESPHome/CAST-1.yaml - # dev excluded until the TemplateSelect .state incompatibility is fixed esphome-versions: | stable beta + dev From 142dbc0a3d031c2b2dc5c15d0587b57c6650328c Mon Sep 17 00:00:00 2001 From: Brandon Harvey <8107750+bharvey88@users.noreply.github.com> Date: Fri, 18 Sep 2026 12:16:17 -0500 Subject: [PATCH 3/6] Bump version to 26.9.18.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The PR was opened on 2026-09-17 and merges on 2026-09-18. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- Integrations/ESPHome/Core.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Integrations/ESPHome/Core.yaml b/Integrations/ESPHome/Core.yaml index 17441a4..ba595cb 100644 --- a/Integrations/ESPHome/Core.yaml +++ b/Integrations/ESPHome/Core.yaml @@ -1,5 +1,5 @@ substitutions: - version: "26.9.17.1" + version: "26.9.18.1" stable_manifest_base: "https://apolloautomation.github.io/CAST-1" beta_manifest_base: "https://github.com/ApolloAutomation/CAST-1/releases/download/beta-fw" stable_manifest_dir: "firmware" From 1ccc1b3b01b46271513de1340caea2cf5939b3fd Mon Sep 17 00:00:00 2001 From: Brandon Harvey <8107750+bharvey88@users.noreply.github.com> Date: Fri, 18 Sep 2026 12:42:09 -0500 Subject: [PATCH 4/6] Use the 32KB data cache MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 64KB data cache came in from the Home Assistant Voice PE config, where it feeds microWakeWord. The CAST-1 has no microphone. On the S3 the cache is carved out of internal SRAM, so dropping to the IDF default of 32KB returns 32KB to the internal heap. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- Integrations/ESPHome/Core.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Integrations/ESPHome/Core.yaml b/Integrations/ESPHome/Core.yaml index 7ddfcc8..19a6056 100644 --- a/Integrations/ESPHome/Core.yaml +++ b/Integrations/ESPHome/Core.yaml @@ -1,5 +1,5 @@ substitutions: - version: "26.8.28.1" + version: "26.9.18.3" stable_manifest_base: "https://apolloautomation.github.io/CAST-1" beta_manifest_base: "https://github.com/ApolloAutomation/CAST-1/releases/download/beta-fw" stable_manifest_dir: "firmware" @@ -221,7 +221,7 @@ esp32: type: esp-idf version: recommended sdkconfig_options: - CONFIG_ESP32S3_DATA_CACHE_64KB: "y" + CONFIG_ESP32S3_DATA_CACHE_32KB: "y" CONFIG_ESP32S3_DATA_CACHE_LINE_64B: "y" CONFIG_ESP32S3_INSTRUCTION_CACHE_32KB: "y" From 55cd8a6720e1b47e6f504a9e02afb0b9c1e18f6f Mon Sep 17 00:00:00 2001 From: Brandon Harvey <8107750+bharvey88@users.noreply.github.com> Date: Fri, 18 Sep 2026 17:56:36 -0500 Subject: [PATCH 5/6] Set version to 26.9.18.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This merges to beta first. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- Integrations/ESPHome/Core.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Integrations/ESPHome/Core.yaml b/Integrations/ESPHome/Core.yaml index 19a6056..a5dd625 100644 --- a/Integrations/ESPHome/Core.yaml +++ b/Integrations/ESPHome/Core.yaml @@ -1,5 +1,5 @@ substitutions: - version: "26.9.18.3" + version: "26.9.18.1" stable_manifest_base: "https://apolloautomation.github.io/CAST-1" beta_manifest_base: "https://github.com/ApolloAutomation/CAST-1/releases/download/beta-fw" stable_manifest_dir: "firmware" From 361cee2ffd48a016ce04b8bb1d35caee557b2dfa Mon Sep 17 00:00:00 2001 From: Brandon Harvey <8107750+bharvey88@users.noreply.github.com> Date: Mon, 21 Sep 2026 10:52:15 -0500 Subject: [PATCH 6/6] Bump version to 26.9.21.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- Integrations/ESPHome/Core.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Integrations/ESPHome/Core.yaml b/Integrations/ESPHome/Core.yaml index 730fae1..5243f92 100644 --- a/Integrations/ESPHome/Core.yaml +++ b/Integrations/ESPHome/Core.yaml @@ -1,5 +1,5 @@ substitutions: - version: "26.9.18.1" + version: "26.9.21.1" stable_manifest_base: "https://apolloautomation.github.io/CAST-1" beta_manifest_base: "https://github.com/ApolloAutomation/CAST-1/releases/download/beta-fw" stable_manifest_dir: "firmware"