Repository navigation
Release payjoin-cli-1.0.0-rc.0 #1738
Copy link
Copy link
Closed
Milestone
Description
Create a new minor release
Summary
New Commands
- cancel — cancel active or inactive sessions for senders and receivers
- history — browse past session state
Major Under-the-Hood Changes - Migrated from sled to SQLite (rusqlite) for session persistence — more reliable, no corruption risk
- Replaced custom RPC client with bitcoind-async-client — cleaner, better tested, mainnet/testnet support out of the box
- Switched from log to tracing — structured, filterable diagnostics
Robustness
- State-machine-driven session loops with clear transient vs. fatal error handling
- Expiry checked mid-loop, not just on startup; sessions auto-cancel on expiry
- Exclusive database lock prevents concurrent send races
- Per-request relay selection with randomized relay per session
- Config file discovered in XDG standard locations
UX Improvements
- Session output prefixed with role and session ID
- resume --session-id to target a single session
- Fallback availability displayed on abort
- Consistent print formatting throughout
- Time-based UUID v7 for session IDs
Supported Bitcoin Core: 29.0+
Commit
Changelog
- Remove redundant clones by @shinghim in #845
- Use tempfile for temporary e2e test directories by @spacebear21 in #868
- Migrate payjoin-cli from sled to rusqlite by @Mshehu5 in #873
- Add default directory to payjoin-cli by @zealsham in #874
- e2e test concurrency fixes by @nothingmuch in #913
- Replace bitcoincore-rpc with custom reqwest client by @bc1cindy in #945
- Update msrv deps by @benalleng in #959
- Fix RPC error message regression in reqwest client by @bc1cindy in #971
- Replace String clones with references in CLI RPC methods by @bc1cindy in #977
- Add receiver pk to session metadata by @arminsabouri in #995
- Simplify session id pj cli by @arminsabouri in #999
- FFI: tighten error conversions by @chavic in #1029
- Remove optional return types from session history methods by @0xZaddyy in #1055
- Replace custom RPC client with bitcoind-async-client by @arminsabouri in #1063
- Check for spendable UTXOs before payjoin operations by @0xZaddyy in #1071
- Remove redundant try_for_each in history method by @arminsabouri in #1139
- Nixos stable 25.11 by @benalleng in #1210
- Skip check_payment in Receiver for non-segwit addresses by @mehmetefeumit in #1218
- Guard concurrent sends with exclusive DB lock and URI/RK checks by @Mshehu5 in #1376
- Document OHTTP relay random selection guidance by @bc1cindy in #1380
- Ensure random relay selection with fixed ohttp-keys config by @benalleng in #1390
- Use official bitcoind-async-client release with mainnet and testnet support by @benalleng in #1441
- Only set max_fee_rate when configured in v2 by @codaMW in #1490
- Fix send success log error and order by @Arowolokehinde in #1498
- Fix mailroom reject post requests over capacity by @va-an in #1509
- Fix resume succeeding prematurely by @zealsham in #1573
- Stabilize 1.0 errors by carving out errors used in state machine control flow by @DanGould in #1602
- Improve error when config file is missing by @benalleng in #1632
- Rename Monitor method by @spacebear21 in #1661
- Fix spelling mistakes by @chavic in #1665
- Add directory fallback behavior by @benalleng in #1695
- Cli cancel UX by @benalleng in #1700
- Look up RK instead of looping by @benalleng in #1706
- Cleanup readmes for 1.0 by @benalleng in #1727
- Consume self in Monitor check_for_transaction by @xstoicunicornx in #1729
- Cli Refactor by @xstoicunicornx in #1737
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:
- 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:
- Check that the crate is publishable with
cargo publish --dry-runfrom that crate's directory. - 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 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 🎉
Reacted by spacebear and xstoicunicornx
Metadata
Metadata
Assignees
Labels
No labels
Activity