This checklist helps maintainers prepare and publish a release safely.
Run the full release pipeline (Docker-backed Makefile):
make release-checkExpected steps:
- Asset build (
pnpm run build) - Composer validation and lock sync
- Code style checks
- Static analysis (Rector dry run + PHPStan)
- PHP and TypeScript test suites with coverage (≥99% PHP lines)
- Demo verification (
demo/Makefilerelease-check) - Git hygiene: no Cursor co-author trailers (REQ-GIT-001) via
make check-no-cursor-coauthor
Alternatively (host PHP already installed):
composer qa
composer phpstan
composer test-coverage
composer coverage-checkBefore tagging, confirm each item in SECURITY.md — Release security checklist. Note confirmation in the release PR or tag message.
-
Move
[Unreleased]entries indocs/CHANGELOG.mdto a new## [X.Y.Z] - YYYY-MM-DDsection. -
Update
docs/UPGRADING.mdif consumers must change code or configuration. -
Commit on a clean tree (no Cursor co-author trailers — REQ-GIT-001):
git status git add -A && git commit -m "Release vX.Y.Z"
-
Create an annotated tag:
git tag -a vX.Y.Z -m "Release vX.Y.Z". -
Run
make check-no-cursor-coauthoragain beforegit push(REQ-GIT-001). The release commit itself is not covered by an earlierrelease-checkrun. -
Push:
git push origin mainandgit push origin vX.Y.Z(remote:git@github.com:nowo-tech/UiKitBundle.git). -
Confirm GitHub workflows
release.ymlandsync-releases.ymlcompleted successfully. -
Prefer
gh -R nowo-tech/UiKitBundle …if the local remote hostname is not recognized bygh.
- Verify Packagist metadata is updated: nowo-tech/ui-kit-bundle.
- Confirm the GitHub release contains the tag message and changelog section.
- Validate installation in a clean Symfony app:
composer require nowo-tech/ui-kit-bundle- Smoke-test kitchen sink demos (Bootstrap 8092 and Tailwind 8093).
- PHP: ≥99% line coverage (prefer 100%;
make test-coverage/make coverage-check) - TypeScript: enforce via
make test-ts(Vitest +.scripts/ts-coverage-percent.sh)
Update README Tests and coverage percentages after each release when coverage changes materially.