From 28df2fc0e4a542cb97ef24616b29afdecf5c35be Mon Sep 17 00:00:00 2001 From: Adam Gibson Date: Fri, 26 Aug 2022 15:05:21 +0100 Subject: [PATCH] add release notes and version for 0.9.7 --- docs/JOINMARKET-QT-GUIDE.md | 2 +- docs/release-notes/release-notes-0.9.7.md | 162 ++++++++++++++++++++++ jmbase/jmbase/support.py | 2 +- jmbase/setup.py | 2 +- jmbitcoin/setup.py | 2 +- jmclient/setup.py | 4 +- jmdaemon/setup.py | 4 +- jmqtui/setup.py | 2 +- scripts/joinmarket-qt.py | 2 +- 9 files changed, 172 insertions(+), 10 deletions(-) create mode 100644 docs/release-notes/release-notes-0.9.7.md diff --git a/docs/JOINMARKET-QT-GUIDE.md b/docs/JOINMARKET-QT-GUIDE.md index 8c593f10a..79ca4d38f 100644 --- a/docs/JOINMARKET-QT-GUIDE.md +++ b/docs/JOINMARKET-QT-GUIDE.md @@ -4,7 +4,7 @@ The GUI can be run directly from Python script by doing `./joinmarket-qt.sh` from within `scripts/`, or, if using Microsoft Windows, by running the executable file/binary (**[CLICK HERE](https://github.com/JoinMarket-Org/joinmarket-clientserver/releases)** to download the latest release). If you followed normal installation procedure under Linux, desktop entry of JoinMarketQt should be added to the application menu of your desktop environment. -**LATEST VERSION of JoinMarket-Qt is GUI version 28**. You can check the version via `About` in the menu. +**LATEST VERSION of JoinMarket-Qt is GUI version 29**. You can check the version via `About` in the menu. No other files / setup should be needed. diff --git a/docs/release-notes/release-notes-0.9.7.md b/docs/release-notes/release-notes-0.9.7.md new file mode 100644 index 000000000..5e6065595 --- /dev/null +++ b/docs/release-notes/release-notes-0.9.7.md @@ -0,0 +1,162 @@ +Joinmarket-clientserver 0.9.7: +================= + + + +Please report bugs using the issue tracker at github: + + + + +Upgrading +========= + +To upgrade: + +*Reminder: always back up and recreate your joinmarket.cfg file when doing the upgrade; this is to make sure you have the new default settings.* + +(If you are upgrading from a version pre-0.7.0 please read the "Upgrading" section in [the 0.7.0 release notes](https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/docs/release-notes/release-notes-0.7.0.md).) + +(If you are upgrading from a version pre-0.9.0 please read the [release notes](https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/docs/release-notes/release-notes-0.9.0.md) to find out how about [fidelity bonds](../fidelity-bonds.md) are relevant to your use-case). + +First run the `install.sh` script as mentioned in the README. When prompted to overwrite the directory `jmvenv`, accept. + +Note that `./install.sh -?` will show the options for installation. See the section on Installation below for a new option for Tor. + +Notable changes +=============== + +### Tumbler algorithm: fix, and cycling + +This is a notable reworking of the tumbler algorithm, mostly motivated by finding an error which was causing failures for people that tried to use more than the default number of mixdepths (0-4). The tumbler is now able to work with the standard 5 mixdepths, even if you want to tumble through more mixdepths than that. +Also "restarting" is now the same as starting; it will operate based on whatever mixdepths are funded, there is no "starting mixdepth". +For details see the substantially updated [tumbler guide](../tumblerguide.md) which now has algorithm examples, and the explanation of the fix and change in the [PR](https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1324). + +* `d3dc9d7` Change tumbler algo to cycle and add tests, and `d0bf888` `7ffc747` `e5ed7f2` `c0df868` +* `b4e4f2a` susbstantial rewrite of tumblerguide.md +* `524cbda` update Qt for new tumbler algo +* `75c444e` Update wallet_rpc for new tumbler code + +### Disallowing utxos with unconfirmed spends + +This fix is a bit technical but very important. The TLDR is that it should remove a common issue of makers sending spent utxos to takers as candidates for coinjoins, which affected some users. See [the PR](https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1295) for some detailed discussion. + +`a3e1ba3` Default 3rd argument of gettxout should be True + +### New script to calculate fidelity bond values + +This new script is intended to help users make more informed choices about fidelity bonds. It gives data on the value of the bond dependent on locktime and amount, and optionally can compare with existing bonds in the orderbook (using a json export of the latter). + +* `72bf447` Script: Add bond-calculator.py + +### New display of 'available' balance + +This new feature in the UI (both CLI and Qt) displays tags 'FROZEN', 'PENDING', 'LOCKED' to indicate the status of different utxos (with 'PENDING' meaning unconfirmed). Available balance is distinguished from total balance with parentheses. +As you can see from this description already, the situation is substantially more complex for Joinmarket than for simpler wallets because there are at least 3 ways in which utxos' usability might be restricted, and this is not necessarily the same for all use cases (e.g. maker vs taker). Still, this UI addition gives the user a lot more information. +This additional 'available balance' information is now also returned in the RPC API. + +* `015cb4a` If there is unavailable fund, display 2 balances: total balance and unlocked balance. +* `ea6c34d` update yaml for new available_balance fields +* `75a93df` fix available_balance + +We also had to update the json-ified wallet display to accommodate this: + +* `08581f8` Fixes json serialization of wallet display + +### RPC-API updates + +There continue to be several small updates to the API, most notable this time is the addition of schedule status to the `/session` endpoint. + +* `8ee6b39` Report offerlist in /session call if possible +* `b2ab4db` add nickname field to session response +* `2cb41fc` review: reaqd schedule from taker object, also `190d56e` `57d1476` +* `ab2803e` fix: include schedule in session instead of status flag, and `521189a` +* `77496cd` Disallow RPC directsend if coinjoin state enabled +* `cde5cfb` feat: scheduler status flag in session +* `3f358ed` Add options to scheduler API endpoint +* `12bcbe1` docs: add flag to session response spec + +### Tor updates + +* `adc11a1` Add separate documentation for Tor configuration +* `f8497f0` add missing text to tor.md +* `d46a2c6` Use valid tor_root also for tor_install() +* `5e9044e` Install Tor binaries under /usr/local for --docker-install + +### Qt changes + +We now allow access to the xpub information in the Qt interface (previously it was not displayed in the GUI). + +* `d95e279` Display the account xpub in QT interface +* `e4f249a` Show QR code for xpub + +### Installation + +The installation now will automatically check release GPG signatures for libsodium and Tor; this can be switched off with `--no-gpg-validation`. + +* `be51866` GPG release signature validation for libsodium and Tor + +### Documentation + +* `7f2c965` Fix "Using Tor as a Maker" table of contents link +* `baa1d48` Add link to JoininBox to README +* `e42f829` docs: fix link in SOURCING-COMMITMENTS.md +* `94a43ab` docs: link to latest version of start-dn.py script +* `bb79a6d` Remove hint to restart Bitcoin Core with -rescan parameter +* `4d4cae5` docs: Creating Core wallet is required for v0.21+ + +### Dependencies + +* `da88b1f` Bump local Tor to latest version (0.4.7.8) +* `48935fe` Bump pyjwt from 2.1.0 to 2.4.0 in /jmclient + +### Minor changes and fixes + +Fixes a non-trivial edge case where the application starts up +with a currently unconfirmed transaction: + +* `5a7b68b` Track txs which are unconf at process startup + +Allows `bitcoin:` prefix in `sendpayment.py` (we alreadly allowed BIP21 URIs): + +* `83c6bc0` Allow bitcoin: prefix for addresses with sendpayment.py + +Test-related changes: + +* `74616f0` Refactor tests to make fidelity bond usage optional. +* `8f60cf0` Bump minfeerate for payjoin test +* `36bf36b` fix: enable addr status in regtest + +The orderbook.json file returned by the ob-watcher service was wrong in certain cases: + +* `2b277b0` fix(ob-watcher): consistent orderbook.json response + +The maker already doesn't start without any coins, but this fixes the edge case where it currently has timelocked coins but no others: + +* `904cb35` Don't start maker with only expired-timelock utxos + +We don't yet have descriptor support; this is a first step: +* `fc5bda4` Basic output descriptor functions (generate only) + +Other minor changes: + +* `38d00e5` Remove unused CLI options in tumbler +* `447cdb2` Change verbosity of on_nick_leave_directory log message from info to debug +* `c2abb93` Ensure OnionDirectoryPeerNotFound is raised +* `67d0801` multiple spaces after operator + + +Credits +======= + +Thanks to everyone who directly contributed to this release - +- @dnlggr +- @BitcoinWukong +- @AdamISZ +- @theborakompanioni +- @kristapsk +- @chris-belcher +- @PulpCattel + + +And thanks also to those who submitted bug reports, tested, reviewed and otherwise helped out. diff --git a/jmbase/jmbase/support.py b/jmbase/jmbase/support.py index 95bef127b..23b788fff 100644 --- a/jmbase/jmbase/support.py +++ b/jmbase/jmbase/support.py @@ -9,7 +9,7 @@ import urllib.parse as urlparse # JoinMarket version -JM_CORE_VERSION = '0.9.7dev' +JM_CORE_VERSION = '0.9.7' # global Joinmarket constants JM_WALLET_NAME_PREFIX = "joinmarket-wallet-" diff --git a/jmbase/setup.py b/jmbase/setup.py index 569a907f0..a1be9425b 100644 --- a/jmbase/setup.py +++ b/jmbase/setup.py @@ -2,7 +2,7 @@ setup(name='joinmarketbase', - version='0.9.7dev', + version='0.9.7', description='Joinmarket client library for Bitcoin coinjoins', url='https://github.com/JoinMarket-Org/joinmarket-clientserver/tree/master/jmbase', author='', diff --git a/jmbitcoin/setup.py b/jmbitcoin/setup.py index 4d50c5670..853dc865d 100644 --- a/jmbitcoin/setup.py +++ b/jmbitcoin/setup.py @@ -2,7 +2,7 @@ setup(name='joinmarketbitcoin', - version='0.9.7dev', + version='0.9.7', description='Joinmarket client library for Bitcoin coinjoins', url='https://github.com/JoinMarket-Org/joinmarket-clientserver/tree/master/jmbitcoin', author='', diff --git a/jmclient/setup.py b/jmclient/setup.py index 947577b50..5b190c028 100644 --- a/jmclient/setup.py +++ b/jmclient/setup.py @@ -2,14 +2,14 @@ setup(name='joinmarketclient', - version='0.9.7dev', + version='0.9.7', description='Joinmarket client library for Bitcoin coinjoins', url='https://github.com/JoinMarket-Org/joinmarket-clientserver/tree/master/jmclient', author='', author_email='', license='GPL', packages=['jmclient'], - install_requires=['joinmarketbase==0.9.7dev', 'mnemonic', 'argon2_cffi', + install_requires=['joinmarketbase==0.9.7', 'mnemonic', 'argon2_cffi', 'bencoder.pyx>=2.0.0', 'pyaes', 'klein==20.6.0', 'pyjwt==2.4.0', 'autobahn==20.12.3'], python_requires='>=3.6', diff --git a/jmdaemon/setup.py b/jmdaemon/setup.py index cc448fae8..c16a07831 100644 --- a/jmdaemon/setup.py +++ b/jmdaemon/setup.py @@ -2,13 +2,13 @@ setup(name='joinmarketdaemon', - version='0.9.7dev', + version='0.9.7', description='Joinmarket client library for Bitcoin coinjoins', url='https://github.com/JoinMarket-Org/joinmarket-clientserver/tree/master/jmdaemon', author='', author_email='', license='GPL', packages=['jmdaemon'], - install_requires=['txtorcon', 'cryptography==3.3.2', 'pyopenssl', 'libnacl', 'joinmarketbase==0.9.7dev'], + install_requires=['txtorcon', 'cryptography==3.3.2', 'pyopenssl', 'libnacl', 'joinmarketbase==0.9.7'], python_requires='>=3.6', zip_safe=False) diff --git a/jmqtui/setup.py b/jmqtui/setup.py index 339d1b547..b9d95da26 100644 --- a/jmqtui/setup.py +++ b/jmqtui/setup.py @@ -1,7 +1,7 @@ from setuptools import setup setup(name='joinmarketui', - version='0.9.7dev', + version='0.9.7', description='Joinmarket client library for Bitcoin coinjoins', url='https://github.com/JoinMarket-Org/joinmarket-clientserver/tree/master/jmqtui', author='', diff --git a/scripts/joinmarket-qt.py b/scripts/joinmarket-qt.py index 7553d5508..6b0a60297 100755 --- a/scripts/joinmarket-qt.py +++ b/scripts/joinmarket-qt.py @@ -53,7 +53,7 @@ donation_address_url = "https://bitcoinprivacy.me/joinmarket-donations" #Version of this Qt script specifically -JM_GUI_VERSION = '29dev' +JM_GUI_VERSION = '29' from jmbase import get_log, stop_reactor, set_custom_stop_reactor from jmbase.support import EXIT_FAILURE, utxo_to_utxostr,\