From 36b029e60a790c11be4212a374ac5f0a578e4bb2 Mon Sep 17 00:00:00 2001 From: Trevor Schirmer Date: Thu, 4 Dec 2025 13:58:13 -0500 Subject: [PATCH 01/10] Update Version --- 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 c943964..dac4ba7 100644 --- a/Integrations/ESPHome/Core.yaml +++ b/Integrations/ESPHome/Core.yaml @@ -1,5 +1,5 @@ substitutions: - version: "25.11.26.1" + version: "25.12.4.1" esp32: board: esp32-c3-devkitm-1 From f6f87c3e34e74ff3e6ae4f9abcf70722f0cfcdf9 Mon Sep 17 00:00:00 2001 From: bharvey88 <8107750+bharvey88@users.noreply.github.com> Date: Wed, 10 Jun 2026 16:00:20 -0500 Subject: [PATCH 02/10] Run label-check and auto-assign via pull_request_target Fork-submitted PRs get a read-only token on pull_request runs, so the label and assignee bots fail with 403. pull_request_target runs in the base repo context with a write token; safe here because neither job checks out or executes PR code. Build jobs stay on pull_request. Trim ci.yml permissions to what the builds need. --- .github/workflows/autoassign.yml | 5 ++++- .github/workflows/ci.yml | 7 ------- .github/workflows/label-check.yml | 20 ++++++++++++++++++++ 3 files changed, 24 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/label-check.yml diff --git a/.github/workflows/autoassign.yml b/.github/workflows/autoassign.yml index d5a6557..dfdfada 100644 --- a/.github/workflows/autoassign.yml +++ b/.github/workflows/autoassign.yml @@ -1,8 +1,11 @@ name: Auto Assign +# pull_request_target (not pull_request) so assignment works on +# fork-submitted PRs; fork pull_request runs get a read-only token. +# Safe because this workflow never checks out or executes PR code. on: issues: types: [opened] - pull_request: + pull_request_target: types: [opened] jobs: run: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 34c5e83..f6eb0e6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,17 +4,10 @@ on: pull_request: permissions: - # Allow GITHUB_TOKEN to add labels to pull requests - pull-requests: write - issues: write contents: read id-token: write jobs: - label-check: - name: Label Check - uses: ApolloAutomation/Workflows/.github/workflows/label-check.yml@main - ci: name: Building ${{ matrix.file }} / ESPHome ${{ matrix.esphome-version }} / ESPHome ${{ matrix.esphome-version }} runs-on: ubuntu-latest diff --git a/.github/workflows/label-check.yml b/.github/workflows/label-check.yml new file mode 100644 index 0000000..96a9751 --- /dev/null +++ b/.github/workflows/label-check.yml @@ -0,0 +1,20 @@ +name: Label Check + +# pull_request_target (not pull_request) so the job gets a write token on +# fork-submitted PRs too; plain pull_request runs from forks are read-only +# and cannot add labels. Safe because the called workflow only reads the PR +# body and never checks out or executes PR code. The "edited" type re-runs +# the check when the template checkboxes are changed. +on: + pull_request_target: + types: [opened, edited, reopened, synchronize] + +permissions: + pull-requests: write + issues: write + contents: read + +jobs: + label-check: + name: Label Check + uses: ApolloAutomation/Workflows/.github/workflows/label-check.yml@main From 1b419b3135ec6d31969605b5e7b1b9f8271267ae Mon Sep 17 00:00:00 2001 From: Brandon Harvey <8107750+bharvey88@users.noreply.github.com> Date: Wed, 10 Jun 2026 21:58:48 -0500 Subject: [PATCH 03/10] Fix firmware update manifest URL and check on WiFi connect - The Firmware Update entity pointed at /H-1/artifact/manifest.json, which is a 404 (CI publishes to /H-1/firmware/) - the update system has never been able to offer an update - Trigger a manifest check once WiFi connects: the update component's first 6h poll fires before the network is up and skips silently, leaving the entity stale for ~6h after every boot - Fix firmare-d -> firmware-d typo in the H-1D publish directory --- .github/workflows/build.yml | 2 +- Integrations/ESPHome/H-1.yaml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 742f70f..e91b150 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,7 +27,7 @@ jobs: yaml-files: | Integrations/ESPHome/H-1.yaml Integrations/ESPHome/H-1D.yaml - firmware-names: "1:firmware,1D:firmare-d" + firmware-names: "1:firmware,1D:firmware-d" core-yaml-path: Integrations/ESPHome/Core.yaml esphome-version: stable # Bypass check if manually triggered with bypass option diff --git a/Integrations/ESPHome/H-1.yaml b/Integrations/ESPHome/H-1.yaml index e365c51..f4b0c89 100644 --- a/Integrations/ESPHome/H-1.yaml +++ b/Integrations/ESPHome/H-1.yaml @@ -59,12 +59,13 @@ update: - platform: http_request id: firmware_update name: Firmware Update - source: https://apolloautomation.github.io/H-1/artifact/manifest.json + source: https://apolloautomation.github.io/H-1/firmware/manifest.json wifi: on_connect: - delay: 5s - ble.disable: + - component.update: firmware_update on_disconnect: - ble.enable: ap: From c1c9e8f7ed7c94b31aa9dadfc439b8c0650c116c Mon Sep 17 00:00:00 2001 From: Brandon Harvey <8107750+bharvey88@users.noreply.github.com> Date: Wed, 10 Jun 2026 22:33:56 -0500 Subject: [PATCH 04/10] Release notes: compact formatting for the HA update dialog Home Assistant shows only the first 255 characters of an ESPHome release summary, so boilerplate is expensive and ## headings render oversized in the update dialog: - Render category titles and What's Changed in bold instead of H2 - Drop the star-the-repo footer - Drop the Full Changelog line: it semver-truncates 4-part versions (always links ...X.Y.Z.1) - the shared build workflow now appends a correct compare link instead --- .github/release-drafter.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index 758ab08..8d1b19a 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -2,6 +2,7 @@ name-template: 'Release v$NEXT_PATCH_VERSION' tag-template: "$RESOLVED_VERSION" change-template: "- #$NUMBER $TITLE @$AUTHOR" sort-direction: ascending +category-template: '**$TITLE**' categories: - title: "🚨 Breaking changes" @@ -41,11 +42,9 @@ include-labels: no-changes-template: '- No changes' +# The shared build workflow appends a Full Changelog compare link to the +# release body (release-drafter cannot render 4-part version tags). template: | - ## What's Changed + **What's Changed** $CHANGES - - **Full Changelog**: https://github.com/ApolloAutomation/H-1/compare/$PREVIOUS_TAG...$RESOLVED_VERSION.1 - - Be sure to 🌟 this repository for updates! \ No newline at end of file From 7c23a1a36022f1825f670a9b61f0a8431ace18e1 Mon Sep 17 00:00:00 2001 From: Brandon Harvey <8107750+bharvey88@users.noreply.github.com> Date: Sun, 23 Aug 2026 10:45:58 -0500 Subject: [PATCH 05/10] Restore the H-1 README The README was overwritten with the H-2 one (title, photo link to a file this repo does not have, 24 LED / four button spec, H-2 charities and shop link). Rebuilt from the original README (d5137f0) and the firmware: 22 LEDs, ESP32-C3, three songs on one button. The H-1 shop page is gone, so the link points at the store root. Generated with [Claude Code](https://claude.com/claude-code) --- README.md | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index d0d55a2..b356f59 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,19 @@ -# Apollo H-2 Holiday Ornament +# Apollo H-1 Holiday Ornament -![Apollo Automation H-2](Apollo-H-2.JPG) +![Apollo Automation H-1](H-1.JPG) -**Key Features of the H-2:** +**Key Features of the H-1:** -- USB-C or battery powered ornament with 24 controllable RGB LEDs and a buzzer to play holiday tunes -- Comes preloaded with 4 holiday tunes and 4 RGB LED patterns, controlled via 4 dedicated buttons on the ornament +- USB-C or battery powered ornament with 22 controllable RGB LEDs and a buzzer to play holiday tunes +- Comes preloaded with 3 holiday tunes and 3 RGB LED patterns, played from the single button on the back (one press, two presses, or long press) - Comes flashed with basic firmware but can be flashed with our smart firmware to connect and control from Home Assistant - Could also be used as a bluetooth proxy or bluetooth tracker -- Features logo light and upgraded ESP32-C6 processor with 8MB flash +- Features an ESP32-C3 processor -**100% of profits donated to:** - -- **[CASA of Lexington](https://casaoflexington.org/)** - Advocates for children in the family court system - -- **[Open Home Foundation](https://www.openhomefoundation.org/)** - Apollo Automation is proud to back the Open Home Foundation. A portion of profits from every H-2 sold helps protect the values of privacy, choice, and sustainability in the smart home by supporting open source projects like Home Assistant and open connectivity standards. +**100% of profits donated** to a local charity in Lexington, KY. ## Links Discord (Support/feedback/discussion/future products): [http://dsc.gg/ApolloAutomation](http://dsc.gg/ApolloAutomation) -Shop: [https://apolloautomation.com/products/apollo-h-2-annual-holiday-ornament](https://apolloautomation.com/products/apollo-h-2-annual-holiday-ornament) -Wiki: [https://wiki.apolloautomation.com](https://wiki.apolloautomation.com) \ No newline at end of file +Shop: [https://apolloautomation.com](https://apolloautomation.com) +Wiki: [https://wiki.apolloautomation.com/products/h1/introduction/](https://wiki.apolloautomation.com/products/h1/introduction/) From 09fdf8225945ea701e1249c7aeb9d0a62271d0a5 Mon Sep 17 00:00:00 2001 From: Brandon Harvey <8107750+bharvey88@users.noreply.github.com> Date: Sun, 23 Aug 2026 10:47:44 -0500 Subject: [PATCH 06/10] Keep the charity section, fix only the H-1 facts Generated with [Claude Code](https://claude.com/claude-code) --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b356f59..3f53512 100644 --- a/README.md +++ b/README.md @@ -10,10 +10,14 @@ - Could also be used as a bluetooth proxy or bluetooth tracker - Features an ESP32-C3 processor -**100% of profits donated** to a local charity in Lexington, KY. +**100% of profits donated to:** + +- **[CASA of Lexington](https://casaoflexington.org/)** - Advocates for children in the family court system + +- **[Open Home Foundation](https://www.openhomefoundation.org/)** - Apollo Automation is proud to back the Open Home Foundation. A portion of profits from every H-1 sold helps protect the values of privacy, choice, and sustainability in the smart home by supporting open source projects like Home Assistant and open connectivity standards. ## Links Discord (Support/feedback/discussion/future products): [http://dsc.gg/ApolloAutomation](http://dsc.gg/ApolloAutomation) Shop: [https://apolloautomation.com](https://apolloautomation.com) -Wiki: [https://wiki.apolloautomation.com/products/h1/introduction/](https://wiki.apolloautomation.com/products/h1/introduction/) +Wiki: [https://wiki.apolloautomation.com](https://wiki.apolloautomation.com) From 68b1a9b7a19113457aed077edfa48f16364e780e Mon Sep 17 00:00:00 2001 From: Brandon Harvey <8107750+bharvey88@users.noreply.github.com> Date: Sun, 23 Aug 2026 11:14:42 -0500 Subject: [PATCH 07/10] Bump version to 26.8.23.1 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 dac4ba7..d912dde 100644 --- a/Integrations/ESPHome/Core.yaml +++ b/Integrations/ESPHome/Core.yaml @@ -1,5 +1,5 @@ substitutions: - version: "25.12.4.1" + version: "26.8.23.1" esp32: board: esp32-c3-devkitm-1 From eab6c7aa2f3f4000fcc046b92c7e8f42059b58a6 Mon Sep 17 00:00:00 2001 From: Justin Bunton Date: Thu, 27 Aug 2026 23:33:33 -0400 Subject: [PATCH 08/10] Replace deprecated rgb_order with channel_colors ESPHome 2026.8.0 replaces rgb_order/is_rgbw/is_wrgb with a single channel_colors key on esp32_rmt_led_strip (esphome#18474). --- 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 d912dde..ee6288b 100644 --- a/Integrations/ESPHome/Core.yaml +++ b/Integrations/ESPHome/Core.yaml @@ -251,7 +251,7 @@ light: default_transition_length: 0s chipset: WS2812 num_leds: 22 - rgb_order: grb + channel_colors: GRB power_supply: power_supply_1 effects: - pulse: From 22e6d3e92a7410d28ff13855e78a509cd5057bf3 Mon Sep 17 00:00:00 2001 From: Justin Bunton Date: Thu, 27 Aug 2026 23:36:31 -0400 Subject: [PATCH 09/10] Bump version to 26.8.27.1 --- 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 ee6288b..dd9f9a1 100644 --- a/Integrations/ESPHome/Core.yaml +++ b/Integrations/ESPHome/Core.yaml @@ -1,5 +1,5 @@ substitutions: - version: "26.8.23.1" + version: "26.8.27.1" esp32: board: esp32-c3-devkitm-1 From 296063ea93c9bf4948e4fc1d44b78dbc83cf22ea Mon Sep 17 00:00:00 2001 From: Brandon Harvey <8107750+bharvey88@users.noreply.github.com> Date: Sun, 30 Aug 2026 11:38:40 -0500 Subject: [PATCH 10/10] Require ESPHome 2026.8.0 for channel_colors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `channel_colors` only exists from ESPHome 2026.8.0 (esphome#18474), but these YAMLs still declared an older min_version. Devices adopted through the ESPHome dashboard track this repo at HEAD with no pinned ref, so on an older ESPHome the next recompile fails with "Unknown option channel_colors" pointing into a file the user never wrote, instead of a clear version error. ESPHome merges remote packages and checks min_version in the preload phase, before component schemas load, so the bump produces the right message. No firmware change: min_version is validation-only and emits no code, so the compiled binary is unaffected. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- Integrations/ESPHome/H-1.yaml | 2 +- Integrations/ESPHome/H-1D.yaml | 2 +- Integrations/ESPHome/H-1_Minimal.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Integrations/ESPHome/H-1.yaml b/Integrations/ESPHome/H-1.yaml index f4b0c89..6b9a2ba 100644 --- a/Integrations/ESPHome/H-1.yaml +++ b/Integrations/ESPHome/H-1.yaml @@ -10,7 +10,7 @@ esphome: name: "ApolloAutomation.H-1" version: "${version}" - min_version: 2023.11.1 + min_version: 2026.8.0 on_boot: - priority: 500 then: diff --git a/Integrations/ESPHome/H-1D.yaml b/Integrations/ESPHome/H-1D.yaml index eddf36a..7db7b1b 100644 --- a/Integrations/ESPHome/H-1D.yaml +++ b/Integrations/ESPHome/H-1D.yaml @@ -10,7 +10,7 @@ esphome: name: "ApolloAutomation.H-1D" version: "${version}" - min_version: 2023.11.1 + min_version: 2026.8.0 on_boot: - priority: 500 then: diff --git a/Integrations/ESPHome/H-1_Minimal.yaml b/Integrations/ESPHome/H-1_Minimal.yaml index d1630a5..6728055 100644 --- a/Integrations/ESPHome/H-1_Minimal.yaml +++ b/Integrations/ESPHome/H-1_Minimal.yaml @@ -10,7 +10,7 @@ esphome: name: "ApolloAutomation.H-1_Minimal" version: "${version}" - min_version: 2023.11.1 + min_version: 2026.8.0 on_boot: - priority: 500 then: