Thank you for your interest in contributing to the AviUtl Package Manager!
Here is a guide on how to contribute.
This application is built with Electron.
The languages and frameworks used include:
- TypeScript
- JavaScript (Node.js)
- HTML / CSS
- React (all windows)
- tRPC (all IPC except one preload-only channel)
A template is provided for the following issues. You can use either English or Japanese.
Other Issues are also welcome.
We also welcome fundamental improvement issues, such as how to develop, how to separate code, data format specification, etc.
Pull Requests are also welcome.
We accept the following types of pull requests. You do not need to open an issue first for small bug fixes, dependency updates, documentation fixes, or refactors with limited scope.
If you have a question about a new feature, improvement, or fix, or if the impact of a major new feature or change is significant, please make an Issue to discuss it.
- Fixing a bug
- Adding a new feature
- Improve an existing feature
- Refactoring
- Fixing documentation
When the pull request is merged, your contribution will be added to the Contributors list, and the MIT License will be applied to the code content.
And after that, if you don't mind, add your name to the credits in src/renderer/about/About.tsx and send a pull request.
Submissions containing content that violates the CODE OF CONDUCT will not be accepted.
There are two ways to check your modifications.
By starting from the console, you can easily check your modifications.
Run yarn start to start the application.
By running the packaged app, you can check it closer to the real environment.
By running yarn package, the packaged app is output to out/, so run it.
src/
├── shared/ # Pure modules with no Electron dependency (the main unit-test target)
├── lib/ # Electron-dependent modules used from the renderer (preload only)
├── common/ # Channel names of the preload-only IPC
├── main/ # Electron main process (api/ = tRPC routers, services/ = business logic)
├── renderer/
│ ├── about/ # About window (React)
│ ├── main/ # Main window (React; one root, one directory per tab)
│ └── splash/ # Splash screen
└── types/ # TypeScript declarations
ARCHITECTURE.md describes the process layout, the breakdown of the main process, and the data flow in detail (in Japanese).
See BRANCHING.md for branch workflow.
We are using Conventional Changelog, which is based on Angular's Commit Message Format.
The commit message is automatically checked by commitlint at commit time, and the commit will fail if it does not follow the conventions.
Since release-it is used to manage releases and changelogs, commits that contain new features or bug fixes should especially follow this convention.
To simplify the generation of commit messages, Commitizen has been introduced.
Use yarn cm when committing.
After that, you can commit with a commit message that follows the conventions by typing as instructed in the console.
This project has the following writing style/rules, but you may not need to worry too much about it since linting and formatting are automatically performed at commit time.
We are using ESLint for linting, and the settings are based on the Google JavaScript Style Guide. The contents are as follows.
- ECMAScript 2022 can be used.
- Basically, use
const/letto declare variables. - Use ES
import/exportto load modules. - Comment functions with JSDoc.
We are using Prettier as the formatter.
The settings to be applied are those written in .editorconfig and the use of single quotes.