Sign-up and welcome cleanup
Quality goals for the sign-up → welcome flow (was #8533, #8501, #8473, #8502, #8480). Skip anything already fixed.
Pages (/login, /signup/*, /welcome), 375 px and 1280 px, light and dark:
1. Pre-auth pages follow `prefers-color-scheme` (`lib/colorScheme.ts::colorSchemeFor(null)` is always light).
2. Placeholders never read as prefilled values (Occupation "Software engineer").
3. One column width on the sign-up card (provider buttons cap at 400 px, fields span 472 px).
4. Plan cards: no repeated "Free" (name = price); the "Plan" legend is screen-reader only.
5. Profile: Country preselected from `navigator.language`; "Use a different account" after a provider sign-up (clears the signup cookie); Organization card copy fits one line at 375 px.
6. Payment: a Payment Element-sized skeleton while Stripe loads.
7. Welcome: show the `?git_connect=error` return error even with no GitHub app; step count matches the rail (Done marker); `lib/onboarding.ts` Connect GitHub uses `return_to`.
API (`apps/api/app/signup_draft.py`):
8. `submit` passes the skipped domain-join org to `record_submission` (`domain_join_skipped_org_id`, R-X4); restore `test_no_skipped_join_is_recorded_without_a_registered_domain` plus the positive case. Delete `signup_plans.offered_key` or say why it stays.
9. `purge_drafts` deletes the Stripe Customer after detaching cards (new `customers_delete` gateway method, fake included) and writes one operator-plane activity row per purged draft (org id, no email).
10. Sign up on a free plan detaches a card saved earlier on a paid plan.
Out of scope: signup routes' contract (pinned for C3), prices, trial length, approval billing, the change-plan wizard.
Done means:
- Each item fixed or rejected with a one-line reason in the PR.
- Tests: vitest for 1, 4, 5 (different account), 7; API tests for 8, 9, 10.
- Screenshots of the changed pages at 375 px and 1280 px, light and dark.
Outcome
Fixed 1 (system colour scheme), 2 (placeholders), 3 (one 400px column), 7 (welcome error/Done flag/return_to); 4-6, 8-10 already shipped (Task 8521), verified. Quick gate + 10.5k vitest green; visual check done 375/1280 light/dark. PR #6491 queued. Follow-up draft 8594.
Artifacts
Activity
- Created
- Run
- Runner started
- Runner ended (done)