| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | mirror payment records to arc + atomic /confirm lock to prevent double-credits | Adam Soltys | 2026-05-17 | 1 | -3/+27 |
| | | | | | | | | | | | | | | | | | | | | | | | | | Follows up the Apr 29 double-credit incident. Two parallel callers of /confirm (walletnotify, catchUp, bulk sweeps) could each read p.confirmed=false and each run the multi() that increments balance — because main-db pointers were sometimes missing while arc still had them, gf()'s arc fallback returned stale state. Three pieces here: - routes/payments.ts: SET NX EX 60 lock around the /confirm credit block keyed by `confirmlock:${txid}:${vout}`. Concurrent callers short-circuit cleanly. The lock is released on success and on every early-return. - lib/payments.ts credit() + routes/payments.ts /confirm: mirror the payment/invoice records and the `payment:<txid>:<vout>` / `payment:<hash>` pointer keys into arc as soon as they're written. gf() will then find the prior credit via arc fallback even if the main-db copy is wiped by a future data-loss event. - routes/payments.ts hide `revertedDuplicate` payments from the user's payment list — matches the same filter added to lib/nwc.ts list_transactions so reverted records never surface in either rendering path. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]> | ||||
| * | remove /gateway endpoint | Adam Soltys | 2026-05-17 | 1 | -9/+0 |
| | | | | | | | | | | Unauthenticated arbitrary db.set abuse vector. Exploited to inflate user balances and override safety controls (bitcoin:limit, limit, hardfreeze, freeze) in real time, leading to a hot-wallet drain. Route and handler both fully removed. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]> | ||||
| * | lnurl proxy | Adam Soltys | 2026-03-27 | 1 | -0/+12 |
| | | |||||
| * | don't remove missing payments | Adam Soltys | 2026-03-24 | 1 | -2/+1 |
| | | |||||
| * | listener logs | Adam Soltys | 2026-03-18 | 1 | -2/+1 |
| | | |||||
| * | remove logs | Adam Soltys | 2026-03-17 | 6 | -33/+3 |
| | | |||||
| * | adjust ln minfeeregtest-data | Adam Soltys | 2026-03-15 | 1 | -6/+0 |
| | | |||||
| * | pass bytes for app secret | Adam Soltys | 2026-03-14 | 1 | -1/+2 |
| | | |||||
| * | use bytes for nostr tools | Adam Soltys | 2026-03-13 | 1 | -0/+1 |
| | | |||||
| * | fix pending payment cleanup and login password verification | Adam Soltys | 2026-03-06 | 1 | -5/+7 |
| | | | | | | | | Skip non-lightning entries in pending payments check and handle malformed password hashes gracefully during login. Co-Authored-By: Claude Opus 4.6 <[email protected]> | ||||
| * | fix login/reset glitches | Adam Soltys | 2026-03-03 | 1 | -7/+18 |
| | | |||||
| * | fix lnurl description_hash mismatch | Adam Soltys | 2026-02-25 | 1 | -2/+6 |
| | | | | | Co-Authored-By: Claude Opus 4.6 <[email protected]> | ||||
| * | fix addmanagers | Adam Soltys | 2026-02-10 | 1 | -5/+4 |
| | | |||||
| * | filter null managers | Adam Soltys | 2026-02-10 | 1 | -2/+2 |
| | | |||||
| * | check forwarded host header | Adam Soltys | 2026-02-06 | 1 | -1/+1 |
| | | |||||
| * | health check | Adam Soltys | 2026-02-06 | 2 | -45/+13 |
| | | |||||
| * | whitelist ua's | Adam Soltys | 2026-02-04 | 1 | -0/+11 |
| | | |||||
| * | strip email from username | Adam Soltys | 2026-02-02 | 1 | -0/+1 |
| | | |||||
| * | consult archive for older payments | Adam Soltys | 2026-01-30 | 3 | -6/+7 |
| | | |||||
| * | check username | Adam Soltys | 2026-01-29 | 1 | -11/+1 |
| | | |||||
| * | skip captcha for tor | Adam Soltys | 2026-01-27 | 1 | -0/+4 |
| | | |||||
| * | case insensitive usernames | Adam Soltys | 2026-01-26 | 1 | -1/+4 |
| | | |||||
| * | captcha bypass whitelist | Adam Soltys | 2026-01-26 | 1 | -10/+13 |
| | | |||||
| * | read payments from archive | Adam Soltys | 2026-01-22 | 2 | -11/+24 |
| | | |||||
| * | fix admin resets | Adam Soltys | 2026-01-22 | 1 | -7/+3 |
| | | |||||
| * | api key captcha bypass | Adam Soltys | 2026-01-22 | 1 | -3/+11 |
| | | |||||
| * | captcha thresholds | Adam Soltys | 2026-01-21 | 1 | -11/+18 |
| | | |||||
| * | require auth for accounts | Adam Soltys | 2026-01-21 | 1 | -0/+5 |
| | | |||||
| * | recaptcha on login | Adam Soltys | 2026-01-21 | 1 | -2/+32 |
| | | |||||
| * | logging | Adam Soltys | 2026-01-21 | 1 | -1/+3 |
| | | |||||
| * | check username | Adam Soltys | 2026-01-19 | 2 | -1/+2 |
| | | |||||
| * | get lnaddress fee from body | Adam Soltys | 2025-11-17 | 1 | -1/+2 |
| | | |||||
| * | check app ownership | Adam Soltys | 2025-11-17 | 1 | -2/+5 |
| | | |||||
| * | check username | Adam Soltys | 2025-11-17 | 1 | -2/+5 |
| | | |||||
| * | remove default fee | Adam Soltys | 2025-11-16 | 1 | -2/+2 |
| | | |||||
| * | don't return empty invoices | Adam Soltys | 2025-11-06 | 1 | -1/+3 |
| | | |||||
| * | require challenge after login failures | Adam Soltys | 2025-10-10 | 1 | -7/+9 |
| | | |||||
| * | fail faster | Adam Soltys | 2025-10-01 | 1 | -1/+1 |
| | | |||||
| * | challenge verify | Adam Soltys | 2025-10-01 | 1 | -12/+4 |
| | | |||||
| * | login challenge | Adam Soltys | 2025-10-01 | 1 | -0/+11 |
| | | |||||
| * | fix username change logic | Adam Soltys | 2025-09-30 | 1 | -9/+9 |
| | | |||||
| * | rotate server key | Adam Soltys | 2025-09-29 | 2 | -6/+6 |
| | | |||||
| * | don't credit dust | Adam Soltys | 2025-09-29 | 1 | -0/+1 |
| | | |||||
| * | disable delete endpoint | Adam Soltys | 2025-09-24 | 1 | -1/+2 |
| | | |||||
| * | fix existence check | Adam Soltys | 2025-09-23 | 1 | -1/+1 |
| | | |||||
| * | fix invoice user | Adam Soltys | 2025-09-20 | 1 | -2/+2 |
| | | |||||
| * | remove verification on email change | Adam Soltys | 2025-09-18 | 1 | -0/+5 |
| | | |||||
| * | fail if unauthorized | Adam Soltys | 2025-09-18 | 1 | -5/+8 |
| | | |||||
| * | Merge branch 'patch-1' | Adam Soltys | 2025-09-18 | 1 | -3/+10 |
| |\ | |||||
| | * | allow invoice owners to modify the webhook | Adam Soltys | 2025-09-18 | 1 | -5/+10 |
| | | | |||||
