Repository navigation
Conversation
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.
FineTune currently accepts a limited set of URL commands without returning completion results or publishing current state. This draft adds a reusable automation service and an opt-in, current-user Unix socket API, allowing control surfaces and scripts to use the same existing audio controls with explicit results and live snapshots.
The API exposes app volume/mute/boost, device and input controls, default/single/multiple output routing, EQ and presets, AutoEQ, loudness, app/device management, preferences and shortcuts, presentation, Bluetooth connection, and updater controls.
api.describeadvertises 79 typed methods, including queries and protocol operations. Existing URL behavior stays compatible. Settings effects work with the settings window closed.Requests use versioned newline-delimited JSON with stable app/device identifiers and structured errors. Slow operations return operation IDs; batches await terminal outcomes in order and retain partial results. Full snapshots carry instance/revision metadata. The disabled-by-default transport uses private discovery/socket permissions, same-user peer checks, bounded framing/clients/queues, and immediate disable/reset gating. There is no network listener.
A separate Stream Deck plugin is one consumer; no Stream Deck dependency is added to FineTune. A reproducible custom-build script uses a distinct bundle/settings identity and disables stock updates only for that custom compile configuration, allowing local use while this contribution remains unmerged.
Validation:
TEST SUCCEEDED(1,016 successful case entries in the final log).codesign --verify --deep --strict.Physical XL/audio acceptance, two outputs/five simultaneous apps, hot-plug, DDC hardware behavior, and latency/playback measurements remain unperformed. The supplied acceptance guide records these gaps. The custom distribution is not notarized. This PR is deliberately a draft pending those checks and maintainer architectural review.
Related existing work: #205 (Stream Deck/WebSocket integration), #217 (device-output URL level), and #445 (URL volume/DDC fixes). This uses a transport-independent service and local socket; it is not based on or tested together with those open changes. The modular commits separate protocol, app controls, other adapters, operations/state, transport/lifecycle, and regressions. I can split the contribution according to maintainer preferences.