<feed xmlns='http://www.w3.org/2005/Atom'>
<title>coinosv3.git/src/lnurl.js, branch fdroid-v1.9</title>
<subtitle>coinos v3 — bitcoin, Ark, Lightning and nostr wallet (web + Android)</subtitle>
<id>https://git.coinos.io/coinosv3.git/atom?h=fdroid-v1.9</id>
<link rel='self' href='https://git.coinos.io/coinosv3.git/atom?h=fdroid-v1.9'/>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/'/>
<updated>2026-09-29T18:05:41Z</updated>
<entry>
<title>A zap to a Lightning address that doesn't answer says so, naming the host, instead of "signal is aborted without reason".</title>
<updated>2026-09-29T18:05:41Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-29T18:05:41Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=c7186db46f6e45969f01709bc4a0a9472a40dff1'/>
<id>urn:sha1:c7186db46f6e45969f01709bc4a0a9472a40dff1</id>
<content type='text'>
jb55@sendsats.lol: the lnurlp endpoint answers in 0.15 s but its invoice
callback hangs 30 s then 502s; our 8 s timeout surfaced as the browser's
raw AbortError text. Errors now name the host, a timeout says their
address may be down, and an error response's LNURL reason is shown.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01Du1qT1wbkYwYK6zkGH79Rp
</content>
</entry>
<entry>
<title>Add NIP-57 Lightning zaps (npub / lightning address / lnurl)</title>
<updated>2026-07-30T15:43:47Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-07-30T15:43:47Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=6713f8d4e55db8d5344684b08b062cc9129ef6b0'/>
<id>urn:sha1:6713f8d4e55db8d5344684b08b062cc9129ef6b0</id>
<content type='text'>
Send a Lightning zap to a nostr npub, a lightning address (name@domain),
or an lnurl. New src/lnurl.js does the resolution half — target → LNURL-pay
params → signed kind-9734 zap request → callback → bolt11 — and the new
zaps feature (src/features/zaps.js) drives the amount/comment UI, then hands
the invoice to the existing Boltz submarine-swap flow via a new
swaps.startLnPay hook, so there's one tested pay/review/confirm/success path.

Routing: a bolt11 is still caught by swaps; an npub still prefers an instant
free Ark zap when Ark can serve it, and only falls through to a Lightning
zap otherwise — ark's "no Ark address" screen also offers an explicit
"Zap over Lightning" fallback (gated on the zaps feature's canLnZap). A real
zap receipt is attributed only when the server advertises allowsNostr and we
know the recipient's pubkey; otherwise it degrades to a plain LNURL-pay.

Nostr seam gains nostrSign (finalize without publishing), nostrProfile
(kind-0 with lud16/lud06), and nostrRelays. Lightning addresses are
debounced in matchSendText since their regex matches mid-typing.

Verified: unit tests for parse/encode/zap-request; a live resolve→signed
9734→payable mainnet bolt11 against coinos; and an in-browser DOM smoke
(zap form + LNURL params over CORS + allowsNostr hint + handoff).

Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
