- Create custom SD+ layouts using result builders
- Initial deep link support
Action.openURL(_:)
to allow actions to launch URLs- Support for disabling the user configurable title in the PI
- Global Long Press support for actions
- Dial events include a
clockwise
property
- Action UUIDs are checked that they are a uniform type identifier
- WebSocket code has been migrated to async
- The new
globalSetting
andenvironmentKey
macros - Support for
dialDown
anddialUp
events (dialPress
is now deprecated) DisableAutomaticStates
in theAction
protocolsetTriggerDescription
event for SD+sortName
to provide a custom sort key for actionsPluginSoftware
conforms toExpressibleByStringLiteral
@State
for action-specific state- New
sortName
property onAction
to allow sorting actions
- Use
OSLog
for nicer logs - Example plugin uses a relative path to the plugin
- Use
PlatformMinimumVersion
for manifest - Plugin monitors WebSocket errors and exits after too many
- Deprecated
dialPress
, event is send todialUp
- Renamed
PluginOS.mac(minimumVersion:)
&PluginOS.win(minimumVersion:)
toPluginOS.macOS(_:)
&PluginOS.windows(_:)
- Renamed
PluginDelegate
toPlugin
- Renamed
StreamDeckPlugin
toPluginCommunication
- The plugin communication and registration now happens before initializing your
Plugin
, meaning it's safe to call events from theinit()
- The plugin validates action UUIDs
- Sort manifest keys for stable JSON
- This changelog
- Additional error logging
- Provide manifest defaults for values that aren't required, have defaults, or shouldn't actually be changed
- Support for decoding new StreamDeck hardware
Settings API
- Target and state are correctly passed when setting an image in the bundle
- A bug where the will appear decode method would fail if the instance hadn't been previously registered
- Automatic event routing
- An environment for sharing values across actions
- 100% documentation
- The plugin extension is added automatically if needed
- The initial release!
- CLI for exporting a manifest