Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Composer Changelogs Laravel Package

pyrech/composer-changelogs

Composer plugin that displays changelogs for updated dependencies after composer update or install. It fetches release notes from GitHub, GitLab, and other sources so you can review what changed without leaving the terminal.

View on GitHub
Deep Wiki
Context7

Getting Started

pyrech/composer-changelogs is a Composer plugin, not a Laravel package — there is no service provider, no facade, and nothing to publish into config/. It hooks Composer's install/update events and prints a changelog summary (package, old → new version, and a link to the diff/release notes) after a dependency change. That is the entire surface area, and it is exactly what makes it useful on a Laravel team.

  • Install as a dev dependency at the root of the app: composer require --dev pyrech/composer-changelogs.
  • v2.2.0 raises the platform floor to PHP 8.1 (previously 7.4/8.0 were allowed) and adds support through PHP 8.5. Check php -v locally and every CI matrix entry before bumping; on 7.4/8.0 you must stay on ^2.1.
  • Composer 2.2+ will refuse to run the plugin until you allow it. Add to the root composer.json:
    "config": { "allow-plugins": { "pyrech/composer-changelogs": true } }
    
  • First real use case: run composer update in a branch, read the report at the end of the output, and open the diff links for anything crossing a major version. This is a five-second sanity check before you push a lock file that Dependabot/Renovate generated for you.
  • Where to look first: the README's configuration section (options live under extra.changelogs in the root composer.json) and composer list to see the command the plugin registers, so you can regenerate the report without doing another update.

Implementation Patterns

  • App repos: dev-only dependency, committed composer.lock. Treat the post-update output as a review checklist for lock-file PRs — the most common win is catching a transitive major bump that a bot PR hides behind "Bump the composer group".
  • CI vs. local: the plugin hooks post-install-cmd/post-update-cmd, so it runs on composer install in CI too. That's noise in pipelines — run production/composer installs with --no-plugins --no-dev, and leave the plugin for dev machines and the dedicated "dependency update" job.
  • Tokens for private repos and rate limits: configure GitHub/GitLab API tokens under extra.changelogs via environment variables in CI rather than committing them. Without a token, public GitHub API calls from shared runners get rate-limited and the report degrades to bare version numbers.
  • Package repos: if you maintain a Laravel package, install the plugin there too — the output is a ready-made draft for release notes and PR descriptions.
  • Workflow loop: monthly composer update branch → read the report → triage majors manually → merge patches blindly. Combine with composer outdated --direct for a second opinion on what is actually stale.
  • Dependabot/Renovate integration: paste the generated summary into the PR body (or a CI comment). Reviewers get the upstream changelog link without leaving GitHub.

Gotchas and Tips

  • v2.2.0 is a maintenance release, not a feature release. Dropping PHP < 8.1 is the only behavioural change; if you pin ^2.1 nothing breaks, and if you're already on 8.1+ the only visible difference is a quiet PHP 8.5 run (the release fixes a ReflectionProperty::setAccessible() deprecation). No new config keys, no changed output format.
  • Silent non-execution: if you see no changelog block, the usual causes are a missing allow-plugins entry, --no-plugins, -q/-n suppressing the output, or running composer install from an already-current lock (nothing changed → nothing to report). Check with composer update -vvv before assuming the plugin is broken.
  • Missing links ≠ no changes. When a token is absent, a package has no source/support URLs, or it is a private mirror/fork, the plugin falls back to plain version numbers. Don't read a link-less line as "unimportant".
  • Output volume: a large composer update on a mature Laravel app produces a very long table. Use the exclude/limit options under extra.changelogs to drop internal packages that publish no changelogs, and keep the report short enough that people actually read it.
  • No Laravel extension points. You cannot customise this via a service provider, event listener, or Artisan command of your own — configuration is entirely composer.json + environment. If you need a different format for CI, capture the Composer output into a file and post-process it rather than trying to hook the plugin.
  • Don't put it in a package's require — always require-dev. Libraries that ship it as a hard dependency force it on every consumer's Composer run.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package