Release Process
This guide documents how releases are produced. Contributors should generally focus on PRs to development; maintainers handle release merges and publishing.
Branches and release source of truth
developmentis the default integration branch for community PRs.mainis release-only.
How a release happens (maintainers)
- Maintainers merge
development→mainwhen ready. - CI runs
semantic-releaseon pushes tomain. - Releases are published via Git tags and GitHub Releases (when enabled).
Configuration lives in:
.github/workflows/release.yml.releaserc
Versioning rules
Version bumps are determined by Conventional Commits (see Branching and Versioning for the commit taxonomy table and examples).
Changelog
There are three separate changelog surfaces — see Product Changelog vs. Main Branch Activity for the full picture:
- Product Changelog (
docs/en/changelog.md) — human-curated. A maintainer runspnpm changelog:cut <version>to stamp the currently aggregated.changes/*.mdfragments into a dated version section. This is a manual step, not part of CI. - Main Branch Activity — every PR/commit merged to
main, generated automatically on everyapps/docsbuild. - Package changelogs (
apps/cli/CHANGELOG.md,libs/sdk/CHANGELOG.md,libs/adapters/connector/CHANGELOG.md) — generated by Nx Release from conventional commits as part of therelease-cli.yml/release-npm.ymlworkflows; unrelated to the two pages above and not published to the docs site.
Every user-facing PR needs a .changes/<pr-number>.md fragment (or an approved changelog:none label) — see .changes/README.md. CHANGELOG.md at the repo root is now a short pointer to the pages above; it is no longer where release notes are written. The pre-2026-08 history isn't in the working tree, but it's recoverable from git history — see the root CHANGELOG.md for how.
First public GitHub Release (paste template)
Use when publishing v0.10.0-alpha.2 (or the current package.json version) for the first MIT Community Edition line:
## LenserFight Community Edition
**License:** MIT — see the `LICENSE` file in this repository.
**Trademarks:** The LenserFight name and logos are governed separately.
**Docs:** https://docs.lenserfight.com
**Security:** Report vulnerabilities privately via GitHub Security Advisories (see `SECURITY.md`).
**Supported in this build:** lenses, workflows, local Supabase, `lf run exec`, connector adapter **alpha** (`@lenserfight/adapters/connector` in-repo). See README “Supported now / Not part of” for boundaries.
**Validation:** From a clean clone: `pnpm install --frozen-lockfile`, `pnpm smoke`, `pnpm check:oss-migration` (maintainers run before tagging).Dry-run: push a test tag on a fork or use GitHub “Draft release” before marking latest.
See also: