eminos / statamic-changelog
Display recent git commits as a changelog in the Statamic control panel.
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:statamic-addon
pkg:composer/eminos/statamic-changelog
Requires
- php: ^8.3
- statamic/cms: ^6.0
- symfony/process: ^7.0
Requires (Dev)
- laravel/pint: ^1.27
- orchestra/testbench: ^10.0
- pestphp/pest: ^4.0
README
Display recent git commits as a changelog in the Statamic control panel.
Features
- Automatic changelog — reads directly from your project's git history, no manual entries needed
- Unread badge — shows a count of new commits since you last checked
- Per-user tracking — each CP user has their own "last seen" state
- Configurable filtering — limit commits, exclude merges, filter by path, author, or message pattern
- Statamic Git integration aware — one toggle to hide auto-commits from Statamic's Git addon
Screenshots
| Dark — badge | Dark — popover | Light — popover |
|---|---|---|
![]() |
![]() |
![]() |
Requirements
- PHP 8.3+
- Statamic 6.0+
- Git available on the server
Installation
composer require eminos/statamic-changelog
Configuration
Publish the config file:
php artisan vendor:publish --tag=statamic-changelog-config
This creates config/statamic-changelog.php with the following options:
General
| Option | Default | Description |
|---|---|---|
max_commits |
50 |
Maximum number of recent commits to display |
exclude_merge_commits |
false |
Filter out merge commits |
path_filters |
[] |
Limit to commits touching specific paths (e.g. ['app/', 'config/']) |
git_binary |
null |
Custom path to the git binary (null uses system default) |
Author Filters
Filter commits by author name. Supports partial matching (case-insensitive).
| Option | Default | Description |
|---|---|---|
authors.include |
[] |
Only show commits from these authors. Leave empty to show all. |
authors.exclude |
[] |
Hide commits from these authors. |
Message Filters
Filter commits by their commit message using regex patterns.
| Option | Default | Description |
|---|---|---|
messages.include |
[] |
Only show commits matching at least one pattern. Leave empty for all. |
messages.exclude |
[] |
Hide commits matching any of these patterns. |
Statamic Git Integration
| Option | Default | Description |
|---|---|---|
exclude_statamic_commits |
false |
Automatically exclude commits made by Statamic's built-in Git integration |
statamic_git_user |
null |
Override the git user name used to identify Statamic commits. When null, auto-detects from statamic.git.user.name config (defaults to Spock). |
When exclude_statamic_commits is enabled, the addon will:
- Exclude commits authored by the Statamic git user (default:
Spock) - Exclude commits with the message
Content saved
Examples
Hide Statamic auto-commits (simplest):
'exclude_statamic_commits' => true,
Only show conventional commits:
'messages' => [ 'include' => ['/^(feat|fix|refactor|perf|docs|test|chore)(\(.+\))?:/'], 'exclude' => [], ],
Only show commits from specific developers:
'authors' => [ 'include' => ['Emin', 'Jane'], 'exclude' => [], ],
Hide bot commits and dependency updates:
'authors' => [ 'include' => [], 'exclude' => ['dependabot', 'renovate'], ], 'messages' => [ 'include' => [], 'exclude' => ['/^chore\(deps\):/'], ],
Only show commits affecting app code:
'path_filters' => ['app/', 'config/', 'routes/'], 'exclude_merge_commits' => true,
Under the hood, path filters are passed directly to
git log -- <paths>, so filtering is handled natively by git and adds no overhead.
Usage
Once installed, a changelog icon appears in the CP top navigation. Click it to see recent commits with author, message, and relative timestamp. New commits since your last visit are highlighted with an unread badge.
The changelog automatically marks commits as seen when you open the dropdown.
How It Works
The addon runs git log on your project root to fetch recent commits. Per-user read state is tracked by timestamp and stored in storage/statamic/addons/changelog/seen.json — each user's last-seen timestamp is compared against commit dates to determine the unseen count. This approach survives git rebases and history rewrites.
Roadmap
Some ideas for future versions:
- Commit detail panel — click a commit to see the full diff or changed files
- Slack/email notifications — get notified about new deployments outside the CP
- Release grouping — group commits by tag/release instead of a flat list
- Commit avatars — show author avatars from Gravatar or GitHub
- Webhook trigger — fire a webhook when new commits are detected
- Custom commit parsers — support Conventional Commits with icons per type (feat, fix, etc.)
Have an idea? Open an issue — contributions are welcome!
Other Statamic Addons
Check out more from eminos:
| Addon | Description |
|---|---|
| Tabs | Add a Tab fieldtype — organize fields into tabs anywhere in your blueprints |
| Consent Manager | GDPR-compliant cookie consent banner with full control over tracking scripts and user privacy |
| Iconify | Browse and pick from 200,000+ Iconify icons directly in the control panel |
| Field Item Relationship | A fieldtype that lets you create relationships between individual field items |
| Cloudflare Cache | Automatically purge your Cloudflare cache when content changes |
| Group | Inline Group fieldtype — group fields together without affecting scope, with visibility conditions and optional header/toggle |
| Set Header Toggle | Add mini toggles to Replicator and Bard set headers for quick on/off controls |
| Element Picker | Pick any element on your site and generate a unique CSS selector for it |
Built by Emin at kiwikiwi for the Statamic community ❤️
License
MIT


