- JavaScript 61.9%
- Python 23.8%
- TypeScript 14.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
Some checks failed
Test / test (push) Failing after 4m46s
Adds a Stream Deck + profile for Autodesk Fusion (model/construction and sketch-tools pages, native hotkey buttons, icons sourced from Fusion's own UI resources), a lightweight Fusion 360 Python add-in (StreamDeckBridge) that exposes sketch-mode detection and timeline control over a local HTTP server, and a companion Stream Deck plugin (fusion-bridge-plugin) that shows the current Fusion edit mode on a button and drives a Timeline Step dial. Automatic page switching on sketch-mode change was implemented and then reverted: a plugin can only call switchToProfile on a profile it ships itself, and doing so was confirmed (including with a trivial single-button test profile) to break the Stream Deck app's own Smart Profile app-focus auto-switching globally for as long as that plugin-installed profile exists. See plugins/fusion-bridge-plugin/README.md for details and the untested MCP-based alternative. Also fixes scripts/pack-profile.mjs: it was zipping profiles with a "Profiles/" wrapper directory (correct for a multi-profile .streamDeckProfilesBackup, not for a single-profile .streamDeckProfile), which made every profile packed by this script silently fail to import. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> |
||
| .forgejo/workflows | ||
| fusion-addin/StreamDeckBridge | ||
| plugins | ||
| profiles | ||
| scripts | ||
| tests | ||
| .gitattributes | ||
| .gitignore | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
streamdeck-plugins
All my Streamdeck-Plugins
Profiles
This repository includes versioned Stream Deck profiles for different applications and workflows. Each profile is independently maintained in the profiles/ directory. See the individual profile READMEs for details on configuration, required plugins, and backup/restoration procedures.
Plugins
Stream Deck plugin sources live under plugins/, one npm workspace per plugin. Each plugin package builds its TypeScript source into the bin/ folder of its *.sdPlugin directory, which can then be linked into the local Stream Deck app for development.
Development
Install dependencies once at the repo root:
npm install
Build a plugin and link it locally
npm run build -w plugins/<plugin-name>
This compiles the plugin's TypeScript into plugins/<plugin-name>/<uuid>.sdPlugin/bin/plugin.js. Link the resulting *.sdPlugin directory into the Stream Deck app with the Stream Deck CLI:
streamdeck link plugins/<plugin-name>/<uuid>.sdPlugin
Build a distributable .streamDeckPlugin
npm run pack -w plugins/<plugin-name>
Validates manifest.json and writes plugins/dist/<plugin-name>.streamDeckPlugin (gitignored).
Build a distributable .streamDeckProfile
npm run pack:profile -- profiles/<profile-name>
Zips the profile's Profiles/ directory into profiles/dist/<profile-name>.streamDeckProfile (gitignored).
Why plugins and profiles are packed differently
Only plugins/* is an npm workspace (see workspaces in the root package.json). Each profiles/*/package.json is Stream Deck's own exported profile metadata (AppVersion, DeviceModel, RequiredPlugins, ...), not an npm manifest — it has no name field and isn't meant to be one. Treating profiles/* as an npm workspace would break npm install. That's why plugins get a per-package npm run pack -w plugins/<name> script, while profiles are packed through a root-level script that takes the profile directory as an argument (npm run pack:profile -- profiles/<name>).
Tests
npm test
Releases
Pushing a tag in the form plugin-<name>@<version> or profile-<name>@<version> triggers .forgejo/workflows/release.yml, which builds only the referenced package and publishes the resulting artifact as a Forgejo release asset. The workflow requires a repo secret RELEASE_TOKEN (a Forgejo API token with release write access).