Skip to content

Release 0.21.0 #390

@DanGould

Description

@DanGould

We should be able to release as soon as #386 and #373 are in.

the latter may require we release a new crate. @spacebear21 If you're willing to take this on, you should be able to edit this issue text directly. Let me know if you cannot.

Create a new minor release

Summary

This release enables transaction cut-through by allowing the receiver to add an arbitrary number of inputs and outputs, and allowing mixed input script types in Payjoin V2. Additionally, there are several changes to the payjoin directory API and the HPKE in an attempt to stabilize the V2 protocol. This release contains many breaking changes as a result.

Commit

0aef52e

Changelog

  • Upgrade rustls v0.22.4
  • Depend on bitcoin-ohttp
  • Allow receiver to contribute multiple inputs and outputs
  • Remove contribute_witness_inputs and contribute_non_witness_inputs in favor of a single consolidated contribute_inputs function
  • Make InputPair public to facilitate working with inputs in coin selection and input contributions
  • Enable receiver fee contributions in apply_fee, which now requires a max_feerate parameter
  • Fix weight estimations for nested segwit inputs
  • Fix mixed input scripts receiver check in Payjoin V1 to only error if the receiver would introduce mixed types
  • Allow mixed input scripts in Payjoin V2
  • Implement client end-to-end encryption using HPKE using bitcoin-hpke
  • Make session initialization implicit
  • Make payloads uniform by removing sender auth key
  • Shorten subdirectory IDs to 64 pseudorandom bits #386
  • Clarify send and receive module documentation #407
  • Pad ohttp messages to consistent 8192 bytes #395
  • encode subdirectory IDs in bech32 and other QR optimizations #417
  • Upgrade to bitcoin v0.32.5
  • Work around '#' escaping bug in bip21 crate #373
  • Hide _danger-local-https feature behind _ prefix so it doesn't show up in docs #423

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 master branch.
  • Create a new PR branch called bump-CRATE-MAJOR-MINOR+1, eg. bump-CRATE-0-22.
  • Bump the bump-CRATE-MAJOR-MINOR+1 branch to the next development MINOR+1 version.
    • Change the Cargo.toml version value to MAJOR.MINOR+1.0.
    • Update the CHANGELOG.md file.
    • The commit message should be "Bump CRATE version to MAJOR.MINOR+1.0".
  • Create PR for the bump-CRATE-MAJOR-MINOR+1 branch to master.
    • Title PR "Bump CRATE version to MAJOR.MINOR+1.0".
  • Merge the bump-CRATE-MAJOR-MINOR+1 branch to master.

If any issues need to be fixed before the MAJOR.MINOR+1.0 version is released:

  • Merge fix PRs to the master branch.
  • Git cherry-pick fix commits to the bump-CRATE-MAJOR.MINOR+1 branch.
  • Verify fixes in bump-CRATE-MAJOR.MINOR+1 branch.

On the day of the release

Tag and publish new release:

  • Add a tag to the HEAD commit in the master branch.
    • 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 --sign flag.
  • 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-payjoin repo.
  • 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.0 release 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 🎉

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions