Documentation
9. v0.7.0 — User accounts
- Created
- Jun 20, 2026
- Updated
- Jun 20, 2026
Released 2026-06-20. This release adds an end-to-end user-account system to Fractal Chart: create an account, sign in with email/password or a social provider, and manage your profile, password, active sessions, and account from a dedicated dashboard. Signing in is optional — the chart workspace continues to work without an account. The release also includes the production hardening and infrastructure fixes made while bringing auth live.
Added
Accounts & authentication
- Sign up / sign in / sign out. Email + password registration with a six-digit email confirmation, sign-in, and sign-out (clears the server session and the Cognito SSO session).
- Social login. Continue with Google / Facebook / Apple (whichever providers a deployment enables via
NEXT_PUBLIC_SOCIAL_PROVIDERS). - Password reset. Request an email code and set a new password without signing in (native accounts).
- Account collision handling. A social sign-in whose email already belongs to a native account is paused and resolved with a confirm-with-password link, after which both methods work for the same account.
Account dashboard (/account)
- Profile — edit display name and (native accounts) email, with an inline email-verification step.
- Change password — for native accounts; a successful change invalidates every other session.
- Devices — lists recognized browsers with last-seen time and a Sign out all other devices action.
- Delete account — disables the Cognito user, soft-deletes the profile, and terminates all sessions.
- Workspace integration — a user-avatar button in the chart header links to the account page; signed-in users are redirected away from the auth pages.
Sessions
- Server-managed sessions backed by an opaque,
HttpOnly/Secure/SameSite=Laxcookie — no tokens are ever exposed to the browser. A 30-minute idle window (reset on activity) and a 7-day absolute cap, with transparent, single-flight token refresh.
Other
- Detachable indicator/strategy editor — the bottom editor dock can be popped out into a floating, draggable, resizable window.
- Landing footer theme toggle — light/dark/auto switch; removed the "Open BTCUSDT" footer link.
- Themed 404 page.
Changed
.env.examplesplit into the Next.js app (root.env.example) and the auth service (infra/.env.example); deploy scripts sourceinfra/.env.local.- Versioned API — all SPA → backend calls go through
/v1onNEXT_PUBLIC_API_BASE_URL.
Fixed
These surfaced while deploying auth to staging and production:
- Sessions reaped at the idle window. The DynamoDB
ttlnow tracks the absolute cap (7 days) instead of the 30-minute idle window, so sessions are no longer hard-deleted while still refreshable — fixing overnight logouts and the Devices-card error. - Production
/v1mapping. Enabled the custom-domain base-path mapping soapi.fractalchart.com/v1/*reaches the API (was returning403 Forbidden). - CORS for
www+ apex.CorsAllowOriginsallows every host the SPA is served on, so credentialed requests fromwww.fractalchart.comaren't blocked. Implemented as aCommaDelimitedListso the SAM template deploys cleanly. - CSRF origin check. The
assertCsrfguard accepts the same origin set as CORS (apex + www), fixing403on every account POST (profile, password, delete, etc.). - Hardening. Authorizer result caching disabled (immediate revocation), least-privilege authorizer IAM, redacted OAuth-callback logs, DynamoDB reserved-word aliasing, and the
oauth_txcookie scoped toPath=/.
Deployment
Frontend (Vercel) ships from the app build. The auth backend is deployed with AWS SAM from infra/:
cd infra
sam deploy --config-env production-dynamodb
./bin/deploy-cognito.sh production # social creds sourced from SSM
./bin/put-secrets.sh production # SSM SecureString secrets
sam build --config-env production-oauth-v1
sam deploy --config-env production-oauth-v1
See dev-docs/auth-deploy-runbook.md for the full runbook.
Next steps
Back to the release list.
Next: Release Notes