Rewrite of the module around what the console itself reports:
- Settings cut to console address/ports, the iPad relay and debug logging;
nothing site-specific remains. An upgrade script carries v1 configs and
remaps v1 actions/feedbacks whose ids were reused.
- On connect the module reads every name, buss type (aux/group), stereo
mode, fader/mute/solo/pan and the snapshot list; entities that never
answer are hidden. Definitions rebuild (debounced, skipped when
identical) when names, buss types or snapshots change.
- Every entity option is a searchable dropdown of live names. 70 actions
cover inputs, aux sends, group assigns, busses, matrix outputs and sends,
control groups, graphic EQs, channel-strip switches, trim/gain/filters and
snapshots, each level with set and encoder-friendly adjust variants.
- Boolean, value and bar feedbacks for every state, input level and
gain-reduction meters via the console's meter subscription protocol, and
about 2800 presets including rotary knob presets with live level text.
- A write guard keeps fast encoder turns from being undone by delayed
echoes; feedbacks are re-checked per instance.
- Relay: the client table survives config changes, idle iPads are kept for
an hour by default (0 = forever), bind failures retry and show in status.
npm test: 326 checks pass on Node 25 and on Companion's Node 22.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bitfocus Companion 5 connection module (ESM, @companion-module/base ~2.1.3,
runtime node22) for the DiGiCo S21/S31. It occupies the console's single
iPad slot, controls per-channel sends/assigns to one buss, aux send
level/on/pan, mutes, faders and snapshots, and relays any number of DiGiCo
iPad apps through to the console byte-for-byte.
The S31's iPad extension was probed live: it speaks the SD/DiGiCo Pad OSC
tree (console receives on 8000, replies only to the configured iPad port
9000). tools/mock-s31.js emulates the console and test/selftest.js runs the
link + relay end to end against it. docs/design-v2.md is the brief for the
generic v2 rewrite.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>