The Joplin Forum is the community driven place for user support, general discussion about Joplin, problems with installation, new features and software development questions. It is possible to login with your GitHub account. Don't use the issue tracker for support questions.
File bugs in the Github Issue Tracker. Please follow these guidelines:
- Search existing issues first, make sure yours hasn't already been reported.
- Consider enabling debug mode so that you can provide as much details as possible when reporting the issue.
- Stay on topic, but describe the issue in detail so that others can reproduce it.
- Provide a screenshot if possible. A screenshot showing the problem is often more useful than a paragraph describing it.
- For web clipper bugs, please provide the URL causing the issue. Sometimes the clipper works in one page but not in another so it is important to know what URL has a problem.
Please check that your request has not already been posted in the Github Issue Tracker. If it has, up-voting the issue increases the chances it'll be noticed and implemented in the future. "+1" comments are not tracked.
As a general rule, suggestions to improve Joplin should be posted first in the Joplin Forum for discussion.
Avoid listing multiple requests in one report in the Github Issue Tracker. One issue per request makes it easier to track and discuss it.
Finally, when submitting a pull request, don't forget to test your code.
Joplin is available in multiple languages thanks to the help of its users. You can help translate Joplin to your language or keep it up to date. Please read the documentation about Localisation.
If you want to start contributing to the project's code, please follow these guidelines before creating a pull request:
- Bug fixes are always welcome. Start by reviewing the list of essential issues
- Before adding a new feature, ask about it in the Github Issue Tracker or the Joplin Forum, or check if existing discussions exist to make sure the new functionality is desired.
- Changes that will consist in more than 50 lines of code should be discussed the Joplin Forum, so that you don't spend too much time implementing something that might not be accepted.
Building the apps is relatively easy - please see the build instructions for more details.
Coding style is enforced by a pre-commit hook that runs eslint. This hook is installed whenever running npm install
on any of the application directory. If for some reason the pre-commit hook didn't get installed, you can manually install it by running npm install
at the root of the repository.
When submitting a pull request for a new feature or bug fix, please add unit tests for your code. Unit testing GUI changes is not always possible so it is not required, but any change in a file under /lib for example should be unit tested.
The tests are under CliClient/tests. To get them running, you first need to build the CLI app:
cd CliClient
npm i
To run the test units, you must have an instance of the cli app running. In a first window navigate into CliClient
and run:
./run.sh
If you get an error like
Error: Cannot find module '../locales/index.js'
, this means you must (a) rebuild translations or (b) take > them from one of the other apps. To do option b, you can run the following command to copy them from theReactNativeClient
directory:>cd .. # Return to the root of the project rsync -aP ./ReactNativeClient/locales/ ./CliClient/build/locales/
Then run the tests in a second window. To run all the test units:
./run_test.sh
To run just one particular file:
./run_test.sh markdownUtils # Don't add the .js extension