Changelog

Up-to-date SDK changes.

Please note, from Stream Deck 6.5 onwards, dialPress will not be emitted by the API. Plugins should use dialDown and dialUp to receive events relating to dial presses.

Changes in Stream Deck 6.6

  • Add support for Stream Deck Neo, and SCUF controllers.

  • Add support for OS-specific actions via Actions[].OS within the manifest.

  • Add the ability to disable automatically installing pre-defined profiles, when a plugin is installed, via Profiles[].AutoInstall within the manifest.

Changes in Stream Deck 6.5

  • Add support for receiving deep link messages via didReceiveDidLink.

  • Add support for switching to a specific profile page when calling switchToProfile.

  • Add controller information to WillAppear and WillDisappear events for multi-actions.

  • Add support for Node.js plugins with the .cjs or .mjs file extensions.

  • Removed dialPress event in favour of dialDown and dialUp.

Changes in Stream Deck 6.4

Changes in Stream Deck 6.1

  • Add Tabs to SDK, documentation and template files

  • Add dialDown event for Stream Deck + encoders.

  • Add dialUp event for Stream Deck + encoders.

  • Deprecated dialPress event for Stream Deck + encoders.

Changes in Stream Deck 6.0

Changes in Stream Deck 5.3

  • Add the device type kESDSDKDeviceType_CorsairVoyager to detect Corsair Voyager devices.

Changes in Stream Deck 5.2

  • Add the device type kESDSDKDeviceType_StreamDeckPedal to detect Stream Deck Pedal devices.

Changes in Stream Deck 5.0

  • You can create and share custom links on social networks to promote your Stream Deck plugin. For example, you can share the link streamdeck://plugin/install/com.elgato.cpu on social networks. Clicking this link will prompt you to install the CPU plugin.

  • You can now use SVGs for the icons of your plugins.

  • The Property Inspector now automatically receives the didReceiveGlobalSettings event when setGlobalSettings is called from the plugin.

  • The Info parameters contain more information, like the version of the operating system.

Changes in Stream Deck 4.8

  • You can now specify in the setImage event on which state the image should be set. This change only applies to actions with two states. If no state is specified, the image is set to both states.

  • You can now specify in the setTitle event on which state the title should be set. This change only applies to actions with two states. If no state is specified, the title is set to both states.

Changes in Stream Deck 4.7

  • Add the device type kESDSDKDeviceType_CorsairGKeys to detect Corsair G-Keys devices.

Changes in Stream Deck 4.6

  • The switchToProfile API can now be used with an editable preconfigured profile.

Changes in Stream Deck 4.5.1

  • The setImage event now accepts svg images as payload.

Changes in Stream Deck 4.3.3

  • Added the DontAutoSwitchWhenInstalled option in the manifest.json to prevent Stream Deck from automatically switching to a preconfigured profile when installed.

Changes in Stream Deck 4.3

  • Add support for Stream Deck XL

  • Add support for Stream Deck Mobile

  • Custom user images are always used even if a plugin dynamically renders an image

  • The device name is now sent in the deviceDidConnect event and in the Info parameter during the registration procedure

  • When the computer is wake up, the plugin will receive a systemDidWakeUp event.

  • When using a file picker in the Property Inspector of a custom action, the last selected folder is stored and then used when reopening the file picker for the actions with the same identifier.

Changes in Stream Deck 4.2

  • The willAppear and willDisappear events are now sent to custom actions inside Multi-Actions.

  • The device opaque values are now stable across relaunch.

  • The switchToProfile API now temporarily disables the Smart Profile feature.

  • Using the switchToProfile API will now prompt the user to install the profile if it has not been installed.

  • The Smart Profile feature is disabled when the Stream Deck window is visible.

  • The info parameter used in the registration process contains the version of the plugin

  • The Property Inspector should be much faster to appear on Windows

Changes in Stream Deck 4.1

We introduced some changes to the SDK that make new plugins not backward compatible with Stream Deck 4.0.x. New plugins should only target Stream Deck 4.1 and later.


New property SDKVersion

The manifest.json file should now contain an SDKVersion property. The value should be set to 2 for new plugins: "SDKVersion": 2. Plugins with the SDKVersion property will only run in Stream Deck 4.1 and later. New plugins should not support Stream Deck 4.0.x anymore and should contain in their manifest.json file the following:

