Connect OBS pairing to guarded native session preparation - #36
Merged
Merged
Conversation
RioPlay
force-pushed
the
feat/obs-enrollment-flow
branch
from
September 18, 2026 16:04
e71b627 to
24fd3a0
Compare
RioPlay
marked this pull request as ready for review
September 18, 2026 17:50
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.
OBS pairing storage and authorization existed as separate components without an application setup flow.
This adds explicit pairing management on both sides: OBS Tools can create, export, replace and forget a pairing; Windows Speech and privacy can import, replace and forget its desktop copy. The typed desktop Issue/Prepare adapter connects to original native vendor handlers with a bounded admission worker. Saved pairing is displayed separately from connection status; live OBS transcription remains in development.
Native dispatch stays disabled until both requests register. A pinned module and permanent closed gate protect late callbacks; shutdown unregisters before joining workers and drains runtime leases before freeing state. Each application retains an exclusive private per-user store owner. Desktop storage runs on one owned worker, with no keys or raw errors returned to Tk. Cancellation preserves the old pairing only before commit; committed or uncertain changes remain visible when closing until acknowledged. Reset defaults does not affect pairing.
Rebased onto current main at 24fd3a0 after the Android polish and CI-routing merges. Desktop CI 35366314920 passed windows, linux, and macos jobs. Android CI did not run.
Real OBS frontend/file-picker interaction, the desktop connection controller, atomic Arm, PCM delivery, live transcription and physical accessibility acceptance remain open. No plugin is installed or published. The native module remains separate GPL source.
Implemented by Grok 4.6 in T3 Code.