feat: add a static Tab5 node home - #39
Conversation
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: needs maintainer review before merge. Reviewed September 10, 2026, 12:39 PM ET / 16:39 UTC (Revision 9). ClawSweeper reviewWhat this changesAdds a static room-node home with separate Wi-Fi, Gateway and Talk statuses, retained setup guidance, and optional idle brightness enabled at 18% on Tab5. Merge readiness✅ Ready for maintainer review The static home remains useful work absent from main. The earlier setup-guidance finding is repaired, the draft blocker is resolved, and no remaining actionable patch defect was found. Priority: P2 Review scores
Verification
How this fits togetherThe shared room-node runtime turns network and Talk events into display status. Board adapters supply the display and backlight controls, while Canvas and Diagnostics can cover the home screen. flowchart TD
A[Wi-Fi events] --> D[Room-node status facts]
B[Gateway and Talk events] --> D
C[Board display settings] --> E[Shared display controller]
D --> E
F[Canvas and Diagnostics] --> E
E --> G[Home screen and backlight]
Before mergeNone. Agent review detailsSecurityNone. Review metrics
Technical reviewBest possible solution: Keep display policy in the shared controller, preserve zero-default sleep for existing boards, and retain independent status facts beneath overlays. Do we have a high-confidence way to reproduce the issue? Not applicable as a feature request; current-main source confirms the existing text-only, idle-dark behavior. Is this the best way to solve the issue? Yes. Extending the shared display controller avoids board-specific duplication, and the trailing zero-default field preserves existing board initialization. AGENTS.md: not found in the target repository. Codex review notes: model internal, reasoning medium; reviewed against e18627b3103d. LabelsLabel justifications:
EvidenceWhat I checked:
Likely related people:
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (8 earlier review cycles)
|
* commit 'f3f7719a9d2d75763c1645dcd758b61189c8e872': fix(ci): pin Tab5 to qualified ESP-IDF image fix(tab5): retain DMA buffers when flash encryption is active feat(tab5): add a static room-node home (#39) fix(talk): enforce safe SDK logging without global changes fix(ci): verify unpatched camera components against their lock fix(ui): retain setup guidance on the node home ci: publish traceable example firmware bundles (#37) ci: require explicit verified component releases (#38) docs: clarify source setup and hardware qualification
Problem
Tab5 disables the animated face, leaving a transient text state and an idle-dark display instead of a recognizable node home. A generic connecting label also cannot distinguish Wi-Fi, the node Gateway connection, and the operator session used by Talk.
Changes
EMBED_FILES, with source hashes, conversion provenance and the MIT notice. No runtime PNG decoding or image animation.display.idle_brightnessfield. Tab5 explicitly uses 18%; omitted/zero preserves other boards' idle sleep, and explicit off requests remain unchanged. The dimly lit Tab5 home consumes more idle power.Dependency
Originally stacked on #37 to reuse its firmware bundles and provenance. That dependency has landed; this PR now targets
main.Review Follow-up
Repair commit
e9ccae6d7855552c2e44c1e5f1292faa6a9028abrestores the existing USB-console setup guidance to the bounded home detail region with neutral styling. Error styling, independent connection facts, overlays and idle brightness remain unchanged. The actual LVGL regression failed on the original head at setup visibility; all three repaired host-rendering profiles pass with ASan/UBSan. Focused independent reviews found no actionable P0-P2 findings.Current head
63ed5129f25e3b373f6bb3c9988829681a3c1d7apreserves that signed repair and the landed main commits through an ancestry merge. The only conflict was the existing LVGL CI invocation, which is retained. Its complete tree equals maine18627b3103d99b533cd73987ec486a865926111plus the original PR39-only delta and the setup repair; the explicit component-release guard is unchanged. New-head CI, attempt 1, passed all five builds. No new firmware was flashed for this follow-up.Checks
git diff --checkpass.c7c7a0cin its exact-head CI run: component test app, generic ESP32, BOX3, Tab5 P4 and Waveshare S3. This is historical proof, not the follow-up head's CI result.home-connection-facts, and all three real LVGL scenarios. This closes the SDK-dependent lifecycle execution gap from local validation.10028371339: the ZIP matches GitHub's artifact digest, all 11 checksum entries and 10 manifest file records match, and all four flash images match their declared offsets. The other three firmware bundles were not downloaded.Original Firmware Provenance
c7c7a0c8cb2178ceba41af03e4b3a8c10f3b6f8a.217368b27de05687d560407f51ee0576e67fddfa, with parentsc3867131285ecd0f3ddc6c7c644b4d71282f5a84(PR37 base) and the PR head. Its Git tree equals the PR head's tree.3ff7857d2a7f3cea1389d909291c110cd7f49c116b312de622129e69dc054c1a.0x2000,0x8000,0x10000,0x810000; sizes and non-overlap verified within 16 MiB.362a1776ec212788fda95f75b733bfdde3a0c394, build revisionv5.5.5-648-g362a1776ec2; esptool4.12.0. The SDK matches the prior PR37 hardware build.Original Physical Display Check
217368b27de05687d560407f51ee0576e67fddfaimage was flashed and booted on an M5Stack Tab5 with ESP32-P4 revision 1.3. All four post-write flash digests were independently verified at0x2000,0x8000,0x10000and0x810000.OpenClaw Room Nodeidentity and board name are readable, withWi-Fi Offline,Gateway Pairing requiredandTalk Waiting for operator, without overlapping content.Limits
Physical touch, Tab5 camera capture, network pairing, Canvas RPC, API/provider calls and end-to-end Talk remain unqualified on this Tab5 firmware. Physical luminance and PWM were not measured. The existing intermittent 100 ms display-lock timeout remains unresolved; the observed diagnostics close does not establish that it is repaired. No SDK/protocol/provider changes, version bump or release.
CI still inherits the moving
release-v5.5SDK lane. The recorded SDK is not the pristinev5.5.5release tag. Artifact integrity, hosted builds and the bounded physical display check do not establish reproducibility, secure-update qualification or full hardware qualification.