Skip to content

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

  • development is the default integration branch for community PRs.
  • main is release-only.

How a release happens (maintainers)

  1. Maintainers merge developmentmain when ready.
  2. CI runs semantic-release on pushes to main.
  3. 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 runs pnpm changelog:cut <version> to stamp the currently aggregated .changes/*.md fragments 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 every apps/docs build.
  • 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 the release-cli.yml/release-npm.yml workflows; 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:

markdown
## 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: