Repository navigation
Bump bindings - #1977
Merged
Merged
Bump bindings#1977
Conversation
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.
Collaborator
Coverage Report for CI Build 38780704507Coverage remained the same at 87.475%Details
Uncovered ChangesNo uncovered changes found. Coverage RegressionsNo coverage regressions found. Coverage Stats
💛 - Coveralls |
spacebear21
marked this pull request as ready for review
October 15, 2026 18:56
3 of 5 tasks
benalleng
approved these changes
Oct 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Addresses follow-up items in #1766 (comment)
Note that I ended up removing the
+payjoin-x.y.zsuffix 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: