Skip to content

Commit 9e9a703

Browse files
committed
Bundle runtime dependency in beta plugin
1 parent aa27598 commit 9e9a703

3 files changed

Lines changed: 25 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## [1.1.0.0-beta.1] - 2026-07-12
8+
## [1.1.0.1-beta.2] - 2026-07-12
9+
10+
### Fixed
11+
- Include the `ws` runtime dependency in CI-built plugin bundles. Beta 1 could not start on either Windows or macOS and left the Property Inspector on “Detecting devices…”.
912

1013
### Added
1114
- Experimental macOS 13+ support for the Stream Deck plugin through a native universal Swift helper.

streamdeck-plugin/com.chromusx.bluetooth-connector.sdPlugin/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "https://schemas.elgato.com/streamdeck/plugins/manifest.json",
33
"Name": "Bluetooth Device Connector",
4-
"Version": "1.1.0.0",
4+
"Version": "1.1.0.1",
55
"Author": "chromusx",
66
"Description": "Eliminate the hassle of navigating Bluetooth settings! Connect or disconnect your Bluetooth devices instantly with a single button press. Perfect for streamers, content creators, and multitaskers who frequently switch between headphones, speakers, microphones, and other Bluetooth peripherals. Features real-time visual status indicators, audio feedback, and seamless multi-device support—all without interrupting your workflow.",
77
"URL": "https://github.com/ChromuSx/BluetoothDeviceConnector",

streamdeck-plugin/scripts/copy-assets.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,25 @@ const path = require('path');
33

44
// Ensure the .sdPlugin directory structure exists
55
const sdPluginDir = path.join(__dirname, '..', 'com.chromusx.bluetooth-connector.sdPlugin');
6+
const projectNodeModules = path.join(__dirname, '..', 'node_modules');
7+
const pluginNodeModules = path.join(sdPluginDir, 'node_modules');
8+
9+
// Stream Deck launches the compiled plugin from inside the .sdPlugin bundle,
10+
// so runtime dependencies must live there rather than only in the project root.
11+
const runtimeModules = ['ws'];
12+
fs.mkdirSync(pluginNodeModules, { recursive: true });
13+
runtimeModules.forEach((moduleName) => {
14+
const source = path.join(projectNodeModules, moduleName);
15+
const destination = path.join(pluginNodeModules, moduleName);
16+
17+
if (!fs.existsSync(source)) {
18+
console.error(`Missing runtime dependency: ${moduleName}. Run npm install first.`);
19+
process.exit(1);
20+
}
21+
22+
fs.rmSync(destination, { recursive: true, force: true });
23+
fs.cpSync(source, destination, { recursive: true });
24+
});
625

726
console.log('Build completed successfully!');
827
console.log('Plugin directory:', sdPluginDir);
@@ -11,6 +30,7 @@ console.log('Plugin directory:', sdPluginDir);
1130
const criticalFiles = [
1231
'bin/plugin.js',
1332
process.platform === 'darwin' ? 'BluetoothConnectorMac' : 'BluetoothConnector.exe',
33+
'node_modules/ws/index.js',
1434
'manifest.json',
1535
'ui/property-inspector.html'
1636
];

0 commit comments

Comments
 (0)