Skip to content

Conversation

@sean-brydon
Copy link
Member

@sean-brydon sean-brydon commented Oct 24, 2025

What does this PR do?

  • Adds personal onboarding flow with multiple steps for user setup
  • Implements navigation between onboarding steps for personal accounts
  • Creates new pages for personal onboarding: settings, profile, calendar, and video integration

Visual Demo (For contributors especially)

Image Demo:

Personal Onboarding Flow

Mandatory Tasks (DO NOT REMOVE)

  • I have self-reviewed the code.
  • I have updated the developer docs in /docs if this PR makes changes that would require a documentation change. If N/A, write N/A here and check the checkbox.
  • I confirm automated tests are in place that prove my fix is effective or that my feature works.

How should this be tested?

  1. Enable the onboarding-v3 feature flag
  2. Create a new account or reset an existing one's onboarding status
  3. Select "Personal" on the getting-started page
  4. Verify you can navigate through all steps:
    • Personal settings (name, timezone)
    • Profile (avatar, username, bio)
    • Calendar integration
    • Video integration
  5. Verify data is saved between steps and persisted to the database
  6. Confirm the flow completes by redirecting to event-types page

Checklist

  • I have read the contributing guide
  • My code follows the style guidelines of this project
  • I have commented my code, particularly in hard-to-understand areas
  • I have checked if my changes generate no new warnings

@sean-brydon sean-brydon requested review from a team as code owners October 24, 2025 19:49
@github-actions
Copy link
Contributor

github-actions bot commented Oct 24, 2025

Hey there and thank you for opening this pull request! 👋🏼

We require pull request titles to follow the Conventional Commits specification and it looks like your proposed title needs to be adjusted.

Details:

No release type found in pull request title "WIP personal onbaording flow". Add a prefix to indicate what kind of release this pull request corresponds to. For reference, see https://www.conventionalcommits.org/

Available types:
 - feat: A new feature
 - fix: A bug fix
 - docs: Documentation only changes
 - style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
 - refactor: A code change that neither fixes a bug nor adds a feature
 - perf: A code change that improves performance
 - test: Adding missing tests or correcting existing tests
 - build: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
 - ci: Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)
 - chore: Other changes that don't modify src or test files
 - revert: Reverts a previous commit

@sean-brydon sean-brydon changed the base branch from main to feat/onboarding-v3-teams October 24, 2025 19:50
@keithwillcode keithwillcode added consumer core area: core, team members only labels Oct 24, 2025
@sean-brydon sean-brydon force-pushed the feat/onboarding-v3-personal branch from 4c163b8 to 9aeff49 Compare October 24, 2025 19:58
@sean-brydon sean-brydon changed the title Feat/onboarding v3 personal WIP personal onbaording flow Oct 24, 2025
@vercel
Copy link

vercel bot commented Oct 24, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

2 Skipped Deployments
Project Deployment Preview Comments Updated (UTC)
cal Ignored Ignored Oct 24, 2025 8:49pm
cal-eu Ignored Ignored Oct 24, 2025 8:49pm

Copy link
Member Author

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

@sean-brydon sean-brydon changed the base branch from feat/onboarding-v3-teams to graphite-base/24681 October 24, 2025 20:09
@sean-brydon sean-brydon changed the title WIP personal onbaording flow feat: Add personal onboarding flow Oct 24, 2025
@sean-brydon sean-brydon changed the title feat: Add personal onboarding flow feat: Add personal v3 onboarding flow Oct 24, 2025
Copy link
Contributor

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

Choose a reason for hiding this comment

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

4 issues found across 11 files

Prompt for AI agents (all 4 issues)

Understand the root cause of the following 4 issues and fix them.


<file name="apps/web/modules/onboarding/personal/video/personal-video-view.tsx">

<violation number="1" location="apps/web/modules/onboarding/personal/video/personal-video-view.tsx:50">
This hook path references trpc.viewer.eventTypes.heavy, but the heavy router is exposed as eventTypesHeavy, so this mutate call will be undefined and crash when creating default event types.

(Based on your team&#39;s feedback about heavy router endpoints using the camelCase eventTypesHeavy key.) [FEEDBACK_USED]</violation>
</file>

<file name="apps/web/modules/onboarding/personal/settings/personal-settings-view.tsx">

<violation number="1" location="apps/web/modules/onboarding/personal/settings/personal-settings-view.tsx:106">
`rounded-inherit` is misspelled here (`ounded-…`), so the intended border radius class never applies. Restore the leading `r` to get the correct styling.</violation>

<violation number="2" location="apps/web/modules/onboarding/personal/settings/personal-settings-view.tsx:133">
Frontend text should go through the i18n layer. Please wrap this placeholder in `t()` instead of hardcoding the string so it can be localized.</violation>

<violation number="3" location="apps/web/modules/onboarding/personal/settings/personal-settings-view.tsx:169">
`formState.isValid` never flips to true here, so the Continue button stays disabled. `useForm` defaults to `mode: &quot;onSubmit&quot;`, and the custom `setValue` call doesn’t pass `shouldValidate: true`, so validation never runs on change. Enable validation on change (e.g., configure the form’s mode or request validation inside `setValue`) so users can proceed.</violation>
</file>

React with 👍 or 👎 to teach cubic. Mention @cubic-dev-ai to give feedback, ask questions, or re-run the review.

});

const { data: eventTypes } = trpc.viewer.eventTypes.list.useQuery();
const createEventType = trpc.viewer.eventTypes.heavy.create.useMutation();
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Oct 24, 2025

Choose a reason for hiding this comment

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

This hook path references trpc.viewer.eventTypes.heavy, but the heavy router is exposed as eventTypesHeavy, so this mutate call will be undefined and crash when creating default event types. (Based on your team's feedback about heavy router endpoints using the camelCase eventTypesHeavy key.)

View Feedback

Prompt for AI agents ~~~ Address the following comment on apps/web/modules/onboarding/personal/video/personal-video-view.tsx at line 50: This hook path references trpc.viewer.eventTypes.heavy, but the heavy router is exposed as eventTypesHeavy, so this mutate call will be undefined and crash when creating default event types. (Based on your team's feedback about heavy router endpoints using the camelCase eventTypesHeavy key.) @@ -0,0 +1,203 @@ + }); + + const { data: eventTypes } = trpc.viewer.eventTypes.list.useQuery(); + const createEventType = trpc.viewer.eventTypes.heavy.create.useMutation(); + + const utils = trpc.useUtils(); ~~~
```suggestion const createEventType = trpc.viewer.eventTypesHeavy.create.useMutation(); ``` Fix with Cubic

setName(e.target.value);
form.setValue("name", e.target.value);
}}
placeholder="John Doe"
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Oct 24, 2025

Choose a reason for hiding this comment

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

Frontend text should go through the i18n layer. Please wrap this placeholder in t() instead of hardcoding the string so it can be localized.

Prompt for AI agents
Address the following comment on apps/web/modules/onboarding/personal/settings/personal-settings-view.tsx at line 133:

<comment>Frontend text should go through the i18n layer. Please wrap this placeholder in `t()` instead of hardcoding the string so it can be localized.</comment>

<file context>
@@ -0,0 +1,179 @@
+                              setName(e.target.value);
+                              form.setValue(&quot;name&quot;, e.target.value);
+                            }}
+                            placeholder=&quot;John Doe&quot;
+                            className=&quot;border-default h-7 rounded-[10px] border px-2 py-1.5 text-sm&quot;
+                          /&gt;
</file context>
Suggested change
placeholder="John Doe"
placeholder={t("full_name_placeholder")}
Fix with Cubic

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

consumer core area: core, team members only ready-for-e2e size/XL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants