Repository navigation
feat: show each board's firmware version and warn on a major mismatch #171
Description
Summary
From firmware v0.2.0 (OpenSkyHawk/OpenSkyhawk#359, #295 A12), every board reports its firmware release version. Each STM32 node sends it in READY_n, and PanelBridge appends it to that node's _NODE_STATUS row (v4: fwMajor/fwMinor/fwPatch, row bytes 14–16). The node-0 row carries the Gateway's own bridge build. The parser work that decodes these fields is #170; this ticket shows them and warns on mismatches.
Blocked on: #170.
Why
v1.0's rule is that nodes on one bus share a major version. Until now nothing showed which firmware a board runs, so a board missed in a reflash went unnoticed.
Changes
- Show each board's firmware version in the Cockpit / node detail, and the Gateway's from the node-0 row. — feat(nodes): show each board's firmware version and warn on a major mismatch #184
-
00 00 00→ "version not reported": no READY seen since the Gateway booted (the board was already running when the Gateway started; it reports after its next reset), or older firmware. — feat(nodes): show each board's firmware version and warn on a major mismatch #184 (2026-10-27: the reason in this box is outdated. Since fix(firmware): node versions go missing when the bridge boots after a node OpenSkyhawk#383 a board already running reports at the Gateway's first sync, with no reset, so on current firmware a lasting 0.0.0 means firmware that doesn't report a version. The hint text ("after its next restart", "older than 0.2.0") and the Gateway card ("shows after the Gateway's next restart") get new wording in a client cleanup task, along with the design mock they came from.) - Warn per board when its
fwMajordiffers from the Gateway's (node-0 row). Wording along the lines of " runs firmware 1.x, Gateway runs 2.x — reflash it". — feat(nodes): show each board's firmware version and warn on a major mismatch #184 - "Client too old for this firmware" alert when the Gateway's major is newer than the client supports. — feat(nodes): show each board's firmware version and warn on a major mismatch #184 (2026-10-27: "supports" currently comes from the synced
FIRMWARE_RELEASE, which is the placeholder 0.1.0 until a release rewritesFirmwareVersion.h, so a 1.0.0 Gateway would show the banner. Decided: pin the supported major to 1 and keep the synced value for display only. Goes in a client cleanup task.) - A reflash shows up live: the bridge pushes a
_NODE_STATUSdelta when an alive board's version changes. — feat(nodes): show each board's firmware version and warn on a major mismatch #184 - Tests: version display, not-reported, mismatch warning, client-too-old, live version change. — feat(nodes): show each board's firmware version and warn on a major mismatch #184
Design
The version shows in the node / PDU sheet's Firmware section on the Cockpit board: https://claude.ai/artifact/R8DXWWC4uyAby54tBQLo8v (the rest of that section — release comparison, Install version…, From file…, history — is #173 / #175 / #177).
Activity
fix(nodes): node status v4 — re-sync to firmware main, tolerant rows,…
docs: add CLAUDE.md with release, firmware and ticket rules (#189)
feat(cockpit): firmware button, sheet and Overview banner (#173 PR 1) (…