Skip to content

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

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

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

Conversation

@bharvey88

@bharvey88 bharvey88 commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Version: 26.7.12.1

Adds:

Fixes:

  • The _BLE build split is retired the MSR-1 way: the _BLE yamls stay compilable (dashboard_import compat) but lose their own proxy/tracker blocks and their update entities point at the standard manifests — they were never published, so there are no fielded _BLE devices to keep on a legacy manifest; self-builders converge onto the unified image.
  • _BLE variants' on_boot converted from mapping to list form so Core's boot entries merge instead of silently replacing the variant's block.
  • 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.
  • min_version 2025.6.0 → 2025.11.0 (the update-system floor set on R_PRO-1).

Breaks:

  • Nothing fielded: Minimal images were never published, _BLE images were never published. Sleeping devices only see channel changes/updates while awake — ota_mode / "Prevent Sleep" (default ON) governs, unchanged.

Supersedes #69.

Checks:

  • Documentation Updated
  • Build Number Incremented In Core.yaml

🤖 Generated with 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: 3a52fcdf-4fe8-4810-9f26-9f2795113c3f

📥 Commits

Reviewing files that changed from the base of the PR and between 7eaa85e and 230a74b.

📒 Files selected for processing (13)
  • .github/workflows/build-beta.yml
  • .github/workflows/build.yml
  • Integrations/ESPHome/.gitignore
  • Integrations/ESPHome/Core.yaml
  • Integrations/ESPHome/PLT-1.yaml
  • Integrations/ESPHome/PLT-1B.yaml
  • Integrations/ESPHome/PLT-1B_BLE.yaml
  • Integrations/ESPHome/PLT-1B_Minimal.yaml
  • Integrations/ESPHome/PLT-1_BLE.yaml
  • Integrations/ESPHome/PLT-1_Minimal.yaml
  • Integrations/ESPHome/beta-channel/PLT-1B_Minimal.yaml
  • Integrations/ESPHome/beta-channel/PLT-1_Minimal.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.

…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} keeps PLT-1 vs PLT-1B on their own manifests); the
  channel is 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)
- _BLE variants' on_boot converted to list form so Core's on_boot entries
  merge instead of being replaced
- Minimal images take over Pages firmware/ and firmware-b/ for OTA and
  adoption; improv images move to firmware-factory/ and firmware-b-factory/
  (installer page repointed)
- beta-channel/ wrappers default the select to Beta; build-beta.yml
  publishes manifest.json + manifest-b.json (absolute URLs) to the rolling
  beta-fw pre-release
- min_version 2025.11.0 (update-system floor); version 26.7.12.1

Supersedes #69.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
@bharvey88
bharvey88 force-pushed the unified/firmware-channel branch from ecc8f3d to 5d4a6e8 Compare July 12, 2026 21:38
@bharvey88 bharvey88 changed the title Firmware Channel switching (unified pattern) + serve end-user images for OTA Unified firmware: runtime Bluetooth Proxy switch + Stable/Beta channel OTA Jul 12, 2026
@bharvey88

Copy link
Copy Markdown
Contributor Author

Reworked: PLT-1 has real _BLE variants, so this PR now carries the full unified treatment (bluetooth_proxy compiled into every image + runtime "Bluetooth Proxy" switch), not just the channel select. Body updated to match; branch force-pushed.

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)
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.

1 participant