Code Monkey home page Code Monkey logo

aragon-desktop's Introduction

Aragon Client

Build Status All Contributors

πŸŒŽπŸš€ Trusted by over 1500 organizations, securing more than $300MM in funds. Try it out.

Quick start

Install with yarn and launch the app with yarn start. By default, the app is configured to connect to the Ethereum Goerli testnet.

For connecting to other chains / deployments, a few useful npm scripts are provided:

  • Ethereum Mainnet: yarn start:mainnet will launch the app, configured to connect to the Ethereum mainnet
  • Local development: yarn start:local will launch the app, configured to connect to our aragen local development environment. It will also use the local IPFS daemon, if it detects one exists. If you're using the aragonCLI, you'll want to run this to connect to its local chain.

Note: Windows users may need to install the windows-build-tools before installing this project's dependencies.

More configuration options are available, and depending on your needs, you may find the frontend development setup guide helpful.

Releases

The Aragon client is automatically deployed to IPFS with each new commit to master, via Fleek. The latest builds are available at client.aragon.org or through an IPFS gateway, like ipfs.io/ipns/client.aragon.org.

aragonPM

"Checkpointed" releases, tagged in our releases page, are published on-chain onto the aragon.aragonpm.eth aragonPM repository for all supported Ethereum environments (mainnet and Goerli testnet).

For a long time (2018-2020), these releases were our primary "official" builds. With Fleek, however, we now relegate these on-chain deployments as historical backups in case a user wants to use an older version.

Secrets

A number of environment secrets are required during publishing and these are sometimes different per network.

You may either specify these secrets as environment variables or use a .env.

Contributing

πŸ‘‹ Get started contributing with a good first issue.

πŸŽ“ You may be interested in the Aragon client architecture guide if you're not familiar with how the project is set up.

Don't be shy to contribute even the smallest tweak. 🐲 There are still some dragons to be aware of, but we'll be here to help you get started!

For other details about contributing to Aragon, more information is available in the contributing guide.

Issues

If you come across an issue with Aragon, do a search in the Issues tab of this repo and the Aragon Apps Issues to make sure it hasn't been reported before. Follow these steps to help us prevent duplicate issues and unnecessary notifications going to the many people watching this repo:

  • If the issue you found has been reported and is still open, and the details match your issue, give a "thumbs up" to the relevant posts in the issue thread to signal that you have the same issue. No further action is required on your part.
  • If the issue you found has been reported and is still open, but the issue is missing some details, you can add a comment to the issue thread describing the additional details.
  • If the issue you found has been reported but has been closed, you can comment on the closed issue thread and ask to have the issue reopened because you are still experiencing the issue. Alternatively, you can open a new issue, reference the closed issue by number or link, and state that you are still experiencing the issue. Provide any additional details in your post so we can better understand the issue and how to fix it.

Contributors

Thanks goes to these wonderful people (emoji key):


Pierre Bertet

πŸ’»

Brett Sun

πŸ’»

Gorka Ludlow

πŸ’»

Jorge Izquierdo

πŸ’»

Luis IvΓ‘n Cuende

πŸ’» 🎨 πŸ€”

Oliver

πŸ’»

ßingen

πŸ’»

Daniel Norman

πŸ’»

John Light

πŸ“– πŸ›

Tatu

πŸ“–

Patricia Davila

🎨 πŸ““

Jouni Helminen

🎨 πŸ““

Luke Duncan

πŸ€”

Daniel Constantin

πŸ’»

RJ Ewing

πŸ’»

Paul Henschel

πŸ’»

Rodrigo Perez

πŸ’»

gasolin

πŸ’»

Adam Soltys

πŸ’»

Arun Kumar

πŸ’»

Beer van der Drift

πŸ’»

Daniel Caballero

πŸ’»

Deam

πŸ’»

Ilia Smirnov

πŸ“– πŸ”§

julsar

πŸ“–

Pascal Precht

πŸ”§

Rudy Godoy

πŸ“–

Yalda Mousavinia

πŸ’»

decodedbrain

πŸ’»

jvluso

πŸ’»

mark g romano

πŸ’»

mul53

πŸ’»

Jon

πŸ’»

Abhinav Sagar

🚧

geleeroyale

πŸ“–

Otto G

πŸ’»

Adam Boro

πŸ’»

Emilio Silva Schlenker

πŸ’»

Olivier Sarrouy

πŸ’»

delfipolito

πŸ’»

Enrique Ortiz

πŸ’»

Fabrizio Vigevani

πŸ’»

Mathew Cormier

πŸ’»

Mick de Graaf

πŸ’Ό

iwaduarte

πŸ’»

EC Wireless

πŸ’»

owisixseven

🎨

Andy Hook

πŸ’»

This project follows the all-contributors specification. Contributions of any kind welcome!

Re-usable foundations

Amongst other dependencies, the Aragon client is built upon these packages that you may also find useful for your projects:

  • aragonUI: React component library used to build user interfaces within the Aragon design system
  • token-amount: utility class for encapsulating and formatting a token amount
  • use-inside: React utility that allows a component to be aware of being "inside" the subtree of another component
  • use-token: React utility for fetching information related to tokens on Ethereum
  • use-viewport: React utility providing the current window size and convenient functions for responsive apps
  • use-wallet: React utility aiming to make the integration between your dapp and your users' web3 wallets as straightforward as possible
  • web3-react: a simple, maximally extensible React framework for supporting arbitrary web3 wallets

aragon-desktop's People

Contributors

bbondy avatar bokuweb avatar bpierre avatar dependabot[bot] avatar fscherwi avatar haacked avatar icodeforbananas avatar icoxfog417 avatar ionicabizau avatar izuzak avatar jlord avatar jonathansampson avatar kevinsawicki avatar kewde avatar laiso avatar louis993546 avatar luisivan avatar macor161 avatar onbjerg avatar petemill avatar phanect avatar posva avatar pratu16x7 avatar sahildua2305 avatar sohkai avatar stewartlord avatar tcyrus avatar thompsonemerson avatar zanesterling avatar zeke avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aragon-desktop's Issues

Add a signer provider selector

Should be possible to choose what Web3 provider is injected in place of MetaMask:

  • Private key (should also note that this is insecure)
  • Ledger
  • OS signer (when that exists)

Couldn't start client

Got error like this after 'npm start',

App threw an error during load
TypeError: Cannot read property 'pin' of undefined
at Object. (/Users/me/git/aragon-desktop/src/lib/ipfs-caching.js:12:57)
at Object. (/Users/me/git/aragon-desktop/src/lib/ipfs-caching.js:99:3)
at Module._compile (internal/modules/cjs/loader.js:693:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:704:10)
at Module.load (internal/modules/cjs/loader.js:602:32)
at tryModuleLoad (internal/modules/cjs/loader.js:541:12)
at Function.Module._load (internal/modules/cjs/loader.js:533:3)
at Module.require (internal/modules/cjs/loader.js:640:17)
at require (internal/modules/cjs/helpers.js:20:18)
at Object. (/Users/me/git/aragon-desktop/src/main.js:15:5)
at Object. (/Users/me/git/aragon-desktop/src/main.js:183:3)
at Module._compile (internal/modules/cjs/loader.js:693:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:704:10)
at Module.load (internal/modules/cjs/loader.js:602:32)
at tryModuleLoad (internal/modules/cjs/loader.js:541:12)
at Function.Module._load (internal/modules/cjs/loader.js:533:3)
at loadApplicationPackage (/Users/me/git/aragon-desktop/node_modules/electron/dist/Electron.app/Contents/Resources/default_app.asar/main.js:119:12)
at Object. (/Users/me/git/aragon-desktop/node_modules/electron/dist/Electron.app/Contents/Resources/default_app.asar/main.js:164:5)
at Object. (/Users/me/git/aragon-desktop/node_modules/electron/dist/Electron.app/Contents/Resources/default_app.asar/main.js:204:3)
at Module._compile (internal/modules/cjs/loader.js:693:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:704:10)
at Module.load (internal/modules/cjs/loader.js:602:32)
at tryModuleLoad (internal/modules/cjs/loader.js:541:12)
at Function.Module._load (internal/modules/cjs/loader.js:533:3)
at Object. (/Users/me/git/aragon-desktop/node_modules/electron/dist/Electron.app/Contents/Resources/electron.asar/browser/init.js:188:8)
at Object. (/Users/me/git/aragon-desktop/node_modules/electron/dist/Electron.app/Contents/Resources/electron.asar/browser/init.js:190:3)
at Module._compile (internal/modules/cjs/loader.js:693:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:704:10)

Aragon.Desktop.AppImage - A JavaScript error occurred in the main process

I tried to run Aragon.Desktop.AppImage from terminal this is what I get:

$ ./Aragon.Desktop.AppImage       

A JavaScript error occurred in the main process
Uncaught Exception:
Error: /tmp/.mount_Aragonc4hyFG/resources/app/node_modules/scrypt/build/Release/scrypt.node: invalid ELF header
    at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:160:31)
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:722:18)
    at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:160:31)
    at Module.load (internal/modules/cjs/loader.js:602:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:541:12)
    at Function.Module._load (internal/modules/cjs/loader.js:533:3)
    at Module.require (internal/modules/cjs/loader.js:640:17)
    at require (internal/modules/cjs/helpers.js:20:18)
    at Object.<anonymous> (/tmp/.mount_Aragonc4hyFG/resources/app/node_modules/scrypt/index.js:3:20)
    at Object.<anonymous> (/tmp/.mount_Aragonc4hyFG/resources/app/node_modules/scrypt/index.js:388:3)
    at Module._compile (internal/modules/cjs/loader.js:693:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:704:10)
    at Module.load (internal/modules/cjs/loader.js:602:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:541:12)
    at Function.Module._load (internal/modules/cjs/loader.js:533:3)
    at Module.require (internal/modules/cjs/loader.js:640:17)

running Ubuntu 18.04, node 11.6.0, npm 6.7.0

Allow users to switch networks

The user should be able to select a different network from the onboarding (and perhaps other) screens.

This will likely involve sniffing the URL of the change (to <mainnet,rinkeby>.aragon.org) and grabbing the correct IPFS hash to load.

We may also want some sort of menu panel for this action, for when a user wants to switch inside the app.

Specify minimum Node version required to build

It's always a hassle to build Electron-based projects since they require very specific Node versions.

To help future contributors it'd be nice to specify what version this works on in the README.

Give users the ability to set what nodes the desktop client uses without needing to load Aragon

Currently Aragon uses a Ethereum and IPFS nodes run by the Aragon Association by default. The problem here is that if either of these nodes becomes unavailable for any reason, the desktop app becomes un-usable because it needs to talk to these nodes to fetch the latest frontend via aragonPM and IPFS. Once the latest frontend loads, then users are able to change the default node in their client settings.

Solution: give users the ability in the desktop client to set what Ethereum and IPFS nodes are used to fetch the latest frontend, without needing access to the frontend first. This can be a default settings page that is bundled with the desktop client install and loads automatically if the client notices it cannot fetch the frontend client from the current default node.

App blocking keyboard shortcuts and right-click

At the moment there is no way to copy-paste while using Aragon Desktop on macOS (10.14), also right clicking does nothing.

I detected this a few weeks ago but i thought my computer was just acting funny.

Aragon 0.6.4 doesn't load

Stays here indefinitely:

2019-03-01 at 9 18 42 am

Great moment to shill the need for #63, as it is currently not possible to know what is going on.

Update dependencies to prevent scrypt not found

Happened both on Mac and Linux. Related to this issue: trufflesuite/ganache#134

I locally fixed it with: trufflesuite/ganache#134 (comment)

The current dependency tree for scrypt:

