From 18ab68db461235dacd8652acfb1ba2a0b19006a3 Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Sat, 14 Nov 2026 11:14:41 +0000 Subject: [PATCH 1/2] fix(mobile): pull request headings and activity entries are navigable by screen readers Mark the pull request title and section headings as headers, and group each Activity comment or discussion header (avatar, author and action, time, file path) into one labelled header element so it is a single screen-reader stop. Co-Authored-By: Claude Opus 5.5 --- .../pull-requests/PullRequestRouteScreen.tsx | 2 +- .../PullRequestSectionHeading.tsx | 6 ++- .../pull-requests/PullRequestTimeline.tsx | 42 ++++++++++++------- 3 files changed, 34 insertions(+), 16 deletions(-) diff --git a/apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx b/apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx index f3c47e2582858..c61ed3c0689e0 100644 --- a/apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx +++ b/apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx @@ -224,7 +224,7 @@ function PullRequestIdentity(props: { )} - + {pr.title} diff --git a/apps/mobile/src/features/pull-requests/PullRequestSectionHeading.tsx b/apps/mobile/src/features/pull-requests/PullRequestSectionHeading.tsx index f9d6cf6d6788b..9b21ab31e2353 100644 --- a/apps/mobile/src/features/pull-requests/PullRequestSectionHeading.tsx +++ b/apps/mobile/src/features/pull-requests/PullRequestSectionHeading.tsx @@ -2,5 +2,9 @@ import type { ReactNode } from "react"; import { AppText } from "../../components/ui/AppText"; export function PullRequestSectionHeading({ children }: { readonly children: ReactNode }) { - return {children}; + return ( + + {children} + + ); } diff --git a/apps/mobile/src/features/pull-requests/PullRequestTimeline.tsx b/apps/mobile/src/features/pull-requests/PullRequestTimeline.tsx index 4b7ba3a968187..4a2c9c1b8f7c7 100644 --- a/apps/mobile/src/features/pull-requests/PullRequestTimeline.tsx +++ b/apps/mobile/src/features/pull-requests/PullRequestTimeline.tsx @@ -96,28 +96,37 @@ function TimelineComment({ const state = normalizedReviewState(comment.reviewState); const approved = state === "APPROVED"; const changes = state === "CHANGES_REQUESTED"; + const author = comment.author?.login ?? "Unknown author"; + const action = approved ? "approved" : changes ? "requested changes" : "commented"; return ( - - - - - {comment.author?.login ?? "Unknown author"} - - {approved ? " approved" : changes ? " requested changes" : " commented"} + + + + + + {author} + {action} + + + {relativeTime(comment.createdAt)} - {relativeTime(comment.createdAt)} + {comment.path ? ( + + {comment.path} + + ) : null} - {comment.path ? ( - - {comment.path} - - ) : null} {preview.trim() || content.attachments.length ? ( - + From 063fce6e55cb9981e7fdff014b8f3df3401a1316 Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Sat, 14 Nov 2026 11:19:58 +0000 Subject: [PATCH 2/2] fix(mobile): checks, reviewers and branch rows are pull request headings Co-Authored-By: Claude Opus 5.5 --- .../src/features/pull-requests/PullRequestControls.tsx | 6 +++++- .../src/features/pull-requests/PullRequestStatusRows.tsx | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/apps/mobile/src/features/pull-requests/PullRequestControls.tsx b/apps/mobile/src/features/pull-requests/PullRequestControls.tsx index ef8f59c74b079..9af6aacadb1e8 100644 --- a/apps/mobile/src/features/pull-requests/PullRequestControls.tsx +++ b/apps/mobile/src/features/pull-requests/PullRequestControls.tsx @@ -45,11 +45,15 @@ export function PullRequestCardRow(props: { readonly compact?: boolean; readonly menu?: boolean; readonly expanded?: boolean; + /** Section rows announce as headings so screen readers can jump between them; they still activate. */ + readonly heading?: boolean; readonly children?: ReactNode; }) { return ( setExpanded(!expanded)} /> @@ -221,6 +222,7 @@ export function PullRequestBranchRow(props: RowProps) { compact menu={methods.length > 0 || canResolve} accessibilityLabel={`Branch, ${summary}`} + heading /> ); if (!methods.length && !canResolve) return row; @@ -270,6 +272,7 @@ export function PullRequestReviewersRow(props: RowProps) { value={summary.count} compact expanded={expanded} + heading onPress={() => setExpanded(!expanded)} /> {expanded ? (