Repository navigation
Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit a72c435. Configure here.
j0ntz
force-pushed
the
jon/name-service-scam-warning
branch
from
November 7, 2026 00:12
a72c435 to
805b85d
Compare
The list of names this account has paid now covers every name service, keyed by service and lower-cased name, instead of FIO handles only. The FIO-only list stays readable, so sends recorded before this change still count.
The modal now resolves with the picked address and, when it turned a name into that address, the name and its service (unstoppable, ens, zns or the wallet's own plugin). The send tile needs that to tell a name from an address. A resolution now only counts for the input that started it. Before, an address resolved for an earlier name stayed in state and was submitted for any later input the resolver did not touch.
Names from every service (FIO, ENS, Unstoppable Domains, ZcashNames, Zano aliases, and names the wallet's own plugin resolves) now go through one gate in the address tile. It warns when this account has never paid the name at the address it resolves to now, and still skips the account's own FIO handles. The copy is service-neutral: it says the input is a name, not an address, names the service, coin and resolved address, and says a name never converts, bridges or routes funds. The FIO-only heuristic that guessed whether a handle copied an address is gone.
j0ntz
force-pushed
the
jon/name-service-scam-warning
branch
from
November 7, 2026 01:20
805b85d to
7ce55ce
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Description
Asana: Send (Name Services) - Universal Scam Warning
The Send scene showed a scam warning only for FIO handles. Names from ENS, Unstoppable Domains, ZcashNames, Zano aliases and the wallet's own plugin resolved straight to an address with no warning. This PR puts every name through one gate in the address tile.
SentNames.json) is keyed by service and lower-cased name, and is written after a broadcast, Stealth Send included. Entries in the oldFioSentAddresses.jsonstill count as FIO sends.AddressModalreturns the resolved name and service alongside the address. A resolution only counts for the input that started it; before, an address resolved for an earlier name could be submitted for a later input.Tested on the iOS simulator (frames below): the first ENS and UD sends warn, a real send to
vitalik.ethon opBNB reached Transaction Success, the same name then went straight to amount entry with no warning, and the first send to a FIO handle still warns. A Stealth Send of $26.50 ETH to that FIO handle then broadcast through the Houdini private route, and after a relaunch the same handle went straight to amount entry with no warning, which covers both the Stealth recording path and the FIO repeat case. With Polygon picked under Recipient receives on an ETH wallet, enteringbrad.cryptoalso raises the warning. On that same Swap & Send path,vitalik.eth(already paid from this account) goes straight to amount entry with no warning.Follows EdgeApp/edge-react-gui#6319, which covered FIO only.
CHANGELOG
Does this branch warrant an entry to the CHANGELOG?
Dependencies
none
Requirements
If you have made any visual changes to the GUI. Make sure you have:
Test evidence
7ce55ceWarn before the first send to any name
2026-11-07
1. ens first send warns
2. ens send success
3. ens repeat no warning
4. ud first send warns
5. fio first send warns
6. fio stealth first send warns
7. fio stealth send success
8. fio repeat no warning
9. swap send name warns
10. c1 resolved
11. c1 no warning
Note
Medium Risk
Changes the send recipient path and on-disk send history for all name services; mistakes could block sends or skip warnings, but behavior is heavily tested and backward-compatible with legacy FIO records.
Overview
First-send scam warnings now apply to all resolvable names (ENS, Unstoppable Domains, ZcashNames, Zano aliases, FIO, and wallet plugin names), not only FIO handles.
AddressTile2funnels every resolved name through a singleconfirmNameSendgate. The user must confirm unless they own the FIO handle, have already sent to that name at the current resolved address, or entered a raw address. Warning strings are service-neutral (warning_sending_to_name_*) across locales; the FIO-specific “looks like an address” copy is removed.Persistence moves from FIO-only
FioSentAddresses.jsontoSentNames.json, keyed by service and lower-cased name with the addresses paid at send time. Legacy FIO entries still count. After broadcast (including Stealth Send/swap),SendScene2records accepts viaaddToSentNames/getAcceptedNameSends, replacing the old FIO helpers.AddressModalnow resolves toAddressModalResult{ address, name? }and tags ENS/UD/ZNS resolution with a service. Submit only applies a resolution when it matches the current input (fixes stale resolution from earlier typing). Call sites that only need an address unwrap.address.Tests broaden
AddressTile2name-warning coverage and addsentNames.test.ts;FioSentAddresses.test.tsis removed.Reviewed by Cursor Bugbot for commit 7ce55ce. Bugbot is set up for automated code reviews on this repo. Configure here.