Add Maestro servo commands, WCB WLED board, and NaviCore Controller board#8
Conversation
…oard
- maestro.json: add the local Pololu servo command set (setTarget, goHome,
setSpeed, setAccel, setSpeedAccel, setEasing, restartScript, stopScript) to
the existing Maestro component, alongside the ;M sequence trigger; rename the
component/manifest entry to "Maestro (Pololu)".
- wcb-wled.json (new): WCB-relayed WLED lighting commands (";L<id>,VERB") with a
WLED-id param (power / brightness / preset / color / effect / palette / raw).
- navicore.json (new): NaviCore controller-native sequence commands
(record / play / stop).
- manifest.json: register the two new boards.
The servo / record / play / stop commands carry an optional "local" routing hint
(and the servo position a "unit":"servoPulse" UI hint) used by the NaviCore
consumer; they are additive and safely ignored by other consumers.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
@claude please review |
|
Claude encountered an error after 3m 25s —— View job Claude is reviewing this PR
|
- Pull the NaviCore board entirely. Its record/play/stop are controller-LOCAL
actions with no wire grammar; forcing them into a serial-command book caused
the universal {clip} matcher (swallowed any bare-numeric raw step), the
duplicate record/play templates, the unsupported bool loop param, and the
encoder:"none" throw. They stay in NaviCore's own local seed instead.
- Split Maestro by transport (board identity): `maestro` now carries only the
;M sequence-trigger WCB verb; new `maestro-native` (device-native) holds the
raw Pololu protocol — setTarget/goHome/setSpeed/setAccel/setSpeedAccel/
setEasing/restartScript/stopScript. Dropped the NaviCore-only `local`/`unit`
hints so the board is consumer-agnostic.
- Fix wled.color pattern -> [0-9A-Fa-f]{6}(?:[0-9A-Fa-f]{2})? (anchor-free,
non-capturing) so ;L1,COL,FF0000 round-trips instead of falling to raw.
- Free-text params use `pattern` instead of the unsupported type:"text"
(wled.json payload -> ".+", maestro.setEasing -> "[A-Za-z0-9]+").
- Bump libraryVersion 4.1.0 -> 4.2.0 (manifest + releases.json, byte-equal),
update load-node/engine version assertions and component count 19 -> 21.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
travisccook
left a comment
There was a problem hiding this comment.
Verified locally against the updated head (77f59c3): npm run validate exits clean and the full suite passes 324/324.
Thanks for reworking this properly rather than papering over the schema errors — splitting maestro-native out so each board carries a single transport, and dropping NaviCore rather than shipping a template that would have shadowed bare-numeric steps catalog-wide, were both the right calls.
The color-pattern fix is exactly right: anchors removed and the group made non-capturing, which is what the engine's inline splice requires. ;L1,COL,FF0000, ;L1,JSON,{"bri":128}, and the Maestro verbs all now round-trip byte-identically to the correct command id.
I also ran a full-catalog mis-attribution probe (every example re-parsed and checked against its owning command id — something the round-trip test doesn't assert). It found 4 mis-attributions, all pre-existing on main: the known astropixels-logics / rseries-logic shared @nM/@nP overlap. This PR introduces none.

This adds three things to the DroidNet command library, contributed from the NaviCore controller project (https://github.com/greghulette/NaviCore).
1. Maestro (Pololu) — servo commands
Adds the local Pololu Maestro command set to the existing
maestrocomponent (alongside the;M{id}{seq}sequence trigger): Set servo position, Send servos home, Set speed / accel / speed+accel, Set active easing, Run script (subroutine), Stop script. Renamed the component + manifest entry to Maestro (Pololu).2. WCB · WLED Lighting — new board
wcb-wledWCB-relayed WLED commands (
;L<id>,VERB) with a WLED-id param: on / off / toggle, brightness, preset, color, effect (+ speed/intensity), palette, and a raw-JSON escape hatch.3. NaviCore Controller — new board
navicoreNaviCore controller-native sequence commands: Record clip (toggle), Play clip (+ loop), Stop record/playback.
Notes for maintainers
"local"field, and the servo position a"unit":"servoPulse"field — these are NaviCore consumer hints for routing/UI. They're additive and safely ignored by other consumers; happy to drop or relocate them if you'd prefer the library stay consumer-agnostic.;Mwcb-verb — flagged in case you'd rather model them as separate components.🤖 Generated with Claude Code