PHPackages                             zenstruck/changelog - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. zenstruck/changelog

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

zenstruck/changelog
===================

Generate pretty release changelogs using the commit log and Github API.

v1.12.0(1y ago)13112[2 issues](https://github.com/zenstruck/changelog/issues)MITPHPPHP &gt;=8.2

Since Sep 22Pushed 1y ago1 watchersCompare

[ Source](https://github.com/zenstruck/changelog)[ Packagist](https://packagist.org/packages/zenstruck/changelog)[ Docs](https://github.com/zenstruck/changelog)[ GitHub Sponsors](https://github.com/kbond)[ RSS](/packages/zenstruck-changelog/feed)WikiDiscussions 1.x Synced today

READMEChangelog (10)Dependencies (10)Versions (30)Used By (0)

zenstruck/changelog
===================

[](#zenstruckchangelog)

[![CI](https://github.com/zenstruck/changelog/actions/workflows/ci.yml/badge.svg)](https://github.com/zenstruck/changelog/actions/workflows/ci.yml)

Generate pretty release changelogs using the commit log and Github API. Changelog entries are in the following format:

```
{short hash} {summary} (#{PR number}) by {author}, {co-author 1}, {co-author n}...

```

Some notes about the format:

1. Currently, this format is hard-coded and can't be customized
2. Merge commits are excluded
3. PR number is only added if not already in the summary (and a PR exists for the commit)
4. Author/Co-Author's are converted to GitHub username links if possible to take advantage of [GitHub Release Avatar List](https://github.blog/changelog/2021-09-14-releases-now-have-an-avatar-list/)

See [an example](https://github.com/zenstruck/foundry/releases/tag/v1.13.3) of a release generated using this package.

Installation
------------

[](#installation)

To avoid dependency conflicts with this tool, it is recommended to install as an executable [PHAR](#phar) or install in your project (or globally) using the [composer bin plugin](#composer-bin-plugin).

### PHAR

[](#phar)

```
wget https://github.com/zenstruck/changelog/releases/latest/download/changelog.phar -O changelog && chmod +x changelog
mv changelog ~/bin # assumes ~/bin is in your PATH
```

### Composer Bin Plugin

[](#composer-bin-plugin)

Requires the [bamarni/composer-bin-plugin](https://github.com/bamarni/composer-bin-plugin).

```
# locally in your project
composer bin changelog require zenstruck/changelog

# globally
composer global bin changelog require zenstruck/changelog
```

Configuration
-------------

[](#configuration)

The `changelog` binary should be executable either globally or via `vendor/bin/changelog`. For the remainder of this documentation, it is assumed this is available as `changelog`.

This tool requires a GitHub Personal Access Token to access the GitHub API. You can configure this in two ways:

1. `GITHUB_API_TOKEN` environment variable (ie prefix `changelog` commands with `GITHUB_API_TOKEN=your-token`)
2. Configure the token globally: `changelog configure` and follow the instructions to generate/save your token

Usage
-----

[](#usage)

> **Note**: Commands that detect the repository from your current directory use the `upstream` origin if available.

### Changelog Preview

[](#changelog-preview)

Generate a changelog preview in your console:

```
# "interactive", detects repository from current directory, from=last release on GitHub, to=default branch
changelog generate

# equivalent to above, "generate" is the "default command"
changelog

# outputs changelog for "your/repository" from tag "v1.0.0" to branch "main"
changelog generate --repository=your/repository --from=v1.0.0 --to=main
```

Run `changelog generate --help` to see full command documentation.

### Create Changelog File

[](#create-changelog-file)

Create a `CHANGELOG.md` file for the current repository based on existing releases. This file is created in the current working directory. It is up to you to add/commit to the repository.

```
# create a CHANGELOG.md
bin/changelog file:create

# customize the filename
bin/changelog file:create --filename=changes.md

# exclude releases marked as "pre-release"
bin/changelog file:create --exclude-pre-releases
```

### Create Release

[](#create-release)

Create (and optionally push) a release changelog (exclude `--push` to preview what the release will look like):

```
# "interactive" - detects repository from current directory, suggests next version
changelog release

# generates changelog from v1.0.0 to main and creates v1.1.0 release on GitHub that has the changelog as the body
changelog release v1.1.0 --repository=your/repository --from=v1.0.0 --target=main --push

# detects repository from current directory, from=last release on GitHub, target=default branch
changelog release v1.1.0 --push
```

You can use semantic versioning keywords as the next version. The following example assumes your last release was *v1.0.0*.

```
changelog release bug --push # creates v1.0.1 release
changelog release feature --push # creates v1.1.0 release
changelog release major --push # creates v2.0.0 release
```

Run `changelog release --help` to see full command documentation.

### Release Status Dashboard

[](#release-status-dashboard)

Generate a simple dashboard for a GitHub organization showing package release statuses.

```
changelog dashboard my-org

# will ask for organization and give option to save as default.
# if saved, subsequent calls to the command will not require the organization argument
changelog dashboard
```

If you have repositories that have workflows disabled due to inactivity, you can use the `--enable-workflows` option to enable them.

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance40

Moderate activity, may be stable

Popularity13

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity74

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~44 days

Total

30

Last Release

451d ago

Major Versions

v0.4.0 → v1.0.02021-09-27

PHP version history (4 changes)v0.1.0PHP &gt;=7.4

v1.7.0PHP &gt;=8.0

v1.11.0PHP &gt;=8.1

v1.12.0PHP &gt;=8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/707369cc916e0ea1aacbf077dcba464f611cef879f024d8944311a54a15224b3?d=identicon)[kbond](/maintainers/kbond)

---

Top Contributors

[![kbond](https://avatars.githubusercontent.com/u/127811?v=4)](https://github.com/kbond "kbond (142 commits)")

---

Tags

generatorchangelog

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/zenstruck-changelog/health.svg)

```
[![Health](https://phpackages.com/badges/zenstruck-changelog/health.svg)](https://phpackages.com/packages/zenstruck-changelog)
```

###  Alternatives

[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

585.6M563](/packages/shopware-core)[shopware/platform

The Shopware e-commerce core

3.4k1.5M3](/packages/shopware-platform)[symfony/asset-mapper

Maps directories of assets &amp; makes them available in a public directory with versioned filenames.

1678.8M232](/packages/symfony-asset-mapper)[craftcms/cms

Craft CMS

3.6k3.6M3.0k](/packages/craftcms-cms)[easycorp/easyadmin-bundle

Admin generator for Symfony applications

4.3k17.9M388](/packages/easycorp-easyadmin-bundle)[oro/platform

Business Application Platform (BAP)

645143.5k114](/packages/oro-platform)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
