Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 96 additions & 0 deletions .github/workflows/extension-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: Build extension

on:
push:
branches: [main]
paths-ignore:
- 'server/**'
- '.github/workflows/signaling-image.yml'
- '**/*.md'
- '.idea/**'
- '.gitignore'
- 'LICENSE'
workflow_dispatch:
inputs:
official:
description: 'Publish an official versioned release (otherwise latest build)'
type: boolean
default: false
prerelease:
description: 'If official, mark it as a pre-release'
type: boolean
default: false

permissions: {}

concurrency:
group: extension-build-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
outputs:
version: ${{ steps.version.outputs.value }}
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
persist-credentials: false

- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 22

- run: node tools/check-locales.mjs

- id: version
run: echo "value=$(node -p "require('./extension/manifest.json').version")" >> "$GITHUB_OUTPUT"

- name: Package the extension
run: |
(cd extension && zip -qr ../offmic.zip .)
sha256sum offmic.zip > offmic.zip.sha256
unzip -l offmic.zip

- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: extension
path: |
offmic.zip
offmic.zip.sha256
if-no-files-found: error

release:
needs: build
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
with:
path: dist
merge-multiple: true

- env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
VERSION: ${{ needs.build.outputs.version }}
RUN_NUMBER: ${{ github.run_number }}
OFFICIAL: ${{ github.event_name == 'workflow_dispatch' && inputs.official }}
PRERELEASE: ${{ inputs.prerelease }}
working-directory: dist
run: |
files=(offmic.zip offmic.zip.sha256)
if [ "$OFFICIAL" = "true" ]; then
flags=""
[ "$PRERELEASE" = "true" ] && flags="--prerelease"
gh release create "v$VERSION" "${files[@]}" \
--title "OffMic $VERSION" --generate-notes $flags
else
gh release delete latest --yes --cleanup-tag || true
gh release create latest "${files[@]}" \
--title "Latest build ($VERSION, build $RUN_NUMBER)" \
--notes "" --prerelease
fi
2 changes: 1 addition & 1 deletion server/src/landing.html
Original file line number Diff line number Diff line change
Expand Up @@ -482,7 +482,7 @@ <h2>What's in the box</h2>
<div class="feature"><h4><span class="ic">◆</span>Peer-to-peer audio</h4><p>WebRTC mesh, end-to-end encrypted by DTLS-SRTP. Media never touches a server.</p></div>
<div class="feature"><h4><span class="ic">◆</span>Rooms</h4><p>A shared team code is the only secret. No account, no sign-up, no invite flow.</p></div>
<div class="feature"><h4><span class="ic">◆</span>Keep listening</h4><p>Hear your team even while your Teams mic is live. On by default, switchable off.</p></div>
<div class="feature"><h4><span class="ic">◆</span>Five languages</h4><p>English, French, Dutch, German and Spanish, following your browser or pinned by hand.</p></div>
<div class="feature"><h4><span class="ic">◆</span>Per-voice mixing</h4><p>Pick your mic and output, set your own level. Mute or turn down any teammate who runs loud.</p></div>
<div class="feature"><h4><span class="ic">◆</span>Light and dark</h4><p>Follows your browser theme, or forced either way from the popup settings.</p></div>
<div class="feature"><h4><span class="ic">◆</span>Your own relay</h4><p>Point the extension at any server you run. The address is editable straight from the popup.</p></div>
<div class="feature"><h4><span class="ic">◆</span>Nothing stored</h4><p>Rooms live in memory on the relay and are never written to disk. Settings stay in your browser.</p></div>
Expand Down
Loading