diff --git a/docs/JOINMARKET-QT-GUIDE.md b/docs/JOINMARKET-QT-GUIDE.md index 9e4652873..ba9a5a546 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 32**. You can check the version via `About` in the menu. +**LATEST VERSION of JoinMarket-Qt is GUI version 33**. 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.11.md b/docs/release-notes/release-notes-0.9.11.md new file mode 100644 index 000000000..89d5dc107 --- /dev/null +++ b/docs/release-notes/release-notes-0.9.11.md @@ -0,0 +1,176 @@ +Joinmarket-clientserver 0.9.11: +================= + + + +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. In order to recreate it, rename the old joinmarket.cfg and run 'python3 wallet-tool.py generate' from the scripts folder.* + +(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. + +Changes +=============== + +### Removal of Python 3.7 support, 3.8 or newer is required now + +Python 3.7 has been end of-life since June 2023 in it was blocker for some necessary dependency updates. + +Note that we currently only Python 3.8, 3.9, 3.10 and 3.11 are supported, not Python 3.12 and newer. + +* `7e045c9` Requires Python <3.12 +* `3d56837` Remove unnecessary check for Python 3.7+ +* `204f117` Drop Python 3.7 support + +### Move to modern packaging and source layout + +- Migrate to src-layout following https://setuptools.pypa.io/en/latest/userguide/package_discovery.html#src-layout to facilitate automatic package discovery and editable installs. +- Create `joinmarket` namespace distribution package in line with https://packaging.python.org/en/latest/guides/packaging-namespace-packages/ +- Migrate to `pyproject.toml` file for project configuration instead of legacy `setup.py` + +* `c8eef50` Migrate to modern packaging and src layout + +### Performance improvements + +Lots of performance improvements made in wallet code that makes big impact especially with old wallets, with a lots of transaction history (in extreme cases time needed for some operations was improved from 40+ minutes to around 10 seconds). + +This involves caching some computed data in wallet, for cases when if there is some bug with this discovered, new configuration option `wallet_caching_disabled` is added to `joinmarket.cfg`, which allows to disable it when syncing the wallet. + +* `48aec83` wallet: remove a dead store in get_index_cache_and_increment +* `8245271` wallet: avoid IndexError in _is_my_bip32_path +* `574c29e` wallet: hoist get_script_from_path default impl into BaseWallet +* `2c38a81` wallet: delete redundant get_script and get_addr methods +* `b58ac67` wallet: drop _get_addr_int_ext; replace with calls to get_new_addr +* `fc1e000` wallet_showutxos: use O(1) check for frozen instead of O(n) +* `184d76f` wallet: add get_{balance,utxos}_at_mixdepth methods +* `77f0194` wallet_utils: use new get_utxos_at_mixdepth method +* `64f18bc` get_imported_privkey_branch: use O(m+n) algorithm instead of O(m*n) +* `01ec2a4` wallet: add _addr_map, paralleling _script_map +* `5bc7eb4` wallet: add persistent cache, mapping path->(priv, pub, script, addr) +* `c3c10f1` wallet: implement optional cache validation +* `ef1d76e` Allow cache purging at wallet initialization +* `f2ae8ab` Don't validate cache during initial sync. +* `8491431` cache deserialized form of txs in history method +* `fab97a0` Use get_deser_from_gettransaction() everywhere + +### Drop official support for 32-bit platforms + +It should still work, but you might need Rust compiler installed for `install.sh` to succeed. It was necessary for newer versions of `cryptography` Python package. See https://github.com/JoinMarket-Org/joinmarket-clientserver/issues/1454 and https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1579. + +### Wallet RPC API improvements and fixes + +* `a847df9` Patch #1480: call get_POST_body once +* `af9f462` fix(docs): remove duplicate keys in wallet-rpc.md +* `ef29982` remove bearer authentication errors +* `c88429d` JWT authority fixes +* `638200d` feat(rpc): add block height to session response +* `d8f1fc4` Add optional txfee property for direct-send wallet RPC +* `ab1481d` RPC API: Add optional txfee property for single joins + +### Removal of `convert_old_wallet.py` script + +It was broken and old format wallets for conversion of which it was used aren't created by JoinMarket since v0.4.0 six years ago. If anybody still needs to do that conversion, some older JoinMarket release can be used. + +* `d89dcde` Remove convert_old_wallet.py script + +### Code quality improvements + +* `3fc74fb` Refactor and cleanup of blockchaininterface and related +* `3e71df5` Fix ShellCheck warnings +* `7ebbacf` Add type hints +* `2978b18` De-duplicate and change dict_factory +* `d9fee29` Fix get_tx_info() type hint and doc +* `c4414e8` Minor quality improvements in wallet code + +### Bugfixes and other minor changes + +* `47bc77f` Fix some internal dependencies +* `83d7ebb` Log in case JM loads RPC wallet at startup +* `438cb41` Replace readfp() +* `4486b10` Transaction virtual size must be rounded upwards +* `c990a4d` Allow fee bump tx not signalling BIP125 if mempoolfullrbf is enabled +* `bfc618a` Fix OrderbookWatch.on_order_seen() exception debug messages +* `6ec6308` Deduplicate wallet error messages +* `1822279` Warn user if higher priority confirmation target than requested is provided by blockchain source +* `196a097` Allow absurd fee override when setting tx fee manually +* `9c13180` Raise fallback fee rate from 10 sat/vB to 20 sat/vB +* `0a225c1` Payjoin: log full proposed PSBT from sender if it fails sanity checks +* `cde6b4c` Fix no amount entered message (can be sats too, not only BTC) + +### Documentation + +Most important - Bitcoin Core v26 has dropped legacy wallet support by default, but JoinMarket still doesn't support new descriptor wallets. So documentation was changed to note users that Core should be started with `deprecatedrpc=create_bdb` configuration parameter for JM to work. + +* `c9c4648` Update release-notes-0.9.10.md +* `1a8d0ea` Correct help description for --develop +* `c2a6b3d` Rephrase hidden service dir config, lint +* `8555a8b` Removed donation link +* `79e5c3d` Document Core wallet creation for v26 +* `13661f5` Docs: Fix links in Docker install section +* `cb60774` Qt: Remove donation link from "About" dialog +* `9ab8ad6` Remove mention of donations from JoinMarketQt guide +* `a5a5132` update payjoin doc + +### Installation and dependencies + +* `c08e824` build(deps): update tor from v0.4.7.13 to v0.4.8.7 +* `1ebb68f` Update txtorcon to 23.0.0 +* `7181512` Upgrade setuptools also with --docker-install +* `91dacf6` Rewrite AES code with cryptography +* `70366ff` Bump cryptography to 41.0.4 for all platforms +* `b2c5603` Bump twisted from 22.4.0 to 23.8.0 +* `30d9715` Update Dockerfile +* `f40bd64` Bump cryptography from 41.0.4 to 41.0.6 +* `9410b9c` Update libsecp256k1 and python-bitcointx +* `47acf6a` Update libsecp256k1 to v0.4.1 +* `8254a67` Update secp256k1 lib deps for pythonbitcointx1.1.5 +* `ca33eca` Bump txtorcon from 23.0.0 to 23.11.0 +* `66fcf38` Bump twisted from 23.8.0 to 23.10.0 +* `8846c4d` Remove --disable-jni from libsecp256k1_build + +### Testing + +* `bfd5b21` fix linting +* `906eb71` CI: Update Bitcoin Core from 25.0 to 25.1 +* `d25457b` CI: Disable venv caching +* `4f4945e` Test min and latest Python version only +* `027682a` CI: Add ShellCheck +* `1cb20d5` Do not reinstall on test +* `8684853` Support Bitcoin Core v26 for tests +* `d234731` Add -allowignoredconf=1 for Bitcoin Core v26+ +* `935a734` Fix tests for Core v26 when user has no access to ~/.bitcoin/settings.json +* `8f382d0` Add test for dict_factory() +* `4d15a2c` CI: Add OpenAPI Diff action +* `fe9ec99` When looking for a free TCP ports, bind only to localhost +* `8e6eca8` Add CodeQL code scanning + +Credits +======= + +Thanks to everyone who directly contributed to this release - + +- @AdamISZ +- @BTCBellyButton +- @dennisreimann +- @dependabot[bot] :) +- @kristapsk +- @MarnixCroes +- @roshii +- @st3b1t +- @theborakompanioni +- @whitslack + +And thanks also to those who submitted bug reports, tested, reviewed and otherwise helped out. diff --git a/pyproject.toml b/pyproject.toml index 5f1700148..7edd4e2e9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "joinmarket" -version = "0.9.11dev" +version = "0.9.11" description = "Joinmarket client library for Bitcoin coinjoins" readme = "README.md" requires-python = ">=3.8,<3.12" diff --git a/scripts/joinmarket-qt.py b/scripts/joinmarket-qt.py index d120724f1..82cd20ae0 100755 --- a/scripts/joinmarket-qt.py +++ b/scripts/joinmarket-qt.py @@ -51,7 +51,7 @@ qt5reactor.install() #Version of this Qt script specifically -JM_GUI_VERSION = '33dev' +JM_GUI_VERSION = '33' from jmbase import get_log, stop_reactor, set_custom_stop_reactor from jmbase.support import EXIT_FAILURE, utxo_to_utxostr,\ diff --git a/src/jmbase/support.py b/src/jmbase/support.py index de2ac3821..065cfda4d 100644 --- a/src/jmbase/support.py +++ b/src/jmbase/support.py @@ -12,7 +12,7 @@ import urllib.parse as urlparse # JoinMarket version -JM_CORE_VERSION = '0.9.11dev' +JM_CORE_VERSION = '0.9.11' # global Joinmarket constants JM_WALLET_NAME_PREFIX = "joinmarket-wallet-"