# Changelog
All notable changes to this project are documented here. The format follows
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project uses
[Semantic Versioning](https://semver.org/).
## [0.1.0] - 2026-05-19
Initial Rust port of [`@p-vbordei/agent-pay`](https://github.com/p-vbordei/agent-pay).
Passes the same `C1`–`C4` conformance vectors as the TS reference.
### Added
- `Paywall` — framework-agnostic L402 challenge/response middleware
(`process_request(path, headers, inner)`).
- L402 token (HMAC SHA-256 `{payload}.{hmac}`) — `issue_token` / `verify_token`.
- BOLT11 parse + encode via the `lightning-invoice` crate (with
`payment_secret`).
- DID-bound JWS envelopes for invoices and receipts (Ed25519 + RFC 8785 JCS).
- `did:key` Ed25519 (multicodec `0xed01`) helpers.
- `MemoryNode` — in-process mock LND for tests and offline demos, backed by a
shared `MemoryLedger`.
- `LndRest` — optional real LND adapter (skipped unless
`AGENT_PAY_INTEGRATION=1`).
- `ReplayCache` — preimage replay protection keyed by `payment_hash`.
- `fetch_with_l402` client wrapper — resolves `did:key`, verifies JWS, enforces
`max_price_msat` and `expires_at`, pays via a `LightningNode`, retries,
optionally verifies the receipt.
- Conformance vectors `c1-missing-did-invoice`, `c1-invalid-jws`, `c2-roundtrip`,
`c3-replayed-preimage`, `c4-bolt11-hash-mismatch` (`tests/conformance.rs`).
- End-to-end test (`tests/e2e.rs`) running the full round-trip against
`MemoryNode`.
- Runnable demo at `examples/quickstart.rs` (`cargo run --example quickstart`).
[0.1.0]: https://github.com/p-vbordei/agent-pay-rs/releases/tag/v0.1.0