Detail pages: rename the 'Runs' field to 'Launch' (matches the launcher concept)

The field showing a deployment's launcher + target is now labelled 'Launch'
(consistent with launcher/manager vocabulary) on ServiceDetail and the Service/
Job/Create field editors.
This commit is contained in:
2026-07-01 13:35:02 -07:00
parent 776e1235d7
commit 6929bd89d3
4 changed files with 6 additions and 6 deletions

View File

@@ -197,7 +197,7 @@ export function CreateDeploymentForm({
</select>
</Field>
<TextField
label="Runs"
label="Launch"
value={runTarget}
onChange={setRunTarget}
mono

View File

@@ -90,7 +90,7 @@ export function JobFields({ job, onSave, onDelete }: Props) {
placeholder="0 2 * * *"
hint="Cron expression — castle generates a systemd timer that runs the job on this schedule."
/>
<Field label="Runs" hint="How the job runs on each tick, then exits: the launcher and its target (a console script, command/argv, image, node script, or compose file).">
<Field label="Launch" hint="How the job runs on each tick, then exits: the launcher and its target (a console script, command/argv, image, node script, or compose file).">
<div className="flex items-center gap-2">
<select
value={launcher}

View File

@@ -12,10 +12,10 @@ type Obj = Record<string, unknown>
const obj = (v: unknown): Obj => (v as Obj) ?? {}
// The systemd launch mechanisms (a service is manager=systemd). Editable, so a
// mis-set launcher can be corrected; the primary "Runs" target maps per launcher.
// mis-set launcher can be corrected; the primary "Launch" target maps per launcher.
const LAUNCHERS = ["python", "command", "container", "compose", "node"]
/** Fold the "Runs" text into the run block for the chosen launcher, preserving
/** Fold the "Launch" text into the run block for the chosen launcher, preserving
* any other run fields (args, ports, package_manager, …) already present. */
function applyLauncher(run: Obj, launcher: string, target: string): Obj {
const out: Obj = { ...run, launcher }
@@ -104,7 +104,7 @@ export function ServiceFields({ service, onSave, onDelete }: Props) {
<div className="space-y-4">
<TextField label="Description" value={description} onChange={setDescription} />
<Field
label="Runs"
label="Launch"
hint="How this service starts: the launcher, and its target — a console script (python), a command/argv (command), an image (container), a script (node), or a compose file (compose)."
>
<div className="flex items-center gap-2">

View File

@@ -116,7 +116,7 @@ export function ServiceDetailPage() {
)}
{deployment.launcher && (
<>
<span className="text-[var(--muted)]">Runs</span>
<span className="text-[var(--muted)]">Launch</span>
<span className="flex items-center gap-1 min-w-0">
<Terminal size={12} className="shrink-0" />
{launcherLabel(deployment.launcher)}