<feed xmlns='http://www.w3.org/2005/Atom'>
<title>coinos-server.git/routes/users.ts, branch staging</title>
<subtitle>coinos server — legacy coinos.io backend (Lightning, on-chain, Liquid)</subtitle>
<id>https://git.coinos.io/coinos-server.git/atom?h=staging</id>
<link rel='self' href='https://git.coinos.io/coinos-server.git/atom?h=staging'/>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/'/>
<updated>2026-06-17T14:47:46Z</updated>
<entry>
<title>users: add authenticated self-delete endpoint</title>
<updated>2026-06-17T14:47:46Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-06-14T19:33:43Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=7332e55641c21e024e50f83176b302df9c488e9a'/>
<id>urn:sha1:7332e55641c21e024e50f83176b302df9c488e9a</id>
<content type='text'>
Port of master 2548f757, adapted from Express to this stack's Hono
handlers (c.get("user"), c.req.json(), setCookie, bail) and TigerBeetle
balances (getBalance/getPending instead of the Redis balance:/pending:
keys). POST /delete (auth) wipes every key tied to the calling user:
user records, payments/invoices, sub-accounts, NWC apps, nostr follow
graph + nip5. Gated by typing the username and refuses while
balance+pending &gt; 10k sats so funds can't be destroyed by accident.

Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>verifyRecaptcha: check x-forwarded-host before host header</title>
<updated>2026-05-18T06:48:59Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-05-18T06:48:59Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=7f4bf4d886bd43f3b15f18e3c4f7c040892e9f73'/>
<id>urn:sha1:7f4bf4d886bd43f3b15f18e3c4f7c040892e9f73</id>
<content type='text'>
Tor users access via .onion through a forwarding layer that puts the
real hostname in x-forwarded-host while the literal host header is the
internal target. Without checking the forwarded header first, captcha
prompted for .onion visitors who should have been exempt.

Co-Authored-By: Claude Opus 4.7 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>stop republishing external events and add NWC rate limiting</title>
<updated>2026-03-18T18:39:05Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-03-18T18:39:05Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=a8977f8c5c84b0c37c4fb36f0a0be5bf6f492f3d'/>
<id>urn:sha1:a8977f8c5c84b0c37c4fb36f0a0be5bf6f492f3d</id>
<content type='text'>
Co-Authored-By: Claude Opus 4.6 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>check for server generated key</title>
<updated>2026-03-06T06:20:52Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-03-06T06:20:51Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=133cf91d2f0836b58c10efc8c05b8004bcc68799'/>
<id>urn:sha1:133cf91d2f0836b58c10efc8c05b8004bcc68799</id>
<content type='text'>
</content>
</entry>
<entry>
<title>auth fix</title>
<updated>2026-03-06T06:20:52Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-03-06T00:45:10Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=87d01366d1de2a28c81ca56d9835ef00fbf8d7d5'/>
<id>urn:sha1:87d01366d1de2a28c81ca56d9835ef00fbf8d7d5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix pending payment cleanup and login password verification</title>
<updated>2026-03-06T06:19:55Z</updated>
<author>
<name>Adam Soltys</name>
<email>asoltys@gmail.com</email>
</author>
<published>2026-03-06T06:11:55Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=4ac3f491fbb77433aef4dd8fcf560a1d1475e0bd'/>
<id>urn:sha1:4ac3f491fbb77433aef4dd8fcf560a1d1475e0bd</id>
<content type='text'>
Skip non-lightning entries in pending payments check and handle
malformed password hashes gracefully during login.

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>funds route</title>
<updated>2026-03-04T19:10:49Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-03-04T19:10:49Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=6781fd2935ebc3abdeed182b4cee62c25c5482e7'/>
<id>urn:sha1:6781fd2935ebc3abdeed182b4cee62c25c5482e7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>vault wallet fixes</title>
<updated>2026-03-04T07:02:57Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-03-04T07:02:57Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=63fad61716c013b6663df789ed96f6e294630642'/>
<id>urn:sha1:63fad61716c013b6663df789ed96f6e294630642</id>
<content type='text'>
</content>
</entry>
<entry>
<title>sync vault</title>
<updated>2026-03-04T05:40:58Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-03-04T05:40:58Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=55ae58daf23028fa0f647f7bb2b4b0f8cd751de7'/>
<id>urn:sha1:55ae58daf23028fa0f647f7bb2b4b0f8cd751de7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>bip353</title>
<updated>2026-03-04T05:26:57Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-03-04T05:26:57Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=9507e040a03834f7d603c5c13a1f69ae6ef48b3a'/>
<id>urn:sha1:9507e040a03834f7d603c5c13a1f69ae6ef48b3a</id>
<content type='text'>
</content>
</entry>
</feed>
