You can install Semifold using the installation script:
Semifold will be installed to $HOME/.local/bin by default. The installation script does not modify your shell configuration files. You need to add $HOME/.local/bin to your $PATH environment variable manually.
If you have the Rust toolchain installed, you can install Semifold from crates.io:
If you're using a Node.js project, you can install Semifold from the Npm Registry:
If you're using a Python project, you can install Semifold from PyPI:
Run the following command to initialize the Semifold workspace:
Follow the prompts to select the workspace resolver(s). Semifold will automatically generate the workspace configuration file based on the selected resolver(s):
Some workspace resolvers require manual configuration, such as the Python resolver. The Python community ecosystem has various commonly used package managers, such as pip, pipx, uv, and pdm. You need to configure the publish command according to your project environment.
For example, if using uv as the package manager, you need to configure the publish command in .changes/config.toml:
Run the following command to commit changes:
Run the following command to bump the version:
Ensure your Git workspace is clean when running semifold version, or use the --allow-dirty option to bypass the Git workspace check.
After version bumping, Semifold will automatically clean up all changeset files, update the version numbers in the corresponding projects within the workspace, and insert the changelog generated from the changesets into the changelog file.
Run the following command to publish changes:
Semifold provides encapsulated Github Actions workflows. Run the following command to publish changes:
If you selected to include GitHub Actions workflows during semifold init, Semifold will automatically generate two workflow files:
.github/workflows/semifold-ci.yaml: Checks the changeset status of the Semifold workspace for each commit. If changesets exist, it generates or updates the existing release branch and automatically submits a Pull Request. If no changesets exist, it checks and publishes all unpublished packages in the workspace..github/workflows/semifold-status.yaml: Checks the changeset status of the Semifold workspace under a Pull Request and creates a comment containing the changeset status.