feat(setup): label headless URL fallback with "Get started:"
When a card's auto-open is gated on `confirmThenOpen`, the URL also appears inside the surrounding `note(...)` as a copy-paste fallback — rendered dim because on a GUI device the auto-open is doing the heavy lifting and the printed URL is just an incidental backup. On headless devices the auto-open doesn't run (per #2145), so the URL inside the note is the user's *only* path forward. A dim URL reads as "incidental reference" exactly when it should be reading as "this is the action." Adds `formatNoteLink(url)` to setup/lib/browser.ts: - GUI device → `k.dim(url)` (unchanged from today) - Headless device → `Get started: <url>` at full strength Replaces five call sites (Discord ×3, Slack ×1, Telegram ×1). Single helper, atomic switch via the same `isHeadless()` plumbing introduced in #2145, so the headless behavior across all five flows stays in sync.
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
import { spawn } from 'child_process';
|
||||
|
||||
import * as p from '@clack/prompts';
|
||||
import k from 'kleur';
|
||||
|
||||
import { isHeadless } from '../platform.js';
|
||||
import { ensureAnswer } from './runner.js';
|
||||
@@ -38,6 +39,21 @@ export function openUrl(url: string): void {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Format a URL for display inside a setup `note(...)` card. On
|
||||
* GUI devices the URL renders dim — it's a fallback in case the
|
||||
* auto-open misses, and `confirmThenOpen` is doing the heavy
|
||||
* lifting of getting the user there. On headless devices the
|
||||
* URL becomes the user's only path forward, so we surface it
|
||||
* with a "Get started:" label and full-strength text — copy-
|
||||
* pasting onto another device is the actual action, not an
|
||||
* incidental reference.
|
||||
*/
|
||||
export function formatNoteLink(url: string): string {
|
||||
if (isHeadless()) return `Get started: ${url}`;
|
||||
return k.dim(url);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gate a browser-open on a confirm so the user is ready for their browser
|
||||
* to take focus. Proceeds on cancel as well — the user can always copy the
|
||||
|
||||
Reference in New Issue
Block a user