Contributions are welcome. For new features, please open an issue to discuss first.
We use Conventional Commits. User-facing changes should include at least one fix:
or feat:
commit for release notes. Other conventions like docs:
or test:
are optional but helpful.
Name | Description |
---|---|
alpha |
Commits to this branch will generate an alpha release of the npm packages |
main |
Commits to this branch will generate a beta release of the npm packages |
release |
Commits to this branch will generate a new release of the npm packages |
In general, most changes should begin as a branch based on alpha
. Once you are happy with the changes, open a PR to merge your branch into alpha
and it will trigger a PR build to compile and test the code. When the build passes and you have relevant approvals - your code will be merged into alpha
branch and after the release workflow has completed, you can install the published alpha packages from npm to check they are still working as expected.
Depending on the velocity of new changes, there will be a periodic merge of alpha
branch into main
in order to create a beta
release. On a slower cycle again, changes will be promoted from main
into release
.
To set up the project locally:
-
Install Node.js: Download from nodejs.org. See src/constants.ts
minNodeVersion
for minimum version. -
Install AlgoKit CLI: Follow the guide from Algokit.
-
Start localnet:
algokit localnet start # or `algokit localnet reset --update` to update localnet docker images
-
Install npm dependencies:
npm install
-
Run tests:
npm test
-
Copy the latest langspec.puya.json from puya. Refer to the contributing guide on the Puya repo for more information on how the file itself is updated for a new AVM version.
-
Run the following script to update relevant files:
npm run script:code-gen
-
If a new
enum
type is required, add it to ENUMS_TO_EXPOSE. Re-run the scripts and update index.ts. -
Add an approval test to ensure the new op codes compile correctly; e.g., AVM 11 approval test.