]> Untitled Git - bdk-cli/log
bdk-cli
8 hours agoMerge bitcoindevkit/bdk-cli#294: feat(utxo-locking)!: Add commands to lock, unlock... master github/master
merge-script [Sat, 18 Jul 2026 00:19:56 +0000 (01:19 +0100)]
Merge bitcoindevkit/bdk-cli#294: feat(utxo-locking)!: Add commands to lock, unlock and list locked UTXOs

7c2dfac746ca305a73134eda280ed9d9b5730f8a feat(utxo-locking): Limit locking to known utxos (Vihiga Tyonum)
90270f74bf3f3b7b9c96a4e85e911878d6ec3698 fix(bip322): Re-enable bip322 feature (Vihiga Tyonum)
aba6c6605bd2943dc6c831532d1a581e4bc1ace1 feat(utxo-locking): Add tests for utxo locking (Vihiga Tyonum)
d3dde305b5b20f68c32dd72302f82cce0dc73097 fix(bip322): disable bip322 feature (Vihiga Tyonum)
242d4da7feda9a1c2e564c8ebb811e2e018a6e4f feat(utxo-locking): Add wallet locking commands (Vihiga Tyonum)
205d46c15f4e6c54b021d1f5192f6985e1a067c4 feat(cbf): Update bdk_kyoto to v0.17.0 (Vihiga Tyonum)
d89a08d3f6f323da6ff9faf676d2a7a75642aca9 feat(wallet-3.1.0): Update Wallet to v3.1.0 (Vihiga Tyonum)
cbee8a01d33ac4e99a2514084a70d95301b593e4 fix(proxy_opts): add saving and reading proxy_opts (Vihiga Tyonum)
eec81e2cd5d42028da3e921bb979a9aa11c9e849 ref(verbose): Dropped `verbose` flag from tests (Vihiga Tyonum)
dfeb580555bbf5609689fca676dc6886fc13bca0 test(online): Add test transaction full cycle (Vihiga Tyonum)
ae0c32acfa5ef9729ad62a5acb7fc13e969719cd test: Add integration tests for offline wallet ops (Vihiga Tyonum)
b8761bc944fb776870d92e208848f7050b35193d test: Add wallets, descriptor, compile & config (Vihiga Tyonum)
38a709f5127a107da15083b76b3a2e99e14ab9a0 test: Add helper fns & integration tests for key (Vihiga Tyonum)

Pull request description:

  <!-- You can erase any parts of this template not applicable to your Pull Request. -->

  ### Description
  <!-- Describe the purpose of this PR, what's being adding and/or fixed -->

  This PR updates the Wallet API to v3.1.0 and adds wallet subcommands to lock and unlock UTXOs.  Locked outpoints are excluded from coin selection, and the lock state is stored in the wallet. It also updates the `bdk_redb` to v0.2.0 and `bdk_kyoto` to v0.17.0.

  Fixes #293 and builds upon #289 and #278

  ### Notes to the reviewers

  <!-- In this section you can include notes directed to the reviewers, like explaining why some parts
  of the PR were done in a specific way -->

  ## Changelog notice

  <!-- Notice the release manager should include in the release tag message changelog -->
  <!-- See https://keepachangelog.com/en/1.0.0/ for examples -->
  - Update bdk_wallet to v3.1.0
  - Add wallet `lock_utxo` command
  - Add wallet `unlock_utxo` command
  - Add wallet `locked_uxtos` command
  - Update bdk_redb to v0.2.0
  - Update bdk_kyoto to v0.17.0
  - Replace `Network` enum with `NetworkKind`
  - Replace `include_output_redeem_witness_script` with `add_global_xpubs` in TxBuilder
  - Replace `submit_package` with `broadcast_random` for broadcasting transactions in KyotoClient

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### New Features:

  * [ ] I've added tests for the new feature
  * [ ] I've added docs for the new feature
  * [ ] I've updated `CHANGELOG.md`

Top commit has no ACKs.

Tree-SHA512: df9291a93f2231408981d5a90b6164a75e6ca4b6c73e5638fe1c18323ea2be1c1b485bddc86efbfc64620087238df19dcb5274272a1ea27cd8b5dac0f08e6b6b

21 hours agofeat(utxo-locking): Limit locking to known utxos
Vihiga Tyonum [Fri, 17 Jul 2026 10:55:50 +0000 (11:55 +0100)]
feat(utxo-locking): Limit locking to known utxos

- This change removes locking utxos that are not
known to the wallet at the time of locking.

40 hours agofix(bip322): Re-enable bip322 feature
Vihiga Tyonum [Tue, 14 Jul 2026 01:37:57 +0000 (02:37 +0100)]
fix(bip322): Re-enable bip322 feature

- update bdk_bip322 crate with replacement crate
bdk_message_signer
- re-enable bip322 feature
- update documentation for add_global_xpubs fn

7 days agoMerge bitcoindevkit/bdk-cli#300: docs: update cargo features in README to match Cargo...
merge-script [Sat, 11 Jul 2026 03:42:32 +0000 (04:42 +0100)]
Merge bitcoindevkit/bdk-cli#300: docs: update cargo features in README to match Cargo.toml

047bbbe106d485da4d7d9e6fa7e06220b3876b93 docs: update sp code key params in docs example (Vihiga Tyonum)
4a1ff1b4a52ab4b83ad7193cb67a5bebb2339d16 docs: update cargo feature flags in README to match Cargo.toml (musab1258)

Pull request description:

  <!-- You can erase any parts of this template not applicable to your Pull Request. -->

  ### Description

  The README referenced outdated cargo feature flags `kyoto` and `sp`, which will cause build failures for users following the instructions. This commit updates the documentation to use the correct flags `cbf` and `silent-payments` as defined in the current `Cargo.toml`.

  Fixes #299

  ### Notes to the reviewers

  This is a documentation update to the `README.md`. I specifically left the reference to `Kyoto` in the "About" section intact, as it correctly refers to the underlying `bdk_kyoto` library/concept, and only updated the actual Cargo feature flags in the code blocks and feature lists.

  ## Changelog notice

  * Fixed outdated cargo feature flags (`kyoto` -> `cbf` and `sp` -> `silent-payments`) in the README instructions.

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### Bugfixes:

  * [ ] This pull request breaks the existing API
  * [ ] I've added tests to reproduce the issue which are now passing
  * [x] I'm linking the issue being fixed by this PR

Top commit has no ACKs.

Tree-SHA512: 680ff0f96eab3b28585beaf4d6be89c05985edaf61369207fe2d9ac3722a9d8b69fd898885e13847117f8b5481bbf16b0642506321558f08167c2f6f554bfd12

7 days agodocs: update sp code key params in docs example
Vihiga Tyonum [Sat, 11 Jul 2026 03:30:11 +0000 (04:30 +0100)]
docs: update sp code key params in docs example

7 days agodocs: update cargo feature flags in README to match Cargo.toml
musab1258 [Fri, 10 Jul 2026 14:05:19 +0000 (15:05 +0100)]
docs: update cargo feature flags in README to match Cargo.toml

The README referenced outdated compile-time feature flags `kyoto` and `sp`, which caused build failures for users following the instructions. This commit updates the documentation to use the correct flags `cbf` and `silent-payments` as defined in the current Cargo.toml.

8 days agofeat(utxo-locking): Add tests for utxo locking
Vihiga Tyonum [Thu, 9 Jul 2026 08:22:20 +0000 (09:22 +0100)]
feat(utxo-locking): Add tests for utxo locking

-add test for locking, unlocking and listing
locked utxos

9 days agofix(bip322): disable bip322 feature
Vihiga Tyonum [Thu, 9 Jul 2026 08:04:54 +0000 (09:04 +0100)]
fix(bip322): disable bip322 feature

-Temporary disable bip322 feature

9 days agoMerge branch 'master' into feat/utxo-locking
Vihiga Tyonum [Thu, 9 Jul 2026 05:50:06 +0000 (06:50 +0100)]
Merge branch 'master' into feat/utxo-locking

9 days agoMerge bitcoindevkit/bdk-cli#289: test: Implement integration tests
merge-script [Wed, 8 Jul 2026 21:54:54 +0000 (22:54 +0100)]
Merge bitcoindevkit/bdk-cli#289: test: Implement integration tests

6000dd52a79f04752f758e444925afcdc72b19e5 test: Add tests for dns payment instn feature (Vihiga Tyonum)
b4e10817018a901487058f81c031da88323eea7d fix(Justfile): fix test-threads to max 2 (Vihiga Tyonum)
f809a7e3ab10183c663144767d7a87188dc3a55a test: add more tests for createtx, bip322 (Vihiga Tyonum)
a993315dfdbe1ed8450dc5aae974061d43c091e1 test: Add sp createtx test (Vihiga Tyonum)
d71083897a9e61097228b957f8b0ea425297a3df test: add test for multiple recipients and sp code (Vihiga Tyonum)
a040a55ced7b9eda8f20ff7de122c13bd34e0be1 test: add tests for repl, transactions & send_all (Vihiga Tyonum)
f17a7ef871f6cec7c662d582bd46e11cba072c55 fix(repl): Remove null printed after repl output (Vihiga Tyonum)
d425f5b253e861bc5f3432dc9a3f327abbec02f1 test: split tests according to typestate (Vihiga Tyonum)
32937645ea217fe3f2bb512a9511c13f58b674c1 fix(proxy_opts): add saving and reading proxy_opts (Vihiga Tyonum)
3465513c1ebfde2fd35d7a29a748f771f2a9bb0e ref(verbose): Drop `verbose` flag from tests (Vihiga Tyonum)
702d2594afa804aa7985a32dc55559fff7b06da4 test(online): Add test transaction full cycle (Vihiga Tyonum)
c013da05706caff3266aee776024361a35afdea1 test: Add integration tests for offline wallet ops (Vihiga Tyonum)
0d3c1a957457489412be37e0c6a48b8e83795798 test: Add wallets, descriptor, compile & config (Vihiga Tyonum)
d8e2887ec41f3c182131e19e8f1f19f982516f3a test: Add helper fns & integration tests for key (Vihiga Tyonum)

Pull request description:

  <!-- You can erase any parts of this template not applicable to your Pull Request. -->

  ### Description

  <!-- Describe the purpose of this PR, what's being adding and/or fixed -->

  This PR builds on #278 and introduces integration tests for bdk-cli. It replaces manual `std::process::Command` boilerplate with the `assert_cmd` library, allowing us to perform black-box testing against the compiled binary.

  Features covered so far include:

  - key: generate, derive, and restore
  - wallets: list wallets
  - wallet config: save config, read config.
  - descriptor: generate descriptor
  - compile: policy compiler
  - offline wallet operations: new_address, unused_address, balance, unspent, transactions, policies, public_descriptor, create_tx, combine_psbt

  ### Notes to the reviewers

  <!-- In this section you can include notes directed to the reviewers, like explaining why some parts
  of the PR were done in a specific way -->

  ## Changelog notice

  <!-- Notice the release manager should include in the release tag message changelog -->
  <!-- See https://keepachangelog.com/en/1.0.0/ for examples -->
  - Introduces the BdkCli helper struct to inject context state into base commands.
  - Dropped `verbose` flag from wallets as it was applicable to only `Pbst`

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

Top commit has no ACKs.

Tree-SHA512: ea4adf734310f4ec494564f75b904835520b4625547859bf25c529b96f2f7fef823dc220dbe4eaf4856e2dd6fe06daa9f97bddc7a565f5e19185fdeea963202e

9 days agotest: Add tests for dns payment instn feature
Vihiga Tyonum [Wed, 8 Jul 2026 18:55:23 +0000 (19:55 +0100)]
test: Add tests for dns payment instn feature

9 days agofix(Justfile): fix test-threads to max 2
Vihiga Tyonum [Tue, 7 Jul 2026 19:54:21 +0000 (20:54 +0100)]
fix(Justfile): fix test-threads to max 2

- The problem: When running `cargo test --all-
features`, the backends (electrum, rpc, esplora
from TestEnv) run in parallel at the number of
cpus available and exhaust the processes/ports
available, thereby resulting in os error 35.

This fix limits the number of threads that are
available for the tests to run in parallel.

9 days agotest: add more tests for createtx, bip322
Vihiga Tyonum [Tue, 7 Jul 2026 16:04:38 +0000 (17:04 +0100)]
test: add more tests for createtx, bip322

- add tests for OP_RETURN in createtx
- add tests for coin selection in createtx
- add test for esplora client full_scan
- fix clippy issues

9 days agotest: Add sp createtx test
Vihiga Tyonum [Tue, 7 Jul 2026 09:03:51 +0000 (10:03 +0100)]
test: Add sp createtx test

9 days agotest: add test for multiple recipients and sp code
Vihiga Tyonum [Tue, 7 Jul 2026 08:21:50 +0000 (09:21 +0100)]
test: add test for multiple recipients and sp code

9 days agotest: add tests for repl, transactions & send_all
Vihiga Tyonum [Mon, 6 Jul 2026 15:57:04 +0000 (15:57 +0000)]
test: add tests for repl, transactions & send_all

9 days agofix(repl): Remove null printed after repl output
Vihiga Tyonum [Mon, 6 Jul 2026 15:36:33 +0000 (15:36 +0000)]
fix(repl): Remove null printed after repl output

9 days agotest: split tests according to typestate
Vihiga Tyonum [Sun, 5 Jul 2026 21:23:42 +0000 (22:23 +0100)]
test: split tests according to typestate

Multi-line description of commit,
feel free to be detailed.

[Ticket: X]

9 days agofix(proxy_opts): add saving and reading proxy_opts
Vihiga Tyonum [Thu, 25 Jun 2026 17:58:41 +0000 (18:58 +0100)]
fix(proxy_opts): add saving and reading proxy_opts

- add saving proxy_opts for electrum and esplora
clients to config and reading values
- fix prepare_home_dir util fn

9 days agoref(verbose): Drop `verbose` flag from tests
Vihiga Tyonum [Wed, 24 Jun 2026 19:10:27 +0000 (20:10 +0100)]
ref(verbose): Drop `verbose` flag from tests

9 days agotest(online): Add test transaction full cycle
Vihiga Tyonum [Mon, 22 Jun 2026 21:18:00 +0000 (22:18 +0100)]
test(online): Add test transaction full cycle

- Add test for creating, signing, broadcasting tx
- Add test for combining psbt, fee bump and other
psbt related commands
- Add bip322 tests

9 days agotest: Add integration tests for offline wallet ops
Vihiga Tyonum [Fri, 12 Jun 2026 13:10:20 +0000 (14:10 +0100)]
test: Add integration tests for offline wallet ops

