<feed xmlns='http://www.w3.org/2005/Atom'>
<title>coinosv3.git/src/features/names.js, branch fdroid-v1.7</title>
<subtitle>coinos v3 — bitcoin, Ark, Lightning and nostr wallet (web + Android)</subtitle>
<id>https://git.coinos.io/coinosv3.git/atom?h=fdroid-v1.7</id>
<link rel='self' href='https://git.coinos.io/coinosv3.git/atom?h=fdroid-v1.7'/>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/'/>
<updated>2026-09-11T15:33:43Z</updated>
<entry>
<title>Offer migration only for submitted unmigrated legacy names</title>
<updated>2026-09-11T15:33:43Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-11T15:33:43Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=fb33e7de7de8c787ed8d906026f0e0e4270af33e'/>
<id>urn:sha1:fb33e7de7de8c787ed8d906026f0e0e4270af33e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Onboarding: fix the crash after a name claim/migration; keep a login-owned name through signer resume.</title>
<updated>2026-09-10T17:40:16Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-10T17:40:16Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=dd3ca845bfaf901dfb0fe702a7e5cb1c32485d25'/>
<id>urn:sha1:dd3ca845bfaf901dfb0fe702a7e5cb1c32485d25</id>
<content type='text'>
"Something broke" right after a coinos.io migration completed: the spend
step advances past the avatar ask by calling nextAfterAvatar(), which was
a const declared further down the same function — a temporal-dead-zone
throw for any profile that already had a picture. Now a hoisted function.

