mesh: LightOverrideMsg — command a single light across devices - #463
Open
bennotk wants to merge 1 commit into
Open
mesh: LightOverrideMsg — command a single light across devices#463bennotk wants to merge 1 commit into
bennotk wants to merge 1 commit into
Conversation
Collaborator
Author
|
Same infrastructure-level CI failure as on #462: every job fails within ~2 seconds with no runner assigned ( Generated by Claude Code |
bennotk
force-pushed
the
claude/issue-457-override
branch
from
July 25, 2026 10:08
1334ece to
7e4aeca
Compare
bennotk
force-pushed
the
claude/issue-458-override-msg
branch
2 times, most recently
from
July 25, 2026 10:11
33b5710 to
3fbd9cf
Compare
bennotk
force-pushed
the
claude/issue-457-override
branch
from
July 25, 2026 10:19
cccbaca to
54fe618
Compare
Additive MsgType carrying targetMac + lightIndex (addressing mirrors SetGroupMsg), a full LightConfig snapshot, durationMs, and a clear flag. The receiver funnels it through the same #457 arbitration as the local REST surface — receive order decides between concurrent senders — and pushes the dashboard's override state. Sender construction of the snapshot stays with the caller (the set-light button action, #459). Inventory entry in docs/mesh-compatibility.md with the len >= sizeof framing rule. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QCqsYkCrhRHLoWZFuDTWjh
bennotk
force-pushed
the
claude/issue-458-override-msg
branch
from
July 25, 2026 10:19
3fbd9cf to
4e321e0
Compare
Collaborator
Author
|
CI is green after rebasing onto the renamed project's Still stacked on #462 (base branch Generated by Claude Code |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Stacked on #462 (base branch
claude/issue-457-override) — merge that one first; GitHub retargets this PR tomainautomatically when the base branch is deleted.MsgType::LightOverride(37) withLightOverrideMsg:targetMac[6]+lightIndex(addressing mirrorsSetGroupMsg, target filtering after parse), fullLightConfigsnapshot,durationMs(0 = stays until displaced), and aclearflag so any device — later a graph node — can return a light to its group without supplying a snapshotmain.cpp: a targeted device stores/clears the override through the exact same config,web: per-light override with last-command-wins arbitration #457 arbitration path as the local REST surface (LightOverrides+applyEffectiveLight+ peers push), so concurrent senders resolve by receive order — last one wins; non-targets ignore the message entirelyMeshManager::broadcastLightOverride()takes a fully-built message — snapshot construction deliberately stays with the sender (the set-light button action, actions,web: set-light button action targeting a light on any device #459, per the rework plan)docs/mesh-compatibility.md: fixed-size,len >= sizeof(LightOverrideMsg), same-firmware wire policy, no existing message touchedCloses #458
Test plan
npm run lintandnpm test(44/44) pass — no JS touched, run as regressionclang-format --dry-run --Werrorclean on all changedsrc/filespr-OTA builds on two devices (A sends, B receives — needs a sender, which lands with the actions,web: set-light button action targeting a light on any device #459 button action; until then reviewable as message + receiver wiring): a broadcast targeting B overrides exactly the addressed light on B while other devices update nothing,clearreturns it to the group from any sender, B's dashboard flips its indicator both ways🤖 Generated with Claude Code
https://claude.ai/code/session_01QCqsYkCrhRHLoWZFuDTWjh
Generated by Claude Code