• Stars
    star
    156
  • Rank 239,589 (Top 5 %)
  • Language
    JavaScript
  • License
    GNU General Publi...
  • Created over 3 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Plug is a browser extension for users of the Internet Computer that allows you to access your ICP, Cycles, and other tokens as well as log into IC apps with one click.

Plug

Fleek Discord

Introduction

Welcome to Plug! An Internet Computer crypto wallet and authentication provider as a browser extension. Find our latest version in this repository's releases, or on our website. You can go to our documentation to learn more about how to interact with Plug as a developer.

Warning: Plug is still alpha software - treat it as a hot wallet.

This repository is the frontend for Plug's browser extension. It uses the Plug Controller and the Plug Inpage Provider to power the features in Plug and all its interactions with the Internet Computer.

Browser Support

Chrome Firefox Opera Edge Brave
49 & later ✔ 52 & later ✔ 36 & later ✔ 79 & later ✔ Latest ✔

🚀 Install

Plug can be installed in two ways. You can get it from the official Chrome Extension Store or the Firefox Add-on Store (recommended, receives auto-updates):

Or download the latest version's build in this repository's releases, and follow the guides below for a manual installation (doesn't auto-update):

🏗️ Development Quick Start

Ensure you have

  • Node.js 10 or later installed
  • Yarn v1 or v2 installed

You need a personal access token to install some of our npm packages.

The token must have the repo and read:packages scopes to login to the GitHub Package Registry.

If you don't have one, create the personal access token in the developer settings.

Run the following command to authenticate, using the personal access token as your password:

npm login --registry=https://npm.pkg.github.com --scope=@psychedelic

Then run the following:

  • yarn install to install dependencies.
  • yarn run dev:chrome to start the development server for chrome extension
  • yarn run dev:firefox to start the development server for firefox addon
  • yarn run dev:opera to start the development server for opera extension
  • yarn run build:chrome to build chrome extension
  • yarn run build:firefox to build firefox addon
  • yarn run build:opera to build opera extension
  • yarn run build builds and packs extensions all at once to extension/ directory

Development

  • yarn install to install dependencies.

  • To watch file changes in development

    • Chrome
      • yarn run dev:chrome
    • Firefox
      • yarn run dev:firefox
    • Opera
      • yarn run dev:opera
  • Load extension in browser

  • Chrome

    • Go to the browser address bar and type chrome://extensions
    • Check the Developer Mode button to enable it.
    • Click on the Load Unpacked Extension… button.
    • Select your extension’s extracted directory.
  • Firefox

    • Load the Add-on via about:debugging as temporary Add-on.
    • Choose the manifest.json file in the extracted directory
  • Opera

    • Load the extension via opera:extensions
    • Check the Developer Mode and load as unpacked from extension’s extracted directory.

Production

  • yarn run build builds the extension for all the browsers to extension/BROWSER directory respectively.

Note: By default the manifest.json is set with version 0.0.0. The webpack loader will update the version in the build with that of the package.json version. In order to release a new version, update version in package.json and run script.

If you don't want to use package.json version, you can disable the option here.

Generating browser specific manifest.json

Update source/manifest.json file with browser vendor prefixed manifest keys

{
  "__chrome__name": "SuperChrome",
  "__firefox__name": "SuperFox",
  "__edge__name": "SuperEdge",
  "__opera__name": "SuperOpera"
}

if the vendor is chrome this compiles to:

{
  "name": "SuperChrome",
}

Add keys to multiple vendors by separating them with | in the prefix

{
  __chrome|opera__name: "SuperBlink"
}

if the vendor is chrome or opera, this compiles to:

{
  "name": "SuperBlink"
}

See the original README of wext-manifest-loader package for more details

Linting Config

License

Plug extension © Fleek LLC Original template MIT © Abhijith Vijayan

More Repositories

1

dab

All the data an IC app needs to make seamless experiences, accessible directly on the IC. DAB is an open internet service for NFT, Token, Canister, and Dapp registries.
Rust
60
star
2

dank

Dank - The Internet Computer Decentralized Bank - A collection of Open Internet Services - Including the Cycles Token (XTC)
Rust
57
star
3

DIP721

DIP721 - An Internet Computer Non-fungible Token Standard
TypeScript
50
star
4

DIP20

DIP20: A fungible token standard for the DFINITY Internet Computer.
Motoko
49
star
5

cap

Open Internet Service to store transaction history for NFTs/Tokens on the Internet Computer - https://cap.ooo/
Rust
44
star
6

terabethia

Terabethia - A Bridge and Messaging Protocol between Ethereum and the Internet Computer.
Rust
38
star
7

DAB-js

JS library that wraps necessary methods to integrate DAB and its NFTs.
TypeScript
26
star
8

ic-kit

Rust library for developing safe canisters.
Rust
25
star
9

plug-controller

Plug's controller library - Providing utility and logic for the Plug extension.
TypeScript
24
star
10

sly

SLY is a friendly and collaborative CLI for the Internet Computer! -- https://sly.ooo
Rust
22
star
11

wicp

Wrapped ICP (WICP) - A composable and interoperable wrapped version of ICP.
Rust
15
star
12

cover

Cover is an open internet service for canister code verification on the Internet Computer
Rust
14
star
13

plug-coinflip

The coinflip is a sample project that showcases how applications can integrate Plug to authenticate users and use the PlugAgent through the IC Provider API!
JavaScript
12
star
14

plug-connect

The Plug Connect button, is a basic React Component button you can use to integrate Plug's Agent features for authenticating a user's identity and requesting access to the Plug Agent to sign request to your canisters on behalf of that identity.
TypeScript
11
star
15

sonic-js

Sonic-js is a library that holds an API for interacting with Swap Canister
TypeScript
10
star
16

nft-marketplace

Jelly - NFT Marketplace Infrastructure & BE Toolkit
Rust
9
star
17

plug-inpage-provider

Inpage Provider. Injected API used to interact with Plug in browsers.
TypeScript
8
star
18

nft-marketplace-fe

TypeScript
7
star
19

projects

Community proposals regarding improvements, new standards, or explorations on the Internet Computer.
6
star
20

plug-docs

Plug Wallet - Getting Started & Technical Documentation
HTML
6
star
21

cap-js

CAP-js is a client for CAP's HTTP API - An Open Internet Service to store transaction history for NFTs/Tokens on the Internet Computer - https://cap.ooo/
TypeScript
5
star
22

dank-docs

Dank - Technical Documentation & Getting Started Guides
HTML
5
star
23

standards

Development, token, and technology standards proposed for the Internet Computer.
3
star
24

cover-tool

cover-builder - command line tool to easily sign and submit cover build verification
JavaScript
3
star
25

sonic-js-example

An example of the usage of sonic-js library
TypeScript
3
star
26

crowns

Crowns (DIP-721) are a collection of 10,000 uniquely generated NFTs on the Internet Computer. With a mix of traditional and psychedelic materials, and a CAP-powered transaction history for full provenance. Learn more about Crowns, here.
TypeScript
3
star
27

browser-rpc

This library allows you exchange messages beetween BrowserRPC instances using window.postMessage API. You can call remote procedures as promises.
TypeScript
2
star
28

plug-mobile-controller

Plug Controller fork for mobile
TypeScript
2
star
29

proposals

Propose new Internet Computer projects to Psychedelic and request support for development.
1
star