Skip to content

Feat/adaptive dial support#5

Closed
ROBdk97 wants to merge 8 commits into
Jarex985:mainfrom
ROBdk97:feat/adaptive-dial-support
Closed

Feat/adaptive dial support#5
ROBdk97 wants to merge 8 commits into
Jarex985:mainfrom
ROBdk97:feat/adaptive-dial-support

Conversation

@ROBdk97

@ROBdk97 ROBdk97 commented Mar 16, 2026

Copy link
Copy Markdown

#6

Copilot AI review requested due to automatic review settings March 16, 2026 12:33

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds Stream Deck+ dial support to the Star Citizen Stream Deck plugin by introducing a new Adaptive Dial action, its Property Inspector UI/assets, and shared PI helpers, alongside a small refactor to clearly separate key vs dial base classes.

Changes:

  • Introduce Adaptive Dial encoder action + settings schema + PI (HTML/JS/CSS) and wire it into the plugin manifest/assets build.
  • Refactor PI “function picker” logic into shared helpers (SCPI.functionPicker) and update Function Key PI to use them.
  • Adjust action base classes to use KeypadBase for key-only actions; add unit tests and docs/changelog updates.

Reviewed changes

Copilot reviewed 21 out of 22 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
Tools/PiAssetsBuilder/Program.cs Adds build step for the new PI script (pi-dial-action.js).
Tests/Unit/ActionKeys/AdaptiveDialTests.cs Adds unit tests for dial rotation selection, binding resolution, and DialSettings JSON contract.
README.md Documents the new Adaptive Dial capability at a high level.
PluginCore/PropertyInspector/js/src/sc-common.js Adds shared PI helpers under SCPI.functionPicker (flatten + details rendering).
PluginCore/PropertyInspector/js/src/pi-function-key.js Uses the new shared functionPicker helpers instead of duplicated logic.
PluginCore/PropertyInspector/js/src/pi-dial-action.js New PI script for Adaptive Dial (3 dropdowns + details + click sound picker).
PluginCore/PropertyInspector/js/sc-components.js Regenerated bundle to include the new shared PI helper module.
PluginCore/PropertyInspector/js/pi-function-key.js Regenerated minified Function Key PI script.
PluginCore/PropertyInspector/js/pi-dial-action.js New generated/minified Adaptive Dial PI script.
PluginCore/PropertyInspector/Dials/AdaptiveDial.html New Property Inspector page for the dial UI.
PluginCore/PropertyInspector/css/src/base.css Adds layout/styles for dial PI sections.
PluginCore/PropertyInspector/css/base.css Regenerated minified CSS bundle with the new dial styles.
PluginCore/manifest.json Adds the new Adaptive Dial action and explicit Controllers for all actions; bumps version to 1.2.0.0.
PluginCore/ActionKeys/Settings/DialSettings.cs New settings schema for dial actions (left/right/push + click sound).
PluginCore/ActionKeys/SCDialActionBase.cs New encoder base class for Star Citizen dial actions (PI payload + migration + audio).
PluginCore/ActionKeys/SCActionBase.cs Narrows key action base to KeypadBase and removes unused encoder/touch stubs.
PluginCore/ActionKeys/ControlPanelKey.cs Moves Control Panel action to KeypadBase and removes unused encoder/touch stubs.
PluginCore/ActionKeys/AdaptiveDial.cs Implements dial rotation + push behavior using Star Citizen keybinding execution.
docs/usage.md Adds detailed usage documentation and screenshot entry for Adaptive Dial.
docs/index.md Mentions Adaptive Dial in the docs landing page.
CHANGELOG.md Adds v1.2.0.0 release notes covering Adaptive Dial and refactors.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread PluginCore/ActionKeys/AdaptiveDial.cs
Comment thread PluginCore/ActionKeys/AdaptiveDial.cs
Comment thread PluginCore/PropertyInspector/css/src/base.css
Jarex985 and others added 8 commits March 16, 2026 14:01
…activation modes triggered multiple times.

imp: mouse wheel bindings now retrigger as long as key is held down.

Signed-off-by: Jarex985 <Jarex985@users.noreply.github.com>
- Added new Stream Deck+ `Adaptive Dial` action with separate assignments for rotate-left, rotate-right, and push input.
- Implemented dial action backend with dedicated dial base/action settings:
  - `AdaptiveDial` execution flow for rotation ticks and press/release handling
  - `SCDialActionBase` for shared dial initialization, PI updates, and setting migration
  - `DialSettings` schema for dial slot bindings and click sound path
- Updated `manifest.json`:
  - Registered `Adaptive Dial` with `Encoder` controller metadata
  - Added explicit `Controllers` declarations for existing key actions
  - Bumped plugin version to `1.2.0.0`
- Added Property Inspector support for dials:
  - New `Dials/AdaptiveDial.html`
  - New dial PI script (`pi-dial-action.js`) and source (`js/src/pi-dial-action.js`)
  - Moved shared function picker logic into `js/src/sc-common.js` and reused from key/dial PI scripts
  - Regenerated PI bundled assets (`sc-components.js`, pi-function-key.js, `pi-dial-action.js`, `base.css`)
- Improved PI maintainability and UX behavior:
  - Centralized function flattening/details rendering helpers
  - Restored documentation comments/TODOs for unsupported axis filtering and details rendering semantics
  - Scoped dial details visibility rules to avoid cross-impact with key PIs
- Expanded tests with `AdaptiveDialTests` for rotation resolution, executable binding selection, and settings serialization behavior.
- Updated docs and release notes:
  - README.md, index.md, usage.md (including Adaptive Dial image)
  - CHANGELOG.md entry for `v1.2.0.0` including feature and internal refactor notes.
- Added new Stream Deck+ `Adaptive Dial` action with separate assignments for rotate-left, rotate-right, and push input.
- Implemented dial action backend with dedicated dial base/action settings:
  - `AdaptiveDial` execution flow for rotation ticks and press/release handling
  - `SCDialActionBase` for shared dial initialization, PI updates, and setting migration
  - `DialSettings` schema for dial slot bindings and click sound path
- Updated `manifest.json`:
  - Registered `Adaptive Dial` with `Encoder` controller metadata
  - Added explicit `Controllers` declarations for existing key actions
  - Bumped plugin version to `1.2.0.0`
- Added Property Inspector support for dials:
  - New `Dials/AdaptiveDial.html`
  - New dial PI script (`pi-dial-action.js`) and source (`js/src/pi-dial-action.js`)
  - Moved shared function picker logic into `js/src/sc-common.js` and reused from key/dial PI scripts
  - Regenerated PI bundled assets (`sc-components.js`, pi-function-key.js, `pi-dial-action.js`, `base.css`)
- Improved PI maintainability and UX behavior:
  - Centralized function flattening/details rendering helpers
  - Restored documentation comments/TODOs for unsupported axis filtering and details rendering semantics
  - Scoped dial details visibility rules to avoid cross-impact with key PIs
- Expanded tests with `AdaptiveDialTests` for rotation resolution, executable binding selection, and settings serialization behavior.
- Updated docs and release notes:
  - README.md, index.md, usage.md (including Adaptive Dial image)
  - CHANGELOG.md entry for `v1.2.0.0` including feature and internal refactor notes.
@ROBdk97 ROBdk97 force-pushed the feat/adaptive-dial-support branch from 2ede807 to d1020df Compare March 16, 2026 13:01
@ROBdk97 ROBdk97 closed this Mar 16, 2026
@ROBdk97 ROBdk97 deleted the feat/adaptive-dial-support branch March 16, 2026 13:05
@ROBdk97

ROBdk97 commented Mar 16, 2026

Copy link
Copy Markdown
Author

Sorry I messed something up and created a new pr instead in #6

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants