We are hiring, join us! ๐จโ๐ป๐ฉโ๐ป
- Related: ledger-live-mobile
- Backed by: ledger-live-common
Ledger Live is a new generation wallet desktop application providing a unique interface to maintain multiple cryptocurrencies for your Ledger Nano S / Blue. Manage your device, create accounts, receive and send cryptoassets, ...and many more.
Ledger Live is an hybrid desktop application built with Electron, React, Redux, RxJS,.. and highly optimized with ledger-core C++ library to deal with blockchains (sync, broadcast,..) via ledger-core-node-bindings. It communicates to Ledger hardware wallet devices (Nano S / Blue) to verify address and sign transactions with ledgerjs. Some logic is shared with live-common.
The latest stable release is available on ledger.com/ledger-live.
Previous versions and pre-releases can be downloaded on here from the Releases section.
- macOS 10.10+
- Windows 8+ (x64)
- Linux (x64)
Ledger Live releases are signed. The automatic update mechanism makes use of the signature to verify that each subsequent update is authentic. Instructions for verifying the hash and signatures of the installation packages are available on this page, which will be integrated into the official download page.
- NodeJS LTS/erbium (Node 12.x)
- Yarn 1.x (Classic)
- Python 2.7 or 3.5+
- A C/C++ toolchain (see node-gyp documentation)
# install dependencies
yarn
# launch the app
yarn start
# Build & package the whole app
# Creates a .dmg for Mac, .exe installer for Windows, or .AppImage for Linux
# Output files will be created in dist/ folder
yarn dist
(you can use a .env or export environment variables)
NO_DEBUG_COMMANDS=1
NO_DEBUG_DB=1
NO_DEBUG_ACTION=1
NO_DEBUG_TAB_KEY=1
NO_DEBUG_NETWORK=1
NO_DEBUG_ANALYTICS=1
NO_DEBUG_WS=1
NO_DEBUG_DEVICE=1
NO_DEBUG_COUNTERVALUES=1
other envs can be seen in live-common:src/env.js
In a terminal you need to have webpack dev server running
yarn start
In an other terminal you need to launch the webdriver/electron container. First run will be slow. Next ones will be fast unless some changes are made to the container or package.json. You need to kill and re run the command if package.json changed.
yarn start-electron-webdriver
You can point VNCViewer to localhost::5900
to check what is happening in the container. secret
is the password.
Then you can launch tests.
yarn spectron
or
node_modules/.bin/jest tests/specs/<FILEREGEX>.spec.js
By default it uses --runInBand jest option otherwise it explodes!
If you need to create an app.json, run a test that set up what you need and run it with the env var SPECTRON_DUMP_APP_JSON
set. It will create tests/dump.json
at the end of the spec.
Please put the image expectations at the end of the it(...) tests so that it does not break the whole flow if a snapshot breaks
yarn ci
src
โโโ main : the main process is the mother of all process. it boots internal and renderer process and starts the window.
โโโ internal : related to internal thread that runs commands, device logic, libcore,..
โโโ renderer : everything related to the UI.
โย ย โโโ screens
โย ย โโโ modals
โย ย โโโ components : all components that are not screens or modals, flattened.
โย ย โโโ animations
โย ย โโโ icons
โย ย โโโ images
โย ย โโโ styles
โย ย โโโ bridge : logic related to interacting with accounts and currencies.
โย ย โโโ families : per currency specific logic and components
โย ย โโโ actions : redux actions
โย ย โโโ reducers : redux reducers
โย ย โโโ middlewares
โย ย โโโ analytics
โย ย โโโ fonts
โย ย โโโ hooks
โย ย โโโ i18n : all translation files
โย ย โโโ index.html : html point point
โย ย โโโ index.js : js entry point
โย ย โโโ init.js : initialize the rendering
โย ย โโโ live-common-setup.js : set up live-common for renderer specific parts
โย ย โโโ ... other files related to renderer
โโโ config : constants files. DEPRECATED. will be moved to live-common.
โโโ helpers : helpers. DEPRECATED. will be moved to live-common or in relevant places.
โโโ live-common-set-supported-currencies.js : generic set up of supported coins
โโโ live-common-setup.js : generic set up of live-common
โโโ logger : internal logging library. used by all thread. produces the "export logs".
โโโ network.js : network implementation. will eventually move back to live-common.
โโโ sentry : related to bug report API