- add integration tests for offline wallet
operations

9 days agotest: Add wallets, descriptor, compile & config
Vihiga Tyonum [Fri, 12 Jun 2026 07:05:06 +0000 (08:05 +0100)]
test: Add wallets, descriptor, compile & config

- Add integration tests for wallets, descriptor,
compile and config modules

9 days agotest: Add helper fns & integration tests for key
Vihiga Tyonum [Thu, 11 Jun 2026 12:38:52 +0000 (13:38 +0100)]
test: Add helper fns & integration tests for key

- add BdkCli helper struct and impl methods
- add integration tests for the key subcommand
operations

9 days agoMerge bitcoindevkit/bdk-cli#278: Refactor bdk-cli structure
merge-script [Wed, 8 Jul 2026 21:06:40 +0000 (22:06 +0100)]
Merge bitcoindevkit/bdk-cli#278: Refactor bdk-cli structure

63f769a68f72855c0de7fd7a6f5c459e0ace1b2d revert parallel request wallet parameter (Vihiga Tyonum)
8dc0503ab8887c119ac49d4b490aecb0170aab64 drop verbose flag (Vihiga Tyonum)
5da76608fcd5e0ae340010f19a778750a68a86e1 feat(handlers): mv feats into subdirs in handlers (Vihiga Tyonum)
5951c17152d64f44e5a38deaf369ce8795b81893 feat(dns-payment): port dns payment instruction (Vihiga Tyonum)
b3fe86098e6b35e5280a715e0ff2902161975c4b feat(sp): fix command_requires_db fn match arm (Vihiga Tyonum)
c2ca2ddbdfea5bcc7b8aaeed79bfd39798a2165c ref(payjoin): add payjoin persistence (Vihiga Tyonum)
249948eac1ceb7b83b76d03751669ed0dbde7a35 ref(compile):compile tr desc with rand unspend key (Vihiga Tyonum)
6a6390fcc5b823e1901a7105fa424689947e7dbf feat(WalletEvents): Add wallet events to clients (Vihiga Tyonum)
cb9634fd71d494e27648ca2bfc99013e0e0991f7 ref(create_tx): enforce single recp for sendall (Vihiga Tyonum)
188e68d147f7c548041c802dab2f7c425c3732b8 refactor(runtime): Add address and createtx to db (Vihiga Tyonum)
75b51413d9bdc4f981831cb91dc966318b0dc0a4 refactor(sp-payment): Rebase silent payment feat (Vihiga Tyonum)
aa8876d192d773e9f431bebbc6397f78868661aa refactor(main): add runtime wallet module (Vihiga Tyonum)
63162bed1ba9804486048a401b2c927a66060ce2 refactor(handlers): Apply app context (Vihiga Tyonum)
f3deed85868f15f9b97355d1680d2df6d1432120 Refactor(handlers): Define app context states (Vihiga Tyonum)
5ced5aa764407d0b117b43ddeb6a9addfa15c8ed refactor(output): apply generics to output mod (Vihiga Tyonum)
1b05c0309670574bec54f88aa1354332aed3e452 ref(handlers): fix offline, online and desc mod (Vihiga Tyonum)
dcaeb5534b45e0fd9f46126d9f45556fd0121a92 ref(handlers): refactor config, descr and key mods (Vihiga Tyonum)
f77ddccb9b01ce0fa77e576ca7513554c8e98772 ref(main): add run to handle routing (Vihiga Tyonum)
528956d244a1eb83b255c8e6a37fef66fa3967ea ref(pretty): remove `--pretty` flag (Vihiga Tyonum)
cf9d13bd0974e2eb73a956915e30edf86660feaa ref(persister): collapse wallet subdir to persister (Vihiga Tyonum)
7a0e68bd3379cfe880cc7d25f57e7aaccc1e0ed4 update namespace and update types (Vihiga Tyonum)
eaa4e11428b6443be09afb30b9c8db642f39adad revert mod names for command and clients (Vihiga Tyonum)
ada34858d7e2d2a29dfa7d3ccfd311ff19a919f6 ref(utils): use types in desc output in utils (Vihiga Tyonum)
90017cdf87538b8f4f14496e55c9ee92f7f96d74 ref(handlers): rebase bip322 feature (Vihiga Tyonum)
990f30a7da5e840f3b2d1e68a94dc45235f7874f ref(types): add simple table helper (Vihiga Tyonum)
055e1fd48e993bfe94d83e97b7c66bdcc0aa9930 ref(handlers): add types for desc, key & wallets (Vihiga Tyonum)
a9732732e4d55547489a9768134cdb4093b54fa7 refactor(handlers): Add types for outputting data (Vihiga Tyonum)
3e2eec8e24883fe68a9a25f534793aaf0538b1bb ref(main): update main entry point (Vihiga Tyonum)
0bf3e66c7f733fed152171e0dab63f070d24ff10 ref(handlers): split handler fns into repl (Vihiga Tyonum)
bf0551b71c5da8cce5b3200f47202dd787e46a65 ref(handlers):mv handler fns into offline & others (Vihiga Tyonum)
03307c96cf6e19238021949da9b805a0b3aafdd2 ref(handlers): split handlers into config, key (Vihiga Tyonum)
eb3a6aa7798a9994b4a69a85abc65a32163b945f ref(persister): mv persister into wallet subdir (Vihiga Tyonum)
24820444164026b47d0b8909b6e795872e6b92c8 ref(utils): refactor utils into utils subdir (Vihiga Tyonum)
739dec3f3f46330416d2395bf1f992f1abd531c4 ref(config): move config into config subdir (Vihiga Tyonum)
5c286d64aec3f1b34a889047222dd1c559e9d4a6 ref(commands): mv commands & clients into subdirs (Vihiga Tyonum)

Pull request description:

  <!-- You can erase any parts of this template not applicable to your Pull Request. -->

  ### Description

  This PR restructures the bdk-cli codebase to move away from a monolithic handling model towards a modular architecture. The primary goal is to improve code readability, simplify the addition of new features, and decouple core logic into smaller modules.

  Fixes #273

  <!-- Describe the purpose of this PR, what's being adding and/or fixed -->

  ### Notes to the reviewers

  While trying to achieve the above-stated goal, I took maximum care to avoid introducing new bugs. As a result, the existing execution logic was preserved as much as possible.

  <!-- In this section you can include notes directed to the reviewers, like explaining why some parts
  of the PR were done in a specific way -->

  This PR introduces two new subdirectories under `src`:

   - handlers: This contains all the subcommands' execution logic grouped logically according to the top-level commands.  Modules include the `config`, `descriptor`, `key`, `offline`, `online` and `repl` modules. They each contain structures for the subcommand, execution logic, and implementation of the top-level enum.
   - utils: This subdirectory contains helper functions used across the app. They are also grouped logically according to related functionality. So far, we have the descriptor-related module, the output that formats responses, and the `types` module that defines response structures.

   **Other notable changes**

   - main module is retained with added functionality of routing requests to the right module for execution.
   - All client-related functionalities have been moved from various modules into the `client` module, and it defines the enum that holds all the available clients, as well as implements the functionalities such as broadcasting transactions and syncing operations.
   - The `AppCommand` trait that defines how each subcommand should be structured and the `execute` method they should implement.
   - The `AppContext` struct that holds the universal parameters that subcommands may need. Each subcommand's `execute` method accepts this struct and uses the params for its execution.
   - The output module in the util subdirectory attempts to present a uniform presentation layer by having an output trait, the `FormatOutput` trait, which is implemented by all `types` presenting data response to the user.
   - Collapsed the `wallet` subdirectory into the `persister` module that defines all structures and functionalities related to persistence.
   - Introduced a type state pattern for the AppContext: To minimise runtime errors, the `Init`, `OfflineOperations` and `OnlineOperations` state structs were introduced, and AppContext is generic over these states. This moved the validation from runtime to compile time.
  - Introduced `FormatOutput::write_out` and made it generic over the Write trait to allow for flexibility in testing
  - Extracted all initialisation logic (database, config loading and persistence initialisation) into `runtime` module. Also, added the `RuntimeWallet` enum to return options of a persisted wallet and a standard non-persisted wallet. The WalletRuntime struct is a wrapper that determines the type of wallet needed and initialises it and handles loading of a wallet from config.

  **Request-Response Cycle**

  The following outlines how requests are handled and responses are generated after introducing changes to the structure:

  1. When a user enters a set of commands, those commands are received and parsed by the Clap library into Rust structures, such as `CliOpts`, `WalletOpts`, and subcommands. This process takes place in the `commands` module.

  2. The parsed request is then passed to the `main` module. The main module uses the `runtime` module to interpret the request and initialize any necessary resources (such as wallets, databases, and clients) needed to fulfill the request. It then routes the request to the appropriate handler for execution.

  3. Once a particular handler receives the request along with all the required resources, it processes the specific command using the `AppContext` and prepares a response.

  4. After processing is complete, the handler calls the `output` module to format the result, serialize it into JSON, and return it to the terminal.

  ## Changelog notice

     - In the `key derive` subcommand, when printing help message, the clap arg for env=“PATH” often pull all system and displays all system paths. This has been changed to derivation_path I.e. env=“DERIVATION_PATH” to prevent clap from picking the system paths and rendering it
     - Moved the wallet subdirectory that served as persister into the persister module
     - Moved DatabaseType enum from commands module into persister module
     - Removed the —pretty flag

  <!-- Notice the release manager should include in the release tag message changelog -->
  <!-- See https://keepachangelog.com/en/1.0.0/ for examples -->

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

Top commit has no ACKs.

Tree-SHA512: e63ed0693e2580fe80fca278e0ad1f7feacccda32f3e7262d57cff1bdf4e9850e2463dfeee1cbcfad4ce1502fd19d3861d5012705e051d19831def8832b6780a

9 days agorevert parallel request wallet parameter
Vihiga Tyonum [Wed, 8 Jul 2026 17:24:01 +0000 (18:24 +0100)]
revert parallel request wallet parameter

- remove braces for unit type structs

9 days agodrop verbose flag
Vihiga Tyonum [Wed, 8 Jul 2026 16:32:39 +0000 (17:32 +0100)]
drop verbose flag

9 days agofeat(handlers): mv feats into subdirs in handlers
Vihiga Tyonum [Wed, 8 Jul 2026 15:22:46 +0000 (16:22 +0100)]
feat(handlers): mv feats into subdirs in handlers

9 days agofeat(dns-payment): port dns payment instruction
Vihiga Tyonum [Wed, 8 Jul 2026 12:42:01 +0000 (13:42 +0100)]
feat(dns-payment): port dns payment instruction

- migrate dns payment instruction feature

9 days agoMerge branch 'master' into ref/restructure-project
Vihiga Tyonum [Wed, 8 Jul 2026 09:48:41 +0000 (10:48 +0100)]
Merge branch 'master' into ref/restructure-project

9 days agoMerge bitcoindevkit/bdk-cli#236: feat: add BIP353 DNS payment instructions
merge-script [Wed, 8 Jul 2026 08:28:33 +0000 (09:28 +0100)]
Merge bitcoindevkit/bdk-cli#236: feat: add BIP353 DNS payment instructions

943b4b648f89c1958cbf5bcd085b28e80e1077a1 fix: separate CreateTx from CreateDnsTx (Sonkeng Maldini)
550918c1c83fbdd941880a7a837fce29550b0a77 fix: unifying recipients before send (Sonkeng Maldini)
6ea1b217a695ba4bb9f1a27b4b2ca1e49fc68801 fix: add log when resolving (Sonkeng Maldini)
e3c8efcf6d805beff974fc0c1dfa7545f42045c1 discard pretty flag and apply reviews (Sonkeng Maldini)
7a2c5dfef61885494391a88d23ebc6edd14add3e feat: integrate BIP 353 dns payment instructions (Sonkeng Maldini)

Pull request description:

  <!-- You can erase any parts of this template not applicable to your Pull Request. -->

  ### Description

  This PR adds support for BIP353 payment instructions.
  The following notable changes are done:

  - Adding of an option `resolve_dns_recipient` which receives a Human Readable Name (HRN) and returns the associated address
  - Modify the `create_tx` for it to support user specifying recipients as `HRN`.

  ### Notes to the reviewers

  <!-- In this section you can include notes directed to the reviewers, like explaining why some parts
  of the PR were done in a specific way -->
  Here is a list of HRN that could be used to test the implementation:
  - pay@dunxen.dev: Supports BOLT 12 Payment method only (CAUTION: mainnet)
  - send.some@satsto.me: Supports BOLT 12 payment and On Chain (CAUTION: mainnet)
  - Testing resolving: `bdk-cli -n testnet resolve_dns_recipient testnet@bitdevsyde.org`
  - Testing create tx: `bdk-cli -n testnet wallet -w regtest_default_wallet create_tx --to "bcrt1qe497k549sgw9trzym50tdlegq3xx4apjqynjqm:1000" --to_dns "testnet@bitdevsyde.org:5000"`

  ## Changelog notice

  <!-- Notice the release manager should include in the release tag message changelog -->
  <!-- See https://keepachangelog.com/en/1.0.0/ for examples -->

  - Add top level command `resolve_dns_recipient` to resolve the DNS payment instructions
  - Add option `--to_dns` to `create_tx` command to allow sending to a Human Readable Name (HRN)

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### New Features:

  * [ ] I've added tests for the new feature
  * [ ] I've added docs for the new feature
  * [ ] I've updated `CHANGELOG.md`

Top commit has no ACKs.

Tree-SHA512: 1bd0d0b26e80f3a271c647cd81ae5e7ab9e6813c7b1776141f05765519bcbc27025801f69f3f9cb72e1ecbe4314373d5e9c3262dfd8a4a1511d176a04bedad3d

10 days agofix: separate CreateTx from CreateDnsTx
Sonkeng Maldini [Mon, 6 Jul 2026 20:06:10 +0000 (21:06 +0100)]
fix: separate CreateTx from CreateDnsTx

10 days agofix: unifying recipients before send
Sonkeng Maldini [Wed, 17 Jun 2026 16:53:17 +0000 (17:53 +0100)]
fix: unifying recipients before send

10 days agofix: add log when resolving
Sonkeng Maldini [Tue, 26 May 2026 11:14:17 +0000 (12:14 +0100)]
fix: add log when resolving

10 days agodiscard pretty flag and apply reviews
Sonkeng Maldini [Mon, 25 May 2026 17:37:28 +0000 (18:37 +0100)]
discard pretty flag and apply reviews

10 days agofeat: integrate BIP 353 dns payment instructions
Sonkeng Maldini [Wed, 7 Jan 2026 21:56:11 +0000 (22:56 +0100)]
feat: integrate BIP 353 dns payment instructions

10 days agofeat(sp): fix command_requires_db fn match arm
Vihiga Tyonum [Sun, 5 Jul 2026 02:37:46 +0000 (03:37 +0100)]
feat(sp): fix command_requires_db fn match arm

13 days agoMerge 'master' into refactor/restructure-project
Vihiga Tyonum [Sun, 5 Jul 2026 02:33:06 +0000 (03:33 +0100)]
Merge 'master' into refactor/restructure-project

13 days agoref(payjoin): add payjoin persistence
Vihiga Tyonum [Sun, 5 Jul 2026 02:07:10 +0000 (03:07 +0100)]
ref(payjoin): add payjoin persistence

- Adds payjoin persistence

13 days agoref(compile):compile tr desc with rand unspend key
Vihiga Tyonum [Sat, 4 Jul 2026 11:01:20 +0000 (12:01 +0100)]
ref(compile):compile tr desc with rand unspend key

- add compile taproot descriptor with randomized
unspendable internal key

13 days agofeat(WalletEvents): Add wallet events to clients
Vihiga Tyonum [Sat, 4 Jul 2026 10:38:46 +0000 (11:38 +0100)]
feat(WalletEvents): Add wallet events to clients

- Update bdk_wallet to v2.4.0 and other deps
- Add wallet events to RPC, electrum, esplora and
kyoto clients

13 days agoref(create_tx): enforce single recp for sendall
Vihiga Tyonum [Sat, 4 Jul 2026 10:13:21 +0000 (11:13 +0100)]
ref(create_tx): enforce single recp for sendall

2 weeks agoMerge bitcoindevkit/bdk-cli#242: Payjoin persistence
merge-script [Thu, 2 Jul 2026 11:45:01 +0000 (12:45 +0100)]
Merge bitcoindevkit/bdk-cli#242: Payjoin persistence

2f14a368158dbeacfc9420587a85fb7b29e2ab07 Retry Payjoin requests with other relays (Mshehu5)
6fb0ecd00e089a8cd2d8eecf46e8f6ac48dc4033 Restrict payjoin inputs to confirmed UTXOs (Mshehu5)
262ce86573a98bfe33cb92d52d2da0acece32538 Add payjoin persistence test (Mshehu5)
e85a92cd655b7d44a401f01ca86dad782e04e54b Prune stale payjoin sessions on DB open (Mshehu5)
181d1325ae5fae60c47c47df7c079abebc84c595 chore(deps): Bump payjoin and enable reqwest rustls (Mshehu5)
b9ca88ff6fbd8846d9f6122a7695cc129b71ad8a Document payjoin recovery commands and SQLite setup (Mshehu5)
559ba76255adaa2ab129c5df63d796ae53f5ac67 Add commands to resume and view payjoin history (Mshehu5)
4f71144a49047c9debd481cbb2a75cd86d462906 Integrate payjoin session persistence into workflow (Mshehu5)
c2bdb3d53f503d9ce58cb2c43771320a89aefdf4 Add SQLite backing store for payjoin sessions (Mshehu5)

Pull request description:

  ### Description
  https://github.com/bitcoindevkit/bdk-cli/pull/230 needed to be merged for this to go through
  Address https://github.com/bitcoindevkit/bdk-cli/issues/149 also follow up to #200
  This PR adds persistance to existing async payjoin integration
  This introduces neccessary database model and tables also  add commad for resume to allow interrupted sessions to be continued also a particular session either send or receive.
  A history commad to view payjoin history and status has been added

  ### Notes to the reviewers

  Step to review this include making a payjoin transaction

  Run a receiver to get a BIP21 URI then pass it to the sender as seen in docs https://github.com/bitcoindevkit/bdk-cli/blob/b9cf2acc5f10db46fa30777ff0910b8610a5fc33/README.md?plain=1#L121-L141

  To test resumption, interrupt either side with Ctrl+C mid-session then run resume on that side to continue. A few scenarios worth covering: receiver resuming after interrupt and sender resuming after interrupt. Use history after each scenario to confirm the session state was persisted correctly.

  docs for this can be seen in 7e4ffd1d3ad1165a7d9187bcacb0bdab3303dbb3

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### New Features:
  * [x] I've added docs for the new feature

Top commit has no ACKs.

Tree-SHA512: 1e8be24fbf7d894687389192381242cebafcaffd8601418e197cfb7942917cbcd5ae308ed5e9fcc644c1dacb78abed9aa23c49c5ff08151b4657956e89d14217

2 weeks agoRetry Payjoin requests with other relays
Mshehu5 [Sun, 28 Jun 2026 16:01:25 +0000 (17:01 +0100)]
Retry Payjoin requests with other relays

Payjoin currently keeps using the relay selected during OHTTP key
bootstrapping. If that relay goes offline, the session fails even when
other relay URLs were supplied.

Select from the available relays for each OHTTP request and remember
failures for the rest of the command. Build a fresh request for every
attempt so failover does not reuse linkable OHTTP ciphertext.

2 weeks agoRestrict payjoin inputs to confirmed UTXOs
Mshehu5 [Sat, 6 Jun 2026 11:24:36 +0000 (12:24 +0100)]
Restrict payjoin inputs to confirmed UTXOs

Prevent wallet failures caused by selecting unconfirmed coins for
payjoin inputs.

Without this filter, the wallet can fail with an "unconfirmed
coins" error during payjoin processing.

2 weeks agoAdd payjoin persistence test
Mshehu5 [Fri, 29 May 2026 10:53:44 +0000 (11:53 +0100)]
Add payjoin persistence test

Cover the new payjoin persistence paths with focused unit tests.

Exercise replay protection, sender and receiver event persistence,
session pruning and history rendering.

These cases were chosen because the PR's new behavior is
concentrated in the persistence layer and session history path

2 weeks agoPrune stale payjoin sessions on DB open
Mshehu5 [Tue, 14 Apr 2026 14:54:06 +0000 (15:54 +0100)]
Prune stale payjoin sessions on DB open

Delete payjoin sessions older than 30 days when the payjoin database is accessed. Remove related event rows in the same cleanup pass.

2 weeks agochore(deps): Bump payjoin and enable reqwest rustls
Mshehu5 [Mon, 13 Apr 2026 11:26:28 +0000 (12:26 +0100)]
chore(deps): Bump payjoin and enable reqwest rustls

Move to payjoin 0.25.0 to stay closer to the latest release.

Enable rustls for the direct reqwest client because Payjoin
polling uses bdk-cli's own HTTPS client and without a TLS
backend the first relay poll fails.

Refine the skipped monitoring status message for the receiver
flow.

2 weeks agoDocument payjoin recovery commands and SQLite setup
Mshehu5 [Mon, 16 Feb 2026 13:51:18 +0000 (14:51 +0100)]
Document payjoin recovery commands and SQLite setup

Update the README to cover the new `resume` and `history` commands
so users can recover interrupted payjoin sessions and inspect saved
session state. Also add the SQLite dependency needed for the
payjoin persistence workflow.

This keeps the user-facing setup and command documentation aligned
with the new persistence and recovery behavior.

2 weeks agoAdd commands to resume and view payjoin history
Mshehu5 [Mon, 16 Feb 2026 13:50:06 +0000 (14:50 +0100)]
Add commands to resume and view payjoin history

