Summary
This release introduces sender and receiver cancel() APIs, fallback typestates for both sender and receiver, merges Cancel/Failure error variants and carves out dedicated errors (CoinSelectionError, DecapsulationError, dedicated create-request error), promotes InMemoryTestPersister to InMemoryPersister while removing NoopSessionPersister, replaces the url crate dependency with an internal Url type, adds is_expired and ErrorCode/WellKnownError::code to the error hierarchy, and removes sender sigs from receiver psbt_to_sign.
What's Changed
- Use official bitcoind-async-client release with support for mainnet and testnet by @benalleng in #1441
- Add locktime default to payjoin-cli by @benalleng in #1445
- Add uniffi-dart to standup activity search by @chavic in #1444
- chore: update flake.lock by @spacebear21 in #1453
- Fix invalid discord link by @xstoicunicornx in #1455
- add bitcoind to devshell, and setenv BITCOIND_EXE by @nothingmuch in #514
- Add db entry metrics by @zealsham in #1412
- Rename crane profile to nix-ci and use for checks by @Mshehu5 in #1297
- Fix PR review activty in standup bot by @Mshehu5 in #1461
- Adds a recommended pre-commit hook that ensures lock files are updated by @benalleng in #1442
- Sanitize shortid when storing metrics by @zealsham in #1434
- Add previous thread links to weekly standups by @Mshehu5 in #1464
- chore: update flake.lock by @spacebear21 in #1467
- Document persistence backwards/forwards compatibility consideration by @nothingmuch in #1465
- Add workflow runs for the ffi layer on the weekly flake maintenance by @benalleng in #1468
- Lock transitive icu deps for ffi by @benalleng in #1463
- Remove Docker instructions from CONTRIBUTING.md by @arminsabouri in #1471
- chore: update flake.lock by @spacebear21 in #1477
- Remove unneeded http feature via the bhttp dep in payjoin-mailroom by @benalleng in #1481
- Disable reqwest dep when _manual-tls is enabled in the payjoin crate by @benalleng in #1484
- Unify mailbox TTL to a single value by @Arowolokehinde in #1457
- Remove amount assert in pjuri fuzzer by @benalleng in #1480
- Expose standard Rust traits on FFI error types by @spacebear21 in #1485
- Handle Retry-After header for 429 and 503 in gateway prober by @codaMW in #1475
- Fix clippy::question_mark warnings in FFI load() impls by @codaMW in #1491
- Receive cancel() by @spacebear21 in #1470
- chore: update flake.lock by @spacebear21 in #1494
- Implement native http.fetchOhttpKeys in dart by @spacebear21 in #1495
- Use internal Url struct in favor of url::Url to minimize the url dep in payjoin by @benalleng in #1377
- Send cancel() by @spacebear21 in #1496
- Fix send success log error and order by @Arowolokehinde in #1498
- Fix HTTP error handling in payjoin-cli by @spacebear21 in #1499
- fix(test): remove payjoin-ffi from root CRATES and update ffi test script by @caarloshenriq in #1492
- Update use of deprecated from_sat_per_vb_unchecked by @benalleng in #1502
- Guard concurrent sends with exclusive DB lock and URI/RK checks by @Mshehu5 in #1376
- Add comment-triggered activity collection to payjoin-bot by @DanGould in #1503
- chore: update flake.lock by @spacebear21 in #1506
- Document OHTTP relay random selection guidance by @bc1cindy in #1380
- Fix unused results in session unit tests by @arminsabouri in #1512
- fix(mailroom): reject post requests over capacity by @va-an in #1509
- Fix dead BIP 77 and BIP 78 links in README by @Yunusabdul38 in #1520
- Use BIP 78 spec terms in payjoin-cli prints by @DanGould in #1523
- Add Javascript Bindings for Web by @xstoicunicornx in #1513
- Update javascript package.json to personal fork by @spacebear21 in #1525
- Publish payjoin 0.1.1 to npm by @spacebear21 in #1527
- Demo sender fallback by @arminsabouri in #1510
- Ship
InMemoryPersisterto close #1519 by @DanGould in #1528 - chore: update flake.lock by @spacebear21 in #1535
- Add nixpkgs-unstable overlay and migrate CI workflows to nix flake by @caarloshenriq in #1531
- Support HTTPS OHTTP relays in Dart by @chavic in #1532
- parallelize FFI language binding tests in contrib/test.sh by @caarloshenriq in #1504
- Cleanup python devshell CI testing environment by @benalleng in #1539
- Rename FFI bitcoin structs and specify units by @spacebear21 in #1537
- Track unique shortids seen by @zealsham in #1459
- chore: update flake.lock by @spacebear21 in #1551
- Prepare dart package for publishing to pub.dev by @spacebear21 in #1541
- ffi: Extract shared InMemory persister helpers by @spacebear21 in #1553
- Force linting scripts to align rust toolchain with latest nix shell and not latest nightly by @benalleng in #1536
- refactor(cli): simplify bip cli args by @va-an in #1554
- Use orignal proposal mailbox id util method by @arminsabouri in #1556
- Patch payjoin git URL in JS wasm manifest by @spacebear21 in #1561
- Correct FFI bindings monitor method name by @xstoicunicornx in #1562
- Remove sender sigs from receiver psbt_to_sign by @xstoicunicornx in #1560
- Update rustfmt.toml and treefmt nix rust editions to be inline with other workspaces by @benalleng in #1565
- chore: update flake.lock by @spacebear21 in #1564
- Add
nix fmtinstructions toCONTRIBUTING.mdby @arminsabouri in #1566 - Remove redundant language from
finalize_proposalrustdocs by @arminsabouri in #1567 - Add concurrent psbt repo by @arminsabouri in #1569
- test(js): add smoke tests for web bindings by @caarloshenriq in #1544
- Remove reciever wordings from global ffi error type by @arminsabouri in #1570
- Add C# SDK to nix dev shell by @chavic in #1559
- Enforce single-owner contract on InMemoryPersister by @DanGould in #1534
- Sender Pending Fallback state by @arminsabouri in #1557
- Fix LSP types, lints in Python and Typescript tests by @xstoicunicornx in #1571
- Nixify Javascript FFi tests by @benalleng in #1572
- chore: update flake.lock by @spacebear21 in #1578
- Bump idna from 3.10 to 3.15 in /payjoin-ffi/python by @dependabot[bot] in #1580
- Light refactor to v2 receiver for readability by @xstoicunicornx in #1585
- fix(cli): v1 config rejecting endpoints without explicit port by @va-an in #1576
- Add tests for OriginalPayload and PsbtContext by @xstoicunicornx in #1583
- Nixify ffi CI by @benalleng in #1574
- chore: add lcov.info to root .gitignore by @mwihoti in #1589
- FFI dev shell follow-ups by @chavic in #1587
- docs(cli): update relay url by @va-an in #1590
- FFI: Refactor Javascript integration test by @xstoicunicornx in #1584
- chore: update flake.lock by @spacebear21 in #1594
- Fix resume succeding prematurely by @zealsham in #1573
- payjoin-cli WalletCreateFundedPSBTOptions accept Option by @benalleng in #1595
- Not --all-features test suite by @benalleng in #1038
- Rename EncapsulationError to DecapsulationError by @DanGould in #1601
- Test utils feature unification by @benalleng in #1599
- Document BIP77 v1 fallback behavior in create_post_request by @DanGould in #1593
- Receiver fallback typestate by @spacebear21 in #1558
- Update cargo-mutants to 27.1.0 by @benalleng in #1596
- Merge Cancel and Failure variants by @benalleng in #1607
- Stabilize 1.0 errors by carving out errors used in state machine control flow & keeping the rest opaque by @DanGould in #1602
- Mailroom EMFILE resilience by @DanGould in #1608
- Only set max_fee_rate when configured in v2 by @codaMW #1490
- Decouple test-utils v2 to make payjoin publishable @DanGould #1618
New Contributors
- @xstoicunicornx made their first contribution in #1455
- @Arowolokehinde made their first contribution in #1457
- @codaMW made their first contribution in #1475
- @caarloshenriq made their first contribution in #1492
- @va-an made their first contribution in #1509
- @Yunusabdul38 made their first contribution in #1520
- @dependabot[bot] made their first contribution in #1580
- @mwihoti made their first contribution in #1589
Full Changelog: payjoin-0.25.0...payjoin-1.0.0-rc.3