Skip to content

Release 1.0.0-rc.6 #1759

Description

@DanGould

Summary

Insulate the bitcoin_uri crate from payjoin's public API so that a breaking release of bitcoin_uri no longer forces a breaking release of payjoin. Uri and PjUri become owned newtypes read through accessor methods, parsing returns payjoin's own UriParseError, and UriExt is replaced by inherent methods. This release also seals the persisted SessionOutcome ahead of the 1.0 database-compatibility freeze and exposes proposal transaction ID stability on receiver states.

Commit

master HEAD after #1756 and the bump merge #1758. Prepared components: bump commit c52cec0 (branch bump-payjoin-1-0-rc-6) fully-verified combined state (master + #1756 + bump) was 69e5dad4.

Changelog

API Changes

  • Insulate bitcoin_uri from the public API: Uri and PjUri become owned newtypes with accessor methods (address(), amount(), set_amount(), label(), message(), extras()), parsing returns the payjoin-owned UriParseError, and the UriExt trait is removed in favor of inherent check_pj_supported, assume_checked, and require_network methods (Insulate bitcoin uri #1756)
  • Seal the persisted SessionOutcome as #[non_exhaustive] and drop its unused witness payload ahead of the 1.0 database-compatibility freeze (Pre-1.0 Doorkeeper for SessionOutcome in #1747)
  • Expose proposal_txid_is_stable() on the receiver states that hold the fallback transaction, mirrored in payjoin-ffi (Expose proposal txid stability on receiver states #1718)

Bug Fixes

Checklist

Release numbering must follow Semantic Versioning. This is a pre-1.0 prerelease increment (1.0.0-rc.5 → 1.0.0-rc.6), so CRATE = payjoin and the target version is 1.0.0-rc.6 throughout (not a MINOR+1 bump).

On the day of the feature freeze

Change the master branch to the next 1.0.0-rc.6 version:

  • Switch to the master branch.
  • Create a new PR branch called bump-payjoin-1-0-rc-6.
  • Bump the bump-payjoin-1-0-rc-6 branch to 1.0.0-rc.6.
    • Change the Cargo.toml version value to 1.0.0-rc.6 for payjoin and the payjoin = { version = … } dep requirement in payjoin-cli / payjoin-ffi / payjoin-mailroom /
      payjoin-test-utils.
    • Cargo lock files updated (Cargo-minimal.lock, Cargo-recent.lock — payjoin version line only; no dependency drift, matching the rc.5 precedent). Both pass cargo check
      --locked --all-features. (Ran the surgical edit rather than contrib/updacargo +nightly rustup syntax unavailable in the nix devShell.)
    • Update the CHANGELOG.md file.
    • Commit message: "Bump payjoin to version 1.0.0-rc.6".
  • Create PR for bump-payjoin-1-0-rc-6 → master, titled "Bump payjoin to version 1.0.0-rc.6". Must merge after Insulate bitcoin uri #1756 (changelog references it). (Agent can't push — see
    handoff commands below.)
  • Merge the bump-payjoin-1-0-rc-6 branch to master.

Fixes needed before release — the prerequisite feature PR:

  • Merge Insulate bitcoin uri #1756 ("Insulate bitcoin_uri from the public API") to master. Reviewed and verified ready (fmt, full lint.sh, 242 lib + 7 uri_api tests, -D warnings docs, insulation confirmed by public doc build, per-commit build hygiene; all t the GitHub approval — needs your approve + merge.
    On the day of the release
    - [ ] Check that the crate is publishable with cargo publish --dry-run ffeatures --locked, packages payjoin v1.0.0-rc.6).
  • Add a signed tag to HEAD on master: - Tag name payjoin-1.0.0-rc.6; first line "Release payjoin-1.0.0-rc.6"
    • Body = Summary + Changelog above (saved: scratchpad/tag-payjoin-1.0.0-rc.6.txt; git tag --sign payjoin-1.0.0-rc.6 -F tag-payjoin-1.0.0-rc.6.txt). - [ ] Wait for the CI to finish one last time.
  • Build the docs locally — RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --all-features --document-private-items -p payjoin passes. (Re-run on final master HEAD before tagging.)
  • Push the new tag to payjoin/rust-payjoin.
  • Publish payjoin to crates.io (cargo publish from payjoin/).
  • Create the release on GitHub (title Release payjoin-1.0.0-rc.6, Summary + Changelog, auto-generate notes, check "Pre-release").
  • Confirm it shows on [crates.io] and docs build on [docs.rs].
  • Announce the Summary on Discord, Twitter, Nostr, and stacker.news.
  • Celebrate 🎉

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions