{"record":{"id":"670acc6ab69f9889","repo":"tinyhumansai/openhuman","slug":"onboarding-layout-could-not-set-walkthrough-pend","errorCode":null,"errorMessage":"[onboarding:layout] could not set walkthrough pending flag; continuing","messagePattern":"\\[onboarding:layout\\] could not set walkthrough pending flag; continuing","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app/src/pages/onboarding/OnboardingLayout.tsx","lineNumber":75,"sourceCode":"    }\n\n    try {\n      await setOnboardingCompletedFlag(true);\n    } catch (e) {\n      console.error('[onboarding] Failed to persist onboarding_completed', e);\n      throw e;\n    }\n\n    // Fire onboarding_complete analytics event before navigation.\n    trackEvent('onboarding_complete');\n\n    // Flag the Joyride walkthrough as pending so it auto-starts on the chat landing surface.\n    // Best-effort: localStorage failures must not block navigation.\n    try {\n      setWalkthroughPending();\n      console.debug('[onboarding:layout] walkthrough pending flag set — navigating to /chat');\n    } catch (e) {\n      console.warn('[onboarding:layout] could not set walkthrough pending flag; continuing', e);\n    }\n\n    navigate('/chat', { replace: true });\n  }, [draft.connectedSources, navigate, setOnboardingCompletedFlag, setOnboardingTasks, snapshot]);\n\n  const value = useMemo(\n    () => ({ draft, setDraft, completeAndExit }),\n    [draft, setDraft, completeAndExit]\n  );\n\n  return (\n    <OnboardingContext.Provider value={value}>\n      <div\n        data-testid=\"onboarding-layout\"\n        className=\"min-h-full relative flex items-center justify-center py-10\">\n        <div className=\"relative z-10 w-full max-w-2xl mx-4\">\n          <BetaBanner />\n          <Outlet />","sourceCodeStart":57,"sourceCodeEnd":93,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/app/src/pages/onboarding/OnboardingLayout.tsx#L57-L93","documentation":"Best-effort catch around setWalkthroughPending() just before navigating to /chat after onboarding. The critical persistence step above (onboarding_completed flag) already ran and threw on failure; the walkthrough flag is intentionally non-blocking, so a localStorage failure here only logs and navigation continues — the walkthrough just may not auto-start.","triggerScenarios":"Thrown at app/src/pages/onboarding/OnboardingLayout.tsx:75 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["No action needed — navigation to /chat proceeds","If the walkthrough is desired, trigger it manually via resetWalkthrough once storage is healthy","Clear localStorage quota if setItem keeps failing"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}