<feed xmlns='http://www.w3.org/2005/Atom'>
<title>coinosv3-server.git, branch master</title>
<subtitle>coinos v3 server — payment-name registrar, NWC push, Blossom sync storage, feed</subtitle>
<id>https://git.coinos.io/coinosv3-server.git/atom?h=master</id>
<link rel='self' href='https://git.coinos.io/coinosv3-server.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3-server.git/'/>
<updated>2026-10-23T14:39:21Z</updated>
<entry>
<title>nwcpush: NWC wake pushes live 120 s at APNs, the request window, so a phone in deep sleep gets the wake late rather than never</title>
<updated>2026-10-23T14:39:21Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-10-23T14:39:21Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3-server.git/commit/?id=8ea5ae33f14ade28a0809a6dc267b44570c8e74f'/>
<id>urn:sha1:8ea5ae33f14ade28a0809a6dc267b44570c8e74f</id>
<content type='text'>
Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>vmedia: pic.webp?s=row, a picture 360px tall in its own shape for the grid's justified rows</title>
<updated>2026-10-22T17:09:34Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-10-22T17:09:34Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3-server.git/commit/?id=9aca27c717b713ff6e8ec8a2eeded1dff92c4735'/>
<id>urn:sha1:9aca27c717b713ff6e8ec8a2eeded1dff92c4735</id>
<content type='text'>
Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feed: note and profile pages swap the site's share tags for their own, with the site card as the fallback picture (same as coinosv3 f3a3d88)</title>
<updated>2026-10-22T15:43:02Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-10-22T15:43:02Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3-server.git/commit/?id=af95c8741c17a371ce03cfc07c54e8294ae68124'/>
<id>urn:sha1:af95c8741c17a371ce03cfc07c54e8294ae68124</id>
<content type='text'>
Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>names: custom offers carry their owner's key; ones that can't reach a wallet are retired</title>
<updated>2026-10-22T05:19:07Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-10-22T05:19:07Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3-server.git/commit/?id=6b59316493a9a02f735a19e9747d2f3982d27ce2'/>
<id>urn:sha1:6b59316493a9a02f735a19e9747d2f3982d27ce2</id>
<content type='text'>
Releasing a name disabled its own offer but left its custom offers live
(27 orphans on 2026-10-22, rick@ had 4): a payment to one found no name
and no key, and would have sat in the forward queue for good. Custom
offers now record the owner's pubkey (backfilled at start from the name,
or for an orphaned npub1xxxxxxx@ name from the one current key with that
npub prefix — 4 recovered), and the settle loop forwards by it, so a
released name's offer pays the same key's name now, as the name's own
offer already did. Orphans with no owner to follow are disabled on the
node and dropped (23), as are a released staging name's.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>names: mint nothing payable for a wallet on another network, and retire what was minted</title>
<updated>2026-10-22T05:16:57Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-10-22T05:16:57Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3-server.git/commit/?id=5c007a2540d5a033c0934844eff68688af68817c'/>
<id>urn:sha1:5c007a2540d5a033c0934844eff68688af68817c</id>
<content type='text'>
A staging name is a mutinynet wallet, but every claim got a mainnet BOLT12
offer on our node published in its record, and custom offers and POS sales
were minted there too: real sats paid that way had no route onward (2,092
sat parked on 2026-10-22). otherNetwork() — the record's ark address decides,
a staging name without one is mutinynet — now gates the claim's stand-in
offer, custom offers and POS invoices (LNURL already refused staging).

