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.
What this is: pyrech/composer-changelogs is a Composer plugin, not a Laravel package. It hooks the composer update lifecycle and prints the changelog entries and diff links for the packages that were just upgraded. It has no service provider, no config file, no runtime request path, and no database footprint. For a Laravel shop this is developer tooling — closer to a linter than to a dependency.
Architecture fit: Excellent, precisely because it is inert. It sits in require-dev (or as a global Composer binary) and never loads during application boot, queue workers, or HTTP requests. There is no coupling to Laravel's container, no middleware, no publishable assets. Adoption is reversible with a single composer remove. The only structural concern is that Composer plugins execute arbitrary code inside the Composer process, which puts it in the supply-chain blast radius of every composer install/update on a machine where it is globally installed.
Integration feasibility: Low effort, one-time:
composer require --dev pyrech/composer-changelogscomposer.json (config.allow-plugins) — required since Composer 2.2; without it, Composer silently declines to run the plugin and the team sees nothing, which is a quiet failure mode worth documenting in the onboarding runbook.Technical risk:
composer update on a ^2.1 constraint will resolve to a version it cannot run. This is a real (if narrow) breaking change and argues for a pinned constraint rather than a floating one.ReflectionProperty::setAccessible(), which means the plugin reads private state out of Composer's object model rather than using a public API. That is an inherent fragility: every Composer or PHP release is a potential break, and the plugin's health is partly a function of Composer's internal churn.composer update. That introduces egress requirements, latency, and rate-limit behaviour into a command developers already perceive as slow.Key questions:
composer-plugin-api versions does 2.2.0 declare? Does it still support the Composer 2.x floor our CI images run?PHP_VERSION_ID, or does it hard-require 8.5 behaviour?composer update?Stack fit: Framework-agnostic, so it fits every Laravel version that is itself on PHP ≥ 8.1 — Laravel 10, 11, 12 all clear the new floor comfortably. The only incompatible cohort is legacy Laravel 8/9 estates pinned to PHP 8.0. It also fits non-Laravel PHP services in the same monorepo, which is a mild argument for installing it globally rather than per-project.
Migration path: From v2.1.x this is a no-op release — no configuration changes, no API changes, no output format changes. The only decision is the PHP floor. Teams on PHP 8.0 either upgrade PHP (worth doing regardless) or pin ^2.1 and accept that they stop receiving fixes. There is no intermediate state and no code to change.
Compatibility checks before rollout:
config.allow-plugins is set in each consuming composer.json, or in the global Composer config for machine-level installs.composer-plugin-api constraint.Sequencing:
^2.2 in one pilot repository; verify output on a real composer update.allow-plugins requirement and the token env var in the developer setup guide.Maintenance: Negligible on our side; the cost is entirely in tracking upstream. This is a small, single-maintainer project with an irregular release cadence — the PHP 8.5 work here is a compatibility patch, not a feature investment, which is a good sign of health but also an indicator that feature velocity is low. We should expect to revisit it roughly once per PHP minor release.
Support: Community-only, no SLA, no vendor. Acceptable for a dev-time convenience tool; the fallback (read the changelog on GitHub manually) is always available, so there is no hard dependency on it working.
Scaling: Scales linearly with developer count and with the number of packages in a given update. Two pressure points at scale: (a) a large monorepo composer update touching dozens of packages produces very long terminal output, which can bury the signal; (b) unauthenticated API calls will hit rate limits in shared-IP CI environments or on teams doing frequent full updates. Both are mitigated by token configuration and by not running it in CI.
Failure modes:
allow-plugins — most likely failure, and the least obvious, since the command simply produces no output and looks successful.^2.1 constraint silently resolving to 2.2.0 on a PHP 8.0 machine is the concrete breakage this release can cause.Ramp-up: Effectively zero for developers — it is install-and-forget, and the output is self-explanatory. The onboarding cost is one paragraph in the setup guide covering the allow-plugins entry and the optional token. The real ramp-up burden sits with whoever owns developer tooling, who needs to know that this package's compatibility surface tracks PHP and Composer releases and that the constraint should be pinned rather than floated.
How can I help you explore Laravel packages today?