phpro/grumphp
A composer plugin that enables source code quality checks.
v2.23.0
17M downloads/mo
#1204 most downloaded on Packagist
phpro/grumphp
What this package is like to depend on
Last release 1 months ago
22 Jul 2026
Ships fairly regularly
a new release about every 2 months
Rarely documented
notes for 11 of 112 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
113 releases · first in 2015
8 releases in the last 12 months
see the full history below
Release timeline
112 releases · Mar 2015 to Jul 2026Releases
latest 60 of 113-
v2.23.022 Jul 2026Release notes
Open source →What's Changed
- Bump actions/cache from 5 to 6 by @dependabot[bot] in #1226
- Read files from the worktree git dir instead of the shared repository by @veewee in #1227
- Bump composer/composer from 2.9.8 to 2.10.2 by @dependabot[bot] in #1228
- Bump actions/checkout from 6 to 7 by @dependabot[bot] in #1225
Full Changelog: v2.22.0...v2.23.0
-
v2.22.025 Jun 2026Release notes
Open source →Say hi to Mago 🦊
GrumPHP just made a new friend. Starting this release, you can run Mago straight from your hooks.
Mago is a PHP toolchain written in Rust. The name means "wizard," which fits: it does the work of four tools at once. A formatter, a linter, a static analyzer, and an architectural guard, all in a single fast binary. It's already showing up in places like Drupal.
We didn't bolt it on as one big task. Each part gets its own, so you turn on only what you want and configure them separately:
mago_formatkeeps your code style consistentmago_lintcatches style slips, smells, and likely bugsmago_analyzedoes the deeper work: types, control flow, logic errorsmago_guardenforces your architecture and layer rules
Format, lint, and analyze run read-only by default. When one fails, GrumPHP offers to re-run it with fixes applied, so you stay in control. Guard only reports, because you can't auto-fix an architecture problem (Mago won't pretend otherwise).
Add it to your project like any other tool:
composer require --dev carthage-software/mago vendor/bin/mago init
Then point your
grumphp.ymlat whichever tasks you want. Full setup and options live in the Mago task docs.The grump approves. Welcome to the family, Mago. 🧙🦊
What's Changed
- Add cache CLI options for eslint by @rodrigoaguilera in #1223
- Support git autosquash
amend!prefix in commit message task by @reynkonig in #1224 - Add Mago as task by @johnatas-x in #1216
New Contributors
- @rodrigoaguilera made their first contribution in #1223
- @reynkonig made their first contribution in #1224
- @johnatas-x made their first contribution in #1216
Full Changelog: v2.21.0...v2.22.0
-
v2.21.022 May 2026Release notes
Open source →What's Changed
- Bump actions/dependency-review-action from 4 to 5 by @dependabot[bot] in #1217
- Fix raw Console markup rendered by ConsoleSectionOutput::overwrite() by @mitrpaka in #1221
- Fix CI by @veewee in #1222
New Contributors
Full Changelog: v2.20.0...v2.21.0
-
v2.20.016 Apr 2026Release notes
Open source →What's Changed
- Cover more of Drupal's custom file extensions by @damienmckenna in #1203
- Add support for doctrine/collections 3.x by @a-treschilov in #1212
- Upgrade composer CVE + lock dependencies by @veewee in #1214
New Contributors
- @damienmckenna made their first contribution in #1203
- @a-treschilov made their first contribution in #1212
Full Changelog: v2.19.0...v2.20.0
-
v2.19.003 Feb 2026Release notes
Open source →What's Changed
- Bump actions/cache from 4 to 5 by @dependabot[bot] in #1201
- Require --raw diffs for gitlib by @veewee in #1207
Upgrading
❗ Requires re-initialization from git hooks
In the new version of our dependency
gitlib, you need to pass the--rawoption to thegit diffthat is being parsed by the pre-commit hooks. This means you'll need to change your git hook after upgrading:./vendor/bin/grumphp git:init
If you are using a custom hook, make sure to add the --raw parameter to git diff first:
DIFF=$(git -c diff.mnemonicprefix=false -c diff.noprefix=false --no-pager diff --raw -r -p -m -M --full-index --no-color --staged | cat)Full Changelog: v2.18.0...v2.19.0
-
v2.18.005 Dec 2025Release notes
Open source →What's Changed
- Fix installation link for deptrac by @codisart in #1190
- Add support for Symfony 8.0 by @Jibbarth in #1194
- Bump actions/checkout from 5 to 6 by @dependabot[bot] in #1195
- Improve SF 8.0 support by @veewee in #1199
New Contributors
Full Changelog: v2.17.0...v2.18.0
-
v2.17.021 Oct 2025Release notes
Open source → -
v2.16.014 Oct 2025Release notes
Open source →What's Changed
- Add
composer_validate_autoloadtask by @TravisCarden in #1186 - Update services.yml to remove suffixes for windows added by default from symfony/process by @apohutenumera in #1188
New Contributors
- @apohutenumera made their first contribution in #1188
Full Changelog: v2.15.0...v2.16.0
- Add
-
v2.15.028 Aug 2025Release notes
Open source →What's Changed
- Fix Security Checker Enlightn Allow List by @youwe-petervanderwal in #1180
- Bump actions/checkout from 4 to 5 by @dependabot[bot] in #1182
- Update phpcs.md by @pmysiak in #1183
New Contributors
- @youwe-petervanderwal made their first contribution in #1180
- @pmysiak made their first contribution in #1183
Full Changelog: v2.14.0...v2.15.0
-
v2.14.025 Jul 2025Release notes
Open source →What's Changed
- Mark 1.x as unsupported in SECURITY.md by @marcwrobel in #1176
- Change the task compiler logic to allow resolving of environment variables. by @veewee in #1177
New Contributors
- @marcwrobel made their first contribution in #1176
Full Changelog: v2.13.0...v2.14.0
-
v2.13.004 Jun 2025Nothing published for this version
-
v2.12.021 Mar 2025Nothing published for this version
-
v2.11.027 Feb 2025Nothing published for this version
-
v2.10.013 Dec 2024Nothing published for this version
-
v2.9.025 Oct 2024Nothing published for this version
-
v2.8.016 Sep 2024Nothing published for this version
-
v2.7.022 Aug 2024Nothing published for this version
-
v2.6.014 Jun 2024Nothing published for this version
-
v2.5.009 Feb 2024Nothing published for this version
-
v2.4.022 Dec 2023Nothing published for this version
-
v2.3.024 Nov 2023Nothing published for this version
-
v2.2.027 Oct 2023Nothing published for this version
-
v2.1.029 Sep 2023Nothing published for this version
-
v2.0.018 Jun 2023Nothing published for this version
-
v2.0.0-beta126 May 2023 pre-releaseNothing published for this version
-
v1.16.027 Apr 2023Nothing published for this version
-
v1.15.022 Dec 2022Nothing published for this version
-
v1.14.025 Nov 2022Nothing published for this version
-
v1.13.024 Jun 2022Nothing published for this version
-
v1.12.006 May 2022Nothing published for this version
-
v1.11.015 Apr 2022Nothing published for this version
-
v1.10.025 Mar 2022Nothing published for this version
-
v1.9.010 Mar 2022Nothing published for this version
-
v1.8.109 Feb 2022Nothing published for this version
-
v1.8.008 Feb 2022Nothing published for this version
-
v1.7.104 Feb 2022Nothing published for this version
-
v1.7.023 Dec 2021Nothing published for this version
-
v1.6.026 Nov 2021Nothing published for this version
-
v1.5.107 Feb 2022Nothing published for this version
-
v1.5.024 Sep 2021Nothing published for this version
-
v1.4.014 Jul 2021Nothing published for this version
-
v1.3.312 May 2021Nothing published for this version
-
v1.3.2no dateNothing published for this version
-
v1.3.104 Feb 2021Nothing published for this version
-
v1.3.017 Dec 2020Nothing published for this version
-
v1.2.027 Nov 2020Nothing published for this version
-
v1.1.030 Oct 2020Nothing published for this version
-
v1.0.025 Sep 2020Nothing published for this version
-
v0.22.003 Sep 2020Release notes
Open source →This tag was signed with the committer’s verified signature .
veewee Toon Verwerft
GPG key ID: BB5F005D6FFDD89E
Verified Learn about vigilant mode .
-
v0.21.027 Aug 2020Nothing published for this version
-
v0.20.004 Aug 2020Nothing published for this version
-
v0.19.124 Jun 2020Nothing published for this version
-
v0.19.005 Jun 2020Nothing published for this version
-
v0.18.127 May 2020Nothing published for this version
-
v0.18.025 Feb 2020Nothing published for this version
-
v0.17.210 Jan 2020Nothing published for this version
-
v0.17.120 Dec 2019Nothing published for this version
-
v0.17.029 Nov 2019Nothing published for this version
-
v0.16.229 Oct 2019Nothing published for this version
-
v0.16.122 Sep 2019Nothing published for this version