Skip to content

Publish the Firefox extension as a listed add-on on addons.mozilla.org #122

Open

Description

@jonocodes

Follow-up to #100. Today the Firefox extension is signed unlisted on AMO and self-hosted: the .xpi lives on GitHub Releases, updates come from savr.link/extension/updates.json, and users install it by clicking a GitHub release asset. Every install then hits Firefox's "Allow site to install an add-on?" prompt. #121 had to move the Preferences link off the savr.link/extension/firefox.xpi redirect because Firefox blocked installs through it. On Android, installing outside AMO needs the hidden "Install Extension from File" menu.

A public listing on addons.mozilla.org would give one-click installs on desktop and Android, discoverability, and AMO-hosted updates. The trade-offs (listing metadata, human review, slower releases) are why #100 chose unlisted (see browser-extension/README.md → Distribution, and docs/extension-distribution-research.md).

Proposal

Publish the existing add-on (savr@jonocodes.github.io) as a listed AMO add-on, and move existing self-hosted installs over to it.

Questions to answer

  • Migration of existing installs. The documented path is to ship one last self-hosted version without update_url, after which Firefox checks AMO for updates. Confirm that this works for an add-on whose earlier versions were unlisted under the same ID, and in what order the last unlisted version and the first listed version should go out.
  • Manifest. Listed versions must not carry update_url. Decide whether the release build strips it, or whether the source drops it for good once migration is done.
  • Review. Listed versions get human review. host_permissions on *://*/* (required since Download extension-save images through the extension and log each downloader #104) and scripting may draw questions. AMO also requires source-code submission if the build is minified or bundled; check whether ours counts.
  • Listing content. Summary, description, category, screenshots, icon, support/homepage URLs, and a public privacy-policy URL (PrivacyPolicy.md exists but needs one; this overlaps with Publish the browser extension to the Chrome Web Store (unlisted) #106).
  • Android. Mark the listing as Android-compatible, and verify on a device (the README notes Android is unverified).
  • Automation. Switch .github/workflows/extension-release.yml to web-ext sign --channel listed, or keep listed submission manual. Decide what happens to the GitHub release .xpi, updates.json and the savr.link/extension/firefox.xpi redirect afterwards. Retire them, or keep them for self-hosters?
  • Versioning. AMO accepts each version number exactly once across both channels. Plan the version bump for the switch.

Deliverable

  • The extension is live as a listed add-on on AMO.
  • VITE_FIREFOX_EXTENSION_URL defaults to the AMO listing URL (src/config/environment.ts, tests/e2e/preferences-extension.spec.ts).
  • browser-extension/README.md (Install, Distribution, Releasing), the root README and the release workflow describe the listed path.

Acceptance criteria

  • A fresh install from the AMO listing works on desktop Firefox and Firefox for Android.
  • An existing self-hosted install updates to the listed version without reinstalling.
  • Preferences links to the AMO listing.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions