All my Streamdeck-Plugins
  • JavaScript 61.9%
  • Python 23.8%
  • TypeScript 14.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Martin Schumacher d5dbf4c547
Some checks failed
Test / test (push) Failing after 4m46s
Add Fusion 360 profile, StreamDeckBridge add-in, and Fusion Bridge plugin
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>
2026-09-28 17:11:19 +02:00
.forgejo/workflows SD-2: Build- und Deploy-Infrastruktur für lokale Entwicklung (#4) 2026-08-14 12:29:09 +02:00
fusion-addin/StreamDeckBridge Add Fusion 360 profile, StreamDeckBridge add-in, and Fusion Bridge plugin 2026-09-28 17:11:19 +02:00
plugins Add Fusion 360 profile, StreamDeckBridge add-in, and Fusion Bridge plugin 2026-09-28 17:11:19 +02:00
profiles Add Fusion 360 profile, StreamDeckBridge add-in, and Fusion Bridge plugin 2026-09-28 17:11:19 +02:00
scripts Add Fusion 360 profile, StreamDeckBridge add-in, and Fusion Bridge plugin 2026-09-28 17:11:19 +02:00
tests SD-2: Build- und Deploy-Infrastruktur für lokale Entwicklung (#4) 2026-08-14 12:29:09 +02:00
.gitattributes Add .gitattributes 2026-08-14 09:55:48 +02:00
.gitignore SD-2: Build- und Deploy-Infrastruktur für lokale Entwicklung (#4) 2026-08-14 12:29:09 +02:00
LICENSE Initial commit 2026-08-14 09:53:38 +02:00
package-lock.json SD-2: Build- und Deploy-Infrastruktur für lokale Entwicklung (#4) 2026-08-14 12:29:09 +02:00
package.json SD-2: Build- und Deploy-Infrastruktur für lokale Entwicklung (#4) 2026-08-14 12:29:09 +02:00
README.md SD-2: Build- und Deploy-Infrastruktur für lokale Entwicklung (#4) 2026-08-14 12:29:09 +02:00

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
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).