NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #2587 most downloaded on Packagist
CakePHP IdeHelper Plugin to improve auto-completion
Last release today
07 Oct 2026
Ships on a steady schedule
a new release about every 2 weeks
Rarely documented
notes for 12 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
205 releases · first in 2017
Detect typed FIELD_* constants in EntityFieldTask by @jorisvaesen in #479
Full Changelog: 2.22.6...2.22.7
Support keyed collection template annotations by @josbeir in #477
Full Changelog: 2.22.5...2.22.6
One column per quarter.
Prevent PHP-Parser token compatibility crashes when PHP_CodeSniffer 4 is loaded first on PHP < 8.5 - #474
Full Changelog: 2.22.4...2.22.5
Do not register the synthetic _joinData association on the junction table - #473
Full Changelog: 2.22.3...2.22.4
Fixed MissingTableClassException when annotating entities of tables with a belongsToMany association ( #471 ).
Fixed MissingTableClassException when annotating entities of tables with a belongsToMany association (#471).
bin/cake annotate models aborted with Table class for alias TagsJoin could not be found. on any app that runs allowFallbackClass(false), which the CakePHP application skeleton does by default. The synthetic association carrying the _joinData type info now gets its target table and foreign key passed explicitly, so the table locator is no longer consulted for the generated alias.
Full Changelog: 2.22.2...2.22.3
Fix paginate() controller annotation to use \Cake\Datasource\Paging\PaginatedInterface instead of \Cake\Datasource\ResultSetInterface . Controller::pa
paginate() controller annotation to use \Cake\Datasource\Paging\PaginatedInterface instead of \Cake\Datasource\ResultSetInterface. Controller::paginate() never returned a result set, so PHPStan reported the whole paging API (currentPage(), pageCount(), totalCount(), items(), ...) as undefined methods. Existing annotations refresh with one bin/cake annotate controllers run.Full Changelog: 2.22.1...2.22.2
Fix duplicate annotations on CRLF (Windows) source files. Repeated annotate runs no longer stack duplicate doc-blocks or tags - emitted doc-block line
annotate runs no longer stack duplicate doc-blocks or tags - emitted doc-block lines now follow the source file's own line endings, so runs stay idempotent.Full Changelog: 2.22.0...2.22.1
Add support for sebastian/diff 9.x
Added configurable property type annotations through IdeHelper.propertyTypeMap . This allows apps to add more specific PHPDoc types for declared prope
IdeHelper.propertyTypeMap. This allows apps to add more specific PHPDoc types for declared properties such as $helpers, $components, $actsAs or $paginate without narrowing the native property type and breaking BC. Generated annotations use regular multiline property PHPDoc blocks and preserve existing indentation, including tabs.Recommended config for CakePHP 5.4+:
'IdeHelper' => [
'propertyTypeMap' => [
'actsAs' => 'array<string, mixed>',
'helpers' => 'array<int|string, string|array<string, mixed>>',
'components' => 'array<int|string, string|array<string, mixed>>',
'paginate' => 'array<string, mixed>',
],
],Full Changelog: 2.20.0...2.21.0
Entities: pure virtual fields now get a @property-read tag instead of @property . A field counts as read-only when it has a _get...() accessor but no
@property-read tag instead of @property. A field counts as read-only when it has a _get...() accessor but no backing DB column / association and no matching _set...() mutator. Writable fields (real columns, associations, or a _get/_set pair) keep the plain @property tag.Full Changelog: 2.19.3...2.20.0
Helper annotations now emit a generic extends tag so PHPStan stops reporting missingType.generics on app and plugin helpers. It is gated by a reflecti
extends tag so PHPStan stops reporting missingType.generics on app and plugin helpers. It is gated by a reflection check on the base View Helper, so it self-disables on cores where the base helper is not generic and never emits an over-specified generic on a non-generic parent.Full Changelog: 2.19.2...2.19.3
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →