mirror of
https://github.com/rennf93/roboco.git
synced 2026-08-03 07:23:24 +02:00
fix(panel): environment ladder speaks promotion flow, not git jargon
First rung badges 'PRs land', last badges 'release', middles drop the fake rung-N names, and a 'promotes to' connector shows the direction between rows; helper copy and the dialogs' default-branch hint follow the same vocabulary.
This commit is contained in:
@@ -237,7 +237,7 @@ export function CreateProjectDialog() {
|
|||||||
placeholder="main"
|
placeholder="main"
|
||||||
/>
|
/>
|
||||||
<p className="text-xs text-muted-foreground">
|
<p className="text-xs text-muted-foreground">
|
||||||
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.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -396,7 +396,7 @@ function EditProjectForm({
|
|||||||
placeholder="main"
|
placeholder="main"
|
||||||
/>
|
/>
|
||||||
<p className="text-xs text-muted-foreground">
|
<p className="text-xs text-muted-foreground">
|
||||||
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.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -68,8 +68,22 @@ export function EnvironmentLadderEditor({
|
|||||||
{items.map((rung, index) => {
|
{items.map((rung, index) => {
|
||||||
const isFirst = index === 0;
|
const isFirst = index === 0;
|
||||||
const isLast = index === items.length - 1;
|
const isLast = index === items.length - 1;
|
||||||
|
const role = isFirst
|
||||||
|
? isLast
|
||||||
|
? "PRs + release"
|
||||||
|
: "PRs land"
|
||||||
|
: isLast
|
||||||
|
? "release"
|
||||||
|
: "";
|
||||||
return (
|
return (
|
||||||
<div key={index} className="flex items-center gap-2">
|
<div key={index}>
|
||||||
|
{!isFirst && (
|
||||||
|
<div className="flex items-center gap-1 py-0.5 pl-16 text-[10px] text-muted-foreground">
|
||||||
|
<ArrowDown className="h-3 w-3" />
|
||||||
|
promotes to
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<div className="flex items-center gap-2">
|
||||||
<div className="flex flex-col">
|
<div className="flex flex-col">
|
||||||
<Tooltip>
|
<Tooltip>
|
||||||
<TooltipTrigger asChild>
|
<TooltipTrigger asChild>
|
||||||
@@ -80,12 +94,12 @@ export function EnvironmentLadderEditor({
|
|||||||
className="h-6 w-6"
|
className="h-6 w-6"
|
||||||
disabled={isFirst}
|
disabled={isFirst}
|
||||||
onClick={() => handleMove(index, -1)}
|
onClick={() => handleMove(index, -1)}
|
||||||
aria-label="Move rung up, toward head"
|
aria-label="Move earlier in the flow"
|
||||||
>
|
>
|
||||||
<ArrowUp className="h-3.5 w-3.5" />
|
<ArrowUp className="h-3.5 w-3.5" />
|
||||||
</Button>
|
</Button>
|
||||||
</TooltipTrigger>
|
</TooltipTrigger>
|
||||||
<TooltipContent>Move up (toward head)</TooltipContent>
|
<TooltipContent>Move earlier in the flow</TooltipContent>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
<Tooltip>
|
<Tooltip>
|
||||||
<TooltipTrigger asChild>
|
<TooltipTrigger asChild>
|
||||||
@@ -96,16 +110,16 @@ export function EnvironmentLadderEditor({
|
|||||||
className="h-6 w-6"
|
className="h-6 w-6"
|
||||||
disabled={isLast}
|
disabled={isLast}
|
||||||
onClick={() => handleMove(index, 1)}
|
onClick={() => handleMove(index, 1)}
|
||||||
aria-label="Move rung down, toward prod"
|
aria-label="Move later in the flow"
|
||||||
>
|
>
|
||||||
<ArrowDown className="h-3.5 w-3.5" />
|
<ArrowDown className="h-3.5 w-3.5" />
|
||||||
</Button>
|
</Button>
|
||||||
</TooltipTrigger>
|
</TooltipTrigger>
|
||||||
<TooltipContent>Move down (toward prod)</TooltipContent>
|
<TooltipContent>Move later in the flow</TooltipContent>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</div>
|
</div>
|
||||||
<span className="text-[10px] uppercase text-muted-foreground w-10 text-center">
|
<span className="w-20 text-center text-[10px] font-medium uppercase text-muted-foreground">
|
||||||
{isFirst ? "head" : isLast ? "prod" : `rung ${index + 1}`}
|
{role}
|
||||||
</span>
|
</span>
|
||||||
<Input
|
<Input
|
||||||
value={rung.name}
|
value={rung.name}
|
||||||
@@ -135,6 +149,7 @@ export function EnvironmentLadderEditor({
|
|||||||
<TooltipContent>Remove this rung</TooltipContent>
|
<TooltipContent>Remove this rung</TooltipContent>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
</div>
|
</div>
|
||||||
@@ -146,12 +161,12 @@ export function EnvironmentLadderEditor({
|
|||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<p className="text-xs text-muted-foreground">
|
<p className="text-xs text-muted-foreground">
|
||||||
Ordered top→bottom: the first rung is <strong>head</strong> (where dev PRs
|
Top to bottom is the promotion flow: <strong>PRs land</strong> on the
|
||||||
land) and the last is <strong>prod</strong> (the release target). Leave
|
first branch, each rung promotes to the next, and{" "}
|
||||||
empty to inherit <em>default branch</em> for both — e.g.{" "}
|
<strong>releases are cut</strong> from the last — e.g.{" "}
|
||||||
<code>dev → qa → stag → prod</code>, or just <code>prod</code> for a
|
<code>dev → qa → staging → prod</code>. Leave empty to use{" "}
|
||||||
single-branch project. When set, this overrides <em>default branch</em>{" "}
|
<em>default branch</em> for everything; when set, this overrides it for
|
||||||
for the PR target and the release target.
|
both the PR target and the release target.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user