"Software": {
 "MinimumVersion" : "4.1"
}

More information about the manifest.json file can be read in the Manifest documentation


connectSocket() has been renamed to connectElgatoStreamDeckSocket()

The registration function for the plugin and Property Inspector has been renamed from connectSocket() to connectElgatoStreamDeckSocket().

More information can be read in the Registration Procedure


Simplified communication between the plugin and Property Inspector

Several changes have been made to simplify the communication between the plugin and the Property Inspector:

  • The setSettings API can be used from the Property Inspector to save persistent data for the action's instance.

  • When the setSettings API is called from the plugin, the Property Inspector will automatically receive a didReceiveSettings callback with the new settings.

  • Similarly when the setSettings API is called from the Property Inspector, the plugin will automatically receive a didReceiveSettings callback with the new settings.

  • A new getSettings API has been introduced and can be used from the plugin and Property Inspector. After calling this API, the plugin or Property Inspector will receive asynchronously an event didReceiveSettings containing the settings for the action.

  • When the Property Inspector is displayed, the settings are passed directly to the Property Inspector in the inActionInfo parameter. With this change, the Property Inspector gets right away the current settings for the action.

  • When the Property Inspector is displayed, the plugin will receive a new propertyInspectorDidAppear event.

  • When the Property Inspector is dismissed, the plugin will receive a new propertyInspectorDidDisappear event.


Possibility to save global settings

The plugin and Property Inspector can now save persistent data globally and not just to one instance of an action using the new setGlobalSettings API. The data will be saved per plugin and securely. This new API can be used to save, for example, tokens that should be available to all the actions of the plugin.

Note that when the plugin uses setGlobalSettings, the Property Inspector will automatically receive a didReceiveGlobalSettings callback with the new global settings. Similarly when the Property Inspector uses this API, the plugin will automatically receive a didReceiveGlobalSettings callback.

A new getGlobalSettings API has also been introduced and can be used from the plugin and Property Inspector. After calling this API, the plugin or Property Inspector will receive asynchronously an event didReceiveGlobalSettings containing the global settings.


Logging

The plugin and Property Inspector can use the new logMessage event to write a debug message to the logs file:

{
 "event": "logMessage",
 "payload": {
  "message": "Hello World!"
 }
}

Logs are saved to disk per plugin in the folder ~/Library/Logs/StreamDeck/ on macOS and %appdata%\Elgato\StreamDeck\logs\ on Windows. Note that the log files are rotated each time the Stream Deck application is relaunched.


Possibility to open a new window

The Property Inspector and a Javascript plugin can now open a new window. The main html file could contain a callback function like this:

function gotCallbackFromWindow(parameter) {
    console.log(parameter);
}

When a keyDown event occurs, the plugin can open the new_window.html in a new window:

if(event == "keyDown")
{
    window.open ('new_window.html');
}

The new_window.html file will call the callback:

<!DOCTYPE HTML>
<html>

<head>
 <title>My New Window</title>
    <meta charset="utf-8" />
</head>

<body>
 <script type="text/javascript">
  window.opener.gotCallbackFromWindow("Hello World");
  //window.close();
 </script>

</body>

Windows opened have a default size of 500 x 650 px. You can change this size by setting the DefaultWindowSize property in the manifest.json, for example:

"DefaultWindowSize": [200, 300],

devicePixelRatio

The info parameter received by the connectElgatoStreamDeckSocket() function of the plugin and Property Inspector now contains a devicePixelRatio value. This can be used to know if the Stream Deck application is running on a HiDPI screen. Example:

{
  "application": {
    "language": "en", 
    "platform": "mac", 
    "version": "4.1.0"
  }, 
  "devicePixelRatio": 2, 
  "devices": [
    {
      "id": "CDE8FC2CAD244599CE37A45A8D78FFF0", 
      "size": {
        "columns": 5, 
        "rows": 3
      }, 
      "type": 0
    }
  ]
}

Other improvements

  • You can now reload a Javascript plugin or the Property Inspector using CMD-R in the Chrome Remote Debugger.

  • The working directory for a compiled plugin is now set to the plugin folder

  • The filter in open dialogs was not working properly under certain circumstances

  • Javascript plugins can now access the clipboard

  • Improvements on how the plugins are terminated

Last updated