# Mithril.js Release Processes Mithril's release process is automated by [pr-release]. pr-release is maintained by a long time mithril.js community member [@JAForbes](https://github.com/JAForbes). pr-release handles the following: - Generating changelog entries - Automating the semver version - Publishing releases and pre-releases to npm - Creating github releases - Rollbacks ## For contributors Contributors should create their feature branch targetting the default branch `next`. When this branch is merged `pr-release` will either generate or update a release PR from `next` to `main`. The description and title will be managed by [pr-release], including the semver version. Contributors who have permissions should add the correct semver label to their PR (`major` | `minor` | `patch`). If no label is set, `patch` is assumed. If you do not have permissions, the maintainer will set the label on your behalf. ## Changelog There are two changelogs in the mithril project - `docs/changelog.md` a hand written curated reflection of changes to the codebase - `docs/release.md` an automatically prepended log of changes, managed by pr-release In future we may collapse these into a single file, the separation is due to the fact the `changelog.md` predates the `release.md` file. ## For maintainers Whenever a new feature branch is opened, a reviewing maintainer should add the correct semver label to their PR (`major` | `minor` | `patch`). If no label is set, `patch` is assumed. If a `major` or `minor` feature branch is merge, but no labels were set, you can go back and apply the labels and then re-run the `pr` workflow in github actions, this will recalculate the semver version. ## Updating mithril.js.org Fixes to documentation can land whenever, updates to the site are built and published via `scripts/update-docs.js`. ```bash # These steps assume that MithrilJS/mithril.js is a git remote named "mithriljs" # Ensure your next branch is up to date $ git checkout next $ git pull mithriljs next # Splat the docs folder from next onto master $ git checkout master $ git checkout next -- ./docs # Manually ensure that no new feature docs were added $ node scripts/update-docs ``` After the docs build completes, the updated docs should appear on https://mithril.js.org in a few minutes. **Note:** When updating the stable version with a release candidate out, ***make sure to update the index + navigation to point to the new stable version!!!*** [pr-release]: https://pr-release.org/