+
+
+ void save(next)}
+ />
+
+
+
+
+ Maintainers can push to this branch. If your fork has workflows, this can also give
+ access to its secrets.
+
+
+
+ {saving ? (
+
+ Saving…
+
+ ) : null}
+ {error ? (
+
+ Could not save maintainer access. Try again.
+
+ ) : null}
+
+ );
+}
diff --git a/apps/web/src/components/pullRequest/PullRequestSummaryTab.tsx b/apps/web/src/components/pullRequest/PullRequestSummaryTab.tsx
index f8084aa550ad3..422ec2bafd456 100644
--- a/apps/web/src/components/pullRequest/PullRequestSummaryTab.tsx
+++ b/apps/web/src/components/pullRequest/PullRequestSummaryTab.tsx
@@ -31,6 +31,7 @@ import { RelativeTime } from "~/components/RelativeTime";
import { Button } from "../ui/button";
import { PullRequestEditButton } from "./PullRequestEditButton";
+import { PullRequestMaintainerEdits } from "./PullRequestMaintainerEdits";
import { Collapsible, CollapsiblePanel, CollapsibleTrigger } from "../ui/collapsible";
import {
Menu,
@@ -384,6 +385,7 @@ export function PullRequestSummaryTab({
detail,
activityPending,
checksStale = false,
+ canWriteSourceControl = false,
activityError,
pendingFinding,
fixFindingLabel = "Fix in a thread",
@@ -399,6 +401,7 @@ export function PullRequestSummaryTab({
detail: PullRequestDetailView;
activityPending: boolean;
checksStale?: boolean;
+ canWriteSourceControl?: boolean;
activityError: string | null;
pendingFinding?: string | null;
fixFindingLabel?: string;
@@ -789,6 +792,18 @@ export function PullRequestSummaryTab({
)}
+ {detail.capabilities.edit?.maintainerEdits === true &&
+ detail.viewerPermissions.maintainerEdits === true &&
+ detail.maintainerCanModify !== undefined ? (
+