feat(desktop): support v1 in onboarding, remove legacy v1 starter surfaces

Merged
SA
5mo ago
+286-1055

Why

The new-users-v1 experiment routes brand-new accounts to the v1 workspace stack (isV2CloudEnabled = false). But /onboarding and the shared add-project modals were v2 host-service only — every project-creation path called getHostServiceClientByUrl(...).project.create. A v1 user finished onboarding with a v2 host-service project the v1 NewWorkspaceModal couldn't see (it reads electronTrpc.projects.getRecents from local-db), so new users landed on an empty modal with no project — the happy path was broken.

What

1. Support v1 in onboarding + add-project (branch at the call site)

  • New useCreateV1Project hook wraps the v1 cloneRepo/openFromPath path.
  • /onboarding/project three cards (folder / clone / template) and the shared NewProjectModal + TemplateGalleryModal fork their leaf create call on isV2CloudEnabled. v2 paths unchanged; the two engines stay separate behind a shared UI.

2. Remove legacy v1 starter surfaces

  • Deleted /welcome + StartView and the /new-project route tree. Callers reroute to the modal-based add-project flow; the v1 empty-state redirects to /workspaces. ("Empty repo" UI dropped; createEmptyRepo procedure kept.)

3. Revert the skippable-onboarding work (#4867)

  • Removed the "Skip for now" action, reverted the footer styling to its pre-#4867 form, and dropped the Settings → Experimental "Run setup again" entry + its search index row.

4. Land on the project's main workspace after v1 creation

  • After creating a v1 project (onboarding finish + sidebar Clone/Template), route to the project's main workspace via useOpenMainRepoWorkspace, matching "Open project".

5. Bundle template gallery banner images

  • Replaced the flaky remote opengraph.githubassets.com banner URLs with the repos' OG cards downloaded and bundled as local assets.

6. Experiment date

  • Pushed V2_NEW_USER_V1_EXPERIMENT_START to 2026-06-08T06:59Z (11:59pm PDT) so this retrofit lands before the v1 cutover.

Verification

  • bun run typecheck (all 28 packages) and bun run lint pass.
  • Manually walked the v1 onboarding flow (clone / folder / template) end-to-end: completes → lands on the project's main workspace; template banners load from bundled assets.

Note: agent auth (Claude/Codex) and GitHub CLI auth are stored machine-locally and shared by v1 and v2, so onboarding sign-in applies to both stacks (local mode).


Open in Stage

Summary by cubic

Add v1 project creation to onboarding and Add project modals by branching on isV2CloudEnabled, fixing the new-users-v1 path. Also remove legacy starter pages, open the main workspace after v1 creation, and bundle template banners.

  • New Features

    • Onboarding and Add project modals support v1 via a v1 clone/template path; v2 paths unchanged.
    • After v1 project creation, open the project's main workspace.
    • Template gallery uses bundled banner images for reliable loading.
  • Refactors

    • Removed /welcome and /new-project; callers use modal flows. Empty state now redirects to /workspaces.
    • Reverted skippable onboarding (#4867) and removed the Settings “Run setup again” entry; updated V2_NEW_USER_V1_EXPERIMENT_START=2026-06-08T06:59Z.
    • UX polish: hide the Project name input for v1 in NewProjectModal; prevent re-entry during v2 folder import.

Summary by CodeRabbit

  • New Features

    • Added V1 project creation hook with clone-from-URL and template creation paths.
    • New experimental settings for V2 cloud enablement and V1 migration.
  • Bug Fixes

    • Updated onboarding redirect for users without workspaces to land on the workspaces list.
  • Refactor

    • Consolidated project creation into V1/V2-aware modals and flows; simplified onboarding by removing skip behavior.
    • Removed some standalone/new-project UI pages and related components.