From 30e69f7ad13a6ab247039f22e36fc2657893d0cd Mon Sep 17 00:00:00 2001 From: Marcin Rataj Date: Sat, 22 Jul 2017 18:46:24 +0200 Subject: [PATCH 1/4] chore(README): update copy to reflect state of WebExtension port --- README.md | 57 ++++++++++++++++++++++++++++++------------- add-on/manifest.json | 8 +++--- package.json | 12 ++++----- screenshot.png | Bin 22098 -> 24863 bytes 4 files changed, 50 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 949190f44..5b0dae25e 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,3 @@ - -| **Important Announcement** :rocket: | -| --- | -| [Add-on is being migrated to the new Firefox API called WebExtensions](https://github.com/ipfs/ipfs-companion/issues/20). It will be released as `2.x.x` | -| Versions `1.x.x` are maintained in [legacy-sdk](https://github.com/ipfs/ipfs-companion/tree/legacy-sdk) branch. | - # IPFS Companion ![screenshot of v1.5.9](screenshot.png) @@ -15,15 +9,16 @@ [![build-status](https://travis-ci.org/ipfs/ipfs-companion.svg?branch=master)](https://travis-ci.org/ipfs/ipfs-companion) [![Coverage Status](https://coveralls.io/repos/github/lidel/ipfs-firefox-addon/badge.svg?branch=master)](https://coveralls.io/github/lidel/ipfs-firefox-addon?branch=master) -> Firefox addon that provides transparent access to IPFS resources via local HTTP2IPFS gateway. - -(If you are using Google Chrome or Chromium check [ipfs-chrome-extension](https://github.com/dylanPowers/ipfs-chrome-extension) or [ipfs-chrome-station](https://github.com/xicombd/ipfs-chrome-station) instead) +> WebExtension that simplifies access to IPFS resources ## Table of Contents - [Background](#background) - [Features](#features) - [Install](#install) + - [Firefox](#firefox) + - [Chromium](#chromium-based-browsers) +- [Troubleshooting](#troubleshooting) - [Contribute](#contribute) - [License](#license) @@ -37,39 +32,66 @@ It aims to make the web faster, safer, and more open. Learn more at: https://ipfs.io (It is really cool, I promise!) -## Features +## Features - Toolbar icon displays current IPFS peering status - Click on it to open IPFS actions menu - Display information about custom gateway - - Toggle redirection to the gateway (ON by default) - - Open WebUI (eg. go-ipfs daemon running at the custom gateway) + - Redirection to local gateway (automatic by default, manual mode can be enabled in Preferences) + - Easy way to open WebUI (e.g. go-ipfs daemon running at the custom gateway) + - Quick Upload of local files to IPFS + - Mirror to IPFS via right click on any image or video on any website - Additionally, on pages loaded from IPFS: - - Pin IPFS Resource (via API) + - Pin/Unpin IPFS Resource (via API) - Copy canonical IPFS address - - Copy shareable URL to resource at a default public gateway (first one on public gateway list) + - Copy shareable URL to resource at the public gateway - Requests to `https?:///(ipfs|ipns)/$RESOURCE` are replaced with `http://127.0.0.1:8080/(ipfs|ipns)/$RESOURCE` -- Custom Gateway address and other settings can be tweaked at - `about:addons` → Extensions → IPFS Gateway Redirect → Preferences +- Custom Gateway address and other settings can be tweaked via Preferences - Requests made via popular custom protocols are routed to the active gateway (public or custom): - `[web+](ipfs|ipns):/*$RESOURCE` - `[web+]fs:/*(ipfs|ipns)/$RESOURCE` - Experimental features (disabled by default, use Preferences screen to enable) - - Automatic Mode: enable/disable redirect based on the number of peers - Detect and redirect sites with [dnslink](https://github.com/jbenet/go-dnslink) to `/ipns/` - Rewrite hrefs with `/ip(f|n)s/*` paths on every page to point to IPFS gateway. Make plaintext IPFS links clickable. ## Install +### Firefox + Install the latest signed release from [AMO](https://addons.mozilla.org/en-US/firefox/addon/ipfs-gateway-redirect/): [![Get the add-on](https://blog.mozilla.org/addons/files/2015/11/AMO-button_1.png)](https://addons.mozilla.org/en-US/firefox/addon/ipfs-gateway-redirect/) It will guarantee automatic updates to the latest version reviewed by Mozilla community. +#### Old Firefox (< 53) and XUL-compatible browsers + +Legacy versions `1.x.x` were based on currently deprecated Add-On SDK (Firefox-only). +While it is not maintained anymore, one can inspect, build and install it using codebase from [legacy-sdk](https://github.com/ipfs/ipfs-companion/tree/legacy-sdk) branch. +For historical background on the rewrite see [Issue #20: Move to WebExtensions](https://github.com/ipfs/ipfs-companion/issues/20). + +### Chromium-based browsers + +Try manual installation: + +1. Download Sources +2. Build it: + + ```bash + npm install + npm run build + ``` + +3. Then open up `chrome://extensions` in Chromium-based browser, enable "Developer mode", click "Load unpacked extension..." and point it at `add-on/manifest.json` + + ### TROUBLESHOOTING +#### Upload via right-click does not work in Firefox + +See [this workaround](https://github.com/ipfs/ipfs-companion/issues/227). + #### Rule to work with NoScript with ABE enabled By default [NoScript](https://addons.mozilla.org/en-US/firefox/addon/noscript/) breaks this addon by blocking assets loaded from IPFS Gateway running on localhost. @@ -99,3 +121,4 @@ See [CONTRIBUTING](CONTRIBUTING.md) :sparkles: [is-ipfs](https://github.com/xicombd/is-ipfs), [js-multihash](https://github.com/jbenet/js-multihash) and other NPM dependencies are under MIT license, unless stated otherwise. The add-on itself is released under [CC0](LICENSE): to the extent possible under law, the author has waived all copyright and related or neighboring rights to this work, effectively placing it in the public domain. + diff --git a/add-on/manifest.json b/add-on/manifest.json index 78383c332..e63ae547b 100644 --- a/add-on/manifest.json +++ b/add-on/manifest.json @@ -1,10 +1,10 @@ { "manifest_version": 2, - "name": "IPFS Companion (Development Channel)", + "name": "IPFS Companion", "short_name": "IPFS Companion", - "version" : "2.0.7", + "version" : "2.0.8", - "description": "Access IPFS resources via custom HTTP2IPFS gateway", + "description": "WebExtension that simplifies access to IPFS resources", "homepage_url": "https://github.com/ipfs/ipfs-companion", "author": "Marcin Rataj", "icons": { @@ -15,7 +15,7 @@ "applications": { "gecko": { "id": "ipfs-firefox-addon@lidel.org", - "strict_min_version": "52.0" + "strict_min_version": "53.0" } }, diff --git a/package.json b/package.json index 4d14c09c5..58b42525a 100644 --- a/package.json +++ b/package.json @@ -36,13 +36,13 @@ }, "devDependencies": { "babel-preset-es2017": "6.24.1", - "chai": "4.0.2", + "chai": "4.1.0", "cross-env": "5.0.1", "fakefile": "0.0.9", "fs-promise": "2.0.3", - "fx-runner": "1.0.6", - "geckodriver": "1.7.1", - "husky": "0.14.2", + "fx-runner": "1.0.7", + "geckodriver": "1.8.0", + "husky": "0.14.3", "karma": "1.7.0", "karma-babel-preprocessor": "6.0.1", "karma-chai": "0.1.0", @@ -56,10 +56,10 @@ "npm-run-all": "4.0.2", "selenium-webdriver": "3.4.0", "shx": "0.2.2", - "sinon": "2.3.6", + "sinon": "2.3.8", "standard": "10.0.2", "sinon-chrome": "2.2.1", - "web-ext": "1.10.0" + "web-ext": "1.10.1" }, "dependencies": { "ipfs-api": "14.0.4", diff --git a/screenshot.png b/screenshot.png index e6edab524d657dc11d57dc30ad5c580a62732675..af60f5572f1cf1fcc2ef66bf0215c14f2cec0eac 100644 GIT binary patch literal 24863 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 Wq>1l=Rc=+@@if(S)v6#iQU42L0sAQc literal 22098 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 From d0794153be89a6d773f8f688c65eaec05c22e2fd Mon Sep 17 00:00:00 2001 From: Marcin Rataj Date: Sat, 22 Jul 2017 19:04:10 +0200 Subject: [PATCH 2/4] chore(README): remove NSP badge --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 5b0dae25e..eb84283ed 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,10 @@ # IPFS Companion -![screenshot of v1.5.9](screenshot.png) +![screenshot of v2.0.8](screenshot.png) [![](https://img.shields.io/github/release/ipfs/ipfs-companion.svg)](https://github.com/ipfs/ipfs-companion/releases/latest) [![](https://img.shields.io/badge/mozilla-full%20review-blue.svg)](https://addons.mozilla.org/en-US/firefox/addon/ipfs-gateway-redirect/) [![js-standard-style](https://img.shields.io/badge/code%20style-standard-blue.svg)](http://standardjs.com/) -[![NSP Status](https://nodesecurity.io/orgs/lidelorg/projects/db13ad1f-ca19-42c5-8c58-dbb8d111b651/badge)](https://nodesecurity.io/orgs/lidelorg/projects/db13ad1f-ca19-42c5-8c58-dbb8d111b651) [![build-status](https://travis-ci.org/ipfs/ipfs-companion.svg?branch=master)](https://travis-ci.org/ipfs/ipfs-companion) [![Coverage Status](https://coveralls.io/repos/github/lidel/ipfs-firefox-addon/badge.svg?branch=master)](https://coveralls.io/github/lidel/ipfs-firefox-addon?branch=master) From e4526c84a17924ace60076fdde6b3988501343f0 Mon Sep 17 00:00:00 2001 From: Marcin Rataj Date: Sat, 22 Jul 2017 20:02:03 +0200 Subject: [PATCH 3/4] chore(README): conform to https://wiki.mozilla.org/Add-ons/Terminology --- README.md | 6 +++--- add-on/manifest.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index eb84283ed..a99872a99 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ [![build-status](https://travis-ci.org/ipfs/ipfs-companion.svg?branch=master)](https://travis-ci.org/ipfs/ipfs-companion) [![Coverage Status](https://coveralls.io/repos/github/lidel/ipfs-firefox-addon/badge.svg?branch=master)](https://coveralls.io/github/lidel/ipfs-firefox-addon?branch=master) -> WebExtension that simplifies access to IPFS resources +> Browser extension that simplifies access to IPFS resources ## Table of Contents @@ -31,7 +31,7 @@ It aims to make the web faster, safer, and more open. Learn more at: https://ipfs.io (It is really cool, I promise!) -## Features +## Features - Toolbar icon displays current IPFS peering status - Click on it to open IPFS actions menu @@ -66,7 +66,7 @@ It will guarantee automatic updates to the latest version reviewed by Mozilla co #### Old Firefox (< 53) and XUL-compatible browsers -Legacy versions `1.x.x` were based on currently deprecated Add-On SDK (Firefox-only). +Legacy versions `1.x.x` were based on currently deprecated Add-On SDK (Firefox-only). While it is not maintained anymore, one can inspect, build and install it using codebase from [legacy-sdk](https://github.com/ipfs/ipfs-companion/tree/legacy-sdk) branch. For historical background on the rewrite see [Issue #20: Move to WebExtensions](https://github.com/ipfs/ipfs-companion/issues/20). diff --git a/add-on/manifest.json b/add-on/manifest.json index e63ae547b..92cdf7466 100644 --- a/add-on/manifest.json +++ b/add-on/manifest.json @@ -4,7 +4,7 @@ "short_name": "IPFS Companion", "version" : "2.0.8", - "description": "WebExtension that simplifies access to IPFS resources", + "description": "Browser extension that simplifies access to IPFS resources", "homepage_url": "https://github.com/ipfs/ipfs-companion", "author": "Marcin Rataj", "icons": { From bcf5f6a69629d28c6c829b1c8d79596f59d2404f Mon Sep 17 00:00:00 2001 From: Marcin Rataj Date: Sat, 22 Jul 2017 20:10:20 +0200 Subject: [PATCH 4/4] chore(README): fix header capitalization --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a99872a99..18bf2ef5e 100644 --- a/README.md +++ b/README.md @@ -64,13 +64,13 @@ Install the latest signed release from [AMO](https://addons.mozilla.org/en-US/fi It will guarantee automatic updates to the latest version reviewed by Mozilla community. -#### Old Firefox (< 53) and XUL-compatible browsers +#### Legacy Firefox (< 53) and XUL-Compatible Browsers Legacy versions `1.x.x` were based on currently deprecated Add-On SDK (Firefox-only). While it is not maintained anymore, one can inspect, build and install it using codebase from [legacy-sdk](https://github.com/ipfs/ipfs-companion/tree/legacy-sdk) branch. For historical background on the rewrite see [Issue #20: Move to WebExtensions](https://github.com/ipfs/ipfs-companion/issues/20). -### Chromium-based browsers +### Chromium-Based Browsers Try manual installation: @@ -87,11 +87,11 @@ Try manual installation: ### TROUBLESHOOTING -#### Upload via right-click does not work in Firefox +#### Upload via Right-Click Does Not Work in Firefox See [this workaround](https://github.com/ipfs/ipfs-companion/issues/227). -#### Rule to work with NoScript with ABE enabled +#### Rule To Work with NoScript with ABE Enabled By default [NoScript](https://addons.mozilla.org/en-US/firefox/addon/noscript/) breaks this addon by blocking assets loaded from IPFS Gateway running on localhost. To make it work, one needs to extend the SYSTEM Rulset and prepend it with IPFS whitelist: