<feed xmlns='http://www.w3.org/2005/Atom'>
<title>coinosv3.git/src/recipient-search.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-10-02T14:48:32Z</updated>
<entry>
<title>Profiles show Following and Followers, each a list you can open</title>
<updated>2026-10-02T14:48:32Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-10-02T14:48:32Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=686e2d391d3a963535d5deec7043999b9b92b19b'/>
<id>urn:sha1:686e2d391d3a963535d5deec7043999b9b92b19b</id>
<content type='text'>
Under the bio: "116 Following · 572 Followers". Tapping either opens the
people below it (50 at a time); tapping a person opens their profile.

Follows are the person's kind 3, now read from Primal's cache alongside
the relays (a list kept only on their outbox relays used to read as
nobody). Followers, which no relay counts, come from Primal: the count
from user_profile, the list from user_followers, a first screenful fast
and the rest after, without reordering what is on screen. Every event
taken from Primal is signature-checked in the verify worker first, and
the profiles among them fill names and faces the relays lacked.

Also translates the post-zap "no address" message.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01Dmcrt9KyNDKVWFKnb8BREo
</content>
</entry>
<entry>
<title>Search finds people by their full name, spaces and all</title>
<updated>2026-10-02T06:02:13Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-10-02T06:02:13Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=da6c8360726f499aa5cccec0b76839fd868fdc0e'/>
<id>urn:sha1:da6c8360726f499aa5cccec0b76839fd868fdc0e</id>
<content type='text'>
searchable() only let [a-z0-9._-] through, so "jordan miller" never
searched. Words and non-Latin letters pass now, and a multi-word query
also asks Primal with the spaces removed, since it matches "jordanmiller"
but not "jordan miller".

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01Dmcrt9KyNDKVWFKnb8BREo
</content>
</entry>
<entry>
<title>Clear abandoned payments, reset profile Pay and restore native messaging Back</title>
<updated>2026-10-01T23:36:42Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-10-01T23:36:25Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=62b6b80d9c8d03d6caadb0648059ba94e34f8b1d'/>
<id>urn:sha1:62b6b80d9c8d03d6caadb0648059ba94e34f8b1d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>The standalone wallet opened from a disk shows its avatars, font and languages.</title>
<updated>2026-10-01T23:34:55Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-10-01T23:34:55Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=66d41d1aa1f5c60cd63b1691ba6bf70e88cf78fa'/>
<id>urn:sha1:66d41d1aa1f5c60cd63b1691ba6bf70e88cf78fa</id>
<content type='text'>
With no files beside it, relative punks/, locales/, nip46.js and jsqr.js
looked on the disk. From file:// they now come from v3.coinos.io (images
and scripts need no CORS; /locales/ now sends Access-Control-Allow-Origin
on the server), and standalone.html carries Public Sans inline.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01VP5Ljqk7EYcm5QQAbzDwog
</content>
</entry>
<entry>
<title>Accounts from the header, snapshot-first Spending restore, name ownership grants.</title>
<updated>2026-09-19T06:12:18Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-19T06:12:18Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=703ee6e1281e72ec00f65768d7de7a015c242abb'/>
<id>urn:sha1:703ee6e1281e72ec00f65768d7de7a015c242abb</id>
<content type='text'>
Header buttons always leave the current feature screen; an account with
no remembered nostr identity opens Accounts instead of nothing. Logout
confirms in place. A scan finishing after logout or an account switch no
longer drops the new session into offline mode (stateGeneration guards in
sync + ark). Spending restores from the snapshot first. A migration grant
names the identity that owns an address; its manager may register it
without becoming that identity (names/ownership.js). Browser tests for
account access, profile retry, spending restore, thread reply focus,
custom-emoji reactions and registry ownership.

Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Ship the punks at the size we actually draw them.</title>
<updated>2026-09-11T05:51:56Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-11T05:51:56Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=82cd8da7f5ab285b3a91f7284fb8d845400012ca'/>
<id>urn:sha1:82cd8da7f5ab285b3a91f7284fb8d845400012ca</id>
<content type='text'>
The art is 240x240 (20KB each, 1.5MB for the set) because that's what a punk
published as someone's nostr picture should be — but the circles the app
draws are 18 to 64px, so a new wallet with nothing cached was fetching eight
times the pixels it could show, one request per face.

punks-sm carries a 128px copy of each: 4KB instead of 20KB, indistinguishable
at 64px. Small circles and the wizard's picker tiles load those; only the 64px
profile avatar and the value the wizard publishes stay full-size.

The bigger win is that a punk picture is our own art wherever it turns up.
Everyone who keeps the default publishes v3.coinos.io/punks/N.webp as their
nostr picture, so those faces now paint straight off disk at the size being
drawn — no request, no thumbnail to make, and no broken circle when the
legacy coinos.io copies 502 (which they do for a third of the set).

Co-Authored-By: Claude Opus 5 (1M context) &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_019mrt228Upn9nNCwGixzSLx
</content>
</entry>
<entry>
<title>Recipient search warms its pipes on focus, not first keystroke: the Primal cache socket, the registrar's TLS session, and the NIP-50 relay connections each cost a handshake that used to land on the first query — the cold second of dead air. Touching the send recipient field, opening user search, or unfolding New message now pre-opens all three (throttled; the idle reaper still closes the socket a minute after real use)</title>
<updated>2026-09-03T01:56:04Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-03T01:56:04Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=c4357ab5563aacc3614bfaf8f54cfb5c79a7f1ba'/>
<id>urn:sha1:c4357ab5563aacc3614bfaf8f54cfb5c79a7f1ba</id>
<content type='text'>
Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01MrkLsNScXe9b6BviUSdmMr
</content>
</entry>
<entry>
<title>Hats: put your money where your head is — supporter hats perch above the avatar everywhere it appears, from 21-sat beanie to 2.1M-sat top hat; the crown stays on the founder</title>
<updated>2026-08-16T07:38:49Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-08-16T07:38:49Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=f23a0488854a58bea8c0cb2ddc8e1c424a6828f4'/>
<id>urn:sha1:f23a0488854a58bea8c0cb2ddc8e1c424a6828f4</id>
<content type='text'>
Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
</content>
</entry>
<entry>
<title>The wizard waits out a signer login; a picked recipient shows its work, and search answers from memory before the network</title>
<updated>2026-08-08T16:24:17Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-08-08T16:24:17Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=a8636d2658aedab96eb545ef2f0ba0db972ca228'/>
<id>urn:sha1:a8636d2658aedab96eb545ef2f0ba0db972ca228</id>
<content type='text'>
Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Avatars stop flashing everywhere: backgrounds, not &lt;img&gt;</title>
<updated>2026-08-04T08:50:24Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-08-04T08:50:24Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=c19fd63f1687c8fdfd38a8446e7cf936342ba4ef'/>
<id>urn:sha1:c19fd63f1687c8fdfd38a8446e7cf936342ba4ef</id>
<content type='text'>
A recreated &lt;img&gt; decodes async — one blank frame per render, and boot
renders in bursts. A CSS background paints synchronously from cache, so
the profile page, chat rows, and send candidates all hold steady now.

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