Streamdeck integration#205
Open
LvcasX1 wants to merge 7 commits intoronitsingh10:mainfrom
Open
Conversation
Nested .app bundles (e.g., Discord Helper (Renderer).app inside Discord.app/Contents/Frameworks/) were incorrectly treated as top-level apps. Add path-based check and bundle ID prefix fallback to correctly resolve helpers to their parent app.
Track previously-seen apps and include them in state broadcasts with isActive flag and persisted settings. Allow volume/mute commands for inactive apps via SettingsManager. Increase levels timer to 30fps.
The NSPanel becomes key when shown, causing macOS to draw a blue focus ring on the first focusable control. Suppress this with focusEffectDisabled() since the popover is mouse-driven.
Move loggers from file-scope to instance properties using Bundle.main.bundleIdentifier, remove unused AudioToolbox import, cache JSONEncoder, move Comparable.clamped(to:) to Utilities, replace unused range binding with .contains(), fix extra blank lines.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces a Stream Deck integration via a WebSocket bridge, enabling real-time control and monitoring of per-app and master audio states from external clients (e.g., a Stream Deck plugin). It also improves app process resolution for Electron-based apps, adds a utility for value clamping, and includes a minor UI enhancement. Entitlements are updated to allow incoming network connections required for the WebSocket server.
Stream Deck Integration and WebSocket Communication:
StreamDeckBridge, a new class that exposes the audio engine's state and controls over a WebSocket server, supporting real-time state and audio level updates, as well as remote commands for per-app and master volume/mute control. [1] [2]Audio Process Resolution Improvements:
Utilities and UI:
clamped(to:)extension forComparabletypes to safely constrain values within a range, used for volume normalization.