The markdown parsing is broken/disabled for release notes. Sorry about that, I'm chasing the source of a crash that's been bringing this website down for the last couple of days.
## Added
- The new `globalSetting` and `environmentKey` macros
- Support for `dialDown` and `dialUp` events (`dialPress` is now deprecated)
- ` DisableAutomaticStates` in the `Action` protocol
- `setTriggerDescription` event for SD+
- `sortName` to provide a custom sort key for actions
- `PluginSoftware` conforms to `ExpressibleByStringLiteral`
- `@State` for action-specific state
- New `sortName` property on `Action` to allow sorting actions
## Changed
- 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 to `dialUp`
- Renamed `PluginOS.mac(minimumVersion:)` & `PluginOS.win(minimumVersion:)` to `PluginOS.macOS(_:)` & `PluginOS.windows(_:)`
- Renamed `PluginDelegate` to `Plugin`
- Renamed `StreamDeckPlugin` to `PluginCommunication`
- The plugin communication and registration now happens before initializing your `Plugin`, meaning it's safe to call events from the `init()`
- The plugin validates action UUIDs
- Sort manifest keys for stable JSON
- Fixes to let counter example compile by @RomanBaiocco in https://github.com/emorydunn/StreamDeckPlugin/pull/19
## New Contributors
* @RomanBaiocco made their first contribution in https://github.com/emorydunn/StreamDeckPlugin/pull/19
**Full Changelog**: https://github.com/emorydunn/StreamDeckPlugin/compare/0.3.0...0.4.0
Settings and Stream Deck +
1 year ago
This release introduces the new Settings API as well as support for the rotary encoders on the Stream Deck +.
## Settings
Actions can now have strongly-typed settings which are automatically decoded when receiving an action from the Stream Deck. This means actions no longer need to manually parse the payload dictionary (and optional values) and allows for settings to be any `Codable` type instead of just strings.
## Stream Deck +
Rotary encoders and screen layouts are fully supported so actions can run on the Stream Deck +.
Actions can now conform to one of several helper protocols which provide default values for key actions, both with and without states, and rotary encoder actions.
## What's Changed
* Settings API by @emorydunn in https://github.com/emorydunn/StreamDeckPlugin/pull/14
* Resolve sendToPlugin Routing to Properly Route to Action Instance by @SENTINELITE in https://github.com/emorydunn/StreamDeckPlugin/pull/17
* Stream deck+ by @emorydunn in https://github.com/emorydunn/StreamDeckPlugin/pull/18
## New Contributors
* @SENTINELITE made their first contribution in https://github.com/emorydunn/StreamDeckPlugin/pull/17
**Full Changelog**: https://github.com/emorydunn/StreamDeckPlugin/compare/0.2.0...0.3.0
This version introduces the new `Action` API allowing actions triggered by keys to be routed automatically to an instance of the `Action` running in the plugin.
See the [documentation](https://emorydunn.github.io/StreamDeckPlugin/) for details and check out the [example plugin](https://github.com/emorydunn/StreamDeckPlugin/tree/main/Examples/counter) for a demo implementation.
This represents the original API model which is being deprecated in favor of the Action API.
The new API is more object oriented and integrates the manifest directly into the plugin's model. The event handler will automatically route events rather than needing to `switch` on Action IDs manually. It's recommended to migrate to the new API as soon as it's released.
There isn't a migration path for the original API, so if your plugin still uses it you should pin the package version here.