From dbee3dddba70783aa66b933ee48a187ef758efaa Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Fri, 2 Oct 2026 14:41:59 -0700 Subject: Send: a lightning address moves on to the amount by itself - Pasted with the keyboard (not only the Paste button) it is complete text: it advances at once, as a paste always did through the button. - Typed and then left alone for 0.9s, it is checked quietly (names: our registrar or BIP-353 DNS; zaps: the LNURL-pay endpoint answers) and the form moves on only if something answers. A half-typed domain answers nothing, so it just waits, with no error; finishing it moves on. - tools/send-lnaddr-advance-test.js (live registrar/DNS, adam@coinos.io). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Dmcrt9KyNDKVWFKnb8BREo --- src/features/names.js | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/features/names.js') diff --git a/src/features/names.js b/src/features/names.js index 8f37b36..7e51c8c 100644 --- a/src/features/names.js +++ b/src/features/names.js @@ -923,6 +923,14 @@ export function namesFeature(ctx) { render: (seg) => namePane(seg), }]; }, + // Is a typed name real yet? (the send form asks once typing pauses, and + // only moves on when something answers — never on a half-typed domain) + async probeLnAddress(text) { + const parsed = parsePaymentName(text); + if (!parsed) return false; + if (OUR_DOMAINS.includes(parsed.domain)) return !!(await registrarLookup(parsed.name, parsed.domain).catch(() => null)); + return !!(await resolveBip353(parsed.name, parsed.domain).catch(() => null)); + }, // BEFORE zaps in the registry: a pasted user@domain tries DNS first. matchSendText(text, typed) { if (typed) return false; // don't yank the form away mid-keystroke -- cgit v1.2.3