| 31-puter.js-zero-config-cloud |
03 |
ui |
| react |
| puter |
| google-oauth |
| api-key |
| onboarding |
| shadcn |
| lucide-react |
|
| phase |
provides |
| 31-puter.js-zero-config-cloud/31-01 |
puterProxyService and routes (POST /api/puter-proxy/token, /api/puter-proxy/chat) |
|
| phase |
provides |
| 31-puter.js-zero-config-cloud/31-02 |
Google OAuth PKCE routes (authorize, callback, claim) and api-keys/store endpoint |
|
| phase |
provides |
| 30-hardware-detection-mode-selection/30-02 |
NexusOnboardingWizard 3-step structure and ModeSelector card pattern |
|
|
| ProviderSelectionStep component (Step 3 of 4) with Puter/Google/API key cards |
| PuterAuthButton |
| loads Puter CDN, triggers signIn popup, captures token in React state |
|
| GoogleOAuthButton |
| 3-second risk warning gate, opens OAuth popup, captures stateId |
|
| ApiKeyEntryForm |
| provider dropdown (OpenAI/Anthropic/Groq) + password input |
|
| puterProxyApi client |
| storeToken, getAuthUrl, claimGoogleTokens, storeApiKey |
|
| NexusOnboardingWizard updated to 4-step flow with credential storage after company creation |
|
| 31-04 |
| 33-personal-ai-assistant |
| future-onboarding-phases |
|
| added |
patterns |
|
|
| Provider card interaction: <button type=button> with border-primary bg-primary/5 on selection, matches ModeSelector |
| Credential capture: React state stores token/stateId/apiKey during wizard; posted server-side after company creation |
| CDN script injection: loadScript() helper creates <script> tag on demand (Puter SDK only loaded on click) |
| Google risk gate: 3-second setTimeout before enabling Sign in button (anti-accidental-click UX pattern) |
| Non-blocking credential storage: all provider API calls wrapped in .catch(() => {}) post company creation |
|
|
| created |
modified |
| ui/src/api/puter-proxy.ts |
| ui/src/components/onboarding/PuterAuthButton.tsx |
| ui/src/components/onboarding/GoogleOAuthButton.tsx |
| ui/src/components/onboarding/ApiKeyEntryForm.tsx |
| ui/src/components/onboarding/ProviderSelectionStep.tsx |
|
| ui/src/components/NexusOnboardingWizard.tsx |
|
|
| Heading 'Choose a provider' in wizard wrapper, not ProviderSelectionStep — matches existing pattern where step wrapper owns heading |
| Adapter badges on Puter card only (hermes/claude/openclaw are local adapters, not Google/API key alternatives) |
| Pre-existing AgentConfigForm.tsx TS error (detectModel) left as out-of-scope — pre-dated this plan |
|
| Provider auth pattern: capture credentials in React state during wizard, POST to server only after company creation |
| Risk warning timing gate: useEffect + setTimeout(fn, 3000) for anti-accidental-click on destructive/risky actions |
|
| CLOUD-01 |
| CLOUD-03 |
| CLOUD-04 |
| CLOUD-05 |
|
5min |
2026-04-03 |