Skip to content

fix(onboarding): require contact number, one smooth wait bar - #888

Merged
kavin-114 merged 16 commits into
developfrom
fix/onboarding-contact-required
Aug 16, 2026
Merged

fix(onboarding): require contact number, one smooth wait bar#888
kavin-114 merged 16 commits into
developfrom
fix/onboarding-contact-required

Conversation

@kavin-114

@kavin-114 kavin-114 commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Summary

Onboarding now requires a contact number on the Details step, and the provisioning wait screens show one smooth progress bar instead of six labeled tiles sitting above bar segments.

  • Contact number: label drops "(optional)", the form blocks submit when it is blank with the standard field error, and the server rejects a missing or blank contact number on both the signup and billing-update endpoints (lead capture stays all-optional by design). The Pay step's pre-flight guard also sends a resumed session with a blank contact back to Details instead of letting it hit a server error.
  • Wait screens (connect wait and pay wait) render a single filling bar with one caption, for example "Step 2 of 6 · Workspace". The duplicated per-step label row is gone. Indeterminate states pulse gently and respect reduced-motion. The wizard rail (Details / Plan / Pay / Connect) keeps its segmented look via an explicit variant="steps".

One migration note: a signup that saved Details with a blank contact before this change is rejected at Pay; the Edit button returns the user to Details, where the now-required field catches it.

Pre-merge checklist

ℹ️ These repos are private on the GitHub Free plan, so branch protection is
not enforced — CI cannot hard-block a merge. Honoring this checklist is what keeps
broken changes out of UAT. See CONTRIBUTING.md.

  • CI is green — the tests check on this PR passes (never merge on ❌)
  • Branch is up to date with main (branched from current develop)
  • New/changed behavior has tests (the coverage gate still passes)
  • I self-reviewed the diff

Contact number on the onboarding Details step is now mandatory, both
in the SPA (matching the email/company/gstin validation pattern) and
in start_signup, which refuses a blank contact_number server-side so
the check cannot be bypassed. Updates the 22 existing backend tests
and 2 frontend tests that previously called start_signup / submitted
Details without a contact number.
…gate foreign dashboard events, id-less tool:end fallback, bounded goto stamps (#884)
Replace the segmented step tiles above the connect and pay wait bars
with one continuous fill plus a single caption naming the current
step ("Step 2 of 6 · Workspace"). The wizard rail keeps its labeled
segments via a new StepProgress variant="steps", since it is real
navigation, not one of the two wait screens the redesign targeted.
A second tab, an errored/stopped terminal, or a was_recovered replacement
that dropped the goto block all reach run:end with the latch still set and
no navigation coming — the morph line would otherwise animate forever.
Only the terminal that actually calls gotoDashboards() keeps the latch
through the run:end-to-navigation instant.
Extract the required-contact-number check into _require_contact_number
and enforce it in update_billing too, so the Review & Pay "Edit" path
can no longer bypass it (was previously only checked in start_signup).
Add the same check to onPayClick's client-side guard so a resumed
session with a stale blank-contact snapshot routes back to Details
instead of hitting the server throw with no way back.

Restore the inclusive fill invariant on StepProgress.vue's bar variant:
the current step counts toward the fill, matching the steps-rail
variant's own i <= currentIndex rule, so wait screens no longer sit
stuck below their true progress. currentIndex < 0 now reads as
all-done (100%) instead of empty.

Also fixes a stale assertion in test_coded_duplicate_resumes: billing
is legitimately forwarded on the duplicate-resume path (unchanged
behavior), the test just never had a caller passing billing until a
prior commit threaded _BILLING through every start_signup call site in
this file to satisfy the new contact requirement.
@kavin-114

Copy link
Copy Markdown
Contributor Author

Before and after evidence (captured on the local bench from this branch's build; images live on the non-merge branch evidence/pr-888).

Details step: contact number now required

Before (develop) After (this branch)
Details before Details after

Empty submit is blocked; with a number filled, Continue advances to Plan:

Blocked Advanced
Validation error Plan step reached

Wait screens: six labeled tiles replaced by one smooth bar (rendered side by side with the app's real tokens)

Progress bar before and after, light

Progress bar before and after, dark

@kavin-114
kavin-114 merged commit dc548ef into develop Aug 16, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant