Skip to content

Onboarding: post-subscription activation checklist, residual banner, and processing redirect #239

Description

@paulocastellano

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):

  1. Sidebar shell
  2. MCP settings (checklist step 1 UX)
  3. Welcome (ICP moved off /onboarding)
  4. 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

  • Owner after checkout → processing → /onboarding
  • Checklist steps complete via connect / first post; MCP skip works; residual clears
  • Existing app-access accounts backfilled as dismissed (no banner)
  • Unpaid accounts keep a clean slate until they subscribe
  • Echo + poll update residual/checklist; terminal states stop polling
  • Browser: skip MCP clears residual; mobile sidebar path covered

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions