-- v1.4.25 W14b — onboarding wizard resume-state. -- -- Adds `onboarding_step` to the `users` table so the rebuilt multi-step -- wizard at `/onboarding/[step]` can resume the user at the highest -- step they reached. Without this column, closing the tab mid-flow -- wipes progress and forces users back to step 0. -- -- Step encoding (mirrors `src/components/onboarding/OnboardingShell.tsx` -- and `src/app/onboarding/[step]/page.tsx`): -- 0 = welcome (carousel / value-prop intro) -- 1 = goals ("what do you want to track?") -- 2 = source ("connect a source" — Withings / Apple Health / manual) -- 3 = baseline (first measurement / sync confirmation) -- 4 = done (success screen; same write that flips -- `onboarding_completed_at` from NULL to NOW()) -- -- Existing rows are backfilled to 0 by PostgreSQL's fast-path -- `ADD COLUMN ... DEFAULT` (PG11+), which materialises the default -- without rewriting the table — every pre-W14b user lands at step 0 -- in O(1) time. The column ships nullable purely so the DDL stays -- additive on every replica; Migration 0060 follows up by flipping -- it to NOT NULL once the deploy has rolled. -- -- The `IF NOT EXISTS` guards make the migration idempotent — if the -- column landed via a prior dev-DB hand-edit, the migration still -- runs cleanly to completion. ALTER TABLE "users" ADD COLUMN IF NOT EXISTS "onboarding_step" INTEGER DEFAULT 0;