Repository navigation
Release payjoin-1.0.0-rc.3 #1613
Description
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
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 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:
- Switch to the
masterbranch. - Create a new PR branch called
bump-CRATE-MAJOR-MINOR+1, eg.bump-CRATE-0-22. - Bump the
bump-CRATE-MAJOR-MINOR+1branch to the next development MINOR+1 version.- Change the
Cargo.tomlversion value toMAJOR.MINOR+1.0for all crates in the workspace. - Run
contrib/update-lock-files.shto apply upgrades to the Cargo lock files. - Update the
CHANGELOG.mdfile. - The commit message should be "Bump CRATE version to MAJOR.MINOR+1.0".
- Change the
- Create PR for the
bump-CRATE-MAJOR-MINOR+1branch tomaster.- Title PR "Bump CRATE version to MAJOR.MINOR+1.0".
- Merge the
bump-CRATE-MAJOR-MINOR+1branch tomaster.
If any issues need to be fixed before the MAJOR.MINOR+1.0 version is released:
- Merge fix PRs to the
masterbranch. - Git cherry-pick fix commits to the
bump-CRATE-MAJOR.MINOR+1branch. - Verify fixes in
bump-CRATE-MAJOR.MINOR+1branch.
On the day of the release
Tag and publish new release:
- Add a tag to the
HEADcommit in themasterbranch.- The tag name should be
CRATE-MAJOR.MINOR+1.0 - The first line of the tag message should be "Release CRATE-MAJOR.MINOR+1.0".
- In the body of the tag message put a copy of the Summary and Changelog for the release.
- Make sure the tag is signed, for extra safety use the explicit
--signflag.
- The tag name should be
- Wait for the CI to finish one last time.
- Build the docs locally to ensure they are building correctly.
- Push the new tag to the
payjoin/rust-payjoinrepo. - Publish the crate in question crates to crates.io.
- Create the release on GitHub.
- Go to "tags", click on the dots on the right and select "Create Release".
- Set the title to
Release CRATE-MAJOR.MINOR+1.0. - In the release notes body put the Summary and Changelog.
- Use the "+ Auto-generate release notes" button to add details from included PRs.
- Until we reach a
1.0.0release check the "Pre-release" box.
- Make sure the new release shows up on [crates.io] and that the docs are built correctly on [docs.rs].
- Announce the release, using the Summary, on Discord, Twitter, Nostr, and stacker.news.
- Celebrate 🎉
Activity
DanGould commentedon Jun 7, 2026
#1611
benalleng commentedon Jun 7, 2026
ready for publishing, I have a draft release waiting
DanGould commentedon Jun 8, 2026
Are you not able to
cargo publish --dry-runwithout crates.io publishing credentials?DanGould commentedon Jun 8, 2026
With Cargo's constraints (dev-dependencies can't be optional or feature-gated, and a published crate can't reference a dev-dependency's feature), you can only pick two of three:
payjoinis publishableThe only real way to isolate is by making test-utils-v2 a separate crate which, if we're gonna release now, should be done on its own issue as a follow-up
DanGould commentedon Jun 8, 2026
My proposal to publish:
git tag -s -f payjoin-1.0.0-rc.3 <post-fix-master-commit> # reuse the rc.3 message/changeloggit push --force upstream payjoin-1.0.0-rc.3DanGould commentedon Jun 8, 2026
Ah, the tag was missing some vital components
benalleng commentedon Jun 8, 2026
Ahh ok I misunderstand how to set it up, I guess that's what I get for trying to do it solo lol
DanGould commentedon Jun 8, 2026
solid first attempt that made it real easy to pick up on. I just pushed a new tag with the Summary and Changelog. I think this is it before cargo publish now. Do you want to try a
cargo publish --dry-run? Maybe checklist should be explicit that that's what we need as first step of "On the day of release..."benalleng commentedon Jun 8, 2026
cargo publish --dry-runsucceeded for me on 5f7476b 👍at least within the
payjoincrateDanGould commentedon Jun 8, 2026
yes within the
payjoincrate is all that matters for now. I'm going to publish and leave the GitHub release and closeout of this issue to youDanGould commentedon Jun 8, 2026
Another thing, I notice the original tag was on the commit before the merge commit (5e61899). I prefer tagging the most recent merge commit because that includes reference to the PR enacting it.
benalleng commentedon Jun 8, 2026
https://github.com/payjoin/rust-payjoin/releases/tag/payjoin-1.0.0-rc.3