Releases: payjoin/rust-payjoin
Release payjoin-1.0.0-rc.1
This release candidate fixes a BIP78 spec compliance bug, and an issue with the BIP77 sender when polling an arbitrary relay via RFC9540.
It also removes a redundant Sender SessionEvent.
- Fix identify_receiver_outputs (#1168)
- Use full_relay_url in sender GET request (#1166)
- Remove
ReceivedProposalPsbtinfavor of session outcome (#1171)
What's Changed
- Don't pub use Duration by @DanGould in #1150
- Assert reply_key for RetrievedOriginalPayload by @benalleng in #1152
- Directory cli fixes by @nothingmuch in #1157
- Support requesting certificates using ACME by @nothingmuch in #1026
- Update corepc-node to v0.10.0 by @benalleng in #1155
- FFI: Eliminate string fallbacks in error wrappers by @chavic in #1127
- Remove Docker mention in dart README by @spacebear21 in #1161
- Fix identify_receiver_outputs by @spacebear21 in #1168
- Use full_relay_url in sender GET request by @spacebear21 in #1166
- Add directory health check github action by @spacebear21 in #1170
- Fix directory metrics by @spacebear21 in #1173
- Fix rpc-error due to quick transaction lookup by @zealsham in #1159
- Force ffi workflow to use certain python version by @benalleng in #1176
- Remove
ReceivedProposalPsbtinfavor of session outcome by @arminsabouri in #1171 - Remove public /metrics endpoint from directory by @spacebear21 in #1178
- Remove extraneous destructuring by @arminsabouri in #1182
- Bump payjoin version to 1.0.0-rc.1 by @spacebear21 in #1186
Full Changelog: payjoin-1.0.0-rc.0...payjoin-1.0.0-rc.1
Release payjoin-1.0.0-rc.0
Change log
Introduce monitoring typestates, replyable error handling, and other updates for more robust session lifecycle management.
Selected Improvements:
Updates to Typestates and Session Event Log Replay
- Receiver Monitor Typestate (#1061)
- Sender closed variant (#1129)
- Rename sender session events (#1125, #1116)
- Remove
PollingForProposalfrom session event (#1128) - Return closed session state during replays (#1136)
- Introduce
SessionEvent::Closed(#1078) - Name multi-field SessionEvent variants (#1051)
- Enforce
handle_fatal_rejecttype safety (#1058) - Remove uninitialized session state (#1014)
- Enforce that
SessionHistoryis created internally (#1062) - Reduce visibility of common recv abstractions (#1109)
- Abstract V2 Sender over SenderContext and remove public Url (#1141)
Improve Error Handling
- Handle fatal errors in receiver state machine (#1060)
- Update sender
process_resto parse and process error response (#1114) - HPKE encrypt error response (#1115)
- Use
HasReplyableErrorTransitionin reply error typestate (#1130) - Use reply key for replyable errors to v2 senders (#981)
- Improve
receiveerror hierarchy (#1031) - Separate session replay & protocol operation (#1036)
API and Dependency Refinements
- Depend on
url/serdewith no default features (#1126) - Use String type instead of Url on Request Struct (#1122)
- Remove the url crate dep from payjoin-test-utils (#1111)
- Remove use of payjoin::Url and url::Url in public methods (#1057)
- Make
payjoin::urimodule public (#1048) - Replace
psbt_with_fee_contributionswith pub fn (#1120) - Refactor sender to validate PjParam by version (#901)
- Replace bitcoind with corepc_node (#1041)
- Bump MSRV to 1.85.0 (#957)
- Upgrade testcontainers (#970)
Build, CI, and Workflow Enhancements
- Run all tests in macOS CI (#1094)
- Use tracing crate instead of log (#1020)
- Add Pull Request Review Template (#967)
- Add bug issue templates (#758, #784)
- Add Feature Request, Good First Issue, and General Issue Templates (#891)
- Enforce new AI Disclosure in PR Checklist (#1012)
Miscellaneous Cleanups
- Remove redundant fields from
WantsInputs,WantsOutputs, andWantsFeeRangeevents (#1106, #1102, #1092) - Remove mailbox from receiver session context (#1112)
- Remove extraneous clones and redundant Vec clones in HPKE encrypt functions (#1089, #982, #845)
- Use
expirationinstead ofexpiry(#1087) - Clarify request construction methods for sender and receiver (#814)
What's Changed
- Rename FFI error types to avoid naming conflicts by @spacebear21 in #830
- Serve a page on / for payjoin-directory by @zealsham in #824
- Shift cargo mutants inclusion files to be within the core module by @benalleng in #833
- Bump payjoin-ffi version to 0.24 by @arminsabouri in #842
- Bump payjoin-cli version to 0.2.0 by @arminsabouri in #838
- Remove to/from json methods on typestates by @arminsabouri in #835
- Bump payjoin-directory version to 0.0.3 by @arminsabouri in #840
- Bump payjoin-test-utils version to 0.0.1 by @arminsabouri in #841
- Add initial warnings against OHTTP request reuse by @0xZaddyy in #828
- Add bug issue templates (#758) by @thebrandonlucas in #784
- Fix ffi fmt and run
fmt --checkin CI by @arminsabouri in #832 - Remove python-bitcoinlib dependency for ffi by @benalleng in #849
- Session persister mutants by @benalleng in #791
- Helper method for optional parameters with docstring by @zealsham in #853
- Fix minor typo in README by @Mshehu5 in #858
- Setup Lint workflows for payjoin-ffi by @arminsabouri in #846
- Add
expected_weightfield toInputPairby @arturgontijo in #772 - Fragment parameter fixes by @nothingmuch in #852
- Update receiver typestate documentation for functions shared between v1 and v2 (and some InputPair documentation) by @mehmetefeumit in #769
- Prevent concurrent lockfile conflicts using flock and add backup by @0xZaddyy in #851
- Remove unnecessary payjoin-ffi dependencies by @spacebear21 in #866
- Remove redundant clones by @shinghim in #845
- Add mutant catch for incompatible mixed fragment by @benalleng in #871
- Fix
pjoshandling in v2 receiver and sender by @spacebear21 in #847 - Use tempfile for temporary e2e test directories by @spacebear21 in #868
- Clarify request construction methods for sender and receiver by @0xZaddyy in #814
- Derive weight from witness for p2wsh inputs by @arminsabouri in #862
- Uniffi dart by @spacebear21 in #829
- Remove commented out ffi reciever unit test by @arminsabouri in #887
- Enforce nightly rust toolchain by @spacebear21 in #885
- Separate out fee application into own typestate by @arminsabouri in #881
- Replaces 'flock' with mkdir locking by @Johnosezele in #886
- Add PartialEq/Eq to errors for easier comparison by @w3irdrobot in #768
- Add Feature Request, Good First Issue, and General Issue Templates by @thebrandonlucas in #891
- Use FnMut closures for receiver typestate checks by @benalleng in #883
- Abstract common sender functionality, not heirarchy by @DanGould in #884
- Remove mod/uni payjoin-ffi distinction by @DanGould in #899
- Cargo mutants version update by @benalleng in #882
- Remove unneeded PSBT fields when extracting request by @arminsabouri in #907
- Restore PSBT input field
witness_scriptby @arminsabouri in #908 - Restore original psbt output fields by @arminsabouri in #909
- Diff based cargo-mutants by @benalleng in #910
- e2e test concurrency fixes by @nothingmuch in #913
- refactor: introduce payjoin_directory::Service by @nothingmuch in #914
- Check ntxid after proposal finalization by @arminsabouri in #905
- Stale mutant exclusions by @benalleng in #918
- Remove NS1R from master by @arminsabouri in #923
- Add default directory to payjoin-cli by @zealsham in #874
- Reduce visibility of
JsonReply::newby @arminsabouri in #931 - Add coverage converting impl error to jsonreply by @arminsabouri in #936
- Remove
change_voutfromProvisionalProposalby @arminsabouri in #939 - Reduce FFI transition save boilerplate via macros by @arminsabouri in #944
- Add amount to recv session context by @arminsabouri in #920
- Decapsulate v1 provisional and payjoin typestate from v2 typestate by @arminsabouri in #938
- Rename
contexttosession_contextby @arminsabouri in #953 - Full mutant coverage by @benalleng in #928
- Replace bitcoincore-rpc with custom reqwest client by @bc1cindy in #945
- Reduce visibility of state transition types by @arminsabouri in #955
- Bump MSRV to 1.85.0 by @benalleng in #957
- Tests: optimize clone usage in integration tests by @bc1cindy in #960
- chore: Enhance JsonReply leakage test by @Prabhat1308 in #961
- Add Pull Request Review Template by @DanGould in #967
- Upgrade testcontainers by @spacebear21 in #970
- Optimize SessionPersister trait for better ownership semantics by @bc1cindy in #962
- Fix RPC error message regression in reqwest client by @bc1cindy in #971
- Decoupling v2 receiver typestates from v1 typestates by @armin...
Release payjoin-test-utils 0.0.1
Change log
- Export InMemoryTestPersister under _test-utils #761
- Introduce constructors for SegWit input pairs #712
- Move testing constants to payjoin-test-utils #613
- Specify the versions for deps more precisely in the cargo toml #696
- Extend tests for rest of receive module #632
- Fix uninline format clippy violations #667
What's Changed
- Extend tests for rest of receive module by @benalleng in #632
- Remove rust docs reference to non-existent method by @arminsabouri in #655
- Persistence follow ups by @arminsabouri in #638
- Alter receiver session as_ref assert and persist::Value import for ReceiverToken by @benalleng in #658
- Update README title and add logo & badges by @thebrandonlucas in #665
- Fix uninline format clippy violations by @arminsabouri in #667
- Move persist sub module to root module by @arminsabouri in #656
- Duplicate proposals catch in ns1r by @benalleng in #642
- Add issue write permissions to mutants cron job workflow by @benalleng in #676
- Dedupe ImplementationError by @shinghim in #669
- payjoin-cli: Update README nigiri install instructions by @thebrandonlucas in #682
- Replace deprecated rustfmt.toml options by @benalleng in #687
- Introduce Payjoin version enum by @shinghim in #668
- Catch new match arm cargo mutants by @benalleng in #686
- Use
IntoUrlforohttp_relayargument by @DanGould in #692 - Clarify nigiri commands in the payjoin-cli README by @mehmetefeumit in #691
- Specify the versions for deps more precisely in the cargo toml by @benalleng in #696
- Create fallback ohttp-relay logic for payjoin-cli by @benalleng in #607
- Expose shortid method for SessionContext by @benalleng in #698
- Copy fields instead of clearing in prepare_psbt by @DanGould in #700
- Import payjoin-ffi by @spacebear21 in #701
- Upgrade setuptools by @spacebear21 in #704
- Add tests for BIP-78 sender checklist by @shinghim in #663
- Update READMEs for payjoin-ffi by @spacebear21 in #708
- Fix
setup.pyBIP number typo in description by @arminsabouri in #709 - Limit response sizes for v1 by @shinghim in #586
- Seperate v2 cli logic into mod and ohttp components by @benalleng in #714
- Update some test assertions to compare the invariant vs display string by @shinghim in #711
- Randomly pad OHTTP requests by @nothingmuch in #715
- Limit visibility of id method for SessionContext to the crate only by @benalleng in #713
- Add
SessionPersistertrait by @arminsabouri in #716 - Propagate error on loading Receiver by @shinghim in #720
- Expand Python CI trigger to all of payjoin-ffi by @arminsabouri in #722
- Remove unused Python callback classes by @arminsabouri in #725
- Make
Receivergeneric over its typestate by @arminsabouri in #719 - Refactor config to use proc macros over builder by @thebrandonlucas in #703
- Rename RelayState to RelayManager for clarity by @0xZaddyy in #727
- Add mutants for sender module by @benalleng in #717
- payjoin-ffi README fixes by @spacebear21 in #732
- update links to reference BIP-77 document by @0xZaddyy in #733
- Sender generic over typestate by @arminsabouri in #728
- Introduce constructors for SegWit input pairs by @shinghim in #712
- Remove redis from macos CI workflow by @benalleng in #744
- Move shared response processing code to ohttp.rs by @spacebear21 in #660
- Merge parallel feature flag local certificate logic in cli ohttp by @benalleng in #726
- Introduce constructors for legacy input pairs by @shinghim in #753
- Simplify v1 response processing function signatures by @spacebear21 in #745
- Lock cargo mutants version to 25.0.1 by @benalleng in #759
- Receiver Session Events by @arminsabouri in #760
- Export
InMemoryTestPersisterunder_test-utilsby @arminsabouri in #761 - Capture hpke reply key in session event by @arminsabouri in #762
- Full mutation coverage on send in the payjoin crate by @benalleng in #748
- Remove FinalizeResponseError in favor of using FinalizedError by @benalleng in #764
- Update README test checklist by @spacebear21 in #765
- Combine test_output_substitution with sender checklist test for clarity by @benalleng in #767
- Correct cargo mutants version locking in weekly workflow by @benalleng in #776
- Remove unused imports in python int. tests by @arminsabouri in #779
- Remove storage error wrapper by @arminsabouri in #781
- Sender Session Events by @arminsabouri in #777
- Add CONTRIBUTING.md by @thebrandonlucas in #782
- Replace
PersisterwithSessionPersisterfor v2 Sender by @arminsabouri in #789 - Remove MAX_CONTENT_LENGTH, validate content-length with body length by @GideonBature in #770
- Move
extract_fallback_txtoMaybeInputsOwnedby @arminsabouri in #801 - Fix import of OutputSubstition in send::v2 test by @DanGould in #802
- Exclude closed session from get session ids method by @arminsabouri in #806
- Expose fallback tx off receiver session history by @arminsabouri in #799
- Sender session history fallback by @arminsabouri in #805
- Name audit for 0.24 release by @DanGould in #803
- 0.24 name audit part 2 by @DanGould in #810
- Deduplicate payjoin URI creation logic by @spacebear21 in #817
- Clean up re-exports by @zealsham in #746
- Bump
payjoinversion to 0.24.0 by @DanGould in #827 - Rename FFI error types to avoid naming conflicts by @spacebear21 in #830
- Serve a page on / for payjoin-directory by @zealsham in #824
- Shift cargo mutants inclusion files to be within the core module by @benalleng in #833
- Bump payjoin-ffi version to 0.24 by @arminsabouri in #842
- Bump payjoin-cli version to 0.2.0 by @arminsabouri in #838
- Remove to/from json methods on typestates by @arminsabouri in #835
- Bump payjoin-directory version to 0.0.3 by @arminsabouri in #840
- Bump payjoin-test-utils version to 0.0.1 by @arminsabouri in #841
New Contributors
- @mehmetefeumit made their first contribution in #691
- @GideonBature made their first contribution in #770
- @zealsham made their first contribution in #746
...
Release payjoin-ffi-0.24
Change log
Session Persister
- Update to payjoin-0.24.0
- Replace PersisterTrait with SessionPersister Trait #750 #789
- 0.24 name audit #803, #810
- Sender Session Events #777
- Receiver Session Events #760
- Replace Persister with SessionPersister for v2 Sender #789
- Expose fallback tx off receiver session history #799
- Sender session history fallback #805
- Remove storage error wrapper #781
- Move extract_fallback_tx to MaybeInputsOwned #801
Misc.
- Fix setup.py BIP number typo in description #709
- Remove unused Python callback classes #725
- README fixes #732
- Update links to reference BIP-77 document #733
- Remove unused imports in python int. tests #779
- Propagate error on loading Receiver #720
- Upgrade setuptools #704
What's Changed
- Remove redundant sender imports by @arminsabouri in #626
- Propagate DbError as Internal by @DanGould in #630
- Add "Quick Start" minimal tutorial, "Configuration", and "Reference" to
payjoin-cliREADME by @thebrandonlucas in #624 - Bump payjoin-cli version to 0.1.0 by @spacebear21 in #629
- Update
payjoin-cliREADME.md by @thebrandonlucas in #633 - Directory docker-compose should not expose redis or payjoin directory ports by @arminsabouri in #634
- Do not log
ERRORon directory validation errors by @arminsabouri in #628 - Remove duplicate cli required_else_help method by @benalleng in #637
- Reduce visibility of receiver error by @arminsabouri in #639
- Bump payjoin directory 0.0.2 by @DanGould in #649
- Bump payjoin test utils 0.0.0 by @DanGould in #650
- Extend tests for rest of receive module by @benalleng in #632
- Remove rust docs reference to non-existent method by @arminsabouri in #655
- Persistence follow ups by @arminsabouri in #638
- Alter receiver session as_ref assert and persist::Value import for ReceiverToken by @benalleng in #658
- Update README title and add logo & badges by @thebrandonlucas in #665
- Fix uninline format clippy violations by @arminsabouri in #667
- Move persist sub module to root module by @arminsabouri in #656
- Duplicate proposals catch in ns1r by @benalleng in #642
- Add issue write permissions to mutants cron job workflow by @benalleng in #676
- Dedupe ImplementationError by @shinghim in #669
- payjoin-cli: Update README nigiri install instructions by @thebrandonlucas in #682
- Replace deprecated rustfmt.toml options by @benalleng in #687
- Introduce Payjoin version enum by @shinghim in #668
- Catch new match arm cargo mutants by @benalleng in #686
- Use
IntoUrlforohttp_relayargument by @DanGould in #692 - Clarify nigiri commands in the payjoin-cli README by @mehmetefeumit in #691
- Specify the versions for deps more precisely in the cargo toml by @benalleng in #696
- Create fallback ohttp-relay logic for payjoin-cli by @benalleng in #607
- Expose shortid method for SessionContext by @benalleng in #698
- Copy fields instead of clearing in prepare_psbt by @DanGould in #700
- Import payjoin-ffi by @spacebear21 in #701
- Upgrade setuptools by @spacebear21 in #704
- Add tests for BIP-78 sender checklist by @shinghim in #663
- Update READMEs for payjoin-ffi by @spacebear21 in #708
- Fix
setup.pyBIP number typo in description by @arminsabouri in #709 - Limit response sizes for v1 by @shinghim in #586
- Seperate v2 cli logic into mod and ohttp components by @benalleng in #714
- Update some test assertions to compare the invariant vs display string by @shinghim in #711
- Randomly pad OHTTP requests by @nothingmuch in #715
- Limit visibility of id method for SessionContext to the crate only by @benalleng in #713
- Add
SessionPersistertrait by @arminsabouri in #716 - Propagate error on loading Receiver by @shinghim in #720
- Expand Python CI trigger to all of payjoin-ffi by @arminsabouri in #722
- Remove unused Python callback classes by @arminsabouri in #725
- Make
Receivergeneric over its typestate by @arminsabouri in #719 - Refactor config to use proc macros over builder by @thebrandonlucas in #703
- Rename RelayState to RelayManager for clarity by @0xZaddyy in #727
- Add mutants for sender module by @benalleng in #717
- payjoin-ffi README fixes by @spacebear21 in #732
- update links to reference BIP-77 document by @0xZaddyy in #733
- Sender generic over typestate by @arminsabouri in #728
- Introduce constructors for SegWit input pairs by @shinghim in #712
- Remove redis from macos CI workflow by @benalleng in #744
- Move shared response processing code to ohttp.rs by @spacebear21 in #660
- Merge parallel feature flag local certificate logic in cli ohttp by @benalleng in #726
- Introduce constructors for legacy input pairs by @shinghim in #753
- Simplify v1 response processing function signatures by @spacebear21 in #745
- Lock cargo mutants version to 25.0.1 by @benalleng in #759
- Receiver Session Events by @arminsabouri in #760
- Export
InMemoryTestPersisterunder_test-utilsby @arminsabouri in #761 - Capture hpke reply key in session event by @arminsabouri in #762
- Full mutation coverage on send in the payjoin crate by @benalleng in #748
- Remove FinalizeResponseError in favor of using FinalizedError by @benalleng in #764
- Update README test checklist by @spacebear21 in #765
- Combine test_output_substitution with sender checklist test for clarity by @benalleng in #767
- Correct cargo mutants version locking in weekly workflow by @benalleng in #776
- Remove unused imports in python int. tests by @arminsabouri in #779
- Remove storage error wrapper by @arminsabouri in #781
- Sender Session Events by @arminsabouri in #777
- Add CONTRIBUTING.md by @thebrandonlucas in #782
- Replace
PersisterwithSessionPersisterfor v2 Sender by @arminsabouri in #789 - Remove MAX_CONTENT_LENGTH, validate content-length with body length by @GideonBature in https://github.com/p...
Release payjoin-directory 0.0.3
Changelog
- Update links to reference BIP-77 document #733
- Fix uninline format clippy violations #667
- Serve a page on / for payjoin-directory #824
What's Changed
- Bump payjoin test utils 0.0.0 by @DanGould in #650
- Extend tests for rest of receive module by @benalleng in #632
- Remove rust docs reference to non-existent method by @arminsabouri in #655
- Persistence follow ups by @arminsabouri in #638
- Alter receiver session as_ref assert and persist::Value import for ReceiverToken by @benalleng in #658
- Update README title and add logo & badges by @thebrandonlucas in #665
- Fix uninline format clippy violations by @arminsabouri in #667
- Move persist sub module to root module by @arminsabouri in #656
- Duplicate proposals catch in ns1r by @benalleng in #642
- Add issue write permissions to mutants cron job workflow by @benalleng in #676
- Dedupe ImplementationError by @shinghim in #669
- payjoin-cli: Update README nigiri install instructions by @thebrandonlucas in #682
- Replace deprecated rustfmt.toml options by @benalleng in #687
- Introduce Payjoin version enum by @shinghim in #668
- Catch new match arm cargo mutants by @benalleng in #686
- Use
IntoUrlforohttp_relayargument by @DanGould in #692 - Clarify nigiri commands in the payjoin-cli README by @mehmetefeumit in #691
- Specify the versions for deps more precisely in the cargo toml by @benalleng in #696
- Create fallback ohttp-relay logic for payjoin-cli by @benalleng in #607
- Expose shortid method for SessionContext by @benalleng in #698
- Copy fields instead of clearing in prepare_psbt by @DanGould in #700
- Import payjoin-ffi by @spacebear21 in #701
- Upgrade setuptools by @spacebear21 in #704
- Add tests for BIP-78 sender checklist by @shinghim in #663
- Update READMEs for payjoin-ffi by @spacebear21 in #708
- Fix
setup.pyBIP number typo in description by @arminsabouri in #709 - Limit response sizes for v1 by @shinghim in #586
- Seperate v2 cli logic into mod and ohttp components by @benalleng in #714
- Update some test assertions to compare the invariant vs display string by @shinghim in #711
- Randomly pad OHTTP requests by @nothingmuch in #715
- Limit visibility of id method for SessionContext to the crate only by @benalleng in #713
- Add
SessionPersistertrait by @arminsabouri in #716 - Propagate error on loading Receiver by @shinghim in #720
- Expand Python CI trigger to all of payjoin-ffi by @arminsabouri in #722
- Remove unused Python callback classes by @arminsabouri in #725
- Make
Receivergeneric over its typestate by @arminsabouri in #719 - Refactor config to use proc macros over builder by @thebrandonlucas in #703
- Rename RelayState to RelayManager for clarity by @0xZaddyy in #727
- Add mutants for sender module by @benalleng in #717
- payjoin-ffi README fixes by @spacebear21 in #732
- update links to reference BIP-77 document by @0xZaddyy in #733
- Sender generic over typestate by @arminsabouri in #728
- Introduce constructors for SegWit input pairs by @shinghim in #712
- Remove redis from macos CI workflow by @benalleng in #744
- Move shared response processing code to ohttp.rs by @spacebear21 in #660
- Merge parallel feature flag local certificate logic in cli ohttp by @benalleng in #726
- Introduce constructors for legacy input pairs by @shinghim in #753
- Simplify v1 response processing function signatures by @spacebear21 in #745
- Lock cargo mutants version to 25.0.1 by @benalleng in #759
- Receiver Session Events by @arminsabouri in #760
- Export
InMemoryTestPersisterunder_test-utilsby @arminsabouri in #761 - Capture hpke reply key in session event by @arminsabouri in #762
- Full mutation coverage on send in the payjoin crate by @benalleng in #748
- Remove FinalizeResponseError in favor of using FinalizedError by @benalleng in #764
- Update README test checklist by @spacebear21 in #765
- Combine test_output_substitution with sender checklist test for clarity by @benalleng in #767
- Correct cargo mutants version locking in weekly workflow by @benalleng in #776
- Remove unused imports in python int. tests by @arminsabouri in #779
- Remove storage error wrapper by @arminsabouri in #781
- Sender Session Events by @arminsabouri in #777
- Add CONTRIBUTING.md by @thebrandonlucas in #782
- Replace
PersisterwithSessionPersisterfor v2 Sender by @arminsabouri in #789 - Remove MAX_CONTENT_LENGTH, validate content-length with body length by @GideonBature in #770
- Move
extract_fallback_txtoMaybeInputsOwnedby @arminsabouri in #801 - Fix import of OutputSubstition in send::v2 test by @DanGould in #802
- Exclude closed session from get session ids method by @arminsabouri in #806
- Expose fallback tx off receiver session history by @arminsabouri in #799
- Sender session history fallback by @arminsabouri in #805
- Name audit for 0.24 release by @DanGould in #803
- 0.24 name audit part 2 by @DanGould in #810
- Deduplicate payjoin URI creation logic by @spacebear21 in #817
- Clean up re-exports by @zealsham in #746
- Bump
payjoinversion to 0.24.0 by @DanGould in #827 - Rename FFI error types to avoid naming conflicts by @spacebear21 in #830
- Serve a page on / for payjoin-directory by @zealsham in #824
- Shift cargo mutants inclusion files to be within the core module by @benalleng in #833
- Bump payjoin-ffi version to 0.24 by @arminsabouri in #842
- Bump payjoin-cli version to 0.2.0 by @arminsabouri in #838
- Remove to/from json methods on typestates by @arminsabouri in #835
- Bump payjoin-directory version to 0.0.3 by @arminsabouri in #840
- Bump payjoin-test-utils version to 0.0.1 by @arminsabouri in #841
- Add initial warnings against OHTTP request reuse by @0xZaddyy in #828
- Add bug issue templates (#758) by @thebrandonlucas in #784
New Contributors
- @mehmetefeumit made their first contribution in #691
- @0xZaddyy made their first contribution in #727
- @GideonBature made their first contribution in #770
- @zealsham made the...
Release payjoin-cli 0.2.0
Change log
- Support sender and receiver being generic over their typestate (#728, #719)
- Remove existing persistence strategy and replace with new SessionPersister trait (#789, #750)
- Update references to BIP-77 (#733)
- Rename RelayState to RelayManager for clarity (#727)
- Refactor config to use proc macros over builder (#703)
- Create fallback ohttp-relay logic for payjoin-cli (#607)
- Separate v2 cli logic into mod and ohttp components (#714)
- Update Nigiri instructions (#691, #682)
- Dedupe ImplementationError (#669)
- Add Quick Start, Configuration, Reference to CLI README (#624)
What's Changed
- Update
payjoin-cliREADME.md by @thebrandonlucas in #633 - Directory docker-compose should not expose redis or payjoin directory ports by @arminsabouri in #634
- Do not log
ERRORon directory validation errors by @arminsabouri in #628 - Remove duplicate cli required_else_help method by @benalleng in #637
- Reduce visibility of receiver error by @arminsabouri in #639
- Bump payjoin directory 0.0.2 by @DanGould in #649
- Bump payjoin test utils 0.0.0 by @DanGould in #650
- Extend tests for rest of receive module by @benalleng in #632
- Remove rust docs reference to non-existent method by @arminsabouri in #655
- Persistence follow ups by @arminsabouri in #638
- Alter receiver session as_ref assert and persist::Value import for ReceiverToken by @benalleng in #658
- Update README title and add logo & badges by @thebrandonlucas in #665
- Fix uninline format clippy violations by @arminsabouri in #667
- Move persist sub module to root module by @arminsabouri in #656
- Duplicate proposals catch in ns1r by @benalleng in #642
- Add issue write permissions to mutants cron job workflow by @benalleng in #676
- Dedupe ImplementationError by @shinghim in #669
- payjoin-cli: Update README nigiri install instructions by @thebrandonlucas in #682
- Replace deprecated rustfmt.toml options by @benalleng in #687
- Introduce Payjoin version enum by @shinghim in #668
- Catch new match arm cargo mutants by @benalleng in #686
- Use
IntoUrlforohttp_relayargument by @DanGould in #692 - Clarify nigiri commands in the payjoin-cli README by @mehmetefeumit in #691
- Specify the versions for deps more precisely in the cargo toml by @benalleng in #696
- Create fallback ohttp-relay logic for payjoin-cli by @benalleng in #607
- Expose shortid method for SessionContext by @benalleng in #698
- Copy fields instead of clearing in prepare_psbt by @DanGould in #700
- Import payjoin-ffi by @spacebear21 in #701
- Upgrade setuptools by @spacebear21 in #704
- Add tests for BIP-78 sender checklist by @shinghim in #663
- Update READMEs for payjoin-ffi by @spacebear21 in #708
- Fix
setup.pyBIP number typo in description by @arminsabouri in #709 - Limit response sizes for v1 by @shinghim in #586
- Seperate v2 cli logic into mod and ohttp components by @benalleng in #714
- Update some test assertions to compare the invariant vs display string by @shinghim in #711
- Randomly pad OHTTP requests by @nothingmuch in #715
- Limit visibility of id method for SessionContext to the crate only by @benalleng in #713
- Add
SessionPersistertrait by @arminsabouri in #716 - Propagate error on loading Receiver by @shinghim in #720
- Expand Python CI trigger to all of payjoin-ffi by @arminsabouri in #722
- Remove unused Python callback classes by @arminsabouri in #725
- Make
Receivergeneric over its typestate by @arminsabouri in #719 - Refactor config to use proc macros over builder by @thebrandonlucas in #703
- Rename RelayState to RelayManager for clarity by @0xZaddyy in #727
- Add mutants for sender module by @benalleng in #717
- payjoin-ffi README fixes by @spacebear21 in #732
- update links to reference BIP-77 document by @0xZaddyy in #733
- Sender generic over typestate by @arminsabouri in #728
- Introduce constructors for SegWit input pairs by @shinghim in #712
- Remove redis from macos CI workflow by @benalleng in #744
- Move shared response processing code to ohttp.rs by @spacebear21 in #660
- Merge parallel feature flag local certificate logic in cli ohttp by @benalleng in #726
- Introduce constructors for legacy input pairs by @shinghim in #753
- Simplify v1 response processing function signatures by @spacebear21 in #745
- Lock cargo mutants version to 25.0.1 by @benalleng in #759
- Receiver Session Events by @arminsabouri in #760
- Export
InMemoryTestPersisterunder_test-utilsby @arminsabouri in #761 - Capture hpke reply key in session event by @arminsabouri in #762
- Full mutation coverage on send in the payjoin crate by @benalleng in #748
- Remove FinalizeResponseError in favor of using FinalizedError by @benalleng in #764
- Update README test checklist by @spacebear21 in #765
- Combine test_output_substitution with sender checklist test for clarity by @benalleng in #767
- Correct cargo mutants version locking in weekly workflow by @benalleng in #776
- Remove unused imports in python int. tests by @arminsabouri in #779
- Remove storage error wrapper by @arminsabouri in #781
- Sender Session Events by @arminsabouri in #777
- Add CONTRIBUTING.md by @thebrandonlucas in #782
- Replace
PersisterwithSessionPersisterfor v2 Sender by @arminsabouri in #789 - Remove MAX_CONTENT_LENGTH, validate content-length with body length by @GideonBature in #770
- Move
extract_fallback_txtoMaybeInputsOwnedby @arminsabouri in #801 - Fix import of OutputSubstition in send::v2 test by @DanGould in #802
- Exclude closed session from get session ids method by @arminsabouri in #806
- Expose fallback tx off receiver session history by @arminsabouri in #799
- Sender session history fallback by @arminsabouri in #805
- Name audit for 0.24 release by @DanGould in #803
- 0.24 name audit part 2 by @DanGould in #810
- Deduplicate payjoin URI creation logic by @spacebear21 in https://github.com/payjoin/rust-payjoin/p...
payjoin-0.24.0
Summary
The Session Event Log Release
Selected Improvements:
-
Alter receiver session as_ref assert and persist::Value import for
ReceiverToken (#658) -
Add SessionPersister trait (#716)
-
Sender generic over typestate (#728)
-
Make Receiver generic over its typestate (#719)
-
Receiver Session Events (#760)
-
Export
InMemoryTestPersisterunder_test-utils(#761) -
Capture hpke reply key in session event (#762)
-
Sender Session Events (#777)
-
Replace Persister with SessionPersister for v2 Sender (#789)
-
Persistence follow ups (#638)
-
Expose fallback tx off receiver session history (#799)
-
Sender session history fallback (#805)
-
Introduce constructors for SegWit input pairs (#712)
-
Introduce constructors for legacy input pairs (#753)
-
Update README title and add logo & badges (#665)
-
Move persist sub module to root module (#656)
-
Remove rust docs reference to non-existent method (#655)
-
Introduce Payjoin version enum (#668)
-
Use IntoUrl for ohttp_relay argument (#692)
-
Dedupe ImplementationError (#669)
-
Clean up re-exports (#746)
-
Randomly pad OHTTP requests (#715)
-
Limit response sizes for v1 (#586)
What's Changed
- Remove redundant sender imports by @arminsabouri in #626
- Propagate DbError as Internal by @DanGould in #630
- Add "Quick Start" minimal tutorial, "Configuration", and "Reference" to
payjoin-cliREADME by @thebrandonlucas in #624 - Bump payjoin-cli version to 0.1.0 by @spacebear21 in #629
- Update
payjoin-cliREADME.md by @thebrandonlucas in #633 - Directory docker-compose should not expose redis or payjoin directory ports by @arminsabouri in #634
- Do not log
ERRORon directory validation errors by @arminsabouri in #628 - Remove duplicate cli required_else_help method by @benalleng in #637
- Reduce visibility of receiver error by @arminsabouri in #639
- Bump payjoin directory 0.0.2 by @DanGould in #649
- Bump payjoin test utils 0.0.0 by @DanGould in #650
- Extend tests for rest of receive module by @benalleng in #632
- Remove rust docs reference to non-existent method by @arminsabouri in #655
- Persistence follow ups by @arminsabouri in #638
- Alter receiver session as_ref assert and persist::Value import for ReceiverToken by @benalleng in #658
- Update README title and add logo & badges by @thebrandonlucas in #665
- Fix uninline format clippy violations by @arminsabouri in #667
- Move persist sub module to root module by @arminsabouri in #656
- Duplicate proposals catch in ns1r by @benalleng in #642
- Add issue write permissions to mutants cron job workflow by @benalleng in #676
- Dedupe ImplementationError by @shinghim in #669
- payjoin-cli: Update README nigiri install instructions by @thebrandonlucas in #682
- Replace deprecated rustfmt.toml options by @benalleng in #687
- Introduce Payjoin version enum by @shinghim in #668
- Catch new match arm cargo mutants by @benalleng in #686
- Use
IntoUrlforohttp_relayargument by @DanGould in #692 - Clarify nigiri commands in the payjoin-cli README by @mehmetefeumit in #691
- Specify the versions for deps more precisely in the cargo toml by @benalleng in #696
- Create fallback ohttp-relay logic for payjoin-cli by @benalleng in #607
- Expose shortid method for SessionContext by @benalleng in #698
- Copy fields instead of clearing in prepare_psbt by @DanGould in #700
- Import payjoin-ffi by @spacebear21 in #701
- Upgrade setuptools by @spacebear21 in #704
- Add tests for BIP-78 sender checklist by @shinghim in #663
- Update READMEs for payjoin-ffi by @spacebear21 in #708
- Fix
setup.pyBIP number typo in description by @arminsabouri in #709 - Limit response sizes for v1 by @shinghim in #586
- Seperate v2 cli logic into mod and ohttp components by @benalleng in #714
- Update some test assertions to compare the invariant vs display string by @shinghim in #711
- Randomly pad OHTTP requests by @nothingmuch in #715
- Limit visibility of id method for SessionContext to the crate only by @benalleng in #713
- Add
SessionPersistertrait by @arminsabouri in #716 - Propagate error on loading Receiver by @shinghim in #720
- Expand Python CI trigger to all of payjoin-ffi by @arminsabouri in #722
- Remove unused Python callback classes by @arminsabouri in #725
- Make
Receivergeneric over its typestate by @arminsabouri in #719 - Refactor config to use proc macros over builder by @thebrandonlucas in #703
- Rename RelayState to RelayManager for clarity by @0xZaddyy in #727
- Add mutants for sender module by @benalleng in #717
- payjoin-ffi README fixes by @spacebear21 in #732
- update links to reference BIP-77 document by @0xZaddyy in #733
- Sender generic over typestate by @arminsabouri in #728
- Introduce constructors for SegWit input pairs by @shinghim in #712
- Remove redis from macos CI workflow by @benalleng in #744
- Move shared response processing code to ohttp.rs by @spacebear21 in #660
- Merge parallel feature flag local certificate logic in cli ohttp by @benalleng in #726
- Introduce constructors for legacy input pairs by @shinghim in #753
- Simplify v1 response processing function signatures by @spacebear21 in #745
- Lock cargo mutants version to 25.0.1 by @benalleng in #759
- Receiver Session Events by @arminsabouri in #760
- Export
InMemoryTestPersisterunder_test-utilsby @arminsabouri in #761 - Capture hpke reply key in session event by @arminsabouri in #762
- Full mutation coverage on send in the payjoin crate by @benalleng in #748
- Remove FinalizeResponseError in favor of using FinalizedError by @benalleng in #764
- Update README test checklist by @spacebear21 in #765
- Combine test_output_substitution with sender checklist test for clarity by @benalleng in #767
- Correct cargo mutants version locking in weekly workflow by @benalleng in #776
- Remove unused imports in python int. tests by @arminsabouri in #779
- Remove storage error wrapper by @arminsabouri in #781
- Sender Session Events by @arminsabouri in #777
- Add CONTRIBUTING.md by @thebrandonlucas in #782
- Replace
PersisterwithSessionPersisterfor v2 Sender by @arminsabouri in #789 - Remove MAX_CONTENT_LENGTH, validate content-length with body length by @GideonBature in #770
- Move
extract_fallback_txtoMaybeInputsOwnedby @arminsabouri in #801 - Fix import of OutputSubstition in send::v2 test by @DanGould in #802
- Exclude closed session from get session ids method by @arminsabouri in #806
- Expose fallback tx off receiver session history by @arminsabouri in https://github.com/payjoin/rust-payjoin/pul...
Release payjoin-directory 0.0.2
Summary
Use standard Oblivious HTTP Key Configuration bootstrapping and decentralize directory operation
Commit
Changelog
- Do not log ERROR on directory validation errors #628
- Use payjoin 0.23.0 (056a39b)
- Announce allowed purposes (6282ffb)
- Serve
/.well-known/ohttp-gatewayas per RFC 9540 (6282ffb) - Rely on
payjoin/directoryfeature module #502 - Introduce db-module-specific
Result#488 - Return bound port on listen for test stability (d4fa3d4)
What's Changed
- Propagate ParseError when retrieving ohttp parameter by @shinghim in #428
- update gitignore with vscode workspace dir by @0xBEEFCAF3 in #438
- fix: the attribute
versionis obsolete by @ethicnology in #439 - Don't pause between long polls by @DanGould in #436
- Propagate errors when retrieving exp parameter by @shinghim in #441
- Propagate error if the fs read for ohttp keys fails during config by @shinghim in #435
- Fix unresumable Sender by @DanGould in #443
- Lint with new rust 1.85.0-nightly by @DanGould in #447
- Make _danger-local-https feature additive by @DanGould in #430
- Join subdir to base pj URL to preserve path by @DanGould in #448
- Fix test flakiness by @spacebear21 in #388
- Fix tests following additive feature changes by @DanGould in #450
- Separate send version modules (part 1) by @DanGould in #453
- add nix flake with dev shells and limited crane based checks by @nothingmuch in #455
- fix #! line in ./contrib/test_local.sh by @nothingmuch in #462
- Abstract send feature error variants into separate feature-specific abstractions by @DanGould in #464
- Make Request impl fns pub(crate) by @DanGould in #467
- Move v1 response handling to V1Context by @DanGould in #469
- Separate receive submodules to be additive by @DanGould in #466
- Remove ohttp_relay from SessionContext by @DanGould in #470
- Handle v2 error by @DanGould in #474
- Avoid stringly typed arguments in payjoin-cli App trait by @nothingmuch in #479
- Enumerate errors for peek_with_timeout by @shinghim in #456
- Set
disableoutputsubstitutionto 'true' if used by @0xBEEFCAF3 in #485 - Separate receive::{v1,v2} error modules by @DanGould in #482
- Follow up from #456: Update path qualifier and introduce module-specific
Resultby @shinghim in #488 - Use FeeRate::BROADCAST_MIN for minfeerate defaults by @DanGould in #493
- send SIGINT instead of SIGKILL in e2e test by @nothingmuch in #497
- use compressed representation for reply key by @nothingmuch in #496
- Organize feature separation for ergonomics by @DanGould in #501
- Introduce
directoryfeature module by @DanGould in #502 - Expose test helpers by @spacebear21 in #484
- Accomodate Updated BIP 78 Spec by @DanGould in #505
- Add cargo llvm-cov to flake devshell by @nothingmuch in #495
- use FeeRate for max_fee_rate arg, and default it to BROADCAST_MIN by @nothingmuch in #491
- Move redis container initialization to test utils by @spacebear21 in #507
- Add appropriate docstrings to test-utils by @DanGould in #510
- Produce
receive::JsonErroraccurately so thatsendcan properly handle it by @DanGould in #506 - Validate_utxo treats missing utxos as an error by @benalleng in #516
- Update lib.rs, Cargo.toml docs by @DanGould in #517
- Remove unwrap() in integration/e2e tests by @spacebear21 in #512
- Clean up feature/module documentation with docs.rs features by @DanGould in #518
- Abstract away
additionalfeecontributionto its own struct by @0xBEEFCAF3 in #521 - Add support for merging unique psbts by @0xBEEFCAF3 in #523
- Cleanup test assertions by @spacebear21 in #519
- Refactor new Request impls to use reference types in the signature by @benalleng in #524
- Remove
merge_unsigned_txdoctest by @0xBEEFCAF3 in #531 - Fix payjoin-cli v1 coverage by @spacebear21 in #532
- Only derive JsonError for errors that can return Json by @DanGould in #526
- Fall back to first candidate if avoid_uih fails by @DanGould in #533
- Remove
map_errs for ImplementationError by @spacebear21 in #536 - Handle receiver contribution errors as
unavailableby @DanGould in #534 - Add missing
#[cfg(test)]tosend::v2test module by @0xBEEFCAF3 in #541 - Use IntoUrl for more ergonomic function signatures by @DanGould in #520
- feat: removed
unwrapfrom v2 of send and recieve by @Gmin2 in #544 - don't accept invalid certs even in tests by @nothingmuch in #550
- Document contributing commit message rules by @DanGould in #548
- Make payjoin-cli v1 / v2 features additive by @DanGould in #538
- Multiparty Senders: NS1R by @0xBEEFCAF3 in #434
- Code spell by @0xBEEFCAF3 in #562
- Change HpkeError::Secp256k1 into the opaque InvalidPublicKey error by @shinghim in #511
- Clean up e2e test temp dirs on panic by @0xBEEFCAF3 in #565
- Create new lowercase error catch for uri endpoint fragments by @benalleng in #558
- Fix broken links by @thebrandonlucas in #568
- RFC 9540 directory and receiver by @nothingmuch in #549
- Fix confusing and incorrect test condition by @nothingmuch in #571
- Add additional tests for v2 send module by @benalleng in #554
- Check independent features by @DanGould in #567
- Add additional tests for v1 send module by @benalleng in #556
- Propagate sub-config parsing error by @DanGould in #575
- Handle fetch_ohttp_keys response status by @DanGould in #576
- Use actual ohttp-relay in integration tests by @nothingmuch in #572
- Make InputContributionError public by @spacebear21 in #580
- Make serialize_url and extract_v1 infallible by @spacebear21 in #579
- Opt-in to traffic from arbitrary relays in directory by @nothingmuch in #569
- Specify OHTTP gateway for opt-in respecting ohttp-relay by @nothingmuch in #570
- Update ohttp-relay to 0.0.10 by @DanGould in #587
- Refactor replacement outputs to be an Iterator of ref TxOuts by @benalleng in #529
- Remove redundant
UrlExtimport by @0xBEEFCAF3 in #593 - Fix Payjoin directory docker build by @0xBEEFCAF3 in #592
- Make WellKnownError public by @spacebear21 in #598
- Fix replacement_outputs type in v2 WantsOutputs ...
Release payjoin-cli-0.1.0
Summary
Take the payjoin-cli out of alpha now that the wire protocol is presumed to be stable.
Changelog
- Bump payjoin to 0.23.0 with stable wire protocol
- Allow mixed input scripts #367 #505
- Fix bug to propagate missing config parameter or argument error #441
- Don't pause between long polling requests #463
- Hide danger-local-https feature with _ prefix #423
- Allow specifying a max-feerate for receivers #332
- Fix e2e tests and coverage reporting #443 #497 #532
- Handle recoverable receiver errors by replying to sender with error response #474 #526 #534
- Make config.toml hierarchical #538
- Make v1/v2 features additive #538
What's Changed
- Upgrade rustls v0.22.4 by @DanGould in #290
- Use More Semantic HTTP by @DanGould in #346
- Always clean up the tmp db in e2e tests by @DanGould in #347
- Move common boilerplate in
integrationmodule by @spacebear21 in #348 - Enable hyper-util/tokio for TokioIo by @DanGould in #349
- Add amount checks to integration tests by @spacebear21 in #351
- Remove superfluous debug print by @DanGould in #352
- Depend on bitcoin-ohttp by @DanGould in #354
- Pin tokio-util 0.7.11 for msrv 1.63.0 by @DanGould in #356
- Tx cut-through by @spacebear21 in #332
- Add Cargo-{minimal,recent}.lock to test deps by @DanGould in #357
- Implement client e2ee using HPKE by @DanGould in #355
- Make
try_preserving_privacyparam generic by @DanGould in #361 - Use native rust-bitcoin methods for weight calculations by @spacebear21 in #360
- Allow mixed input scripts in v2 by @spacebear21 in #367
- Make Session Initialization Implicit by @DanGould in #364
- Test that the encrypted payloads are uniform. by @DanGould in #374
- Derive Debug Clone on send,receive mod types by @DanGould in #376
- Add a script to update lock files by @DanGould in #379
- Modify try_preserving_privacy function signature by @spacebear21 in #377
- Minor test script fixes by @nothingmuch in #384
- Expose Sender::extract_v2 for bindings by @DanGould in #382
- Fix clippy warnings and add linting to CI by @spacebear21 in #383
- trivial: chmod a+x contrib/lint.sh by @nothingmuch in #387
- Add code coverage to CI with Coveralls integration by @spacebear21 in #385
- Shorten subdirectory IDs by @nothingmuch in #386
- Avoid uih naming by @DanGould in #400
- Remove unnecessary channel_name helper by @spacebear21 in #409
- Rust bitcoin 0.32.4 by @spacebear21 in #410
- docs: clarify send,receive function documentation by @0xBEEFCAF3 in #407
- Pad ohttp req/res messages to consistent 8192 bytes by @DanGould in #395
- Hide danger-local-https feature with _ prefix by @DanGould in #423
- Work around '#' escaping bug in bip21 crate by @nothingmuch in #373
- Reflect current Contributing practices by @DanGould in #424
- Bump payjoin version to 0.21.0 by @DanGould in #415
- Lint docs by @DanGould in #426
- Document Testing in Contributing section of README by @DanGould in #429
- Tag payjoin-directory v0.0.1 by @DanGould in #413
- Propagate ParseError when retrieving ohttp parameter by @shinghim in #428
- update gitignore with vscode workspace dir by @0xBEEFCAF3 in #438
- fix: the attribute
versionis obsolete by @ethicnology in #439 - Don't pause between long polls by @DanGould in #436
- Propagate errors when retrieving exp parameter by @shinghim in #441
- Propagate error if the fs read for ohttp keys fails during config by @shinghim in #435
- Fix unresumable Sender by @DanGould in #443
- Lint with new rust 1.85.0-nightly by @DanGould in #447
- Make _danger-local-https feature additive by @DanGould in #430
- Join subdir to base pj URL to preserve path by @DanGould in #448
- Fix test flakiness by @spacebear21 in #388
- Fix tests following additive feature changes by @DanGould in #450
- Separate send version modules (part 1) by @DanGould in #453
- add nix flake with dev shells and limited crane based checks by @nothingmuch in #455
- fix #! line in ./contrib/test_local.sh by @nothingmuch in #462
- Abstract send feature error variants into separate feature-specific abstractions by @DanGould in #464
- Make Request impl fns pub(crate) by @DanGould in #467
- Move v1 response handling to V1Context by @DanGould in #469
- Separate receive submodules to be additive by @DanGould in #466
- Remove ohttp_relay from SessionContext by @DanGould in #470
- Handle v2 error by @DanGould in #474
- Avoid stringly typed arguments in payjoin-cli App trait by @nothingmuch in #479
- Enumerate errors for peek_with_timeout by @shinghim in #456
- Set
disableoutputsubstitutionto 'true' if used by @0xBEEFCAF3 in #485 - Separate receive::{v1,v2} error modules by @DanGould in #482
- Follow up from #456: Update path qualifier and introduce module-specific
Resultby @shinghim in #488 - Use FeeRate::BROADCAST_MIN for minfeerate defaults by @DanGould in #493
- send SIGINT instead of SIGKILL in e2e test by @nothingmuch in #497
- use compressed representation for reply key by @nothingmuch in #496
- Organize feature separation for ergonomics by @DanGould in #501
- Introduce
directoryfeature module by @DanGould in #502 - Expose test helpers by @spacebear21 in #484
- Accomodate Updated BIP 78 Spec by @DanGould in #505
- Add cargo llvm-cov to flake devshell by @nothingmuch in #495
- use FeeRate for max_fee_rate arg, and default it to BROADCAST_MIN by @nothingmuch in #491
- Move redis container initialization to test utils by @spacebear21 in #507
- Add appropriate docstrings to test-utils by @DanGould in #510
- Produce
receive::JsonErroraccurately so thatsendcan properly handle it by @DanGould in #506 - Validate_utxo treats missing utxos as an error by @benalleng in #516
- Update lib.rs, Cargo.toml docs by @DanGould in #517
- Remove unwrap() in integration/e2e tests by @s...
Release payjoin-0.23.0
Summary
This release features a first-class persistence abstraction, wire protocol changes for RFC 9540 support, and better compliance with the BIP78 specification. It also pays back a whole bunch of tech debt including enhanced error handling, expanded functionality with new modules and additive features, and improved test infrastructure. There are breaking API and protocol changes as a result.
It also introduces an experimental multiparty sender behind the hidden "_multiparty" feature gate.
Changelog
- Make features additive #430 #466 #501 #518
- Make receiver errors replyable to the sender #474 #506 #526 #606
- Separate error modules #482
- Introduce "directory" feature module #502
- Expose test helpers via payjoin-test-utils crate #484
- Accomodate updated BIP78 spec #505
- Fallback to first candidate if avoid_uih fails #533
- Use IntoUrl trait instead of Url in function signatures #520
- Don't accept invalid certs even in tests #550
- Introduce experimental multiparty sender behind the "_multiparty" feature flag #434
- Add support for RFC 9540 #549 #570 #587
- Fix the
pjosBIP21 parameter to match the BIP78 spec #546 - Introduce mutation testing #573
- Add first-class persistence abstraction #552
- Add many more tests, significantly improving test coverage
What's Changed
- Lint with new rust 1.85.0-nightly by @DanGould in #447
- Make _danger-local-https feature additive by @DanGould in #430
- Join subdir to base pj URL to preserve path by @DanGould in #448
- Fix test flakiness by @spacebear21 in #388
- Fix tests following additive feature changes by @DanGould in #450
- Separate send version modules (part 1) by @DanGould in #453
- add nix flake with dev shells and limited crane based checks by @nothingmuch in #455
- fix #! line in ./contrib/test_local.sh by @nothingmuch in #462
- Abstract send feature error variants into separate feature-specific abstractions by @DanGould in #464
- Make Request impl fns pub(crate) by @DanGould in #467
- Move v1 response handling to V1Context by @DanGould in #469
- Separate receive submodules to be additive by @DanGould in #466
- Remove ohttp_relay from SessionContext by @DanGould in #470
- Handle v2 error by @DanGould in #474
- Avoid stringly typed arguments in payjoin-cli App trait by @nothingmuch in #479
- Enumerate errors for peek_with_timeout by @shinghim in #456
- Set
disableoutputsubstitutionto 'true' if used by @0xBEEFCAF3 in #485 - Separate receive::{v1,v2} error modules by @DanGould in #482
- Follow up from #456: Update path qualifier and introduce module-specific
Resultby @shinghim in #488 - Use FeeRate::BROADCAST_MIN for minfeerate defaults by @DanGould in #493
- send SIGINT instead of SIGKILL in e2e test by @nothingmuch in #497
- use compressed representation for reply key by @nothingmuch in #496
- Organize feature separation for ergonomics by @DanGould in #501
- Introduce
directoryfeature module by @DanGould in #502 - Expose test helpers by @spacebear21 in #484
- Accomodate Updated BIP 78 Spec by @DanGould in #505
- Add cargo llvm-cov to flake devshell by @nothingmuch in #495
- use FeeRate for max_fee_rate arg, and default it to BROADCAST_MIN by @nothingmuch in #491
- Move redis container initialization to test utils by @spacebear21 in #507
- Add appropriate docstrings to test-utils by @DanGould in #510
- Produce
receive::JsonErroraccurately so thatsendcan properly handle it by @DanGould in #506 - Validate_utxo treats missing utxos as an error by @benalleng in #516
- Update lib.rs, Cargo.toml docs by @DanGould in #517
- Remove unwrap() in integration/e2e tests by @spacebear21 in #512
- Clean up feature/module documentation with docs.rs features by @DanGould in #518
- Abstract away
additionalfeecontributionto its own struct by @0xBEEFCAF3 in #521 - Add support for merging unique psbts by @0xBEEFCAF3 in #523
- Cleanup test assertions by @spacebear21 in #519
- Refactor new Request impls to use reference types in the signature by @benalleng in #524
- Remove
merge_unsigned_txdoctest by @0xBEEFCAF3 in #531 - Fix payjoin-cli v1 coverage by @spacebear21 in #532
- Only derive JsonError for errors that can return Json by @DanGould in #526
- Fall back to first candidate if avoid_uih fails by @DanGould in #533
- Remove
map_errs for ImplementationError by @spacebear21 in #536 - Handle receiver contribution errors as
unavailableby @DanGould in #534 - Add missing
#[cfg(test)]tosend::v2test module by @0xBEEFCAF3 in #541 - Use IntoUrl for more ergonomic function signatures by @DanGould in #520
- feat: removed
unwrapfrom v2 of send and recieve by @Gmin2 in #544 - don't accept invalid certs even in tests by @nothingmuch in #550
- Document contributing commit message rules by @DanGould in #548
- Make payjoin-cli v1 / v2 features additive by @DanGould in #538
- Multiparty Senders: NS1R by @0xBEEFCAF3 in #434
- Code spell by @0xBEEFCAF3 in #562
- Change HpkeError::Secp256k1 into the opaque InvalidPublicKey error by @shinghim in #511
- Clean up e2e test temp dirs on panic by @0xBEEFCAF3 in #565
- Create new lowercase error catch for uri endpoint fragments by @benalleng in #558
- Fix broken links by @thebrandonlucas in #568
- RFC 9540 directory and receiver by @nothingmuch in #549
- Fix confusing and incorrect test condition by @nothingmuch in #571
- Add additional tests for v2 send module by @benalleng in #554
- Check independent features by @DanGould in #567
- Add additional tests for v1 send module by @benalleng in #556
- Propagate sub-config parsing error by @DanGould in #575
- Handle fetch_ohttp_keys response status by @DanGould in #576
- Use actual ohttp-relay in integration tests by @nothingmuch in #572
- Make InputContributionError public by @spacebear21 in #580
- Make serialize_url and extract_v1 infallible by @spacebear21 in #579
- Opt-in to traffic from arbitrary relays in directory by @nothingmuch in #569
- Specify OHTTP gateway for opt-in respecting ohttp-relay by @nothingmuch in #570
- Update ohttp-relay to 0.0.10 by @DanGould in #587
- Refactor replacement outputs to be an Iterator of ref TxOuts by @benalleng in #529
- Remove redundant
UrlExtimport by @0xBEEFCAF3 in #593 - Fix Payjoin directory docker build by @0xBEEFCAF3 in #592
- Make WellKnownError public by @spacebear21 in #598
- Fix replacement_outputs type in v2 WantsOutputs by @spacebear21 in #597
- Replace OutputSubstitutionDisabled string context with sub variants by @benalleng in #590
- Correct the pjos parameter parity by @Gmin2 in https://github.com/pay...