Repository navigation
feat: turn on Chromium and Electron web accessibility before inspect and read, once per app launch - #107
Merged
Conversation
…and read, once per app launch The host sets AXManualAccessibility (never AXEnhancedUserInterface) through a new enableWebAccessibility Bridge operation, before reading an app that ships Chromium or after a read finds a nearly empty web area, then reads again. Results report web_accessibility; web_accessibility false on inspect and read opts out. It runs while input is paused and is listed once per launch in the activity list. Also lists the #5 background-paste spike questions as a manual live check.
iamnbutler
force-pushed
the
feat/web-accessibility
branch
from
October 17, 2026 09:01
50b1396 to
81b83af
Compare
This was referenced Oct 17, 2026
iamnbutler
added a commit
that referenced
this pull request
Oct 17, 2026
…#111 read check (#116) Each Chromium check (#107, #110, #111) launches its own Chrome on the fixture page with a temporary --user-data-dir, --no-first-run and --no-default-browser-check, then quits only that pid and deletes the profile. They no longer skip while the user's Chrome runs, and each starts with web accessibility off. #110 now waits for a page-only element (a table) on a fresh launch, and #111 reads the page the moment it opens: it passes on page text, or on a failure that says retried. Pause stays manual and user-only. Co-authored-by: Claude <noreply@anthropic.com>
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.
Part (b) of #5: Chromium and Electron build their web content's Accessibility tree only after an assistive client asks, so their web fields were missing from
desktop_inspectanddesktop_read.What changes
enableWebAccessibility(native/patches/peekaboo-web-accessibility.patch, last in the stack):AXManualAccessibilityon one exact app generation, on the main actor with a 1 s AX messaging timeout. It never setsAXEnhancedUserInterface.bool(true = turned on now). Outcome isconfirmedChangewhen it reads back on,dispatchedUnverifiedotherwise, andconfirmedNoChangewhen it was already on. An app that rejects the attribute getsoperationNotSupported.native/sources/client/webaccessibility.swift): inspect (accessibility mode) and read call the op in two cases:crashpad_handler(Chrome, Edge, Atlas). When it turned on now, they wait 500 ms first.AXWebAreawith at most one element under it. When this turns it on, the client discards that read (cleaning its snapshot), waits, and reads once more.web_accessibility:enabled,already_on,unsupportedorunknown. It is absent when the op didn't run.web_accessibility: falseondesktop_inspectanddesktop_read. Their descriptions say they turn it on (tools/list +688 B).enabled, thenalready_on, then noweb_accessibilitywith the opt-out, and the fixture field listed.web_accessibility.Tests
npm run check,npm test(57 pass, including the newtest/webaccessibility.test.mjs).node dist/build.jsapplies the patch stack.PeekabooBridgeRequestPlanTests,PeekabooBridgeOperationSemanticPlanTestsandPeekabooBridgeOperationResultSemanticsTestspass (72 tests).