Skip to content

feat(desktop): re-enable v2 onboarding as non-blocking; drop worktree step - #4732

Closed
Kitenite wants to merge 1 commit into
mainfrom
onboarding-v1-v2-migratio
Closed

Kitenite wants to merge 1 commit into
mainfrom
onboarding-v1-v2-migratio

Conversation

@Kitenite

@Kitenite Kitenite commented May 19, 2026 •

Copy link
Copy Markdown
Member

Summary

Re-enables the v2 onboarding flow for fresh v2 users (PR #4177 had removed the hard-gate redirect because it was trapping users). New behavior treats the redirect as advisory:

  • On first authenticated render: isV2CloudEnabled && v2Workspaces.length === 0 && !requiredComplete users land on /setup/<firstIncompleteStep>.
  • New onboarding-store fields:
    • skippedThisLaunch — in-memory only (omitted from partialize), set by Skip for now in the chrome dropdown or by navigating out of /setup via sidebar / cmd-K. Gate doesn't re-trap them this launch; they see onboarding again next launch.
    • dismissedForever — persisted, set by Don't show again. Cleared only by Settings → Experimental → Restart onboarding (reset()).
  • V1 isolation: V2OnboardingGate outer wrapper short-circuits when !isV2, so v1 users never instantiate the inner component (no live-queries on v2Workspaces, no store writes). Skip pill in OnboardingProgress is also wrapped in isV2 && as defense-in-depth for v1 users who URL-navigate to /setup/*.

Also drops the adopt-worktrees step from the onboarding flow entirely. project is now the terminal step and routes to /v2-workspaces on complete/skip, carrying the onboarding_finished telemetry the worktree step used to own. The whole /setup/adopt-worktrees route folder is deleted.

Test plan

  • Fresh v2 user (no workspaces, fresh onboarding state) → lands on /setup/providers on first authenticated render
  • Click Skip for now → lands on /workspace, gate doesn't re-fire this session; restart app → gate fires again
  • Click Don't show again → lands on /workspace, gate never re-fires; Settings → Experimental → Restart onboarding clears it
  • Navigate away from /setup via sidebar / cmd-K → implicit Skip for now (same as button), no ping-pong back to /setup
  • V1 user (no opt-in, pre-cutoff) → no redirect, no Skip pill in /setup if URL-accessed
  • V2 user completes project step (continue / select repo / skip) → lands on /v2-workspaces, onboarding_finished event fires with correct outcome
  • OnboardingProgress chrome shows 4 steps (no Worktrees pill)

Open in Stage

Summary by cubic

Re-enabled the v2 onboarding as a non-blocking gate and removed the Worktrees step. Fresh v2 users get a one-time redirect per launch to the next incomplete step, with options to skip or dismiss onboarding.

  • New Features

    • Advisory redirect: If v2 is enabled, there are no v2 workspaces, and required steps are incomplete, redirect to /setup/<firstIncompleteStep>. Leaving /setup counts as “Skip for now” for this launch.
    • Skip menu in onboarding chrome: “Skip for now” (session-only) and “Don’t show again” (persisted; reset via Settings → Experimental → Restart onboarding).
    • V1 isolation: Gate short-circuits for v1 users; no v2 live-queries/store writes; Skip pill hidden.
  • Refactors

    • Removed /setup/adopt-worktrees; Project is now the final step. On complete/skip, navigate to /v2-workspaces and emit onboarding_finished.
    • Onboarding store: added skippedThisLaunch (in-memory) and dismissedForever (persisted).
    • OnboardingProgress shows 4 steps (Worktrees removed).

Written for commit 43431a8. Summary will update on new commits. Review in cubic

Summary by CodeRabbit

  • New Features

    • Added skip options during onboarding: "Skip for now" to defer and "Don't show again" to permanently dismiss.
    • Implemented onboarding enforcement gate preventing progression until required steps are complete.
  • Refactor

    • Simplified onboarding flow by removing the worktrees adoption step.

Review Change Stack

… step

Re-gates fresh v2 users into /setup on first authenticated render
(isV2 + no v2 workspaces + required steps incomplete) but treats the
gate as advisory:

- "Skip for now" / nav-away from /setup sets an in-memory flag and
  the gate won't re-fire this launch
- "Don't show again" persists dismissedForever; reset via Settings >
  Experimental > Restart onboarding
- V1 users never instantiate the gate (outer wrapper short-circuits)
  and don't see the Skip pill in /setup chrome

Also drops the adopt-worktrees onboarding step entirely — project is
now the terminal step and routes to /v2-workspaces on completion/skip,
carrying the onboarding_finished telemetry the prior step owned.
@capy-ai

capy-ai Bot commented May 19, 2026

Copy link
Copy Markdown

Capy auto-review is paused for this organization because the monthly auto-review limit has been reached. Increase the limit or turn it off in billing settings to resume automatic reviews.

@coderabbitai

coderabbitai Bot commented May 19, 2026 •

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

This PR restructures the V2 onboarding flow by removing the "adopt-worktrees" step, adding skip and dismissal state flags to the onboarding store, implementing a gating guard to prevent users from bypassing setup until onboarding is complete, and integrating analytics tracking at onboarding completion.

Changes

V2 Onboarding Flow Restructuring

Layer / File(s) Summary
Onboarding store schema and state model
apps/desktop/src/renderer/stores/onboarding/onboardingStore.ts
OnboardingStep type and ONBOARDING_STEP_ORDER remove "adopt-worktrees", leaving providers, gh-cli, permissions, and project. Store state gains dismissedForever (persisted) and skippedThisLaunch (non-persisted) flags. New actions skipUntilNextLaunch() and dismissForever() track analytics events and set flags idempotently. Persistence is configured to retain dismissedForever across launches while skippedThisLaunch resets per app launch.
V2 onboarding gate and navigation enforcement
apps/desktop/src/renderer/routes/_authenticated/layout.tsx
V2OnboardingGate component is added to authenticated layout before the outlet, reading store state and using useLiveQuery to detect V2 workspaces. When onboarding is incomplete and not dismissed, the gate auto-navigates to the first incomplete step with replace. When leaving the /setup path, it conditionally invokes skipUntilNextLaunch based on transitions. Otherwise it returns null to allow normal routing.
Project step completion and analytics tracking
apps/desktop/src/renderer/routes/_authenticated/setup/project/page.tsx
finishOnboarding callback tracks onboarding_finished event with computed duration_ms from store startedAt and navigates to /v2-workspaces with replace. Step handlers (handleSelectNewRepo, handleContinueWithCurrent, handleSkipStep) invoke finishOnboarding with outcome ("completed" or "skipped") instead of prior direct navigation to adopt-worktrees step.
Skip and dismiss controls in OnboardingProgress header
apps/desktop/src/renderer/routes/_authenticated/setup/components/OnboardingProgress/OnboardingProgress.tsx
Right side of step-progress header now renders a V2-only dropdown menu with "Skip for now" and "Don't show again" options. Handlers handleSkipForNow and handleDismissForever call corresponding store actions and navigate to workspace route. Dropdown trigger uses LuChevronDown icon.

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant OnboardingProgress
  participant V2OnboardingGate
  participant OnboardingStore
  participant Navigator
  User->>OnboardingProgress: click "Skip for now"
  OnboardingProgress->>OnboardingStore: skipUntilNextLaunch()
  OnboardingStore->>OnboardingStore: set skippedThisLaunch=true, track event
  OnboardingProgress->>Navigator: navigate to /v2-workspaces
  Note over OnboardingStore: skippedThisLaunch resets on next app launch
  User->>OnboardingProgress: click "Don't show again"
  OnboardingProgress->>OnboardingStore: dismissForever()
  OnboardingStore->>OnboardingStore: set dismissedForever=true, track event, persist
  OnboardingProgress->>Navigator: navigate to /v2-workspaces
  Note over OnboardingStore: dismissedForever persists across launches
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 Whiskers twitching with onboarding delight,
The worktree step hops away into the night,
Skip for now, or dismiss forever too,
Analytics tracks what each user will do!
V2 flows smooth, gated just right. 🌿

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 12.50% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main changes: re-enabling v2 onboarding as non-blocking and dropping the worktree step, matching the core refactoring work.
Description check ✅ Passed The description comprehensively covers the changes, including the advisory redirect behavior, new store fields, V1 isolation, step removal, and a detailed test plan addressing all major scenarios.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch onboarding-v1-v2-migratio

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint skipped: no ESLint configuration detected in root package.json. To enable, add eslint to devDependencies.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@ghost

ghost commented May 19, 2026

Copy link
Copy Markdown

Ready to review this PR? Stage has broken it down into 5 individual chapters for you:

Title
1 Remove worktree step from onboarding flow
2 Update project step to terminal onboarding step
3 Add suppression states to onboarding store
4 Implement non-blocking V2 onboarding gate
5 Add skip controls to onboarding progress chrome
Open in Stage

Chapters generated by Stage for commit 43431a8 on May 19, 2026 8:42pm UTC.

@greptile-apps

greptile-apps Bot commented May 19, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR re-enables the v2 onboarding gate as a non-blocking advisory redirect and drops the adopt-worktrees step entirely. The gate now lives in the authenticated layout and suppresses itself via two new store fields — skippedThisLaunch (in-memory, set by the Skip dropdown or nav-away) and dismissedForever (persisted, set by "Don't show again") — while v1 users are short-circuited at the outer wrapper so no live queries run for them.

  • V2OnboardingGateInner in layout.tsx: redirects fresh v2 users (no workspaces, required steps incomplete) to their first incomplete step; detects sidebar/cmd-K nav-away via a useLayoutEffect + ref pattern and applies an implicit session-level skip.
  • onboardingStore.ts: removes adopt-worktrees from OnboardingStep and STEP_ROUTES, adds skipUntilNextLaunch / dismissForever actions, and narrows partialize to exclude skippedThisLaunch from persistence.
  • project/page.tsx: becomes the terminal onboarding step — fires onboarding_finished and routes to /v2-workspaces on all outcomes (continue, select repo, skip).

Confidence Score: 3/5

Functional correctness of the gate is sound, but the nav-away detection fires an unintended analytics event on every normal onboarding completion, which will corrupt the onboarding_skipped_until_next_launch metric from day one.

The nav-away useLayoutEffect does not exclude the case where the user exits /setup after completing all required steps via the project page's own buttons. Because finishOnboarding simply calls navigate, the component sees a regular location change away from /setup, justLeftSetup becomes true, and skipUntilNextLaunch fires — emitting onboarding_skipped_until_next_launch for every user who finishes onboarding normally. Every onboarding completion in production will produce a spurious skip event alongside the intended onboarding_finished event, making the skip metric immediately unreliable.

layout.tsx — the useLayoutEffect condition in V2OnboardingGateInner needs a !requiredComplete guard; all other files look clean.

Important Files Changed

Filename Overview
apps/desktop/src/renderer/routes/_authenticated/layout.tsx Adds V2OnboardingGate / V2OnboardingGateInner — the nav-away detection fires skipUntilNextLaunch on normal completions, producing a spurious analytics event for every user who finishes the project step.
apps/desktop/src/renderer/stores/onboarding/onboardingStore.ts Removes adopt-worktrees step, adds dismissedForever/skippedThisLaunch fields, implements skipUntilNextLaunch/dismissForever actions, partializes persistence correctly (skippedThisLaunch omitted).
apps/desktop/src/renderer/routes/_authenticated/setup/project/page.tsx Project step now owns the terminal onboarding_finished telemetry event and navigates to /v2-workspaces on all outcomes; adopt-worktrees navigation removed cleanly.
apps/desktop/src/renderer/routes/_authenticated/setup/components/OnboardingProgress/OnboardingProgress.tsx Adds Skip dropdown (Skip for now / Don't show again) guarded by isV2; removes Worktrees pill from STEP_LABELS; clean implementation.
apps/desktop/src/renderer/routes/_authenticated/setup/adopt-worktrees/page.tsx Deleted — entire adopt-worktrees onboarding step removed as intended.
apps/desktop/src/renderer/routes/_authenticated/setup/adopt-worktrees/utils/selection.test.ts Deleted along with the selection utility it tested — correct cleanup.
apps/desktop/src/renderer/routes/_authenticated/setup/adopt-worktrees/utils/selection.ts Deleted — utility for the removed adopt-worktrees step, no longer needed.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Authenticated render] --> B{isV2CloudEnabled?}
    B -- No --> C[null: no subscriptions]
    B -- Yes --> D{dismissedForever?}
    D -- Yes --> E[Gate suppressed: null]
    D -- No --> F{skippedThisLaunch?}
    F -- Yes --> E
    F -- No --> G{no v2Workspaces AND requiredComplete=false AND not on setup?}
    G -- No --> E
    G -- Yes --> H[Navigate to firstIncompleteStep]
    H --> I[setup/providers to setup/project]
    I --> J{User action on project step}
    J -- Continue or Select Repo --> K[markComplete + onboarding_finished navigate to v2-workspaces]
    J -- Skip step button --> L[markSkipped + onboarding_finished navigate to v2-workspaces]
    J -- Skip dropdown Skip for now --> M[skipUntilNextLaunch navigate to workspace]
    J -- Skip dropdown Dont show again --> N[dismissForever navigate to workspace]
    J -- Sidebar or cmd-K nav-away --> O[useLayoutEffect detects justLeftSetup=true: skipUntilNextLaunch]
    K --> E
    L --> E
    M --> E
    N --> E
    O --> E
Loading
Prompt To Fix All With AI
Fix the following 1 code review issue. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 1
apps/desktop/src/renderer/routes/_authenticated/layout.tsx:83-88
**Nav-away fires spurious `onboarding_skipped_until_next_launch` on normal completions**

The `justLeftSetup` path does not distinguish between a user navigating away mid-flow and a user who completes the project step via "Continue with current" / "Skip for now" (the step button). In both cases the user leaves `/setup`, so `justLeftSetup = true` and `skipUntilNextLaunch()` is called — even though `requiredComplete` is already `true`. Every successful onboarding therefore emits an extra `onboarding_skipped_until_next_launch` analytics event alongside `onboarding_finished`, which will inflate that counter for every user who completes the flow.

```suggestion
	useLayoutEffect(() => {
		if (
			justLeftSetup &&
			!skippedThisLaunch &&
			!dismissedForever &&
			!requiredComplete
		) {
			skipUntilNextLaunch();
		}
		wasOnSetupRef.current = isOnSetup;
	}, [
		isOnSetup,
		justLeftSetup,
		skippedThisLaunch,
		dismissedForever,
		skipUntilNextLaunch,
		requiredComplete,
	]);
```

Reviews (1): Last reviewed commit: "feat(desktop): re-enable v2 onboarding a..." | Re-trigger Greptile

Comment on lines +83 to +88
useLayoutEffect(() => {
if (justLeftSetup && !skippedThisLaunch && !dismissedForever) {
skipUntilNextLaunch();
}
wasOnSetupRef.current = isOnSetup;
}, [

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Nav-away fires spurious onboarding_skipped_until_next_launch on normal completions

The justLeftSetup path does not distinguish between a user navigating away mid-flow and a user who completes the project step via "Continue with current" / "Skip for now" (the step button). In both cases the user leaves /setup, so justLeftSetup = true and skipUntilNextLaunch() is called — even though requiredComplete is already true. Every successful onboarding therefore emits an extra onboarding_skipped_until_next_launch analytics event alongside onboarding_finished, which will inflate that counter for every user who completes the flow.

Suggested change
useLayoutEffect(() => {
if (justLeftSetup && !skippedThisLaunch && !dismissedForever) {
skipUntilNextLaunch();
}
wasOnSetupRef.current = isOnSetup;
}, [
useLayoutEffect(() => {
if (
justLeftSetup &&
!skippedThisLaunch &&
!dismissedForever &&
!requiredComplete
) {
skipUntilNextLaunch();
}
wasOnSetupRef.current = isOnSetup;
}, [
isOnSetup,
justLeftSetup,
skippedThisLaunch,
dismissedForever,
skipUntilNextLaunch,
requiredComplete,
]);
Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src/renderer/routes/_authenticated/layout.tsx
Line: 83-88

Comment:
**Nav-away fires spurious `onboarding_skipped_until_next_launch` on normal completions**

The `justLeftSetup` path does not distinguish between a user navigating away mid-flow and a user who completes the project step via "Continue with current" / "Skip for now" (the step button). In both cases the user leaves `/setup`, so `justLeftSetup = true` and `skipUntilNextLaunch()` is called — even though `requiredComplete` is already `true`. Every successful onboarding therefore emits an extra `onboarding_skipped_until_next_launch` analytics event alongside `onboarding_finished`, which will inflate that counter for every user who completes the flow.

```suggestion
	useLayoutEffect(() => {
		if (
			justLeftSetup &&
			!skippedThisLaunch &&
			!dismissedForever &&
			!requiredComplete
		) {
			skipUntilNextLaunch();
		}
		wasOnSetupRef.current = isOnSetup;
	}, [
		isOnSetup,
		justLeftSetup,
		skippedThisLaunch,
		dismissedForever,
		skipUntilNextLaunch,
		requiredComplete,
	]);
```

How can I resolve this? If you propose a fix, please make it concise.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@apps/desktop/src/renderer/routes/_authenticated/setup/components/OnboardingProgress/OnboardingProgress.tsx`:
- Line 20: The SKIP_TARGET constant currently points to "/workspace" but this
component's skip handlers are shown only for V2 users, so change SKIP_TARGET
from "/workspace" to "/v2-workspaces" (keep the "as const" typing) and update
any skip/navigation code in this component (references around the handlers using
SKIP_TARGET, e.g., the functions that perform router.push or navigate in the
skip buttons) to use the new value so post-onboarding routing matches the V2
flow.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 0e589533-1cac-4f73-a3b2-83a1b7c29087

📥 Commits

Reviewing files that changed from the base of the PR and between 653ab6b and 43431a8.

📒 Files selected for processing (7)
  • apps/desktop/src/renderer/routes/_authenticated/layout.tsx
  • apps/desktop/src/renderer/routes/_authenticated/setup/adopt-worktrees/page.tsx
  • apps/desktop/src/renderer/routes/_authenticated/setup/adopt-worktrees/utils/selection.test.ts
  • apps/desktop/src/renderer/routes/_authenticated/setup/adopt-worktrees/utils/selection.ts
  • apps/desktop/src/renderer/routes/_authenticated/setup/components/OnboardingProgress/OnboardingProgress.tsx
  • apps/desktop/src/renderer/routes/_authenticated/setup/project/page.tsx
  • apps/desktop/src/renderer/stores/onboarding/onboardingStore.ts
💤 Files with no reviewable changes (3)
  • apps/desktop/src/renderer/routes/_authenticated/setup/adopt-worktrees/utils/selection.ts
  • apps/desktop/src/renderer/routes/_authenticated/setup/adopt-worktrees/page.tsx
  • apps/desktop/src/renderer/routes/_authenticated/setup/adopt-worktrees/utils/selection.test.ts

} from "renderer/stores/onboarding";
import { useSetupChromeStore } from "../StepShell";

const SKIP_TARGET = "/workspace" as const;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Use the V2 workspace route for V2-only skip actions.

Line 20 sets SKIP_TARGET to /workspace, but these handlers are only shown for V2 users. This can route users to the wrong post-onboarding surface compared with the rest of this flow (/v2-workspaces).

Suggested fix
-const SKIP_TARGET = "/workspace" as const;
+const SKIP_TARGET = "/v2-workspaces" as const;

Also applies to: 40-48

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@apps/desktop/src/renderer/routes/_authenticated/setup/components/OnboardingProgress/OnboardingProgress.tsx`
at line 20, The SKIP_TARGET constant currently points to "/workspace" but this
component's skip handlers are shown only for V2 users, so change SKIP_TARGET
from "/workspace" to "/v2-workspaces" (keep the "as const" typing) and update
any skip/navigation code in this component (references around the handlers using
SKIP_TARGET, e.g., the functions that perform router.push or navigate in the
skip buttons) to use the new value so post-onboarding routing matches the V2
flow.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 7 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="apps/desktop/src/renderer/routes/_authenticated/setup/components/OnboardingProgress/OnboardingProgress.tsx">

<violation number="1" location="apps/desktop/src/renderer/routes/_authenticated/setup/components/OnboardingProgress/OnboardingProgress.tsx:20">
P1: The new v2 onboarding skip actions navigate to the v1 `/workspace` route. This can send fresh v2 users into the wrong flow; route skips to `/v2-workspaces` to stay consistent with the rest of v2 onboarding.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

} from "renderer/stores/onboarding";
import { useSetupChromeStore } from "../StepShell";

const SKIP_TARGET = "/workspace" as const;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: The new v2 onboarding skip actions navigate to the v1 /workspace route. This can send fresh v2 users into the wrong flow; route skips to /v2-workspaces to stay consistent with the rest of v2 onboarding.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/desktop/src/renderer/routes/_authenticated/setup/components/OnboardingProgress/OnboardingProgress.tsx, line 20:

<comment>The new v2 onboarding skip actions navigate to the v1 `/workspace` route. This can send fresh v2 users into the wrong flow; route skips to `/v2-workspaces` to stay consistent with the rest of v2 onboarding.</comment>

<file context>
@@ -10,22 +17,36 @@ import {
 } from "renderer/stores/onboarding";
 import { useSetupChromeStore } from "../StepShell";
 
+const SKIP_TARGET = "/workspace" as const;
+
 const STEP_LABELS: Record<OnboardingStep, string> = {
</file context>
Suggested change
const SKIP_TARGET = "/workspace" as const;
const SKIP_TARGET = "/v2-workspaces" as const;

@Kitenite Kitenite closed this Jul 11, 2026
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