fix: one wording for an empty password field on every screen (closes #265)
All checks were successful
check / check (push) Successful in 28s

The private key export screen answered an empty password field with "Password
is required." where the other five screens that ask for the password say
"Please enter your password." Same condition, two sentences, and a user hitting
both had no reason to think they meant the same thing. The majority wording
wins; the export screen now says it too.

Strings only. Every screen still refuses to proceed on an empty field exactly
as before.

tests/passwordMessages.test.js already pinned the rejected-password sentence
per decryptWithPassword call site; it now pins the empty-field sentence the
same way, walking each decrypt's password variable back to the guard that
rejects it blank and requiring the prose there to be the canonical sentence and
nothing else. Anchoring on the decrypt keeps the wallet-creation screen out of
the set, where an empty field means a password being chosen rather than
entered -- a different condition with its own wording.

Every error container measured at a 360px viewport in the pinned Playwright
container against the built popup. The export screen's container holds at 20px
with the section below it at the same offset for the empty reserved state, the
old string and the new one.
This commit is contained in:
2026-08-17 06:32:57 +00:00
committed by sneak
parent c06765ef8f
commit 974bbae770
3 changed files with 102 additions and 3 deletions

13
TODO.md
View File

@@ -45,6 +45,19 @@ undefined identifiers, which is how
# Completed Steps
- 2026-08-17: One wording for an empty password field on every screen that asks
for one. The private key export screen said "Password is required." where the
other five say "Please enter your password.", the same one-condition-two-
wordings split that [#172](https://git.eeqj.de/sneak/AutistMask/issues/172)
closed for a rejected password. Strings only, no behaviour change.
`tests/passwordMessages.test.js` now pins the empty-field guard per call site
as well as the decrypt handler, anchored on the `decryptWithPassword` sites so
the wallet-creation screen — where an empty field means a password being
chosen, a different condition — stays out of the set. Every error container
measured at a 360px viewport in the pinned Playwright container: the export
screen's container holds at 20px with the following section at the same offset
for the old string, the new string and the empty reserved state
([#265](https://git.eeqj.de/sneak/AutistMask/issues/265)).
- 2026-08-17: An address total no longer reports `$0.00` for holdings it cannot
price. Prices exist for the top 25 tokens only, so the priced-only sum was
printed as the total and an address holding nothing but unpriced ERC-20s was