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
sendToHostin 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.
- 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.
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.
- Details modal wasn’t showing for recently registered delegates — 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.
- The discovery of peers has been improved — 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.
- Reload wallets after rename — 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.
- 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.
- 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).
- Various QR Code scanning fixes — 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:
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.
- 61 new commits to the ARK Desktop Wallet.
- 138 files changed in the ARK Desktop Wallet.
- 4,796 lines of code added 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
- MacOS (ark-desktop-wallet-mac-2.6.0.dmg) 327bfcdd4e48f2d029644fdf6f7d475c238ca8fe789dde227c0acc3b7ef2e81f
- Ubuntu (ark-desktop-wallet-linux-amd64–2.6.0.deb) 202e76428884491f00eddd13d1ea976c04b1e30a9f34db9545b01e8cb8aa62a2
- Windows X86 & X64 (ark-desktop-wallet-win-2.6.0.exe) 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?
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.