Skip to content

fix(dashboard): render OnboardingTour for first-time users#2306

Open
nyxsky404 wants to merge 1 commit into
Umbrella-io:mainfrom
nyxsky404:fix/onboarding-tour-never-rendered
Open

fix(dashboard): render OnboardingTour for first-time users#2306
nyxsky404 wants to merge 1 commit into
Umbrella-io:mainfrom
nyxsky404:fix/onboarding-tour-never-rendered

Conversation

@nyxsky404

Copy link
Copy Markdown
Contributor

Summary

OnboardingTour was a fully-implemented component (driver.js guided tour, seen_onboarding PATCH, Supabase migration) that was never imported or rendered anywhere in the app, making the entire onboarding feature silently unreachable. This PR wires it up with a minimal, safe integration.

Closes #2302


Type of Change

  • 🐛 Bug fix (non-breaking change that fixes an issue)

What Changed

  • src/components/DashboardHeader.tsx
    • Imported OnboardingTour
    • Added seenOnboarding state (defaults to true — safe fallback so tour does not flash for returning users if the settings fetch is slow or fails)
    • Read seen_onboarding from the existing /api/user/settings response alongside is_public — no extra network request
    • Rendered <OnboardingTour /> conditionally when seenOnboarding === false

No changes to OnboardingTour.tsx itself — the markTourSeen() PATCH on dismiss was already correct.


How to Test

  1. Create a new DevTrack account (or manually set seen_onboarding = false in the users table for your account).
  2. Visit /dashboard.
  3. After ~800 ms the driver.js guided tour should launch, walking through the dashboard widgets.
  4. Dismiss or complete the tour.
  5. Refresh the page — the tour should not reappear (confirmed by seen_onboarding being set to true in the DB after step 4).

Expected result: New users see the onboarding tour exactly once. Returning users see nothing.


Checklist

  • Linked the related issue above
  • Self-reviewed my own diff
  • No unnecessary console.log, debug code, or commented-out blocks
  • No TypeScript errors introduced (pnpm run type-check — errors shown are all pre-existing)
  • No new tests required — the change is a conditional render wired to an existing API field
  • No additional API calls added — reuses the existing /api/user/settings fetch already present in DashboardHeader

Additional Context

seenOnboarding defaults to true intentionally. This ensures that if the settings API is slow, errored, or the field is null/undefined, the tour does not fire unexpectedly for returning users. It will correctly flip to false only when the API explicitly returns seen_onboarding: false (i.e., a genuinely new user).

@vercel

vercel Bot commented Jun 10, 2026

Copy link
Copy Markdown

@nyxsky404 is attempting to deploy a commit to the PRIYANSHU DOSHI's projects Team on Vercel.

A member of the Team first needs to authorize it.

@github-actions github-actions Bot added gssoc26 GSSoC 2026 contribution type:bug GSSoC type bonus: bug fix labels Jun 10, 2026
@github-actions

Copy link
Copy Markdown

GSSoC Label Checklist 🏷️

@Priyanshu-byte-coder — please apply the appropriate labels before merging:

Difficulty (pick one):

  • level:beginner — 20 pts
  • level:intermediate — 35 pts
  • level:advanced — 55 pts
  • level:critical — 80 pts

Quality (optional):

  • quality:clean — ×1.2 multiplier
  • quality:exceptional — ×1.5 multiplier

Validation (required to score):

  • gssoc:approved — counts for points
  • gssoc:invalid / gssoc:spam / gssoc:ai-slop — does not score

Type labels (type:*) are auto-detected from files and title. Review and adjust if needed.
Points formula: (difficulty × quality_multiplier) + type_bonus

@github-actions github-actions Bot added type:feature GSSoC type bonus: new feature type:design GSSoC type bonus: UI/design (+10 pts) type:performance GSSoC type bonus: performance (+15 pts) type:testing GSSoC type bonus: tests (+10 pts) type:devops GSSoC type bonus: devops (+15 pts) labels Jun 10, 2026
@nyxsky404

nyxsky404 commented Jun 10, 2026

Copy link
Copy Markdown
Contributor Author

The CI failures on this PR (Playwright smoke tests and Playwright visual regression) are pre-existing broken tests on main — they are not caused by the changes in this PR.

Root causes fixed:

  • e2e/streak.spec.ts — duplicate aria-label on streak card div and tooltip button caused a strict-mode locator violation
  • Visual regression — test heading selector @playwright-user's profile never matched the actual h1 (@playwright-user)
  • landing-page-dark.png snapshot was accidentally zeroed in a prior merged commit
  • Public profile test — no Supabase mock for server-side profile fetch in CI, so the page returned 404

Fixes have been applied to this branch. CI is Green.

@Priyanshu-byte-coder Priyanshu-byte-coder added the gssoc:approved GSSoC: PR approved for scoring label Jun 16, 2026
@Priyanshu-byte-coder

Copy link
Copy Markdown
Member

This PR has merge conflicts with the current main branch. Please rebase or merge main into your branch to resolve the conflicts, then push the updated branch. Once conflicts are resolved, this PR will be merged.

git fetch origin main
git merge origin/main
# resolve conflicts
git push

OnboardingTour was fully implemented (driver.js tour, seen_onboarding
PATCH, DB migration) but was never imported or rendered anywhere,
making the entire onboarding feature unreachable.

DashboardHeader already fetches /api/user/settings on mount, so
seen_onboarding is now read from that response alongside is_public.
The tour renders only when seen_onboarding is false, and defaults to
true so the tour does not flash for returning users if the fetch is
slow or fails.

Fixes Umbrella-io#2302
@nyxsky404 nyxsky404 force-pushed the fix/onboarding-tour-never-rendered branch from b69e4e6 to 16d82b6 Compare June 17, 2026 07:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gssoc:approved GSSoC: PR approved for scoring gssoc26 GSSoC 2026 contribution type:bug GSSoC type bonus: bug fix type:design GSSoC type bonus: UI/design (+10 pts) type:devops GSSoC type bonus: devops (+15 pts) type:feature GSSoC type bonus: new feature type:performance GSSoC type bonus: performance (+15 pts) type:testing GSSoC type bonus: tests (+10 pts)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] OnboardingTour component is fully implemented but never rendered — onboarding feature is dead code

2 participants