Also, the claimed-name ownership check only counted the LIVE login signer.
A bunker/Google login resumes seconds after load, so for that window a
name owned by the login identity (every migrated coinos.io name) looked
foreign, was dropped, and the wallet key's npub-shaped default took its
place — the address visibly flipped from name@coinos.io to npub…@coinos.io.
The stored login pubkey now counts as ours too.

Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01Nw1Dijik1tLVKRM1WkU7xE
</content>
</entry>
<entry>
<title>POS tools are merchant-only now: the tap-to-pay link and terminal-token cards hide behind a merchant designation — a one-line "I'm a merchant — show point-of-sale tools" toggle at the foot of the payment-address card, swapping to "Hide point-of-sale tools" once on. The flag lives in the names feature state, so it follows the account to every device via wallet sync; regular users just see one quiet line instead of two cards of terminal plumbing</title>
<updated>2026-09-06T04:07:37Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-06T04:07:37Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=9ee75115c3cabee661866a8ade836cc6d9e519ac'/>
<id>urn:sha1:9ee75115c3cabee661866a8ade836cc6d9e519ac</id>
<content type='text'>
Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01MGzU12QrAA4G6BYGzGVdXz
</content>
</entry>
<entry>
<title>The POS-link QR is itself a lightning: link — tapping it on the device showing it hands the LNURL straight to whatever wallet owns the scheme, no scanning your own screen</title>
<updated>2026-09-06T04:03:38Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-06T04:03:38Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=2b4195b0003fdd0db258dcec3f780e0eb0668b5e'/>
<id>urn:sha1:2b4195b0003fdd0db258dcec3f780e0eb0668b5e</id>
<content type='text'>
Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01MGzU12QrAA4G6BYGzGVdXz
</content>
</entry>
<entry>
<title>The POS-link card's LNURL copy button copies a lightning: URI (lowercase bech32 with the prefix) — tappable and pasteable anywhere that registers the scheme, including our own Android app — while the QR keeps the bare uppercase form for alphanumeric-mode density</title>
<updated>2026-09-06T04:02:41Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-06T04:02:41Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=b655d1f3e021f03a94792e48123351ef2690c8e5'/>
<id>urn:sha1:b655d1f3e021f03a94792e48123351ef2690c8e5</id>
<content type='text'>
Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01MGzU12QrAA4G6BYGzGVdXz
</content>
</entry>
<entry>
<title>Settings: lay the payment-address sections out as cards; zap settings under Nostr</title>
<updated>2026-09-06T02:48:58Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-06T02:48:58Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=b6f620d97507dcbf5526c61e13675c74776df15d'/>
<id>urn:sha1:b6f620d97507dcbf5526c61e13675c74776df15d</id>
<content type='text'>
Custom name, point of sale, the terminal's tap-to-pay link, own node and
own domain each get a card on Settings → Payments instead of hiding in
collapsed sections. The one-tap zap amount and the CLINK zap code move to
Settings → Nostr, where the other nostr settings are.

Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01VMi2Y1oKPZ3TeeFmLej47y
</content>
</entry>
<entry>
<title>morph: leave &lt;details open&gt; to the user; key the names settings sections</title>
<updated>2026-09-06T02:46:48Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-06T02:46:48Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=c8c18d838573859b61c47875a4320b9ad0ad7514'/>
<id>urn:sha1:c8c18d838573859b61c47875a4320b9ad0ad7514</id>
<content type='text'>
Every background repaint stripped the browser-set `open` attribute (the
fresh render never carries it), collapsing expanded sections, and the
positional child match handed one section's open state to its neighbour
whenever the conditional zap-code section came or went. `open` on a
details is now user-owned unless a render sets it, and nodes carrying
data-key only patch into the same key.

Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01VMi2Y1oKPZ3TeeFmLej47y
</content>
</entry>
<entry>
<title>Point of sale: show the terminal's tap-to-pay LNURL, link and QR</title>
<updated>2026-09-06T02:40:59Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-06T02:40:59Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=c99efea0ab7a724221d439bbc227058223dfe3c4'/>
<id>urn:sha1:c99efea0ab7a724221d439bbc227058223dfe3c4</id>
<content type='text'>
Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01VMi2Y1oKPZ3TeeFmLej47y
</content>
</entry>
<entry>
<title>Point of sale: a coinos-pos terminal works against a name</title>
<updated>2026-09-06T02:38:10Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-06T02:38:10Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=ae85dc0afba70f40b333cf03c64abbbf4c8dfea0'/>
<id>urn:sha1:ae85dc0afba70f40b333cf03c64abbbf4c8dfea0</id>
<content type='text'>
Registrar: the owner mints a bearer POS token from Settings (NIP-98
POST /pos/token, DELETE revokes; /admin/pos/token for operators). With it
the terminal gets /pos/me, rings up sales at /pos/invoice (fiat via
coinos.io rates, or sats), reads /pos/payments, and holds a websocket at
/pos/ws that gets a payment message when the sale settles. Sales are
always minted on our node so the settle loop sees them and the ordinary
forward path delivers the sats to the name's ark address. The name's
lnurlp pins the newest unpaid sale under five minutes old — coinos.io's
/p/&lt;name&gt; rule — so an NFC tap or a scan pays exactly that invoice.

Wallet: a "Point of sale" section on the names card creates, copies and
revokes tokens.

Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01VMi2Y1oKPZ3TeeFmLej47y
</content>
</entry>
<entry>
<title>Lightning receives to a name@coinos.io address now wear the ⚡ instead of the Ark mark: a faucet paying the LN address settles on the registrar's CLN and arrives as an anonymous arkoor from the float (the mailbox protocol carries no memo), so the wallet genuinely couldn't tell the rail. The registrar now records a receipt {sat, hash, ts} per LN settlement it forwards via the float (7-day ring per name) and serves them at GET /lnreceipts (NIP-98, owner/manager only — it's a feed of incoming amounts); the wallet fetches them through the names feature (which holds the signer) and fuzzy-matches receive movements by exact amount + delivery within ±3 min, stamping viaLn + the payment hash so a receipt can never claim a second row. History row and detail view show ⚡ for viaLn receives; the tag rides the sync snapshot to other devices via merge enrichment. viaClink deliveries need none of this — the wallet's own LN-receive flow already tags itself. Best-effort by design: an amount+time collision only mislabels an icon</title>
<updated>2026-09-04T14:59:58Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-04T14:59:52Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=2d17fd652c3c2c56d6027c9271bf9b9854412677'/>
<id>urn:sha1:2d17fd652c3c2c56d6027c9271bf9b9854412677</id>
<content type='text'>
Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01MGzU12QrAA4G6BYGzGVdXz
</content>
</entry>
</feed>
