Looking to hire Laravel developers? Try LaraJobs

laravel-client-changelog maintained by vepora

Description
Auto-generate a client-facing changelog from git commits via AI — delivered as a public page and email digest.
Author
Last update
2026/05/02 21:05 (dev-main)
License
Links
Downloads
0

Comments
comments powered by Disqus

Laravel Client Changelog

Auto-generate a client-facing changelog from git commits via AI — delivered as a public page and email digest.

Every time you deploy, run one command. The package reads your recent git commits, strips the technical noise, and uses AI to produce plain-English summaries grouped into New Features, Improvements, and Fixed. Results are stored in your database, shown on a public /changelog page, and optionally emailed to your clients on a schedule you control.

Features

  • AI-powered translation — turns feat(auth): add oauth2 pkce flow into "Users can now sign in with Google and GitHub."
  • Multiple AI providers — Groq (free, default), OpenAI, Claude, Gemini, Grok
  • Public changelog page — zero-config timeline UI built with Tailwind CDN
  • Email digest — per-deploy, daily, or weekly batching
  • Pause/Resume — freeze generation before a sprint and catch up on resume
  • Queue-friendly — dispatches a job by default; --sync for synchronous use

Requirements

  • PHP 8.3+
  • Laravel 11, 12, or 13
  • A queue worker (or use --sync)

Installation

composer require vepora/laravel-client-changelog

Publish the config and run migrations:

php artisan vendor:publish --tag=changelog-config
php artisan migrate

Add your AI key to .env:

CHANGELOG_AI_PROVIDER=groq   # groq | openai | claude | gemini | grok
CHANGELOG_AI_KEY=your-key-here

Usage

Generating a changelog entry

Call this at the end of your deploy script:

php artisan changelog:generate

Options:

Flag Description
--sync Process synchronously (no queue)
--no-ai Skip AI; store raw commits directly (useful in CI)

Pause & Resume

Freeze changelog generation before a planned maintenance window or sprint:

php artisan changelog:pause --until=2026-05-10 --reason="Refactor sprint"
php artisan changelog:resume --send-accumulated   # sends a catch-up digest
php artisan changelog:resume --discard            # drops accumulated commits

Status

php artisan changelog:status

Outputs a table showing pause state, last entry, pending digest count, and notify mode.

Configuration

// config/changelog.php

return [
    'notify' => [
        // per_deploy | daily | weekly
        'mode'     => env('CHANGELOG_MODE', 'daily'),
        'send_at'  => '18:00',
        'timezone' => env('CHANGELOG_TZ', 'UTC'),

        'skip_if_no_changes' => true,

        // array of email addresses
        'recipients' => [],
    ],

    'ai' => [
        // groq (default, free) | gemini | claude | openai | grok
        'provider' => env('CHANGELOG_AI_PROVIDER', 'groq'),
        'key'      => env('CHANGELOG_AI_KEY'),

        // groq: llama-3.3-70b-versatile
        // gemini: gemini-2.0-flash
        // grok: grok-3-mini
        // claude: claude-haiku-4-5-20251001
        // openai: gpt-4o-mini
        'model' => env('CHANGELOG_AI_MODEL', 'llama-3.3-70b-versatile'),

        // professional | friendly
        'tone' => 'professional',
    ],

    // Commit types silently dropped before AI sees them
    'ignore_types' => ['chore', 'test', 'tests', 'docs', 'ci', 'style', 'build'],

    // URL segment for the public changelog page
    'page_url' => 'changelog',

    // Laravel middleware applied to the page — empty = public
    'page_middleware' => [],
];

Notify modes

Mode Behavior
per_deploy Sends an email immediately after changelog:generate
daily Batches entries and sends once per day at send_at
weekly Batches entries and sends once per week on Monday at send_at

For daily and weekly, add the Laravel scheduler to your crontab:

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

Customising the views

php artisan vendor:publish --tag=changelog-views

Views are published to resources/views/vendor/changelog/.

AI Providers

Provider Env key Default model Free tier
Groq CHANGELOG_AI_KEY llama-3.3-70b-versatile Yes
OpenAI CHANGELOG_AI_KEY gpt-4o-mini No
Claude CHANGELOG_AI_KEY claude-haiku-4-5-20251001 No
Gemini CHANGELOG_AI_KEY gemini-2.0-flash Yes (quota)
Grok CHANGELOG_AI_KEY grok-3-mini No

Set CHANGELOG_AI_PROVIDER and CHANGELOG_AI_MODEL to override defaults.

Changelog

See CHANGELOG.md.

License

MIT — see LICENSE.