diff --git a/.dockerignore b/.dockerignore index e1c1265bb6e7..dc04b7b475c4 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,3 +4,4 @@ .git .tox android/**/build +android/release \ No newline at end of file diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000000..4840728e69ab --- /dev/null +++ b/.editorconfig @@ -0,0 +1,11 @@ +root = true + +[*] +indent_style = space +trim_trailing_whitespace = true +end_of_line = lf +charset = utf-8 + +[*.py] +indent_size = 4 +insert_final_newline = true diff --git a/.github/workflows/audit.yml b/.github/workflows/audit.yml new file mode 100644 index 000000000000..8754c23bd355 --- /dev/null +++ b/.github/workflows/audit.yml @@ -0,0 +1,23 @@ +name: Python Audit + +on: + workflow_dispatch: + schedule: + - cron: '0 0 * * *' + +jobs: + pip_audit: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Check out source + uses: actions/checkout@v3 + - name: Run Audit + uses: pypa/gh-action-pip-audit@v1.0.5 + with: + inputs: | + contrib/deterministic-build/requirements-binaries.txt + contrib/deterministic-build/requirements-build-wine.txt + contrib/deterministic-build/requirements-hw.txt + contrib/deterministic-build/requirements-pip.txt + contrib/deterministic-build/requirements.txt diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000000..b6b092a059cd --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,121 @@ +name: Building + +on: + workflow_dispatch: + inputs: + appimage: + type: boolean + description: Build AppImage + default: true + sdist: + type: boolean + description: Build Linux sdist + default: true + win32: + type: boolean + description: Build Win32 + default: true + android: + type: boolean + description: Build Android + default: true + # MacOS Building is expensive (in terms of minutes charged) + # but also unnecessary since this rarely breaks for us in practice. + macos: + type: boolean + description: Build macOS + default: false + + schedule: + - cron: '0 0 * * 1' + +jobs: + build_appimage: + if: (github.event.inputs.appimage == 'true' || github.event_name == 'schedule') + env: + GIT_REPO: ${{ github.server_url }}/${{ github.repository }} + runs-on: ubuntu-latest + timeout-minutes: 60 + steps: + - name: Check out source + uses: actions/checkout@v3 + with: + submodules: true + - name: Build AppImage + run: contrib/build-linux/appimage/build.sh ${{ github.ref_name }} + - name: Archive build + uses: actions/upload-artifact@v3 + with: + path: dist/Electron-Cash*.AppImage + build_sdist: + if: (github.event.inputs.sdist == 'true' || github.event_name == 'schedule') + env: + GIT_REPO: ${{ github.server_url }}/${{ github.repository }} + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - name: Check out source + uses: actions/checkout@v3 + with: + submodules: true + - name: Build srcdist + run: contrib/build-linux/srcdist_docker/build.sh ${{ github.ref_name }} + - name: Archive build + uses: actions/upload-artifact@v3 + with: + path: | + dist/Electron-Cash*.zip + dist/Electron-Cash*.tar.gz + build_win32: + if: (github.event.inputs.win32 == 'true' || github.event_name == 'schedule') + env: + GIT_REPO: ${{ github.server_url }}/${{ github.repository }} + runs-on: ubuntu-latest + timeout-minutes: 120 + steps: + - name: Check out source + uses: actions/checkout@v3 + with: + submodules: true + - name: Build wine + run: contrib/build-wine/build.sh ${{ github.ref_name }} + - name: Archive build + uses: actions/upload-artifact@v3 + with: + path: dist/Electron-Cash*.exe + build_android: + if: (github.event.inputs.android == 'true' || github.event_name == 'schedule') + runs-on: ubuntu-latest + timeout-minutes: 60 + steps: + - name: Check out source + uses: actions/checkout@v3 + with: + submodules: true + - name: Build Android + run: | + cp android/dummykeystore.jks android/keystore.jks + android/build.sh + - name: Archive build + uses: actions/upload-artifact@v3 + with: + path: android/release/*.apk + build_macos: + if: (github.event.inputs.macos == 'true') + runs-on: macos-latest + timeout-minutes: 60 + steps: + - name: Check out source + uses: actions/checkout@v3 + with: + submodules: true + - name: Build macOS + working-directory: contrib/osx + run: | + brew install coreutils + brew install pyenv + ./make_osx + - name: Archive build + uses: actions/upload-artifact@v3 + with: + path: dist/Electron-Cash*.dmg diff --git a/.github/workflows/run-tox.yml b/.github/workflows/run-tox.yml new file mode 100644 index 000000000000..1280726779f7 --- /dev/null +++ b/.github/workflows/run-tox.yml @@ -0,0 +1,43 @@ +name: Testing + +on: + workflow_dispatch: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [macos-latest, ubuntu-latest, windows-latest] + python-version: ['3.7', '3.8', '3.9', '3.10', '3.11'] + + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install tox tox-gh-actions + - name: Test with tox + run: tox + - name: Archive code coverage (Unittest) + if: (matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11') + uses: actions/upload-artifact@v3 + with: + name: code-coverage-report + path: htmlcov + - name: Archive code coverage (Regtest) + if: (matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11') + uses: actions/upload-artifact@v3 + with: + name: code-coverage-report-regtest + path: htmlcov-regtest diff --git a/.gitignore b/.gitignore index ba43a04fb0dc..4cd5a37934fc 100644 --- a/.gitignore +++ b/.gitignore @@ -17,10 +17,15 @@ env/ bin/ /app.fil tmp/ +electroncash/*.so.0 +electroncash/*.dylib +contrib/osx/*.dylib # tox files .cache/ .coverage +.coverage-regtest +htmlcov # MacOSX .DS_Store/ @@ -30,3 +35,9 @@ xcuserdata/ # IntelliJ Pycharm IDE /.idea +# vs code +.vscode/ +# mypy +.mypy_cache/ + +venv/ diff --git a/.gitmodules b/.gitmodules index e816a3acb119..99f559e7a143 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,21 @@ -[submodule "contrib/osx/CalinsQRReader"] - path = contrib/osx/CalinsQRReader - url = https://github.com/cculianu/CalinsQRReader +[submodule "contrib/secp256k1"] + path = contrib/secp256k1 + url = https://github.com/Electron-Cash/secp256k1.git +[submodule "contrib/electrum-locale"] + path = contrib/electrum-locale + url = https://github.com/Electron-Cash/electrum-locale +[submodule "contrib/zbar"] + path = contrib/zbar + url = https://github.com/mchehab/zbar +[submodule "contrib/openssl"] + path = contrib/openssl + url = https://github.com/openssl/openssl.git +[submodule "contrib/libevent"] + path = contrib/libevent + url = https://github.com/libevent/libevent.git +[submodule "contrib/zlib"] + path = contrib/zlib + url = https://github.com/madler/zlib.git +[submodule "contrib/tor"] + path = contrib/tor + url = https://github.com/EchterAgo/tor.git diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 2628f3011111..000000000000 --- a/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -sudo: false -language: python -python: - - 3.5 - - 3.6 -install: - - pip install -r contrib/requirements/requirements-travis.txt -cache: - - pip -script: - - tox - - coveralls diff --git a/AUTHORS b/AUTHORS index afcc29ecc42b..70964c6f153b 100644 --- a/AUTHORS +++ b/AUTHORS @@ -12,10 +12,17 @@ rdymac - Website and translations. kyuupichan - Miscellaneous. Sombernight - many fixes Jonald Fyookball - Imperator -Calin Culianu - iOS version, MacOS packaging, MacOS QRScanner, miscellaneous +Calin Culianu - iOS version, MacOS packaging, MacOS QRScanner, CashShuffle, miscellaneous Malcolm Smith - New Android Version, tuneups and fixups Roger Taylor - new version 1.4 blockchain synch code, external plugin system, miscellanous -Mark Lundeberg - Windows zbar, SLP (Tokens) work, various miscellanity +Mark Lundeberg - Windows zbar, SLP (Tokens) work, cryptography, CashShuffle, miscellaneous +James Cramer - Simple Ledger Protocol (Tokens) Jochen Hoenicke - Trezor, Ledger, and other miscellaneous fixes -Jonas Lundqvist - BIP70 fix, currency exchanges +Jonas Lundqvist - BIP70 fix, currency exchanges, Android Marcel O'Neil - Miscellaneous + packaging fixups +Clifford - CashShuffle +imaginaryusername - UI and privacy recommendations +emergent_reasons - Code review and uncanny bug detection +Josh Ellithorpe - CashShuffle server +Axel Gembe - Ledger fixes, Windows Qt woes, miscellaneous +Alexander Schlarb - macOS ctypes bindings diff --git a/MANIFEST.in b/MANIFEST.in index cb2eff1a30c6..8a50cd5c7289 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -6,12 +6,13 @@ include *.py include electron-cash include contrib/requirements/requirements.txt include contrib/requirements/requirements-hw.txt -recursive-include lib *.py -recursive-include gui *.py -recursive-include plugins *.py +include contrib/requirements/requirements-binaries.txt +include contrib/requirements/requirements-web3.txt +recursive-include electroncash *.py +recursive-include electroncash_gui *.py +recursive-include electroncash_plugins *.py recursive-include packages *.py recursive-include packages cacert.pem include icons.qrc recursive-include icons * recursive-include scripts * - diff --git a/README.rst b/README.rst index 473abf9de387..da70f2c5f3d1 100644 --- a/README.rst +++ b/README.rst @@ -4,29 +4,41 @@ Electron Cash - Lightweight Bitcoin Cash client :: Licence: MIT Licence - Author: Jonald Fyookball + Author: Electron Cash Developers Language: Python Homepage: https://electroncash.org/ - .. image:: https://d322cqt584bo4o.cloudfront.net/electron-cash/localized.svg :target: https://crowdin.com/project/electron-cash :alt: Help translate Electron Cash online +.. image:: ../../actions/workflows/run-tox.yml/badge.svg?branch=master + :target: ../../actions/workflows/run-tox.yml?query=branch%3Amaster + :alt: GitHub Actions Tests +.. image:: ../../actions/workflows/build.yml/badge.svg + :target: ../../actions/workflows/build.yml + :alt: GitHub Actions Build - +.. image:: ../../actions/workflows/audit.yml/badge.svg + :target: ../../actions/workflows/audit.yml + :alt: GitHub Actions Python Audit Getting started =============== -Electron Cash is a pure python application forked from Electrum. If you want to use the -Qt interface, install the Qt dependencies:: +**Note: If running from source, Python 3.7 or above is required to run Electron Cash.** If your system lacks Python 3.7, +you have other options, such as the `AppImage / binary releases `_ +or running from source using `pyenv` (see section `Running from source on old Linux`_ below). + +**macOS:** It is recommended that macOS users run `the binary .dmg `_ as that's simpler to use and has everything included. Otherwise, if you want to run from source, see section `Running from source on macOS`_ below. + +Electron Cash is a pure python application forked from Electrum. If you want to use the Qt interface, install the Qt dependencies:: - sudo apt-get install python3-pyqt5 + sudo apt-get install python3-pyqt5 python3-pyqt5.qtsvg If you downloaded the official package (tar.gz), you can run -Electron Cash from its root directory (called Electrum), without installing it on your +Electron Cash from its root directory (called Electron Cash), without installing it on your system; all the python dependencies are included in the 'packages' directory. To run Electron Cash from its root directory, just do:: @@ -37,6 +49,11 @@ You can also install Electron Cash on your system, by running this command:: sudo apt-get install python3-setuptools python3 setup.py install +Compile the icons file for Qt (normally you can skip this step, run this command if icons are missing):: + + sudo apt-get install pyqt5-dev-tools + pyrrc5 icons.qrc -o electroncash_gui/qt/icons.py + This will download and install the Python dependencies used by Electron Cash, instead of using the 'packages' directory. @@ -44,33 +61,48 @@ If you cloned the git repository, you need to compile extra files before you can run Electron Cash. Read the next section, "Development Version". +Hardware Wallet - Ledger Nano S +------------------------------- + +Electron Cash natively support Ledger Nano S hardware wallet. If you plan to use +you need an additional dependency, namely btchip. To install it run this command:: + + sudo pip3 install btchip-python + +If you still have problems connecting to your Nano S please have a look at this +`troubleshooting `_ section on Ledger website. Development version =================== +Check your python version >= 3.7, and install pyqt5, as instructed above in the +`Getting started`_ section above or `Running from source on old Linux`_ section below. + +If you are on macOS, see the `Running from source on macOS`_ section below. + Check out the code from Github:: git clone https://github.com/Electron-Cash/Electron-Cash cd Electron-Cash -Run install (this should install dependencies):: - - python3 setup.py install +Install the python dependencies:: -Compile the protobuf description file:: - - sudo apt-get install protobuf-compiler - protoc --proto_path=lib/ --python_out=lib/ lib/paymentrequest.proto + pip3 install -r contrib/requirements/requirements.txt --user Create translations (optional):: sudo apt-get install python-requests gettext ./contrib/make_locale +Compile libsecp256k1 (optional, yet highly recommended):: + + sudo apt-get install libtool automake + ./contrib/make_secp + For plugin development, see the `plugin documentation `_. -Running unit tests:: +Running unit tests (very optional, advanced users only):: pip install tox tox @@ -78,45 +110,65 @@ Running unit tests:: Tox will take care of building a faux installation environment, and ensure that the mapped import paths work correctly. -Creating Binaries -================= - +Running from source on old Linux +================================ + +If your Linux distribution has a different version of python 3 (such as python +3.5 in Debian 9), it is recommended to do a user dir install with +`pyenv `_. This allows Electron +Cash to run completely independently of your system configuration. + +1. Install `pyenv `_ in your user + account. Follow the printed instructions about updating your environment + variables and ``.bashrc``, and restart your shell to ensure that they are + loaded. +2. Run ``pyenv install 3.11.1``. This will download and compile that version of + python, storing it under ``.pyenv`` in your home directory. +3. ``cd`` into the Electron Cash directory. Run ``pyenv local 3.11.1`` which inserts + a file ``.python-version`` into the current directory. +4. While still in this directory, run ``pip install pyqt5``. +5. If you are installing from the source file (.tar.gz or .zip) then you are + ready and you may run ``./electron-cash``. If you are using the git version, + then continue by following the Development version instructions above. + +Running from source on macOS +============================ + +You need to install **either** `MacPorts `_ **or** `HomeBrew `_. Follow the instructions on either site for installing (Xcode from `Apple's developer site `_ is required for either). + +1. After installing either HomeBrew or MacPorts, clone this repository and switch to the directory: ``git clone https://github.com/Electron-Cash/Electron-Cash && cd Electron-Cash`` +2. Install python 3.7 or later. For brew: ``brew install python3`` or if using MacPorts: ``sudo port install python311`` +3. Install PyQt5: ``python3 -m pip install --user pyqt5`` +4. Install Electron Cash requirements: ``python3 -m pip install --user -r contrib/requirements/requirements.txt`` +5. Compile libsecp256k1 (optional, yet highly recommended): ``./contrib/make_secp``. + This requires GNU tools and automake, install with brew: ``brew install coreutils automake`` or if using MacPorts: ``sudo port install coreutils automake`` +6. At this point you should be able to just run the sources: ``./electron-cash`` -To create binaries, create the 'packages/' directory:: - ./contrib/make_packages - -This directory contains the python dependencies used by Electron Cash. - -The `make_packages` command may fail with some Ubuntu-packaged versions of -pip ("can't combine user with prefix."). To solve this, it is necessary to -upgrade your pip to the official version:: - - pip install pip --user - -Linux (source with packages) ----------------------------- +Creating Binaries +================= -Run the following to create the release tarball under `dist/`:: +Linux AppImage & Source Tarball +-------------- - ./setup.py sdist +See `contrib/build-linux/README.md `_. Mac OS X / macOS -------- -See `contrib/osx/`. +See `contrib/osx/ `_. Windows ------- -See `contrib/build-wine/`. +See `contrib/build-wine/ `_. Android ------- -See `gui/kivy/Readme.txt` file. +See `android/ `_. iOS ------- -See `ios/`. +See `ios/ `_. diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 2c024a6252b6..013395cf961a 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -157,16 +157,16 @@ and there is no warning message. # Release 3.1.2 * Additional security improvements related to JSONRPC -# Release 3.1.3 +# Release 3.1.3 * Android only release for security fixes -# Release 3.1.5 +# Release 3.1.5 * Various bug fixes # Release 3.1.6 * Enable Bip70 payment requests for merchants like BitPay. - * Prohibit unconfirmed inputs on payment request (invoice) payments + * Prohibit unconfirmed inputs on payment request (invoice) payments because Bitpay will reject them anyway. * Remove Bitpay address format from address converter as Bitpay is now fully on CashAddr. @@ -272,3 +272,1099 @@ and there is no warning message. * Various internal bugfixes and code refactoring (cculianu, ecdsa, SomberNight) * servers.json updated (torusJKL) * Fixed a compatibility issue with Qt 5.12 (SomberNight, cculianu) + +# Release 4.0.0 + +* Privacy features have been added, most notably CashShuffle has been integrated + strongly into the wallet. It is an optional plugin for shuffling coins + securely with other users. Coin control and other logic has been added as + well. The bulk of the work for this release has been this feature. + (Clifford, cculianu, Josh Ellithorpe, Mark Lundeberg, Jonald Fyookball, + imaginaryusername, emergent_reasons, acidsploit, and others). +* Fix #1174, #1178 - Resurrection of .onion support (requires enabling of + non-SSL). +* Fixups for qr code image saving (cculianu), #1175 +* Closing a wallet now actually closes its daemon threads. Closing a wallet + window now also implicitly closes any tx dialog child windows it created. + Closing the last wallet window in the app will quit the app, even if other + child windows are still alive. (cculianu) +* Coins tab layout fixups #1180, including right click -> Copy X (cculianu, + Mark Lundeberg, SomberNight) +* Addition of Wallet -> Scan beyon gap... tool #1194 (cculianu) +* Fixed #968 for the Receive tab -- when the form is unsaved it now always is + *guaranteed* to refresh itself with a new unused address in real time. + (cculianu) +* Tx notification systray popup was too intermittent. It now pops up more + frequently when reeiving or synching a new wallet. The wording used has also + been simplified. (cculianu) +* Fix #1182 - Bad proxy can end up in config file (cculianu) +* Fix #1215 - Tabs that are not being shown are no longer refreshed in the GUI. + They refresh themselves when you switch to them, however, if they need to. + This should improve perception of UI responsiveness for large wallets + especially. (cculianu) +* Fixed some bugs related to switching chains (forks) #1185 (cculianu) +* Fixed a bug where importing a private key didn't update the history until + app restart. (cculianu) +* Fix Network Dialog layout (SomberNight) +* Fix sign message not accept rich text spesmilo#5210 (SomberNight) +* Fix #1189 - Cope better with unknown wallet formats or corrupt wallets on + startup. This should improve the experience for SLP users that also use + regular Electron Cash (cculianu) +* Switch over to bitcoin-abc libsecp in preparation for Schnorr signatures. + Libsecp is now actually bundled with the Linux "source" tarball. (cculianu) +* Fix to exchange rate prefs screen UI and deletion of BitcoinAverage as a + historical rate provider (cculianu) +* If running from source, app now has an icon on all platforms (cculianu) +* Fix ubuntu installation for virtual-env (acidsploit) +* Due to phishing being a recurrent annoyance, "Preferred servers only" now + defaults to "CHECKED" for new installs. (cculianu) +* Many performance improvements, especially for large wallets (cculianu) +* Cache address balance in memory rather than recompute each call (SomberNight) +* Various internal bugfixes (cculianu, SomberNight, ecdsa) + +# Release 4.0.1 + +* Lowest base unit in GUI has been renamed from 'cash' to 'bits' by popular + demand. It turns out the 'cash' unit never was popular. (cculianu) +* CashShuffle & Keepkey: Fixed a bug in google protobuf that prevented both + plugins from being loaded simultaneously. #1227 (cculianu) +* Trezor support has been improved with many bugs fixed. It should be less + crashy overall when restoring seeds or when cancelling dialogs. (cculianu) + Special thanks to Technologov for providing feedback and for donating Trezor + wallets to test & dev on. +* Added ability to load any image to Trezor One or Model T's home screen. The + image will be scaled and dithered correctly. You can load PNG, JPG, GIF, + SVG or whatever other image formats Qt supports. (cculianu) +* CashShuffle: Implemented Coins Tab (right click) -> Reshuffle Coin. Use this + feature if want to shuffle already-shuffled coins again to keep liquidity up + or for even more privacy. (cculianu) +* Fix #1235 - Email plugin was broken and crashy. It works now. (cculianu) +* Virtual keyboard plugin looked terrible on some platforms, particularly macOS. + Its layout has been improved to look good on all plafrotms. (cculianu) +* Windows build is now on Python 3.6.8 +* Fix #1238 & #1239 - Dark Mode had some hard to read GUI elements due to poorly + chosen colors in the Transaction Dialog. Fixed. (cculianu) +* Fix #1231 - Request list esoteric crash when rebuilding history. (cculianu) +* Merge PR #959 - Fix the support for Ledger HW1/Nano legacy hardware w/o + touching Nano S/Blue (Thomas Preindl, Axel Gembe) +* Ledger: Improved handling of locked Ledger devices (#1245) (Axel Gembe) +* HW Wallets: Fixed devices not being closed properly in some cases (#1246) + (Axel Gembe) +* HW Wallets: Improved messaging for user when trying to detect a HW device + and dependent libraries are missing. This affects the install wizard and it + is hoped it will assist users in troubleshooting. (#1244, #1251) (Axel Gembe) +* HW Wallets: Show proper error message when trying to sign a tx with OP_RETURN + (#1254) (Axel Gembe) + +# Release 4.0.2 + +* Set the gap limit for change from 6 to 20. This is because we realized + CashShuffle wallets already behave as if the gap limit were 12 (reserving + addresses as they shuffle). We just made it official. (Mark Lundeberg) +* Added BIP38 private key support. You can create an import wallet, import + private keys, or sweep private keys using BIP38. In either of those 3, + specify a mix of WIF and/or BIP38 keys and you will be prompted to enter the + password to decrypt the BIP38 keys in question, 1 at a time. (#1289) + (cculianu) +* Added Windows CLI support if running from cmd.exe or WindowsPowerShell + (previously the console output was always mute even if running with -v -- + it only worked for msys, mingw, cygiwn, etc, but not normal Windows console). + (#1295) (Axel Gembe) +* Windows: Make console no longer flash on startup (#1294) (Axel Gembe) +* Fix to minor esoteric/rare bug in CashShuffle where it may be overzealously + freezing receiving addresses with non-shuffle outputs on them. (#1291) + (cculianu) +* Ledger HW Wallet: Remove non-working websocket 2FA for legacy ledger devices + (#1298) (Axel Gembe) +* Ledger HW Wallet: Added support for OP_RETURN and also multiple transaction + outputs (on devices that support it). Code mainly taken from Electrum but + adapted and modified by us. (Axel Gembe) +* Added Linux AppImage builds -- these builds are self-contained binaries with + everything rolled into a single file. It should make it much easier for + Linux users not wishing to install dependencies to simply run Electron Cash. + Based off Electrum's implementation, with our own customizations. (cculianu) +* OSX: Made the DMG release use a "fancy" dmg with graphics and a symlink to + /Applications as is customary on macOS. (cculianu) +* Lib: Fixed a potential crash bug if the server sends bad data to the client. + (cculianu) +* Deprecated support for Python 3.5. Electron Cash now requires Python 3.6+. +* CLI: Added -x/--disable_preferred_servers command-line option (#1222) + (cculianu) +* CLI: encrypt/decrypt commands were broken. They are now working. (#1270) + (cculianu) +* Disabled all fee estimates in the codebase. They are useless on BCH anyway + and were a holdover from our BTC roots. BCH tx's always confirm next block + if they pay the minimum 1.0 sats/B fee anyway. Fee estimates are not needed. + Also disabled the "Estimated confirmation time:" label from the Transaction + Dialog winow. This is not informative either for similar reasons. (cculianu) +* Hardened build system against dependency vulnerabilities (cculianu) +* Fixed bug when Coins -> "Spend" and you right-click in the Send tab's + coins area. (#1269) (Mark Lundeberg) +* Winows: Added some missing OpenGL libs to the built package. Qt will now + use OpenGL or fall back to ANGLE (GL -> D3D translation layer) or software + rendering. The fallbacks help with buggy drivers. (cculianu, Axel Gembe) +* Fixed Tx Dialog breaking on esoteric scriptsigs (#1263) (Mark Lundeberg) +* Strip whitespace when copying various right-click -> "Copy Amount" to the + clipboard. (cculianu) + +# Release 4.0.3 + +* Added Schnorr signatures to UI and backend (fyookball, cculianu, + Mark Lundeberg) +* After much trial and tribulation: fixed broken KeepKey support: KeepKey + webusb now works, too. Latest devices should work again. Thanks Axel! + (Axel Gembe) +* Fixed multisig not working on Trezor (& KeepKey) (cculianu, Axel Gembe) +* Updated QR reading accuracy and detection for Linux AppImage & Windows by + updating the version of ZBar we ship; it's custom-compiled by us from + official repo to include only what's needed. (Axel Gembe) +* Fix #1349 -- Assertion Error on daemon stop (cculianu) +* Added "Hardware Wallet Support..." tool in menu and in Install Wizard for + Linux only to install udev rules for HW wallets. (Axel Gembe, cculianu) +* OP_RETURN-too-large message in UI was wrong, off by 1 (Axel Gembe) +* Fix #1338 - Crash on BIP38 private key sweep (cculianu, im_uname) +* AppImage build fixups (Axel Gembe) +* Added/removed some servers from servers.json (cculianu, dagurval, im_uname) +* Address list: remove double space in balance column (Axel Gembe) +* Console: Make insert key toggle overwrite mode (Axel Gembe) +* x509 certs: Print better error messages when certs are expired; affects + bitpay BIP70 (cculianu, SomberNight) +* Layout and Qt effects fixups for various (Axel Gembe) +* Fix #1306 - Dark theme glitches (Axel Gembe) +* Fixups to keyboard navigation for console tab (Axel Gembe) +* Fix console font being reset when moving between monitors on Windows + (Axel Gembe) +* Qt accelerator key fixups (Axel Gembe) +* Fix #1261 - Mojave Dark mode looked bad (cculianu) +* Added fancy warning box on top of Console tab to prevent social engineering + attacks (Axel Gembe) +* Added -R/--relax-warnings CLI option to disable Secp & other warnings + (Axel Gembe) +* Better Qt error messages when importing bad WIF p2sh 'private keys' (cculianu) +* Ledger Nano-X USB device support (Axel Gembe) +* Various small other nits & bugfixes [see commit log] (cculianu, Axel Gembe) + +# Release 4.0.4 + +* Added a brand new, cross platform and awesome QR Code scanner #1376 + (Axel Gembe, cculianu) +* Fixed QR icon appearing black/invisible on some Linux systems + (Axel Gembe, cculianu) +* Allow user to load any image containing a QR code in the various QR-scan + style dialogs: Pay-to in Send tab, Private Key Sweep, etc. (Axel Gembe) +* Fix #1375 - Ensure 'Receive' tab does not ever give you a frozen address. + (cculianu) +* Schnorr signing has been enabled by default if previously unspecified if the + libsecp256k1[ABC] is present (non-HW, non-multisig wallets only) (cculianu) +* Fix #1385 - Auto-switch send tab mode Shuffled/Unshuffled depending on the + selected coins when doing Coins -> right click -> Spend. (cculianu) +* Various bugfixes (Axel Gembe, cculianu) + +# Release 4.0.5 + +* Bugfix -- Imported Private Key wallets as well as some HW wallets (keepkey) + could not sign or save a tx in 4.0.4 due to a subtle bug introduced as part + of a refactor. Fixed. (cculianu) +* Fixed QR scanner looking off-center on some platforms. (Axel Gembe) +* Fixed QR scanner quirks on some platforms when failure to configure camera + resolution confused the QR scanner a little bit. (Axel Gembe) + +# Release 4.0.6 + +* Added CoinText support. Just enter 'cointext:ANY_PHONE_NUMBER' in the send tab + to use it! (cculianu, Jonald Fyookball) +* Added a brand-new Transaction Dialog feature "Download input data" which + allows you to get 100% accurate fees, input addresses, and input amounts for + ANY tx in your wallet or even NOT in your wallet. (cculianu) +* Various fixups to script parser code and misc. transaction refactorings + (Mark Lundeberg) +* Qt: Enable automatic high DPI scaling on Windows and Linux (Axel Gembe) +* Redid some of the icons and graphics to support high DPI (Axel Gembe, + cculianu) +* Added command-line option `--qt_disable_highdpi` to force-disable high DPI + mode (Axel Gembe) +* Bugfixes to Ledger support + allow up to 187 byte OP_RETURN (Axel Gembe) +* Misc tiny UI nits and other fixups (cculianu, Axel Gembe) +* Updated libsecp256k1 to latest from Bitcoin-ABC (cculianu) +* Reduced .dmg, .exe, & .AppImage binary sizes by optimizing images (Axel Gembe) +* Updated servers.json (imaginaryusername) +* CashShuffle: Raised default shuffle limit to 99.9999 BCH (cculianu) +* Replaced the 'clock' icons with new hi-res versions. Please direct all + hatemail to Calin Culianu for he volunteers to take full responsibility. + (Jason Pribble, cculianu, James Cramer, Axel Gembe) +* Minor fix: Clicking a link in browser to open a URL in Electron Cash no longer + resurrects a closed wallet and instead opens the link in whatever active + wallet windows exist. (cculianu) + +# Release 4.0.7 + +* CoinText: Show a popup label after CoinText is initiated to remind user + they need to hit "Send" or "Preview" to proceed (cculianu, imaginary_username) +* Tx Dialog: Fixups and functionality expanded. All wallet addresses are now + links which are clickable (leading to the address's history view). All input + prevouts are now clickable links as well; they lead to a tx dialog screen for + the prevout tx. Additionally, we added a right-click context menu for the + input/output panes of the tx dialog window. This brings EC's functionality + closer to that of a mini block explorer. (cculianu) +* KeepKey: Fixed a packaging issue where loading BIP39 onto an uninitialized + KeepKey would fail with a Python exception on Windows & Mac #1434 (cculianu) +* Python 3.6 is officially the minimum Python version for Electron Cash now. + In the last version, you could still run on Python 3.5 (poorly), we just + made it official. (Axel Gembe, cculianu) +* Added OP_RETURN capability to the 'Receive' tab. You can now generate receive + request URIs and QR codes containing 'op_return' and/or 'op_return_raw'. Not + all wallets can read this query string argument, but Electron Cash can. + (cculianu) +* Linux run-from-source: Warn/Abort with helpful messages if user is missing + required PyQt libs such as QtSvg. (cculianu) +* QR Scanner: Added informative message for Linux run-from-source users who + happen to have a broken PyQt5 lacking a required lib for accessing the + camera. (cculianu) +* Schnorr: Defaults to off for watching-only wallets. This is to prevent + air-gapped setups from underestimating fee between generating and signing EC. + (cculianu) +* Tx Dialog: Warn if user is attempting to broadcat a low fee tx of <1 sats/B. + (cculianu) +* Address tab: Allow CTRL+F of addresses prefixed with bitcoincash: to do the + expected thing. (cculianu) +* Various bugfixes (cculianu) +* OpenAlias: Fix #1441 - Resurrected it form the dead. It wasn't working before. + You can now send payments to people via their openalias eg user@domain.net + (requires they set up a DNS TXT record). See https://openalias.org/#implement + (Axel Gembe) +* AppImage: 100% deterministic builds now. (Axel Gembe) +* AppImage: "Open in block explorer" now works (Axel Gembe) +* Windows: We figured out what was causing the anti-virus false positives on + our recent releases and took steps to reduce the possibility of AV false + positives going forward. (cculianu, Axel Gembe) +* CashShuffle: Fix #1223 - Finally resolved the "dead menu actions" bug where + sometimes after bringing up the CashShuffle settings, hotkeys and File->menu + actions would no longer respond. (cculianu, Axel Gembe) +* Quotes/Fiat Exchange Rate: The "historical rates" code was buggy and prone + to "no data" being shown even when the server we get the quotes from has + data. Bug #1448. This has now been fully fixed and made unbuggy. (cculianu) +* Export Wallet History: Fix #1459 - The Wallet -> Export History facility now + always exports fiat history data if "Fiat History" is enabled in preferences. + Note also that the history export is now sorted in descending order by date, + like the history tab default sort order. (cculianu) +* Update checker: Made the "new version available!" notification less obtrusive: + it now posts a message to the system tray popup as well as just creating a + new status bar icon you can click on to respond to the notification at your + leisure. Hopefully this will tempt fewer people to turn off the notifications + (cculianu) +* Preferences pane: Split up the "Transactions" tab in the preferences to + "per-wallet" and "app-global" sections to more clearly communicate in the UI + which of the options are global and which are per-wallet. Closes issue #1427 + (cculianu) +* Preferences pane: Added a new option "notify when receiving funds" which + is on by default and if unchecked, allows you to no longer receive system + tray notifications on tx's. This is a per-wallet setting. Closes issue #1451 + (cculianu) +* Tx Send Confirmation: Added a new button to the tx send confirmation dialog + "Copy link" which copies the link to the tx on the configured block explorer. + Issue #1464 (cculianu) +* AppImage builds have been made SIGNIFICANTLY smaller. Here's to faster + downloads and peppier startup times, hooray! In addition, the macOS .dmg build + and the Windows .exe builds have been made slightly smaller. (Axel Gembe) +* Cash Address Toggle: Replaced icon with a much nicer one. (Leandro Di Marco) +* Cash Address Toggle: After a reddit poll was conducted, we decided to make it + possible to disable the cash address status bar button in the GUI. It's on + by default, but can be disabled in Preferences -> General. In addition, the + Preferences -> General tab has been laid out slightly differently. (cculianu) +* Improved system tray icon and other assorted icons for high DPI. (Axel Gembe) +* Various build system fixes and bugs fixed. (Axel Gembe) + +# Release 4.0.8 + +* Cash Accounts support has been added to Electron Cash! Most of the UI for it + is in the "Contacts" tab (View -> Show Contacts), there are also UI bits to it + in the Addresses tab, in the Tools menu, and of course, the Send tab (where + you can enter any Cash Account and it will get auto-resolved for you!) + #1505 (cculianu with massive platform work from Axel Gembe) +* Fixups to allow Digital Bitbox and Ledger to sign more types of OP_RETURN + outputs. (imaginaryusername, Axel Gembe, cculianu) +* "Button" Editor: Fix keypress events going to the editor when the buttons are + focused and other nits. #1518 (Axel Gembe) +* More help for "QtSvg Missing" error; #1516 (Mark Lundeberg) +* Qt: Performance fix to History tab for wallets with many txs when verifying. + The performance when verifying for wallets with a huge history was not optimal + and the UI would periodically hang. This has been fixed. (cculianu) +* SPV: Make the merkle node checker no longer care whether "inner node looks + like a tx" because this check is no longer need after the Nov. 2018 hard-fork. + (cculianu, Mark Lundeberg) +* Fix #1502 - Intermittent iOS Crash Reporter on bad/expired BIP70 Payment + (cculianu) +* Translations: Add support for plural forms #1500 (Axel Gembe) +* Coins Tab: Added default sort order of Amount, Descending. The Coins tab now + also remebers whatever sort order you gave it. This should be good for + CashShuffle users with many coins in their coins tab. (cculianu) +* Wallet: Improve performance of is_mine() check from O(N) to O(logN) (cculianu) +* Qt Network Dialog: Let the user edit the host/port in peace (SomberNight, + cculianu) +* Fonts: Improve color emoji support on Windows and Linux #1498 (Axel Gembe) +* Fonts: Add Google Noto Color Emoji font subset #1496, #1523 - This is bundled + in Windows and AppImage and loaded at runtime if the user lacks a suitable + color emoji font (Axel Gembe). +* AppImage: Bundle more binaries to increase compatibility & other fixes #1492 + (Axel Gembe) +* Updated "Error, Could not import PyQt5" message to be more helpful (cculianu) +* Qt: Update to 5.12.3 for Windows and AppImage builds #1490 (Axel Gembe) +* Linux Qt: Warn user if running Qt < 5.12 (this has terrible font support + which causes EC to render fonts badly if using emojis or unicode) (cculianu) +* AppImage: Upgrade to Ubuntu 16.04 as base #1489 (Axel Gembe) +* Build: Protect against PGP keyserver poisoning attack #1487 (Axel Gembe) +* Added electroncash.se server to servers.json (Georg Engelman) +* TxDialog: Allow various fields to be selected by mouse. (cculianu) +* TxDialog: Added the "Mined in block" field to the dialog. (cculianu) +* Localization: The app now defaults to the system language on Windows, Mac and + generic Unix for new installs. The preferences dialog has also been improved + to bring the General tab to the front and make the language picker contain + translated language names. #1477 (Axel Gembe, cculianu, Alexander Schlarb) +* Fix #1473: Omit bitcoincash: prefix from legacy address in receive tab QR + image if no parameters are filled-in other than 'address'. This allows users + to quickly use the receive tab to scan a QR image from a mobile wallet that + doesn't know about bitcoincash:. Note that if the receive tab has parameters + filled in eg: description, amount, etc, then the receive request becomes a + URI and it will have the bitcoincash: prefix prepended, even if using legacy + address mode. (cculianu) +* Ledger: Fix #1479: 2FA Dialog with Legacy devices and multiple outputs was + crashy due to a small programming error. Fixed. (Axel Gembe) +* Added various hotkeys to the GUI Ctrl+K, Ctrl+M, etc. You will see them in + the various in-app menus (such as Tools, Wallet, etc). (cculianu) +* Made the network layer more resilient to malformed server responses. + (cculianu) +* Search box has been fixed to not get crushed by the balance label and to also + work better and have placeholder text. Closes #1493 (cculianu) +* Coins tab: Offer alternate address format copy (eg "Copy Legacy Address" if + in CashAddr mode, and vice versa). This was already available in the Addresses + tab but wasn't in the Coins tab. Closes #1476 (cculianu) +* Address tab: Allow multi-select and copy of data items such as Addresses, + Address & Balance, etc. Closes #1475 (cculianu) +* Contacts tab: All contacts can now also get an optional label. The label is + keyed off the address and is saved in wallet.labels. Closes #1508 (cculianu) +* Added better help for the Pay to edit in the send tab. The help text has been + improved to clarify this advanced widget's capabilities, and a '?' help button + has been added in the tool buttons for the line edit. (cculianu) +* App icon has been updated to be a little more rectangular and render better + across resolutions and platforms. #1526 (cculianu, Axel Gembe, fyoookball, + BeltranLeo) +* Update checker: Use a longer timeout to not time out when using a proxy + server. #1509 (cculianu) +* External Plugins: Be more resilient to a bad plugin file. #1533 (cculianu) +* Updated translations (Axel Gembe) +* Email plugin crash fix #1534 (cculianu) +* Minor UI bugfixes. (Axel Gembe, cculianu) + +# Release 4.0.9 + +* Fixed remaining (rare, hopefully) font & emoji rendering issues on some Linux + distributions. (Axel Gembe) +* Added preferences options for "Use FreeType" (Windows) and "fontconfig + overrides" (Linux). (cculianu) +* Updated blockchain checkpoint to block 592911. (Malcolm Smith) +* Added support for "cashacct:" URIs #1547. You can paste these in the Pay-to + edit in the Send tab or, if on Linux, Mac & Windows, click on a cashacct: + link in your browser as well. (cculianu) +* Fixed esoteric crash bug which would occur sometimes when opening the + preferences dialog. This bug was due to bugs in PyQt5 when using QtMultimedia + and the fix involved loading QtMultimedia at app start, rather than on-demand. + #1545 (cculianu) +* Fix #1552: Disallow "Request payment" in addresses tab when address is used. + This would lead to an inconsistent UI; the receive tab would always enforce a + new address anyway, so the option in the right-click menu was misleading at + best in that situation. "Request payment" works as normal if the address is + unused, however. (cculianu) +* Fixed Windows setup.exe to be more reproducible and other misc build fixes. + (Axel Gembe, cculianu) +* Fixed very rare uncaught exception due to misbehaving plugin #1554. (cculianu) +* KeepKey & Trezor: Fix WebUSB on Windows 10 1903 by patching libusb, #1556. + (Axel Gembe) +* Cash Accounts: Lookup/Search results offer a "Details..." link now instead + of the "View tx..." link. You can view tx on the details page. (cculianu) +* Qt: Added proper keyboard navigation to the Transaction Dialog window, and + various other places. #1557 (Axel Gembe) +* Android: Added native libsecp256k1 support (Malcolm Smith) +* Bugfix #1240, #892, #1484: Prevent infinite startup hangs due to lockfile + timestamp in the future. (cculianu) +* Email Plugin: Minor fixups and fixed bug #924. (cculianu) +* iOS: Fix #1273 -- Crash due to trying to pass a Python Exception to obj-c as + string. (cculianu) +* Various build and packaging fixes for Windows. (Axel Gembe) +* Added BitPay 2.0 JSON API support. (cculianu) +* Fixup to some plugins such as Scheduled Payments and Inter-Wallet-Transfer + raising uncaught exceptions if they are loaded and enabled and user hits + Ctrl+F (cculianu). +* LabelSync: Prevent error dialog spam when labels plugin fails to update + labels on the server. (cculianu) + +# Release 4.0.10 + +* Lib & Qt: Added Bip38Key encryption support to both the library for plugins + to use as well as to the Qt UI for users to be able to export or encrypt WIF + keys as BIP38 encrypted keys; #1593, #1594. (cculianu) +* Minor internal i18n nits, #1571. (Mark Lundeberg) +* Windows: Switch LibUSB to version 1.0.23-rc2, #1572. (Axel Gembe) +* iOS: Added native secp256k1 to iOS build, drastically improving signing speed. + (cculianu) +* iOS: Added Schnorr signatures. (cculianu) +* Fixed output script classifaction code to be more correct. (Mark Lundeberg) +* Qt: Made generated QR codes look better on HighDPI displays. (cculianu, + zebra-lucky) +* Misc. localization and internationalization fixups. (Axel Gembe) +* OSX: Minor fixup for Mojave font weights being rendered too thick. (cculianu) +* Minor bugfix: Guard against "all zero" transactions coming from malicious + servers, #987. (cculianu) +* Qt Console: Fixed the warning box layout to fit on-screen in all setups, + #1584. (Axel Gembe) +* Qt: Fixed minor warning about alpha value, #1585. (proteanx) +* OSX & Linux AppImage: Bumped bundled Python version to 3.6.9. (cculianu) +* iOS: Added a ruby helper script which, if running Brew, will auto-set-up + more of the Xcode project for the user after creating it with + `make_ios_project.sh`. (jonspock) +* Added SLP awareness to all wallets. Even though one can't easily get an SLP + token into a non-SLP wallet, it is still possible. The EC internals now + track transactions containing SLP tokens and guard against spending such + coins. Coins that have SLP tokens on them are highlighted in green in the + "Coins" tab and cannot be spent from the UI. This is to prevent token + burn, #1602 (cculianu) +* Android build fixes, #1599. (mhsmith) +* More Android fixes: Added stability improvements and various corner + case bugfixes (see github PR #1605 for details). (mhsmith) +* Fiat FX Rate: Bitpay.com URL / API endpoint has changed, thus breaking fiat + exchange rate sources if "Bitpay" was selected. Fixed. (cculianu) +* Updated websockets (electrum-merchant): fixed stale/old code which no longer + ran, added '--payment_url' option, and other miscellany. (cculianu) +* Implemented BIP70 properly on Qt and iOS; #1612. (cculianu) +* MacOS HW Wallets: Fixed SIGSEGV crash due to talking to the device from + multiple threads which is not supported on Darwin. (cculianu) +* Ledger Nano HW support has been vastly improved: It should be less crashy + and provide the user with much more meaningful messages for getting the device + into the proper state to talk to Electron Cash. (cculianu) +* Wallet: Fixed erroneous coinbase maturity logic. Immature mined coins were + erroneously being withheld from spending for an extra confirmation. (cculianu) +* Coins tab: Coinbase coins that are not mature are now highlighted in blue + text and are not allowed to be selected for individual coin spending + (previously you could select them for spending with no way to actually spend + them which was bad UX). (cculianu) +* TxDialog: coinbase tx's now show 0 fee, rather than 'unknown' (cculianu) + +# Release 4.0.11 + +* Added SatoChip hardware wallet support: https://satochip.io/. + #1668 (Baudoin Collard, cculianu) +* Added API support for plugins to register themselves with the command-line + in order to offer RPC service commands. #1670 (Mark Lundeberg) +* Added "Show crash reporter" to preferences, and re-laid-out the preferences + pane. #1673 (cculianu) +* Fix #1671 -- "No data" for fiat when using the 'history' RPC command has been + now fixed. (cculianu) +* Fix #1679 -- Exporting history now shows fees (if known), as well as input + and output addresses involved in a tx. (cculianu) +* Plugin API fix for @hook. #1669 (cculianu, Mark Lundeberg) +* Internal API optimization for transaction signing #1666 (Mark Lundeberg) +* Added BlockExplorer.one for both testnet and mainnet as a block explorer + configurable in preferences. #1664 (Axel Gembe) +* CLI: Added --op_return and --op_return_raw options for the 'payto' command. + (cculianu) +* AppImage: Improved binary stripping for more reproducible builds. #1662 + (Axel Gembe) +* Updated SSL certificates to Sept. 2019. This should hopefully fix some of the + "Unable to verify SSL" errors some users have seen when using CashShuffle. + (cculianu) +* Fixed a long-standing bug where sometimes Electron Cash would hang forever on + startup due to a stale/old daemon 'lockfile'. (cculianu) +* Qt history tab: Added workaround for persitent 'Unknown' balances when using + advanced scripts to spend funds. (cculianu) +* Qt UI: Add mechanism to prohibit '3..' p2sh by default, which should protect + users from accidentally sending BCH to BTC segwit addresses. This protection + can be disabled in preferences. Issues #1658 and #1225. (cculianu) +* Updated README for better instructions on how to run the development/git + version. (Mark Lundeberg) +* Added servers to servers.json: tbch.loping.net, greedyhog.ddns.net. Removed + server theblains.org. (Axel Gembe, greedyhog) +* iOS: Fixes for iOS 13.0+ and other miscellany (cculianu) +* iOS fix: "Downloading headers xx%..." is now more accurate (cculianu) +* iOS fix for bug #1651, crash if prefs screen up when wallet closed. (cculianu) +* transaction.py: don't append value when serializing inputs with scriptSig. + #1648, #1628, #1637 (Mark Lundeberg) +* Addresses tab: hide all empty change addresses, not just used ones & + pop open change list by default. #1646 (Mark Lundeberg) +* Android: allow specifying a server which isn't in servers.json. #1644 #1636 + (Malcolm Smith) +* Add Swahili to the language list. (Patrick Kariuki) +* Bumped Qt version to 5.13.2 on most platforms. (cculianu) +* Qt prefs: Renamed the default "light" UI style to "Default". On some systems + this style is actually dark in appearance. (cculianu) +* cashaccts: Fixed parse bug in parsing eg 'cashacctname#123,1.23'. (cculianu) +* Misc. menu and dialog nits, polish, cleanups, more consistent Capitalization, + & More. (Tom Zander, cculianu) +* Qt: main window, make sure Ctrl+Q is shown in File->Quit. (cculianu) +* Transations: prefer verbatim scriptSig for (re)serializing complete + transaction inputs. #1637 (Mark Lundeberg) +* Added index_url override to addrequest command. #1636 (Yuki Matsumoto) +* i18n: Use pgettext in a few places, and various fixups. #1624 (Axel Gembe) +* Very many Android fixes. #1614 (Malcolm Smith) +* p2sh: Fix coin tracking / balance, etc for esoteric scriptSigs/redeemScripts + in inputs. This should make it easier to have a wallet that tracks smart + contract addresses and other advanced usages of Bitcoin. #1620 (cculianu) +* synchronizer: Check txid from server against response content. This is a + paranoia check to make sure the server isn't being malicious. (cculianu) +* i18n nit: Translate 'Unknown' string in format_satoshis. (cculianu) +* Removed cashshuffle.net #1619 (Georg Engelmann) +* Configure payment_url to include payment request ID. #1617 (Mark Meson) +* Command-line: added `addressconvert` command. (cculianu) +* BIP70 Payment Request Fix. There were potentially subtle bugs in how we + handled BIP70. Nothing major. They have been fixed. #1615 (cculianu & Mark + Meson) +* iOS: Add SLP-awareness & protection to the UI. (cculianu) +* Misc. refactoring, nits, and bugfixes (cculianu, Mark Lundeberg) + +# Release 4.0.12 + +* **TRANSLATIONS!** This release includes a complete coverage of the Spanish + language as well as many other language strings added for German, Portuguese, + and other languages. (various contributors, w/ Jonald Fyookball as organizer) +* Made export history way better (#1682) -- Exporting history from the GUI or + the CLI can now optionally include accurate fee data as well as accurate fiat + amounts (if fiat history is enabled in the GUI). (cculianu) +* Fix #1681 - Gave cashshuffle message.proto file a package name. This caused + issues for some source users whereby the lack of a package name may clash with + modules installed on the user's system. (cculianu) +* Android (phase 4): Add ability to delete closed wallets (#1690) (Andrew#128) +* More graceful and softer shutdown on Ctrl-C / SIGINT (#1695) (Mark Lundeberg) +* Various backend preparations for CashFusion (#1693) (Mark Lundeberg) +* Remove unused SIP dependency for Python 3.8 compatibility (Axel Gemebe) +* SatoChip HW Wallet: Fix crash when cancelling PIN change or seed reset + (Baudoin Collard) +* SatoChip HW Wallet: Fix recovered authentikey does not correspond to + registered authentikey error (#1717) (Baudoin Collard) +* Fix #1718: We had a string format error in Export Private Keys dialog, which + would cause uses that were using a password with '{' in it to experience + crashes. (cculianu) + +# Release 4.0.13 + +- **BIP 39 Seed format** is now the ***native seed format*** for Electron Cash! + (Calin Culianu) + - New wallets will always generate seeds in this format. When restoring from + seed, format auto-detection is implemented (so that old 'Electrum' style + seeds continue to work). + - Additionally, wallets created/restored from BIP39 will no longer have no + "Seed" icon in the GUI (and you can always view their seed; it is never + "forgotten"). + - The seed dialog now always shows derivation paths for BIP39 seeds. +- **New integrated Tor capability**. (Axel Gembe, Calin Culianu) + - This capability will be bundled with Electron Cash for the upcoming + ***CashFusion*** feature. + - For now, though -- you can use it to start/stop Tor right from inside + Electron Cash -- **no additional Tor browser install needed**! +- Faster Network, #1819: Improved network code for faster wallet startup times. + (Mark B Lundeberg) +- Added "Sign/Verify message" to the 'Contacts' tab right-click menu. + (Calin Culianu) +- Fix #1727 - Don't close Qt app if user hides windows using the system tray + icon Show/Hide feature. (Calin Culianu) +- Wallet rename function added for Android version, plus other fixes. + (Andrew#128, Malcolm Smith) +- Wallet export function added for Android version. (Andrew#128, Malcolm Smith) +- Internal fix-ups to possible error message dialogs when broadcasting a + transaction #1730 (Mark B. Lundeberg) +- Performance boost to base_encode/base_decode for legacy addresses. + (SomberNight/ghost43) +- Updated translations. (Axel Gembe, Georg Engelmann, various other volunteers) +- Updated embedded libsecp256k1 to ABC version 0.20.9. + (Calin Culianu, ABC Authors) +- Server list: Add 'display' key to give Tor servers a short name. (Axel Gembe) +- Network dialog: Various fixups to proxy detection and usage of Tor servers & + onion icon on .onion servers (Axel Gembe, Calin Culianu) +- Various much-needed build system refinements and fixes. (Axel Gembe) +- Qr code reader: Fix to make it more reliable on all setups. (Axel Gembe) +- Updated pre-packages server list, aka `servers.json`. + (Calin Culianu, Andrea Suisani) +- Fixed the long-standing "tx's lose their txid" bug resulting in erroneous + error dialogs popping up on broadcast sometimes. (Calin Culianu) +- Fix #1785 - Allow searching (Ctrl+F) by tx_hash in history tab. + (Calin Culianu) +- About dialog: Update copyright year to 2020 and make localizable. (Axel Gembe) +- Fix #1789: Disallow user delete last address in Imported wallet. You could + then end up with an empty, 0-address wallet, which the rest of the internal + codebase did not like. (Calin Culianu) +- Fix #1774: Tolerate spurious 'error' messages from server. (Calin Culianu) +- Fix #1738 - Handle `protobuf` serialization errors for payment requests. + (Calin Culianu) +- CashFusion back-port #1647: Add change-address reservation subsystem. + (Mark B Lundeberg) +- Add create/restore commands in to daemon mode RPC server #1746. + (MrNaif2018) +- UTXOList (Coins tab): Show number of coins in output_point column. + (Calin Culianu) +- Update ViaBTC explorer address. (Imaginary Username) +- #1802 - Added "payment_received" event which can be used by plugin authors + wishing to author BIP70 payment integraton plugins. (MrNaif2018) +- Fix: Signing payment requests with OpenAlias should now work. (Calin Culianu) +- #1811: `servers.json`, updated greedyhog's server. (greedyhog) +- Max OSX -Binaries are now built with hardened runtime enabled, which is + required now on latest Catalina. (Calin Culianu) +- Fix #1817, Bitcoin Lib: Added tighter validation to bitcoin.deserialize_xkey. + (Calin Culianu) +- Various internal bug-fixes and improvements. + (Calin Culianu, Axel Gembe, Mark B Lundeberg, Andrew#128, Malcolm Smith). + +# Release 4.0.14 + +- Fixed a bug in CashShuffle which would sometimes cause some shuffle tx's + to use the same address twice in the outputs. (cculianu) + See reddit thread: + https://old.reddit.com/r/btc/comments/fmcf0x/cash_shuffle_privacy_bug/ + +# Release 4.0.15 + +- Fixed USB HID support for hardware wallets on macOS. (cculianu) +- Documentation: Updated instructions for running from source on macOS #1848. + (Ty Everett) +- Fix #1806 - Fixed crash when no outputs in tx dialog. (cculianu) +- Requirements: Remove protobuf <3.9 constraint #1864. (Axel Gembe) +- Server list updated. (imaginaryusername, Axel Gembe, cculianu) +- Android fixups and improvements: + - Handle base units being renamed or removed (Malcolm Smith) + - Switch to Requests screen when a request is saved (Malcolm Smith) + - Fix crash when opening payment protocol URL from browser (Malcolm Smith) + - Various internal improvements and fixes (Malcolm Smith) +- Bugfix: BIP39 passphrases were being handled incorrectly for upper or mixed + case #1878. (Jochen Hoenicke) +- Added OP_REVERSEBYTES to the list of known script ops for display. (cculianu) +- Made "Connect only to Preferred Servers" False by default. (cculianu) +- Varous macOS Fixups and improvements: + - Mojave+ dark mode now works (cculianu) + - On macOS we now disabled the "dark" theme in favor of the system dark + theme (cculianu) + - Catalina startup times drastically improved (cculianu) + +# Release 4.1.0 + +- ***CashFusion*** is here! To access it, simply right-click on the CashFusion + icon in the bottom-right of the status bar. Thanks to everybody that worked on + it, in particular: Mark Lundeberg, Jonald Fyookball, Axel Gembe, Calin Culianu + and many more that don't fit here. +- Tx Signing has been significantly sped up for transactions with many inputs. + (Mark Lundeberg, cculianu) +- Tezor HW Wallet: Updated to support latest firmware. #1900, #1902 (Axel Gembe) +- Fixes for bugs introduced by newer ecdsa libraries that use gmpy2. In + particular on Fedora 32 things would sometimes explode when signing a tx or + using CashFusion, due to ecdsa API quirks. (cculianu) +- Fixed ZBar (QR camera) issues on Windows. #1916 (Axel Gembe) +- SSL Certs: Accept wildcard certs, accept CA-signed replacing pinned + self-signed. Servers can now use wildcard certs or switch from self-signed to + CA-signed without losing users! (cculianu) +- Update criptolayer server. #1874 (imaginaryusername) +- Add electroncash.de block explorer. #1920 (Axel Gembe) +- Network: Show problematic pinned certificates and allow unpinning. #1919 (Axel + Gembe) +- Update plugin for Satochip hardware wallet to support latest firmware v0.11. + #1915. (Toporin) +- Tor: Make process shutdown more robust. #1893 (Axel Gembe) +- AudioModem: Fixed to not crash on unsupported platforms. (cculianu) +- Various internal refactorings, fixups, and internal API improvements. + (cculianu, Axel Gembe, Mark Lundeberg) + +# Release 4.1.1 + +- Added support for the ASERTi3-2d DAA for the Nov. 15th, 2020 upgrade #1954 + (Calin Culianu) +- Added testnet4 support, accessible with the --testnet4 CLI option (#1974) +- Internal build fixes for OSX (Calin Culianu) +- Internal fix for unit tests #1929 (Axel Gembe) +- CashFusion: Show icon and add message even on non-fusable wallets #1927 (Axel + Gembe) +- dnssec: fix compat with dnspython 1.16 and 2.0.0 #1934 (Axel Gembe) +- tests: fix cashaddr checksum test unreliability #1938 (Axel Gembe) +- CashShuffle: Remove unmaintained tests #1940 (Axel Gembe) +- Tor: Make the messages refer to a specific Tor binary #1941 (Axel Gembe) +- git sanity: enforce "git checkout commithash" actually pulls commit #1949 + (SomberNight, Axel Gembe) +- CashFusion: Add more tiers for fusion server #1951 (Jonald Fyookball) +- trezor: bump lib version, implement new passphrase-on-device UI #1947 (Axel + Gembe, matejcik) +- Add Blockchain.com mainnet and testnet explorers #1952 (Axel Gembe) +- Fusion: Remove example server #1953 (Axel Gembe) +- CashFusion: Ensure tor_port_good is defined in plugin (Calin Culianu) +- Build: Fix wine build failing, typo in the git checkout work #1956 (Axel + Gembe) +- CashFusion: Better consolidation logic (Mark Lundeberg) +- CashFusion: Update default server to use SSL #1959 (Mark Lundeberg) +- CashFusion: Enhance fuzzing logic; more funds safety checks (Mark Lundeberg) +- CashFusion: Miscellaneous cleanup (Mark Lundeberg) +- Made PyQt5 optional by default and installable by [full] or [gui] extra + requires (MrNaif2018) +- Android: add plural formulae for Arabic and Polish (Malcolm Smith) +- Android: use Babel so we don't need to handle every plural formula separately + (Malcolm Smith) +- Prompt to start Tor only if user has enabled autofuse for wallet (Calin + Culianu) +- Fix make_locale to be more pythonic (agilewalker) +- Exchange rates: Remove dead exchanges #1982 (Axel Gembe) +- Android: Sign transaction with schnorr #1988 (Jonas Lundqvist) +- CashFusion: Include 'distinct coins' concept when enforcing privacy threshold + (Mark Lundeberg) +- Qt: Set the layout direction based on user-configured language, for + right-to-left languages (Calin Culianu) +- Network dialog: Add capitalized Tor binary name #1989 (Axel Gembe) +- Run history_list_filter hook on updated labels #1990 (Jonas Lundqvist) + +# Release 4.2.0 + +- Added support for scalnet test network, accessed with CLI arg --scalenet. + (Calin Culianu) +- CLI/Server: Added addtransaction arg to payto/paytomany (#1997) (MrNaif2018) +- Ledger: Fix warning about unverified inputs (#2003) (Axel Gembe) +- Ledger: Test firmware version for trusted input requirement, fixes failure + on older firmware < 1.4.0. (#2008) (Axel Gembe) +- Ledger: Update python dependencies (#2009) (Axel Gembe) +- Android: add Load & Sign unbroadcasted tx (#1986) (Matthew Clancy, + Malcolm Smith) +- Added ASERT tests (#2007) (Jonas Lundqvist) +- Added paymentrequest tests (#2011) (Jonas Lundqvist) +- Enable coverage HTML report (#2012) (Jonas Lundqvist) +- Use locale atof when sorting columns (#2015) (Jonas Lundqvist) +- Add Bitcoin Unlimited block explorer (#2016) (Jonas Lundqvist) +- CLI: Added RPA paycode support (#2006) (Jonald Fyookball & Calin Culianu) +- Dockerfile fixes for WINE and Linux AppImage (Calin Culianu) +- Got rid of `imp` rewriting of lib, plugins, and gui dirs in source tree. + (Calin Culianu, Axel Gembe, Malcolm Smith) +- Disable cointext: support from send tab & remove cointext code (#2022) + (Calin Culianu) +- Qt UI: Made all tabs except for "Console" ON by default (Calin Culianu) +- TxDialog: Add "Freeze Coins" button to freeze inputs before broadcast + (Calin Culianu) + +# RELEASE NOTES 4.2.1 + +- CashFusion: Server-side checks to ensure "fast schnorr" is available on the + server. (Mark Lundeberg) +- Fixed a typo in the transaction dialog ("Unfeeze" -> "Unfreeze") #2027 + (Axel Gembe) +- CashFusion: Various tweaks to starting logic, stopping behavior, bugfixes, + better handling for confirmed-only case, better handling when network down, + improved logic for wallet waiting to receive fusions. #2028, #2030 + (Mark Lundeberg) +- Tor subprocess: Ensure daemonized (Mark Lundeberg) +- Android: Added fiat send, plus various fixes (Malcolm Smith) +- Added Loping.net block explorers; added TestNet4 / ScaleNet explorer list + #2036 (Axel Gembe) +- Added a "View on block explorer" option for addresses in the TX dialog #2049 + (Axel Gembe) +- Added shortcuts to Windows build for TestNet4 and ScaleNet #2050 (Axel Gembe) +- Fix for ScaleNet: Turns out it has a 2d half-life, not one hour. Bug caused + ScaleNet to stop working post-Nov 15th. Now it should work. (Calin Culianu) +- Various updates to server list. (Axel Gembe) +- Added checkpoint after HF block, also added CLI arg --taxcoin for ABC's coin. + (Calin Culianu) +- Network Dialog: Added advanced request throttling params (Calin Culianu) + +# RELEASE NOTES 4.2.2 + +- Fixed a regression introduced in 4.2.1 where the checkpoint block being after + the asert anchor caused the code in blockchain.py to have a bad time. + (Calin Culianu) + +# RELEASE NOTES 4.2.3 + +- Fixed rare None dereference. (Calin Culianu) +- Android: fix remaining issues with RTL languages such as Arabic + (Malcolm Smith) +- Ledger: Update USB ids for app-bitcoin version >= 1.5.1 (#2061) (Axel Gembe) +- Taxcoin: Add taxplorer.loping.net block explorer #2067 (Axel Gembe) +- Taxcoin: Add taxplorer.loping.net server #2066 (Axel Gembe) +- NetworkDialog: Fix glitches when restoring selection on update() + (Calin Culianu) +- Removed defunct CashShuffle servers (Calin Culianu) +- Android: move transactions screen from export_history to faster get_history + (#2063) (Malcolm Smith) +- Update macOS build notes (#2073) (Corentin Mercier) +- Android: refactor common list behavior into a base class (Malcolm Smith) +- CashFusion: fix minor race leading to exception #2077 (Mark Lundeberg) +- Android: note that this Chaquopy version is for Electron Cash only + (Malcolm Smith) +- Android: cache config in Python dict for performance (Malcolm Smith) +- Android: catch "not connected" exception in "Load transaction" (Malcolm Smith) +- Android: fix deprecated theme attribute in layout (Malcolm Smith) +- Android: make Send address box automatically parse request URLs + (Malcolm Smith) + +# RELEASE NOTES 4.2.4 + +- Trezor: Fixed connecting autolocked device #2085 (Daniel Gonzalez Gasull) +- Fixed icon directory and added scalable icon #2089 (Emily Roberts) +- Added option to scan current screen for QR code #2091 #2093 (Jonas Lundqvist) +- Android: updated to Chaquopy 9.1.1 (Malcolm Smith) +- Android: improved performance and UI responsiveness (Malcolm Smith) +- Enabled fiat by default #2099 (Malcolm Smith) +- Improved performance of (un)freezing coins (Calin Culianu) +- Disabled Fiat display for testnets (Calin Culianu) +- Reduced time spent saving wallets #2106 #2110 (Malcolm Smith) +- Android: added more details when synchronizing (Malcolm Smith) +- Reduced synchronization time by reducing address saves #2113 (Malcolm Smith) +- Tor: Fixed proxy bypass for stem version >= 1.8.0 (Axel Gembe) +- Android: save wallets periodically during synchronization (Malcolm Smith) +- Android: when a wallet is loded, run a foreground service to prevent the + process from being killed (Malcolm Smith) +- macOS: Workaround for Qt UI not working on Big Sur (Calin Culianu) +- Satochip: use BIP39 by default & improve user interface #2127 (Toporin) +- Android: added adaptive icon (Malcolm Smith) +- Updated copyright year to 2021 #2126 (Marius Kjærstad) +- iOS: Fixed inability to restore Electrum seed wallet (Calin Culianu) +- Warn if a legacy addres is used #2129 (Daniel Gonzalez Gasull) +- AppImage: Build using Ubuntu 18.04 (Bionic) #2144 (Axel Gembe) +- Tor: Updated message parser to support version 0.4.5.x #2145 (Axel Gembe) +- Tor: Updated to version 0.4.5.5-rc with some patches #2145 #2147 (Axel Gembe) +- OpenSSL: Updated to version 1.1.1i #2148 (Axel Gembe) +- NSIS: Updated to version 3.06.1 #2150 (Axel Gembe) +- NSIS: Added an installer log. This fixes silent installation and accidental + file deletion #2153 (Axel Gembe) +- macOS: Updated PyQt5 to version 5.15.2 to fix Big Sur (Calin Culianu) +- AppImage: Build all binaries except PyQt5 from source #2159 (Axel Gembe) +- Windows: Updated PyInstaller to version 4.2 #2161 (Axel Gembe) +- Build: Updated Python to version 3.8.7 #2162 (Axel Gembe, Calin Culianu) +- Android: reduced network timeouts #971 (Malcolm Smith) +- Android: changed "sign transaction" to "save transaction" #2032 (Malcolm Smith) +- Reverted RPA paycode support #2170 (Mark B Lundeberg) +- Zbar: Updated to version 0.23.91 #2171 (Axel Gembe) +- Added Vietnamese Dong to CoinGecko exchange pairs #2178 (Hieu Van) +- macOS: Fix to mysterious and intermittent Segfault-on-exit (Calin Culianu) +- Various internal bugfixes and code refactoring #2087 #2095 #2097 #2117 #2140 + #2143 #2151 #2155 #2156 #2158 #2160 #2154 #2176 (Daniel Gonzalez Gasull, + Calin Culianu, Axel Gembe, Mark B Lundeberg, Malcolm Smith, Pierre K, Toporin) + +# RELEASE NOTES 4.2.5 + +- appimage build: build was failing on some host systems #2181 (SomberNight) +- Requirements: Restring PyQt5 version to >=5.12.3 and < 5.15.3 (Calin Culianu) +- Re-enabled PyQt 5.15.3 (Calin Culianu) +- OSX Fix: Allow for Mojave+ dark mode to work (requires Qt 5.15.2) (Calin Culianu) +- NSIS: Wait for the uninstaller to finish #2184 (Axel Gembe) +- NSIS: Ensure the process is not running when (un)installing #2184 (Axel Gembe) +- Servers: Add electroncash.de scalenet server #2186 (Axel Gembe) +- Servers: Fix indentation #2187 (Axel Gembe) +- Build: Use git version with patch for CVE-2021-21300 #2191 (Axel Gembe) +- setup.py: Fix typo #2192 (Axel Gembe) +- AppImage: Include libxcb into the image #2197 (Axel Gembe) +- Add requirements-binaries.txt to manifest #2200 (Jonas Lundqvist) +- Install Wizard: Add derivation path scanner #2199 (Jonas Lundqvist) +- Tweaks and fixups to the DerivationPathScanner (Calin Culianu) +- Build: Add cffi to the requirements #2203 (Axel Gembe) +- Android: add new layout screens for the choice between standard and multi-sig + wallet. (Aldin Kovačević) +- Android: reorganize code for creating a standard wallet.(Aldin Kovačević) +- Tor: Update to version 0.4.5.7 with some patches #2205 (Axel Gembe) +- OpenSSL: Update to version 1.1.1j #2206 (Axel Gembe) +- Skip path derivation scan if seed is unavailable #2208 (Jonas Lundqvist) +- Shorten boolean expression, use double quotes #2209 (Daniel Gonzalez Gasull) +- Style changes (from backport), small refactorings #2211 (Daniel Gonzalez Gasull) +- Fix PR 2211 #2218 (agilewalker) +- Add electrs.electroncash.de #2222 (Georg Engelmann) +- Removed unreachable line of code #2224 #2234 (Daniel Gonzalez Gasull) +- OpenSSL: Update to version 1.1.1k #2225 (Axel Gembe) +- Python: Update to version 3.8.9 #2226 (Axel Gembe) +- Fixed typo #2227 (Kevin Nowaczyk) +- AppImage: Update OpenSSL to version 1.1.1-1ubuntu2.1~18.04.9 + #2231 (Axel Gembe) +- Android: Added initial UI for multisg wallet creation. (Aldin Kovačević) +- Build: Verify the Python checksums #2239 (Axel Gembe) +- Android: Various commits to support multi-sig wallets (Aldin Kovačević) +- Remove CPFP (child pays for parent) (Calin Culianu) +- Update servers.json (Calin Culianu) +- Android: Using 'get_tx_info' to get the status of the transaction. + (Aldin Kovačević) +- Make make_locale check exit status of gettext commands #2259 (Malcolm Smith) +- Android: fix duplicate requirement, add missing string (Malcolm Smith) +- Android: update to Gradle 6.5 and Android Gradle plugin 4.1.2 (Malcolm Smith) +- Android: Added multisig wallets to the Android application #2279 + (Aldin Kovačević) +- Look for external plugins in ELECTRON_CASH_PATH #2301 (Jonas Lundqvist) +- Support disabling JSON-RPC server in Daemon #2305 (MrNaif2018) +- [fusion] Increase 'fuzz fee' to be tier/10^6 #1984 (Mark B. Lundeberg) +- Add feerate argument to payto/paytomany #2306 (MrNaif2018) +- Android: catch overflow errors in AmountBox; closes #2288 (Malcolm Smith) +- Android: restore thousands commas in read-only fiat amounts; closes #2246 + (Malcolm Smith) +- Android: Make PaymentRequest.has_expired always return a boolean; closes #2298 + (Malcolm Smith) +- Android: Add missing interface_lock in Network.get_server_height; closes #2173 + (Malcolm Smith) +- iOS: Support OP_RETURN transaction outputs #2307 (JOE LOYA ⚡️) +- Android: many, many, many commits fixing many things related to v4.2.4-4 + (Malcolm Smith) +- CashFusion: Add "spend only fused coins" to Send tab #2316 (Calin Culianu) +- Android: add sweep private keys command (Malcolm Smith) +- Fix daemon running in non-jsonrpc mode (MrNaif2018) +- Various Linux and Windows build fixups (Calin Culianu) +- Fixed build for OSX Mojave (Calin Culianu) +- Make OpenAlias accept 'bitcoincash:' prefix #2321 (Karol Trzeszczkowski) +- Updated checkpoints for mainnet, testnet3, and testnet4 (Calin Culianu) +- Removed support for ABC's "TaxCoin" (Calin Culianu) +- CashFusion Server: Allow testnets to have unlimited connections per IP + (Calin Culianu) +- CashFusion: Add depth checks #2325 (Jonas Lundqvist, Calin Culianu) +- CashFusion: Added a "Fusion Status" column to coins tab (Calin Culianu) +- macOS: Fix popup_widget display if running in dark mode (Calin Culianu) +- Remove bitcoin.com block explorer #2328 (Jonas Lundqvist) +- CashFusion: Clarify status of coins on fused address #2329 (Jonas Lundqvist) +- Add more accurate exchange rate for ARS #2326 (Santiago Chiabotto) + +# RELEASE NOTES 4.2.6 + +- History list - Made fiat balance changes also appear in red (scinklja) +- Implement unconfirmed invoices status (MrNaif2018) +- Add ability to forget config on exit (MrNaif2018) +- Fire payment_received event on confirmation too (MrNaif2018) +- macOS: Set minimum system version to 10.14.0 in Info.plist (cculianu) +- Add native introspection opcodes (upcoming May 2022 additions to + script) #2339 (cculianu) +- CashFusion: Default fusion depth, if checked, to 3 (cculianu) +- Trivial fix: Allow plugins to use qt/util.py filename_field (acidsploit) +- Added electrum.bitcoinverde.org to server list (Josh Green) +- Fixups for iOS 15+ (cculianu) +- Android: Remove pycparser from requirements-android.txt (Malcolm Smith) +- Android: improve string conversion script, and make it detect some errors + (Malcolm Smith) +- Fixups for Python 3.10 (cculianu) +- add kisternet v3 onion to testnet (jkister) +- Qt: Add cleanup code to avoid random segfault on exit (cculianu) +- AppImage: Fixed to work on Debian and Tails #2245 (Axel Gembe) + +# RELEASE NOTES 4.2.7 + +- Fix for off-by-one error in op_push in bitcoin.py (cculianu) +- Fix bitcoin.py push_script to implement BIP62 correctly (cculianu) +- backport: blockchain.py: bugfixes re bits_to_target and target_to_bits + (SomberNight) +- Update copyright year to 2022 (sandakersmann) +- Fix to allow fusions to continue while keeping dust protection + (Emergent Reasons) +- Android: replace deprecated jcenter repository with mavenCentral (mhsmith) +- Remove ADDRTYPE_*_BITPAY (Jonas Lundqvist) +- Add new option: "Retire unused change addresses" #2408 (cculianu) +- Relax qdarkstyle version bound #2396 (MrNaif2018) +- Add support for Satochip hardware wallet v0.12 (Toporin) + +# RELEASE NOTES 4.2.8 + +- Patch for Satochip v0.12 support #2410 (Toporin) +- Add smartBCH LNS name lookup support #2414 (mainnet-pat, cculianu) +- Build: Update the Wine build docker container to use the MSVC compiler + (Axel Gembe) +- Misc build fixups related to the addition of web3 support (cculianu) +- wine-build: add workaround for installing pyinstaller (SomberNight) +- Build: Patch pip vendored distlib to produce deterministic zip archives + (Axel Gembe) +- Build: Install a MSVC linker wrapper to make PE timestamps deterministic + (Axel Gembe, cculianu) +- CashFusion: Add 10BCH fusion tier (SahidMiller) +- CTOR workaround: Always display receives before sends for the same block + (cculianu) +- MacOS-build: Build custom pyinstaller from git (SomberNight, cculianu) +- Update libsqlite3 version for AppImage #2435 (Axel Gembe) +- Update bundled Tor to version 0.4.7.7 #2434 (Axel Gembe) +- Update OpenSSL to version 1.1.1o #2437 (Axel Gembe) +- Wine: Update to version 7.7 #2436 (Axel Gembe) +- Network: Fix for incorrect usage of python when formatting an errmsg + (cculianu) + +# RELEASE NOTES 4.2.9 + +- LNS: Fix crash in multiple_result_picker (cculianu) +- LNS: Make the web3 dependencies optional #2441. This allows distro packages + to not have to pull them in to provide electron-cash. (cculianu) +- LNS: Fix to the "add to contacts" button + misc code nits (cculianu) +- Qt: Disable destroyed_print_error unless a static flag is set. This fixes + some of the crash issues seen on Windows. (cculianu) +- LNS: Bugfix whereby GUI was being sometimes access from a thread. This + fixes the remaining portion (hopefully) of the crash issues seen on + Windows. (cculianu) +- LNS: Misc fixups and code cleanup (cculianu) + +# RELEASE NOTES 4.2.10 + +- Windows build: Restored reproducibility of the Windows build #2444 + (Axel Gembe) +- Removal of dead code (cculianu) +- Fixup for dark mode on some Linux and Windows systems (Pierre K) + +# RELEASE NOTES 4.2.11 + +- Use fallback pure python implementation of ripemd160 in address.py + #2452 (Voker57) +- Consolidate all use of ripemd160 to one + add pycryptodomex fallback + (cculianu) +- Fix DAA activation height for testnet3 (cculianu) +- Updated requirements to peg protobuf to a version <4.0 (cculianu) +- Fix to blockchain.py get_bits; was sometimes wrong (cculianu) +- Update servers.json #2453 (kzKallisti) +- Ledger: Add Nano-S-Plus USB device ids #2454 (vrabe) +- Tor: Update to version 0.4.7.8 with a patch for static linking + #2456 (Axel Gembe) +- Add RPA - Reusable Payment Addresses #2450 (Jonald Fyookball, OPReturn) +- Normalise exchange rate #2462 (MrNaif2018) +- Tor: Fix closing of stdout on Windows #2466 (Axel Gembe) +- Allow restoring wallet in diskless mode #2464 (MrNaif2018) +- Add same code for restore_wallet_from_text #2473 (MrNaif2018) +- Tor: Fix launch_tor override of close_output argument #2468 (Axel Gembe) +- Update default CashFusion server to fusion.servo.cash (#2469) (kzKallisti) +- AppImage: Fix package versions and add cargo dependency #2470 (Axel Gembe) +- Wine: Update Ubuntu from impish to jammy #2471 (Axel Gembe) +- Tor: Update to version 0.4.7.10 with a patch for static linking #2472 + (Axel Gembe) +- Updated checkpoints (cculianu) + +# RELEASE NOTES 4.2.12 + +- Fixed text alignment in addresses tab #2477 (scinklja) +- Removal of some dead code (cculianu) +- Android: Add optional Dark Mode #2483 (Jonas Lundqvist) +- Added BCH "chipnet" network; --chipnet (cculianu) +- Remove some defunct mainnet servers #2488 (jkister) +- commands: add freeze_utxo and unfreeze_utxo RPCs #2490 (chappjc) +- commands: get_info and list_wallets daemon cmds to RPCs #2491 + (chappjc, Jonas Lundqvist) +- Added regtest support; --regtest #2319 (MrNaif) +- Fixed units for regtest and scalenet (cculianu) +- Add server-chipnet.json to setup.py #2494 (0e4ef622) +- Removal of the LabelSync plugin due to unreliability + #2498 (georgengelmann) +- Add instructions to compile the icons for Qt #2499 + (georgengelmann) +- Android: Bump chaquopy to 13.0.0 #2500 (Jonas Lundqvist) +- Removal of RPA from the GUI and from payment request handling + #2503 (Jonald Fyookball) + +# RELEASE NOTES 4.2.13 + +- Regtest via pytest #2403 (Jonas Lundqvist) +- Add tx_hashes to exported payment request #2504 (MrNaif) +- Change bch.ninja to cashnode.bch.ninja #2506 (kzKallisti) +- Run tox in github action #2508 (Jonas Lundqvist) +- Set BitPay as requestor on jsonPayPro invoices #2510 (Jonas Lundqvist) +- Add basic test for jsonPaymentProtocol #2511 (Jonas Lundqvist) +- Trigger on Master branch + Add GitHub Action badge to README #2513 (Jonas Lundqvist) +- Fixed typo in main_window.py "unnused" -> "unused", plus whitespace nits (cculianu) +- Update electroncash.de servers #2516 (Georg Engelmann) +- Remove python 3.6 from github workflow and/or tox.ini (cculianu) +- Added Melory's BCH Explorer to the list of block explorers (cculianu) +- Add chipnet.bch.ninja to servers_chipnet.json #2520 (kzKallisti) +- Fix for contrib/make_all: Use a non-zero nr of jobs #2522 (Melroy van den Berg) +- Allow zero-amount and partial payments in invoices #2523 (MrNaif) +- Tor: Update to version 0.4.7.12 with a patch for static linking #2529 (Axel Gembe) +- Updated checkpoints for mainnet, testnet3, testnet4, and chipnet (cculianu) + +# RELEASE NOTES 4.2.14 + +- BUGFIX: Fix crashes in payment requests with amount of None #2535 (MrNaif) +- Build: Update dnspython to version 2.2.0 #2530 (SomberNight, Axel Gembe) +- Servers: Add loping.net chipnet server + explorer #2531 (Axel Gembe) +- Add builds to GitHub actions + Bump test versions #2532, #2526 (Jonas Lundqvist) +- Disable OSX build github action (cculianu) +- Cleanup of top README #2534 (Jonas Lundqvist) +- test: Flip last bit in negative test cases #2536 (Jonas Lundqvist) +- Remove references to Travis CI + Enforce python >= 3.7 in setup.py #2537, #2538 (Jonas Lundqvist) +- Only archive GH Actions artifacts once + Split regtest in separate files #2539, #2540 (Jonas Lundqvist) +- Fixes to get auto-build to work (cculianu) diff --git a/android/.gitignore b/android/.gitignore index 427e63ac5478..75ac43078c4f 100644 --- a/android/.gitignore +++ b/android/.gitignore @@ -7,4 +7,5 @@ /build /captures /keystore.jks +/release .externalNativeBuild diff --git a/android/.idea/inspectionProfiles/Project_Default.xml b/android/.idea/inspectionProfiles/Project_Default.xml index fd5d2550cd8d..5eb44d1d9a26 100644 --- a/android/.idea/inspectionProfiles/Project_Default.xml +++ b/android/.idea/inspectionProfiles/Project_Default.xml @@ -2,9 +2,21 @@