eb9536d43ec01b04e572947fdbab7c3a943a1105 ci: make tracing optional, drop cli-table (Vadim Anufriev)
22a01a38094197613b5c9213e71783998ffd87d5 refactor(payjoin): return session history as JSON (Vadim Anufriev)
Pull request description:
### Description
The `--no-default-features` build and clippy jobs are red on every open PR, including Markdown-only ones (#386, #387). `cli-table`, `tracing` and `tracing-subscriber` are unused there, and recent cargo flags that ([`unused_dependencies`](https://doc.rust-lang.org/cargo/reference/lints.html#unused_dependencies), warn by default) while the workflow passes `build-warnings: deny`.
`cli-table` is dropped entirely, as @tvpeter suggested: its last user, the payjoin session history, now returns JSON like the rest of the module.
`payjoin history` on `master`:
```
+------------+-----------------+---------------------+-------------------------------+
| Session ID | Sender/Receiver | Completed At | Status |
+------------+-----------------+---------------------+-------------------------------+
| 1 | Receiver | Not Completed | Waiting for original proposal |
+------------+-----------------+---------------------+-------------------------------+
| 2 | Receiver | 2026-11-13 17:50:42 | Session cancelled |
+------------+-----------------+---------------------+-------------------------------+
```
and on this branch:
```json
{
"sessions": [
{
"id": "1",
"role": "Receiver",
"status": "Waiting for original proposal",
"completed_at": null
},
{
"id": "2",
"role": "Receiver",
"status": "Session cancelled",
"completed_at": "2026-11-13 18:34:22"
}
]
}
```
### Notes to the reviewers
An active session now reports `"completed_at": null` instead of the string `Not Completed`.
`tracing` is on `cbf` explicitly, although `cbf` already implies `_payjoin-dependencies`, so cbf logging does not depend on a payjoin-internal feature.
`just pre-push` misses this: the lint is cargo's, not rustc's, so `-D warnings` after `--` does not apply. To reproduce: `cargo build --no-default-features --config 'build.warnings="deny"'`.
The `SessionHistory` wrapper exists to keep the field order: serializing it directly preserves declaration order, while `json!` would sort the keys alphabetically.
### 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
ACKs for top commit:
tvpeter:
ACK
eb9536d43ec01b04e572947fdbab7c3a943a1105
Tree-SHA512: 556923b5466720ea21dca4a7d4a5798e48cf2b317db0fbab68b3b94e20d6b822edab3d57c2a12e97f4b5c90e52ea727ba3770eb952da30423a26958d69a6e5d5