feat(desktop): support v1 in onboarding, remove legacy v1 starter surfaces
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
useCreateV1Projecthook wraps the v1cloneRepo/openFromPathpath. /onboarding/projectthree cards (folder / clone / template) and the sharedNewProjectModal+TemplateGalleryModalfork their leaf create call onisV2CloudEnabled. v2 paths unchanged; the two engines stay separate behind a shared UI.
2. Remove legacy v1 starter surfaces
- Deleted
/welcome+StartViewand the/new-projectroute tree. Callers reroute to the modal-based add-project flow; the v1 empty-state redirects to/workspaces. ("Empty repo" UI dropped;createEmptyRepoprocedure 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.combanner URLs with the repos' OG cards downloaded and bundled as local assets.
6. Experiment date
- Pushed
V2_NEW_USER_V1_EXPERIMENT_STARTto2026-06-08T06:59Z(11:59pm PDT) so this retrofit lands before the v1 cutover.
Verification
bun run typecheck(all 28 packages) andbun run lintpass.- 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).
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
/welcomeand/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.
- Removed
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.