Fix typo in CONTRIBUTING
Add a contributing guide
Ensure connections are closed
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.
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 appThe 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.make
to run the build commands. It's included in macos
xcode
to build the safari extension. Can be downloaded from the
apple developer portal.node
and pnpm
to build the extension, and if you want to run the server
directly. Node can be installed via brew with brew install node
, or with
a version manager like asdf. For pnpm
check the website.podman
and podman-compose
if you want to run the server as a container.
Both can be installed with homebrew brew install podman podman-compose
prettier
to format Javascript, JSON, Yaml, and Markdown. Will automatically
install when running make format
.xcbeautify
to format swift. Can be installed with homebrew
brew install xcbeautify
If you're running macos and using homebrew, you can install them all with
make prepare-environment
.
The server is a socket.io server that relays messages between peers to help establish a WebRTC connection.
You can use environment variables to control the server.
JUNCTION_SERVER_PORT
which port to listen on. Defaults to 8000
.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
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.
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.
Open Junction.app
and then enable the extension in Safari.
Running make format
will format the code with prettify and xcbeautify