What's Changed
🔐 Security
- Refuse backups whose files would land outside the data folder or exceed the archive limits by @manuelmayer-dev in #1517
🎉 Exciting New Features
- Add an OBS action to control input audio monitoring by @manuelmayer-dev in #1473
- Show detailed backup progress, estimated time remaining, and cancellation options by @manuelmayer-dev in #1493
- Add a built-in MCP server to let AI clients inspect, configure, and control Macro Deck by @manuelmayer-dev in #1559
- Connect Claude Desktop to Macro Deck through a one-click extension by @manuelmayer-dev in #1562
🚀 Improvements
- Show Android Companion devices with the correct phone or tablet icon in the Battery widget by @manuelmayer-dev in #1474
- Redesign the notification center with clearer priorities and improved notification management by @manuelmayer-dev in #1490
- Require explicit approval before flows can access stored secrets by @manuelmayer-dev in #1539
- Show the Approvals sidebar entry only when something requires attention by @manuelmayer-dev in #1561
- Add reverse proxy support for forwarding client addresses and HTTPS information by @manuelmayer-dev in #1574
- Keep unsaved editor changes when the desktop UI reconnects by @manuelmayer-dev in #1572
🐞 Bug Fixes
- Cancel feed taps that acquire the gate after disposal started by @manuelmayer-dev in #1475
- Show plugin variables under their published names on the integration page by @manuelmayer-dev in #1480
- Keep the slider track tips inside the thumb ring by @manuelmayer-dev in #1482
- Open the website donation page from the footer Donate link by @manuelmayer-dev in #1488
- Show names instead of ids for Email and Music Player variables by @manuelmayer-dev in #1489
- Fix Type text dropping AltGr, Shift and line breaks on Linux by @manuelmayer-dev in #1499
- Keep returning to the previous folder after quickly switching apps by @manuelmayer-dev in #1503
- Show icons from icon-provider actions in the button editor preview by @manuelmayer-dev in #1504
- Keep folders open after switching back to an app with Alt+Tab on Windows by @manuelmayer-dev in #1511
- Keep the host running while a large restore is still being applied at startup by @manuelmayer-dev in #1515
- Undo every change of a failed restore and keep access errors from stopping the start by @manuelmayer-dev in #1516
- Keep live tiles in the Web Client updating after a UI update fails to apply by @manuelmayer-dev in #1521
- Stop plugin updates from failing and rolling back when the reconcile loop restarts the plugin mid-update by @manuelmayer-dev in #1523
- Keep a hostile or broken RSS or Atom feed from pinning a CPU core and freezing feed management by @manuelmayer-dev in #1526
- Let a stop win over a plugin launch that is still starting and never run two processes for one plugin by @manuelmayer-dev in #1525
- Keep apps started from the deck running when Macro Deck quits on Linux and macOS by @manuelmayer-dev in #1528
- Refuse a plugin update signed by a different publisher than the installed version by @manuelmayer-dev in #1529
- Restart the host and keep Quit working after a failed in-app update by @manuelmayer-dev in #1532
- Clean up a deleted profile's widget secrets, variables and sessions by @manuelmayer-dev in #1534
- Keep unreadable user variable and integration state files intact by @manuelmayer-dev in #1535
- Refuse a database or backup migrated by a newer Macro Deck by @manuelmayer-dev in #1536
- Stop login guesses from getting past the brute-force lockout by @manuelmayer-dev in #1537
- Keep the Remove button visible when a bound variable has a long name by @manuelmayer-dev in #1541
- Stop markup injection and code replay on the OAuth callback page by @manuelmayer-dev in #1538
- Make Right Alt work as AltGr in Linux keyboard actions by @manuelmayer-dev in #1540
- Run commands and programs normally in the Linux AppImage by @manuelmayer-dev in #1542
- Let updates install while Macro Deck waits for the recovery key by @manuelmayer-dev in #1544
- Delete a plugin's connections and saved sign-ins when its data is deleted on uninstall by @manuelmayer-dev in #1531
- Stop and restart a host that Macro Deck took over from an earlier instance by @manuelmayer-dev in #1543
- Stop the host gracefully when Macro Deck quits while it is still starting by @manuelmayer-dev in #1545
- Make contains and starts with work on text that looks like a number by @manuelmayer-dev in #1557
- Use the new time right away after a scheduled trigger is edited by @manuelmayer-dev in #1558
- Keep reconnecting Discord after a token timeout or server error by @manuelmayer-dev in #1560
- Keep button states live during slow flows and labels in sync with variables by @manuelmayer-dev in #1566
- Keep the Web Client and desktop UI working after a connection drop by @manuelmayer-dev in #1565
- Fix Windows shortcut app detection and fallback notification leak by @manuelmayer-dev in #1564
⬆️ Dependencies
- Bump the npm_and_yarn group across 2 directories with 4 updates by @dependabot[bot] in #1470
- Bump rustls from 0.23.45 to 0.23.46 in /ui/bootstrapper in the cargo group across 1 directory by @dependabot[bot] in #1575
- Bump qs from 6.16.0 to 6.16.2 in /ui in the npm_and_yarn group across 1 directory by @dependabot[bot] in #1576
Full Changelog: v3.0.0-beta.19...v3.0.0-beta.20