All checks were successful
check / check (push) Successful in 41s
Two defects in the anti-poisoning filters, both silent over-filtering: the wallet hid transactions the user had asked to see. A dust threshold of 0 was read as `filters.dustThresholdGwei || 100000`, so the one value a user would pick to mean "show everything" was swallowed and replaced by the default. It is now `??`, making 0 a real threshold that hides nothing and agrees exactly with clearing the hide-dust checkbox. The Settings input rejects empty, negative, fractional and non-numeric entries outright instead of coercing them, and resyncs the field to the stored value so it never displays a threshold the wallet is not using. isSpoofedSymbol compared the contract address with `===` against a lowercased known address. EIP-55 mixed case is a checksum, not identity, so a genuine token arriving checksummed was classified as a spoof and hidden. All address comparisons in the module now go through one normalizeAddress helper, which also normalises the fraud contracts recorded from a detected spoof. Tests cover threshold 0 versus unset versus a set value, and the contract comparison in lowercase, uppercase and EIP-55 form as well as against a genuinely different address. The two `current behaviour:` tests pinning the old behaviour are inverted into regression guards, and a fixture pairing a real contract address with a null holder count pins the `tx.holders !== null` guard that no fixture previously reached.