Skip to main content

Contributing

Contributions to the project are always welcome. asbplayer will never be complete, and there are a ton of issues to work on. Many contributions have already been made, including some very large features.

AI-assisted contributions​

The guidelines below take inspiration from the Linux project.

AI-assisted contributions must include a tag like the following in the commit message:

Assisted-by: AGENT_NAME:MODEL_VERSION

For example:

Assisted-by: Claude:claude-3-opus

Pull requests​

Make sure the pre-merge checks are passing:

pnpm run verify

Then open a pull request on the GitHub repository.

Documentation​

Documentation is under the docs folder in this repository. When adding new features, please update the documentation as well.

Development​

Use the Node version specified in .nvmrc, either via a node version manager (e.g. nvm use) or via nix, which has it locked down in flake.lock.

Below are useful commands for development.

# Install pnpm (if not using nix). Other ways to install: https://pnpm.io/installation
curl -fsSL https://get.pnpm.io/install.sh | env PNPM_VERSION=11.27.0 sh -

# Install dependencies
pnpm i

# Starts the development server for the website
pnpm --filter @project/client run start

# Starts the dev server for the Chromium version of the extension to extension/.output/chrome-mv3-dev
pnpm --filter @project/extension dev

# Starts the dev server for the Firefox version of the extension to extension/.output/firefox-mv2-dev
pnpm --filter @project/extension dev:firefox

# Starts the dev server for the Firefox for Android version of the extension to extension/.output/firefox-android-mv2-dev
pnpm --filter @project/extension dev:firefox-android

# Push the Firefox for Android extension to a connected Android device
./scripts/push-firefox-android

If you have problems building try deleting node_modules and re-running pnpm i.

Localization​

Any new localization keys should first be added to the English loc files, and then copied across all the other loc files using a helper script.

cd ./scripts/loc
node ./merge-loc-from-en.js

Translations are later pulled from the Crowdin project.