Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
bed4f31
Add decryptdata, getidentitycontent and z_getencryptionaddress to the…
mcstoer Apr 2, 2025
8bd5a24
Add credential decryption from an identity and fix formatting for the…
mcstoer Apr 4, 2025
6179a4a
Convert scopes into i-addresses when possible in order to make creden…
mcstoer Apr 4, 2025
6658120
Add API POST endpoint for getting the credentials for a specific scop…
mcstoer Apr 4, 2025
f354908
Update parsing of the credential list to handle older versions of a c…
mcstoer Apr 5, 2025
ade9d15
Update the fetching of credentials to handle the plain login credenti…
mcstoer May 7, 2025
b0c324a
Update the verus-typescript-primitives version to get changes to the …
mcstoer May 8, 2025
fea9860
Update credential fetching to send only specific types of credentials…
mcstoer May 9, 2025
22d6ab5
Update verus-typescript-primitives to use the credential class versio…
mcstoer Jul 1, 2025
480042b
Start changing the deeplink handler to accept other types of deeplinks.
mcstoer Jul 3, 2025
bb60233
Update the deeplink handler to support identity update requests, fix …
mcstoer Jul 11, 2025
91e83e5
Add verification for identity update requests and refactor how verusi…
mcstoer Jul 16, 2025
f756e2a
Update the verification of the identity update request to match a cha…
mcstoer Jul 24, 2025
ae4816a
Add processing of the identity update request and running update iden…
mcstoer Jul 28, 2025
d87345d
Add api for signing of IdentityUpdateResponses.
mcstoer Jul 29, 2025
b5f24ba
Change handling of the deeplink responses to accept the newer way to …
mcstoer Jul 31, 2025
4b3ab0a
Create a new work in progress version of the readme that is tailored …
mcstoer Jul 31, 2025
6a5604c
Restructure the readme to include information on the different develo…
mcstoer Aug 1, 2025
518a990
Update the readme with fixes and update a comment about fetching cred…
mcstoer Aug 12, 2025
c5b2bf2
Add automatic desktop integration for AppImages on Linux that works f…
mcstoer Aug 16, 2025
4d0011f
Add a note about deeplink integration to the readme.
mcstoer Aug 16, 2025
51f9589
Generalize the processing of the desktop file to also work for the re…
mcstoer Sep 10, 2025
0451b9b
Add documentation on the credential encryption and decryption process…
mcstoer Sep 11, 2025
ee174d4
Fix syntax highlighting in Credentials document.
mcstoer Sep 11, 2025
1bd423b
Update verus-typescript-primitives and associated helper libraries to…
mcstoer Sep 16, 2025
3efc23f
Run additional commands to setup the desktop integration.
mcstoer Sep 16, 2025
3bbcd93
Update the encryption and decryption processes for credentials to use…
mcstoer Sep 23, 2025
0699373
Clarify wording regarding the ivk in Step 1 of the encryption process
mcstoer Sep 23, 2025
cb4382c
Add scripts to make it easier to run and build the project. Update th…
mcstoer Sep 26, 2025
ef8a7e4
Fix the permissions on the building script.
mcstoer Sep 26, 2025
cdf7f69
Improve the scripts by adding a new line when going to the next part …
mcstoer Sep 27, 2025
7ffa24f
Fix the script for building Windows binaries to not have curly braces…
mcstoer Sep 27, 2025
030ab41
Replace the constant vrsc::identity.credentials with the variable fro…
mcstoer Sep 30, 2025
0e27997
Use newer version of credential vdxfkey.
mcstoer Sep 30, 2025
0401b01
Minimize the GUI after POSTing to a webhook at the end of a successfu…
mcstoer Oct 23, 2025
5ffebac
Add the version number to the desktop file in order to help with upda…
mcstoer Nov 3, 2025
2c04ad0
Fix creating the desktop integration on mainnet deleting the testnet …
mcstoer Nov 24, 2025
c8ddfdc
Fix the icon and running status for the desktop integration.
mcstoer Dec 10, 2025
5cbb3d8
Fix the incorrect class name for ResponseURI caused by updating the V…
mcstoer Jan 10, 2026
f85d09e
Revert the verus-typescript-primitives version to keep identity updat…
mcstoer Jan 10, 2026
1010bd0
Update yarn.lock with a new resolution for verus-typescript-primitives.
mcstoer Feb 6, 2026
070666b
Fix references to 'credentials' in Credential encryption and decrypti…
mcstoer Feb 13, 2026
74af545
Generalize the Credential documentation to be about how the encrypted
mcstoer Feb 18, 2026
8c2dc8e
Update verus-typescript-primitives to the version with requests v2.
mcstoer Dec 15, 2025
e02dcde
Add the verus:// protocol scheme for deeplinking.
mcstoer Dec 17, 2025
458f7d3
Update the deeplink handler to support requests v2.
mcstoer Dec 18, 2025
0a76133
Update verus-typescript-primitives and fix the sending of the generic…
mcstoer Dec 19, 2025
8db5662
Fix the sending of the generic request to the login consent client.
mcstoer Dec 19, 2025
f071708
Add WIP generic request verification.
mcstoer Jan 8, 2026
dbdda84
Fix the generic request verification.
mcstoer Jan 13, 2026
15bd02b
Upgrade the project to allow for TypeScript.
mcstoer Jan 14, 2026
563923b
Setup the project with eslint.
mcstoer Jan 14, 2026
bf6ab97
Fix using the restricted name 'arguments' and update the spelling of …
mcstoer Jan 16, 2026
26622fa
Add signing of the generic response.
mcstoer Jan 24, 2026
1f43fd8
Add prettier for formatting.
mcstoer Jan 26, 2026
1719b6e
Start updating the login consent plugin handler to typescript.
mcstoer Jan 26, 2026
75dbf3e
Handle the generic response after the login consent plugin closes.
mcstoer Jan 28, 2026
edfd3c9
Update verus libraries.
mcstoer Jan 31, 2026
e5c9f39
Start updating the identity update request execution to typescript.
mcstoer Feb 3, 2026
a27d4e1
Finish updating the identity update request execution for requests v2.
mcstoer Feb 3, 2026
954d045
Support executing and encrypting the app encryption request
mcstoer Feb 11, 2026
7f59193
Add the signdata API endpoint and improve formatting in signdata.js.
mcstoer Feb 13, 2026
c9e1668
Start updating getCredential.js to TypeScript.
mcstoer Feb 27, 2026
5636266
Update to the latest version of verus-typescript-primitives and finish
mcstoer Feb 27, 2026
dc9106f
Start updating the z_getencryptionaddress api to TypeScript.
mcstoer Feb 28, 2026
b95bb87
Change the z_getencryptionaddress API to TypeScript and use its
mcstoer Feb 28, 2026
be67226
Add import sorting to prettier.
mcstoer Mar 5, 2026
59539b7
Normalize code style across project through formatting files that were
mcstoer Mar 6, 2026
2bf9345
Clean up code based on code review.
mcstoer Mar 10, 2026
8a314e2
Improve code based on code review.
mcstoer Mar 11, 2026
e87d5d5
Start updating encryptCredentials to TypeScript in order to update it
mcstoer Mar 12, 2026
a9dccb7
Update to the newest version of verus-typescript-primitives and improve
mcstoer Mar 12, 2026
f911532
Further improve the code based on review.
mcstoer Mar 12, 2026
a530172
Move the sort import plugin to the dev dependencies.
mcstoer Mar 13, 2026
488d020
Update to the latest version of verus-typescript-primitives and update
mcstoer Mar 23, 2026
25d5f01
Further review and clean up code.
mcstoer Mar 26, 2026
3f495d6
Use the new KvMap functions to streamline credential encryption and
mcstoer Mar 30, 2026
34605a8
Update axios to 1.16.0 for CVE fixes affecting versions below 1.15.2.
mcstoer May 8, 2026
9bdd44b
Add optional args to the getidentitycontent api, use vdxfkeys in getting
mcstoer May 14, 2026
28ad2f1
Fix script for switching node versions when run by yarn.
mcstoer May 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -64,4 +64,5 @@ __MACOSX
react/package.json

# Build files
dist/*
dist/*
out/*
5 changes: 5 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
node_modules/
assets/
out/
dist/
yarn.lock
231 changes: 203 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,59 +1,234 @@
### This is experimental and unfinished software. Use at your own risk! No warranty for any kind of damage!
# Verus Desktop

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The Verus Multicoin Wallet and Ecosystem desktop application

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
## Development Prerequisites

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
### Required Software

# Verus Wallet
The Verus Multicoin Wallet and Ecosystem GUI
1) [Node.js](https://nodejs.org/en/download/)
- **Note:** Node.js 20.x is recommended. Node.js 22 and higher are **not supported**.
2) [Yarn](https://yarnpkg.com/getting-started/install)
3) [Git](https://git-scm.com/)
4) [Verus CLI](https://verus.io/wallet) (`verus` and `verusd` binaries)

## Build & Installation
### Cloning the Repository and Optional Plugins

#### Prerequirements:
Clone the Verus Desktop repository and the GUI submodule:
```bash
git clone --recursive https://github.com/VerusCoin/Verus-Desktop
```

1) [Install yarn](https://yarnpkg.com/)
#### Optional Plugins

2) [Install git](https://git-scm.com/)
Optional plugins can be cloned into the same directory level as the Verus Desktop folder.

The [Verus Login Consent Client](https://github.com/VerusCoin/verus-login-consent-client) is needed to handle deeplinks, including login.
```bash
git clone https://github.com/VerusCoin/verus-login-consent-client.git
```

#### Build & Start Verus-Desktop-GUI (frontend)
The [Verus PBaaS visualizer](https://github.com/VerusCoin/verus-pbaas-visualizer) provides PBaaS network Visualizations in 3d graphs.
```bash
git clone https://github.com/VerusCoin/verus-pbaas-visualizer.git
```

```shell
git clone --recursive https://github.com/VerusCoin/Verus --branch master --single-branch
cd Verus/gui/Verus-Desktop-GUI/react/
yarn install
### Verus Desktop Setup

From the Verus Desktop directory, create the following folder structure for your operating system:

| Operating System | Path |
|------------------|-----------------------------|
| Linux | `assets/bin/linux64/verusd/`|
| macOS | `assets/bin/osx/verusd/` |
| Windows | `assets/bin/win64/verusd/` |

Copy both `verus` and `verusd` binaries into the appropriate folder (e.g. `assets/bin/linux64/verusd/`).

#### Deeplinks

Deeplinks require running a production build at least once. After that, you can run Verus Desktop in any mode and still have the deeplinks functional.

## Running

Verus Desktop can be run without building to allow for easier development or with building to test for production before packaging the app.

**Important:** Both the GUI and the PBaaS visualizer require the `NODE_OPTIONS=--openssl-legacy-provider` environment variable. This environment variable will cause an error when trying to run Verus Desktop. Make sure to use a **separate terminal** for the GUI and PBaaS visualizer.

### Development Mode (Without Building)

On Linux and macOS, run Verus Desktop with plugins in development mode using a single terminal with:
```bash
yarn install:all
yarn dev:all
```
Leave the above process running and use a new terminal windows/tab when proceeding with the below steps.

Now please create a directory called `bin` inside `assets/` and afterwards copy `komodod` and `komodo-cli` to a new subfolder named after the operating system you are building Agama for: `linux64`, `osx` or `win64`. Inside this subfolder, create another directory called `verusd`
and copy `verusd` and `verus-cli` into it.
On Windows, or to run each part separately, follow these steps.

From within `Verus/` the structure will be `assets/bin/linux64` (for example on linux).
#### GUI

Open a new terminal in the Verus Desktop directory:
```bash
export NODE_OPTIONS=--openssl-legacy-provider
cd gui/Verus-Desktop-GUI/react/
yarn install
```

#### Start Verus App (electron)
You can run the GUI in two ways.

```shell
cd Verus
1. Without plugins:
```bash
yarn start
```

2. With plugins:
```bash
yarn start-no-dashboard
```

#### Optional: PBaaS visualizer

Open a new terminal, navigate to the PBaaS visualizer directory:
```bash
export NODE_OPTIONS=--openssl-legacy-provider
yarn install
yarn start
```
To use debug/dev mode please stop the Verus App (electron) and either set `dev: true` and `debug: true` in `~/.verus/config.json` and then restart the app or replace step 3) from above with the start command below:

```shell
#### Optional: Login Consent Client

Open a new terminal, navigate to the Login Consent Client directory:
```bash
yarn install
yarn start
```

#### Desktop

With the GUI and any optional plugins running, navigate to the Verus Desktop directory:
```bash
yarn install
yarn start devmode
```

You are ready to dev!
#### Debugging

- If you see a blank white window after starting the desktop application, check if the GUI is running.
- If the GUI or PBaaS visualizer fails to start and you get this error:

`Error: error:0308010C:digital envelope routines::unsupported`

This indicates that the required environment variable is not set.
- If the GUI or PBaaS visualizer fails to start and you get this error:

`Error: listen EADDRINUSE: address already in use :::9838`

Then run the GUI with `yarn start-no-dashboard` to avoid dashboard conflicts.

- If you get a blank white window after trying to open the PBaaS visualizer, check if the PBaaS visualizer is running.
- If you get a smaller blank white window after using a deeplink, check if the Login Consent Client is running.

### Production Mode (With Building)

On Linux and macOS, run Verus Desktop with plugins using a single terminal with
```bash
yarn install:all
yarn start:all
```

On Windows, or to manually build the components and run Verus Desktop, follow these steps.

#### GUI

Open a new terminal in the Verus Desktop directory:
```bash
export NODE_OPTIONS=--openssl-legacy-provider
cd gui/Verus-Desktop-GUI/react/
yarn install
yarn build
```

#### Optional: PBaaS visualizer

Open a new terminal, navigate to the PBaaS visualizer directory:
```bash
export NODE_OPTIONS=--openssl-legacy-provider
yarn install
yarn build
```

After building, you will find the plugin files in the `/build` directory. Create the folder `assets/plugins/builtin/verus-pbaas-visualizer/` inside your Verus Desktop directory and copy the build files into it.

#### Optional: Login Consent Client

Open a new terminal, navigate to the Login Consent Client directory:
```bash
yarn install
yarn build
```

After building, you will find the plugin files in the `/build` directory. Create the folder `assets/plugins/builtin/verus-login-consent-client/` inside your Verus Desktop directory and copy the build files into it.

## Bundling & packaging:
#### Desktop

With the GUI and any optional plugins built, navigate to the Verus Desktop directory:
```bash
yarn install
yarn start
```

#### Debugging

- If you see a blank white window after starting the desktop application, the GUI needs to be built.
- If the GUI or PBaaS visualizer fails to build and you get this error:

`Error: error:0308010C:digital envelope routines::unsupported`

This indicates that the required environment variable is not set.
- If you get a blank white window after trying to open the PBaaS visualizer, the PBaaS visualizer needs to be built.
- If you get a smaller blank white window after using a deeplink, the Login Consent Client needs to be built.


## Creating Builds

| Operating System | File Type |
|------------------|------------|
| Linux | `.AppImage`|
| macOS | `.dmg` |
| Windows | `.exe` |

To create a build from Linux for Windows, you will need either Wine or a [Docker container](https://www.electron.build/multi-platform-build#to-build-app-for-windows-on-linux)

### Using Linux and macOS

On Linux and macOS, package Verus Desktop with plugins using a single terminal with:
```bash
yarn install:all
yarn dist:all
```

The packaged application will be packaged based on your operating system, and located in the `/dist` directory.

To create a build for Windows:
```bash
yarn install:all
yarn dist-win:all
```

### Windows or Manual Builds

To manually build the components and package Verus Desktop, follow these steps.

Build all dependencies, including the GUI and any optional plugins, before packaging the application. See [Production Mode (With Building)](#production-mode-with-building) for how to build.

Package the application:
```shell
yarn run dist
yarn dist-win
```
We refer to the original [electron-builder](https://www.electron.build) website for more detailed information and further documentation.

For manually building on Linux or macOS:
```shell
yarn dist
```

For more detailed information about the build process, see the original [electron-builder](https://www.electron.build) website.
Loading