From f86b6b1a5b07f036de8fbbb724e74ac282cf7d8d Mon Sep 17 00:00:00 2001 From: gakonst <17802178+gakonst@users.noreply.github.com> Date: Sat, 15 Aug 2026 17:20:53 +0000 Subject: [PATCH] chore: release `v0.12.0` --- .changelog/alloy-http-transport.md | 9 ---- .changelog/async-tempo-server-signers.md | 6 --- .../body-verification-retry-challenge.md | 5 --- .changelog/bump-tempo-769.md | 5 --- .changelog/calm-channels-top-up.md | 5 --- .changelog/calm-idempotency-prefix.md | 5 --- .changelog/calm-wallet-access-key.md | 6 --- .changelog/charge-retry-safety.md | 7 ---- .changelog/fix-tempo-fee-payer-envelope.md | 5 --- .changelog/gentle-websocket-authorization.md | 6 --- .changelog/invalid-challenge-expiration.md | 5 --- .changelog/lazy-bears-climb.md | 5 --- .changelog/machineusd-session-settlement.md | 6 --- .changelog/preserve-receipt-extensions.md | 5 --- .changelog/private-body-receipts.md | 6 --- .changelog/quiet-application-disconnect.md | 6 --- .changelog/rare-lakes-run.md | 5 --- .../reject-invalid-method-identifiers.md | 7 ---- .../reject-unterminated-quoted-string.md | 5 --- .changelog/resolve-key-authorization.md | 5 --- .changelog/session-autoswap.md | 6 --- .changelog/tempo-accounts-charge.md | 6 --- .changelog/tempo-relay-adapter.md | 5 --- .changelog/tempo-sponsor-validation.md | 5 --- .changelog/wallet-key-authorization.md | 5 --- CHANGELOG.md | 42 +++++++++++++++++++ Cargo.toml | 2 +- 27 files changed, 43 insertions(+), 142 deletions(-) delete mode 100644 .changelog/alloy-http-transport.md delete mode 100644 .changelog/async-tempo-server-signers.md delete mode 100644 .changelog/body-verification-retry-challenge.md delete mode 100644 .changelog/bump-tempo-769.md delete mode 100644 .changelog/calm-channels-top-up.md delete mode 100644 .changelog/calm-idempotency-prefix.md delete mode 100644 .changelog/calm-wallet-access-key.md delete mode 100644 .changelog/charge-retry-safety.md delete mode 100644 .changelog/fix-tempo-fee-payer-envelope.md delete mode 100644 .changelog/gentle-websocket-authorization.md delete mode 100644 .changelog/invalid-challenge-expiration.md delete mode 100644 .changelog/lazy-bears-climb.md delete mode 100644 .changelog/machineusd-session-settlement.md delete mode 100644 .changelog/preserve-receipt-extensions.md delete mode 100644 .changelog/private-body-receipts.md delete mode 100644 .changelog/quiet-application-disconnect.md delete mode 100644 .changelog/rare-lakes-run.md delete mode 100644 .changelog/reject-invalid-method-identifiers.md delete mode 100644 .changelog/reject-unterminated-quoted-string.md delete mode 100644 .changelog/resolve-key-authorization.md delete mode 100644 .changelog/session-autoswap.md delete mode 100644 .changelog/tempo-accounts-charge.md delete mode 100644 .changelog/tempo-relay-adapter.md delete mode 100644 .changelog/tempo-sponsor-validation.md delete mode 100644 .changelog/wallet-key-authorization.md diff --git a/.changelog/alloy-http-transport.md b/.changelog/alloy-http-transport.md deleted file mode 100644 index 69bf9d9d..00000000 --- a/.changelog/alloy-http-transport.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"alloy-transport-mpp": minor ---- - -Add an Alloy HTTP JSON-RPC transport that delegates automatic 402 challenge, -payment retry, and commit/rollback handling to the canonical MPP client flow, -with an optional concurrency bound for high-fanout consumers. Preserve -whitelisted HTTP diagnostics on unsuccessful JSON-RPC responses, and redact URL -credentials and query parameters from request error reports. diff --git a/.changelog/async-tempo-server-signers.md b/.changelog/async-tempo-server-signers.md deleted file mode 100644 index ddc5169e..00000000 --- a/.changelog/async-tempo-server-signers.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"mpp": minor ---- - -Accept asynchronous Alloy signers for Tempo fee sponsorship and session closing, -enabling remote KMS, HSM, and MPC-backed server keys. diff --git a/.changelog/body-verification-retry-challenge.md b/.changelog/body-verification-retry-challenge.md deleted file mode 100644 index e275325c..00000000 --- a/.changelog/body-verification-retry-challenge.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"mpp": patch ---- - -Return a fresh body-bound payment challenge when request-body credential verification fails. diff --git a/.changelog/bump-tempo-769.md b/.changelog/bump-tempo-769.md deleted file mode 100644 index 2ade70fe..00000000 --- a/.changelog/bump-tempo-769.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -mpp: patch ---- - -Pinned the Tempo dependency to the coordinated 7690815 revision. \ No newline at end of file diff --git a/.changelog/calm-channels-top-up.md b/.changelog/calm-channels-top-up.md deleted file mode 100644 index 47457883..00000000 --- a/.changelog/calm-channels-top-up.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -mpp: minor ---- - -Added automatic native TIP-1034 channel top-ups before session vouchers exceed the current deposit, with credentials bound to each active WebSocket challenge across reconnects. diff --git a/.changelog/calm-idempotency-prefix.md b/.changelog/calm-idempotency-prefix.md deleted file mode 100644 index 8ac91c38..00000000 --- a/.changelog/calm-idempotency-prefix.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"mpp": patch ---- - -Use the SDK-independent `mpp_` prefix for Stripe PaymentIntent idempotency keys. diff --git a/.changelog/calm-wallet-access-key.md b/.changelog/calm-wallet-access-key.md deleted file mode 100644 index 89fa8ec6..00000000 --- a/.changelog/calm-wallet-access-key.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"mpp": minor ---- - -Support Tempo Wallet P-256 access keys for charge payments and expose the -shared `store.json` loader for native command-line clients. diff --git a/.changelog/charge-retry-safety.md b/.changelog/charge-retry-safety.md deleted file mode 100644 index 15e6a7f7..00000000 --- a/.changelog/charge-retry-safety.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"mpp": patch ---- - -Continue retrying distinct charge challenges within the configured payment -retry limit, matching MPPx and allowing sponsored servers to rotate challenges -that were rejected before settlement. diff --git a/.changelog/fix-tempo-fee-payer-envelope.md b/.changelog/fix-tempo-fee-payer-envelope.md deleted file mode 100644 index 0c3aab38..00000000 --- a/.changelog/fix-tempo-fee-payer-envelope.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"mpp": patch ---- - -Match MPPx and Tempo fee sponsorship by encoding P-256 charge and TIP-1034 management credentials as sender-signed `0x78` envelopes. diff --git a/.changelog/gentle-websocket-authorization.md b/.changelog/gentle-websocket-authorization.md deleted file mode 100644 index 22ab5915..00000000 --- a/.changelog/gentle-websocket-authorization.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"mpp": patch ---- - -Authorize canonical application WebSockets with their advertised opening amount, -and provide a top-up-aware authorization path for full reusable channels. diff --git a/.changelog/invalid-challenge-expiration.md b/.changelog/invalid-challenge-expiration.md deleted file mode 100644 index d6cfd9b8..00000000 --- a/.changelog/invalid-challenge-expiration.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -mpp: patch ---- - -Reject payment challenges containing malformed RFC 3339 `expires` timestamps during header parsing. diff --git a/.changelog/lazy-bears-climb.md b/.changelog/lazy-bears-climb.md deleted file mode 100644 index ee95fe93..00000000 --- a/.changelog/lazy-bears-climb.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -mpp: patch ---- - -Pinned an updated Tempo dependency revision and reworked the one-time authorization test to sign the key authorization with a real root signer. diff --git a/.changelog/machineusd-session-settlement.md b/.changelog/machineusd-session-settlement.md deleted file mode 100644 index 0c2f6fc1..00000000 --- a/.changelog/machineusd-session-settlement.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"mpp": minor ---- - -Add route-bound machineUSD session channels and atomic settlement into the -merchant's configured stablecoin. diff --git a/.changelog/preserve-receipt-extensions.md b/.changelog/preserve-receipt-extensions.md deleted file mode 100644 index 4a9e8dea..00000000 --- a/.changelog/preserve-receipt-extensions.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"mpp": patch ---- - -Preserve method-specific receipt fields when parsing and serializing payment receipts. diff --git a/.changelog/private-body-receipts.md b/.changelog/private-body-receipts.md deleted file mode 100644 index 3115d6ac..00000000 --- a/.changelog/private-body-receipts.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"mpp": patch ---- - -Mark successful body-bound payment responses as private while preserving existing -`Cache-Control` directives, preventing shared caches from storing payment receipts. diff --git a/.changelog/quiet-application-disconnect.md b/.changelog/quiet-application-disconnect.md deleted file mode 100644 index ae4e7f0c..00000000 --- a/.changelog/quiet-application-disconnect.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"alloy-transport-mpp": minor ---- - -Add `MppApplicationWs::disconnect` to close an application WebSocket without -settling its reusable payment session. diff --git a/.changelog/rare-lakes-run.md b/.changelog/rare-lakes-run.md deleted file mode 100644 index e08dad5c..00000000 --- a/.changelog/rare-lakes-run.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -mpp: patch ---- - -Updated the pinned `tempo-alloy` git revision. diff --git a/.changelog/reject-invalid-method-identifiers.md b/.changelog/reject-invalid-method-identifiers.md deleted file mode 100644 index 7beebcda..00000000 --- a/.changelog/reject-invalid-method-identifiers.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"mpp": patch ---- - -Reject payment challenges whose method identifier contains characters other -than lowercase ASCII letters. Reject payment challenges reached through a -cross-origin redirect before a credential can be created or sent. diff --git a/.changelog/reject-unterminated-quoted-string.md b/.changelog/reject-unterminated-quoted-string.md deleted file mode 100644 index 332e9fbc..00000000 --- a/.changelog/reject-unterminated-quoted-string.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"mpp": patch ---- - -Reject Payment challenges containing an unterminated quoted-string parameter. diff --git a/.changelog/resolve-key-authorization.md b/.changelog/resolve-key-authorization.md deleted file mode 100644 index c96d15b8..00000000 --- a/.changelog/resolve-key-authorization.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"mpp": patch ---- - -Resolve persisted Tempo Wallet key authorizations against the Account Keychain before signing. Already-authorized access keys now omit the one-time authorization instead of failing fresh charge or session transactions with `KeyAlreadyExists`. diff --git a/.changelog/session-autoswap.md b/.changelog/session-autoswap.md deleted file mode 100644 index e1700150..00000000 --- a/.changelog/session-autoswap.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"mpp": minor ---- - -Add atomic stablecoin auto-swaps for native TIP-1034 session opens and top-ups, -including the required Stablecoin DEX approval for charge and session payments. diff --git a/.changelog/tempo-accounts-charge.md b/.changelog/tempo-accounts-charge.md deleted file mode 100644 index 1c7da4c4..00000000 --- a/.changelog/tempo-accounts-charge.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"mpp": minor ---- - -Add a Charge-only payment provider backed by the canonical Tempo Accounts -`store.json`, with lazy access-key selection and no separate signing mode. diff --git a/.changelog/tempo-relay-adapter.md b/.changelog/tempo-relay-adapter.md deleted file mode 100644 index 0ec0f0c8..00000000 --- a/.changelog/tempo-relay-adapter.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -mpp: minor ---- - -Add separate non-mutating charge validation and terminal broadcast APIs, retaining verification as a compatibility alias and falling back to legacy method implementations. Add `TempoRelayConfig` and `TempoBuilder::relay` for delegating Tempo charge credential validation and finalization to Tempo API or a compatible MPP relay. Relay requests normalize the echoed challenge request, derive deterministic broadcast idempotency keys, validate returned receipts, and hide private relay failures. Add an Axum charge-relay example dogfooded against Tempo Moderato. diff --git a/.changelog/tempo-sponsor-validation.md b/.changelog/tempo-sponsor-validation.md deleted file mode 100644 index 50149858..00000000 --- a/.changelog/tempo-sponsor-validation.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"mpp": patch ---- - -Update the Tempo SDK revision so fee-payer relays can select the transaction fee token. diff --git a/.changelog/wallet-key-authorization.md b/.changelog/wallet-key-authorization.md deleted file mode 100644 index 9e6bd354..00000000 --- a/.changelog/wallet-key-authorization.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"mpp": patch ---- - -Load pending Accounts SDK key authorizations from the shared Tempo Wallet store so native Rust clients can provision a fresh access key with their first transaction. Open a fresh session after access-key rotation instead of trying to reuse a channel bound to the previous voucher signer. diff --git a/CHANGELOG.md b/CHANGELOG.md index 1bae018e..ff435338 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,47 @@ # Changelog +## 0.12.0 (2026-08-15) + +### Minor Changes + +- Accept asynchronous Alloy signers for Tempo fee sponsorship and session closing, +- enabling remote KMS, HSM, and MPC-backed server keys. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) +- Added automatic native TIP-1034 channel top-ups before session vouchers exceed the current deposit, with credentials bound to each active WebSocket challenge across reconnects. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) +- Support Tempo Wallet P-256 access keys for charge payments and expose the +- shared `store.json` loader for native command-line clients. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) +- Add route-bound machineUSD session channels and atomic settlement into the +- merchant's configured stablecoin. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) +- Add atomic stablecoin auto-swaps for native TIP-1034 session opens and top-ups, +- including the required Stablecoin DEX approval for charge and session payments. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) +- Add a Charge-only payment provider backed by the canonical Tempo Accounts +- `store.json`, with lazy access-key selection and no separate signing mode. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) +- Add separate non-mutating charge validation and terminal broadcast APIs, retaining verification as a compatibility alias and falling back to legacy method implementations. Add `TempoRelayConfig` and `TempoBuilder::relay` for delegating Tempo charge credential validation and finalization to Tempo API or a compatible MPP relay. Relay requests normalize the echoed challenge request, derive deterministic broadcast idempotency keys, validate returned receipts, and hide private relay failures. Add an Axum charge-relay example dogfooded against Tempo Moderato. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) + +### Patch Changes + +- Return a fresh body-bound payment challenge when request-body credential verification fails. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) +- Pinned the Tempo dependency to the coordinated 7690815 revision. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) +- Use the SDK-independent `mpp_` prefix for Stripe PaymentIntent idempotency keys. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) +- Continue retrying distinct charge challenges within the configured payment +- retry limit, matching MPPx and allowing sponsored servers to rotate challenges +- that were rejected before settlement. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) +- Match MPPx and Tempo fee sponsorship by encoding P-256 charge and TIP-1034 management credentials as sender-signed `0x78` envelopes. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) +- Authorize canonical application WebSockets with their advertised opening amount, +- and provide a top-up-aware authorization path for full reusable channels. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) +- Reject payment challenges containing malformed RFC 3339 `expires` timestamps during header parsing. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) +- Pinned an updated Tempo dependency revision and reworked the one-time authorization test to sign the key authorization with a real root signer. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) +- Preserve method-specific receipt fields when parsing and serializing payment receipts. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) +- Mark successful body-bound payment responses as private while preserving existing +- `Cache-Control` directives, preventing shared caches from storing payment receipts. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) +- Updated the pinned `tempo-alloy` git revision. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) +- Reject payment challenges whose method identifier contains characters other +- than lowercase ASCII letters. Reject payment challenges reached through a +- cross-origin redirect before a credential can be created or sent. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) +- Reject Payment challenges containing an unterminated quoted-string parameter. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) +- Resolve persisted Tempo Wallet key authorizations against the Account Keychain before signing. Already-authorized access keys now omit the one-time authorization instead of failing fresh charge or session transactions with `KeyAlreadyExists`. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) +- Update the Tempo SDK revision so fee-payer relays can select the transaction fee token. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) +- Load pending Accounts SDK key authorizations from the shared Tempo Wallet store so native Rust clients can provision a fresh access key with their first transaction. Open a fresh session after access-key rotation instead of trying to reuse a channel bound to the previous voucher signer. (by @GeorgiosKonstantopoulos, [#389](https://github.com/tempoxyz/mpp-rs/pull/389)) + ## 0.11.0 (2026-07-16) ### Minor Changes diff --git a/Cargo.toml b/Cargo.toml index f585d5d9..dc64da72 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mpp" -version = "0.11.0" +version = "0.12.0" edition = "2021" description = "Rust SDK for the Machine Payments Protocol (MPP)" license = "MIT OR Apache-2.0"