Sign-in: validate email format (zod) before submitting credentials
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 66/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- typescript
- Domain
- authentication, frontend, testing
Research direction
Start at the sign-in form and trace how it validates fields before calling the auth request; check the sign-up and forgot-password forms for a shared email validation path. Read the design system form’s existing field error pattern and the rule referenced in #413. Add tests showing malformed email produces a field error without an auth call, while valid email still reaches auth and displays credential errors.
Written by the indexing model from the issue text.
Description
Sign-in should reject a malformed email before trying credentials
Reported by Stephen (2026-11-07): on the sign-in form he accidentally typed a username instead of an email address. The login failed — as expected — but with the generic invalid-credentials error. A value that is not an email address should never reach the auth call: the form should fail fast with an "invalid email address" validation error.
Expected behavior
- The email field is validated before the sign-in request is submitted.
- A malformed value (e.g. a bare username with no
@/domain) produces a field-level validation error with a user-friendly message — plain language a non-technical user understands (e.g. "Enter a valid email address"), not a raw library error string and not the credentials error. - A well-formed email with wrong credentials keeps the existing invalid-credentials behavior — validation must not mask or replace the real auth errors.
Implementation notes
- Use zod for the email schema (the repo's validation library), with the error message customized to the user-friendly wording — do not surface zod's default message verbatim.
- Scope: the sign-in form is the reported case. The same schema should be reused on the other auth forms that take an email (sign-up, forgot password) if they share the field/validation path — one shared schema, not three copies.
- The sign-in form renders through the design system's page/form surface (business logic stays in the app; the DS form must surface the field error, the same pattern other DS forms use for field-level errors). If the DS form cannot display a field-level validation error, file the gap in spudly/design-system rather than working around it locally (per the #413 rule).
- Add tests: malformed email → validation error and no auth call is made; well-formed email → auth call proceeds and credential errors still surface as before.
- Dominant language
- TypeScript
- Stars
- 0
- Forks
- 0
- Avg merge
- 8h 48m
- Merged PRs (30d)
- 209
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from spudly/eciperay
-
blocked needs_human priority-p2
Difficulty 2/5 Half a day Newbie friendliness 68/100
spudly/eciperay#31 · 1 comment ·
Maintainers usually reply within 1 day
-
Android release build fails applying expo-autolinking plugin (expo-constants libraryVariants) — regression from #464Possibly taken @spudly claimed this today. Openblocker bug priority-p1 scale-md
Difficulty 4/5 3-5 days Newbie friendliness 25/100
spudly/eciperay#466 · 2 comments ·
Maintainers usually reply within 1 day
-
enhancement priority-p2
Difficulty 5/5 Over a week Newbie friendliness 35/100
Maintainers usually reply within 1 day
-
enhancement priority-p2
Difficulty 5/5 Over a week Newbie friendliness 35/100
spudly/eciperay#460 · 4 comments ·
Maintainers usually reply within 1 day
-
blocked enhancement priority-p2
Difficulty 4/5 3-5 days Newbie friendliness 35/100
spudly/eciperay#451 · 3 comments ·
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
backnotprop/plannotator#2914 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
microsoft/vscode-containers#655 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 77/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
dsh-tauri-desk/deepseek-harness-desktop#1477 · 1 comment ·