Skip to content

Wizard onboarding: required inputs, review-and-confirm, clean cancel#125

Merged
AlienWalker1995 merged 1 commit into
mainfrom
feat/wizard-onboarding
Jul 26, 2026
Merged

Wizard onboarding: required inputs, review-and-confirm, clean cancel#125
AlienWalker1995 merged 1 commit into
mainfrom
feat/wizard-onboarding

Conversation

@AlienWalker1995

Copy link
Copy Markdown
Owner

What

Polishes ordo init into a Claude-Code-style onboarding.

  • Welcome + prerequisites up front (tailnet hostname, Google OAuth client), Ctrl-C to cancel, nothing written until confirmed.
  • Numbered steps (1/6 … 6/6).
  • Secure-front-door gate — set up Tailscale + Google SSO now, or skip with an explicit "runs unauthenticated" confirmation. When enabled, hostname / OAuth id / OAuth secret / allowlist are required: a blank answer prompts defer-or-retry (y/n) instead of shipping a broken gate. Emails validated + de-duped.
  • Review & confirm — summary of every choice + final Y/n. Decline → nothing written. Ctrl-C/EOF anywhere → clean "cancelled, nothing written" (exit 130). The confirm is the last step before any file write.
  • Post-setup bring-up offers are Ctrl-C-safe.

Robustness / cosmetic

  • CLI reconfigures stdout/stderr errors="replace" — a stray non-ASCII char can't crash the wizard on a legacy cp1252 console.
  • Wizard chrome is ASCII; hardware separator ·| and the generated ordo.yaml header em-dash→- (fixes the Windows mojibake).

Validation

  • New pure validators (hostname_error / parse_emails / invalid_emails) unit-tested (+3).
  • Interactive flow exercised directly via a scripted input funnel: full front door, cancel-at-review, skip-SSO, required-blank — all pass.
  • ruff==0.8.6 whole-repo clean; substrate 281 passed, 4 skipped.
  • Non-interactive/headless path unchanged (all changes are in the interactive branch + helpers).

🤖 Generated with Claude Code

…ean cancel

Polish the `ordo init` experience toward a Claude-Code-style onboarding:

- Welcome screen up front: what you'll need (tailnet hostname, Google OAuth
  client), that Ctrl-C cancels, and that nothing is written until you confirm.
- Numbered steps (1/6 … 6/6).
- Secure-front-door step is now an explicit gate: set up Tailscale + Google SSO,
  or skip it — skipping requires confirming you understand the stack then runs
  unauthenticated. When enabled, hostname / OAuth id / OAuth secret / allowlist
  are REQUIRED: a blank answer prompts to defer-or-retry (y/n) instead of
  silently shipping a half-configured gate. Emails are validated + de-duped.
- Review step: a summary of every choice with a final Y/n. Decline → nothing
  written. Ctrl-C / EOF at any prompt → SetupCancelled → "cancelled, nothing
  written" (exit 130). The confirm gate is the last thing before any file write.
- Post-setup offers are Ctrl-C-safe (config already written → just decline).

Robustness/cosmetic:
- CLI reconfigures stdout/stderr with errors="replace" so a stray non-ASCII
  char can never crash the wizard on a legacy cp1252 console.
- All wizard chrome is ASCII; hardware summary separator ·→| and the generated
  ordo.yaml header em-dash→- (fixes the mojibake flagged on Windows).

New pure validators (hostname_error / parse_emails / invalid_emails) are unit-
tested; the interactive flow (full front door / cancel-at-review / skip-SSO /
required-blank) was exercised directly via a scripted input funnel. README +
operator-guide step lists updated to match. ruff 0.8.6 clean; substrate 281 pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@AlienWalker1995
AlienWalker1995 merged commit 71bf9ce into main Jul 26, 2026
3 checks passed
@AlienWalker1995
AlienWalker1995 deleted the feat/wizard-onboarding branch July 26, 2026 15:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant