Skip to content

feat(web): expose each chat message as a heading for screen readers (#11199) - #679

Merged
rynfar merged 1 commit into
pylonfrom
upstream/2026-09-19-chat-a11y
Sep 20, 2026
Merged

rynfar merged 1 commit into
pylonfrom
upstream/2026-09-19-chat-a11y

Conversation

@rynfar

@rynfar rynfar commented Sep 20, 2026 •

Copy link
Copy Markdown
Collaborator

Part of #669 (Group A: chat message accessibility).

Upstream source

Summary

Exposes each chat message and proposed plan card as a heading for screen readers, allowing users to skim the transcript by author using standard heading navigation:

  • Introduces MessageAuthorHeading with h3.sr-only.select-none in MessagesTimeline.tsx.
  • Preserves Pylon branding: User announces as "You", Assistant announces as "Pylon".
  • Adds headingLevelOffset prop to ChatMarkdown, applying an aria-level offset to nested headings without altering HTML heading tags or visual presentation.
  • Adapts ProposedPlanCard title to h3 with headingLevelOffset={3}.
  • Compatible with recent pair/delegation removal (refactor: remove Pylon pair mode and thread delegation #673).

Verification

  • Focused unit tests: vp test run apps/web/src/components/ChatMarkdown.test.tsx apps/web/src/components/chat/MessagesTimeline.test.tsx (111 passed).
  • Typecheck: vp run -F @t3tools/web typecheck (0 errors).
  • Scoped checks: vp check (0 errors).
  • Adversarial review: Passed and approved with no regressions.

View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

…#11199)

(cherry picked from commit 6cdbf76fa4b0509913046abe6105037ded9e52bb)
@vercel

vercel Bot commented Sep 20, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
pylon-marketing Ignored Ignored Sep 20, 2026 8:15am UTC

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M labels Sep 20, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 14.0 KiB 14.0 KiB +10 B (+0.1%) 15.1 KiB ✅
Codex Thread snapshot wire 7.2 KiB 7.2 KiB −14 B (−0.2%) 7.3 KiB ✅
Codex Live turn WebSocket wire 6.7 KiB 6.8 KiB +24 B (+0.3%) 7.8 KiB ✅
Codex Live turn WebSocket decoded 58.0 KiB 58.0 KiB 0 B (0.0%) 66.4 KiB ✅
Codex Live turn messages 9 9 0 (0.0%) 21 ✅
Claude Total thread wire 14.0 KiB 14.0 KiB +6 B (+0.0%) 15.1 KiB ✅
Claude Thread snapshot wire 7.2 KiB 7.2 KiB −4 B (−0.1%) 7.3 KiB ✅
Claude Live turn WebSocket wire 6.7 KiB 6.7 KiB +10 B (+0.1%) 7.8 KiB ✅
Claude Live turn WebSocket decoded 58.9 KiB 58.9 KiB 0 B (0.0%) 66.4 KiB ✅
Claude Live turn messages 9 9 0 (0.0%) 21 ✅

Baseline: 628e1b7 · PR result: ea45ac3 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 115.6 KiB
  • Claude decoded thread snapshot: 116.3 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@rynfar
rynfar merged commit efff40d into pylon Sep 20, 2026
19 checks passed
@rynfar
rynfar deleted the upstream/2026-09-19-chat-a11y branch September 20, 2026 08:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants