Create a new minor release
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.
Commit
5e61899
Changelog
Details
* Use official bitcoind-async-client release with support for mainnet and testnet by @benalleng in https://github.com//pull/1441
* Add locktime default to payjoin-cli by @benalleng in https://github.com//pull/1445
* Add uniffi-dart to standup activity search by @chavic in https://github.com//pull/1444
* chore: update flake.lock by @spacebear21 in https://github.com//pull/1453
* Fix invalid discord link by @xstoicunicornx in https://github.com//pull/1455
* add bitcoind to devshell, and setenv BITCOIND_EXE by @nothingmuch in https://github.com//pull/514
* Add db entry metrics by @zealsham in https://github.com//pull/1412
* Rename crane profile to nix-ci and use for checks by @Mshehu5 in https://github.com//pull/1297
* Fix PR review activty in standup bot by @Mshehu5 in https://github.com//pull/1461
* Adds a recommended pre-commit hook that ensures lock files are updated by @benalleng in https://github.com//pull/1442
* Sanitize shortid when storing metrics by @zealsham in https://github.com//pull/1434
* Add previous thread links to weekly standups by @Mshehu5 in https://github.com//pull/1464
* chore: update flake.lock by @spacebear21 in https://github.com//pull/1467
* Document persistence backwards/forwards compatibility consideration by @nothingmuch in https://github.com//pull/1465
* Add workflow runs for the ffi layer on the weekly flake maintenance by @benalleng in https://github.com//pull/1468
* Lock transitive icu deps for ffi by @benalleng in https://github.com//pull/1463
* Remove Docker instructions from CONTRIBUTING.md by @arminsabouri in https://github.com//pull/1471
* chore: update flake.lock by @spacebear21 in https://github.com//pull/1477
* Remove unneeded http feature via the bhttp dep in payjoin-mailroom by @benalleng in https://github.com//pull/1481
* Disable reqwest dep when _manual-tls is enabled in the payjoin crate by @benalleng in https://github.com//pull/1484
* Unify mailbox TTL to a single value by @Arowolokehinde in https://github.com//pull/1457
* Remove amount assert in pjuri fuzzer by @benalleng in https://github.com//pull/1480
* Expose standard Rust traits on FFI error types by @spacebear21 in https://github.com//pull/1485
* Handle Retry-After header for 429 and 503 in gateway prober by @codaMW in https://github.com//pull/1475
* Fix clippy::question_mark warnings in FFI load() impls by @codaMW in https://github.com//pull/1491
* Receive cancel() by @spacebear21 in https://github.com//pull/1470
* chore: update flake.lock by @spacebear21 in https://github.com//pull/1494
* Implement native http.fetchOhttpKeys in dart by @spacebear21 in https://github.com//pull/1495
* Use internal Url struct in favor of url::Url to minimize the url dep in payjoin by @benalleng in https://github.com//pull/1377
* Send cancel() by @spacebear21 in https://github.com//pull/1496
* Fix send success log error and order by @Arowolokehinde in https://github.com//pull/1498
* Fix HTTP error handling in payjoin-cli by @spacebear21 in https://github.com//pull/1499
* fix(test): remove payjoin-ffi from root CRATES and update ffi test script by @caarloshenriq in https://github.com//pull/1492
* Update use of deprecated from_sat_per_vb_unchecked by @benalleng in https://github.com//pull/1502
* Guard concurrent sends with exclusive DB lock and URI/RK checks by @Mshehu5 in https://github.com//pull/1376
* Add comment-triggered activity collection to payjoin-bot by @DanGould in https://github.com//pull/1503
* chore: update flake.lock by @spacebear21 in https://github.com//pull/1506
* Document OHTTP relay random selection guidance by @bc1cindy in https://github.com//pull/1380
* Fix unused results in session unit tests by @arminsabouri in https://github.com//pull/1512
* fix(mailroom): reject post requests over capacity by @va-an in https://github.com//pull/1509
* Fix dead BIP 77 and BIP 78 links in README by @Yunusabdul38 in https://github.com//pull/1520
* Use BIP 78 spec terms in payjoin-cli prints by @DanGould in https://github.com//pull/1523
* Add Javascript Bindings for Web by @xstoicunicornx in https://github.com//pull/1513
* Update javascript package.json to personal fork by @spacebear21 in https://github.com//pull/1525
* Publish payjoin 0.1.1 to npm by @spacebear21 in https://github.com//pull/1527
* Demo sender fallback by @arminsabouri in https://github.com//pull/1510
* Ship `InMemoryPersister` to close #1519 by @DanGould in https://github.com//pull/1528
* chore: update flake.lock by @spacebear21 in https://github.com//pull/1535
* Add nixpkgs-unstable overlay and migrate CI workflows to nix flake by @caarloshenriq in https://github.com//pull/1531
* Support HTTPS OHTTP relays in Dart by @chavic in https://github.com//pull/1532
* parallelize FFI language binding tests in contrib/test.sh by @caarloshenriq in https://github.com//pull/1504
* Cleanup python devshell CI testing environment by @benalleng in https://github.com//pull/1539
* Rename FFI bitcoin structs and specify units by @spacebear21 in https://github.com//pull/1537
* Track unique shortids seen by @zealsham in https://github.com//pull/1459
* chore: update flake.lock by @spacebear21 in https://github.com//pull/1551
* Prepare dart package for publishing to pub.dev by @spacebear21 in https://github.com//pull/1541
* ffi: Extract shared InMemory persister helpers by @spacebear21 in https://github.com//pull/1553
* Force linting scripts to align rust toolchain with latest nix shell and not latest nightly by @benalleng in https://github.com//pull/1536
* refactor(cli): simplify bip cli args by @va-an in https://github.com//pull/1554
* Use orignal proposal mailbox id util method by @arminsabouri in https://github.com//pull/1556
* Patch payjoin git URL in JS wasm manifest by @spacebear21 in https://github.com//pull/1561
* Correct FFI bindings monitor method name by @xstoicunicornx in https://github.com//pull/1562
* Remove sender sigs from receiver psbt_to_sign by @xstoicunicornx in https://github.com//pull/1560
* Update rustfmt.toml and treefmt nix rust editions to be inline with other workspaces by @benalleng in https://github.com//pull/1565
* chore: update flake.lock by @spacebear21 in https://github.com//pull/1564
* Add `nix fmt` instructions to `CONTRIBUTING.md` by @arminsabouri in https://github.com//pull/1566
* Remove redundant language from `finalize_proposal` rustdocs by @arminsabouri in https://github.com//pull/1567
* Add concurrent psbt repo by @arminsabouri in https://github.com//pull/1569
* test(js): add smoke tests for web bindings by @caarloshenriq in https://github.com//pull/1544
* Remove reciever wordings from global ffi error type by @arminsabouri in https://github.com//pull/1570
* Add C# SDK to nix dev shell by @chavic in https://github.com//pull/1559
* Enforce single-owner contract on InMemoryPersister by @DanGould in https://github.com//pull/1534
* Sender Pending Fallback state by @arminsabouri in https://github.com//pull/1557
* Fix LSP types, lints in Python and Typescript tests by @xstoicunicornx in https://github.com//pull/1571
* Nixify Javascript FFi tests by @benalleng in https://github.com//pull/1572
* chore: update flake.lock by @spacebear21 in https://github.com//pull/1578
* Bump idna from 3.10 to 3.15 in /payjoin-ffi/python by @dependabot[bot] in https://github.com//pull/1580
* Light refactor to v2 receiver for readability by @xstoicunicornx in https://github.com//pull/1585
* fix(cli): v1 config rejecting endpoints without explicit port by @va-an in https://github.com//pull/1576
* Add tests for OriginalPayload and PsbtContext by @xstoicunicornx in https://github.com//pull/1583
* Nixify ffi CI by @benalleng in https://github.com//pull/1574
* chore: add lcov.info to root .gitignore by @mwihoti in https://github.com//pull/1589
* FFI dev shell follow-ups by @chavic in https://github.com//pull/1587
* docs(cli): update relay url by @va-an in https://github.com//pull/1590
* FFI: Refactor Javascript integration test by @xstoicunicornx in https://github.com//pull/1584
* chore: update flake.lock by @spacebear21 in https://github.com//pull/1594
* Fix resume succeding prematurely by @zealsham in https://github.com//pull/1573
* payjoin-cli WalletCreateFundedPSBTOptions accept Option by @benalleng in https://github.com//pull/1595
* Not --all-features test suite by @benalleng in https://github.com//pull/1038
* Rename EncapsulationError to DecapsulationError by @DanGould in https://github.com//pull/1601
* Test utils feature unification by @benalleng in https://github.com//pull/1599
* Document BIP77 v1 fallback behavior in create_post_request by @DanGould in https://github.com//pull/1593
* Receiver fallback typestate by @spacebear21 in https://github.com//pull/1558
* Update cargo-mutants to 27.1.0 by @benalleng in https://github.com//pull/1596
* Merge Cancel and Failure variants by @benalleng in https://github.com//pull/1607
* Stabilize 1.0 errors by carving out errors used in state machine control flow & keeping the rest opaque by @DanGould in https://github.com//pull/1602
* Mailroom EMFILE resilience by @DanGould in https://github.com//pull/1608
Checklist
Release numbering must follow Semantic Versioning. These steps assume the current master
branch development version is MAJOR.MINOR.0.
On the day of the feature freeze
Change the master branch to the next MINOR+1 version:
If any issues need to be fixed before the MAJOR.MINOR+1.0 version is released:
On the day of the release
Tag and publish new release:
Create a new minor release
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.
Commit
5e61899
Changelog
Details
* Use official bitcoind-async-client release with support for mainnet and testnet by @benalleng in https://github.com//pull/1441 * Add locktime default to payjoin-cli by @benalleng in https://github.com//pull/1445 * Add uniffi-dart to standup activity search by @chavic in https://github.com//pull/1444 * chore: update flake.lock by @spacebear21 in https://github.com//pull/1453 * Fix invalid discord link by @xstoicunicornx in https://github.com//pull/1455 * add bitcoind to devshell, and setenv BITCOIND_EXE by @nothingmuch in https://github.com//pull/514 * Add db entry metrics by @zealsham in https://github.com//pull/1412 * Rename crane profile to nix-ci and use for checks by @Mshehu5 in https://github.com//pull/1297 * Fix PR review activty in standup bot by @Mshehu5 in https://github.com//pull/1461 * Adds a recommended pre-commit hook that ensures lock files are updated by @benalleng in https://github.com//pull/1442 * Sanitize shortid when storing metrics by @zealsham in https://github.com//pull/1434 * Add previous thread links to weekly standups by @Mshehu5 in https://github.com//pull/1464 * chore: update flake.lock by @spacebear21 in https://github.com//pull/1467 * Document persistence backwards/forwards compatibility consideration by @nothingmuch in https://github.com//pull/1465 * Add workflow runs for the ffi layer on the weekly flake maintenance by @benalleng in https://github.com//pull/1468 * Lock transitive icu deps for ffi by @benalleng in https://github.com//pull/1463 * Remove Docker instructions from CONTRIBUTING.md by @arminsabouri in https://github.com//pull/1471 * chore: update flake.lock by @spacebear21 in https://github.com//pull/1477 * Remove unneeded http feature via the bhttp dep in payjoin-mailroom by @benalleng in https://github.com//pull/1481 * Disable reqwest dep when _manual-tls is enabled in the payjoin crate by @benalleng in https://github.com//pull/1484 * Unify mailbox TTL to a single value by @Arowolokehinde in https://github.com//pull/1457 * Remove amount assert in pjuri fuzzer by @benalleng in https://github.com//pull/1480 * Expose standard Rust traits on FFI error types by @spacebear21 in https://github.com//pull/1485 * Handle Retry-After header for 429 and 503 in gateway prober by @codaMW in https://github.com//pull/1475 * Fix clippy::question_mark warnings in FFI load() impls by @codaMW in https://github.com//pull/1491 * Receive cancel() by @spacebear21 in https://github.com//pull/1470 * chore: update flake.lock by @spacebear21 in https://github.com//pull/1494 * Implement native http.fetchOhttpKeys in dart by @spacebear21 in https://github.com//pull/1495 * Use internal Url struct in favor of url::Url to minimize the url dep in payjoin by @benalleng in https://github.com//pull/1377 * Send cancel() by @spacebear21 in https://github.com//pull/1496 * Fix send success log error and order by @Arowolokehinde in https://github.com//pull/1498 * Fix HTTP error handling in payjoin-cli by @spacebear21 in https://github.com//pull/1499 * fix(test): remove payjoin-ffi from root CRATES and update ffi test script by @caarloshenriq in https://github.com//pull/1492 * Update use of deprecated from_sat_per_vb_unchecked by @benalleng in https://github.com//pull/1502 * Guard concurrent sends with exclusive DB lock and URI/RK checks by @Mshehu5 in https://github.com//pull/1376 * Add comment-triggered activity collection to payjoin-bot by @DanGould in https://github.com//pull/1503 * chore: update flake.lock by @spacebear21 in https://github.com//pull/1506 * Document OHTTP relay random selection guidance by @bc1cindy in https://github.com//pull/1380 * Fix unused results in session unit tests by @arminsabouri in https://github.com//pull/1512 * fix(mailroom): reject post requests over capacity by @va-an in https://github.com//pull/1509 * Fix dead BIP 77 and BIP 78 links in README by @Yunusabdul38 in https://github.com//pull/1520 * Use BIP 78 spec terms in payjoin-cli prints by @DanGould in https://github.com//pull/1523 * Add Javascript Bindings for Web by @xstoicunicornx in https://github.com//pull/1513 * Update javascript package.json to personal fork by @spacebear21 in https://github.com//pull/1525 * Publish payjoin 0.1.1 to npm by @spacebear21 in https://github.com//pull/1527 * Demo sender fallback by @arminsabouri in https://github.com//pull/1510 * Ship `InMemoryPersister` to close #1519 by @DanGould in https://github.com//pull/1528 * chore: update flake.lock by @spacebear21 in https://github.com//pull/1535 * Add nixpkgs-unstable overlay and migrate CI workflows to nix flake by @caarloshenriq in https://github.com//pull/1531 * Support HTTPS OHTTP relays in Dart by @chavic in https://github.com//pull/1532 * parallelize FFI language binding tests in contrib/test.sh by @caarloshenriq in https://github.com//pull/1504 * Cleanup python devshell CI testing environment by @benalleng in https://github.com//pull/1539 * Rename FFI bitcoin structs and specify units by @spacebear21 in https://github.com//pull/1537 * Track unique shortids seen by @zealsham in https://github.com//pull/1459 * chore: update flake.lock by @spacebear21 in https://github.com//pull/1551 * Prepare dart package for publishing to pub.dev by @spacebear21 in https://github.com//pull/1541 * ffi: Extract shared InMemory persister helpers by @spacebear21 in https://github.com//pull/1553 * Force linting scripts to align rust toolchain with latest nix shell and not latest nightly by @benalleng in https://github.com//pull/1536 * refactor(cli): simplify bip cli args by @va-an in https://github.com//pull/1554 * Use orignal proposal mailbox id util method by @arminsabouri in https://github.com//pull/1556 * Patch payjoin git URL in JS wasm manifest by @spacebear21 in https://github.com//pull/1561 * Correct FFI bindings monitor method name by @xstoicunicornx in https://github.com//pull/1562 * Remove sender sigs from receiver psbt_to_sign by @xstoicunicornx in https://github.com//pull/1560 * Update rustfmt.toml and treefmt nix rust editions to be inline with other workspaces by @benalleng in https://github.com//pull/1565 * chore: update flake.lock by @spacebear21 in https://github.com//pull/1564 * Add `nix fmt` instructions to `CONTRIBUTING.md` by @arminsabouri in https://github.com//pull/1566 * Remove redundant language from `finalize_proposal` rustdocs by @arminsabouri in https://github.com//pull/1567 * Add concurrent psbt repo by @arminsabouri in https://github.com//pull/1569 * test(js): add smoke tests for web bindings by @caarloshenriq in https://github.com//pull/1544 * Remove reciever wordings from global ffi error type by @arminsabouri in https://github.com//pull/1570 * Add C# SDK to nix dev shell by @chavic in https://github.com//pull/1559 * Enforce single-owner contract on InMemoryPersister by @DanGould in https://github.com//pull/1534 * Sender Pending Fallback state by @arminsabouri in https://github.com//pull/1557 * Fix LSP types, lints in Python and Typescript tests by @xstoicunicornx in https://github.com//pull/1571 * Nixify Javascript FFi tests by @benalleng in https://github.com//pull/1572 * chore: update flake.lock by @spacebear21 in https://github.com//pull/1578 * Bump idna from 3.10 to 3.15 in /payjoin-ffi/python by @dependabot[bot] in https://github.com//pull/1580 * Light refactor to v2 receiver for readability by @xstoicunicornx in https://github.com//pull/1585 * fix(cli): v1 config rejecting endpoints without explicit port by @va-an in https://github.com//pull/1576 * Add tests for OriginalPayload and PsbtContext by @xstoicunicornx in https://github.com//pull/1583 * Nixify ffi CI by @benalleng in https://github.com//pull/1574 * chore: add lcov.info to root .gitignore by @mwihoti in https://github.com//pull/1589 * FFI dev shell follow-ups by @chavic in https://github.com//pull/1587 * docs(cli): update relay url by @va-an in https://github.com//pull/1590 * FFI: Refactor Javascript integration test by @xstoicunicornx in https://github.com//pull/1584 * chore: update flake.lock by @spacebear21 in https://github.com//pull/1594 * Fix resume succeding prematurely by @zealsham in https://github.com//pull/1573 * payjoin-cli WalletCreateFundedPSBTOptions accept Option by @benalleng in https://github.com//pull/1595 * Not --all-features test suite by @benalleng in https://github.com//pull/1038 * Rename EncapsulationError to DecapsulationError by @DanGould in https://github.com//pull/1601 * Test utils feature unification by @benalleng in https://github.com//pull/1599 * Document BIP77 v1 fallback behavior in create_post_request by @DanGould in https://github.com//pull/1593 * Receiver fallback typestate by @spacebear21 in https://github.com//pull/1558 * Update cargo-mutants to 27.1.0 by @benalleng in https://github.com//pull/1596 * Merge Cancel and Failure variants by @benalleng in https://github.com//pull/1607 * Stabilize 1.0 errors by carving out errors used in state machine control flow & keeping the rest opaque by @DanGould in https://github.com//pull/1602 * Mailroom EMFILE resilience by @DanGould in https://github.com//pull/1608Checklist
Release numbering must follow Semantic Versioning. These steps assume the current
masterbranch development version is MAJOR.MINOR.0.
On the day of the feature freeze
Change the
masterbranch to the next MINOR+1 version:masterbranch.bump-CRATE-MAJOR-MINOR+1, eg.bump-CRATE-0-22.bump-CRATE-MAJOR-MINOR+1branch to the next development MINOR+1 version.Cargo.tomlversion value toMAJOR.MINOR+1.0for all crates in the workspace.contrib/update-lock-files.shto apply upgrades to the Cargo lock files.CHANGELOG.mdfile.bump-CRATE-MAJOR-MINOR+1branch tomaster.bump-CRATE-MAJOR-MINOR+1branch tomaster.If any issues need to be fixed before the MAJOR.MINOR+1.0 version is released:
masterbranch.bump-CRATE-MAJOR.MINOR+1branch.bump-CRATE-MAJOR.MINOR+1branch.On the day of the release
Tag and publish new release:
HEADcommit in themasterbranch.CRATE-MAJOR.MINOR+1.0--signflag.payjoin/rust-payjoinrepo.Release CRATE-MAJOR.MINOR+1.0.1.0.0release check the "Pre-release" box.