From ad7c12692cb24ef0e16faf30efe4f95ac909eefd Mon Sep 17 00:00:00 2001 From: Brandon Harvey <8107750+bharvey88@users.noreply.github.com> Date: Wed, 8 Jul 2026 12:00:55 -0500 Subject: [PATCH] Default the Firmware Channel select to Beta on beta-channel builds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A fresh flash has no stored channel preference, so the select fell back to "Stable" even on firmware obtained from the beta channel - and the update entity then offered the older stable build as a "downgrade". Make initial_option a substitution (firmware_channel_default, still "Stable") and add beta-channel/ wrapper yamls that override it to "Beta"; build-beta.yml now builds those wrappers. Stable (Pages) builds are unchanged. Same pattern as ApolloAutomation/MSR-1#92. Version: 26.7.8.2 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- .github/workflows/build-beta.yml | 4 ++-- Integrations/ESPHome/Core.yaml | 9 +++++++-- Integrations/ESPHome/beta-channel/CAST-1_ETH.yaml | 9 +++++++++ Integrations/ESPHome/beta-channel/CAST-1_W.yaml | 9 +++++++++ 4 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 Integrations/ESPHome/beta-channel/CAST-1_ETH.yaml create mode 100644 Integrations/ESPHome/beta-channel/CAST-1_W.yaml diff --git a/.github/workflows/build-beta.yml b/.github/workflows/build-beta.yml index 61768bf..c2535cb 100644 --- a/.github/workflows/build-beta.yml +++ b/.github/workflows/build-beta.yml @@ -37,8 +37,8 @@ jobs: strategy: matrix: include: - - { yaml: Integrations/ESPHome/CAST-1_W.yaml, name: firmware-w } - - { yaml: Integrations/ESPHome/CAST-1_ETH.yaml, name: firmware-e } + - { yaml: Integrations/ESPHome/beta-channel/CAST-1_W.yaml, name: firmware-w } + - { yaml: Integrations/ESPHome/beta-channel/CAST-1_ETH.yaml, name: firmware-e } uses: esphome/workflows/.github/workflows/build.yml@025a1e6255610c498ed590403b7e510b69e474df # 2026.4.1 with: files: ${{ matrix.yaml }} diff --git a/Integrations/ESPHome/Core.yaml b/Integrations/ESPHome/Core.yaml index 7e9982c..4f0e353 100644 --- a/Integrations/ESPHome/Core.yaml +++ b/Integrations/ESPHome/Core.yaml @@ -1,5 +1,10 @@ substitutions: - version: "26.7.8.1" + version: "26.7.8.2" + # Default update channel on first boot (no stored user choice yet, i.e. a + # fresh flash). The beta-channel builds override this to "Beta" (see + # Integrations/ESPHome/beta-channel/) so firmware obtained from the beta + # channel keeps tracking it instead of offering a stable "downgrade". + firmware_channel_default: "Stable" packages: @@ -203,7 +208,7 @@ select: options: - "Stable" - "Beta" - initial_option: "Stable" + initial_option: "${firmware_channel_default}" on_value: then: - script.execute: apply_ota_source diff --git a/Integrations/ESPHome/beta-channel/CAST-1_ETH.yaml b/Integrations/ESPHome/beta-channel/CAST-1_ETH.yaml new file mode 100644 index 0000000..fe73f73 --- /dev/null +++ b/Integrations/ESPHome/beta-channel/CAST-1_ETH.yaml @@ -0,0 +1,9 @@ +# Beta-channel build of CAST-1_ETH.yaml: the identical image except the Firmware +# Channel select defaults to "Beta" on first boot, so firmware obtained from +# the beta channel keeps tracking it. Built by build-beta.yml only; the +# stable (GitHub Pages) builds use CAST-1_ETH.yaml directly. +substitutions: + firmware_channel_default: "Beta" + +packages: + base: !include ../CAST-1_ETH.yaml diff --git a/Integrations/ESPHome/beta-channel/CAST-1_W.yaml b/Integrations/ESPHome/beta-channel/CAST-1_W.yaml new file mode 100644 index 0000000..9b64888 --- /dev/null +++ b/Integrations/ESPHome/beta-channel/CAST-1_W.yaml @@ -0,0 +1,9 @@ +# Beta-channel build of CAST-1_W.yaml: the identical image except the Firmware +# Channel select defaults to "Beta" on first boot, so firmware obtained from +# the beta channel keeps tracking it. Built by build-beta.yml only; the +# stable (GitHub Pages) builds use CAST-1_W.yaml directly. +substitutions: + firmware_channel_default: "Beta" + +packages: + base: !include ../CAST-1_W.yaml