From 289f9399ee9494a513518345616a71d4a3acad93 Mon Sep 17 00:00:00 2001 From: Brandon Harvey <8107750+bharvey88@users.noreply.github.com> Date: Wed, 8 Jul 2026 11:38:09 -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 8-line beta-channel/ wrapper yamls that override it to "Beta"; build-beta.yml now builds those wrappers. Stable (Pages) builds are unchanged. Same override pattern as variant wrappers. Version: 26.7.8.4 (26.7.8.3 is held by open PR #90) 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- .github/workflows/build-beta.yml | 4 ++-- Integrations/ESPHome/Core.yaml | 9 +++++++-- Integrations/ESPHome/beta-channel/MSR-1.yaml | 9 +++++++++ Integrations/ESPHome/beta-channel/MSR-1_BLE.yaml | 9 +++++++++ 4 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 Integrations/ESPHome/beta-channel/MSR-1.yaml create mode 100644 Integrations/ESPHome/beta-channel/MSR-1_BLE.yaml diff --git a/.github/workflows/build-beta.yml b/.github/workflows/build-beta.yml index 8ffbdaf..e07128a 100644 --- a/.github/workflows/build-beta.yml +++ b/.github/workflows/build-beta.yml @@ -41,8 +41,8 @@ jobs: include: # Beta serves OTA updates only, so it builds the end-user image # (MSR-1.yaml), not the first-flash Factory image. - - { yaml: Integrations/ESPHome/MSR-1.yaml, name: firmware-standard } - - { yaml: Integrations/ESPHome/MSR-1_BLE.yaml, name: firmware-ble-beta } + - { yaml: Integrations/ESPHome/beta-channel/MSR-1.yaml, name: firmware-standard } + - { yaml: Integrations/ESPHome/beta-channel/MSR-1_BLE.yaml, name: firmware-ble-beta } 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 872ad36..f1cbbdb 100644 --- a/Integrations/ESPHome/Core.yaml +++ b/Integrations/ESPHome/Core.yaml @@ -1,5 +1,5 @@ substitutions: - version: "26.7.8.2" + version: "26.7.8.4" device_description: ${name} made by Apollo Automation - version ${version}. # Default OTA password. Override in your device YAML by re-declaring # `substitutions: { ota_password: !secret _ota_password }` so each @@ -8,6 +8,11 @@ substitutions: # Firmware variant identity: overridden to "true" by MSR-1_BLE.yaml so # each image tracks its own OTA manifests. ble_firmware: "false" + # 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" # Manifest URL bases. Stable = GitHub Pages (main branch builds). # Beta = rolling "beta" pre-release assets (beta branch builds). stable_manifest_base: "https://apolloautomation.github.io/MSR-1" @@ -758,7 +763,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/MSR-1.yaml b/Integrations/ESPHome/beta-channel/MSR-1.yaml new file mode 100644 index 0000000..63b5067 --- /dev/null +++ b/Integrations/ESPHome/beta-channel/MSR-1.yaml @@ -0,0 +1,9 @@ +# Beta-channel build of MSR-1.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 MSR-1.yaml directly. +substitutions: + firmware_channel_default: "Beta" + +packages: + base: !include ../MSR-1.yaml diff --git a/Integrations/ESPHome/beta-channel/MSR-1_BLE.yaml b/Integrations/ESPHome/beta-channel/MSR-1_BLE.yaml new file mode 100644 index 0000000..1316fa6 --- /dev/null +++ b/Integrations/ESPHome/beta-channel/MSR-1_BLE.yaml @@ -0,0 +1,9 @@ +# Beta-channel build of MSR-1_BLE.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 MSR-1_BLE.yaml directly. +substitutions: + firmware_channel_default: "Beta" + +packages: + base: !include ../MSR-1_BLE.yaml