Any and all contributions to Rivet are welcome and encouraged!
If you have any bug reports, questions, ideas, or unexpected behavior feel free to open an issue or start a discussion. It's always a good idea to see if your issue has already been reported before opening a new one.
Due to the size of the repository (package tarballs are committed), it is recommended to use a blobless clone to download the repository more quickly.
- Clone the repository to your local machine, for example using SSH:
git clone --filter=blob:none [email protected]:Ironclad/rivet.git
cd
into your the cloned folder and runyarn
in the root folder- Start the app in development mode by running
yarn dev
Rivet makes use of yarn PnP, so some editor configuration may be necessary:
- Install the ZipFS extension (or install recommended extensions)
- Open the command palette and run
TypeScript: Select TypeScript Version
- Select
Use Workspace Version
More information is available here: https://yarnpkg.com/getting-started/editor-sdks
To build all packages, run yarn build
in the root folder. This will compile the TypeScript for all packages, and build everything for a production release.
To build a specific package, run yarn build
in the package folder. For example, to build the @ironclad/rivet-core
package, run yarn build
in the packages/core
folder.
To run tests, run yarn test
in the root folder. This will run all tests for all packages.
To run tests for a specific package, run yarn test
in the package folder. For example, to run tests for the @ironclad/rivet-core
package, run yarn test
in the packages/core
folder.
Testing will also run linting at the same time.
Rivet uses ESLint for linting and Prettier for formatting. To run linting, run yarn lint
in the root folder. This will run linting for all packages.
In VS Code, ESLint is configured to run automatically on save. We also recommend enabling the Format on Save
option in VS Code to automatically format files with Prettier on save.
Certain nodes need to run in the "Node Executor." This starts a "sidecar" process, which can be difficult to develop with. If you are developing a feature or plugin that requires the Node Executor, consider using the following setup:
Run a watcher for code changes:
cd packages/core
yarn watch
Then, start the app-executor in dev mode:
cd packages/app-executor
yarn dev
First, tag and publish the NPM libraries.
To do this, you need to be a member of the Ironclad NPM organization. Set up ~/.yarnrc
, so that your NPM credentials are properly set up (npmAuthToken
value needs to be set).
- Update the version number in package.json for
packages/cli
,packages/core
, andpackages/node
. - Run
yarn publish
. This may update relevantREADME.md
files. - Git add
package.json
changes andREADME.md
changes, thengit commit -m "Libs v1.14.0"
the package changes. git tag v1.14.0
git push --tags
git push origin main
- Create a release in Github, with title "Rivet Libraries v1.14.0" and two H2 sections (New Features and Bug Fixes).
- UNCHECK "Set as the latest release"
- THEN "Publish Release"
Then, release new version of app
- Update
tauri.conf.json
version number. - Git add
tauri.conf.json
, thengit commit -m "App v1.7.4"
git tag app-v1.7.4
git push --tags
git push origin main
This kicks off the CI process, which will create a new release as a draft.
Then, write up the release notes for the application release.
Once the release is ready, it will show up on the Github releases page as a draft.
-
Update the release notes.
-
Publish the release.
- KEEP "Set as the latest release" CHECKED
-
Download
latest.json
- Check that all Darwin builds have the same signature.
-
In
latest.json
, update the notes field. This supports Markdown syntax, and will show up in the Rivet UI when it gets updated. -
Upload
latest.json
to the release (after deleting the oldlatest.json
). -
Set as latest release, and update the release.
Once the release is out and tested, announce the release on Discord and social.