diff --git a/payjoin-ffi/csharp/Payjoin.csproj b/payjoin-ffi/csharp/Payjoin.csproj
index 5257adb08..66af6a92f 100644
--- a/payjoin-ffi/csharp/Payjoin.csproj
+++ b/payjoin-ffi/csharp/Payjoin.csproj
@@ -7,7 +7,7 @@
true
true
Payjoin
- 0.1.0+payjoin-1.0.0
+ 0.2.0+payjoin-1.2.0
Payjoin
Payjoin Dev Kit Contributors
C# bindings for payjoin-ffi, generated from rust-payjoin via UniFFI.
diff --git a/payjoin-ffi/csharp/README.md b/payjoin-ffi/csharp/README.md
index b6dce951a..c2d0cda57 100644
--- a/payjoin-ffi/csharp/README.md
+++ b/payjoin-ffi/csharp/README.md
@@ -38,7 +38,7 @@ Sessions persist each step to an event log through a persister you implement ove
## Stability
-The package is pre-1.0 while the C# API stabilizes; expect breaking changes between 0.x releases. The version's build metadata names the wrapped payjoin core release, so `0.1.0+payjoin-1.0.0` packages payjoin 1.0.0, the first stable payjoin release.
+The package is pre-1.0 while the C# API stabilizes; expect breaking changes between 0.x releases. The version's build metadata names the wrapped payjoin core release, so `0.2.0+payjoin-1.2.0` packages payjoin 1.2.0, the first stable payjoin release.
## Documentation and help
diff --git a/payjoin-ffi/csharp/RELEASING.md b/payjoin-ffi/csharp/RELEASING.md
index a5995ccaa..4d1880254 100644
--- a/payjoin-ffi/csharp/RELEASING.md
+++ b/payjoin-ffi/csharp/RELEASING.md
@@ -10,8 +10,8 @@ package readme.
- It is the package's own semantic version, independent of the
`payjoin-ffi` crate version. The language bindings follow a
`{version}+payjoin-{version}` convention: the [SemVer] build metadata
- names the wrapped payjoin core release, so `0.1.0+payjoin-1.0.0`
- packages payjoin 1.0.0. NuGet accepts build metadata per its
+ names the wrapped payjoin core release, so `0.2.0+payjoin-1.2.0`
+ packages payjoin 1.2.0. NuGet accepts build metadata per its
[package versioning] guidance but ignores it for version comparison
and strips it from the `.nupkg` filename, so the package identity is
the bare version.
@@ -125,8 +125,8 @@ is ever stored. The workflow is
`verify-tag` refuses to publish otherwise.
```shell
- git tag -s payjoin-csharp-0.1.0+payjoin-1.0.0 -m payjoin-csharp-0.1.0+payjoin-1.0.0
- git push upstream payjoin-csharp-0.1.0+payjoin-1.0.0
+ git tag -s payjoin-csharp-0.2.0+payjoin-1.2.0 -m payjoin-csharp-0.2.0+payjoin-1.2.0
+ git push upstream payjoin-csharp-0.2.0+payjoin-1.2.0
```
The tag reruns the full build/pack/smoke graph at the tagged commit, then
diff --git a/payjoin-ffi/dart/CHANGELOG.md b/payjoin-ffi/dart/CHANGELOG.md
index 7169ee472..6c209115a 100644
--- a/payjoin-ffi/dart/CHANGELOG.md
+++ b/payjoin-ffi/dart/CHANGELOG.md
@@ -1,3 +1,20 @@
+## [0.3.0+payjoin-1.2.0]
+
+- Bindings for payjoin-1.2.0, which adds the non-blocking receive
+ interface and its related methods alongside the existing
+ callback-based ones
+- Add FFI bindings for the non-blocking receive interface, including
+ session event replay, in favor of synchronous callbacks
+- Paying a BIP 78-only (v1) receiver from a v2 `SenderBuilder` now
+ returns an `UnsupportedPjVersion` error instead of panicking across
+ the FFI boundary
+- **Breaking:** builder errors are renamed to match the payjoin crate:
+ `SenderBuilderError` to `BuildSenderError` and
+ `ReceiverBuilderError` to `BuildReceiverError`
+- Replace the `url` crate with payjoin's native Url type, validating
+ URLs as a precondition to URI validation
+- Pin `yoke-derive` for pub.dev consumers to respect the MSRV
+
## [0.2.2+payjoin-1.0.0]
- Bindings for payjoin-1.0.0, the first stable payjoin release. No Dart
diff --git a/payjoin-ffi/dart/native/Cargo.toml b/payjoin-ffi/dart/native/Cargo.toml
index 4a18acbe9..ed7e6941f 100644
--- a/payjoin-ffi/dart/native/Cargo.toml
+++ b/payjoin-ffi/dart/native/Cargo.toml
@@ -18,7 +18,7 @@ name = "payjoin_ffi_wrapper"
crate-type = ["staticlib", "cdylib"]
[dependencies]
-payjoin-ffi = { git = "https://github.com/payjoin/rust-payjoin.git", rev = "60d0adbf4ee8e60090209d55e9864893a4acc30e", features = [
+payjoin-ffi = { git = "https://github.com/payjoin/rust-payjoin.git", rev = "f95a4bb72f61399fbf62e1e89a957e8f40bdf6c9", features = [
"dart",
] }
# Not used directly. yoke-derive 0.8.3 needs Rust 1.87 but declares no rust-version,
diff --git a/payjoin-ffi/dart/pubspec.yaml b/payjoin-ffi/dart/pubspec.yaml
index 1e748798f..e84b56a02 100644
--- a/payjoin-ffi/dart/pubspec.yaml
+++ b/payjoin-ffi/dart/pubspec.yaml
@@ -1,6 +1,6 @@
name: payjoin
description: Dart bindings for payjoin
-version: 0.2.2+payjoin-1.0.0
+version: 0.3.0+payjoin-1.2.0
homepage: https://github.com/payjoin/rust-payjoin
repository: https://github.com/payjoin/rust-payjoin
diff --git a/payjoin-ffi/javascript/CHANGELOG.md b/payjoin-ffi/javascript/CHANGELOG.md
new file mode 100644
index 000000000..9631fee1c
--- /dev/null
+++ b/payjoin-ffi/javascript/CHANGELOG.md
@@ -0,0 +1,16 @@
+## [0.3.0]
+
+- Bindings for payjoin-1.2.0, which adds the non-blocking receive
+ interface and its related methods alongside the existing
+ callback-based ones
+- Add FFI bindings for the non-blocking receive interface, including
+ session event replay, in favor of synchronous callbacks
+- Paying a BIP 78-only (v1) receiver from a v2 `SenderBuilder` now
+ returns an `UnsupportedPjVersion` error instead of panicking across
+ the FFI boundary
+- **Breaking:** builder errors are renamed to match the payjoin crate:
+ `SenderBuilderError` to `BuildSenderError` and
+ `ReceiverBuilderError` to `BuildReceiverError`
+- Replace the `url` crate with payjoin's native Url type, validating
+ URLs as a precondition to URI validation
+- Build bindings with a release build resolved against the lockfile
diff --git a/payjoin-ffi/javascript/RELEASING.md b/payjoin-ffi/javascript/RELEASING.md
index 84cb87491..716155047 100644
--- a/payjoin-ffi/javascript/RELEASING.md
+++ b/payjoin-ffi/javascript/RELEASING.md
@@ -40,8 +40,8 @@ TypeScript), which is platform-independent.
`verify-tag` refuses to publish otherwise.
```shell
- git tag -s payjoin-javascript-0.2.0+payjoin-1.0.0 -m payjoin-javascript-0.2.0+payjoin-1.0.0
- git push upstream payjoin-javascript-0.2.0+payjoin-1.0.0
+ git tag -s payjoin-javascript-0.3.0+payjoin-1.2.0 -m payjoin-javascript-0.3.0+payjoin-1.2.0
+ git push upstream payjoin-javascript-0.3.0+payjoin-1.2.0
```
The tag reruns the full build/pack/smoke graph at the tagged commit,
diff --git a/payjoin-ffi/javascript/package-lock.json b/payjoin-ffi/javascript/package-lock.json
index 7733b7940..77bf6f1c1 100644
--- a/payjoin-ffi/javascript/package-lock.json
+++ b/payjoin-ffi/javascript/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "payjoin",
- "version": "0.2.0",
+ "version": "0.3.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "payjoin",
- "version": "0.2.0",
+ "version": "0.3.0",
"dependencies": {
"@ubjs/core": "^0.31.0-3",
"uniffi-bindgen-react-native": "github:spacebear21/uniffi-bindgen-react-native#d10f04d83299"
diff --git a/payjoin-ffi/javascript/package.json b/payjoin-ffi/javascript/package.json
index c14930214..6f76422b6 100644
--- a/payjoin-ffi/javascript/package.json
+++ b/payjoin-ffi/javascript/package.json
@@ -1,7 +1,7 @@
{
"name": "payjoin",
- "version": "0.2.0",
- "releaseTag": "0.2.0+payjoin-1.0.0",
+ "version": "0.3.0",
+ "releaseTag": "0.3.0+payjoin-1.2.0",
"description": "JavaScript/WASM bindings for rust-payjoin (EXPERIMENTAL)",
"scripts": {
"ubrn:nodejs": "ubrn build web --release --and-generate --config ubrn.nodejs.config.yaml",
diff --git a/payjoin-ffi/python/CHANGELOG.md b/payjoin-ffi/python/CHANGELOG.md
index a78b0d5c8..d14b0b563 100644
--- a/payjoin-ffi/python/CHANGELOG.md
+++ b/payjoin-ffi/python/CHANGELOG.md
@@ -1,3 +1,20 @@
+## [0.3.0]
+
+- Bindings for payjoin-1.2.0, which adds the non-blocking receive
+ interface and its related methods alongside the existing
+ callback-based ones
+- Add FFI bindings for the non-blocking receive interface, including
+ session event replay, in favor of synchronous callbacks
+- Paying a BIP 78-only (v1) receiver from a v2 `SenderBuilder` now
+ returns an `UnsupportedPjVersion` error instead of panicking across
+ the FFI boundary
+- **Breaking:** builder errors are renamed to match the payjoin crate:
+ `SenderBuilderError` to `BuildSenderError` and
+ `ReceiverBuilderError` to `BuildReceiverError`
+- Replace the `url` crate with payjoin's native Url type, validating
+ URLs as a precondition to URI validation
+- Update anyio to 4.15.1
+
## [0.2.0]
- Bindings for payjoin-1.0.0, the first stable payjoin release
diff --git a/payjoin-ffi/python/RELEASING.md b/payjoin-ffi/python/RELEASING.md
index 6c56ca1da..ef85bbc78 100644
--- a/payjoin-ffi/python/RELEASING.md
+++ b/payjoin-ffi/python/RELEASING.md
@@ -52,8 +52,8 @@ CPython satisfying `requires-python` can install them.
`verify-tag` refuses to publish otherwise.
```shell
- git tag -s payjoin-python-0.2.0+payjoin-1.0.0 -m payjoin-python-0.2.0+payjoin-1.0.0
- git push upstream payjoin-python-0.2.0+payjoin-1.0.0
+ git tag -s payjoin-python-0.3.0+payjoin-1.2.0 -m payjoin-python-0.3.0+payjoin-1.2.0
+ git push upstream payjoin-python-0.3.0+payjoin-1.2.0
```
The tag reruns the full build/wheel/smoke graph at the tagged commit,
diff --git a/payjoin-ffi/python/pyproject.toml b/payjoin-ffi/python/pyproject.toml
index aad065392..33d8f00bc 100644
--- a/payjoin-ffi/python/pyproject.toml
+++ b/payjoin-ffi/python/pyproject.toml
@@ -8,7 +8,7 @@ description = "The Python language bindings for the Payjoin Dev Kit"
readme = "README.md"
requires-python = ">=3.10"
license = "MIT"
-version = "0.2.0"
+version = "0.3.0"
dependencies = ["httpx>=0.28.1,<1.0"]
[tool.setuptools]
diff --git a/payjoin-ffi/python/uv.lock b/payjoin-ffi/python/uv.lock
index 83099208e..bbf696091 100644
--- a/payjoin-ffi/python/uv.lock
+++ b/payjoin-ffi/python/uv.lock
@@ -82,7 +82,7 @@ wheels = [
[[package]]
name = "payjoin"
-version = "0.2.0"
+version = "0.3.0"
source = { editable = "." }
dependencies = [
{ name = "httpx" },