<feed xmlns='http://www.w3.org/2005/Atom'>
<title>coinos-server.git/package.json, branch master</title>
<subtitle>coinos server — legacy coinos.io backend (Lightning, on-chain, Liquid)</subtitle>
<id>https://git.coinos.io/coinos-server.git/atom?h=master</id>
<link rel='self' href='https://git.coinos.io/coinos-server.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/'/>
<updated>2026-08-22T15:43:53Z</updated>
<entry>
<title>deps: upgrade fastify v4 to v5 line to fix dependabot alerts</title>
<updated>2026-08-22T15:43:53Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-08-22T15:43:38Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=d6adcee27747ad92b8ce4de1350c692f5032dfdd'/>
<id>urn:sha1:d6adcee27747ad92b8ce4de1350c692f5032dfdd</id>
<content type='text'>
Fastify 4.x is EOL with no backported fixes; all six open alerts
(critical http-proxy header stripping, static path traversal + auth
bypass, fastify body-validation bypass / host spoofing / DoS) are only
patched on the v5 line. Bump fastify to 5.12.0 and all @fastify/*
plugins to their v5-compatible majors, and migrate the two options v5
deprecated (disableRequestLogging -&gt; logController, maxParamLength -&gt;
routerOptions).

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>deps: patch @asoltys/clightning-client to fix cl reconnect</title>
<updated>2026-08-16T07:23:28Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-08-16T07:23:28Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=984d2c3efeca25c37522c6fb17a9863717b44bc2'/>
<id>urn:sha1:984d2c3efeca25c37522c6fb17a9863717b44bc2</id>
<content type='text'>
Register patches/@asoltys+clightning-client+0.1.10.patch via patchedDependencies
so bun install re-applies it. The library's reconnect() reused an already-dead
socket and never recovered after a cl restart (looping connect ENOENT, leaking a
socket+timer); the patch rebuilds a fresh socket + readline each reconnection and
clears its retry guard before reconnecting. Companion to the app-side
dropClient()/listener-recovery fixes.

Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>test: regtest regression suite for the security-disclosure fixes</title>
<updated>2026-08-08T06:29:27Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-08-08T06:06:50Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=8fd55bea7d657a4b0f792cc70a5efc8ac1133bfb'/>
<id>urn:sha1:8fd55bea7d657a4b0f792cc70a5efc8ac1133bfb</id>
<content type='text'>
16 tests covering S1 (jwt.verify vs forged tokens), S2 (bcrypt cost 12 +
legacy detection), S3 (adminpass fails closed on omitted/empty password),
S5 (session cookie flags), S6 (atomic SET NX dedup), S7 (/upload auth),
fnd-003/004 (memo truncation), fnd-006 (deleteSelf sub-account guard),
and S8/fnd-007 (spend/cash mutex serialization). Black-box HTTP + redis
against the live regtest stack; run with `bun run test:regtest`.

Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>upload: require auth on /upload/:type; bump sharp past libvips CVEs (S7)</title>
<updated>2026-08-08T06:29:25Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-08-08T05:59:45Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=582eab0d3e78d3c92b3fbf2d41d1845ca5761387'/>
<id>urn:sha1:582eab0d3e78d3c92b3fbf2d41d1845ca5761387</id>
<content type='text'>
POST /upload/:type fed the raw uploaded image straight into sharp with
no auth preValidation (unlike neighboring routes), reaching a native
libvips decoder in the container that holds the JWT secret and CLN hot
wallet. Require auth, and bump sharp 0.33.5 -&gt; 0.35.3 (out of the
vulnerable &lt; 0.35.0 libvips range, GHSA-f88m-g3jw-g9cj et al.).

Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>deps: bump file-type 18-&gt;21 and uuid 8-&gt;11 (Dependabot)</title>
<updated>2026-06-07T15:18:40Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-06-07T15:18:40Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=a44bcd511da7216c4cd3782ac24997cc7a82f186'/>
<id>urn:sha1:a44bcd511da7216c4cd3782ac24997cc7a82f186</id>
<content type='text'>
Clears two Dependabot alerts:
- file-type (medium): infinite loop in ASF parser on malformed input — reachable
  via avatar/image upload (fileTypeFromBuffer in lib/upload.ts). -&gt; 21.3.4
- uuid (medium): missing buffer bounds check in v3/v5/v6 when buf is provided —
  we only ever call v4() with no buffer so not actually exposed, bumped anyway. -&gt; 11.1.1

Both are major bumps but drop-in for our usage: project is already ESM
("type":"module") so file-type's ESM-only requirement is fine, and we use the
stable named exports (fileTypeFromBuffer, v4). Verified live: v4() and
fileTypeFromBuffer JPEG detection both work; full app compiles + healthy.

Installed inside the app container (node_modules is root-owned, volume-mounted).
The 4 remaining fastify-family alerts (incl. the critical http-proxy one) need
a fastify 4-&gt;5 + 8 plugins lockstep upgrade — deferred to a dedicated window;
real exposure is low behind Cloudflare/Caddy with localhost binding.

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix transitive dependency vulnerabilities</title>
<updated>2026-02-24T21:24:59Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-02-24T21:24:59Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=d4cc945775910edcb61dae525fe27aef428dd72f'/>
<id>urn:sha1:d4cc945775910edcb61dae525fe27aef428dd72f</id>
<content type='text'>
Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix invoice user</title>
<updated>2025-09-21T01:18:41Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2025-09-21T01:18:31Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=af0f19c261e06f165cb6a24f1a6247e971649d88'/>
<id>urn:sha1:af0f19c261e06f165cb6a24f1a6247e971649d88</id>
<content type='text'>
</content>
</entry>
<entry>
<title>update dependencies</title>
<updated>2025-09-10T19:11:54Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2025-09-10T19:11:54Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=59f42b98c944e6d062fb9d106b067584df21f4ff'/>
<id>urn:sha1:59f42b98c944e6d062fb9d106b067584df21f4ff</id>
<content type='text'>
</content>
</entry>
<entry>
<title>bump dependency</title>
<updated>2025-09-09T15:01:16Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2025-09-09T15:01:16Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=b266a4f161b8b2dfe3005cbd5c0bc68a31adabc3'/>
<id>urn:sha1:b266a4f161b8b2dfe3005cbd5c0bc68a31adabc3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>update dependency</title>
<updated>2025-09-08T22:56:44Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2025-09-08T22:56:44Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=f338a3a63b4729c92f1a481418bc53e63b371794'/>
<id>urn:sha1:f338a3a63b4729c92f1a481418bc53e63b371794</id>
<content type='text'>
</content>
</entry>
</feed>
