authorgravatar for maria@kuuro.netmaria <maria@kuuro.net> 2026-09-03 17:44:05-04:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-09-03 17:44:05-04:00
log373be93e68bf3d32207471b27e976ac84bff806a
treed9749ee68bb09c00699fb4b669d3d661df66a003
parent03728361aa7beb9c13da320097450e6fe65aac3e
signature Signed by PGP key B5690EEEBB952194

fix(web): move workflow approval beside checks (#9465)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

1 files changed, 50 insertions(+), 47 deletions(-)

apps/web/src/components/pullRequest/PullRequestDetailPanel.tsx+50-47
......@@ -1478,41 +1478,6 @@ export function PullRequestDetailPanel({
14781478 </MenuPopup>
14791479 </Menu>
14801480 ) : null}
1481 {workflowApprovalsRequired > 0 && can("approve-workflows") ? (
1482 <Tooltip>
1483 <TooltipTrigger
1484 render={
1485 <span className="inline-flex shrink-0">
1486 <Button
1487 size="xs"
1488 variant="warning-outline"
1489 disabled={actionPending}
1490 onClick={() =>
1491 setConfirmation({ open: true, action: "approve-workflows" })
1492 }
1493 aria-label={
1494 pendingAction === "approve-workflows"
1495 ? "Approving..."
1496 : "Approve workflows to run"
1497 }
1498 >
1499 <PlayIcon aria-hidden className="size-3.5" />
1500 <span className="@max-[40rem]/pr-header:hidden">
1501 {pendingAction === "approve-workflows"
1502 ? "Approving..."
1503 : "Approve workflows to run"}
1504 </span>
1505 </Button>
1506 </span>
1507 }
1508 />
1509 <TooltipPopup side="top">
1510 {pendingAction === "approve-workflows"
1511 ? "Approving..."
1512 : "Approve workflows to run"}
1513 </TooltipPopup>
1514 </Tooltip>
1515 ) : null}
15161481 {/* Said where the Merge button is, because it is the answer to why nobody has
15171482 pressed it: the merge is already asked for, and the host is holding it. */}
15181483 {autoMergeArmed && primaryAction !== "auto-merge-armed" ? (
......@@ -2165,20 +2130,58 @@ export function PullRequestDetailPanel({
21652130 ))}
21662131 </ToggleGroup>
21672132 {tab === "summary" ? (
2168 <span
2169 className="ml-auto inline-flex shrink-0 items-center gap-1.5 text-xs text-muted-foreground"
2170 aria-label={checksSummary ? `Checks: ${checksSummary}` : "Checks"}
2171 >
2172 {checksState !== null ? (
2173 <PullRequestChecksPopover
2174 checks={detail.checks}
2175 checksState={checksState}
2176 threadRef={threadRef}
2177 />
2133 <span className="ml-auto inline-flex shrink-0 items-center">
2134 {workflowApprovalsRequired > 0 && can("approve-workflows") ? (
2135 <Tooltip>
2136 <TooltipTrigger
2137 render={
2138 <span className="inline-flex shrink-0">
2139 <Button
2140 size="xs"
2141 variant="warning-outline"
2142 disabled={actionPending}
2143 onClick={() =>
2144 setConfirmation({ open: true, action: "approve-workflows" })
2145 }
2146 aria-label={
2147 pendingAction === "approve-workflows"
2148 ? "Approving..."
2149 : "Approve workflows to run"
2150 }
2151 >
2152 <PlayIcon aria-hidden className="size-3.5" />
2153 <span>
2154 {pendingAction === "approve-workflows"
2155 ? "Approving..."
2156 : "Approve workflows to run"}
2157 </span>
2158 </Button>
2159 </span>
2160 }
2161 />
2162 <TooltipPopup side="top">
2163 {pendingAction === "approve-workflows"
2164 ? "Approving..."
2165 : "Approve workflows to run"}
2166 </TooltipPopup>
2167 </Tooltip>
21782168 ) : (
2179 <CircleDotIcon aria-hidden className="size-3.5" />
2169 <span
2170 className="inline-flex items-center gap-1.5 text-xs text-muted-foreground"
2171 aria-label={checksSummary ? `Checks: ${checksSummary}` : "Checks"}
2172 >
2173 {checksState !== null ? (
2174 <PullRequestChecksPopover
2175 checks={detail.checks}
2176 checksState={checksState}
2177 threadRef={threadRef}
2178 />
2179 ) : (
2180 <CircleDotIcon aria-hidden className="size-3.5" />
2181 )}
2182 {checksSummary}
2183 </span>
21802184 )}
2181 {checksSummary}
21822185 </span>
21832186 ) : tab === "timeline" ? (
21842187 <div className="ml-auto flex shrink-0 items-center gap-2 text-xs text-muted-foreground">