syntaqxThe code boxes sit in the middle of signing in and confirming an email, a code is sent once, and nothing says "Please fill out this field". On the sign-in's second step and email confirmation the six boxes, the recovery link, the hint and the error are centred under the heading that already says what to enter; the label is for screen readers only there. Two-factor settings keep the labelled field, aligned left. A password manager that fills the code often sends the form itself too, and with the boxes sending it at the sixth digit the same code went twice: identity takes each authenticator code once (two_factor.last_step), so the second was refused and said "That code is not right" even when the code was right. While one sending is on its way, any other is now dropped by a submit listener on the form, which runs before React Router's, and the boxes never send a code again while one is out. The boxes are no longer `required`, which drew the browser's bubble over invisible input; an empty code is refused by the server as before. A refused code still clears the boxes and focuses them, and the red goes as soon as something new is typed. Checked: apps/web tsc -b and npm test (993), and the sign-in form in headless Chrome driven over CDP with an action that counts what reaches it: a filled code, the filler's own submit, the boxes' submit and one more while it was out reached the action once; after the refusal the boxes were empty, focused and red, and one typed digit took the red away. Not tried with a real password manager.db67273History
- ..
- accounts.rs
- allocate_usage.sql
- allocation.rs
- budget.rs
- cards.rs
- charged.rs
- closing.rs
- complimentary.rs
- compute.rs
- costs.rs
- credits.rs
- cycle.rs
- detach.rs
- details.rs
- enterprise_attempt.rs
- features.rs
- grants.rs
- invoice_attempt.rs
- invoices.rs
- keeper.rs
- lib.rs
- limits.rs
- margin.rs
- overages.rs
- platform.rs
- pricing.rs
- refund_extras.sql
- refund_ledger.sql
- refund_plan.sql
- rename.rs
- report.rs
- requests.rs
- reset.rs
- retention.rs
- sales.rs
- statement.rs
- storage.rs
- stripe.rs
- stripe_sync.rs
- subscriptions.rs
- tax.rs
- webhooks.rs