Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 0.21.0 #390

Closed
12 of 17 tasks
DanGould opened this issue Nov 17, 2024 · 1 comment
Closed
12 of 17 tasks

Release 0.21.0 #390

DanGould opened this issue Nov 17, 2024 · 1 comment
Assignees

Comments

@DanGould
Copy link
Contributor

DanGould commented Nov 17, 2024

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 🎉
@spacebear21
Copy link
Collaborator

Edited the original comment with changelog entries.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

No branches or pull requests

2 participants