What's Changed
🔐 Security
- Accept a lost refresh rotation retry once by @manuelmayer-dev in #818
- Add loopback-only password reset by @manuelmayer-dev in #823
🛠 Breaking Changes
- Move Connect sign-in to ZITADEL by @manuelmayer-dev in #820
- Let plugins read which triggers are bound to their events by @manuelmayer-dev in #837
- Allow plugins to read client navigation state by @manuelmayer-dev in #838
- Add screensavers for idle devices by @manuelmayer-dev in #841
🎉 Exciting New Features
- Expose Voicemeeter strip routing as variables by @manuelmayer-dev in #788
- Add double-tap actions to the slider widget by @manuelmayer-dev in #790
- Add universal modifiers for UI nodes by @manuelmayer-dev in #792
- Add the Macro Deck Companion integration by @manuelmayer-dev in #794
- Render variables in the slider label by @manuelmayer-dev in #796
- Add WebNowPlaying integration by @manuelmayer-dev in #799
- Let hosts control companion screen, focus and screenshots by @manuelmayer-dev in #816
- Point APT installs to apt in the Linux update notification by @manuelmayer-dev in #817
- Send Wake-on-LAN cards to the companion by @manuelmayer-dev in #819
- Emit compact connect QR payload v3 by @manuelmayer-dev in #829
- Pin the host identity to prevent impersonation during pairing by @manuelmayer-dev in #835
- Add Back navigation to multi-step setup dialogs by @manuelmayer-dev in #836
- Support right-side modifier keys in keyboard actions by @manuelmayer-dev in #839
- Let the Music Player widget follow the active player by @manuelmayer-dev in #842
- Let the host keep and share Companion App licenses by @manuelmayer-dev in #846
🚀 Improvements
- Honour disabled regions on hardware presses by @manuelmayer-dev in #793
🐞 Bug Fixes
- Keep object and array event parameters as JSON by @manuelmayer-dev in #754
- Render keyboard editors in config flow fields by @manuelmayer-dev in #756
- Keep structured Streamer.bot values as JSON text by @manuelmayer-dev in #755
- Fill the whole screen with the folder background by @manuelmayer-dev in #762
- Refresh templated labels on state change by @manuelmayer-dev in #764
- Match keyboard combo triggers by content by @manuelmayer-dev in #765
- Exclude build output from plugin packages by @manuelmayer-dev in #772
- Package only declared files in plugin builds by @manuelmayer-dev in #778
- Scale only the tile of a pressed root widget node by @manuelmayer-dev in #779
- Keep plugin sessions closable after goodbye by @manuelmayer-dev in #781
- Cache a cancelled invocation's real outcome by @manuelmayer-dev in #785
- Report a dropped invocation as cancelled by @manuelmayer-dev in #786
- Fix editor hang for widget types without config by @manuelmayer-dev in #787
- Release the plugin connection after goodbye by @manuelmayer-dev in #783
- Keep widget editor tab state when saving by @manuelmayer-dev in #795
- Honor OnlyWhen on config-flow step fields by @manuelmayer-dev in #810
- Show placeholder for widgets of unavailable plugins by @manuelmayer-dev in #814
- Accept unbounded number parameters in the action editor by @manuelmayer-dev in #826
- Use WAL for the host database by @manuelmayer-dev in #828
- Record numpad keys as numpad keys in the key recorder by @manuelmayer-dev in #832
- Keep plugin localization catalog on disconnect by @manuelmayer-dev in #833
- Reopen web client widget sessions lost mid-attach by @manuelmayer-dev in #831
- Refresh integrations when a plugin is installed, upgraded or stopped by @manuelmayer-dev in #840
- Remove USB tunnels when USB connections are disabled by @manuelmayer-dev in #845
- Fix icons failing to load when the device clock is ahead by @manuelmayer-dev in #843
⬆️ Dependencies
- Replace build-angular with @angular/build by @manuelmayer-dev in #767
- Update all patch updates by @renovate[bot] in #768
- Update dependency Cronos to 0.13.0 by @renovate[bot] in #800
- Update dependency Microsoft.CodeAnalysis.Analyzers to 5.9.0 by @renovate[bot] in #801
- Update dependency Microsoft.IdentityModel.JsonWebTokens to 8.22.0 by @renovate[bot] in #802
- Update dependency Microsoft.OpenApi to 2.12.2 by @renovate[bot] in #803
- Update dependency Serilog to 4.4.0 by @renovate[bot] in #804
🛠️ Other Changes
- Rework variables docs around examples by @manuelmayer-dev in #763
- Rework the developer docs around examples by @manuelmayer-dev in #775
- Refuse loopback trust and CORS to cross-origin browser requests by @manuelmayer-dev in #822
- Remove the ReSharper formatting gate from CI by @manuelmayer-dev in #827
- Fix UI session open deadline invalidating an already opened session by @manuelmayer-dev in #830
- Add a user guide to the documentation site by @manuelmayer-dev in #844
Full Changelog: v3.0.0-beta.4...v3.0.0-beta.5