Skip to content

Bump python, javascript, and C# bindings for payjoin-1.0.0 - #1831

Draft
spacebear21 wants to merge 3 commits into
payjoin:masterfrom
spacebear21:bump-bindings-payjoin-1.0.0
Draft

Bump python, javascript, and C# bindings for payjoin-1.0.0#1831
spacebear21 wants to merge 3 commits into
payjoin:masterfrom
spacebear21:bump-bindings-payjoin-1.0.0

Conversation

@spacebear21

@spacebear21 spacebear21 commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Prepare the remaining binding releases wrapping payjoin-1.0.0 (dart already shipped as 0.2.2+payjoin-1.0.0), one commit per package. The payjoin-ffi crate version is untouched; each language now keeps its own semver following the bark-ffi-bindings convention of {version}+payjoin-{version} build metadata, applied where the registry supports it:

  • Python → 0.2.0: the version now lives in pyproject.toml instead of being derived from the crate version by setup.py (which drops the toml build/dev dependencies). PyPI rejects PEP 440 local version labels, so the package publishes the bare version and the wrapped payjoin core release is recorded in the changelog. 0.2.0 succeeds 0.1.0.dev0, the only version previously on PyPI, as a minor bump since the API is not backwards compatible with it. Release tag: payjoin-python-0.2.0.
  • JavaScript → 0.2.0: last npm publish was 0.1.1 and the API has changed incompatibly since. npm strips build metadata, so package.json carries the bare version plus a releaseTag field recording 0.2.0+payjoin-1.0.0, mirroring bark's npm workaround. Also drops the EXPERIMENTAL disclaimer, matching the dart release. Release tag: payjoin-javascript-0.2.0.
  • C# → 0.1.0+payjoin-1.0.0: resets from 0.24.0-preview.1, whose number tracked the previously wrapped payjoin core version and would read as confusing under the new scheme; the -preview.N suffix is dropped since 0.x already conveys a pre-stable API. NuGet keeps the metadata in the nuspec but strips it from the .nupkg filename and version comparisons (verified with a local dotnet pack), so the release tag is payjoin-csharp-0.1.0, matching what the publish job derives from the artifact. Requires unlisting 0.24.0-preview.1 and 0.0.1 on nuget.org so floating installs resolve the new line.

Each RELEASING.md's versioning section is updated to codify the convention for its language.

Closes the release item in #1816 once tagged and published.

Disclosure: co-authored by Claude Fable 5

Pull Request Checklist

Please confirm the following before requesting review:

https://claude.ai/code/session_019BcdiyBCQQChuJ3dy7QJwm

@coveralls

coveralls commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Coverage Report for CI Build 32520894272

Coverage remained the same at 86.718%

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: 16458
Covered Lines: 14272
Line Coverage: 86.72%
Coverage Strength: 343.74 hits per line

💛 - Coveralls

@spacebear21
spacebear21 marked this pull request as draft August 21, 2026 19:25
Give the package its own semantic version instead of deriving it from
the payjoin-ffi crate, following the per-language versioning
convention: each package keeps independent semver with the wrapped
payjoin core version as build metadata where the registry supports
it. PyPI rejects PEP 440 local version labels (the + part), so the
package publishes the bare version and records that 0.2.0 wraps
payjoin-1.0.0, the first stable payjoin release, in the changelog.

0.2.0 succeeds 0.1.0.dev0, the only version previously published to
PyPI, and is a minor bump because the API is not backwards compatible
with it. The version now lives in pyproject.toml; setup.py no longer
reads Cargo.toml, which drops the toml build and dev dependencies.
Bump the package from 0.1.1, the last version published to npm, to
0.2.0 for the release wrapping payjoin-1.0.0. The API has changed
incompatibly since 0.1.1 (session persister rework, typestate and
error overhauls, web environment support), so this is a 0.x minor
bump.

The language bindings follow a {version}+payjoin-{version} convention
where the build metadata names the wrapped payjoin core release, but
npm strips build metadata from published versions, so package.json
carries the bare version and records the full 0.2.0+payjoin-1.0.0 in
a releaseTag field for traceability. Drop the EXPERIMENTAL disclaimer
from the description now that the wrapped library is stable, matching
the dart release.
Give the package its own semantic version instead of tracking the
payjoin-ffi crate version, following the per-language convention
where SemVer build metadata names the wrapped payjoin core release:
0.1.0+payjoin-1.0.0 packages payjoin 1.0.0, the first stable payjoin
release. Drop the -preview.N suffix since 0.x already conveys a
pre-stable API.

Resetting below the published 0.24.0-preview.1 avoids continuing a
number that named the previously wrapped payjoin core version, which
would read as confusing under the new scheme. The old versions must
be unlisted on nuget.org so floating installs resolve the new line.

NuGet keeps build metadata in the nuspec but strips it from the
.nupkg filename and ignores it for version comparison, so the release
tag stays payjoin-csharp-0.1.0, matching what the publish job derives
from the packed artifact.
@spacebear21
spacebear21 force-pushed the bump-bindings-payjoin-1.0.0 branch from 3d4cb41 to 31390b0 Compare August 21, 2026 19:54
@DanGould

Copy link
Copy Markdown
Member

How comfortable are you dropping experimental tag on bound targets before payjoin-ffi 1.0? Is that ~production quality in your view then?

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.

3 participants