Skip to content

Bump bindings - #1977

Merged
spacebear21 merged 4 commits into
payjoin:masterfrom
spacebear21:bump-bindings
Oct 15, 2026
Merged

spacebear21 merged 4 commits into
payjoin:masterfrom
spacebear21:bump-bindings

Conversation

@spacebear21

Copy link
Copy Markdown
Collaborator

Addresses follow-up items in #1766 (comment)

Note that I ended up removing the +payjoin-x.y.z suffix here anyway since it simplifies parsing for the various scripts and is not very useful as I explain in my reply from that thread.

Pull Request Checklist

Please confirm the following before requesting review:

The binding packages carried the wrapped payjoin release as build
metadata, `0.25.0+payjoin-1.2.0`, in pubspec.yaml, Payjoin.csproj and
package.json's releaseTag, and the release tag repeated it. PyPI and
npm cannot carry that metadata, NuGet drops it, and the three manifests
that hold it go stale whenever the payjoin crate is bumped on its own.
Nothing has been tagged or published at 0.25.0, so dropping it costs
nothing.

Every package now carries the bare payjoin-ffi version and the tag is
payjoin-ffi-<version>. The wrapped payjoin release is recorded in the
changelog entry instead, and bindings-version.sh keeps checking that
payjoin-ffi's requirement on payjoin equals the payjoin manifest
version. The release workflow reads the core version from that manifest
rather than from the tag. The release checklist item that asked for a
binding metadata bump inside a payjoin bump PR goes too; the bindings
bump is its own PR after the payjoin release, as the checklist already
says further down.
payjoin-ffi/CHANGELOG.md is the release notes for the Python,
JavaScript, C# and Dart packages, but the changelog check only loops
over the release crates, so pull requests that change payjoin-ffi/src
can land without a line. The typed InputPair constructors from payjoin#1959
did exactly that: they ship in 0.25.0, whose entry says the packages
jump with no API changes.

Adopt the crates' convention: an "## Unreleased" section at the top
that each pull request writes to and the bump only renames. Record the
constructors under 0.25.0, where they ship, and correct the "no API
changes" wording there and in the language changelogs. Extend the
changelog check and the contributing guide to payjoin-ffi.
A bindings release is prepared by hand: five manifests, uv.lock,
package-lock.json, both Cargo lock files and four changelogs, which is
the gap flagged on payjoin#1766. bump.sh already does the Cargo side for the
release crates and tag.sh already dispatches on payjoin-ffi, so accept
payjoin-ffi here too.

The shared path is unchanged for the crates. For payjoin-ffi the
version must be MAJOR.MINOR.PATCH with an optional -rc.N, the rule
bindings-version.sh enforces, and bump_bindings sets the Python,
JavaScript, Dart and C# manifests and the uv and npm lock files by
editing the version lines in place, so nothing else in the lock files
moves. The payjoin-ffi changelog entry opens by naming the wrapped
payjoin release, which the manifests no longer carry, and each language
changelog opens its new section with a stock entry linking to
payjoin-ffi/CHANGELOG.md by absolute URL, since pub.dev renders Dart's
changelog and cannot resolve a relative link. The changelog rename
keeps the file's heading style, bracketed for the bindings and bare for
the crates, which check-invariants and extract-changelog already
accept.
The release workflow's pull request job runs check-bump.sh only when a
release crate's Cargo.toml changes, so a payjoin-ffi bump prepared with
bump.sh gets no check before merge and an inconsistent binding version
is first caught by the tag push.

Trigger the job on payjoin-ffi/Cargo.toml too, and have check-bump.sh
compare payjoin-ffi's version against the base as it does for the
crates. A changed payjoin-ffi runs check-invariants and
bindings-version only: it is not published to crates.io, so the publish
dry run and semver check do not apply.
@spacebear21
spacebear21 requested a review from benalleng October 15, 2026 17:50
@coveralls

Copy link
Copy Markdown
Collaborator

Coverage Report for CI Build 38780704507

Coverage remained the same at 87.475%

Details

  • Coverage remained the same as the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • No coverage regressions found.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

No coverage regressions found.


Coverage Stats

Coverage Status
Relevant Lines: 17860
Covered Lines: 15623
Line Coverage: 87.47%
Coverage Strength: 319.52 hits per line

💛 - Coveralls

@spacebear21
spacebear21 marked this pull request as ready for review October 15, 2026 18:56
@spacebear21 spacebear21 linked an issue Oct 15, 2026 that may be closed by this pull request
3 of 5 tasks

@benalleng benalleng left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

uTACK d813f85

@spacebear21
spacebear21 merged commit 13f9f82 into payjoin:master Oct 15, 2026
62 of 63 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Automate Package Publishing for All Release Artifacts

3 participants