Context
Split out of #204. Final module that wires the full post-pay activation path.
Prerequisites on main (merge order)
Prefer these already merged (each was independently shippable):
- Sidebar shell
- MCP settings (checklist step 1 UX)
- Welcome (ICP moved off
/onboarding)
- Billing (trial + verified purchase tracking)
Goal
After Stripe, owners land on a single-page activation checklist (MCP → social → first post), with a residual sidebar banner until done, realtime progress, and safe completion/skip semantics.
In scope
- Account schema:
onboarding_completed_at, onboarding_dismissed_at, onboarding_skipped_steps + data backfill for accounts that already have hasAppAccess
ResolveOnboardingStatus + OnboardingController activation endpoints (sync / per-step skip / complete)
- Single-page checklist UI; MCP skippable; social + first post required
- Observers +
OnboardingStatusUpdated Echo broadcasts (+ poll fallback)
- Residual banner in the app sidebar (
SidebarOnboarding) linking back to /onboarding
/billing/processing sends owners to /onboarding (this is where that redirect finally flips)
- Onboarding PostHog events; celebration / terminal-state guards
- Feature + browser tests for skip clearing residual, member paths, etc.
Out of scope
- Re-doing Welcome ICP (already on
/welcome)
- Re-doing trial/promo config (already in Billing)
- Re-building MCP settings page (link/reuse existing)
Independence note
This module is the only one that intentionally depends on the others for a complete funnel. It should still degrade gracefully if MCP settings UI is missing (connect via existing OAuth paths), but do not merge before Welcome has vacated /onboarding.
Suggested test plan
Context
Split out of #204. Final module that wires the full post-pay activation path.
Prerequisites on
main(merge order)Prefer these already merged (each was independently shippable):
/onboarding)Goal
After Stripe, owners land on a single-page activation checklist (MCP → social → first post), with a residual sidebar banner until done, realtime progress, and safe completion/skip semantics.
In scope
onboarding_completed_at,onboarding_dismissed_at,onboarding_skipped_steps+ data backfill for accounts that already havehasAppAccessResolveOnboardingStatus+OnboardingControlleractivation endpoints (sync / per-step skip / complete)OnboardingStatusUpdatedEcho broadcasts (+ poll fallback)SidebarOnboarding) linking back to/onboarding/billing/processingsends owners to/onboarding(this is where that redirect finally flips)Out of scope
/welcome)Independence note
This module is the only one that intentionally depends on the others for a complete funnel. It should still degrade gracefully if MCP settings UI is missing (connect via existing OAuth paths), but do not merge before Welcome has vacated
/onboarding.Suggested test plan
/onboarding