From 7a4df7a94cbf172eb38648d8fe3ace59491fcd8b Mon Sep 17 00:00:00 2001 From: Simon Date: Fri, 31 Jul 2026 13:05:13 +0200 Subject: [PATCH] Firefox Add-ons availability --- README.md | 26 +++++++++++++++----------- server/src/landing.html | 33 ++++++++++++++++++++++++--------- 2 files changed, 39 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 74c39f2..972f310 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,12 @@ **A private voice channel for your team, during your Teams meetings.** [![Available in the Chrome Web Store](https://img.shields.io/badge/Chrome%20Web%20Store-Available-4f6bed.svg)](https://chromewebstore.google.com/detail/onacjipehnjfchieiakjlofndidcnkod) -[![Manifest V3](https://img.shields.io/badge/Chrome-Manifest%20V3-4f6bed.svg)](https://developer.chrome.com/docs/extensions/develop/migrate) +[![Available on Firefox Add-ons](https://img.shields.io/badge/Firefox%20Add--ons-Available-ff7139.svg)](https://addons.mozilla.org/firefox/addon/offmic/) +[![Manifest V3](https://img.shields.io/badge/Manifest-V3-4f6bed.svg)](https://developer.chrome.com/docs/extensions/develop/migrate) [![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](LICENSE) ![Version](https://img.shields.io/badge/version-0.1.0-green.svg) -**[Install OffMic from the Chrome Web Store](https://chromewebstore.google.com/detail/onacjipehnjfchieiakjlofndidcnkod)** +**[Install for Chrome](https://chromewebstore.google.com/detail/onacjipehnjfchieiakjlofndidcnkod)**  ยท  **[Install for Firefox](https://addons.mozilla.org/firefox/addon/offmic/)** @@ -61,15 +62,17 @@ Voice travels over **peer-to-peer WebRTC**, in a mesh. It never goes through a s ## Install -### Chrome +OffMic is published on both stores. -OffMic is published on the Chrome Web Store: +### Chrome **[chromewebstore.google.com/detail/onacjipehnjfchieiakjlofndidcnkod](https://chromewebstore.google.com/detail/onacjipehnjfchieiakjlofndidcnkod)** ### Firefox -Firefox 115 or newer. The build is not on addons.mozilla.org yet, so grab `offmic-firefox.zip` from the [latest release](https://github.com/Bysimeit/OffMic/releases), unzip it, then open `about:debugging` โ†’ **This Firefox** โ†’ **Load Temporary Add-on** and pick the `manifest.json` inside. Being a temporary add-on, it goes away when you restart Firefox. +Firefox 115 or newer. + +**[addons.mozilla.org/firefox/addon/offmic](https://addons.mozilla.org/firefox/addon/offmic/)** ### On Chrome, one permission step @@ -98,13 +101,13 @@ Each teammate in the list also carries its own mic toggle and volume slider, so ## Installation, if you want to host your own relay server -None of this is needed to use OffMic. The Chrome Web Store build already points at a hosted relay, so installing it and joining a room is all it takes. Follow the steps below only if you would rather run the signaling for your team yourself. +None of this is needed to use OffMic. The store builds already point at a hosted relay, so installing one and joining a room is all it takes. Follow the steps below only if you would rather run the signaling for your team yourself. Note that pointing at your own relay does not require a clone either: the address is editable straight from the popup, in the store build as much as in a local one. ### Requirements -Node.js 18 or newer, and Chrome. +Node.js 18 or newer, and Chrome or Firefox. ### 1. Clone @@ -123,11 +126,11 @@ const OFFMIC_CONFIG = { }; ``` -That value is only the **default** shown on a fresh Chrome profile. The address is editable in the popup at any time, and what you type there is remembered, so trying another relay never requires touching a file. +That value is only the **default** shown on a fresh browser profile. The address is editable in the popup at any time, and what you type there is remembered, so trying another relay never requires touching a file. ### 2. Load the extension from source -Skip this if you already installed a packaged build, it works the same against your own relay. +Skip this if you already installed a store build, it works the same against your own relay. `extension/` holds one source tree and two manifests: `manifest.json` for Chrome, `manifest.firefox.json` for Firefox. The build script copies the tree into `dist/`, one folder per browser, with the right manifest in place: @@ -148,9 +151,10 @@ On Chrome you can also load `extension/` directly, since its `manifest.json` is 1. Open `about:debugging` โ†’ **This Firefox** 2. **Load Temporary Add-on**, then pick `dist/firefox/manifest.json` -3. Open the popup and click the microphone permission link -The last step matters on both: the audio runs in a context with no UI, so it cannot show a permission prompt. You have to grant access once from the dedicated page, otherwise capture fails with `NotAllowedError`. +Being a temporary add-on, it goes away when you restart Firefox. + +The last Chrome step matters: the audio runs there in a context with no UI, so it cannot show a permission prompt. You have to grant access once from the dedicated page, otherwise capture fails with `NotAllowedError`. Firefox captures inside the Teams tab and has nothing to grant. ### 3. Run the signaling server diff --git a/server/src/landing.html b/server/src/landing.html index eb5098b..ee1da34 100644 --- a/server/src/landing.html +++ b/server/src/landing.html @@ -4,7 +4,7 @@ OffMic, a private voice channel for your team during Teams meetings - + @@ -26,12 +26,21 @@ "@type": "SoftwareApplication", "name": "OffMic", "applicationCategory": "CommunicationApplication", - "operatingSystem": "Chrome", - "description": "A Chrome extension that gives your team a private peer-to-peer voice channel during a Teams meeting, driven by your Teams microphone state.", + "operatingSystem": "Chrome, Firefox", + "description": "A Chrome and Firefox extension that gives your team a private peer-to-peer voice channel during a Teams meeting, driven by your Teams microphone state.", "url": "https://offmic.xeron.be/", - "downloadUrl": "https://chromewebstore.google.com/detail/onacjipehnjfchieiakjlofndidcnkod", - "installUrl": "https://chromewebstore.google.com/detail/onacjipehnjfchieiakjlofndidcnkod", - "sameAs": "https://github.com/Bysimeit/OffMic", + "downloadUrl": [ + "https://chromewebstore.google.com/detail/onacjipehnjfchieiakjlofndidcnkod", + "https://addons.mozilla.org/firefox/addon/offmic/" + ], + "installUrl": [ + "https://chromewebstore.google.com/detail/onacjipehnjfchieiakjlofndidcnkod", + "https://addons.mozilla.org/firefox/addon/offmic/" + ], + "sameAs": [ + "https://github.com/Bysimeit/OffMic", + "https://addons.mozilla.org/firefox/addon/offmic/" + ], "license": "https://www.gnu.org/licenses/agpl-3.0.html", "author": { "@type": "Person", "name": "Simon", "url": "https://github.com/Bysimeit" }, "offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD" } @@ -186,6 +195,7 @@ .dl-btn .dl-sub { font-size: 0.72rem; font-weight: 500; opacity: 0.82; } .dl-btn .dl-main { font-size: 1.1rem; font-weight: 700; letter-spacing: -0.01em; } .dl-primary { background: linear-gradient(135deg, var(--primary), var(--primary-dark)); color: #fff; box-shadow: 0 14px 30px -14px rgba(79, 107, 237, 0.95); } + .dl-firefox { background: linear-gradient(135deg, #ff9500, #e4551f); color: #fff; box-shadow: 0 14px 30px -14px rgba(228, 85, 31, 0.95); } .dl-ghost { background: color-mix(in srgb, var(--surface) 80%, transparent); color: var(--text); border: 1px solid var(--line); } .cta-note { margin: 20px auto 0; max-width: 52ch; font-size: 0.82rem; color: var(--muted); } @@ -392,12 +402,16 @@

Mute yourself in Teams.
Your team hears you.< Available in theChrome Web Store + + + Available onFirefox Add-ons + Get it onGitHub -

Free and open source, AGPL-3.0. Chrome, Manifest V3, one click from the Chrome Web Store. The extension already points at a hosted relay, so there is nothing to deploy to get started.

+

Free and open source, AGPL-3.0. Chrome and Firefox, Manifest V3, one click from either store. The extension already points at a hosted relay, so there is nothing to deploy to get started.

@@ -441,7 +455,7 @@

Detect

2

Capture

-

An offscreen document opens your microphone alongside Teams, without ever taking it away from the meeting.

+

OffMic opens your microphone alongside Teams, without ever taking it away from the meeting. Chrome hosts the capture in an offscreen document, Firefox inside your Teams tab.

3
@@ -500,7 +514,7 @@

Before you install

  • Headphones are mandatory. If your team's voice comes out of your speakers while your Teams mic is live, the client will hear it. No software can fix that.
  • Teams web only. A browser extension has no reach into the Teams desktop client.
  • Detection depends on the Teams DOM. Microsoft can change its UI and break it.
  • -
  • Chrome for now. The offscreen document is Chrome specific. A Firefox port is planned.
  • +
  • Chrome and Firefox. Chrome runs the voice channel in an offscreen document, Firefox inside your Teams tab, so on Firefox closing that tab ends the channel.
  • Up to 5 or 6 people. Beyond that, a peer-to-peer mesh costs too much upstream bandwidth.
  • No account, no sign-up, no usage tracking. The signaling server is a dependency-light Node service, and it is the one serving this page.

    @@ -520,6 +534,7 @@

    Before you install