79 lines
3.4 KiB
Markdown
79 lines
3.4 KiB
Markdown
# Contributing to tabi
|
||
|
||
Halló!
|
||
|
||
Thanks for contributing to [tabi](https://github.com/welpo/tabi). Before implementing new features and changes, please [submit an issue](https://github.com/welpo/tabi/issues/new) so that we can discuss it.
|
||
|
||
We welcome contributions in many forms, including:
|
||
|
||
- Bug reports;
|
||
- New translations;
|
||
- Improvements to existing translations;
|
||
- Feature requests;
|
||
- Code patches;
|
||
- Documentation improvements;
|
||
- UI/UX suggestions.
|
||
|
||
If you're not sure how to contribute or need help with something, please don't hesitate to reach out via the [issue tracker](https://github.com/welpo/tabi/issues) or [mail](mailto:tabi@osc.garden?subject=[GitHub]%20tabi).
|
||
|
||
## How to submit a pull request?
|
||
|
||
- Follow the [GitHub flow](https://guides.github.com/introduction/flow/).
|
||
- Follow the [Conventional Commits Specification](https://www.conventionalcommits.org/en/v1.0.0/).
|
||
- Use [gitmoji](https://gitmoji.dev/) – it's fun! 🫶
|
||
|
||
## Coding Style Guidelines
|
||
|
||
While we don't enforce a strict coding style, we appreciate it when contributions follow the existing code style of the project (e.g. indenting with 4 spaces). This makes the codebase easier to read and maintain. If you are making significant changes or additions, please try to maintain consistency with the current coding patterns and idioms.
|
||
|
||
For JavaScript files, we use [Prettier](https://prettier.io/) to format the code.
|
||
|
||
The CSS properties are sorted following [Concentric-CSS](https://github.com/brandon-rhodes/Concentric-CSS). If you use VSCode, the [Sort CSS](https://marketplace.visualstudio.com/items?itemName=piyushsarkar.sort-css-properties) extension makes this super easy.
|
||
|
||
## Pre-commit Githook
|
||
|
||
### Introduction
|
||
|
||
We use a pre-commit githook to maintain code and file quality. [This script](https://github.com/welpo/tabi/blob/main/.githooks/pre-commit) performs a series of checks and updates before a commit is made.
|
||
|
||
### Setting Up
|
||
|
||
To use the pre-commit githook, run the following command from the root of the repository to configure the git hooks path and make the script executable:
|
||
|
||
```bash
|
||
git config core.hooksPath .githooks
|
||
chmod +x .githooks/pre-commit
|
||
```
|
||
|
||
### Features
|
||
|
||
The pre-commit githook performs the following actions:
|
||
|
||
#### Automatic Updates
|
||
|
||
- **Front Matter in Markdown Files**: Automatically updates the "updated" field in the front matter of `.md` files.
|
||
- **PNG Compression**: Compresses PNG files using either [`oxipng`](https://github.com/shssoichiro/oxipng) or [`optipng`](https://optipng.sourceforge.net/), whichever is available on your system.
|
||
- **Font Subsetting**: Runs `subset_font` if `config.toml` has been modified.
|
||
|
||
#### Commit Checks
|
||
|
||
The script prevents you from committing if:
|
||
|
||
- The `.md` file is marked as a draft.
|
||
- Any file contains a "TODO".
|
||
- A JavaScript file is being committed without a corresponding minified version.
|
||
- A minified JavaScript file is not as small as it could be. Requires installing [UglifyJS](https://github.com/mishoo/UglifyJS) and/or [terser](https://github.com/terser/terser).
|
||
- `config.toml` and `theme.toml` have different numbers of lines in their `[extra]` sections.
|
||
|
||
These checks are in place to ensure code quality and consistency throughout the project.
|
||
|
||
## Code of Conduct
|
||
|
||
We expect all contributors to follow our [Code of Conduct](./CODE_OF_CONDUCT.md). Please be respectful and professional when interacting with other contributors.
|
||
|
||
## License
|
||
|
||
The code is available under the [MIT license](./LICENSE).
|
||
|
||
Thank you for your contributions!
|