<feed xmlns='http://www.w3.org/2005/Atom'>
<title>coinosv3.git/src/i18n.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-16T18:23:54Z</updated>
<entry>
<title>Feed: what arrives waits behind the pill; the count bumps; no auto-flush.</title>
<updated>2026-09-16T18:23:54Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-16T18:23:54Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=49caed082a67851fcd5479d1c462b95f1a5d4a7c'/>
<id>urn:sha1:49caed082a67851fcd5479d1c462b95f1a5d4a7c</id>
<content type='text'>
Posts a refresh found slid in a beat after the cached page painted,
moving what you had begun reading, and reaching the top of the page let
waiting posts in with a re-render under a finger on its way to the pill —
the tap landed on the post beneath. Now everything that arrives after the
first paint, the boot catch-up included, waits behind the pill wherever
you are; the pill is a keyed node whose count bumps on each change; and a
tap scrolls to the top before painting so the new posts open under your
eyes. A rebuilt follow list still rebuilds the feed in place.

Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01JuwQqNWtDJcxPWtEm9134z
</content>
</entry>
<entry>
<title>Gift detail links the coin behind the gift, and the claim once claimed.</title>
<updated>2026-09-16T04:56:18Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-16T04:56:18Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=b58e3dc1eb2a578f1cae441d8bba9503bec94567'/>
<id>urn:sha1:b58e3dc1eb2a578f1cae441d8bba9503bec94567</id>
<content type='text'>
An unclaimed on-chain gift has no transaction of its own yet — its
funding transaction is presigned and only broadcast when someone claims.
The coin it's locked against is on-chain from the start, so the detail
page now links that outpoint's transaction on the block explorer, and
the claim transaction once it exists.

Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01JuwQqNWtDJcxPWtEm9134z
</content>
</entry>
<entry>
<title>Renewal copy: automatic when free and near expiry; early renewal insures the uncooperative exit.</title>
<updated>2026-09-16T04:52:06Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-16T04:52:06Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=f23f4a36ad2856dea1493d884cb033be08bee9ad'/>
<id>urn:sha1:f23f4a36ad2856dea1493d884cb033be08bee9ad</id>
<content type='text'>
Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01JuwQqNWtDJcxPWtEm9134z
</content>
</entry>
<entry>
<title>Renewal fee copy: how close the coin is to expiry.</title>
<updated>2026-09-16T04:48:07Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-16T04:48:07Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=d8cfbf1a876b9370e94bcece8b987999ccd1a198'/>
<id>urn:sha1:d8cfbf1a876b9370e94bcece8b987999ccd1a198</id>
<content type='text'>
Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01JuwQqNWtDJcxPWtEm9134z
</content>
</entry>
<entry>
<title>Coins page: renewal is automatic, and the copy says so first.</title>
<updated>2026-09-16T04:46:24Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-16T04:46:24Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=f7a6a2bb49ce2d718f1f2ef7b5692be873bb2734'/>
<id>urn:sha1:f7a6a2bb49ce2d718f1f2ef7b5692be873bb2734</id>
<content type='text'>
The renewal card opened with how to renew and mentioned only at the end
that the wallet does it by itself, which read as an invitation to renew
by hand. It now leads with the automatic, free renewal before expiry,
then says renewing early is only for someone who would rather not count
on the coinos server, with the round cadence taken from the server's
own info (two minutes now, not the hour the old text claimed). The
"past its expiry" footnote under the table is gone. Stale translations
of the rewritten strings fall back to English.

Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01JuwQqNWtDJcxPWtEm9134z
</content>
</entry>
<entry>
<title>Spending coins as a headed table instead of chip rows.</title>
<updated>2026-09-16T04:25:37Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-16T04:25:37Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=0f6fd7f06d27fa9860bd04bde13fb4ae3794fdf8'/>
<id>urn:sha1:0f6fd7f06d27fa9860bd04bde13fb4ae3794fdf8</id>
<content type='text'>
Every row repeated "expiry", "exit cost", "renewal cost" as pills. The
labels now sit once in a header row over right-aligned tabular figures;
the table's wrapper scrolls sideways on a screen too narrow for it (the
page never does), and it fits a 390px phone without scrolling. A tap
anywhere on a row toggles it. A sub-satoshi renewal share reads "&lt; 1 sat".

Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01JuwQqNWtDJcxPWtEm9134z
</content>
</entry>
<entry>
<title>A tiny coin's renewal chip says "under 1 sat", not "1 sat".</title>
<updated>2026-09-16T04:18:17Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-16T04:18:17Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=229dea361b719128cf2657b6ab51aad9aca463b1'/>
<id>urn:sha1:229dea361b719128cf2657b6ab51aad9aca463b1</id>
<content type='text'>
The server prices a renewal on all the coins together: ppm accumulates
sub-satoshi across every input and rounds up once. The per-coin chip
rounded each coin's share up on its own, so nine 1-sat coins each showed
"renewal cost 1 sat" under a total of 4 sats — as if the page were
skipping them. The chip now shows the coin's real share: "under 1 sat"
for a sub-satoshi one, rounded otherwise, and its tooltip says how the
fee is priced.

Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01JuwQqNWtDJcxPWtEm9134z
</content>
</entry>
<entry>
<title>A pack link in chat adds the pack in place; coinos has its own share link.</title>
<updated>2026-09-15T16:38:47Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-15T16:38:47Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=dce411ae0a5f4f9475786b3bd4f419db0a371709'/>
<id>urn:sha1:dce411ae0a5f4f9475786b3bd4f419db0a371709</id>
<content type='text'>
Tapping "Emoji pack" on a phone opened Vector: the chip was an outbound
link to vectorapp.io, a domain the Vector app owns. The chip is now a
button — one tap adds the pack right here, nothing leaves coinos.

