diff --git a/panel/src/components/projects/create-project-dialog.tsx b/panel/src/components/projects/create-project-dialog.tsx index b534e0ec..19ae86e7 100644 --- a/panel/src/components/projects/create-project-dialog.tsx +++ b/panel/src/components/projects/create-project-dialog.tsx @@ -237,7 +237,7 @@ export function CreateProjectDialog() { placeholder="main" />

- Fallback head+prod branch when no environment ladder is set below. + Where PRs land and releases are cut when no environment ladder is set below.

diff --git a/panel/src/components/projects/edit-project-dialog.tsx b/panel/src/components/projects/edit-project-dialog.tsx index 063350c1..b948f00a 100644 --- a/panel/src/components/projects/edit-project-dialog.tsx +++ b/panel/src/components/projects/edit-project-dialog.tsx @@ -396,7 +396,7 @@ function EditProjectForm({ placeholder="main" />

- Fallback head+prod branch when no environment ladder is set below. + Where PRs land and releases are cut when no environment ladder is set below.

diff --git a/panel/src/components/projects/environment-ladder-editor.tsx b/panel/src/components/projects/environment-ladder-editor.tsx index c09a427f..1fa8c0fa 100644 --- a/panel/src/components/projects/environment-ladder-editor.tsx +++ b/panel/src/components/projects/environment-ladder-editor.tsx @@ -68,8 +68,22 @@ export function EnvironmentLadderEditor({ {items.map((rung, index) => { const isFirst = index === 0; const isLast = index === items.length - 1; + const role = isFirst + ? isLast + ? "PRs + release" + : "PRs land" + : isLast + ? "release" + : ""; return ( -
+
+ {!isFirst && ( +
+ + promotes to +
+ )} +
@@ -80,12 +94,12 @@ export function EnvironmentLadderEditor({ className="h-6 w-6" disabled={isFirst} onClick={() => handleMove(index, -1)} - aria-label="Move rung up, toward head" + aria-label="Move earlier in the flow" > - Move up (toward head) + Move earlier in the flow @@ -96,16 +110,16 @@ export function EnvironmentLadderEditor({ className="h-6 w-6" disabled={isLast} onClick={() => handleMove(index, 1)} - aria-label="Move rung down, toward prod" + aria-label="Move later in the flow" > - Move down (toward prod) + Move later in the flow
- - {isFirst ? "head" : isLast ? "prod" : `rung ${index + 1}`} + + {role} Remove this rung +
); })} @@ -146,12 +161,12 @@ export function EnvironmentLadderEditor({

- Ordered top→bottom: the first rung is head (where dev PRs - land) and the last is prod (the release target). Leave - empty to inherit default branch for both — e.g.{" "} - dev → qa → stag → prod, or just prod for a - single-branch project. When set, this overrides default branch{" "} - for the PR target and the release target. + Top to bottom is the promotion flow: PRs land on the + first branch, each rung promotes to the next, and{" "} + releases are cut from the last — e.g.{" "} + dev → qa → staging → prod. Leave empty to use{" "} + default branch for everything; when set, this overrides it for + both the PR target and the release target.

);