From bfd495d34c24fd513d3cd00631d74a822bc3f2ba Mon Sep 17 00:00:00 2001 From: Dotta Date: Sun, 26 Apr 2026 17:34:35 -0500 Subject: [PATCH] Pluralize stalled IssueBlockedNotice copy for multi-leaf chains When the chip strip surfaces more than one stalled leaf, the trailing imperative now uses plural agreement ("Resolve the stalled reviews below or remove them as blockers.") to match the chips. Single-leaf copy is unchanged. Refs PAP-2382 (follow-up from PAP-2374 UX review of PAP-2373). Co-Authored-By: Paperclip --- ui/src/components/IssueBlockedNotice.tsx | 4 +++- ui/storybook/stories/status-language.stories.tsx | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ui/src/components/IssueBlockedNotice.tsx b/ui/src/components/IssueBlockedNotice.tsx index 5d3df88375f..e57c7c3bd6a 100644 --- a/ui/src/components/IssueBlockedNotice.tsx +++ b/ui/src/components/IssueBlockedNotice.tsx @@ -69,7 +69,9 @@ export function IssueBlockedNotice({

{blockers.length > 0 ? isStalled - ? <>Work on this issue is blocked by {blockerLabel}, but the chain is stalled in review without a clear next step. Resolve the stalled review below or remove it as a blocker. + ? stalledLeafBlockers.length > 1 + ? <>Work on this issue is blocked by {blockerLabel}, but the chain is stalled in review without a clear next step. Resolve the stalled reviews below or remove them as blockers. + : <>Work on this issue is blocked by {blockerLabel}, but the chain is stalled in review without a clear next step. Resolve the stalled review below or remove it as a blocker. : <>Work on this issue is blocked by {blockerLabel} until {blockers.length === 1 ? "it is" : "they are"} complete. Comments still wake the assignee for questions or triage. : <>Work on this issue is blocked until it is moved back to todo. Comments still wake the assignee for questions or triage.}

diff --git a/ui/storybook/stories/status-language.stories.tsx b/ui/storybook/stories/status-language.stories.tsx index 127e0e22cdc..137fc320ab1 100644 --- a/ui/storybook/stories/status-language.stories.tsx +++ b/ui/storybook/stories/status-language.stories.tsx @@ -288,7 +288,7 @@ const blockedNoticeFixtures: BlockedNoticeFixture[] = [ }, { label: "Stalled (multiple leaves)", - caption: "Multiple stalled reviews — copy switches to the unnamed pluralized variant.", + caption: "Multiple stalled reviews — body uses plural agreement (\"reviews\"/\"them\") to match the chip strip.", blockers: [ summaryBlocker({ id: "issue-stalled-parent-multi-a", @@ -461,8 +461,8 @@ function StatusLanguage() {

Stalled-state copy switches to "stalled in review without a clear next step" and adds a "Stalled in review" - chip strip beneath the regular blocker chips. Single-leaf stalled copy names the leaf identifier; multi-leaf - falls back to the unnamed pluralized variant. + chip strip beneath the regular blocker chips. The trailing imperative pluralizes when multiple stalled + leaves are surfaced ("reviews"/"them") to match the chip strip.