One flow registers new customers and signs in existing ones, on any device. Spec: Sign-in. Task: WB-7 rows 1 to 4. No bottom navigation: the customer is not signed in.
| State | What shows |
| Normal | Number step, empty, both boxes unticked (not pre-ticked). |
| Invalid number | “Enter a 10-digit US mobile number.” Send code stays tappable. |
| Box not ticked | “To get a code, tick the box for appointment texts.” Owner answered 2026-11-09: required; the reminders box is optional. The client still has to confirm it (open-questions). |
| Too many codes | Banner “Too many codes requested. Try again in 15 minutes, or call us at (555) 010-0123.” Send code disabled. ? The limit and the wait wait on the Twilio Verify settings (build). |
| Sending (loading) | Button “Sending code…”, disabled. |
| Offline (failure) | Same offline sentence as the start page, with Try again. |
| Signed out | Where Home sends an expired session: “You’ve been signed out. Sign in again to continue.” Sessions last 90 days. |
| Code | “We texted a 6-digit code to (number).” Verify; Send a new code; Change number. |
| Wrong code / Expired | “That code isn’t right. Check the text and try again.” / “That code has expired. Send a new code.” |
| Resent | “New code sent to (number).” and “You can ask for another code in 30 seconds.” ? The 30 seconds waits on the Twilio Verify settings. |
| Too many tries | Banner “Too many wrong codes. Ask for a new code in 15 minutes, or call us at (555) 010-0123.” ? Same wait as above. |
| Verifying / Offline (code step) | Button “Verifying…” / offline banner with Try again. |
| Name / Name errors | First name, last name, email (optional). Errors: first name empty, email not an email. |
| Name: save failed | Banner “We couldn’t save your details. Check your connection and try again.” The three fields keep what was typed; Continue stays tappable. |
| Add a vehicle | First sign-in prompt: Add a vehicle (opens My vehicles, add form) or Skip for now. |
| Empty | None: no list on this screen. |
All of them: mobile number, two consent boxes, Send code, 6-digit code, Verify, Send a new code, Change number, first name, last name, email, Continue, Add a vehicle, Skip for now, Back. Targets outside this task: book.html is a WB-8 placeholder.