Skip to content

fix(account): registration form keeps the security planet after an error and shows every field error at its field - #591

Merged
jplacht merged 1 commit into
mainfrom
fix/signup-form-errors
Oct 13, 2026
Merged

jplacht merged 1 commit into
mainfrom
fix/signup-form-errors

Conversation

@jplacht

@jplacht jplacht commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

What and why

About 9 % of people who try to register never get an account. After any signup error the form drew a new security planet but kept the typed answer, so the next try failed on the planet; only the first message of the first field was shown, at the top of the form. Now a user who gets something wrong sees every problem under its field, keeps the planet they already looked up, and can succeed on the next try.

Changes

  • Keep the security planet after a failed signup; "Use a different planet" draws another one and clears the answer
  • PostUserRegistration hands every field and message to the form (fieldErrors, replaces validationFields)
  • Field errors under their fields, cleared on edit, focus on the first; top alert for fix-the-fields, 429 throttling and unknown errors
  • Password rules in the hint, email format checked before submit
  • docs/analytics.md: signup events need earlier consent

Notes:

  • The backend checks the planet only after all field validators pass, so a taken username and a wrong planet never come back together. Combined errors were verified with taken username + numeric password.
  • The hint doesn't promise "not similar to the username": the backend validates the password without the user, so that rule never runs.

How it was verified

  • QA: PASS (code review + full walk in the e2e stack at 1440 and 375), 1 fix round.
  • pnpm test && pnpm tsc && pnpm lint && pnpm knip pass; RegistrationComponent.test.ts 25/25 in the component suite.
  • 429 checked with a faked response (the e2e throttle is 1000/min); 502 shows the unknown-error text.
  • UI audit: landing and login-form at 1440 and 375, no regressions versus baseline. Registration form open (no baseline): 0 at 1440; at 375 only smallTargetsTouch 10 (header, inputs, Create Account, footer links, not the new button).

Screenshots

Error states need typing and can't be captured by the screenshot runner; they were checked in the browser during QA.

Desktop (1440)

Registration form (new password hint, "Use a different planet") Login form (unchanged neighbour)
Registration form at 1440 Login form at 1440

Mobile (375)

Registration form Login form
Registration form at 375 Login form at 375

🤖 Generated with Claude Code

…ror and shows every field error at its field

- Keep the security planet after a failed signup; "Use a different
  planet" draws another one and clears the answer
- PostUserRegistration hands every field and message to the form
  (fieldErrors, replaces validationFields)
- Field errors under their fields, cleared on edit, focus on the first;
  top alert for fix-the-fields, 429 throttling and unknown errors
- Password rules in the hint, email format checked before submit
- docs/analytics.md: signup events need earlier consent

Spec: specs/2026-10-13-signup-02-form-errors.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@netlify

netlify Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for prunplanner-preview ready!

Name Link
🔨 Latest commit 9ef306c
🔍 Latest deploy log https://app.netlify.com/projects/prunplanner-preview/deploys/6ace85202316ac5e998e96b1
😎 Deploy Preview https://deploy-preview-591--prunplanner-preview.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

jplacht added a commit that referenced this pull request Oct 13, 2026
@codacy-production

codacy-production Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 16 complexity · 0 duplication

Metric Results
Complexity 16
Duplication 0

View in Codacy

🟢 Coverage ∅ diff coverage · +0.00% coverage variation

Metric Results
Coverage variation ✅ +0.00% coverage variation (-1.00%)
Diff coverage ✅ ∅ diff coverage

View coverage diff in Codacy

Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (742ae59) 4152 4061 97.81%
Head commit (9ef306c) 4152 (+0) 4061 (+0) 97.81% (+0.00%)

Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: <coverage of head commit> - <coverage of common ancestor commit>

Diff coverage details
Coverable lines Covered lines Diff coverage
Pull request (#591) 0 0 ∅ (not applicable)

Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: <covered lines added or modified>/<coverable lines added or modified> * 100%

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

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