Packs also get a coinos share link, v3.coinos.io/emojis/pack/&lt;naddr&gt;
(copy it from the picker's pack row). The Android app already claims
every v3.coinos.io path, so on a phone that link opens coinos, which adds
the pack once the wallet is open. Pack links from any host render as the
chip; the naddr's kind is what's checked.

Pack changes now save at once (learned shortcodes stay coalesced) — a
remove followed straight away by a navigation was lost to the debounce.

Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01JuwQqNWtDJcxPWtEm9134z
</content>
</entry>
<entry>
<title>Custom emoji in chat: :shortcodes: render as pictures, packs sync with Vector.</title>
<updated>2026-09-15T16:27:45Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-15T16:27:45Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=c90d0f3c600802b5b4b43959df5fd2d02f78012c'/>
<id>urn:sha1:c90d0f3c600802b5b4b43959df5fd2d02f78012c</id>
<content type='text'>
A message from Vector says :pika_wave: and carries a NIP-30
["emoji", code, url] tag for it; coinos showed the bare shortcode. Now the
bubble shows the picture (in rooms, DMs, the feed and the public /chat
page), a bubble that is only one to three of them shows them big, and a
:code: reaction chip is a picture too.

Sending: every :code: you type that resolves travels with its tag, so the
other side renders it whether or not they hold the pack. Shortcodes come
from packs you hold (NIP-51 kind 30030 sets) and from what you've seen in
chat, so anyone can answer a :pika_wave: with one. The composer
autocompletes on ":pi" (Tab/Enter takes the first), the reaction picker
lists custom emoji first, and Vector's pack share link renders with an
Add button; a pasted naddr works too.

Packs live on your kind 10030 list — the one Vector reads and writes — so
a pack added in either app appears in both. tools/emoji-test.js drives the
real coinos room headlessly and checks all of the above.

Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01JuwQqNWtDJcxPWtEm9134z
</content>
</entry>
<entry>
<title>An @handle in a bio or post opens the people search for that name.</title>
<updated>2026-09-15T07:18:45Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-09-15T07:18:45Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3.git/commit/?id=e408672de5b6aa450995271a36b7483ca94db049'/>
<id>urn:sha1:e408672de5b6aa450995271a36b7483ca94db049</id>
<content type='text'>
A bare @name carries no key, so nothing can resolve it for certain —
but it can be a tap that opens the search with the name filled in. The
@ inside an email or nip05 is left alone, as is anything inside a URL.

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