Releases
Folio is released through two channels: Composer/Packagist for the PHP library and GitHub Releases for source archives and extension assets.
Versioning
Folio follows Semantic Versioning:
MAJOR— incompatible API or template-language changesMINOR— new features, backwards compatiblePATCH— bug fixes, backwards compatible
Release tags for the PHP package use the v* prefix, for example v1.2.3.
Install via Composer
composer require mohammadraufzahed/folioTo install a specific release:
composer require mohammadraufzahed/folio:^1.0Composer reads the package metadata from Packagist.
GitHub Releases
Source archives and release notes are published to the GitHub Releases page for every v* tag. GitHub auto-attaches Source code (zip/tar.gz) archives to each release.
VS Code Extension Releases
The VSIX is built and attached to every v* release. You can also cut an extension-only release with a vscode-v* tag; see the VS Code Extension guide for how to install the .vsix.
Releasing a new version
Only maintainers can cut releases. The process is fully automated through GitHub Actions.
Make sure the target commit is on
mainand all CI checks pass.Update
CHANGELOG.mdif needed.Create and push a tag:
bashgit checkout main git pull origin main git tag v1.2.3 git push origin v1.2.3The
Releaseworkflow:- runs the full test matrix on PHP 8.3 and 8.4,
- validates
composer.json, - runs static analysis and code-style checks,
- builds the VS Code extension
.vsixand attaches it to the release, - creates a GitHub Release with auto-generated notes,
- notifies Packagist to refresh its metadata.
Packagist integration
The release workflow can notify Packagist automatically. Add these repository secrets at Settings → Secrets and variables → Actions:
PACKAGIST_USERNAME— your Packagist usernamePACKAGIST_API_TOKEN— an API token from packagist.org/profile
If the secrets are not set, the Packagist step is skipped and Packagist will still update through the GitHub webhook if you configured it on packagist.org.
GitHub Packages
GitHub Packages does not natively support Composer packages today. Folio therefore uses:
- Packagist for Composer distribution.
- GitHub Releases for source archives and binary assets like
.vsixfiles.
If GitHub Packages adds Composer support in the future, the release workflow can be extended to publish there as well.
Release checklist
- [ ] Version bump in
composer.jsonif you version the package there explicitly - [ ]
CHANGELOG.mdupdated - [ ] All CI checks green on
main - [ ] Tag pushed as
v<major>.<minor>.<patch> - [ ] Packagist metadata updated
- [ ] GitHub Release published