vdo-streamdeck

VDO.Ninja Version Compatibility Audit

Audit date: 2026-07-10.

Scope

The plugin command registry and transport were compared directly with:

No VDO.Ninja source or established API handler was changed during this plugin review.

Result

Every command exposed by the plugin except activateQueuedGuest and the newer muteAllGuests convenience wrapper exists in the checked v29.4 API surface. The plugin no longer depends on the wrapper and does not use the current-month scene-force extension where a legacy-safe path exists.

Plugin area API commands sent Pre-v30.1 behavior
Connection/state getDetails, getGuestList Existing shapes retained.
Local controls mic, camera, speaker, record, togglescreenshare, togglehand, forceKeyframe, reload, hangup Existing shapes retained. Record uses explicit true or false; VDO.Ninja has no record toggle command.
Guest controls mic, camera, speaker, display, volume, group, forward, hangup, solo/chat/refresh commands Existing shapes retained. Commands whose false result means rejection now show an alert.
Guest keyframe forceKeyframe Sent without waiting for a callback because the legacy target handler performs the action but returns no result.
Guest scene toggle addScene Existing toggle shape retained.
Fixed scene force addScene, addScene2 through addScene8 Uses the historical boolean semantics. The legacy handler sets the current button value and then toggles, so the payload intentionally sends the inverse of the desired final state.
Named scene force addScene Uses live getDetails.scenes state. It skips an already-correct state or sends one legacy toggle. If state is unavailable, it alerts instead of risking the wrong result.
Layout/slot layout, setslot Existing shapes retained.
Mute all One targeted mic command per non-director guest Replaces the v30.2-only muteAllGuests wrapper with the long-standing guest mic path. Directors and screen-share pseudo-guests are excluded.
Transfer all One forward command per non-director guest Existing shape retained, with the existing two-press safety guard.
PTZ Local zoom/pan/tilt/focus/exposure; guest ptz* commands Existing v29.4 shapes retained. Unsupported local/guest combinations are normalized before a button can send them.
Value dials volume, panning, bitrate, setBufferDelay Existing shapes retained. All-stream buffer delay continues to use value2: "*".
Activate held guest activateQueuedGuest Requires v30.2+. No equivalent native &api command exists in v29.4, so the inspector labels this limitation and an older page returns an alert.

Transport Compatibility

Automated Coverage

The test suite now checks:

Physical Stream Deck key/dial and browser permission prompts still require a hardware or Stream Deck Mobile smoke test.