Bug
When creating multiple Camera Controls | Cycle Camera buttons, selecting/deselecting camera groups in any button's Property Inspector affects all other instances. Each button should maintain its own camera group selection.
Reported by: Glen Becker (Discord, 2026-03-28)
Steps to Reproduce
- Add two Camera Controls actions to the Stream Deck, both set to "Cycle Camera"
- Open the PI for button A and select only "Cockpit" and "Chase"
- Open the PI for button B — it shows the same selection (Cockpit + Chase)
- Expected: button B retains its own independent selection
Root Cause
The camera group subset is stored in global settings under the key cameraGroupSubset (packages/actions/src/actions/camera-controls.ts:95). Global settings are shared across all action instances, so every Cycle Camera button reads and writes the same selection.
The PI template (packages/stream-deck-plugin/src/pi/camera-focus.ejs) uses window.SDPIComponents.useGlobalSettings() to bind the checkboxes to global settings, confirming the shared storage.
Expected Behavior
Each Camera Controls action instance should have its own camera group selection, stored in per-action settings (not global settings).
Affected Files
packages/actions/src/actions/camera-controls.ts — move cameraGroupSubset from global to per-action settings
packages/stream-deck-plugin/src/pi/camera-focus.ejs — change PI to use per-action settings for camera group checkboxes
packages/actions/src/actions/camera-controls.test.ts — update tests
Artifacts to Update
- Action documentation (
docs/) if camera group settings are documented
- Skills (
iracedeck-actions) if camera group storage is referenced
Bug
When creating multiple Camera Controls | Cycle Camera buttons, selecting/deselecting camera groups in any button's Property Inspector affects all other instances. Each button should maintain its own camera group selection.
Reported by: Glen Becker (Discord, 2026-03-28)
Steps to Reproduce
Root Cause
The camera group subset is stored in global settings under the key
cameraGroupSubset(packages/actions/src/actions/camera-controls.ts:95). Global settings are shared across all action instances, so every Cycle Camera button reads and writes the same selection.The PI template (
packages/stream-deck-plugin/src/pi/camera-focus.ejs) useswindow.SDPIComponents.useGlobalSettings()to bind the checkboxes to global settings, confirming the shared storage.Expected Behavior
Each Camera Controls action instance should have its own camera group selection, stored in per-action settings (not global settings).
Affected Files
packages/actions/src/actions/camera-controls.ts— movecameraGroupSubsetfrom global to per-action settingspackages/stream-deck-plugin/src/pi/camera-focus.ejs— change PI to use per-action settings for camera group checkboxespackages/actions/src/actions/camera-controls.test.ts— update testsArtifacts to Update
docs/) if camera group settings are documentediracedeck-actions) if camera group storage is referenced