At start, retireOtherNetworkOffers() disables the offers already out there
(83 staging names, 13 custom offers), takes their lno= out of the published
DNS record and drops them from state; idempotent, so a failure retries next
start. npub1x7acf8s@staging.coinos.io keeps its offers: its wallet is mainnet.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>names: a queued payment the float can cover goes now, backoff or not</title>
<updated>2026-10-22T05:03:55Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-10-22T05:03:55Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3-server.git/commit/?id=8229ea08caeb6d03efa56205b9526e2751217162'/>
<id>urn:sha1:8229ea08caeb6d03efa56205b9526e2751217162</id>
<content type='text'>
Float top-ups that missed their 60 s settle window landed later (+300k on
2026-10-22 once the ASP's vtxo pool refilled), but only a top-up seen to
settle resets the queue's backoff, so jarryd's 248k sat in a 1-hour wait
with 477k in the float.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>names: a wallet on another ark server gets its own Lightning invoice, one on another network is parked</title>
<updated>2026-10-22T04:43:05Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-10-22T04:43:05Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3-server.git/commit/?id=481e1f827d94f9ac3b54ad2a5c087fc5d8ce9a88'/>
<id>urn:sha1:481e1f827d94f9ac3b54ad2a5c087fc5d8ce9a88</id>
<content type='text'>
The float step threw 'address belongs to a different ark server' before the
Lightning step ever ran, so manna and rogerv3 (wallets on Second) were retried
100 times since 10-18 without once asking their wallets for an invoice. The
destination's ark id now decides: the float only on our own server, otherwise
straight to the wallet's CLINK invoice — those wait for the wallet without
paging (waitingOnWallet in /health).

A staging name's tark address paid real sats through its mainnet offer has no
route at all: such a forward is parked (state.parked, with its reason) instead
of retried forever, and /health counts it for the desk monitor. Ten such
payments (2,092 sat, Sep–Oct test payments to @staging.coinos.io names) had
been retried ~900 times each.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>names: deliver to coinos wallets over a circular route, shrink failing float top-ups, report stuck money in /health</title>
<updated>2026-10-22T04:39:11Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-10-22T04:39:11Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3-server.git/commit/?id=4c5cd496c321083501dee75da97f702953cb44f5'/>
<id>urn:sha1:4c5cd496c321083501dee75da97f702953cb44f5</id>
<content type='text'>
The ASP's vtxo pool sat empty for 35 hours (2026-10-20/22: 614k in the
rounds wallet against 1.12M needed to refill), and two forwards of ~124k
for jarryd sat in the queue the whole time:

- viaClink paid the wallet's own invoice with a plain pay, but a coinos
  wallet's invoice is minted by our ASP on this very node: a self-payment
  the hold plugin never sees ('Destination said it doesn't know invoice').
  It now goes out and back in over a channel pair (payCircular, shared with
  the float top-up) and waits for the wallet to claim, so a payment is
  delivered whenever the wallet is open, float or no float.
- a float top-up that doesn't settle halves the next ask (down to 20k),
  back to full size after one lands: 79 tries of 200k failed where the
  pool's 100k coins could have funded half of it.
- the retry tick can't overlap itself any more (a circular delivery waits
  up to 4 min; an overlapping tick would forward the same payment twice).
- /health reports pendingSat, oldestPendingAt, the top-up failure streak
  and last error, and payments for wallets on another ark server apart
  (undeliverable): the desk float monitor pages on these.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Bun 1.3.14 → 1.4.3, from ghcr.io/coinos/bun (oven/bun without the emSign ECC Root CA - G3, CVE-2026-111943)</title>
<updated>2026-10-21T13:06:54Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-10-21T13:06:54Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3-server.git/commit/?id=3deb25fa8ce0753014e26b97bbc594b608f4a1ac'/>
<id>urn:sha1:3deb25fa8ce0753014e26b97bbc594b608f4a1ac</id>
<content type='text'>
names, nwcpush, blossom, the vmedia image (and live with it) and the hook's
bun install.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>live: a streamer can delete their own recording (POST /live/&lt;id&gt;/delete, NIP-98), ending the stream if it's on. Its files go, and stream.json stays as 'deleted' so the address answers 410 until the trim takes it. A stream someone reported is taken aside instead (.removed/, kept for reporting), so deleting can't destroy what was reported. Removed and deleted streams no longer count as live (toward MAX_STREAMS, or as exempt from the trim).</title>
<updated>2026-10-19T18:15:11Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-10-19T18:15:11Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinosv3-server.git/commit/?id=5bbc130102de0a3c0eff6727241d0f8029ab6572'/>
<id>urn:sha1:5bbc130102de0a3c0eff6727241d0f8029ab6572</id>
<content type='text'>
Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_013ZDf1cyCQLkfjftYhymZAg
</content>
</entry>
</feed>
