Repository navigation
feat: type insertions where no text control can be observed - #68
Merged
Merged
Conversation
This was referenced Oct 17, 2026
Merged
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.
Closes the "Insertion outside text fields" gap.
desktop_insertnow has a typing route for receivers whose text can't be observed: terminals, canvases, custom views, and web editors that expose no AX text.Why typing and not a guarded paste
Route choice (made before dispatch)
literalInsertrefuses.receiver: window_focus).route:"type"types into an observed control whose text can't be read, such as a terminal's text area (receiver: observed_control)."paste"refuses typing.Admission
typeActionsWithOutcome(expectedWindowIdentity:expectedWindowBounds:). Before every character it runsrequireExactWindowKeyboardFocus: the app's focused element must be inside the window, and the window must be the app's key window.route: "type"and an observed control, typing uses theExactWindowKeyboardTargetvariant, bound to that control..exactWindowTargetedTypeActions. This is a host change, so an older host refuses with an "update the runtime" message. No bridge op is added, so the op count stays at 127.Guards
desktop_key.IsSecureEventInputEnabled()is true (password fields, Terminal's Secure Keyboard Entry).Outcome
unknown(INSERTION_UNVERIFIED) unless the host reportsconfirmedChangefor an observed control.Docs: the tool description, the
docs/tools.mdrow, a new paragraph, and the Not-supported bullet (now "Confirmed insertion outside text fields").Checks
npm run checkand the native build pass.