<feed xmlns='http://www.w3.org/2005/Atom'>
<title>coinos-server.git/lib/invoices.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-18T14:43:48Z</updated>
<entry>
<title>invoices: don't re-list an invoice id on update (dedupe :invoices)</title>
<updated>2026-06-18T14:43:48Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-06-18T14:43:48Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=64691693e7ff40aae59b05a234f88025757959e3'/>
<id>urn:sha1:64691693e7ff40aae59b05a234f88025757959e3</id>
<content type='text'>
Port of the master fix (2d2f9856) + cleanup script to staging.

generate() unconditionally lPush'd the invoice id to `${aid}:invoices`,
but it's also called from update() (tip/webhook changes, repeated bolt12
offer creation) re-using the existing id — so each update re-appended the
same id and the user's :invoices accumulated duplicate entries, rendering
the same offer/invoice multiple times. Guard the push with LPOS so it only
adds the id the first time.

Also add scripts/dedup-invoices.ts to scrub already-accumulated dupes
(dry-run by default, --apply to write, idempotent).

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
</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>ark refresh</title>
<updated>2026-02-15T18:32:40Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-02-15T18:32:40Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=4d3377ba1d37147b194c1fb0504edee3c73211a5'/>
<id>urn:sha1:4d3377ba1d37147b194c1fb0504edee3c73211a5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>custodial ark sends</title>
<updated>2026-02-14T23:46:01Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-02-14T23:46:01Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=526b21bc668c453250ebce8dece9ba330bac0133'/>
<id>urn:sha1:526b21bc668c453250ebce8dece9ba330bac0133</id>
<content type='text'>
</content>
</entry>
<entry>
<title>account level currency and autowithdraw settings</title>
<updated>2026-02-14T05:08:04Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-02-14T05:07:55Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=c7c6ee7ba59467b8ddcfe8196b4f7586a864f3c0'/>
<id>urn:sha1:c7c6ee7ba59467b8ddcfe8196b4f7586a864f3c0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>send pending balance</title>
<updated>2026-02-13T20:31:45Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-02-13T20:31:45Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=6de76d3a76f8b91b0ffa88bf175bb821234e84bd'/>
<id>urn:sha1:6de76d3a76f8b91b0ffa88bf175bb821234e84bd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>ark fixes</title>
<updated>2026-02-10T01:22:01Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-02-10T01:22:01Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=0472ded5b52807f93ce5761ad884928008410e53'/>
<id>urn:sha1:0472ded5b52807f93ce5761ad884928008410e53</id>
<content type='text'>
</content>
</entry>
<entry>
<title>cross-protocol forwarding with race condition fixes</title>
<updated>2026-02-06T17:00:22Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-02-06T02:45:08Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=808e7535d33ffca4c1bf859d8bf0afe134f3e1d7'/>
<id>urn:sha1:808e7535d33ffca4c1bf859d8bf0afe134f3e1d7</id>
<content type='text'>
Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>payment forwarding</title>
<updated>2026-02-06T17:00:10Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-02-06T00:44:47Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=4e9c0c5198c7884cfd97cb4495f6156632e3124a'/>
<id>urn:sha1:4e9c0c5198c7884cfd97cb4495f6156632e3124a</id>
<content type='text'>
</content>
</entry>
</feed>
