Skip to content

Unified firmware: runtime Bluetooth Proxy switch + Stable/Beta channel OTA#66

Open
bharvey88 wants to merge 2 commits into
betafrom
unified/firmware-channel
Open

Unified firmware: runtime Bluetooth Proxy switch + Stable/Beta channel OTA#66
bharvey88 wants to merge 2 commits into
betafrom
unified/firmware-channel

Conversation

@bharvey88

Copy link
Copy Markdown
Contributor

Version: 26.7.12.1

Adds:

Fixes:

  • The _BLE build split is retired the MSR-1 way: _BLE yamls stay compilable (dashboard_import compat) but lose their own proxy/tracker blocks; their update entities point at the standard manifests — they were never published, so no fielded devices sit on a legacy firmware-ble manifest; self-builders converge onto the unified image.
  • Core's and the _BLE/_Minimal variants' on_boot converted from mapping to list form so package merging concatenates instead of silently replacing (the AIR-1 merge gotcha).
  • No pre-OTA BLE disable in the update button — ESPHome's OTA quiesces BLE itself (MSR-1 #103). The button still holds prevent_deep_sleep() and re-arms sleep on the not-started path.

Breaks:

  • Nothing fielded: Minimal and _BLE images were never published. Sleeping devices only see channel changes/updates while awake — ota_mode / "Prevent Sleep" (default ON) governs, unchanged. Note beta's .github/ is 9 commits behind main (Consolidate workflows into shared ApolloAutomation/Workflows reusable workflows #64 workflow consolidation), so the eventual beta→main sync will need workflow reconciliation — unrelated to this PR's content.

Supersedes #65. Leaves #61 (stale-entity fix) alone.

Checks:

  • Documentation Updated
  • Build Number Incremented In Core.yaml

🤖 Generated with Claude Code

…l OTA

Port of the pattern MSR-1 shipped as 26.7.9.1 (ApolloAutomation/MSR-1
#100/#103/#104), replacing the earlier firmware-channel branch:

- bluetooth_proxy + esp32_ble_tracker compile into every image; a
  "Bluetooth Proxy" switch (default off, persisted) starts/stops scanning
  at runtime, re-applied at boot (on_boot -300). On this deep-sleep device
  the proxy pairs with "Prevent Sleep" for continuous use. The _BLE build
  split is retired: _BLE yamls stay compilable but their update entities
  point at the standard manifests (they were never published), so
  self-built _BLE devices converge onto the unified image.
- Firmware Channel select (Stable/Beta) + apply_ota_source doing a direct
  set_source_url swap from per-variant ota_stable_manifest/ota_beta_manifest
  subs (${variant_slug}: "", -b, 2, -b2); channel re-applied at boot
  (on_boot -100)
- Firmware Update button holds prevent_deep_sleep for the download and
  re-arms sleep on the not-started path; no pre-OTA BLE disable (ESPHome's
  OTA quiesces BLE itself)
- http_request consolidated into Core.yaml with the proven buffer sizes
  (rx 5120 / tx 2048 for GitHub release redirects)
- Core + _BLE/_Minimal on_boot converted to list form so package merging
  concatenates instead of replacing
- Minimal images take over the Pages firmware*/ dirs for OTA/adoption;
  improv images move to the *-factory/ dirs (installer page repointed)
- beta-channel/ wrappers default the select to Beta; build-beta.yml
  publishes the four per-variant manifests (absolute URLs) to the rolling
  beta-fw pre-release
- version 26.7.12.1

Supersedes #65.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
@coderabbitai

coderabbitai Bot commented Jul 12, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@bharvey88, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 56 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 50208593-dc94-4894-bbf3-7e786a75b2f1

📥 Commits

Reviewing files that changed from the base of the PR and between a314d08 and 217e387.

📒 Files selected for processing (21)
  • .github/workflows/build-beta.yml
  • .github/workflows/build.yml
  • Integrations/ESPHome/.gitignore
  • Integrations/ESPHome/Core.yaml
  • Integrations/ESPHome/TEMP-1.yaml
  • Integrations/ESPHome/TEMP-1B.yaml
  • Integrations/ESPHome/TEMP-1B_BLE.yaml
  • Integrations/ESPHome/TEMP-1B_BLE_R2.yaml
  • Integrations/ESPHome/TEMP-1B_Minimal.yaml
  • Integrations/ESPHome/TEMP-1B_Minimal_R2.yaml
  • Integrations/ESPHome/TEMP-1B_R2.yaml
  • Integrations/ESPHome/TEMP-1_BLE.yaml
  • Integrations/ESPHome/TEMP-1_BLE_R2.yaml
  • Integrations/ESPHome/TEMP-1_Minimal.yaml
  • Integrations/ESPHome/TEMP-1_Minimal_R2.yaml
  • Integrations/ESPHome/TEMP-1_R2.yaml
  • Integrations/ESPHome/beta-channel/TEMP-1B_Minimal.yaml
  • Integrations/ESPHome/beta-channel/TEMP-1B_Minimal_R2.yaml
  • Integrations/ESPHome/beta-channel/TEMP-1_Minimal.yaml
  • Integrations/ESPHome/beta-channel/TEMP-1_Minimal_R2.yaml
  • static/index.html
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch unified/firmware-channel

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Add an empty encryption: key to the api: block so ESPHome/HA
provisions a per-device API key on adoption, matching MSR-1. Bump
firmware version to 26.7.14.1.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
@TrevorSchirmer

Copy link
Copy Markdown
Member

@bharvey88 Conflicts

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants