fix(desktop): inline actionable clone errors in onboarding project step

Merged
KI
3mo ago
+96-14

Part of SUPER-1729 — https://linear.app/superset-sh/issue/SUPER-1729

Onboarding step 2's "Clone a repo" card used to surface clone failures as a sonner toast of raw git stderr that fades in ~4s, with no hint that private repos 404 when GitHub CLI isn't signed in, and no retry affordance.

Changes

  • Clone failures now render as a persistent inline error under the clone input, cleared on the next submit or input edit. Error text is select-text cursor-text per the renderer's selectable-error rule.
  • stderr matching "Repository not found", "Authentication failed", "could not read Username", or "Permission denied (publickey)" maps to "Couldn't access this repository — if it's private, sign in to GitHub CLI first." plus a Sign in to GitHub CLI button that opens the existing GhAuthDialog on this step; the entered URL stays intact for an immediate retry. Unmatched errors show their raw message inline instead of a toast.
  • The "host service isn't ready" early-return also moved from toast to the same inline slot.
  • Clone input placeholder changed from the SSH example to https://github.com/org/repo.git (SSH keys are an unchecked prerequisite).

Other cards (create, open folder, template), step 1, GhAuthDialog internals, and Continue/navigation logic are untouched.

Verification

  • bun run lint:fix + bun run lint exit 0
  • apps/desktop bun run typecheck passes

Summary by CodeRabbit

  • New Features

    • Added GitHub authentication support during project cloning.
    • Added an authentication dialog for eligible clone failures.
    • Updated the clone URL placeholder to use HTTPS.
  • Bug Fixes

    • Improved handling and messaging for authentication-related clone errors.
    • Displayed local-host readiness and clone failures inline.
    • Cleared previous errors when the clone input changes.

Screenshot evidence (CDP-verified)

Before (SUPER-1729 walkthrough): raw git stderr in a toast that auto-dismissed in ~4s —

Before: vanishing toast with raw git stderr

After:

BehaviorScreenshot
Persistent inline error with cause + sign-in action, URL preserved
Still present 12s later (no auto-dismiss, zero toasts)
Sign in to GitHub CLI opens the dialog right on step 2
URL + error intact after dialog close, ready to retry
Error clears on input edit; HTTPS placeholder

Images live on the evidence/super-1729 branch (never merge; deletable after the PRs land).