It’s time for a new Desktop Wallet update. During the last few weeks, we have been thoroughly testing our Desktop Wallet Plugin system, tightening it up and implementing a lot of new features into it. There’s even more, so let's dive into the newest changes.

Apart from the upgraded plugin system, the biggest change in the Desktop Wallet was to remove support for the (now legacy) API v1 endpoints from our codebase. This will make the Desktop Wallet codebase cleaner, and help us focus on implementing new ways to take advantage of new API v2 and its endpoints.

You can download ARK Desktop Wallet at https://ark.io/wallet

This release includes a major version upgrade of Electron from v3 to v5 which includes several performance improvements. Alongside this upgrade, the minimum version for the node.js runtime was raised from 11 to 12.

Important notice: With ARK Desktop Wallet v2.6 release, as we have deprecated API v1 inside the wallet, ARK based blockchains that are still using Core ≤v2.3 won’t work properly anymore. We highly recommend every ARK bridgechain that is still running an outdated Core version to update their network, as Core has since released major new features were added, API v1 was deprecated and numerous bugs and security vulnerabilities have been patched.

Plugin system updates and new features

There have been various fixes and updates to the current plugin system, some of which are:

Ability to access element references (refs) from within plugin components

Fixes to use of lifecycle hooks in plugin components (e.g. mounted, created, etc)

Improved loading components within the plugin system

Allow sub-pages within plugin components to send primitive type messages back to the plugin for processing via sendToHost in the external page

in the external page Can now get the current route ($route) from within a plugin

Implement a custom webpage component

Allow plugins to navigate to different routes

Allow access to font awesome icons from plugins

Allow key-value storage for plugins

Allow plugin access to current peer

Block DOM events from plugin components

Use a different path for loading plugins when the wallet is in development mode

Added Wallet API functionality to plugin components (via permissions):

- Generic wallet components (e.g. buttons, input fields, utils, etc)

- HTTP web requests (requires a whitelist to be specified)

- Profiles (with the network), wallets, and contacts to be accessible

This isn’t all that was added or fixed, so let’s go over the most significant changes of the new updated Desktop Wallet.

What’s New?

Make screenshot protection setting persistent — you now have the option to temporarily (current session) or permanently disable screenshot protection for the Desktop Wallet on per profile basis.

Toggle wallet dropdown on right mouse click —allows the user to open the context menu of the wallet cards by right-clicking on them.

Added animations to market chart and store options — refactored the MarketChart and MarketChartHeader components in order to add some animations to the dashboard.

Use last fee option — implemented an additional option to use previously used fee when sending or voting for a delegate within the wallet for those who don’t want to input the previous fee they used each time.

Add gradients and scrolling to intro pages

Improved passphrase detection in vendorfield — improves the detection of passphrases in the vendorfield of the transaction form. The previous implementation failed to detect a passphrase if it started or ended with space, for example.

Smarter detection of BIP39 passphrases in Smartbridge field that can prevent user unintentionally including it with the transaction

Check unconfirmed votes when updating transactions — check for unconfirmed votes in the synchronizer, and whenever it looks for new transactions, for a smoother voting experience.

— check for unconfirmed votes in the synchronizer, and whenever it looks for new transactions, for a smoother voting experience. Details modal wasn’t showing for recently registered delegates — returns the selected delegate instead of searching in the store, which is still being updated.

— returns the selected delegate instead of searching in the store, which is still being updated. Unified the grid layout of wallets and contacts — grid layout of wallets and contacts page has been unified for more seamless user experience.

— grid layout of wallets and contacts page has been unified for more seamless user experience. The discovery of peers has been improved — by using TypeScript Peers we can now easily filter for available peers that can be used.

— by using TypeScript Peers we can now easily filter for available peers that can be used. Fixed various bugs related to amount and fee transaction inputs — various improvements on input fields related to the amount (value of sending or fees) for better user experience.

— various improvements on input fields related to the amount (value of sending or fees) for better user experience. Reload wallets after rename — reloads all wallets after renaming a wallet (previously the Ledger wallets would disappear).

— reloads all wallets after renaming a wallet (previously the Ledger wallets would disappear). Check if the username exists in the delegate registration form — there was no check against existing delegate usernames on the delegate registration transaction form, which is now added.

