From b2d77eae3c88dea1c6cbd35c0b36b5e0ab42a153 Mon Sep 17 00:00:00 2001 From: Favour Ohans Date: Thu, 17 Sep 2026 02:25:28 +0100 Subject: [PATCH 1/2] Facts card: agent names at full strength, inventories dimmed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The drawing rendered the counts dim under bright agent names; the implementation flattened both to plain text and the card read as one undifferentiated block. Facts are now structured name/summary pairs and each UI paints them — dim summaries in the picker, plain text in plain mode — restoring the drawing's contrast. --- src/commands/guided.ts | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/commands/guided.ts b/src/commands/guided.ts index 704545d..9abe844 100644 --- a/src/commands/guided.ts +++ b/src/commands/guided.ts @@ -149,7 +149,12 @@ export function buildHookGroup(report: ScanReport): MultiGroup | null { }; } -function factsLines(reports: ScanReport[]): string[] { +interface AgentFact { + name: string; + summary: string; +} + +function agentFacts(reports: ScanReport[]): AgentFact[] { const titles: Record = { "claude-code": "Claude Code", codex: "Codex", @@ -158,7 +163,7 @@ function factsLines(reports: ScanReport[]): string[] { return reports.flatMap((report) => { // Absent agents are simply not mentioned; the card lists what IS here. if (!report.present) return []; - const title = titles[report.agent].padEnd(13); + const name = titles[report.agent]; const userItems = report.items.filter((item) => item.scope === "user"); const counts: string[] = []; for (const [kind, singular, plural] of [ @@ -176,7 +181,7 @@ function factsLines(reports: ScanReport[]): string[] { if (kind === "settings" || kind === "memory") counts.push(singular); else counts.push(`${total} ${total === 1 ? singular : plural}`); } - return [`${title} ${counts.length > 0 ? counts.join(" · ") : "nothing to sync"}`]; + return [{ name, summary: counts.length > 0 ? counts.join(" \u00b7 ") : "nothing to sync" }]; }); } @@ -219,7 +224,7 @@ export async function runGuided(io: CommandIo, mode: GuidedMode, overrides: Guid const ui = mode === "picker" ? pickerUi({ ...overrides, wordmark: true }) : plainUi(io, overrides); try { - ui.intro("found on this machine", `carry your agent setup anywhere ${"·"} v${__PKG_VERSION__}`, factsLines(reports)); + ui.intro("found on this machine", `carry your agent setup anywhere ${"\u00b7"} v${__PKG_VERSION__}`, agentFacts(reports)); const travel = await ui.groupMultiselect("What goes in the bundle?", groups); if (travel === null) return 2; @@ -626,7 +631,7 @@ export async function runGuidedApply( // Both modes speak the same verbs; null means the user cancelled. interface GuidedUi { - intro(title: string, subtitle: string, facts: string[]): void; + intro(title: string, subtitle: string, facts: { name: string; summary: string }[]): void; note(lines: string[]): void; groupMultiselect(message: string, groups: MultiGroup[], coach?: string): Promise; select(message: string, items: typeof DESTINATIONS): Promise; @@ -657,7 +662,9 @@ function pickerUi(overrides: GuidedOverrides & { wordmark?: boolean }): GuidedUi flow.intro(title, subtitle); open = true; } - if (facts.length > 0) flow.note(facts); + if (facts.length > 0) { + flow.note(facts.map((fact) => `${fact.name.padEnd(13)} ${theme.paint("dim", fmt(fact.summary))}`)); + } }, note(lines) { flow.note(lines); @@ -744,7 +751,7 @@ function plainUi(io: CommandIo, overrides: GuidedOverrides): GuidedUi { return { intro(title, subtitle, facts) { plain.say(`${title} - ${fmt(subtitle)} (plain mode)`); - for (const fact of facts) plain.say(fact); + for (const fact of facts) plain.say(`${fact.name.padEnd(13)} ${fmt(fact.summary)}`); plain.say(""); }, note(lines) { From 71ad2f5a309eba5e92f5310939daa84a6d9dcb84 Mon Sep 17 00:00:00 2001 From: Favour Ohans Date: Thu, 17 Sep 2026 02:27:59 +0100 Subject: [PATCH 2/2] Found on this machine is a header, so it carries a capital like its siblings --- src/commands/guided.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/guided.ts b/src/commands/guided.ts index 9abe844..a9b7ceb 100644 --- a/src/commands/guided.ts +++ b/src/commands/guided.ts @@ -224,7 +224,7 @@ export async function runGuided(io: CommandIo, mode: GuidedMode, overrides: Guid const ui = mode === "picker" ? pickerUi({ ...overrides, wordmark: true }) : plainUi(io, overrides); try { - ui.intro("found on this machine", `carry your agent setup anywhere ${"\u00b7"} v${__PKG_VERSION__}`, agentFacts(reports)); + ui.intro("Found on this machine", `carry your agent setup anywhere ${"\u00b7"} v${__PKG_VERSION__}`, agentFacts(reports)); const travel = await ui.groupMultiselect("What goes in the bundle?", groups); if (travel === null) return 2;