Add post-subscription onboarding activation - #204
Open
paulocastellano wants to merge 52 commits into
Open
Conversation
Co-authored-by: Cursor <[email protected]>
Co-authored-by: Cursor <[email protected]>
Co-authored-by: Cursor <[email protected]>
Co-authored-by: Cursor <[email protected]>
…tests. Co-authored-by: Cursor <[email protected]>
Co-authored-by: Cursor <[email protected]>
Co-authored-by: Cursor <[email protected]>
Co-authored-by: Cursor <[email protected]>
Co-authored-by: Cursor <[email protected]>
Co-authored-by: Cursor <[email protected]>
Co-authored-by: Cursor <[email protected]>
Co-authored-by: Cursor <[email protected]>
Co-authored-by: Cursor <[email protected]>
Prevent polling analytics noise, short-circuit completed onboarding status, and align subscribe copy across locales. Co-authored-by: Cursor <[email protected]>
Co-authored-by: Cursor <[email protected]>
Co-authored-by: Cursor <[email protected]>
Tighten welcome persona/goals/referral screens, slim goal options, redesign residual onboarding in the sidebar footer, and merge workspace/user menus into one header dropdown with notifications at the top. Co-authored-by: Cursor <[email protected]>
- Update .env.example to clarify trial days and promotion code settings. - Replace FirstMonthCheckoutDiscount with ConfigureSubscriptionCheckout for better handling of subscription checkouts. - Ensure trial days are validated when card is not required during signup. - Introduce support for promotion codes in the checkout process. - Remove deprecated FirstMonthCheckoutDiscount class and its associated tests. Co-authored-by: Cursor <[email protected]>
Replace polling with Echo broadcasts, keep shared residual reads pure, and DRY welcome/platform/MCP surfaces for a cleaner activation path. Co-authored-by: Cursor <[email protected]>
Fill the English fallback gaps left after the activation i18n prune, including welcome_anonymous and sidebar onboarding labels. Co-authored-by: Cursor <[email protected]>
Co-authored-by: Cursor <[email protected]>
Mirror Changelogfy’s connect/disconnect MCP UI under workspace settings, share settings tabs via a composable, and pin Outros/account links in the sidebar menus. Co-authored-by: Cursor <[email protected]>
Match onboarding/settings card chrome: border-2, shadow-2xs, bold type, and bordered icon tiles. Co-authored-by: Cursor <[email protected]>
Co-authored-by: Cursor <[email protected]>
AccordionItem’s default border-b was zeroing the bottom edge when combined with card borders. Co-authored-by: Cursor <[email protected]>
Hosted clients use config settings URLs with connect buttons; keep accordion config paste for other MCP apps. Co-authored-by: Cursor <[email protected]>
Co-authored-by: Cursor <[email protected]>
Co-authored-by: Cursor <[email protected]>
Co-authored-by: Cursor <[email protected]>
Co-authored-by: Cursor <[email protected]>
Co-authored-by: Cursor <[email protected]>
MCP lives under /settings/workspace, so exclude that path from the Settings active match. Co-authored-by: Cursor <[email protected]>
Drop the redundant connect intro, clarify section blurbs, and align titles with other workspace settings pages. Co-authored-by: Cursor <[email protected]>
Co-authored-by: Cursor <[email protected]>
Co-authored-by: Cursor <[email protected]>
Treat only OAuth grants as MCP connections, broadcast checklist updates on revoke/delete, stamp completion off-page, and tighten dismiss/disconnect/docs handling. Co-authored-by: Cursor <[email protected]>
Stamp completion with a single Completed event, gate skip to owners, harden disconnect, and generate mcpUrl via route('mcp.trypost').
Co-authored-by: Cursor <[email protected]>
Harden residual to owners with hasAppAccess, expire MCP grants, atomically stamp completion, and cut disconnect/Echo noise. Co-authored-by: Cursor <[email protected]>
Avoid fanning out syncProgress across every account user on MCP token exchange, stamp completion when another workspace is already ready, and fix frontend type/lint nits from review. Co-authored-by: Cursor <[email protected]>
Backfill onboarding dismissal via hasAppAccess so past_due/grace accounts are covered, owner-gate welcome checkout and completion stamping, keep dismiss terminal, stamp account completion from workspace sync even when the actor's persisted current workspace differs, restore a poll fallback beside Echo, and filter legacy goals that would soft-lock welcome submit. Co-authored-by: Paulo Castellano <[email protected]>
Limit Checkout trials to first-time card-required signups, add a welcome logout escape for unpaid members, poll the residual banner when Echo is down, and stamp account completion from sync/residual when another workspace already finished activation. Co-authored-by: Paulo Castellano <[email protected]>
Run observer sync/analytics afterCommit, keep shared residual read-only, align Welcome with hasAppAccess, require app access to start social OAuth, throttle welcome checkout, allow teammates to complete activation, and stop the onboarding poll once the checklist is done. Co-authored-by: Paulo Castellano <[email protected]>
Generic-trial accounts could complete MCP OAuth during onboarding and then receive 402 on every API/MCP call because the token middleware still required subscribed(). Match EnsureAccountReady so checklist step 1 is usable. Co-authored-by: Paulo Castellano <[email protected]>
Add broadcastForAccount so teammate completion and owner skip refresh every workspace channel without waiting on the residual poll, and clarify the residual Echo terminal-state comment. Co-authored-by: Paulo Castellano <[email protected]>
Broadcast from markCompleted so auto-complete clears banners account-wide, fan out workspace Echo to siblings while activation is open, and stop the onboarding poll (redirecting on remote dismiss) once status is terminal. Co-authored-by: Paulo Castellano <[email protected]>
Redirect dismissed revisits server-side before Viewed analytics, refuse dismiss after completion, skip client calendar visits during local Skip, and cover afterCommit rollback so sync never outlives a failed transaction. Co-authored-by: Paulo Castellano <[email protected]>
Full visits after completion leave before Viewed analytics while Echo partials still show celebration; complete() stamps via tryMarkAccountComplete when another workspace is ready; residual counts social/posts account-wide. Co-authored-by: Paulo Castellano <[email protected]>
Full revisits still redirect to calendar, but markCompleted flashes onboarding_just_completed so the post-OAuth router.reload can render the checklist celebration without re-firing Viewed. Co-authored-by: Paulo Castellano <[email protected]>
Only pull onboarding_just_completed on full visits, and reload onboarding OAuth success as a partial so checklist celebration survives the race. Co-authored-by: Paulo Castellano <[email protected]>
Limit qualifiesForCheckoutTrial to the default Cashier subscription type, refresh the workspace gate docblock, and resolve checklist/residual steps account-wide so multi-workspace progress stays consistent. Co-authored-by: Paulo Castellano <[email protected]>
Account-scoped checklist steps already stamp via all_complete/syncProgress, so the ready-workspace fallback is gone. Add an incomplete_expired Checkout trial case to match the qualifiesForCheckoutTrial allow-list. Co-authored-by: Paulo Castellano <[email protected]>
Keep both onboardingResidual share props and main's contentTypeMediaRules shareOnce / ContentType frontend types after conflict resolution. Co-authored-by: Paulo Castellano <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
/welcome/{persona|goals|referral-source|subscribe}) and removes the social-connect gate before checkout./onboarding(connect MCP → connect social → create first post, draft OK), with skip + residual banner in the app shell./billing/processingto/onboardinginstead of/accounts, with PostHog welcome/onboarding events and account timestamps for completion/dismissal.Test plan
/welcome/persona→ goals → referral → subscribe (no social required) → Stripe checkout/onboardingonboarding_completed_at/onboarding/goals,/onboarding/referral-source,/onboarding/connectredirect to welcome equivalentsphp artisan test --compact tests/Feature/Welcome tests/Feature/Onboarding tests/Feature/Actions/OnboardingMade with Cursor