Expose persisted payjoin session state through CLI commands so users
can recover interrupted sessions and review prior session progress.
Add `resume` to continue pending sender and receiver sessions,
`history` to list saved sessions, status text helpers for clearer
output, and session ID filtering to target a specific session.

This improves recovery and troubleshooting for long-running async
payjoin flows by making persisted session state available from the
CLI.

2 weeks agoIntegrate payjoin session persistence into workflow
Mshehu5 [Mon, 16 Feb 2026 13:48:33 +0000 (14:48 +0100)]
Integrate payjoin session persistence into workflow

Wire the payjoin persistence layer into the existing send and receive
flows so session state is saved during normal operation and can be
replayed later. Initialize the database from the handlers, replace
the noop persisters with SQLite-backed persisters, resume existing
sessions, and record seen inputs in the receiver flow for replay
protection.

This moves persistence from a standalone storage layer into the
runtime payjoin workflow so interrupted sessions can continue from
saved state instead of starting over. It also simplifies error
handling by relying on `?` once the storage errors map cleanly into
the CLI error type.

2 weeks agoAdd SQLite backing store for payjoin sessions
Mshehu5 [Mon, 16 Feb 2026 13:31:08 +0000 (14:31 +0100)]
Add SQLite backing store for payjoin sessions

Persist payjoin sender and receiver state in SQLite so interrupted
payjoin sessions can be resumed after the CLI exits. Add dedicated
tables for send and receive sessions, append-only event logs for
state replay, receiver pubkey lookup for sender sessions, and
seen-input tracking for replay protection.

This follows the intended async payjoin design by persisting session
state across interruptions. SQLite keeps the initial persistence
backend simple and builds on existing rusqlite support, at the cost
of a small payjoin-specific schema and serialization layer.

2 weeks agoMerge bitcoindevkit/bdk-cli#248: Update Wallet to 2.4.0 and other deps
merge-script [Tue, 30 Jun 2026 19:38:29 +0000 (20:38 +0100)]
Merge bitcoindevkit/bdk-cli#248: Update Wallet to 2.4.0 and other deps

eea5ba9a44cf82a10eca47f77a66c2e0822e1d3f chore: update bdk_electrum and bdk_esplora (Vihiga Tyonum)
4b6094a4b7b379c589e00bd7cad4756a874c83c0 feat(WalletEvent): Add WalletEvent to rpc and cbf (Vihiga Tyonum)
3aa50416de33cb795210b71087da0c9682f90997 chore(update-deps): Fix clippy warnings (Vihiga Tyonum)
a3c6d6eb83e10324723c820b40e6adbe55e652c2 chore: Update project dependencies (Vihiga Tyonum)
06b049d7aba5919446a7851f0dc9efdd9a654052 chore: Update bdk_wallet to v2.3 (Vihiga Tyonum)

Pull request description:

  <!-- You can erase any parts of this template not applicable to your Pull Request. -->

  ### Description
  This PR updates the Wallet API to v2.4.0 and other dependencies. It also adds WalletEvent to both sync and full_scan for all backends.

  Fixes #243

  <!-- Describe the purpose of this PR, what's being adding and/or fixed -->

  ## Changelog notice
  - Update bdk_wallet to v2.4.0
  - Add WalletEvents to all backends Esplora, Electrum, Rpc and CBF.
  - Add `print_wallet_events` function to print wallet events to the terminal during sync
  - Update bdk_bitcoind_rpc to v0.22.0
  - Update bdk_electrum to v0.24.0
  - Update bdk_kyoto to v0.15.4
  - Update bdk_esplora to v0.22.2

  <!-- Notice the release manager should include in the release tag message changelog -->
  <!-- See https://keepachangelog.com/en/1.0.0/ for examples -->

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

Top commit has no ACKs.

Tree-SHA512: 2c3c2beb66d1f23fd3e0e30a86622625a51ae5a4092540a9393188cf46523977a05936f893d06149459a65877527b9d52dd9eca00b08a86d59b2ed671b469a2c

2 weeks agochore: update bdk_electrum and bdk_esplora
Vihiga Tyonum [Sun, 28 Jun 2026 19:40:46 +0000 (20:40 +0100)]
chore: update bdk_electrum and bdk_esplora

- update bdk_electrum to v0.24.0
- update bdk_esplora to v0.22.2

2 weeks agofeat(WalletEvent): Add WalletEvent to rpc and cbf
Vihiga Tyonum [Sun, 28 Jun 2026 18:31:15 +0000 (19:31 +0100)]
feat(WalletEvent): Add WalletEvent to rpc and cbf

- add WalletEvent to rpc and cbf clients
- Update Wallet to v2.4.0

2 weeks agochore(update-deps): Fix clippy warnings
Vihiga Tyonum [Tue, 31 Mar 2026 21:13:40 +0000 (22:13 +0100)]
chore(update-deps): Fix clippy warnings

2 weeks agochore: Update project dependencies
Vihiga Tyonum [Fri, 13 Mar 2026 13:13:09 +0000 (14:13 +0100)]
chore: Update project dependencies

- update bdk_bitcoind_rpc to v0.22.0
- update bdk_electrum to v0.23.2
- update bdk_kyoto to v0.15.4

2 weeks agochore: Update bdk_wallet to v2.3
Vihiga Tyonum [Wed, 11 Feb 2026 16:34:15 +0000 (17:34 +0100)]
chore: Update bdk_wallet to v2.3

- Add wallet events to full_scan and sync
subcommands

2 weeks agofeat(utxo-locking): Add wallet locking commands
Vihiga Tyonum [Tue, 30 Jun 2026 14:19:29 +0000 (15:19 +0100)]
feat(utxo-locking): Add wallet locking commands

- add wallet commands to lock, unlock and list
locked utxos
- update unspent command to show status of each
outpoint

2 weeks agofeat(cbf): Update bdk_kyoto to v0.17.0
Vihiga Tyonum [Tue, 30 Jun 2026 13:07:16 +0000 (14:07 +0100)]
feat(cbf): Update bdk_kyoto to v0.17.0

- update bdk_kyoto to v0.17.0
- add ew broadcast/subscriber API for KyotoClient

2 weeks agofeat(wallet-3.1.0): Update Wallet to v3.1.0
Vihiga Tyonum [Tue, 30 Jun 2026 12:39:52 +0000 (13:39 +0100)]
feat(wallet-3.1.0): Update Wallet to v3.1.0

- Update bdk_wallet to v3.1.0
- Replaced Network enum with NetworkKind
- Replaced `include_output_redeem_witness_script`
with `add_global_xpubs`
- update bdk_redb to v0.2.0

2 weeks agoMerge bitcoindevkit/bdk-cli#291: fix(create_tx): enforce single recipient for send_all
merge-script [Mon, 29 Jun 2026 08:51:35 +0000 (09:51 +0100)]
Merge bitcoindevkit/bdk-cli#291: fix(create_tx): enforce single recipient for send_all

50d248cfc482bf5d7807b84182e7f19b104ab49b fix(create_tx): enforce single recipient for send_all (Artemiy)

