Skip to content

feat(ui): CLI download buttons + desktop-app disambiguation in onboarding (#49)#51

Merged
ogarciarevett merged 2 commits into
mainfrom
feat/onboarding-cli-install-buttons
May 28, 2026
Merged

feat(ui): CLI download buttons + desktop-app disambiguation in onboarding (#49)#51
ogarciarevett merged 2 commits into
mainfrom
feat/onboarding-cli-install-buttons

Conversation

@ogarciarevett
Copy link
Copy Markdown
Collaborator

Summary

Closes #49. Helps non-technical users (e.g. recruiters trying pupila) install the right tool during first-run onboarding.

The core pain: people confuse the Claude desktop app with the Claude Code CLI that pupila shells out to, and install the wrong thing — then nothing works. (This is also the misattribution called out in #50: the reporter blamed their LLM CLI subscription for a spawn pnpm ENOENT fetch failure. #50 fixes the spawn + error copy; this PR fixes the install-the-wrong-thing confusion at the source.)

Changes

ui/src/Onboarding.tsx, ui/src/Onboarding.module.css, ui/src/settings/types.ts, ui/src/Onboarding.test.tsx:

  • Per-provider Download links. Each uninstalled provider (Claude Code, Codex CLI, Gemini CLI, opencode) now shows a Download ↗ link aimed at its official install/quickstart docs — target="_blank" + rel="noopener noreferrer".
  • Disambiguation callout. Explicit copy that these are command-line tools run in a terminal — not desktop apps — and that Claude Code is the CLI, not the Claude desktop app.
  • Re-check button. Re-probes /api/llm-detect so a user who just installed a CLI in another terminal sees it without a page refresh. Detection logic extracted into a reusable probe useCallback.
  • Friendly labels via a new PROVIDER_META map (label + installUrl) in settings/types.ts; status copy changed not on PATHnot installed.
  • De-duplicated typesOnboarding.tsx now imports Provider/ProviderChoice/PROVIDERS from settings/types.ts instead of redefining them locally.

Test plan

  • pnpm test — 413 passing (40 files), incl. 4 new Onboarding.test.tsx cases: disambiguation text, correct per-provider download hrefs + safe-tab attrs, link hides once installed, Re-check re-probes.
  • pnpm run typecheck — clean (3 tsconfigs)
  • pnpm run lint:ui-patterns — clean
  • pnpm run ui:build — builds; Onboarding chunk 4.82 kB gzipped, bundle within budget
  • Pre-commit hook (lint + typecheck + ui-patterns) green (5 pre-existing CSS warnings unrelated to this change)

…o onboarding

Non-technical users (e.g. recruiters) routinely install the wrong thing —
confusing the Claude *desktop app* with the Claude Code *CLI* that pupila
shells out to. The onboarding provider step now:

- Shows a friendly label per provider (Claude Code, Codex CLI, Gemini CLI,
  opencode) from a new PROVIDER_META map in settings/types.ts.
- Renders a Download ↗ link next to each *uninstalled* provider, aimed at that
  CLI's official install/quickstart docs (opens in a new tab, rel=noopener).
- Adds a callout clarifying these are command-line tools run in a terminal —
  not desktop apps — and that Claude Code is the CLI, not the desktop app.
- Adds a Re-check button that re-probes /api/llm-detect so a user who just
  installed a CLI in another terminal sees it without a page refresh (detection
  logic extracted into a reusable `probe` useCallback).
- Drops the duplicate Provider/ProviderChoice/PROVIDERS defs in favor of the
  shared definitions in settings/types.ts.

Closes #49.
docs.claude.com/.../quickstart 301-redirects to code.claude.com/docs/en/quickstart.
Aim non-technical users straight at the live 200 URL so the Download link can't
silently 404 if the old redirect is ever retired. (Review follow-up on #49.)
@ogarciarevett ogarciarevett merged commit b96e06f into main May 28, 2026
1 check passed
@ogarciarevett ogarciarevett deleted the feat/onboarding-cli-install-buttons branch May 28, 2026 22:07
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.

CLI installs - onboarding page

2 participants