From 082dc033cbd4dd09e35b2a0acd413a80a9cdff8c Mon Sep 17 00:00:00 2001 From: Nicolas Borges Date: Thu, 3 Sep 2026 16:18:39 -0400 Subject: [PATCH 1/2] chore: use shared FormRadio component in endpointWizard --- src/components/EndpointWizard.tsx | 49 ++++++++++--------- .../endpoint/create/create.screen.test.tsx | 1 + .../endpoint/update/update.screen.test.tsx | 1 + 3 files changed, 28 insertions(+), 23 deletions(-) diff --git a/src/components/EndpointWizard.tsx b/src/components/EndpointWizard.tsx index 3f50c77c3..7f15c1b3b 100644 --- a/src/components/EndpointWizard.tsx +++ b/src/components/EndpointWizard.tsx @@ -9,6 +9,7 @@ import type { import type { ScreenProps } from "../handlers/types"; import { coreOptsFromCtx } from "../handlers/utils"; import { Layout } from "./Layout"; +import { FormRadioGroup, type FormRadioOption } from "./FormRadioGroup"; import { Stepper, type Step } from "./ui/stepper"; import { TextInput } from "./ui/text-input"; import { Spinner } from "./ui/spinner"; @@ -254,10 +255,8 @@ function NameStep({ ); } -interface VersionOption { +interface VersionOption extends FormRadioOption { value: string; - label: string; - detail: string; } function VersionStep({ @@ -285,14 +284,18 @@ function VersionStep({ .map((v) => ({ value: v.harnessVersion ?? "", label: `version ${v.harnessVersion}`, - detail: `${v.status} · updated ${v.updatedAt?.toISOString().slice(0, 10) ?? ""}`, + description: `${v.status} · updated ${v.updatedAt?.toISOString().slice(0, 10) ?? ""}`, })) .sort((a, b) => Number(b.value) - Number(a.value)); // Create mode offers "latest": omitting targetVersion tracks the newest // version at creation time. return mode === "create" ? [ - { value: "", label: "latest", detail: "track the most recent version (default)" }, + { + value: "", + label: "latest", + description: "track the most recent version (default)", + }, ...listed, ] : listed; @@ -322,28 +325,28 @@ function VersionStep({ return ( - {versions.isPending ? ( - + <> + + + ) : versions.isError ? ( - ✗ {(versions.error as Error).message} + <> + + ✗ {(versions.error as Error).message} + ) : options.length === 0 ? ( - this harness has no versions + <> + + this harness has no versions + ) : ( - options.map((option, i) => { - const selected = i === index; - return ( - - - {selected ? "● " : "○ "} - - - {option.label.padEnd(12)} - - {option.detail} - - ); - }) + )} ); diff --git a/src/handlers/harness/endpoint/create/create.screen.test.tsx b/src/handlers/harness/endpoint/create/create.screen.test.tsx index 86425b688..3cc250103 100644 --- a/src/handlers/harness/endpoint/create/create.screen.test.tsx +++ b/src/handlers/harness/endpoint/create/create.screen.test.tsx @@ -82,6 +82,7 @@ describe("harness endpoint create wizard", () => { // Versions listed newest first after the "latest" default. await waitForText(r.lastFrame, "which harness version should this endpoint serve?"); expect(r.lastFrame()).toContain("● latest"); + expect(r.lastFrame()).toContain("│ ● latest"); expect(r.lastFrame()).toContain("version 2"); expect(r.lastFrame()).toContain("version 1"); await r.press("down"); // version 2 diff --git a/src/handlers/harness/endpoint/update/update.screen.test.tsx b/src/handlers/harness/endpoint/update/update.screen.test.tsx index 4fc80137d..e3eb1ee1f 100644 --- a/src/handlers/harness/endpoint/update/update.screen.test.tsx +++ b/src/handlers/harness/endpoint/update/update.screen.test.tsx @@ -90,6 +90,7 @@ describe("harness endpoint update wizard", () => { // The endpoint's current target (version 1) is preselected; no "latest" // option exists in update mode. await waitForText(r.lastFrame, "● version 1"); + expect(r.lastFrame()).toContain("│ ● version 1"); expect(r.lastFrame()).not.toContain("latest"); await r.press("up"); // version 2 (sorted newest first) await waitForText(r.lastFrame, "● version 2"); From 5bd67794efb0245d6743823717cb6afe777e22ea Mon Sep 17 00:00:00 2001 From: Nicolas Borges Date: Thu, 3 Sep 2026 17:25:34 -0400 Subject: [PATCH 2/2] fix: make name field optional --- src/components/EndpointWizard.tsx | 1 - src/components/FormRadioGroup.tsx | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/components/EndpointWizard.tsx b/src/components/EndpointWizard.tsx index 7f15c1b3b..db1fc91f7 100644 --- a/src/components/EndpointWizard.tsx +++ b/src/components/EndpointWizard.tsx @@ -342,7 +342,6 @@ function VersionStep({ ) : ( - {name} + {name && {name}} {helpText}