Pull request description:

  Closes #290

  ### Description

  Previously, passing multiple `--to` arguments with `--send_all` would silently drain the wallet to only the first recipient, ignoring the rest. This was inconsistent with the silent-payments `create_tx`, which already validates the recipient count.

  Now returns an error unless exactly one recipient is provided.

  ### Notes to the reviewers

  - The fix mirrors the validation logic already present in the silent-payments `create_tx` branch of the same file, so behavior is now consistent between the two code paths.

  ## Changelog notice
  - Fixed create_tx --send_all to reject multiple recipients instead of silently using only the first one

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  * [x] I've updated `CHANGELOG.md`

  #### Bugfixes:

  * [ ] This pull request breaks the existing API
  * [ ] I've added tests to reproduce the issue which are now passing
  * [x] I'm linking the issue being fixed by this PR

ACKs for top commit:
  tvpeter:
    ACK 50d248cfc482bf5d7807b84182e7f19b104ab49b
  va-an:
    ACK 50d248cfc482bf5d7807b84182e7f19b104ab49b

Tree-SHA512: c462aebe4ba046e875f8a9981aef01eb85bc1f24ab122c6c9efb9f4569daf9349f7aefcbe42dad7bb2b144d06bae62da7af7419a392bde19d58980305b6ebaf9

2 weeks agoMerge bitcoindevkit/bdk-cli#225: feat(compile): compile taproot descriptor with rando...
merge-script [Sun, 28 Jun 2026 02:59:56 +0000 (03:59 +0100)]
Merge bitcoindevkit/bdk-cli#225: feat(compile): compile taproot descriptor with randomized unspendable internal key

03f6b98d4b0af77fc8a60104a4e1f5cdae3b0c1c test(handlers): drop redundant cfg gate on test module (Vadim Anufriev)
be6bb4b4049ced27ac6d937dd3e47dc5e0182303 docs: add pre-push recipe description to README (Vadim Anufriev)
6e113b1325e264cc4547bd6c3bad890ea6006722 docs(contributing): update CONTRIBUTING.md (Vadim Anufriev)
29ef2e2912a6503086682c33b7ffda21f4c0eed7 refactor(compile): lazy compilation and use pipe for readability (Vadim Anufriev)
a3ca537661dbb80620355b6dae296a836701f93c feat(compile): randomize unspendable internal key for taproot descriptor (Vadim Anufriev)
dd125049ca17f40aae28dead441660b2c201b495 chore(deps): make shlex a non-optional dependency (Vadim Anufriev)

Pull request description:

  ### Description

  Part of #218

  Implements randomization of the unspendable internal key for taproot descriptors. This is the first part of #218, which consists of two parts:
  1. **This PR**: Randomize unspendable internal key for taproot descriptor
  2. **Follow-up**: Add verification command to ensure internal key is derived from NUMS key

  Split into separate PRs for easier review and iteration, and to allow independent discussion of the verification command implementation, as one of the possible approaches could introduce breaking changes.

  ### Notes to the reviewers
  The `compile` command now returns an additional `r` field for taproot descriptors (`-t tr`), containing the randomly generated internal key. Each compilation will produce a different internal key instead of using a fixed NUMS key.

  Example output for taproot (first execution):
  ```
  -> % bdk-cli compile "pk(A)" -t tr
  {
    "descriptor": "tr(2dd09dd0355f4b2d5a4886de599786f3c0211652373221c87aba1cd1f7f1e593,pk(A))#anvu48aj",
    "r": "275a58827bd0ad459d6f92e083ddc3d99a03076155691680eb8f3b06380cdcfd"
  }
  ```

  Same descriptor compiled again produces different `r` and internal key:
  ```
  -> % bdk-cli compile "pk(A)" -t tr
  {
    "descriptor": "tr(801078f69dae7d95631723d4d13e6c32911633d227dcfc24c6b7e32e1e533e6c,pk(A))#f79rr82j",
    "r": "5e3ac63bb20d6a4bfff645279cc63a7472e18066da8826b13cbcb23aecb5c401"
  }
  ```

  Other descriptor types remain unchanged:
  ```
  -> % bdk-cli compile "pk(A)" -t sh
  {
    "descriptor": "sh(pk(A))#k80zhe7s"
  }
  ```

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### New Features:

  * [x] I've added tests for the new feature
  * [ ] I've added docs for the new feature
  * [ ] I've updated `CHANGELOG.md`

Top commit has no ACKs.

Tree-SHA512: 333a7e82007dfe2344f14fb8e1fb7b3f5c19d99677251a97f7909a285607c399aeacfbbca089117677a859da6dfc55a4853b36f1773ed3e70292433e27bfcfd0

3 weeks agofix(create_tx): enforce single recipient for send_all
Artemiy [Sun, 21 Jun 2026 07:11:17 +0000 (10:11 +0300)]
fix(create_tx): enforce single recipient for send_all

Previously, passing multiple --to arguments with --send_all would
silently drain the wallet to only the first recipient, ignoring the
rest. This was inconsistent with the silent-payments create_tx, which
already validates the recipient count.

Now returns an error unless exactly one recipient is provided

3 weeks agofix(proxy_opts): add saving and reading proxy_opts
Vihiga Tyonum [Thu, 25 Jun 2026 17:58:41 +0000 (18:58 +0100)]
fix(proxy_opts): add saving and reading proxy_opts

- add saving proxy_opts for electrum and esplora
clients to config and reading values
- fix prepare_home_dir util fn

3 weeks agoref(verbose): Dropped `verbose` flag from tests
Vihiga Tyonum [Wed, 24 Jun 2026 19:10:27 +0000 (20:10 +0100)]
ref(verbose): Dropped `verbose` flag from tests

3 weeks agotest(online): Add test transaction full cycle
Vihiga Tyonum [Mon, 22 Jun 2026 21:18:00 +0000 (22:18 +0100)]
test(online): Add test transaction full cycle

- Add test for creating, signing, broadcasting tx
- Add test for combining psbt, fee bump and other
psbt related commands
- Add bip322 tests

3 weeks agotest: Add integration tests for offline wallet ops
Vihiga Tyonum [Fri, 12 Jun 2026 13:10:20 +0000 (14:10 +0100)]
test: Add integration tests for offline wallet ops

- add integration tests for offline wallet
operations

3 weeks agotest: Add wallets, descriptor, compile & config
Vihiga Tyonum [Fri, 12 Jun 2026 07:05:06 +0000 (08:05 +0100)]
test: Add wallets, descriptor, compile & config

- Add integration tests for wallets, descriptor,
compile and config modules

3 weeks agotest: Add helper fns & integration tests for key
Vihiga Tyonum [Thu, 11 Jun 2026 12:38:52 +0000 (13:38 +0100)]
test: Add helper fns & integration tests for key

- add BdkCli helper struct and impl methods
- add integration tests for the key subcommand
operations

3 weeks agorefactor(runtime): Add address and createtx to db
Vihiga Tyonum [Mon, 22 Jun 2026 15:07:28 +0000 (16:07 +0100)]
refactor(runtime): Add address and createtx to db

- Add new address, unused address and createtx
commands to list of commands that require
loading existing db
- adding persisting changes in offline and online
commands

5 weeks agorefactor(sp-payment): Rebase silent payment feat
Vihiga Tyonum [Sat, 6 Jun 2026 11:12:01 +0000 (12:12 +0100)]
refactor(sp-payment): Rebase silent payment feat

- rebase silent payment feature

6 weeks agorefactor(main): add runtime wallet module
Vihiga Tyonum [Sun, 31 May 2026 11:00:52 +0000 (12:00 +0100)]
refactor(main): add runtime wallet module

- add wallet runtime module to serve as context
manager
- fix clippy errors

6 weeks agorefactor(handlers): Apply app context
Vihiga Tyonum [Fri, 29 May 2026 03:24:41 +0000 (04:24 +0100)]
refactor(handlers): Apply app context

- apply app context with state to all the modules
- cover case for commands when db is not required

6 weeks agoRefactor(handlers): Define app context states
Vihiga Tyonum [Fri, 29 May 2026 03:17:56 +0000 (04:17 +0100)]
Refactor(handlers): Define app context states

- Define Init state for when an execution does
not need either the wallet or client for execution
- Define the Offline wallet operations state
for app context when an execution envt needs
 a wallet
- Define the online wallet operations state for
appcontext when an execution needs both the
wallet and client
- make app context generic over the state
- make the app command and async app command
generic over the execution context
- deleted shorten fn as it was applicable to the
pretty flag
- removed tests for pretty flag

6 weeks agorefactor(output): apply generics to output mod
Vihiga Tyonum [Tue, 26 May 2026 08:27:26 +0000 (09:27 +0100)]
refactor(output): apply generics to output mod

6 weeks agoref(handlers): fix offline, online and desc mod
Vihiga Tyonum [Thu, 21 May 2026 15:23:38 +0000 (16:23 +0100)]
ref(handlers): fix offline, online and desc mod

- fix execution logic for subcommands under
offline and online wallet subcommands

6 weeks agoref(handlers): refactor config, descr and key mods
Vihiga Tyonum [Thu, 21 May 2026 15:22:04 +0000 (16:22 +0100)]
ref(handlers): refactor config, descr and key mods

- move execution logic into config, desc and key
modules

6 weeks agoref(main): add run to handle routing
Vihiga Tyonum [Thu, 21 May 2026 15:20:00 +0000 (16:20 +0100)]
ref(main): add run to handle routing

- add run fn in main to handle routing

6 weeks agoref(pretty): remove `--pretty` flag
Vihiga Tyonum [Thu, 21 May 2026 15:17:39 +0000 (16:17 +0100)]
ref(pretty): remove `--pretty` flag

- remove --pretty flag
- move types to utils
- update commands

6 weeks agoref(persister): collapse wallet subdir to persister
Vihiga Tyonum [Thu, 21 May 2026 14:59:56 +0000 (15:59 +0100)]
ref(persister): collapse wallet subdir to persister

- move wallet subdir into the persister module
to simplify the structure as wallet was confusing

6 weeks agoupdate namespace and update types
Vihiga Tyonum [Thu, 14 May 2026 10:13:27 +0000 (11:13 +0100)]
update namespace and update types

6 weeks agorevert mod names for command and clients
Vihiga Tyonum [Thu, 14 May 2026 10:09:22 +0000 (11:09 +0100)]
revert mod names for command and clients

6 weeks agoref(utils): use types in desc output in utils
Vihiga Tyonum [Wed, 29 Apr 2026 15:35:19 +0000 (16:35 +0100)]
ref(utils): use types in desc output in utils

6 weeks agoref(handlers): rebase bip322 feature
Vihiga Tyonum [Wed, 29 Apr 2026 14:07:54 +0000 (15:07 +0100)]
ref(handlers): rebase bip322 feature

- rebase master for bip322 feature
- update types to use simple table helper

6 weeks agoref(types): add simple table helper
Vihiga Tyonum [Wed, 29 Apr 2026 08:11:33 +0000 (09:11 +0100)]
ref(types): add simple table helper

- add simple table helper fn for creating tables
- refactor types to use simple table helper
- add type defs for key, wallets and descriptors

6 weeks agoref(handlers): add types for desc, key & wallets
Vihiga Tyonum [Wed, 29 Apr 2026 08:09:01 +0000 (09:09 +0100)]
ref(handlers): add types for desc, key & wallets

- add types for descriptor, key and wallets mods

6 weeks agorefactor(handlers): Add types for outputting data
Vihiga Tyonum [Fri, 24 Apr 2026 18:41:23 +0000 (19:41 +0100)]
refactor(handlers): Add types for outputting data

- add trait for formatting outputs
- add types for presenting data to the output
- refactor offline mod to use types

6 weeks agoref(main): update main entry point
Vihiga Tyonum [Tue, 21 Apr 2026 10:39:06 +0000 (11:39 +0100)]
ref(main): update main entry point

6 weeks agoref(handlers): split handler fns into repl
Vihiga Tyonum [Tue, 21 Apr 2026 10:25:55 +0000 (11:25 +0100)]
ref(handlers): split handler fns into repl

- split handler fns into repl
- add entry point to the handlers subdir
- add wallet subdir entry point

6 weeks agoref(handlers):mv handler fns into offline & others
Vihiga Tyonum [Tue, 21 Apr 2026 10:19:03 +0000 (11:19 +0100)]
ref(handlers):mv handler fns into offline & others

- move handler fns into offline, online, wallets
modules

6 weeks agoref(handlers): split handlers into config, key
Vihiga Tyonum [Tue, 21 Apr 2026 10:15:43 +0000 (11:15 +0100)]
ref(handlers): split handlers into config, key

- split handlers into top level commands config,
key and descriptors

6 weeks agoref(persister): mv persister into wallet subdir
Vihiga Tyonum [Tue, 21 Apr 2026 10:08:44 +0000 (11:08 +0100)]
ref(persister): mv persister into wallet subdir

- move persister into wallet subdirectory
- update imports in payjoin module

6 weeks agoref(utils): refactor utils into utils subdir
Vihiga Tyonum [Tue, 21 Apr 2026 10:05:04 +0000 (11:05 +0100)]
ref(utils): refactor utils into utils subdir

- split util fns into `descriptors` and `common`

6 weeks agoref(config): move config into config subdir
Vihiga Tyonum [Tue, 21 Apr 2026 10:03:00 +0000 (11:03 +0100)]
ref(config): move config into config subdir

6 weeks agoref(commands): mv commands & clients into subdirs
Vihiga Tyonum [Tue, 21 Apr 2026 09:52:35 +0000 (10:52 +0100)]
ref(commands): mv commands & clients into subdirs

- move all blockchain clients code into the
backend subdirectory
- move commands.rs content into commands
subdirectory

7 weeks agotest(handlers): drop redundant cfg gate on test module
Vadim Anufriev [Thu, 7 May 2026 20:53:32 +0000 (00:53 +0400)]
test(handlers): drop redundant cfg gate on test module

7 weeks agodocs: add pre-push recipe description to README
Vadim Anufriev [Thu, 2 Apr 2026 20:53:27 +0000 (00:53 +0400)]
docs: add pre-push recipe description to README

7 weeks agodocs(contributing): update CONTRIBUTING.md
Vadim Anufriev [Sun, 29 Mar 2026 14:52:52 +0000 (18:52 +0400)]
docs(contributing): update CONTRIBUTING.md

- Remove MSRV mention as the project no longer enforces it
- Add Conventional Commits and GPG signing links to align with other repos

7 weeks agorefactor(compile): lazy compilation and use pipe for readability
Vadim Anufriev [Tue, 24 Mar 2026 20:12:30 +0000 (00:12 +0400)]
refactor(compile): lazy compilation and use pipe for readability

Move miniscript compilation inside match arms to avoid compiling
for all script contexts when only one is needed. Use `tap::Pipe`
for concise method chaining in sh/wsh/sh-wsh branches.