Skip to content

Bump dart payjoin 0.2.1 for pub.dev - #1800

Merged
spacebear21 merged 2 commits into
payjoin:masterfrom
spacebear21:dart-0.2.1-rc.8
Aug 6, 2026
Merged

Bump dart payjoin 0.2.1 for pub.dev#1800
spacebear21 merged 2 commits into
payjoin:masterfrom
spacebear21:dart-0.2.1-rc.8

Conversation

@spacebear21

Copy link
Copy Markdown
Collaborator

Bumps the Dart bindings to 0.2.1+payjoin-1.0.0-rc.8 and pins the payjoin-ffi wrapper dependency to e4f5a0b3, the payjoin-1.0.0-rc.8 tag commit.

The FFI surface is unchanged since rc.7 — git diff payjoin-1.0.0-rc.7..payjoin-1.0.0-rc.8 -- payjoin-ffi/src is empty, only the payjoin dependency line in payjoin-ffi/Cargo.toml moved — so a patch bump covers it. What reaches consumers is rc.8's tightened sender validation: an input must declare a sighash type that commits to all inputs and outputs, so only ECDSA SIGHASH_ALL, taproot SIGHASHDEFAULT/SIGHASH_ALL, and an unset type are accepted.

Versioning convention

Adopts the pub.dev build-metadata convention that bark_bitcoin uses: <package version>+payjoin-<crate version>. The semantic version before the + stays what consumers write constraints against, while the metadata after it names the wrapped payjoin release directly on the pub.dev listing instead of requiring a changelog lookup. dart pub publish --dry-run accepts the string.

Release documentation

The Dart package carried no publishing instructions, though payjoin-ffi/README.md claims each language directory has them, so CONTRIBUTING.md gains a Releasing section covering the versioning convention and the publish steps.

It documents two archive-content traps, both stemming from .pubignore replacing .gitignore at publish time rather than adding to it:

  • lib/payjoin.dart is gitignored but must be present and current, since it is the binding surface consumers import.
  • native/Cargo.lock is gitignored but absent from .pubignore, so a local build leaves one behind that would ship a lockfile resolved against the .cargo/config.toml path overlay. 0.2.0 happened not to ship one; a dry run from a built tree does include it.

Known limitation, not addressed here

scripts/generate_bindings.sh always builds with _test-utils, so the bindings it emits declare test-only APIs such as TestServices and BitcoindEnv while consumers build the native library without that feature, leaving those declarations backed by symbols absent at runtime. Unpacking the published 0.2.0 archive confirms it already ships them; @Native resolves lazily, so this is latent rather than breaking. Recorded as a known limitation in CONTRIBUTING.md. Giving the script a production mode, as payjoin-ffi/csharp does with PAYJOIN_FFI_FEATURES, is left for a follow-up, along with adding native/Cargo.lock to .pubignore.

Disclosure: co-authored by Claude Code

The Dart package carried no publishing instructions, though the
payjoin-ffi README claims each language directory has them. Record the
steps a maintainer follows: pin the wrapper revision, set the version
and changelog, test, and inspect the archive before publishing.

Adopt `<package version>+payjoin-<crate version>` for the package
version, matching the convention bark_bitcoin uses on pub.dev. The
package's own semantic version stays what consumers write constraints
against, while the build metadata names the wrapped payjoin release on
the pub.dev listing.

Note that generate_bindings.sh emits _test-utils bindings, which
published releases carry into consumer builds that lack the feature.
Resolving that needs a production mode on the script, so record it as a
known limitation rather than fold it into this change.
Bump the dart bindings to 0.2.1+payjoin-1.0.0-rc.8 to publish updated
bindings for payjoin 1.0.0-rc.8, pin the payjoin-ffi wrapper dependency
to e4f5a0b, the payjoin-1.0.0-rc.8 tag commit, and record the release
in the changelog.

The FFI surface is unchanged since rc.7, so a patch bump covers it. What
reaches consumers is rc.8's tightened sender validation: an input must
declare a sighash type that commits to all inputs and outputs, so only
ECDSA SIGHASH_ALL, taproot SIGHASHDEFAULT/SIGHASH_ALL, and an unset type
are accepted.

@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.

TACK 089cdca

also tested in latest cake-wallet PR from the published pub.dev dart package to ensure compilation upstream

@spacebear21
spacebear21 merged commit ef89f4c into payjoin:master Aug 6, 2026
48 of 51 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.

2 participants