|
# How to contribute to SillyTavern |
|
|
|
## Setting up the dev environment |
|
|
|
1. Required software: git and node. |
|
2. Recommended editor: Visual Studio Code. |
|
3. You can also use GitHub Codespaces which sets up everything for you. |
|
|
|
## Getting the code ready |
|
|
|
1. Register a GitHub account. |
|
2. Fork this repository under your account. |
|
3. Clone the fork onto your machine. |
|
4. Open the cloned repository in the code editor. |
|
5. Create a git branch (recommended). |
|
6. Make your changes and test them locally. |
|
7. Commit the changes and push the branch to the remote repo. |
|
8. Go to GitHub, and open a pull request, targeting the upstream branch. |
|
|
|
## Contribution guidelines |
|
|
|
1. Our standards are pretty low, but make sure the code is not too ugly: |
|
- Run VS Code's autoformat when you're done. |
|
- Check with ESLint by running `npm run lint`, then fix the errors. |
|
- Use common sense and follow existing naming conventions. |
|
2. Create pull requests for the staging branch, 99% of contributions should go there. That way people could test your code before the next stable release. |
|
3. You can still send a pull request for release in the following scenarios: |
|
- Updating README. |
|
- Updating GitHub Actions. |
|
- Hotfixing a critical bug. |
|
4. Project maintainers will test and can change your code before merging. |
|
5. Write at least somewhat meaningful PR descriptions. There's no "right" way to do it, but the following may help with outlining a general structure: |
|
- What is the reason for a change? |
|
- What did you do to achieve this? |
|
- How would a reviewer test the change? |
|
6. Mind the license. Your contributions will be licensed under the GNU Affero General Public License. If you don't know what that implies, consult your lawyer. |
|
|
|
## Further reading |
|
|
|
1. [How to write UI extensions](https://docs.sillytavern.app/for-contributors/writing-extensions/) |
|
2. [How to write server plugins](https://docs.sillytavern.app/for-contributors/server-plugins) |
|
|