Commit Graph
100 Commits
Author SHA1 Message Date
protom 637376e291 docs(lnurlcash): document the two mint output modes
Reword the rotate-after-claim invariant for named outputs and fix the
test-harness pointer (ops.testHarness.ts, not test-utils.ts).
2026-08-31 12:23:10 +02:00
protom 39a144cf50 feat(receive): accept named mints that serve no verify URL
Named mints claim through the wallet's own secret, so a missing LUD-21
verify URL no longer blocks receiving; unnamed mints still require it -
there the preimage it reveals IS the claim.
2026-08-31 12:23:10 +02:00
protom ae5064b69a feat(nwc): make_invoice against mints with wallet-named outputs
The named-mint branch claims by the wallet's secret and treats the verify
preimage as an ordinary payment receipt - but keeps the rotated guard
before handing it out, because the rescue path (a mint that credited the
preimage despite the binding) claims through claimFromPreimage, where a
failed rotate leaves that preimage a live note secret. possibleCopy is
committed exactly like the unnamed path.
2026-08-31 12:23:10 +02:00
protom c9963934aa feat(funds): keep the claimable note of a pending named transfer
An unknown-still-pending transfer to a named mint carries the note at the
wallet's own secret in its claim material - persist it unverified like the
settled-claim-failed path already does, instead of dropping it with the
result object.
2026-08-31 12:22:56 +02:00
protom 67b2122e52 feat(lnurlcash): transfer to mints with wallet-named outputs
A named target needs no verify URL: the note appearing at the wallet's own
secret is the settlement proof, and it is claimed without a rotate. The
claim material carries the secret - and the unverified note at it - from
the start, so a melt settling after the poll budget is never a lost note;
the source-note oracle classification is unchanged.
2026-08-31 12:22:56 +02:00
protom 58268b2921 feat(lnurlcash): claim mint outputs named by a wallet-chosen secret
lnurl-mint >= 0.4 refuses a mint quote without comment=sha256(secret) and
keys the note by that secret instead of the payment preimage. prepareMint
detects the capability per mint (commentAllowed >= 64 or mintToHash),
binds the quote to a wallet-drawn secret, and claimMintedNote polls the
note itself - no preimage, no rotate, since the secret never rode an
invoice. Mints that never advertised the capability get the byte-identical
old request and stay on the preimage path; a mint that took the hash but
credited the preimage is caught by the claim poll and rescued through the
quote's verify URL. The d.ts augments the conformance package's stale
published declarations for its comment-naming flags.
2026-08-31 12:22:45 +02:00
protom 9f4ae3b0f5 refactor(lnurlcash): generalize bounded polling beyond verify endpoints
pollVerifyUntilSettled keeps its exact behavior and messages, reimplemented
on a generic pollUntil so flows that watch something other than a LUD-21
verify (a named mint output appearing) share the same backoff, budget and
abort semantics.
2026-08-31 12:22:30 +02:00
protom bb147faef1 build(deps): bump lnurlcash-kit to 0.5.0 and lnurlcash-conformance to 0.4.0
The kit release line adds the LUD-25 output-naming protocol (comment/h on
the pay callback, claim polling, merge batching); the mock mint now
defaults to plain https withdraw links and serves the originally issued
invoice on verify, which the two adapted tests pinned the old shape of.
2026-08-31 12:22:21 +02:00
protom 338b2812e3 Merge pull request #3 from tompro/refactor/wallet-integrity
fix(wallet): enforce owner-bound integrity and durable commits
2026-08-24 16:30:06 +02:00
protom e892a330fc fix: consume owner monitor transition failures 2026-08-24 16:26:29 +02:00
protom 72f387f6e5 docs: document wallet integrity boundaries 2026-08-22 16:56:50 +02:00
protom 76d59d8d08 test: harden NWC browser lifecycle coverage 2026-08-22 16:56:49 +02:00
protom a40079200d test: cover wallet lifecycle through the browser 2026-08-22 16:56:49 +02:00
protom 578613c869 refactor: split wallet onboarding panels 2026-08-22 16:56:49 +02:00
protom 3c2a2cc4a5 feat: await trusted mint management actions 2026-08-22 16:56:49 +02:00
protom 401a26dc6b fix: fence send and pay flows 2026-08-22 16:56:38 +02:00
protom f087ebe2f2 fix: surface receive post-commit trust failures 2026-08-22 16:56:38 +02:00
protom c59521a421 fix: commit carved wallet funds atomically 2026-08-22 16:56:38 +02:00
protom 3f6010b312 feat: restore Nostr backups through wallet lifecycle 2026-08-22 16:56:37 +02:00
protom 99e6ae1b12 fix: await wallet commits in the NWC store 2026-08-22 16:56:37 +02:00
protom 81c28ec16d feat: scope trusted mint state in Pinia 2026-08-22 16:56:25 +02:00
protom e98373491f fix: drain accepted NWC work before wallet lock 2026-08-22 16:56:25 +02:00
protom 2e0f0038f7 feat: invalidate stale wallet tabs 2026-08-22 16:56:25 +02:00
protom 3acc63e968 fix: clear runtime state after lifecycle failures 2026-08-22 16:56:25 +02:00
protom c319e11d3e feat: activate only proven wallet owners 2026-08-22 16:56:24 +02:00
protom 62b93baa05 feat: serialize wallet lifecycle transitions 2026-08-22 16:56:11 +02:00
protom 5b3a69e910 feat: apply wallet fund changes atomically 2026-08-22 16:56:11 +02:00
protom 9fa4abdaf3 feat: fence wallet mutations by lifecycle owner 2026-08-22 16:56:11 +02:00
protom 54031dc8de fix: publish activity only after persistence 2026-08-22 16:56:10 +02:00
protom e9bbb358aa fix: mirror trusted mint commits across tabs 2026-08-22 16:56:10 +02:00
protom 83c9e5b95f feat: converge trusted mints on storage events 2026-08-22 16:55:47 +02:00
protom d735aca885 feat: serialize trusted mint transactions 2026-08-22 16:55:47 +02:00
protom 82f008b33f feat: validate trusted mint registry envelopes 2026-08-22 16:55:47 +02:00
protom d890a69c40 feat: preserve trusted mint rekey transitions 2026-08-22 16:55:47 +02:00
protom 7890a492f3 refactor: export owner-aware NWC APIs 2026-08-22 16:55:47 +02:00
protom 3ed214c157 feat: drain tracked NWC handlers on stop 2026-08-22 16:55:36 +02:00
protom 513c67fc14 fix: hide invoice settlement until commit 2026-08-22 16:55:35 +02:00
protom 09b7b63c9d fix: await NWC payment bearer commits 2026-08-22 16:55:35 +02:00
protom fff24a75b2 fix: preserve conservative NWC budget debits 2026-08-22 16:55:35 +02:00
protom b52172c0cb fix: validate NWC requests before dispatch 2026-08-22 16:55:35 +02:00
protom 228a92b0f0 feat: create owner-bound NWC connections 2026-08-22 16:55:24 +02:00
protom 9f6bcad706 feat: scope NWC storage to wallet owners 2026-08-22 16:55:23 +02:00
protom 3054834cdb test: split NWC protocol harness 2026-08-22 16:55:23 +02:00
protom 845ec410e5 feat: expose fund ownership assertions 2026-08-22 16:55:23 +02:00
protom 02f901c87c fix: fence inter-mint transfer operations 2026-08-22 16:55:23 +02:00
protom c4c9d8a94a fix: fence invoice payment operations 2026-08-22 16:55:12 +02:00
protom 7f69f781f5 fix: fence mint and receive operations 2026-08-22 16:55:12 +02:00
protom 6fa4283ed6 fix: fence carve operations before mutation 2026-08-22 16:55:12 +02:00
protom 22420b9112 test: split wallet operation harness 2026-08-22 16:55:12 +02:00
protom f55f208836 feat: await owner-aware Nostr restores 2026-08-22 16:55:12 +02:00
protom 7607e47358 feat: apply owner-aware wallet backups 2026-08-22 16:55:00 +02:00
protom 0862a10b01 fix: validate auxiliary wallet storage 2026-08-22 16:55:00 +02:00
protom 586d12b666 feat: commit bearer changesets in one write 2026-08-22 16:55:00 +02:00
protom 69fbdb68ee feat: add persisted owner guards and events 2026-08-22 16:55:00 +02:00
protom 1dbf5788f9 fix: normalize storage lock failures 2026-08-22 16:55:00 +02:00
protom 12e4ec9199 feat: scope passkey slots to proven owners 2026-08-22 16:54:49 +02:00
protom d9be457221 feat: harden passkey ceremonies 2026-08-22 16:54:49 +02:00
protom 058b10ddf1 refactor: isolate passkey wrapping crypto 2026-08-22 16:54:48 +02:00
protom acfab83438 feat: bind saved keys to versioned wallet owners 2026-08-22 16:54:48 +02:00
protom 0e0133f550 test: split Nostr backup integration cases 2026-08-22 16:54:48 +02:00
protom b258d86af7 refactor: isolate Nostr backup publishing transport 2026-08-22 16:54:29 +02:00
protom 2a90343e7e refactor: validate Nostr backup event payloads 2026-08-22 16:54:29 +02:00
protom b6fff605a1 refactor: tighten protocol amount helpers 2026-08-22 16:54:29 +02:00
protom 8548afcd21 refactor: add strict JSON parsing helpers 2026-08-22 16:54:29 +02:00
protom 30d1d0aeae build: pin LNURLcash protocol packages to npm 0.1.1 2026-08-22 16:54:28 +02:00
protom 84441f53e3 Merge pull request #2 from tompro/chore/mit-license
docs: add MIT license
2026-08-20 13:43:37 +02:00
protom cb5e0e3586 docs: add MIT license 2026-08-20 13:40:59 +02:00
protom 22e987bbb3 docs: marketing readme with brand assets and app screenshots 2026-08-20 12:30:54 +02:00
protom 1df7fb8fdb Merge pull request #1 from tompro/release-please--branches--main--components--sattle
chore(main): release sattle 0.0.2
2026-08-20 12:19:19 +02:00
protom 16d27dce02 docs: add AGENTS.md knowledge base (root, protocol engine, e2e) 2026-08-20 12:03:11 +02:00
protom d0573cd6b6 ci: release-please for version bumps, changelog and release tagging 2026-08-20 12:03:10 +02:00
protom 7841a13ba3 build: depend on upstream lnurlcash-kit (git-install PR merged), pinned to the merge commit 2026-08-20 10:59:58 +02:00
protom 68bdf29fd5 build: bump lnurlcash-kit past the upstream detached-fetch fix, drop the boot workaround 2026-08-20 10:53:13 +02:00
protom f4b9377d17 feat: reusable mint fee math with cached quotes, fee-aware Max in move funds 2026-08-20 10:13:36 +02:00
protom 39261212cf fix: discover a mint's signing key from the mint-address endpoint, not the payRequest 2026-08-20 09:54:26 +02:00
protom 3f22534cf0 feat: capacitor android platform project 2026-08-20 08:31:59 +02:00
protom 229e9fcf38 feat: deep link routing for lightning and lnurl schemes plus association files 2026-08-20 08:31:59 +02:00
protom e59b722b5e feat: native biometric unlock via biometric-gated wrap of the linking key 2026-08-20 08:31:59 +02:00
protom f525b06966 feat: capability layer for clipboard, share and deep links with tests 2026-08-20 08:31:59 +02:00
protom 12851a2b1c build: capacitor 8 dependencies, config and android sync scripts 2026-08-20 08:31:59 +02:00
protom 4683ffee57 test: e2e coverage for nwc settings and service lifecycle 2026-08-20 01:20:41 +02:00
protom 52211273b1 feat: nwc connections settings page with one-time connection strings and service lifecycle 2026-08-20 01:20:41 +02:00
protom 33318a5150 feat: nip-47 nwc wallet service engine with per-connection budgets 2026-08-20 01:20:41 +02:00
protom 34c97708f8 test: use a long sentinel id in the nostr backup no-plaintext assertion (short ids randomly appear in base64 ciphertext) 2026-08-20 00:00:08 +02:00
protom 2ab4ab194e test: e2e coverage for backup and security pages 2026-08-19 23:55:59 +02:00
protom 1920a00cd6 feat: backup and security settings pages, nostr restore onboarding, passkey unlock entry 2026-08-19 23:55:59 +02:00
protom 7db34083e6 feat: webauthn prf passkey unlock engine as alternative wrap of the linking key 2026-08-19 23:55:59 +02:00
protom 7ecade32ee feat: nostr kind-30078 backup engine with nip-44 self-encryption and merge-on-restore 2026-08-19 23:55:59 +02:00
protom 70e61c2f34 ci: run playwright e2e suite on github runners 2026-08-19 22:43:31 +02:00
protom d2fc34ed25 test: e2e coverage for mint management and inter-mint transfer 2026-08-19 22:27:14 +02:00
protom f631c7c264 feat: manage mints and move funds settings pages 2026-08-19 22:27:14 +02:00
protom 142734b903 feat: inter-mint transfer op with fee quote and ambiguity-safe outcomes 2026-08-19 22:27:14 +02:00
protom 7e091cd6ed build: provide chromium in nix dev shell for playwright e2e 2026-08-19 21:36:48 +02:00
protom 05fc40263b test: playwright e2e setup with onboarding, navigation and receive specs 2026-08-19 21:36:48 +02:00
protom 1839700215 fix: bind window.fetch at boot so lnurlcash-kit transport works in browsers 2026-08-19 21:36:48 +02:00
protom 1fe1453745 feat: wallet screens, branded header layout and mobile-first main view 2026-08-19 21:06:17 +02:00
protom 48e4c84092 feat: sattle branding, logo assets and generated app icons 2026-08-19 21:06:17 +02:00
protom 48fffff02a feat: send/receive dialogs, qr scanner, history and unlock components 2026-08-19 21:06:17 +02:00
protom fdd12dcc1e feat: pinia wallet, mints and activity stores with wallet boot 2026-08-19 21:06:17 +02:00
protom 1c9e7165e4 feat: wallet operations engine and encrypted storage with tests 2026-08-19 21:06:17 +02:00