Repository navigation
fix(desktop): verify focus before pressing editable fields - #120
Merged
Merged
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.
Single element clicks on editable Accessibility text fields now use verified focus before
AXPress. WebKit can acceptAXPresson a contenteditable without focusing it, leaving subsequent keyboard operations without a usable receiver (#106, part of githubnext/ace2#8).Native focus writes run off MainActor while retaining the operation lane until completion, so Ace can service its own Accessibility request. Ambiguous write failures stay indeterminate, with no second input path. Exact process/window/element checks and normal button presses are preserved. Coordinate occlusion and paste/type behavior in githubnext/desktop-tools#5 remain separate work.
Validated on frozen
9374d8001211968aae8f12b03c7e598e093578b0:isFocused=falsetotruewith a confirmed Accessibility focus write. Its default draft and empty channel history/usage remained unchanged. The saved AX values were independently checked after correcting a helper assertion's property path; no input was repeated.The stale-window check retained its original conservative unknown result after a verified move; fixture counters confirmed no input and no retry occurred. Source inspection locates this unchanged classification before the new focus path. In-flight cancellation is not claimed. First native inspection of fresh WebKit processes still exposed only chrome nodes; one later read-only inspection exposed the field (#64), so this PR does not claim to fix initial AX availability.
Cleanup is complete: both disposable fixture processes, all model/self-check workers, both temporary channels/projects, and the normal development runner, GUI and source host are closed or removed; its listener is gone. The separate githubnext/desktop-tools#5 point-click observation remains outside this PR.
Built in Ace
Nate explicitly allowed direct tools for this githubnext/ace2#8 pass. Codex shell/file tools and review agents implemented, inspected and built the change; GitHub CLI updates the PR. Validation used the actual signed Ace bridge, normal isolated development runner and real Ace channel/provider. Codex computer use opened only the disposable self-check channel; the focus under test was sent through Ace's native tool. The capability gap is githubnext/desktop-tools#5; external harness support remains #9. No installed development app or Canary data was changed.