All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- Compatibility with PhpStorm/IntelliJ 2025.* #2495
- "Copy Path/Reference" does not show the preview value #2497
- Must not start write action from within read action in the other thread #2498
- URN map generation during indexing #2499
- Cannot invoke "com.intellij.psi.PsiDirectory.getName() #2500
- Clear notifications for the process status of URN generation #2486
- Added array as a type in Data Model properties #2488
- Fixed Upgrade Compatibility Tool #2482 Replaced hardcoded Magento versions with dynamic fetching via Packagist API. Fixed UI icon references. Updated Run command.
- java.lang.Throwable: Assertion failed: Do not use PsiElement for popup model. See PsiTargetNavigator #2485
- Slow operations are prohibited on EDT #2486
- When creating a new model with a listing component grid, fulltext search is not working #2037
- Updated Gradle Intellij plugin to version 2 #2473 The project no longer requires the paid Ultimate edition of IntelliJ IDEA. It can now run seamlessly in the Community edition. Enabled code emulation directly within PHPStorm, eliminating the dependency on IntelliJ IDEA for this functionality.
- Custom theme couldn't be detected #2348
- Mage-os support #2081
- Workaround for "thread context was already set" exception #2082
- NewObserverDialog form typo #2087
- ActionUpdateThread.OLD_EDT deprecation on DumbAwareActions #2088
- Throwable: Stub index points to a file without PSI #1232
- Create an entity - The delete button is displayed in a new entity form #1268
- Create an entity - The translation function is not call on the buttons label #1273
- Covered possible NullPointerException in InjectAViewModelDialog.java #1213
- AWT events are not allowed inside write action #1271
- MapReduceIndexMappingException: java.lang.NumberFormatException: For input string: "" #1235
- Code generation of a Data Patch Boilerplate file #1188
- Code generation of an Observer from the context menu #1200
- Code generation of events.xml file #1189
- Config Scope directory inspection #1261
- EAV attributes code generators: Added default values of the group property #1259
- All code generators: Added constants visibility and class property types #1260
- UCT custom coming versions #1251
- Fixed wrong director(y|ies) generation for GraphQL resolver class #1192
- Fixed IndexOutOfBoundsException: CreateResolverClassQuickFix.applyFix(CreateResolverClassQuickFix.java:43) #1192
- Index out of range #1239
- Code generation of a Data Patch file with a Customer EAV attribute #583
- Code generation of a Data Patch file with a Product EAV attribute #527
- Code generation of a Data Patch file with a Category EAV attribute #569
- Code generation of Readme file #1133
- Code generation of GraphQl schema file #1123
- Optional generation of Readme file during the creation of a new module #1110
- Code completion for
system.xml
andconfig.xml
#1077 - Added easier navigation through plugins #1121
- Added inspection to check if type attr value in the virtual type tag attribute value exists #1176
- Added checks and detailed error messages during plugin activation #1181
- Fixed NullPointerException at ObserverDeclarationInspection.java:188 #1143
- Fixed IncorrectOperationException: Rebind cannot be performed for class PolyVariantReferenceBase #1173
- Fixed create an observer for an event doesn't work through the context menu #1166
- Fixed IOException: Invalid file name at ReportBuilder #1154
- Fixed IllegalArgumentException in NewModuleAction class #1150
- Fixed null data in ModuleIndex class #1132
- Fixed StringIndexOutOfBoundsException: GitHubNewIssueBodyBuilderUtil #1130
- Fixed ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 0 in OverrideClassByAPreferenceDialog #1129
- Fixed PatternSyntaxException: MagentoBasePathUtil.isMagentoFolderValid:35 for Windows styled dir path separator #1126
- Fixed NullPointerException in the OverrideTemplateInThemeAction.isOverrideAllowed for virtualFile.getCanonicalPath() #1125
- Fixed IllegalArgumentException: Argument for @NotNull parameter 'dataKey' must not be null in CompareTemplateAction #1117
- Fixed argument for @NotNull parameter 'project' must not be null in the OverrideClassByAPreferenceAction #1116
- Fixed New layout action doesn't accept valid layout names #1114
- Added raw plugin verifier configuration in #1065
- Fixed bug with the file separator on Windows OS (while saving plugin settings) in #1062
- Fixed bug with wrong text range for FilePathReferenceProvider.getReferencesByElement in #1063
- Fixed module files action group is accessible from the theme context in #1064
- Fixed bug with directory index is already disposed for Project in AllFilesExceptTestsScope.contains in #1080
- Fixed bug with DumbService cannot be created because container is already disposed in MagentoComponentManager.getComponents in #1081
- Code generation of
layout.xml
file #1021 - Code generation of
page_types.xml
file #1003 - Code generation of
crontab.xml file
#1001 - Code generation of
email_templates.xml
file #998 - Code generation of
sections.xml
file #997 - Code generation of
fieldset.xml
file #996 - Code generation of
view.xml
file #990 - Code generation of
indexer.xml
file #988 - Code generation of
mview.xml
file #987 - Code generation of
widget.xml
file #983 - Code generation of
extension_attributes.xml
file #982 - Code generation of
system.xml
file #978 - Code generation of
config.xml
file #976 - Code generation of
webapi.xml
file #971 - Code generation of
di.xml
file #970 - Code generation of
acl.xml
file #969 - Code generation of
routes.xml
file #958 - Images support for Copy Magento Path #1020
- Add/Replace an argument of a constructor via di.xml #1027
- Possibility to compare overridden template with the original one #1032
- Themes support of the UCT action execution #1029
- Configuration files support of the UCT action execution #1038
- Possibility to override a LESS file #1036
- Added references for the extended MFTF tests #974
- Improved RequireJS Mapping #1045
- Improved the override a theme file feature #1046
- Improved DocBlock code generator #1022
- Added the possibility to create a plugin for a method in the parent class #981
- Extended custom search scope (to exclude test files from search) with the
is integration enabled
flag #944 - Extended uiComponent highlighting with the
is integration enabled
flag #942 - Added "module" prefix to module name in
composer.json
#848
- Sort order of the context actions #1004
- Fixed the email template form title #956
- Placeholders on forms #1009 #1008 #1005 #962 #938
- Creating new module with the package name in the valid package directory on Windows OS #1013
- Inspection titles #1015
- Fixed ArrayIndexOutOfBoundsException #1018
- Generating UI form Delete button #1019
- Removed deprecated method FilenameIndex#getVirtualFilesByName #1037
- Removed deprecated method Function#getReturnType #1043
- Issue with wrong references resolved for a class if a proxy class is generated for it #1044
- Fixed Magento installation path suggestion #1047
- Issue during composer json generation if in dependent module version tag is not specified #972
- Fixed a simple-json library is absent in the distribution in #951
- Added custom search scope to exclude test files from search #read-more
- Added the ability to open all plugins in the Find Tool Window #read-more
- Added uiComponent registration syntax highlighting as JSON #read-more
- Added new Magento version support (2.4.4-beta4) for the UCT feature in #922
- Eliminated com.google.gson.JsonParser#parse usage in #928
- Eliminated LineMarkerXmlTagDecorator#checkDelete usage in #910
- Eliminated LineMarkerXmlTagDecorator#checkAdd usage in #909
- Enhanced errors showing for the new Magento 2 UI Component Form dialog window in #892
- Enhanced errors showing for the new Magento 2 UI Component Grid dialog window in #891
- Enhanced errors showing for the new Magento 2 DB Schema XML dialog window in #890
- Enhanced errors showing for the new Magento 2 Message Queue dialog window in #889
- Enhanced errors showing for the new Magento 2 Data Model dialog window in #888
- Enhanced errors showing for the new Magento 2 Models dialog window in #887
- Enhanced errors showing for the new Magento 2 Email Template dialog window in #886
- Enhanced errors showing for the new Magento 2 CLI Command dialog window in #885
- Enhanced errors showing for the new Magento 2 GraphQl Resolver dialog window in #884
- Enhanced errors showing for the new Magento 2 View Model dialog window in #883
- Enhanced errors showing for the new Magento 2 Cron Group dialog window in #882
- Enhanced errors showing for the new Magento 2 Cron Job dialog window in #881
- Enhanced errors showing for the new Magento 2 Controller dialog window in #880
- Enhanced errors showing for the new Magento 2 Block dialog window in #865
- Fixed overriding layouts and templates allows to select an incompatible theme in #930
- Fixed observer action visibility in #936
- Fixed general exception while accessing phpIndex.getAnyByFQN(classFQN) in #934
- Fixed ClassCastException for the GraphQlResolverIndex.getGraphQLUsages in #927
- Fixed plugin inspection does not work correctly in #902
- Fixed module name declaration inspection flags valid code in #898
- Fixed ClassCastException: PsiPlainTextFileImpl cannot be cast to class XmlFile in WebApiTypeIndex in #897
- Fixed IndexNotReadyException while opening a context menu in #896
- Fixed IllegalArgumentException: URLDecoder: Incomplete trailing escape (%) pattern in #894
- Fixed Throwable: AWT events are not allowed inside write action (UI Form) in #893
- Fixed Slow operations are prohibited on EDT when calling update method on the CreateAPluginAction in #862
- Fixed Throwable: when an IOException is thrown during new plugin generation in #860
- Fixed IndexOutOfBoundsException in case when entered no fields during ui form generation in #859
- Fixed NullPointerException when opening new cron job dialog for an invalid Magento 2 module in #856
- Fixed NoSuchElementException when creating new controller in #844
- Fixed Message Queue Connection does not match Naming Conventions in #854
- Fixed StringIndexOutOfBoundsException during UCT inspection via action execution in 852
- Fixed NullPointerException in the PluginDeclarationInspection.fetchModuleNamesWhereSamePluginNameUsed (calling toString on null) in #849
- Fixed ArrayIndexOutOfBoundsException when used Copy Path/Reference action on the requirejs-config.js file in #808
- Fixed dialog disposition issue in #811
- Fixed stack overflow error for line-marker providers in #813
- Fixed stub ids not found for key in index in #814
- Fixed failed to build require-js index in 815
- Fixed empty psi elements in the plugin inspections in #816
- Fixed empty psi element in module xml inspection in #817
- Fixed NullPointerException for the firstSortOrder.compareTo in #818
- Fixed invalid column types provided exception during db_schema.xml file generation in #819
- Fixed method designed for fully qualified names only in #830
- Fixed NoClassDefFoundError for com.intellij.lang.jsgraphql.GraphQLIcons in #850
- Extending of the built-in Upgrade Compatibility Tool #read-more
- Fixed NullPointerException for the InjectAViewModelAction in #800
- Fixed NullPointerException for a name attribute of the event tag and code style fixes in #799
- Fixed NullPointerException for PluginReferenceProvider in #801
- Added UI integration with the Adobe Commerce Upgrade Compatibility Tool in #625
- Added MVP version of the built-in Upgrade Compatibility Tool, read more in wiki
- Added XML file header include code template in #615
- Added Web API generation for the Magento Entity Creator in #597 and #607
- Added DI XML plugin type attribute inspections in #588
- Added Web API interface for service (PHP class) generation in #586
- Added DI XML type tag attributes inspections that related to the PHP/Magento types in #582
- Added DI XML preference tag attributes inspections in #578
- Added Web API XML service tag attributes inspections in #577
- Added an error handler to help user with a new bug issue creation on the GitHub side in #552 and #593
- Added Web API declaration generation in #548 and #595
- Added JS and CSS support for Copy Magento Path action in #536
- Changed the content of the generated plugin class in #612
- Changed using of hardcoded entity id value into the constant in all files generated by the Entity Creator in #606
- Fixed a casting exception in the XML index in #617
- Fixed a bug with plugin generation for complex non-primitive types in #609
- Fixed a bug with the namespace generation in a generated controller in #571
- Fixed a bug with directory validation for the generation dialogues in #565
- Fixed wrong entity data mapper file template position in #549
- Fixed incorrect data saving into table model within editing a table in #544
- Fixed an error when plugin or observer name is not set in #533
- Fixed incorrect duplication warning for disabled plugin in di.xml in #529
- New entity layout name and edit entity layout name inside it
Java.lang.IllegalArgumentException
During adding a new method into an existing plugin
- Directory validator
- Entity data mapper file template
- Code generation for a Magento Entity in #521
- Code generation for email templates in #350
- Reference navigation for disabled observers in
events.xml
in #439 - Line markers for test fixtures in #477
- Added ability to set the module sequence at generating new module #266
- ArrayIndexOutOfBoundsException in the New Module Action in #519
- Require restart on plugin update due to using native libraries
- Class completion doesn't display interfaces
- Fixed invalid check 'setup_version' in the etc/module.xml
- Reference navigation for classes under directories with underscores
- Fixed the array access exception when using copy path action
- Fixed null pointer exception on the copy path action
- Extended
.phpstorm.meta.php
for more convenient autocomplete #467 - Code generation for message queue in #411
- Code generation for declarative schema #453
- Inspection warning for disabled observer #432
- The action item to the context menu to copy file path in the Magento format #451
- The null pointer exception on the Create Module Dialog
- Overriding the interface that generates invalid php code
- Overriding a template from the base area
- Disabled the ability to create a plugin for a class that implements
\Magento\Framework\ObjectManager\NoninterceptableInterface
NoninterceptableInterface
case warning to the plugin inspection
- Fixed model generation with same names
- Fixed NPTR exception in theme directory view model action
- Fixed observer name validator
- Fixed plugin name validator
- Fixed the Inject a View Model dialog
- Skipped IDEA include tag causing error
- Fixed StringIndexOutOfBoundsException on PluginInspection
- Description for "Magento Routes XML" code template in #349
- Code completion and reference navigation for table names and column names in
db_schema.xml
file in #351 - Code completion and reference navigation for UI Component names in layout XMLs in #354
- Description for "Magento Layout XML" code template in #365
- Reference navigation for disabled plugins in
di.xml
in #373 - Code completion and reference navigation for Magento module names in
config.php
in #374 - Inspection warning when disabling a nonexistent plugin in
di.xml
in #382 - Description for "Magento Form Button Block Class" code template in #383
- Code generation for database models (model, resource model, and collection) in #392
- Code generation for data models (data interface and its implementation) in #399
- QuickFix for a missing GraphQL resolver defined in the the
schema.graphqls
file in #399
- Inability to save PhpStorm plugin settings after disabling the plugin with invalid field content in #317
- Field statuses in PhpStorm plugin settings not disabling if plugin is disabled in #320
- Missing linemarker for plugins to interface methods in #328
- Incorrect code completion for MFTF tags (stories, title, and description) in #364
- Argument name for types in
di.xml
not allowing underscores in #370 - Incorrect sort order validation in 'Create a New Plugin' code generation dialog in #389
- Code generation dialog titles in #363
- PWA pure function Live Template
- Library root for object manager autocomplete
- Line marker for interface plugin target
- Allowed theme override of non-magento composer themes
- Issue with
Magento Module Ui Grid Collection Data Provider Php
- Directories structure for the override in theme action
- Constant disabling plugin on startup if Magento not in the root
- New module generation for the default Magento version
- Inject a view model to a block and a reference block from the context menu action
- Override in Theme action
- Generate Listing UI component (including all required files)
- Generate Form UI component (including all required files)
- Code Inspection: ACL resource title
- Reference navigation and completion for
crontab.xml
- Reference navigation and completion for
menu.xml
- Adjusted module version to module.xml (considering the Magento version)
- Adjusted support of variadic arguments to plugin declaration inspection
- Fixed missing first letter name in
composer.json
- Fixed the CLI command namespace
- Fixed endless loop of notifications on launch
- Fix
composer.json
generation with module dependency that doesn't havecomposer.json
- Create a CLI command action
- Create a CRON group action
- Create a CRON job action
- Create a Controller action
- Code Inspection: Module declaration inspections in the scope of
module.xml
andregistration.php
- Code Inspection: GraphQL resolver in the scope of a schema file
- Fixed the positioning of all dialog popups
- Adjusted Magento root validation for consider
magento/framework
as a requirement - Adjusted Magento version validation RegExp to support patch versions
- The
create a plugin action
is accessible from the wrong context - Null pointer exception on the new module group
- RequireJS mapping support (reference navigation, completion)
- MFTF support MVP (reference navigation, completion)
- Line markers for navigation from a plugin class to a target class
- Line markers for navigation from a GraphQl resolver to schema and vice versa
- Create a plugin for a class public method
- Create a New Magento 2 Module action
- Create a Block action
- Create a View Model action
- Create a new Magento 2 module as a separate project
- Create an observer for an event action
- Create a GraphQL resolver action
- Override class by reference action
- Plugin class methods generation
- Code Inspection: Duplicated plugin Usage in di.xml
- Code Inspection: Plugin declaration in the scope of a Plugin Class
- Code Inspection: Warning regarding Cacheable false attribute in default XML
- Code Inspection: GraphQL resolver in the scope of a PHP Class
- Code Inspection: Duplicated Observer Usage in events XML
- Moved plugin configuration from
Settings > Preferences > Languages & Frameworks > PHP > Magento
toSettings > Preferences > Languages & Frameworks > PHP > Frameworks > Magento
- Fixed support of 202## 0.* versions of IDE's
- Extended navigation from PHP class to its XML declaration to support any configs
- Documented local environment set up for plugin development
- Fixed NullPointerException
- Added JavaScript reference contributor
- Support references for each part of FQN of PHP class, methods, constants
- Support reference from XML/JavaScript for module name
- Support reference from XML/JavaScript for module element path (e.g. Magento_Catalog::product/list/addto/compare.phtml)
- Added project detector
- Move configuration section to "Languages & Frameworks > Php > Magento"
- Remove deprecated elements
- Added Module name to configuration tooltip
- Fixed "Project disposed" exception
- added module name for "Goto configuration" labels
- WebApi routes
- nicer "Goto configuration" labels
- plugin settings (manual reindex, URN generation, plugin on/off)
- Context type completion for:
- Observers completion only for ObserverInterface impl in events.xml
- Blocks completion only for BlockInterface name in layouts.xml
- Preference configuration in di.xml
- Type hinting for object arguments in di.xml
- @api usage inspection in Module context
- ObjectManager usage inspection in Module context
- virtualType arguments resolution
- webapi.xml interface/method completion/references
- Support for old people using PhpStorm 8 or JDK## 1.7
- Added Reference and completion support for layouts
- block: class, before, after
- referenceBlock: name
- move: element, destination, before, after
- remove: name
- update: handle
- referenceContainer: name
- Line marker reference for php class to Layout configuration
- Added Line marker reference for php class/interface to DI configuration
- Added Line marker reference to plugins
- Added reference to configuration and observers (classes or virtualType)
- Added reference to observers from configuration
- Added reference to event dispatch from configuration
- Added reference and completion support for virtual types/classes/arguments in DI configuration
- Added reference support for classes/interfaces in DI configuration