Add Electron accessibility research note to guides - #1230
Conversation
Documents the 13 defects and missing capabilities blocking accessibility-driven text manipulation in Electron apps, allocated by whether Chromium, Electron, or Apple owns each fix. Item IDs (C1-C6, E1-E4, A1-A4) are stable and quotable in upstream bug reports. Cross-linked from the KindaVim guide, which already refers to the Keyboard fallback strategy without explaining why it is needed, and added to the docs landing page. Confidence is marked inline: C3 is inference from observed symptoms rather than verified against Blink source, and the 2023-24 recency of the upstream activity is called out as possibly stale. Not yet copied to gh-pages — destination still pending review. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SZ3bAW2wKrgVMtXxbnc7Kn
|
Reviewed the new
No structural/build issues — the new Liquid |
Three corrections from review: - The convergence table listed electron#36337 as a fifth "tool" that "routed around" the problem. It is a bug report, and it was closed as not planned, which is the opposite of routing around. Table is now four tools; the bug report moves to prose, where the contrast between workarounds succeeding and upstream fixes stalling is the actual point. - The confidence breakdown rated C3 as inference but silently omitted C2, C6, and A4, which are also uncited assertions. All four are now listed with what specifically is unverified about each. The document invites readers to quote item IDs upstream, so an unmarked assertion is a real hazard. - Gap count was stated as 13; 6 + 4 + 4 is 14. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SZ3bAW2wKrgVMtXxbnc7Kn
|
Both points were correct — fixed in 2c86b0a, along with a third error the review didn't catch. 1. Non-tool in the convergence table. Right on both counts: 2. Incomplete confidence breakdown. Also right, and it mattered more than the first one, since the document explicitly invites readers to quote item IDs upstream. C2, C6 and A4 were stated as confidently as the cited items. All four inference items are now listed with what specifically is unverified about each:
3. Arithmetic. Found while fixing the above: the gap count was stated as 13. It's 14 — 6 + 4 + 4. Note that this branch is not yet copied to Generated by Claude Code |
|
One actionable finding in
Everything else (front matter, permalinks, cross-links added in |
The sources list cited godbout/kindaVim.docs for issue 70 and godbout/kindaVim.blahblah for discussion 43. Both resolve, because the repository was renamed and GitHub redirects the old path, but citing two names for one project reads as an error. Both now point at kindaVim.blahblah, which is the current name. Verified live: the repository has 993 stars and 582 commits, and issue 70 and discussion 43 both exist under it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SZ3bAW2wKrgVMtXxbnc7Kn
|
Verified this one before changing it — the URL is not a placeholder.
The author uses a That said, the underlying observation was a fair catch. The sources list cited No change to the confidence section: these citations resolve to real primary sources, so they don't belong in the inference list. Generated by Claude Code |
|
Reviewed this docs-only diff (new Two minor, non-blocking notes:
The doc already does the right thing by self-labeling speculative claims (C2, C3, C6, A4) as 'Inference'/'Unverified' rather than presenting them as fact, so no concerns there. |
At 152 characters it was the longest description in guides/, against a median of 85 and a next-highest of 125. Now 121, in line with the existing range. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SZ3bAW2wKrgVMtXxbnc7Kn
|
Both checked. Frontmatter description — trimmed in 7f1d3b1. The point holds: at 152 characters it was the longest description in External URLs — partially verified, and I can't finish the job from here. Reporting precisely rather than claiming a clean bill: Verified live, real content returned:
Not verified — the six remaining hosts are blocked by this environment's network policy. The proxy returns So the manual click-through you suggested is still worth doing, specifically for those six. I'd rather flag the limit than imply I checked links I couldn't reach. Generated by Claude Code |
|
Docs-only PR, a few things worth a look before this goes live:
No code/build/test impact since this only touches guides/docs.md. |
Verified against the linked sources rather than assumed: - E2 claimed the AXManualAccessibility fix came from "an outside contributor". It did not. electron#38102 was authored by @codebytere, an Electron Member, merged April 2023 and backported to 23/24/25. The claim is replaced with the verifiable facts. The original attribute (electron#10305) was from ivmirx with no visible member badge, but that association is not confirmed either, so no equivalent claim is made about it. - A3 was listed as resting on a primary source. It does not. electron#10305 contains no discussion of NSAccessibility custom attributes; that claim traces to a search-engine summary. Moved to the inference list with the reason stated. Also ties the guide to KindaVim's "Keyboard strategy" terminology, so the cross-link from kindavim.md lands on the concept it promises. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SZ3bAW2wKrgVMtXxbnc7Kn
|
Point 1 caught a real error, and point 2 caught a second one. Both fixed in 80c7d1e. 1. Attributed outcome was wrong. You were right to push past "do the links resolve" to "are the claimed outcomes accurate." E2 said the This is exactly the failure mode you described: someone quoting "fixed by an outside contributor" into an upstream thread would have been repeating something I inferred rather than checked. The original attribute (electron#10305) was from ivmirx with no visible member badge, but that association isn't confirmed either, so the guide now makes no claim about it. 2. A3's citation coverage was overstated. Also correct, and I verified why: electron#10305 contains no discussion of 3. "Keyboard fallback" term. The term is legitimate — Remaining known limit, unchanged from my last comment: six of the twelve cited hosts are unreachable from this environment's network policy, so they still want a manual click-through. Generated by Claude Code |
|
Docs-only PR, mostly LGTM. One thing worth double-checking before merge:
No other correctness/reliability issues spotted — the rest is prose/links with appropriately flagged "Inference"/"Unverified"/"Stale" caveats. |
|
Already verified — see my earlier reply. Short version: The author uses a Noting for the record that this is the second independent review pass to flag this same URL as suspicious. That's not evidence the link is broken — it's evidence the name looks broken, which human readers may also conclude. Flagging it for @malpern as a judgement call rather than acting on it unilaterally: the citation is correct, so I'm not changing it, but if it draws this reaction twice from automated review it may be worth a parenthetical in the Sources list. Generated by Claude Code |
What
Adds
guides/electron-text-parity.md— a research note on why accessibility-driven textmanipulation works in native macOS text fields and fails in Electron ones.
It documents 14 defects and missing capabilities, allocated by owner:
contenteditablelinearization, write-pathfidelity, granular
AXMode, tree-readiness signal, conformance testsAXManualAccessibilityrobustness,granular mode plumbing, text-layer triage ownership
AXTextMarker, no assistive-tech activation API, no moderncustom-attribute path, no capability negotiation
Item IDs (C1–C6, E1–E4, A1–A4) are stable and intended to be quotable in upstream reports.
Also cross-linked from
guides/kindavim.md, which already refers to the Keyboard fallbackstrategy without explaining why it's needed, and added to the
docs.mdlanding page.Why
The KindaVim guide tells users that Slack gets a degraded command set, but not why or what would
have to change. This fills that gap and doubles as a reference for anyone wanting to push fixes
upstream.
Open questions
AGENTS.mdreservesguides/for user-facing content anddocs/fordeveloper-facing material. This is developer-facing but needs to be publicly reachable, so it
went in
guides/. Moving it to a separate research section on the site is a reasonablealternative.
gh-pages. The copy step is deliberately not done — destinationpending review.
Confidence
Marked inline in the document rather than smoothed over. Four items are inference rather than
citation and say so: C3 (argues from symptoms, not from Blink source), C2 (WebKit
comparison is judgement, not measurement), C6 (inferred from C1 persisting), and A4
(observation that no such API exists).
Most recent upstream activity found is 2023–24. The note states explicitly that this is
absence of search results, not proof of inactivity.
Every other item cites a primary source.
Testing
Documentation only — no code paths touched. Jekyll frontmatter matches the existing guide
convention (
layout,title,description,theme,permalink).