— there was no check against existing delegate usernames on the delegate registration transaction form, which is now added. The disconnecting ledger shows zero balance — the balance of an open ledger wallet changed to zero if the ledger is disconnected or unplugged while that ledger wallet was still open within the Desktop Wallet. This has been fixed.

— the balance of an open ledger wallet changed to zero if the ledger is disconnected or unplugged while that ledger wallet was still open within the Desktop Wallet. This has been fixed. Do not create wallet if it fails encryption of the password — prevents wallets from being created when the password encryption fails (e.g. due to high load on a machine which can’t talk to the BIP38 worker).

— prevents wallets from being created when the password encryption fails (e.g. due to high load on a machine which can’t talk to the BIP38 worker). Various QR Code scanning fixes — component used for QR code scanning has been updated and fixed various bugs that were reported.

— component used for QR code scanning has been updated and fixed various bugs that were reported. Updated dependencies — numerous dependencies have been updated to the latest versions (ESlint, Vue, Electron, Node, …).

What’s Next for Desktop Wallet?

With the plugin system becoming more robust, secure and soon progressing out of the beta status, we are going to be focused on making it more user-friendly. With that, we recently opened a Tier 0 project for the Plugin Manager currently under development that will address the following: autodiscovery of plugins, management of plugins, installation from outside sources, and much more! Here is a sneak peek of the mock-up of the new plugin system:

Mock-up of some specific plugin that was installed

Thank You

Special thanks to all of the security researchers at Bugcrowd and our security advisor Alessio, who have been thoroughly testing and reporting ways to break or manipulate the plugin system. We have closed potentially harmful ways that malicious plugins could manipulate data and have access to things that shouldn’t be available through the plugin system.

Thank you to all who keep reporting issues so we can fix and address them, and of course, our community developers who are contributing to our codebase by resolving those issues and adding new features for better user experience.

Changes In Numbers

Since the previous release:

12 different developers contributing to the ARK Desktop Wallet.

contributing to the ARK Desktop Wallet. 61 new commits to the ARK Desktop Wallet.

to the ARK Desktop Wallet. 138 files changed in the ARK Desktop Wallet.

in the ARK Desktop Wallet. 4,796 lines of code added to the ARK Desktop Wallet.

to the ARK Desktop Wallet. 4,106 lines of code deleted from the ARK Desktop Wallet.

Hashes for 2.6.0 of Desktop Wallets (SHA256)

Linux (ark-desktop-wallet-linux-x64–2.6.0.tar.gz)

5739f56d9074a1b6bac4d1b05118e987c29df9016d5a8b840d2379780e439f0f

5739f56d9074a1b6bac4d1b05118e987c29df9016d5a8b840d2379780e439f0f MacOS (ark-desktop-wallet-mac-2.6.0.dmg)

327bfcdd4e48f2d029644fdf6f7d475c238ca8fe789dde227c0acc3b7ef2e81f

327bfcdd4e48f2d029644fdf6f7d475c238ca8fe789dde227c0acc3b7ef2e81f Ubuntu (ark-desktop-wallet-linux-amd64–2.6.0.deb)

202e76428884491f00eddd13d1ea976c04b1e30a9f34db9545b01e8cb8aa62a2

202e76428884491f00eddd13d1ea976c04b1e30a9f34db9545b01e8cb8aa62a2 Windows X86 & X64 (ark-desktop-wallet-win-2.6.0.exe)

5db60132ab184f6dae125a4c1b43b1b2204ef58492cc434485ef0dffceefadd7

5db60132ab184f6dae125a4c1b43b1b2204ef58492cc434485ef0dffceefadd7 Linux-AppImage (ark-desktop-wallet-linux-x86_64–2.6.0.AppImage)

bdc5163b6a0a154bc7c99cc3be0d7b1a52a1d457176ddfefe598b7e3e99c801b

I found a bug / an issue — what do I do?

Please open an issue with all of the details on ARK Desktop Wallet Issues page.

I want to help with development — what do I do?

Please open a pull request, and don’t forget, we are also running Github development bounty, so you can earn some extra ARK.

I want to translate Desktop Wallet into my own language — how can I help?

Please read the instructions at this link. Click on the arrow to open the full guide.