Fix beta manifest fetch and guard force-install against stale manifests#93
Conversation
Hardware testing surfaced two OTA bugs (thanks Brandon): - GitHub release-asset URLs answer with a redirect whose signed Location header exceeds esp_http_client's 512-byte default rx buffer, so every beta-channel manifest fetch failed with "HTTP_CLIENT: Out of buffer". Set buffer_size_rx: 2048 on all images. - update.perform(force) installs whatever manifest was last fetched successfully. Combined with the fetch failure above, pressing Firmware Update on the Beta channel silently installed the cached STABLE manifest - downgrading the device to the old image (which also wiped its saved settings, including WiFi, on boot). The button now verifies the cached manifest URL matches the selected channel and variant before performing, and refuses with a clear log line otherwise. Version: 26.7.8.6 🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (4)
WalkthroughBumps the ESPHome firmware version substitution and reworks the Firmware Update button to validate the cached OTA manifest's channel/variant against user selections before installing, instead of forcing an install unconditionally. Separately, increases ChangesFirmware Update Logic
HTTP Buffer Fix
Estimated code review effort: 2 (Simple) | ~12 minutes Possibly related PRs
Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
Version: 26.7.8.6
What does this implement/fix?
Hardware testing surfaced two OTA bugs that combined into WiFi-eating downgrades:
Locationheader exceedsesp_http_client's 512-byte default rx buffer (HTTP_CLIENT: Out of buffer). Fixed withbuffer_size_rx: 2048on all images. Without this, beta-channel devices could neither refresh their manifest nor be offered updates.update.perform(force)uses whatever manifest was last fetched successfully; with the fetch failing, pressing the button on Beta silently installed the cached Stable manifest - downgrading to the old pre-feature image, which also wiped saved settings (WiFi credentials included) on boot. The button now verifies the cached manifest URL matches the selected channel and variant before performing, and refuses with a clear log line otherwise.Log evidence from the failing device:
All five configs validate on ESPHome 2026.6.4. Needs a hardware re-test of the Beta force-install path once merged.
Types of changes
Checklist / Checklijst:
If user-visible functionality or configuration variables are added/modified:
🤖 Generated with Claude Code
Summary by CodeRabbit