gabi@linux:~/code/aragon/aragon-desktop$ npm ls scrypt
[email protected] /home/gabi/code/aragon/aragon-desktop
β”œβ”€β”¬ @aragon/[email protected]
β”‚ └─┬ @aragon/[email protected]
β”‚   └─┬ [email protected]
β”‚     └─┬ [email protected]
β”‚       └─┬ [email protected]
β”‚         └── [email protected]  deduped
└─┬ [email protected]
  └─┬ [email protected]
    └─┬ [email protected]
      └─┬ [email protected]
        └── [email protected] 

version of Node.js error

I am using:

node -v v11.3.0
&
npm -v 6.7.0

Error: The module '\?\C:\projects\0-aragon-desktop\node_modules\scrypt\build\Release\scrypt.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 67. This version of Node.js requires
NODE_MODULE_VERSION 64. Please try re-compiling or re-installing
the module (for instance, using npm rebuild or npm install).
at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:160:31)
at Object.Module._extensions..node (internal/modules/cjs/loader.js:722:18)
at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:160:31)
at Module.load (internal/modules/cjs/loader.js:602:32)
at tryModuleLoad (internal/modules/cjs/loader.js:541:12)
at Function.Module._load (internal/modules/cjs/loader.js:533:3)
at Module.require (internal/modules/cjs/loader.js:640:17)
at require (internal/modules/cjs/helpers.js:20:18)
at Object. (C:\projects\0-aragon-desktop\node_modules\scrypt\index.js:3:20)
at Object. (C:\projects\0-aragon-desktop\node_modules\scrypt\index.js:388:3)
at Module._compile (internal/modules/cjs/loader.js:693:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:704:10)
at Module.load (internal/modules/cjs/loader.js:602:32)
at tryModuleLoad (internal/modules/cjs/loader.js:541:12)
at Function.Module._load (internal/modules/cjs/loader.js:533:3)
at Module.require (internal/modules/cjs/loader.js:640:17)

Notify user when new Aragon client version is available

We should save the currently used Aragon client version and compare it to the latest one in aragonPM. If we detect a new version, notify the user and allow them to choose if they want to upgrade. Using the new version should be opt-in.

Users cannot access non-aragonid.eth organizations

AFAICT the only organizations that can be accessed in the Aragon Desktop client are organizations that use the aragonid.eth domain. This means that users cannot access e.g. governance.aragonproject.eth from the desktop client.

Pinning Aragon Core

  • Add ipfs-api and use ipfs.pin.add
  • When the latest version of Aragon Core changes from the previous one stored, use ipfs.pin.rm to remove the old version

Error when Ledger goes to sleep

When using the desktop client, my Ledger went to sleep. I tried unlocking it and voting on a proposal and got this error:

You need to be connected to the main network in order to perform "Vote yes in vote #1" on Voting. Please connect your Ethereum provider to the main network.

However Frame was open, my Ledger was unlocked, and Frame had permission to talk to the Aragon desktop client. I restarted the desktop client with Frame open and the Ledger unlocked, and could then vote on the transaction.

Since the Ledger goes to sleep quite often, it would be good if just unlocking them was enough for the desktop app to be able to use it again rather than having to restart the desktop app every time this happens.

Integrated terminal

We can use xterm.js to expose a terminal that has commands like dao act, dao exec, etc. (the dao cli).

Until the GUI is fully featured people need to use the CLI (which bundles dev commands as well) and which is a hassle to install.

Common use case: changing the quorum of a voting app.

Related: aragon/aragon-cli#583

First run unsuccessful

Running this on Node v10.15.0.

First run resulted in a fatal error:

Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready

Started go-ipfs version 0.4.18
aragomPM latest content for aragon.aragonpm.eth: { contractAddress: '0x0000000000000000000000000000000000000000',
  version: '1.2.0' }
(node:48226) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'location' of undefined
    at getLatestFromRepo (/Users/onbjerg/Workspace/aragon/aragon-desktop/src/lib/aragon-core.js:24:30)
(node:48226) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:48226) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Subsequent runs work just fine.

Pinning Aragon Apps

  • Sniff requests with Muon
  • Cache the apps with ipfs-api
  • Remove cached content if path not accessed for more than a week

