Awesome
<p align="center"> <img src="https://raw.githubusercontent.com/mozilla/fx-private-relay/11ad17e197e23a0453bfb74fa3670c87cfc35e36/frontend/src/components/landing/images/logo-firefox-relay.svg" width="250" /> </p>Private Relay
<!-- Badges include: license and size of repository -->Private Relay generates email aliases to use in place of personal email addresses.
Recipients will still receive emails, but Private Relay keeps their personal email address from being harvested, and then bought, sold, traded, or combined with other data to personally identify, track, and/or target them.
Usage (for now)
-
Install the extension.
-
Go to relay.firefox.com and sign in.
-
In any
<input>
element, right-click and select "Make a relay address"- The extension will populate the options with your relay addresses.
Local Extension Development
-
Clone, change to the directory, install dependencies:
git clone --recurse-submodules git@github.com:mozilla/fx-private-relay-add-on.git npm install
-
Run with
npm
:npm run web-ext-run
By default, this will open and run the extension in Firefox. If you'd like to run this in Chrome, run the following:
[!WARNING] This will run a script that will introduce breaking changes to
manifest.json
. Please do not commit any script-changed edits to your PR.npm run web-ext-run:chrome
If you want to run the extension on Android, you'll need to install the Android SDK platform tools:
npm run web-ext-run:android --device=DEVICE_ID
Please refer to extensionworkshop.com to learn more about how to run an extension on Android.
-
Visit http://127.0.0.1:8000
Working with translations
Getting the latest translations
We use a git submodule
for translated message files. The --recurse-submodules
step of installation
should bring the message files into your working directory already, but you may
want also want to udpate the translations after install. The easiest way to do
that is:
git submodule update --init --remote
Running with the latest translations
To run the latest translated version of the add-on, you will need to
- Create a Firefox profile set to use the target language
- Either:
- Run
npm run web-ext-run
with that profile - Install the latest pre-release in that profile
- Run
Create a Firefox profile set to use the target language
- Make a new Firefox profile - e.g., "swedish"
- In the profile, install the language
pack for one of
the add-on's supported
languages
- Note: language packs only work on Release & Beta channels of Firefox - not Nightly
- In
about:preferences
, go to the "Language" section, and click the "Set Alternatives" button next to "Choose the languages used to display menus, messages, and notifications from Firefox." - Pick the language pack you installed.
- Quit Firefox so the profile is saved.
Run web-ext
with that profile
Use npm run web-ext-run
to run the add-on, and pass the profile argument.
E.g., npm run web-ext-run -- -p "swedish"
Add/update messages for translation
The privaterelay/locales
directory is a git repository like any other, so to
make changes to the messages:
-
Make whatever changes you need in
src/_locales/en
as you work. -
cd src/_locales/en
-
git branch message-updates-yyyymmdd
-
git push -u origin message-updates-yyyymmdd
You can then open a pull request from the message-updates-yyyymmdd
branch to
the l10n repo main
branch.
Build for other environments
These scripts will build the add-on to work with dev, stage, or prod servers.
npm run build:dev
: https://dev.fxprivaterelay.nonprod.cloudops.mozgcp.net/npm run build:stage
: https://stage.fxprivaterelay.nonprod.cloudops.mozgcp.net/npm run build:prod
: https://relay.firefox.com/
If you want to run the Chrome build of the add-on, use the following scripts:
[!NOTE]
It runs the same scripts as above, but also edits themenus
permission listed in the manifest.json*
-
npm run build:chrome-dev
: https://dev.fxprivaterelay.nonprod.cloudops.mozgcp.net/ -
npm run build:chrome-stage
: https://stage.fxprivaterelay.nonprod.cloudops.mozgcp.net/ -
npm run build:chrome-prod
: https://relay.firefox.com/
Distributing
Add-on Submission Process
See internal documentation here. This document outlines how to submit and release the Firefox Relay add-on (extension) to the different add-on stores.
Process summary:
- Cut Release: Create a new release on GitHub (new tag) with new version number.
- Open ADDONOPS ticket: Create a new Jira ticket for the ADDONOPS team using their form, filling out all the particulars.
- QA Greenlight: Link to QA comment or have QA comment directly on the ticket with greenlight.
- Approval: If approval is given, you will be asked to submit to AMO.
- Submit to AMO: Submit the add-on to AMO. <br> WARNING: make sure to choose the right options.
Continuous Pre-releases
The sign-and-release-to-github
action creates a signed add-on after every
merge to main
. These pre-releases are available on the GitHub Releases
page.
To comply with WebExtension
version
requirements for AMO signing, the pre-release versions are Calendar
Versioned as YYYY.MM.DD.minutes-since-midnight
The signed .xpi
file is named
private_relay-${{ YYYY.MM.DD.minutes }}.xpi
and automatically attached
to each release, under the release "Assets" section.
Make the new version
- Bump the version number in
package.json
andmanifest.json
- Commit the version number bump
- Create a git tag for the version:
git tag <version>
- Push the tag up to GitHub:
git push --tags
Publish to AMO
- After pushing the new version to GitHub, open the "continuous prerelease to GitHub" run for that tag: https://github.com/mozilla/fx-private-relay-add-on/actions/workflows/sign-and-release-to-github.yml
- Under "Artifacts", download
fx-private-relay-extension.zip
- Upload the
.zip
to AMO
Note: Be sure the "Where to Host Version" is set to "On this site".
Publish to Chrome
- After pushing the new version to GitHub, open the "continuous prerelease to GitHub" run for that tag: https://github.com/mozilla/fx-private-relay-add-on/actions/workflows/sign-and-release-to-github.yml
- Under "Artifacts", download
fx-private-relay-extension.zip
- Upload the
.zip
to Chrome
Note: Be sure the publisher is set to Mozilla Corportation.
Publish to GitHub
Finally, we also publish the release to GitHub for those followers.
- Download the signed
.xpi
from the addon versions page - Make the new release on
GitHub
- Use the version number for "Tag version" and "Release title"
- Release notes: copy the output of
git log --no-merges --pretty=format:"%h %s" <previous-version>..<new-version>
- Attach binaries: select the signed
.xpi
file