Contributions are welcome.
To report bugs, request new features, or share your ideas, feel free to open issues or discussion. You can also send an email to [email protected] if you are not familiar with GitHub.
For direct contributions, see the following guidelines.
Method 1: By e-mail
- Save you work as a
.json
file using the "Save" button. If your work contains a background image (which can be loaded with "Open"), it should be in a separate file. - Send the files to [email protected]. Include the title of your work, a description of your work (to show on the webpage), and your name to appear on the list of contributors.
Method 2: Via GitHub (preferred if you use GitHub)
- Fork this repo and clone locally. If you have forked previously, sync to get the latest changes.
- Run
npm install
(you don't need to run build). - Run
npm run add-to-gallery
and follow the instructions there. - Commit your changes, push to your fork, and create a pull request.
This project uses Weblate for translation (currently waiting for Libre hosting approval). Please visit https://hosted.weblate.org/engage/ray-optics-simulation/ to translate.
If you already started the translation using the old json format before Dec 11, 2024, you can still submit that to [email protected] (which will be converted to the new format by some automatic script). But please do not start a new translation with the old format.
See Tools -> Others -> Import Modules for more information about modules. See this tutorial for how to create a new module.
Method 1: By e-mail
- Save you scene with the new module as a
.json
file using the "Save" button. - Send the files to [email protected]. Include the title of your module, a description of your module, and your name to appear on the list of contributors.
Method 2: Via GitHub (preferred if you use GitHub)
- Fork this repo and clone locally. If you have forked previously, sync to get the latest changes.
- Run
npm install
(you don't need to run build). - Run
npm run add-to-modules
and follow the instructions there. - Commit your changes, push to your fork, and create a pull request.
Such as creating a new tool, adding a new parameter to a tool, adding a new mode of viewing light, etc. For significant changes such as a new framework or a new toolbar design, please open a new discussion first.
See the installation instructions for how to set up the project locally.
If you modified some existing tools/components, make sure that the following are satisfied:
- If a file is saved before the modification, it should be readable by the app after the modification, with the logic unmodified.
- After opening such a file, the appearance within the canvas when none of the objects are selected and the mouse is not over any object should be essentially the same as before the modification (except for quality improvement and bug fixing.)
- If the default appearance of a tool (the appearance of an object newly created with the tool, without selection or mouse hovering) is modified, there should be a way to recover the original appearance, such as with a checkbox in the object bar.
For a feature marked as "beta" and for parameters outside the range of the sliders, 2. and 3. do not apply.