From 0e92e4f6af31dc11eade77306e41dea5d0fda698 Mon Sep 17 00:00:00 2001 From: Alexander Miller Date: Tue, 27 Oct 2026 14:57:47 -0400 Subject: [PATCH 1/2] doc: add v1.0.1 release notes Cover every pull request merged to 1.x.x since the signed v1.0.0 tag, through #252. List the behavior changes first: the -fallbackfee default (#151), fee-only send entries (#150), and the encryptwallet overlap error code moving from -16 to -15 (#183). Record the release's known limitations: the unsigned-platform waiver (#70), the depth of the fuzz evidence (#173), and scheduled-workflow deployment (#152, #158). The required P2MR v1 conformance statement names the signed tag target and the oracle report digest, so the in-tree notes point to the release page, and the publish-time notes file carries the exact statement. Fold the #150 and #151 fragments into these notes and remove them. Refs #174 Co-Authored-By: Claude Opus 5.5 --- doc/release-notes-1.0.1.md | 317 +++++++++++++++++++++++++++++++++++++ doc/release-notes-150.md | 12 -- doc/release-notes-151.md | 15 -- 3 files changed, 317 insertions(+), 27 deletions(-) create mode 100644 doc/release-notes-1.0.1.md delete mode 100644 doc/release-notes-150.md delete mode 100644 doc/release-notes-151.md diff --git a/doc/release-notes-1.0.1.md b/doc/release-notes-1.0.1.md new file mode 100644 index 0000000000..cc447eb9bb --- /dev/null +++ b/doc/release-notes-1.0.1.md @@ -0,0 +1,317 @@ +Qbit v1.0.1 Release Notes +========================= + +Qbit: Post-quantum peer to peer digital value + +Qbit version v1.0.1 is available from the release page for that version. + +This is a mainnet maintenance release built from the reviewed `1.x.x` branch +changes since the signed `v1.0.0` tag. It focuses on wallet and qbit-qt +reliability, the wallet fallback-fee default, visibility of consumed PQC +signing capacity, validation and fuzz tooling, and release and CI hardening. +It contains no consensus rule change, no scheduled network activation, no +change to the mainnet or testnet4 network identity, and no wallet database +format change. + +Please report bugs using the Qbit issue tracker. + +How to Upgrade +============== + +Shut down the older qbit process and wait until it exits completely before +installing v1.0.1. Then install the new binaries from the GitHub Release page. + +Existing v1.0.0 mainnet and testnet4 data directories, wallets, and wallet +backups continue to work without a reindex, chain reset, or wallet migration. + +On Linux, replace the existing `qbitd`, `qbit-cli`, `qbit-tx`, `qbit-util`, +and `qbit-wallet` binaries with the new versions. + +On macOS, replace the installed Qbit application bundle or unpack the updated +archive into the desired location. + +On Windows, run the installer if one is provided for the release, or replace +the unpacked binaries with the new release artifacts. + +Behavior changes to review before upgrading +------------------------------------------- + +- The wallet `-fallbackfee` default changed from disabled to the minimum relay + fee rate. Operators who relied on transaction creation failing when no fee + estimate is available must set `-fallbackfee=0` explicitly (#151). +- `gettransaction`, `listtransactions`, and default `listsinceblock` output + now include a fee-only `send` entry, with `amount` of zero and a negative + `fee` and without `address`, `label`, or `vout`, for a self-transfer whose + outputs are all change. Integrations that assume every `send` entry has an + address or a non-zero amount should be checked (#150). +- An `encryptwallet` call that overlaps another encryption of the same wallet + now fails deterministically with error code `-15` + (`RPC_WALLET_WRONG_ENC_STATE`), the code a call on an already encrypted + wallet already returned. Previously it could fail with `-16` "Failed to + encrypt". Other `encryptwallet` failures still return `-16` (#183). + +Compatibility +============= + +qbit is not wire-, consensus-, address-, wallet-, or data-directory-compatible +with Bitcoin Core. Bitcoin addresses and Bitcoin payment URIs are not valid +qbit payment destinations. + +Mainnet remains the default chain for a standard build. The mainnet network +identity is unchanged from v1.0.0: + +| Item | Value | +|---|---| +| Chain option | default, or `-chain=main` | +| Default P2P port | `8355` | +| Default RPC/REST port | `8352` | +| Address HRP | `qb` | +| AuxPoW chain ID | `47` | +| Genesis block | `0000000000004d60aa5d46013991d0a0e2995d89ee98e53068ae196d763e79f2` | + +Public testnet4 remains available with: + +```bash +qbitd -testnet4 +qbit-cli -testnet4 getblockchaininfo +``` + +Mainnet-capable binaries are the build default. A binary that rejects mainnet +must be built with `-DQBIT_TESTNET_ONLY_RELEASE=ON`; the distribution archive +name does not enable that restriction. + +Supported and tested platforms for this release are the artifacts attached to +the GitHub Release page. The release page is the source of truth for available +platform builds, checksums, signatures, and attestations. + +Changes since v1.0.0 +==================== + +This release contains all changes merged to `1.x.x` after the signed `v1.0.0` +tag. Pull request numbers refer to the Qbit-Org/qbit repository. + +### Wallet fixes + +- Removed a wallet/SQLite lock cycle that could freeze qbit-qt immediately + after a correct passphrase was entered. Address-availability changes are now + published only after descriptor locks and database transactions are + released, unlock returns promptly, and a pending initial P2MR keypool refill + is completed through deduplicated scheduler steps (#143, fixes #138). +- Descriptor top-ups now stage newly derived scripts and publish wallet + ownership and cache updates only after the backing database transaction + commits. A top-up inside a caller-owned transaction publishes once on + commit, and an abort restores descriptor, keypool, cache, and PQC state + (#144, fixes #139). Top-up publication was further made commit-atomic and + lifetime-safe, and reservation notifications are delivered after the + descriptor lock is released (#143, #144). +- Fee-bearing self-transfers whose outputs are all classified as change now + appear once in wallet history. The GUI shows a "Payment to self" row with + the net fee debit, and the transaction RPCs return a fee-only `send` entry. + `listsinceblock` with `include_change=true` still returns the output-level + entries. Balances and UTXO accounting are unchanged (#150, fixes #147). +- A transaction that spends from more than one P2MR descriptor now batches + counter reservations per descriptor instead of falling back to one durable + counter commit per signature for the first descriptor. Strictly foreign + inputs are skipped rather than failing the plan, a provider never reports a + transaction complete while a foreign input is still unsigned, and declining + a signing prompt cancels the whole wallet signing operation. Counters an + earlier descriptor already committed stay consumed; retrying the same + transaction reuses its witnesses (#163, refs #155). +- Fee bumping now re-reads live coins and mempool spenders from one snapshot + before committing a replacement. A replacement whose input is already spent + by a mempool transaction outside its own replacement lineage, or that is no + longer final at the current chain tip after a reorg during asynchronous + signing, is rejected instead of being recorded and then failing to + broadcast (#163). +- Foreign P2MR witnesses that are already satisfied, including valid + nonstandard leaves, are recognized as complete instead of incomplete + during batched signing (#163). +- qbit-qt cancels active send workers before wallet views are torn down and + joins already-cancelled workers during destruction (#137). +- Wallet encryption now checks that the wallet is not already encrypted, and + validates its PQC state, under the wallet locks, so two overlapping + encryption requests can no longer both proceed and abort the process. A new + master key is kept in memory only after it has been written inside a + database transaction, and a failed write aborts that transaction. Readers of + the active descriptor managers now hold the wallet lock. If another request + encrypts the wallet first, qbit-qt's Encrypt Wallet dialog reports that the + wallet was already encrypted and the entered passphrase was not used. There + is no wallet format or encryption semantics change (#183, fixes #179). + +### Fallback fee + +- The wallet `-fallbackfee` now defaults to the minimum relay fee rate + (250 sat/kvB, that is 0.0000025 QBT/kvB) instead of being disabled. + Previously, when the fee estimator had no data, which is the normal state on + a young chain with an empty mempool, transaction creation failed with + "Fee estimation failed. Fallbackfee is disabled." Wallets now pay the relay + floor in that case. The fallback is used only when no smart fee estimate is + available; live estimates take precedence as soon as the estimator has + observed confirming transactions, and the final feerate is still clamped to + at least the node's required and mempool minimum feerates, so the fallback + cannot underpay relay policy. Set `-fallbackfee=0` to restore the previous + behavior of failing instead (#151). + +### Signing-usage visibility and qbit-qt responsiveness + +- PSBT signing started from the PSBT operations dialog runs on a cloned-wallet + worker instead of the GUI thread, with queued progress for preparation, + counter reservation, signing, finalization, and verification. Cancellation + is allowed before a durable PQC counter reservation and disabled after it. + A PSBT completed after a late cancel is preserved, a cancelled wallet unlock + is handled, and the dialog reports the PQC signing capacity the attempt + consumed (#145, fixes #140). +- P2MR fee-bump signing runs off the GUI thread. Signing failure, commit + failure, and success each present the PQC usage the attempt consumed, and + cancellation and teardown races were closed (#167). +- Transaction-signing flows preserve and display consumed PQC usage. A shared + formatter renders the overall state, every affected key with its counter, + limit, remaining capacity, and limit state, and every usage warning. An + empty report renders nothing, so an absent report is never shown as zero + consumption. A failed Send preparation keeps its original reason and + severity and appends the attempt's usage before the prepared transaction is + discarded, and the PSBT dialog reports failure outcomes as failures. The + wallet interface now assigns the usage report before returning a + transaction-creation error. Portable transactions and PSBTs are unchanged; + usage stays wallet-local (#167, refs #141). +- Fee-bump preparation dialogs guard the wallet model's lifetime across their + nested event loops, so unloading the wallet during one of those dialogs no + longer touches a destroyed model (#167). +- When the Sign/Verify dialog's own verification of a freshly generated P2MR + data-hash proof fails, the error status now appends the wallet-local PQC + usage the attempt consumed. No proof JSON is written or exported for a + rejected proof (#161, refs #129). +- A successful fee bump now shows the PQC usage it consumed + in a dismissible panel above the transaction list, labelled with the + replacement txid and the local commit time, so the report remains visible + on desktops without a notification backend (no D-Bus, no tray). The + existing non-modal information message and modal warning are unchanged + (#177, fixes #168). +- Encrypting an existing wallet from qbit-qt runs on a worker + thread. The passphrase dialog stays open as a busy indicator and ignores a + second submit, GUI reads that would block on the wallet lock are served + from cached state or deferred until encryption finishes, and unlock, + fee-bump, and payment-request actions are refused or queued while it runs. + A clean failure still reports "Your wallet was not encrypted"; an exception + after the database may already have been written stops the application + rather than misreporting the outcome. The wallet's own encryption logic is + unchanged (#178, fixes #172). +- While an existing wallet is being encrypted, repainting the transaction list + or overview page resolves address labels from the address book rows qbit-qt + already holds, instead of waiting for the wallet lock until encryption + finishes (#182, fixes #180). + +### Validation and performance work + +- Successful P2MR PQC transaction-signature checks are cached in a new PQC + domain of the shared signature cache, following the Schnorr pattern. Only a + verified success is inserted, so a fresh mempool admission verifies each PQC + signature once in the policy pass and reuses the result in the consensus + pass. Interpreter checks, validation-weight charges, script flags, the + full-script cache, and data signatures are unchanged, and a benchmark for + the two-pass admission pattern was added (#162). +- No throughput, initial block download, or signing-latency measurement + accompanies this release. The signature cache and descriptor batching above + are described by their behavior only; this release does not claim a speedup. +- Header synchronization clamps a negative commitment window, which can occur + when a chain start is ahead of the local clock, instead of converting it to + an oversized unsigned bound (#137). +- The `pqc` and `p2mr_script` fuzz targets accept versioned fixture inputs + that verify and mutate real SLH-DSA signatures and signed P2MR spends, and + deterministic seed corpora with a manifest were added for the six + qbit-specific targets. The fuzz runner can require corpus replay for those + targets and run a seeded libFuzzer mutation phase. CI replays the corpora; + the nightly native-fuzz job runs the mutation phase once its workflow + revision reaches `main` (see Known limitations) (#164, #165). +- The fuzz coverage checker's `pqc_sign_refused` source anchor + is re-anchored to the current refusal line, and anchor resolution gained + its own tests. This restores the `--anchors-only` check; it does not by + itself produce instrumented coverage evidence (#176, refs #173). + +### Release engineering, CI, and documentation + +- Added a Pages workflow for a versioned RPC documentation site. It builds + each immutable, signed non-candidate release from its tag target next to + rolling development documentation, verifies the release signer against the + release key policy, and requires each build's reported project version to + match its tag. Release candidates are not published to the versioned site. + The site is not deployed yet (#148). +- The local release publisher fails closed when the paginated release asset + listing cannot be read, instead of treating an empty or partial listing as + a valid draft and uploading assets it believed were missing (#170, + refs #125). +- The Required Merge Gate runs the merge-profile classifier tests and a + workflow contract before producing routing outputs (#160), and its check-run + poller retries transient API failures with a bounded budget, paginates check + runs, and fails closed with a distinct message when checks cannot be read or + the deadline passes (#171, refs #169). +- Scheduled nightly, IBD, and RPC performance workflows resolve the maintained + `1.x.x` branch to one commit per run and report the requested ref, resolved + commit, and actual checkout separately (#165, refs #152). The IBD workflow + forwards its reserved timeout inputs to the harness and records whether each + was actually forwarded (#159, refs #158). +- Corrected the v1.0.0 release-trust record to list every job of the original + Full Validation run with its conclusion, quote the accepted deviation as + recorded, remove a retained-file reference that did not exist at the tag, + and separate the historical `v1.0.0` source from later maintenance results + (#175, fixes #156). The record itself was created by #136. +- Reorganized the P2MR v1 consensus profile (`doc/consensus/p2mr-v1.md`) for + readability and fixed its hash-type table, whose combined `SIGHASH_*` rows + were cut off when rendered. Every requirement, value, and error name is + unchanged (#252). +- Stabilized the REST chain-info comparison and Qt shutdown tests (#137, + #149). + +Release verification +==================== + +Download artifacts only from the release page linked through qbit.org. Verify +`SHA256SUMS.asc` against `SHA256SUMS`, then verify each downloaded artifact +against `SHA256SUMS`. The release page is the source of truth for supported +platform artifacts, signer policy, builder attestations, and the final release +state. + +Mainnet publication requires completed qbit P2MR v1 conformance evidence for +the exact signed tag target. The release page states the corpus digest, source +commit, and independent oracle report digest. Those values are produced from the +tagged commit, so they cannot be recorded in this file. + +Known limitations +================= + +- The PSBT operations dialog and the Sign/Verify dialog write a key's PQC + limit state differently: the PSBT dialog uses a translatable label such as + "Normal", while the Sign/Verify dialog shows the raw state name such as + "NORMAL". The meaning is identical; only the wording differs (#166). +- Unsigned-platform waiver: the macOS and Windows artifacts for this release + are not code-signed or notarized. They are published with `-unsigned` in + their names, and codesigning payloads are not published. macOS Gatekeeper + and Windows SmartScreen may warn when they are first opened. The signed + release tag, the signed `SHA256SUMS`, and the builder attestations still + apply to every artifact; verify downloads as described in "Release + verification". This waiver remains until macOS and Windows signing accounts + are available (#70). +- Fuzz evidence for this release is limited in depth. It was produced with + LLVM 20.1.8 on the #176 source, and later `1.x.x` changes touch only wallet, + qbit-qt, and functional-test code, none of which the qbit fuzz targets + build. The llvm-cov coverage checker met every expectation, including the + `pqc_sign_refused` refusal path. libFuzzer with ASan and UBSan replayed all + 53 seed inputs for the six qbit-specific targets and ran a mutation phase of + at least 120 seconds per target, with no crashes or sanitizer reports. + Because SLH-DSA signing is slow, the `p2mr_script` and `pqc` targets reached + only a few hundred mutated executions under ASan. No multi-hour campaign, + sanitizer-free libFuzzer run, macOS run, or other LLVM version was used + (#173). +- The scheduled-validation source selection (#165) and IBD timeout forwarding + (#159) are present on `1.x.x`, but GitHub schedules run the default branch. + Their deployment is complete only after the same workflow revisions reach + `main` and a scheduled run reports the maintained source (#152, #158). +- The v1.0.1 release readiness inspection (#174) exercised a testnet4 wallet on + macOS. Linux and Windows desktop notification behavior and a packaged-binary + smoke check on each supported platform are separate release evidence. + +Credits and acknowledgements +============================ + +Thanks to everyone who contributed code, testing, review, infrastructure, and +release coordination for this maintenance release. diff --git a/doc/release-notes-150.md b/doc/release-notes-150.md deleted file mode 100644 index 55001226e5..0000000000 --- a/doc/release-notes-150.md +++ /dev/null @@ -1,12 +0,0 @@ -Wallet history --------------- - -Fee-bearing self-transfers whose outputs are all classified as change now -appear once in default wallet history. The GUI shows a “Payment to self” row -with the net fee debit. `gettransaction.details`, `listtransactions`, and -`listsinceblock` return a fee-only `send` entry with zero `amount` and a negative -`fee`. This transaction-level entry omits `address`, `label`, and `vout`. - -`listsinceblock` with `include_change=true` continues to return the existing -output-level send and receive entries. Wallet balances and UTXO accounting are -unchanged. (#147) diff --git a/doc/release-notes-151.md b/doc/release-notes-151.md deleted file mode 100644 index 3b889fb59f..0000000000 --- a/doc/release-notes-151.md +++ /dev/null @@ -1,15 +0,0 @@ -Wallet fallback fee enabled by default -====================================== - -The wallet's `-fallbackfee` now defaults to the minimum relay fee rate -(250 sat/kvB, i.e. 0.0000025 QBT/kvB) instead of being disabled. Previously, -when the fee estimator had no data — the normal state on a young chain with an -empty mempool — transaction creation failed with "Fee estimation failed. -Fallbackfee is disabled." Wallets now pay the relay floor in that case. - -The fallback is only used when no smart fee estimate is available; live -estimates take precedence as soon as the estimator has observed confirming -transactions. The final feerate is still clamped to at least the node's -required and mempool minimum feerates, so the fallback can never underpay -relay policy. Set `-fallbackfee=0` to restore the previous behavior of -failing instead. From fb45d18d7b16e69aa53cf6b4979a9d21c5218cf6 Mon Sep 17 00:00:00 2001 From: Alexander Miller Date: Tue, 27 Oct 2026 15:01:13 -0400 Subject: [PATCH 2/2] build: bump version to v1.0.1 Set CLIENT_VERSION_BUILD to 1 so the source identifies as v1.0.1, the maintenance release proposed in #174. It ships without a release candidate, so CLIENT_VERSION_RC stays 0. CLIENT_VERSION_IS_RELEASE stays true: 1.x.x is the release line, so its binaries carry no commit suffix, as for v1.0.0. CLIENT_VERSION_MAJOR, CLIENT_VERSION_MINOR and CLIENT_VERSION_PHASE are unchanged. CLIENT_VERSION_STRING becomes 1.0.1, so every binary reports v1.0.1, the user agent is /qbit:1.0.1/, the Windows installer metadata and the RPC docs manifest derive from the same string, and Guix and the release validators derive 1.0.1 from a v1.0.1 tag. Regenerate the manual pages from the built binaries with contrib/devtools/gen-manpages.py (help2man 1.49.3). Only the version and date lines change. util_tests/test_FormatSubVersion expected the "Test" client name to format as CLIENT_VERSION_STRING. FormatSubVersion uses that string only for the qbit user agent and formats any other name numerically, so the check holds only while the version has no phase or release-candidate suffix. Expect the numeric form built from the version components, which holds for every version. The qbit user-agent checks on the next lines still cover CLIENT_VERSION_STRING. No other tracked file carries the release version. The README and doc mentions of v1.0.0 describe the launch source, and the 1.0.0 entries in the workflows are branch names, so they are left alone. Refs #174 Co-Authored-By: Claude Opus 5.5 --- CMakeLists.txt | 2 +- doc/man/qbit-cli.1 | 6 +++--- doc/man/qbit-qt.1 | 6 +++--- doc/man/qbit-tx.1 | 6 +++--- doc/man/qbit-util.1 | 6 +++--- doc/man/qbit-wallet.1 | 6 +++--- doc/man/qbit.1 | 4 ++-- doc/man/qbitd.1 | 6 +++--- src/test/util_tests.cpp | 2 +- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 55e4117434..79b72299f2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,7 +29,7 @@ get_directory_property(precious_variables CACHE_VARIABLES) set(CLIENT_NAME "qbit") set(CLIENT_VERSION_MAJOR 1) set(CLIENT_VERSION_MINOR 0) -set(CLIENT_VERSION_BUILD 0) +set(CLIENT_VERSION_BUILD 1) set(CLIENT_VERSION_PHASE "") set(CLIENT_VERSION_RC 0) set(CLIENT_VERSION_IS_RELEASE "true") diff --git a/doc/man/qbit-cli.1 b/doc/man/qbit-cli.1 index 83184062bc..9fd3fff393 100644 --- a/doc/man/qbit-cli.1 +++ b/doc/man/qbit-cli.1 @@ -1,7 +1,7 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. -.TH QBIT-CLI "1" "July 2026" "qbit-cli v1.0.0" "User Commands" +.TH QBIT-CLI "1" "October 2026" "qbit-cli v1.0.1" "User Commands" .SH NAME -qbit-cli \- manual page for qbit-cli v1.0.0 +qbit-cli \- manual page for qbit-cli v1.0.1 .SH SYNOPSIS .B qbit-cli [\fI\,options\/\fR] \fI\, \/\fR[\fI\,params\/\fR] @@ -15,7 +15,7 @@ qbit-cli \- manual page for qbit-cli v1.0.0 .B qbit-cli [\fI\,options\/\fR] \fI\,help \/\fR .SH DESCRIPTION -qbit RPC client version v1.0.0 +qbit RPC client version v1.0.1 .PP The qbit\-cli utility provides a command line interface to interact with a qbit RPC server. .PP diff --git a/doc/man/qbit-qt.1 b/doc/man/qbit-qt.1 index b2e931f14a..49731ac5f7 100644 --- a/doc/man/qbit-qt.1 +++ b/doc/man/qbit-qt.1 @@ -1,12 +1,12 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. -.TH QBIT-QT "1" "July 2026" "qbit-qt v1.0.0" "User Commands" +.TH QBIT-QT "1" "October 2026" "qbit-qt v1.0.1" "User Commands" .SH NAME -qbit-qt \- manual page for qbit-qt v1.0.0 +qbit-qt \- manual page for qbit-qt v1.0.1 .SH SYNOPSIS .B qbit-qt [\fI\,options\/\fR] [\fI\,URI\/\fR] .SH DESCRIPTION -qbit version v1.0.0 +qbit version v1.0.1 .PP The qbit\-qt application provides a graphical interface for interacting with qbit. .PP diff --git a/doc/man/qbit-tx.1 b/doc/man/qbit-tx.1 index 335afaebbc..df9e3ff26a 100644 --- a/doc/man/qbit-tx.1 +++ b/doc/man/qbit-tx.1 @@ -1,7 +1,7 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. -.TH QBIT-TX "1" "July 2026" "qbit-tx v1.0.0" "User Commands" +.TH QBIT-TX "1" "October 2026" "qbit-tx v1.0.1" "User Commands" .SH NAME -qbit-tx \- manual page for qbit-tx v1.0.0 +qbit-tx \- manual page for qbit-tx v1.0.1 .SH SYNOPSIS .B qbit-tx [\fI\,options\/\fR] \fI\, \/\fR[\fI\,commands\/\fR] @@ -9,7 +9,7 @@ qbit-tx \- manual page for qbit-tx v1.0.0 .B qbit-tx [\fI\,options\/\fR] \fI\,-create \/\fR[\fI\,commands\/\fR] .SH DESCRIPTION -qbit qbit\-tx utility version v1.0.0 +qbit qbit\-tx utility version v1.0.1 .PP The qbit\-tx tool is used for creating and modifying qbit transactions. .PP diff --git a/doc/man/qbit-util.1 b/doc/man/qbit-util.1 index a607006abe..4ac51f18a8 100644 --- a/doc/man/qbit-util.1 +++ b/doc/man/qbit-util.1 @@ -1,7 +1,7 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. -.TH QBIT-UTIL "1" "July 2026" "qbit-util v1.0.0" "User Commands" +.TH QBIT-UTIL "1" "October 2026" "qbit-util v1.0.1" "User Commands" .SH NAME -qbit-util \- manual page for qbit-util v1.0.0 +qbit-util \- manual page for qbit-util v1.0.1 .SH SYNOPSIS .B qbit-util [\fI\,options\/\fR] [\fI\,command\/\fR] @@ -9,7 +9,7 @@ qbit-util \- manual page for qbit-util v1.0.0 .B qbit-util [\fI\,options\/\fR] \fI\,grind \/\fR .SH DESCRIPTION -qbit qbit\-util utility version v1.0.0 +qbit qbit\-util utility version v1.0.1 .PP The qbit\-util tool provides qbit related functionality that does not rely on the ability to access a running node. Available [commands] are listed below. .SH OPTIONS diff --git a/doc/man/qbit-wallet.1 b/doc/man/qbit-wallet.1 index 1098594b95..f597059743 100644 --- a/doc/man/qbit-wallet.1 +++ b/doc/man/qbit-wallet.1 @@ -1,12 +1,12 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. -.TH QBIT-WALLET "1" "July 2026" "qbit-wallet v1.0.0" "User Commands" +.TH QBIT-WALLET "1" "October 2026" "qbit-wallet v1.0.1" "User Commands" .SH NAME -qbit-wallet \- manual page for qbit-wallet v1.0.0 +qbit-wallet \- manual page for qbit-wallet v1.0.1 .SH SYNOPSIS .B qbit-wallet [\fI\,options\/\fR] \fI\,\/\fR .SH DESCRIPTION -qbit qbit\-wallet utility version v1.0.0 +qbit qbit\-wallet utility version v1.0.1 .PP qbit\-wallet is an offline tool for creating and interacting with qbit wallet files. .PP diff --git a/doc/man/qbit.1 b/doc/man/qbit.1 index 7442d9a39f..eb40ade83b 100644 --- a/doc/man/qbit.1 +++ b/doc/man/qbit.1 @@ -1,7 +1,7 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. -.TH QBIT "1" "July 2026" "qbit v1.0.0" "User Commands" +.TH QBIT "1" "October 2026" "qbit v1.0.1" "User Commands" .SH NAME -qbit \- manual page for qbit v1.0.0 +qbit \- manual page for qbit v1.0.1 .SH SYNOPSIS .B qbit [\fI\,OPTIONS\/\fR] \fI\,COMMAND\/\fR... diff --git a/doc/man/qbitd.1 b/doc/man/qbitd.1 index a0f9ad37b7..07a5db3016 100644 --- a/doc/man/qbitd.1 +++ b/doc/man/qbitd.1 @@ -1,12 +1,12 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. -.TH QBITD "1" "July 2026" "qbitd v1.0.0" "User Commands" +.TH QBITD "1" "October 2026" "qbitd v1.0.1" "User Commands" .SH NAME -qbitd \- manual page for qbitd v1.0.0 +qbitd \- manual page for qbitd v1.0.1 .SH SYNOPSIS .B qbitd [\fI\,options\/\fR] .SH DESCRIPTION -qbit daemon version v1.0.0 qbitd +qbit daemon version v1.0.1 qbitd .PP The qbit daemon (qbitd) is a headless program that connects to the qbit network to validate and relay transactions and blocks, as well as relaying addresses. .PP diff --git a/src/test/util_tests.cpp b/src/test/util_tests.cpp index d65469c6ef..d3317cbe1a 100644 --- a/src/test/util_tests.cpp +++ b/src/test/util_tests.cpp @@ -875,7 +875,7 @@ BOOST_AUTO_TEST_CASE(test_FormatSubVersion) BOOST_CHECK_EQUAL(FormatSubVersion("Test", 99900, std::vector()),std::string("/Test:9.99.0/")); BOOST_CHECK_EQUAL(FormatSubVersion("Test", 99900, comments),std::string("/Test:9.99.0(comment1)/")); BOOST_CHECK_EQUAL(FormatSubVersion("Test", 99900, comments2),std::string("/Test:9.99.0(comment1; Comment2; .,_?@-; )/")); - BOOST_CHECK_EQUAL(FormatSubVersion("Test", CLIENT_VERSION, std::vector()), std::string("/Test:") + CLIENT_VERSION_STRING + "/"); + BOOST_CHECK_EQUAL(FormatSubVersion("Test", CLIENT_VERSION, std::vector()), strprintf("/Test:%d.%d.%d/", CLIENT_VERSION_MAJOR, CLIENT_VERSION_MINOR, CLIENT_VERSION_BUILD)); BOOST_CHECK_EQUAL(FormatSubVersion(UA_NAME, CLIENT_VERSION, std::vector()), std::string("/") + UA_NAME + ":" + CLIENT_VERSION_STRING + "/"); BOOST_CHECK_EQUAL(FormatSubVersion(UA_NAME, CLIENT_VERSION, comments), std::string("/") + UA_NAME + ":" + CLIENT_VERSION_STRING + "(comment1)/"); }