feat: a "Max" button on the Send screen (closes #198)
check / check (push) Failing after 3s
e2e / e2e-chrome (push) Failing after 2s
e2e / e2e-firefox (push) Failing after 2s

Max fills in a token's whole balance, or for ETH the exact balance minus
the fee reserve the confirmation screen's balance check gates on. The
confirmation screen works a max ETH amount out again from its own fee
estimate and signs it with that estimate's fee fields, so a fee that rose
before signing cannot push amount plus fee above the balance.
validateTransfer() still gates every send, the check that ETH covers a
token send's fee included. Where there is nothing to fill in, a flash
message says why.

Model: opus-5-5
This commit is contained in:
2026-10-05 04:05:20 +00:00
parent cf7ca99215
commit a0f1e98323
9 changed files with 672 additions and 30 deletions
+12
View File
@@ -45,6 +45,18 @@ but the review is broader than any of them.
# Completed Steps
- 2026-10-05: The Send screen has a "Max" button
([#198](https://git.eeqj.de/sneak/AutistMask/issues/198)). Emptying an ETH
address took guessing an amount and being refused by the confirmation screen's
balance check. Max fills in a token's whole balance, or for ETH the exact
balance minus the fee reserve that check gates on, never the four-decimal
balance shown. The confirmation screen works a max ETH amount out again from
its own fee estimate and signs it with that estimate's fee fields: fetched
again at signing, a fee that had risen since would leave amount plus fee above
the balance, and the node would refuse the send. A token's maximum is still
refused when ETH cannot pay the fee. Where there is nothing to fill in, a
flash message says why.
- 2026-10-05: A token scale of zero decimals is tested
([#325](https://git.eeqj.de/sneak/AutistMask/issues/325)).
`resolveTokenDecimals()` already used a scale of 0 from the bundled list or