Skip to content

feat(onboarding): sticky hard-gate until first App Uploaded - #3285

Draft
TorichanCapgo wants to merge 4 commits into
teo/onboarding-one-tap-hardgatefrom
teo/post-create-hardgate-until-upload
Draft

feat(onboarding): sticky hard-gate until first App Uploaded#3285
TorichanCapgo wants to merge 4 commits into
teo/onboarding-one-tap-hardgatefrom
teo/post-create-hardgate-until-upload

Conversation

@TorichanCapgo

@TorichanCapgo TorichanCapgo commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Summary (AI generated)

  • Keep the feat(onboarding): hard-gate sidebar before first app (explicit Continue) #3284 sidebar hard-gate sticky after first-app create until Capgo sees App Uploaded, a Builder build started, or the user confirms Explore anyway.
  • Stop AppOnboardingFlow from auto-calling allowOnboardingDashboardExploration on create success / in-flow “explore” exits; set a sticky pendingFirstUploadAppId instead.
  • Reuse the sidebar confirm dialog with Shayan post-create copy (sidebar-finish-first-update-confirm-*), primary Continue setup, secondary Explore anyway.
  • Clear the sticky flag on explore grant, upload/onboarding-complete, or Builder started_at; keep CLI + Builder setup CTAs unchanged.
  • Extend tests/onboarding-redirect.unit.test.ts for pending set/clear, explore grant, and org-switcher exclusion.

Motivation (AI generated)

PostHog Capgo 22029 (30d): ~51% of creators never reach App Uploaded, and ~80% of those never-upload users fire onboarding_dashboard_explored. After create, allowOnboardingDashboardExploration cleared the #3284 gate, so Dashboard / Apps / API keys / Scan became free escapes before a first bundle existed. This PR keeps users on first-bundle setup without redesigning upload or probe.

Business Impact (AI generated)

Expected lift in create → App Uploaded within 7d (baseline ~49%), and fewer onboarding_dashboard_explored events before first upload. CLI copy → upload rate should not regress; Docs/Discord stay ungated like #3284.

Test Plan (AI generated)

  • bunx vitest run tests/onboarding-redirect.unit.test.ts passes (sticky pending, explore clear, upload/builder clear, org-switcher excluded, storage reload).
  • Create first app → open Dashboard/Apps/API keys/Scan from sidebar → confirm dialog shows Shayan post-create title/body; Continue setup stays on setup or returns to /app/new?resume=&step=setup; Explore anyway proceeds and stops confirming.
  • After create, in-flow explore / getting-started does not clear the gate by itself.
  • Demo seed, dismiss getting started, or leave-splash when already uploaded / Builder started lifts the gate.
  • Pre-create hard-gate still uses “Finish creating your first app?” copy on /app/new before an app exists.
  • Org-switcher /onboarding/organization?source=org-switcher is not hard-gated.
  • CLI OTA command and Builder build init CTAs still visible on setup.

UX notes (AI generated)

  • Post-create dialog (Shayan): Finish setting up your first update? / Capgo only starts working once a bundle is on a channel. Upload one (or start a Builder build) — it only takes a minute. / Continue setup / Explore anyway.
  • Pre-create dialog copy from feat(onboarding): hard-gate sidebar before first app (explicit Continue) #3284 is unchanged.
  • Hard-gate is about escape paths only; happy-path CLI + Builder setup is unchanged.
  • Out of scope: upload → Update Probed conversion; no Martin ping (Jose gates when ready).

Generated with AI

Stack note

Draft stacked on #3284 @75dbda9 (not merged yet). Rebase onto main after #3284 merges.

cc @ — Shayan for craft/copy LGTM on post-create dialog.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

Review in cubic

@coderabbitai

coderabbitai Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

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.

@TorichanCapgo

Copy link
Copy Markdown
Contributor Author

Craft / copy review (Shayan)

Dialog (post-create) — mostly good, one preferred tweak:

Landed Prefer
Title Finish setting up your first update? Ship your first update? (clearer conversion; distinct from #3284 pre-create)
Body Capgo only starts working once a bundle is on a channel. Upload one (or start a Builder build) — it only takes a minute. ✅ keep (CLI/Builder named, channel-accurate)
Primary / Secondary Continue setup / Explore anyway ✅ roles correct

Separate keys (sidebar-finish-first-update-confirm-* vs pre-create) ✅
Sticky pending-first-upload + Explore grant clears gate ✅
CLI + Builder CTAs untouched ✅

Must-fix before undraft

Optional

  • Switch title key to Ship your first update? (or rename keys to sidebar-ship-first-update-confirm-* if you want naming to match).

Craft LGTM after title preference + stripping 3284 assets. No Jose yet.

@codspeed-hq

codspeed-hq Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Merging this PR will not alter performance

✅ 43 untouched benchmarks
⏩ 2 skipped benchmarks1


Comparing teo/post-create-hardgate-until-upload (5990e83) with teo/onboarding-one-tap-hardgate (390fc8a)

Open in CodSpeed

Footnotes

  1. 2 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

TorichanCapgo pushed a commit that referenced this pull request Sep 9, 2026
Post-create hard-gate dialog title per craft review on #3285.
@TorichanCapgo
TorichanCapgo changed the base branch from main to teo/onboarding-one-tap-hardgate September 9, 2026 08:07
@TorichanCapgo

Copy link
Copy Markdown
Contributor Author

Shayan craft: title now Ship your first update? @e8d0330. PR base retargeted to teo/onboarding-one-tap-hardgate (#3284) so .github/pr-assets/3284/* bleed drops from this diff without deleting the demos from the #3284 stack. Re-check when you can — no Jose yet.

@TorichanCapgo

Copy link
Copy Markdown
Contributor Author

Craft / copy — final ✅ ship

@ e8d0330 (base teo/onboarding-one-tap-hardgate):

  • Title: Ship your first update?
  • Body: channel + upload/Builder ✅
  • Primary Continue setup / Secondary Explore anyway
  • pr-assets/3284 out of this PR’s diff ✅

Craft LGTM. Jose when undrafted + CI green (Charly call).

@TorichanCapgo

Copy link
Copy Markdown
Contributor Author

Craft follow-up (for the record):

  1. Title → Ship your first update? landed @ e8d0330
  2. .github/pr-assets/3284/* bleed cleared by retargeting base → teo/onboarding-one-tap-hardgate (feat(onboarding): hard-gate sidebar before first app (explicit Continue) #3284). Demos stay on feat(onboarding): hard-gate sidebar before first app (explicit Continue) #3284 only; not in feat(onboarding): sticky hard-gate until first App Uploaded #3285 file list.

Body + Continue setup / Explore anyway unchanged.

Shayan already re-checked and LGTM'd craft @ e8d0330. Holding undraft/Jose until #3284 merges.

@cursor
cursor Bot force-pushed the teo/onboarding-one-tap-hardgate branch from e73cbe5 to 9e753bb Compare September 9, 2026 08:44
cursor Bot pushed a commit that referenced this pull request Sep 9, 2026
Post-create hard-gate dialog title per craft review on #3285.
@cursor
cursor Bot force-pushed the teo/post-create-hardgate-until-upload branch from e8d0330 to 07b76f7 Compare September 9, 2026 17:17
@TorichanCapgo

Copy link
Copy Markdown
Contributor Author

Re-check (craft wake)

  • Title: Ship your first update? ✅ (sidebar-finish-first-update-confirm-title)
  • Diff: no .github/pr-assets/3284/* bleed ✅ (code + i18n only)
  • Still draft; stacked on feat(onboarding): hard-gate sidebar before first app (explicit Continue) #3284
  • CI: Check dead code failing — unused export isActiveOnboardingSetupPath in onboardingRedirect.ts (import was dropped earlier; export still there). Cloud agent fixing on this branch; no Jose yet.

@TorichanCapgo

Copy link
Copy Markdown
Contributor Author

Re-check (knip push)

@cursor
cursor Bot force-pushed the teo/onboarding-one-tap-hardgate branch from 4daa645 to 390fc8a Compare September 9, 2026 21:17
@TorichanCapgo

Copy link
Copy Markdown
Contributor Author

Re-check (pr-pushed wake)

Mickael and others added 4 commits September 9, 2026 21:25
Keep #3284 sidebar confirm after first-app create via pendingFirstUploadAppId
until upload, Builder build started, or Explore anyway. Stop auto-granting
dashboard exploration on create exits; use Shayan post-create dialog copy.

Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com>
Post-create hard-gate dialog title per craft review on #3285.
… rebase

Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com>
Leftover from sticky-gate rewrite on #3284; knip flagged it after the
last import was dropped.

Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com>
@cursor
cursor Bot force-pushed the teo/post-create-hardgate-until-upload branch from 6301e1f to 5990e83 Compare September 9, 2026 21:26
@cursor

cursor Bot commented Sep 9, 2026

Copy link
Copy Markdown

Rebased onto latest teo/onboarding-one-tap-hardgate (390fc8a4).

New HEAD: 5990e8325

Method: cherry-picked the 4 #3285-only commits onto current #3284 tip (skipped replaying duplicated #3284 history). No manual conflict resolution needed — auto-merges only in:

  • messages/en.context.json
  • messages/en.json
  • src/components/dashboard/AppOnboardingFlow.vue
  • tests/onboarding-redirect.unit.test.ts

Unique diff (6 files): messages/en.context.json, messages/en.json, Sidebar.vue, AppOnboardingFlow.vue, onboardingRedirect.ts, onboarding-redirect.unit.test.ts — no .github/pr-assets/3284/* reintroduced.

Still draft, stacked on #3284 — waiting for #3284 to land first.

@sonarqubecloud

sonarqubecloud Bot commented Sep 9, 2026

Copy link
Copy Markdown

@TorichanCapgo

Copy link
Copy Markdown
Contributor Author

Re-check (post-rebase)

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.

2 participants