Junction
Connect people through any URL.
Junction is a web extension for Firefox, Chrome and Safari that lets you start an audio call at any URL.
Building
Running make or make package will regenerate the content script, and
package the extension for all browsers in the ./build/ directory with
the following outputs:
junction.xpi: The firefox extensionjunction.zip: The chrome extensionJunction.app: The safari extension app
Developing
The project is divided into three main parts:
server: A server that handles message passing to establish the WebRTC connections.extension: The main code of the extension itself.safari: The safari app, it wraps the extension using symlinks.
Dependencies
maketo run the build commands. It's included inmacosxcodeto build the safari extension. Can be downloaded from the apple developer portal.nodeandpnpmto build the extension, and if you want to run the server directly. Node can be installed via brew withbrew install node, or with a version manager like asdf. Forpnpmcheck the website.podmanandpodman-composeif you want to run the server as a container. Both can be installed with homebrewbrew install podman podman-composeprettierto format Javascript, JSON, Yaml, and Markdown. Will automatically install when runningmake format.xcbeautifyto format swift. Can be installed with homebrewbrew install xcbeautify
If you're running macos and using homebrew, you can install them all with
make prepare-environment.
Server
The server is a socket.io server that relays messages between peers to help establish a WebRTC connection.
Configuration
You can use environment variables to control the server.
JUNCTION_SERVER_PORTwhich port to listen on. Defaults to8000.
Extension
The extension uses WebExtension manifest v2 and is compatible with Firefox, Chrome and Safari.
You can build all extensions using make in the root of the directory.
If you want to run manually then you can run pnpm install from the
extension folder to install dependencies, and pnpm build to generate the
content script.
$ pnpm install && pnpm build
Testing on Firefox
In order to test on firefox, first go to about:debugging, then click
on the This Firefox option. Then click on Load Temporary Add-On and
point the browser to the build/junction.xpi file if you're using make, or
extension/manifest.json file if you're testing without packaging.
This will enable the extension and will allow you to use the inspector to debug.
Testing on Chrome
In order to test on chrome, first go to chrome://extensions/. Make sure
Developer mode is enabled. You can drag the build/junction.zip file or
click Load Unpacked and point the browser to the extension directory.
Testing on Safari
Open Junction.app and then enable the extension in Safari.
Formatting
Running make format will format the code with prettify and xcbeautify