diff --git a/apps/web/app/(app)/old/onboarding/setup/layout.tsx b/apps/web/app/(app)/old/onboarding/setup/layout.tsx index d68f4325..ebff2cdf 100644 --- a/apps/web/app/(app)/old/onboarding/setup/layout.tsx +++ b/apps/web/app/(app)/old/onboarding/setup/layout.tsx @@ -11,6 +11,7 @@ import { import { useRouter, useSearchParams } from "next/navigation" import { useOnboardingContext, type MemoryFormData } from "../layout" import { analytics } from "@/lib/analytics" +import { consumePendingConnectUrl } from "@/lib/constants" export const SETUP_STEPS = ["integrations"] as const export type SetupStep = (typeof SETUP_STEPS)[number] @@ -61,7 +62,11 @@ export default function SetupLayout({ children }: { children: ReactNode }) { const finishOnboarding = useCallback(() => { resetOnboarding() - router.push("/") + + // If the user arrived from the plugin connect page (e.g. OpenCode), + // redirect back there so the auth flow can complete automatically. + const pendingPath = consumePendingConnectUrl() + router.push(pendingPath ?? "/") }, [router, resetOnboarding]) useEffect(() => { diff --git a/apps/web/app/(app)/onboarding/page.tsx b/apps/web/app/(app)/onboarding/page.tsx index fac8cc40..e3d7245e 100644 --- a/apps/web/app/(app)/onboarding/page.tsx +++ b/apps/web/app/(app)/onboarding/page.tsx @@ -32,6 +32,7 @@ import { import { GoogleDrive, Notion, OneDrive } from "@ui/assets/icons" import { Sparkles, ChevronLeft, ChevronRight } from "lucide-react" import { analytics } from "@/lib/analytics" +import { consumePendingConnectUrl } from "@/lib/constants" type DetectedSource = "x" | "linkedin" | "resume" | null type Status = "idle" | "processing" | "done" | "error" @@ -373,6 +374,12 @@ export default function OnboardingPage() { const pollingRef = useRef | null>(null) const [spotlightCategory, setSpotlightCategory] = useState("productivity") + + /** Navigate home, or back to the plugin connect page if one is pending. */ + const goHomeOrPendingConnect = useCallback(() => { + const pendingPath = consumePendingConnectUrl() + router.push(pendingPath ?? "/") + }, [router]) const [pauseSpotlight, setPauseSpotlight] = useState(false) const spotlightCatalog = useMemo( @@ -620,7 +627,7 @@ export default function OnboardingPage() {