twilco
WebCore contributor
Summary
twilco works almost exclusively on accessibility in WebCore — AXObjectCache lifecycle, isolated tree construction, and ARIA relation resolution (aria-labelledby, label-for, aria-actions), with supporting Platform-side work like libAccessibility soft-linking. The commit stream is bug-fix-driven rather than security-driven: no fixes classified as security or hardening, but a recurring theme of object-lifetime and stale-state defects — a null-pointer dereference while rebuilding relations during node removal, isolated trees left permanently rootless when a root ID is applied before its node, and stale element geometry surviving frame scrolls — plus a steady run of REGRESSION follow-ups on prior AX changes. Systematic-variant candidate: relation rebuilding triggered by DOM mutation. Multiple fixes here stem from elements gaining relation attributes via `innerHTML` or before insertion into the tree, which suggests the cache's mutation-notification path has ordering assumptions worth fuzzing directly.
Components
Security Fix History
- No security fixes recorded
Hardening Commits
- No hardening commits recorded
Recent Commits
- 2026-07-24 AX: Setting AXSelectedTextMarkerRange to an empty non-text element moves the selection into an adjacent editable, potent
- 2026-07-23 REGRESSION(317690@main): A label-for relation is not re-resolved when the target control's id changes
- 2026-07-22 AX: Inefficiencies around id dirtying and searching when building accessibility relations
- 2026-07-22 AX: VoiceOver cursor vertically mirrored for frames whose isolated tree is built by the AXObjectCache constructor timer
- 2026-07-20 AX: Preserve the user's focus when invoking an aria-actions custom action
- 2026-07-18 AX: Web content is empty after navigation because the new cache's isolated tree is never built
- 2026-07-16 AX: iOS VoiceOver can't swipe past the last element inside iframes or render a cursor for iframe content
- 2026-07-14 AX: REGRESSION(294788@main): Voice Control/inspector report the wrong tree-item level for a treeitem nested in a plain <
- 2026-07-13 AX: REGRESSION(308698@main): Voice Control only labels top-left web elements when the page scale isn't 1 (e.g. on deskto
- 2026-07-10 AX: Null-pointer dereference rebuilding accessibility relations during node removal
- 2026-07-10 AX: aria-labelledby relation isn't built when its target element is inserted via innerHTML
- 2026-07-01 AX: After ACCESSIBILITY_LOCAL_FRAME, VoiceOver can read stale element geometry after a frame scrolls its own content
- 2026-07-01 AX: VoiceOver does not re-resolve aria-labelledby when referenced element's accessible name is provided by aria-label
- 2026-06-27 AX: `hidden="until-found" causing content to not be able to be found on Safari with VoiceOver
- 2026-06-27 AX: Coalesce repeated LayoutComplete notifications for the same object within the same runloop cycle