Check against Electronegativity for security flaws

See Electronegativity.

A run of this against aragon-desktop, done by @tintinweb (file):

β–„β–„β–„ β–„β–„β–Œ β–„β–„β–„ .β–„β–„Β·β–„β–„β–„β–„β–„β–„β–„               
β–€β–„.β–€β–ˆβ–ˆβ€’ β–€β–„.β–€β–β–ˆ β–Œβ€’β–ˆβ–ˆ β–€β–„ β–ˆβ–ͺ             
▐▀▀β–ͺβ–ˆβ–ˆβ–ͺ ▐▀▀β–ͺβ–ˆβ–ˆ β–„β–„β–β–ˆ.▐▀▀▄ β–„β–ˆβ–€β–„         
β–β–ˆβ–„β–„β–β–ˆβ–Œβ–β–β–ˆβ–„β–„β–β–ˆβ–ˆβ–ˆβ–Œβ–β–ˆβ–Œβ–β–ˆβ€’β–ˆβ–β–ˆβ–Œ.β–β–Œ        
 β–€β–€β–€.β–€β–€β–€ β–€β–€β–€Β·β–€β–€β–€ β–€β–€β–€.β–€  β–€β–€β–ˆβ–„β–€β–ͺ        
 ▐ β–„β–„β–„β–„ .β–„β–„ β€’ β–„β–„β–„β–„β–„β–„β–„β–ͺ  β–Œ ▐β–ͺβ–„β–„β–„β–„β–„β–„Β· β–„β–Œ
β€’β–ˆβ–Œβ–β–€β–„.β–€β–β–ˆ β–€ β–β–ˆ β–€β€’β–ˆβ–ˆ β–ˆβ–ˆβ–ͺβ–ˆΒ·β–ˆβ–ˆβ€’β–ˆβ–ˆ β–β–ˆβ–ͺβ–ˆβ–ˆβ–Œ
β–β–ˆβ–β–β–β–€β–€β–ͺβ–„β–ˆ β–€β–ˆβ–„β–ˆβ–€β–€β–ˆβ–β–ˆ.β–β–ˆβ–β–ˆβ–β–ˆβ–β–ˆβ–β–ˆ.β–β–ˆβ–Œβ–β–ˆβ–ͺ
β–ˆβ–ˆβ–β–ˆβ–β–ˆβ–„β–„β–β–ˆβ–„β–ͺβ–β–β–ˆ β–ͺβ–β–β–ˆβ–Œβ–β–ˆβ–Œβ–ˆβ–ˆβ–ˆβ–β–ˆβ–β–ˆβ–ŒΒ·β–β–ˆβ–€Β·.
β–€β–€ β–ˆβ–ͺβ–€β–€β–€Β·β–€β–€β–€β–€ β–€  β–€β–€β–€β–€β–€β–€. β–€ β–€β–€β–€β–€β–€  β–€ β€’
     v1.3.0  https://doyensec.com/

Scan Status:
40 check(s) successfully loaded: 5 global, 35 atomic
Releases list is up to date.
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Check ID                                β”‚ Affected File                                         β”‚ Location β”‚ Issue Description                                                                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ HTTP_RESOURCES_JS_CHECK                 β”‚ /Users/tintin/workspace/js/aragon-desktop/src/main.js β”‚ 93:2     β”‚ https://github.com/doyensec/electronegativity/wiki/HTTP_RESOURCES_JS_CHECK                 β”‚
β”‚ MEDIUM | CERTAIN                        β”‚                                                       β”‚          β”‚                                                                                            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ AUXCLICK_JS_CHECK                       β”‚ /Users/tintin/workspace/js/aragon-desktop/src/main.js β”‚ 105:21   β”‚ https://github.com/doyensec/electronegativity/wiki/AUXCLICK_JS_CHECK                       β”‚
β”‚ MEDIUM | FIRM                           β”‚                                                       β”‚          β”‚                                                                                            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ CONTEXT_ISOLATION_JS_CHECK              β”‚ /Users/tintin/workspace/js/aragon-desktop/src/main.js β”‚ 105:21   β”‚ https://github.com/doyensec/electronegativity/wiki/CONTEXT_ISOLATION_JS_CHECK              β”‚
β”‚ HIGH | FIRM                             β”‚                                                       β”‚          β”‚                                                                                            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ SANDBOX_JS_CHECK                        β”‚ /Users/tintin/workspace/js/aragon-desktop/src/main.js β”‚ 105:21   β”‚ https://github.com/doyensec/electronegativity/wiki/SANDBOX_JS_CHECK                        β”‚
β”‚ MEDIUM | FIRM                           β”‚                                                       β”‚          β”‚                                                                                            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ LIMIT_NAVIGATION_JS_CHECK               β”‚ /Users/tintin/workspace/js/aragon-desktop/src/main.js β”‚ 130:2    β”‚ https://github.com/doyensec/electronegativity/wiki/LIMIT_NAVIGATION_JS_CHECK               β”‚
β”‚ *Review Required*                       β”‚                                                       β”‚          β”‚                                                                                            β”‚
β”‚ HIGH | TENTATIVE                        β”‚                                                       β”‚          β”‚                                                                                            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ OPEN_EXTERNAL_JS_CHECK                  β”‚ /Users/tintin/workspace/js/aragon-desktop/src/main.js β”‚ 133:4    β”‚ https://github.com/doyensec/electronegativity/wiki/OPEN_EXTERNAL_JS_CHECK                  β”‚
β”‚ *Review Required*                       β”‚ 

If an IPFS node already runs then Aragon Desktop fails to start

This is actually from me force-quitting Aragon Desktop, which (I suppose) left the IPFS daemon hanging around.

If you run Aragon Desktop while an IPFS node is already running on port :5001, then the app fails to start.

> [email protected] start /Users/onbjerg/Workspace/aragon/aragon-desktop
> electron .

Initializing daemon...
go-ipfs version: 0.4.18-
Repo version: 7
System version: amd64/darwin
Golang version: go1.11.1
Received interrupt signal, shutting down...
(Hit ctrl-c again to force-shutdown the daemon.)

Error: no IPFS repo found in /Users/onbjerg/.ipfs.
please run: 'ipfs init'

ipfs exited with code: 1, signal: null
initializing IPFS node at /Users/onbjerg/.ipfs
generating 2048-bit RSA keypair...done
peer identity: QmQW5miE6vUfeBFzDdjYCXimxuMC9ti8wjXVKcmNP8haAj
to get started, enter:

	ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme


Initializing daemon...
go-ipfs version: 0.4.18-
Repo version: 7
System version: amd64/darwin
Golang version: go1.11.1

2019-01-22 09:02:31.432 Electron[52548:13885095] *** WARNING: Textured window <EventDispatchingWindow: 0x7fc23c63d430> is getting an implicitly transparent titlebar. This will break when linking against newer SDKs. Use NSWindow's -titlebarAppearsTransparent=YES instead.
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/127.94.0.1/tcp/4001
Swarm listening on /ip4/127.94.0.2/tcp/4001
Swarm listening on /ip4/192.168.1.149/tcp/4001
Swarm listening on /ip4/192.168.99.1/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
Swarm listening on /p2p-circuit

Swarm announcing /ip4/127.0.0.1/tcp/4001
Swarm announcing /ip4/127.94.0.1/tcp/4001
Swarm announcing /ip4/127.94.0.2/tcp/4001
Swarm announcing /ip4/152.115.88.30/tcp/38733
Swarm announcing /ip4/192.168.1.149/tcp/4001
Swarm announcing /ip4/192.168.99.1/tcp/4001
Swarm announcing /ip6/::1/tcp/4001

Error: serveHTTPApi: manet.Listen(/ip4/127.0.0.1/tcp/5001) failed: listen tcp4 127.0.0.1:5001: bind: address already in use

Make web inspector accessible

I can't figure out how to open the inspector to see why something is going wrong while using the production build.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.