1
0
Fork
You've already forked grow-app
0

HGC-4 OTA firmware update orchestration #2

Merged
stackdrift merged 2 commits from hgc-004-ota-firmware-updates into main 2026年06月21日 03:32:42 +02:00

Summary

  • Parse retained firmware metadata and app-owned channel state from the site MQTT namespace.
  • Add Codeberg generic package lookup, ESPHome manifest serving, checksum-validated binary proxying, and non-retained INSTALL apply endpoints.
  • Add a Svelte 5 firmware Updates panel with channel selection, check/apply actions, device state, source SHA, and release summary.

Tests

  • pnpm check
  • pnpm test
  • pnpm test:e2e e2e/dashboard.spec.ts

HGC-4

## Summary - Parse retained firmware metadata and app-owned channel state from the site MQTT namespace. - Add Codeberg generic package lookup, ESPHome manifest serving, checksum-validated binary proxying, and non-retained INSTALL apply endpoints. - Add a Svelte 5 firmware Updates panel with channel selection, check/apply actions, device state, source SHA, and release summary. ## Tests - pnpm check - pnpm test - pnpm test:e2e e2e/dashboard.spec.ts HGC-4
Add OTA firmware update orchestration
All checks were successful
Build and Publish grow-app Image / build (pull_request) Successful in 36s
fcda78db19
stackdrift changed title from (削除) HGC-004 OTA firmware update orchestration (削除ここまで) to HGC-4 OTA firmware update orchestration 2026年06月21日 02:03:56 +02:00
Author
Owner
Copy link

HGC-004 screen references from mocked firmware states:

Stable firmware update panel

Stable channel selected, package available, Apply enabled.

Edge firmware update check

Edge channel selected after Check, with Apply gated while device-reported latest is still out of sync.

Bootstrap required mobile

Mobile bootstrap-required state for a device that has not yet published firmware metadata/update entities.

HGC-4

HGC-004 screen references from mocked firmware states: ![Stable firmware update panel](https://codeberg.org/attachments/3d8b6844-277c-4cf0-923e-209c8b00442e) Stable channel selected, package available, Apply enabled. ![Edge firmware update check](https://codeberg.org/attachments/b44757ce-2456-4016-8e46-419985216344) Edge channel selected after Check, with Apply gated while device-reported latest is still out of sync. ![Bootstrap required mobile](https://codeberg.org/attachments/7291bf35-2b13-4f8b-b944-fbd08c1c1fbb) Mobile bootstrap-required state for a device that has not yet published firmware metadata/update entities. HGC-4
Handle paginated firmware package listings
All checks were successful
Build and Publish grow-app Image / build (pull_request) Successful in 37s
5c328f6390
Author
Owner
Copy link

Claude review follow-up for HGC-4:

Addressed in this PR set:

  • Fixed Codeberg package listing pagination in grow-app package lookup and grow-fleet edge pruning.
  • Added unit coverage for paginated package listing in both repos.
  • Restored grow-fleet release-tag cache behavior: release jobs now try cached firmware for the tagged SHA, then compile/store only on cache miss.

Filed as follow-up Kanboard work:

Deferred / non-issues:

  • Self-hosted runner trust boundary is not an issue for the current repo policy.
  • retainedByTopic pruning is not being tracked separately for Phase 1. It stores one last payload per seen topic, not one entry per message, so growth is bounded by the local site topic set. Revisit as part of central-mode MQTT hardening if broader or ephemeral namespaces are introduced.

Verification after the follow-up commits:

  • grow-app PR run 4931633: success.
  • grow-fleet PR run 4931639: success.

HGC-4

Claude review follow-up for HGC-4: Addressed in this PR set: - Fixed Codeberg package listing pagination in grow-app package lookup and grow-fleet edge pruning. - Added unit coverage for paginated package listing in both repos. - Restored grow-fleet release-tag cache behavior: release jobs now try cached firmware for the tagged SHA, then compile/store only on cache miss. Filed as follow-up Kanboard work: - [Task 18: grow-fleet edge publish path filters and concurrency guard](https://kanban.ai.dephekt.net/public/task/18/837ffef1c79917c32d6ed0f994e5ab6f4442cd25f3ca60da3acf6fceaf61) - [Task 19: support custom ESPHome update install payloads](https://kanban.ai.dephekt.net/public/task/19/837ffef1c79917c32d6ed0f994e5ab6f4442cd25f3ca60da3acf6fceaf61) Deferred / non-issues: - Self-hosted runner trust boundary is not an issue for the current repo policy. - retainedByTopic pruning is not being tracked separately for Phase 1. It stores one last payload per seen topic, not one entry per message, so growth is bounded by the local site topic set. Revisit as part of central-mode MQTT hardening if broader or ephemeral namespaces are introduced. Verification after the follow-up commits: - grow-app PR run 4931633: success. - grow-fleet PR run 4931639: success. HGC-4
stackdrift force-pushed hgc-004-ota-firmware-updates from 5c328f6390
All checks were successful
Build and Publish grow-app Image / build (pull_request) Successful in 37s
to cddf17afa2
All checks were successful
Build and Publish grow-app Image / build (pull_request) Successful in 34s
Build and Publish grow-app Image / build (push) Successful in 51s
2026年06月21日 03:24:46 +02:00
Compare
stackdrift deleted branch hgc-004-ota-firmware-updates 2026年06月21日 03:32:43 +02:00
Sign in to join this conversation.
No reviewers
Labels
Clear labels
No items
No labels
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
stackdrift/grow-app!2
Reference in a new issue
stackdrift/grow-app
No description provided.
Delete branch "hgc-004-ota-firmware-updates"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?