Skip to content

Camera Controls: camera group selection is shared across all instances #208

@niklam

Description

@niklam

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

  1. Add two Camera Controls actions to the Stream Deck, both set to "Cycle Camera"
  2. Open the PI for button A and select only "Cockpit" and "Chase"
  3. Open the PI for button B — it shows the same selection (Cockpit + Chase)
  4. 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

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions