Repository navigation
fix(desktop): tighten computer use input guards for text, tabs, menus and AX failures - #9112
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
There was a problem hiding this comment.
All reported issues were addressed across 6 files
Reply with feedback, questions, or to request a fix.
Turn on auto-fix | Re-trigger cubic
[High impact] The PR appears safe to merge; no blocking issue remains. SummaryThis PR tightens text input, window targeting, menu actions, and Accessibility error reporting. It also returns structured errors for unsupported desktop arguments and syncs shared contract descriptions.
Reviews (2) · Last reviewed commit: "fix(desktop): keep hidden tabs out of th..." · Reviewed by Greptile |
…ext to its first editor
|
@cubic-dev-ai review this PR |
@waleedlatif1 I have started the AI code review. It will take a few minutes to complete. |
There was a problem hiding this comment.
All reported issues were addressed across 6 files
Reply with feedback, questions, or to request a fix.
Turn on auto-fix | Re-trigger cubic
Summary
Follow-ups to #9084, #9093 and #9100. A review of those changes found input guards that were looser than they needed to be. Each finding below was confirmed on a macOS 26 VM, against both the previous helper and this one.
Text input
type_textandinput_sequenceaccepted any element whose focus can be set. That let them type into sliders, and, in web and Electron content, into buttons and lists, where a space or a letter is a command. Typed text now needs a text control: a text field or area (terminals included), a combo box, a date or time field, or anything with an editable text selection. A container target is accepted only while its focused editor holds focus, and keys are sent only while focus is in a text input.Windows
AXWindowof itself. OnecontainingWindowhelper now handles this for the hit-test, element windows and the editor's window.Menus
Accessibility failures
activation_required's own wording.Other
invalid_argumentserror markednot_started, instead of a rawZodError. The web treated a rawZodErroras "outcome unknown, do not retry", although nothing had been queued.Type of Change
Testing
Run on a macOS 26.6 VM, previous helper vs this one:
tests/live.pylive.pychecks: slider refuses text; window target types into its focused field; title-bar clickwindow_occludedvitestforservice.test.ts(32 passed) andipc.test.ts(45 passed); biome.Checklist
test-auditauthoring gate)