Tridactyl is very lucky to have a wide base of contributors, 30 at the time of writing, with contributions ranging from a single line to thousands. The purpose of this guide is to help you contribute to Tridactyl according to how much time and experience you have.
- Leave a review on addons.mozilla.org (very few people do this :( )
- Tell your friends about us :)
- Read through readme.md, our newtab.md or our page on addons.mozilla.org and see if anything looks out of date. If it does, file an issue or fork the repository (button in top right), fix it yourself (you can edit it using the pencil icon), and make a pull request.
- Run through
:tutor
and tell us what you think or make changes directly.
- Take a look through the open issues and then check with pull requests to make sure that someone isn't already working on it. Please post in an issue to say that you're working on it.
- If you don't have much experience with JavaScript or WebExtensions, we purposefully leave some particularly simple issues open so that people can get started, and give them the tag good first issue. Feel free to ask us any questions about the build process on Matrix.
- If you have experience with JavaScript or WebExtensions, please look through the issues tagged help wanted as we're really stuck on them.
- You could work on some feature that you really want to see in Tridactyl that we haven't even thought of yet.
- Our build process is a bit convoluted, but excmds.ts is probably where you want to start. Most of the business happens there.
- We use TypeDoc to produce the
:help
page. Look at the other functions in excmds.ts to get an idea of how to use it; if your function is not supposed to called from the command line, then please add/** @hidden */
above it to prevent it being shown on the help page. - Our pre-commit hook runs prettier to format your code. Please don't circumvent it.
If you are making a substantial or potentially controversial change, your first port of call should be to stop by and chat to us on Matrix or file an issue to discuss what you would like to change. We really don't want you to waste time on a pull request (GitHub jargon for a contribution) that has no chance of being merged; that said, we are probably happy to gate even the most controversial changes behind an option.
Take a look in src/static/themes to get an idea of what to do. There is a reasonable amount of magic going on:
- All of your styles must be prefixed with
:root.TridactylTheme[Name]
. If your theme is calledbobstheme
, the selector mentioned must be:root.TridactylThemeBobstheme
(note the capitalisation).- All of your CSS will be injected into all pages, so it is important that is fenced off in this manner.
default.css
has loads of variables that you can use to make it easier for you to style things, and for your theme to apply to new elements that did not exist when you wrote your theme. It is advised that you make as much use of these as possible.