Skip to content

Companion add-on for Firefox Relay. Keep your email safe from hackers and trackers. Make an email alias with one click, and keep your address to yourself.

License

Notifications You must be signed in to change notification settings

mozilla/fx-private-relay-add-on

Repository files navigation

Private Relay

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)

  1. Install the extension.

  2. Go to relay.firefox.com and sign in.

  3. 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

  1. Clone, change to the directory, install dependencies:

    git clone --recurse-submodules [email protected]:mozilla/fx-private-relay-add-on.git
    npm install
    
  2. 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:

    npm run web-ext-run:chrome
    

    If you'd like to run the extension in both Chrome and Firefox at the same time, use this command:

    npm run web-ext-run:all
    

    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.

  3. 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

  1. Create a Firefox profile set to use the target language
  2. Either:
    • Run npm run web-ext-run with that profile
    • Install the latest pre-release in that profile
Create a Firefox profile set to use the target language
  1. Make a new Firefox profile - e.g., "swedish"
  2. 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
  3. 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."
  4. Pick the language pack you installed.
  5. 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:

  1. Make whatever changes you need in src/_locales/en as you work.

  2. cd src/_locales/en

  3. git branch message-updates-yyyymmdd

  4. 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.

Distributing

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

  1. Bump the version number in package.json and manifest.json
  2. Commit the version number bump
  3. Create a git tag for the version: git tag <version>
  4. Push the tag up to GitHub: git push --tags

Publish to AMO

  1. 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
  2. Under "Artifacts", download fx-private-relay-extension.zip
  3. Upload the .zip to AMO

Note: Be sure the "Where to Host Version" is set to "On this site".

Publish to Chrome

  1. 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
  2. Under "Artifacts", download fx-private-relay-extension.zip
  3. 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.

  1. Download the signed .xpi from the addon versions page
  2. 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