We are thrilled to announce the release of MODX Revolution 3.1—bringing enhancements and refinements that will take your content management experience to new heights. 🚀
With a focus on user experience, performance, and developer experience, MODX Revolution 3.1 will make your web projects more efficient and enjoyable than ever before.
Whether you’re a content editor, a site administrator, or a developer, MODX Revolution 3.1 has something exciting in store for you. Dive into a more intuitive and accessible manager interface, experience boosted performance with optimized S3 integration, and unlock new possibilities with an expanded API. From additional improved security features to enhanced grid functionalities, this release is packed with updates that streamline your workflow and amplify your productivity.
Get ready to explore the future of flexible content management with MODX Revolution 3.1.
Download Revolution 3.1.0 or Create a Revo 3.1.0 Cloud
Should You Upgrade to Revo 3.1? 🤔
TL;DR: Heck yes! But be smart and backup your site first, upgrade all your Extras, then test your site after upgrading. If something’s not right, you can quickly restore from your backup.
If you’re still staying with the 2.x release, that’s okay, but be sure to upgrade to its latest release. We’ll continue to support 2.8.x for now, but 3.1 (and beyond) is the present and future!
Importand Reminder Before You Upgrade 🤖
- Backup, because you’re not a rookie.
- Upgrade your Extras for a smooth ride.
- While you’re in the Extras Installer, do some spring cleaning by purging old package versions.
If you’re scratching your head about how to upgrade, we’ve got you. Hit up the MODX Garage & Speed Shop to get in touch with our team of MODX wizards. 🤝
Upgrade Your Website Today 🦾
Download MODX Revolution 3.1.0 or if you’re on MODX Cloud, just select 3.1.0 as your version when creating or upgrading your Cloud.
So, what are you waiting for? Let’s make your web experience more awesome, one update at a time! ✨
Gratitude and Acknowledgement
The release of Revolution 3.1 would not be possible without the support, input, and contributions of the people who choose to use MODX. However, we’d especially like to thank those individuals who contributed directly to the development of this release: Jim Graham, Mark Hamstra, Jason Coward, halftrainedharry, Ruslan Aleev, Thomas Jakobi, John Peca, Joshua Lückers, Bochkarev Ivan, Mat Dave Jones, Jay Gilmore, Sander Drenth, Sebastian G. Marinescu, bezumkin, Bakhtovar Gulomov, Bournwog, Bruno17, Christian Seel, Ivan Klimchuk, Jake Scaltreto, Jens Wittmann, Jo Lichter, Matic Šulc, Mikhail, Murray Wood, Pavel Golubev, Peter Bowyer, Roel Zeilstra, Romain Tripault, Semdevmaster, Warfork, YJ Tso, Yana, dimasites, krisznet, and Андрей.
Download Revolution 3.1.0 or Create a Revo 3.1.0 Cloud
New Features and Enhancements
User Experience and Accessibility
- Keyboard accessibility improvements (#16613)
- Reveal current username in User menu (#16579)
- Add Help! label to Menu Item (#16586)
- Enhance textarea TV type (#16553)
- Make sure left margin is consistent when expanding/collapsing tabs (#16406)
- Store last opened media browser path in browser history / URL parameters to re-open last path (#16394)
- Add names of elements in context menu (#16449)
- Prioritize exact matches in manager search results (#16388)
- Add resource alias in template picker as needed (#16361)
- Add checkbox TV input option to display inputs as switches/toggles (#16631)
- Reorganize main menu (#16530)
- Make date display consistent across manager components (#16604)
- Fix separator for menu item without children (#16647)
Security and User Management
- Improve generate password logic (#16521)
- New password generation method: send user email (#16519)
- Enhance usergroup permission handling and display (#16469)
- Native DKIM capability for emails (#16421)
- Clarify message when changing user passwords (#16502)
- Provide global control to set autocomplete="off" (#16225)
Performance and Optimization
- Fix max parser iterations for resources without a template (#16596)
- S3 Speed Up (#16438)
- Update uploadObjectsToContainer method (#16196)
- Big trash refactor (#16600)
Development and API
- Use modX::getInstance (#16571)
- Add OnContextInit System Event (#16552)
- Added proxy options for PSR-7 Service (#16539)
- REST service case insensitive sub level search (#16276)
- Add missing OnUserBeforeRemoveFromGroup and OnUserRemoveFromGroup events (#16423)
- PHP 8.4 compatibility updates (#16654)
- Replace use of deprecated date function in setup (#16627)
UI and Grid Improvements
- Add grid filtering via URL parameters to most grids in manager (#16369)
- Apply grid filtering persistence via URL parameters to most grids in the manager (#16369)
- Settings grid adjustments for Extras support (#16414)
- Add filtering for ACL policy and policy template grids (#16219)
- Fix and enhance UserGroup ACL Permissions Grids and Filtering (#16355)
Bug Fixes
User Interface
- Fix Dashboard Updates widget's display of the most recent modx version (#16608)
- Fix/improve messages grid permissions and styles (#16602)
- Fix TV Category not found in Template and TV editing panels (#16610)
- Fix grouping grid sorting in ACL grids (#16529)
- Fix element tree in property sets (#16599)
- Fix errors when hovering action column header (#16484)
- Fix horizontal overflow on Context Access grid (#16380)
- Fix active tab state for FC when disabling regions (#16401)
- Avoid errors and incorrect listings in Trash Manager (#16433)
- Fix undefined global variable $_SESSION in a CLI connector (#16422)
- Remove Unused Window Config for Lexicons Grid (#16392)
- Fix tab tracking error in package manager (#16354)
- Fix tab tracking issue for plugin panel (#16364)
- Fix user messages GetList processor (#16635)
- Fix saving resources when Date TV has no input properties (#16652)
Core Functionality
- Fix User Date of Birth Validation and Processing (#16620)
- Fix error suppression for PHP 8+ (#16615)
- Fully support comma-separated constraint lists in Form Customization (#16555)
- Fix preview thumbnailing for images with ampersand (&) in file name (#16609)
- Support dot followed by space in directories (#16578)
- Fix issues extending modSessionHandler and flushing all sessions (#16522)
- Add secondary regex option for transliterated file uploads (#16582)
- Make authority a unique index on modUserGroupRole (#16587)
- Fix Role Authority Editability (#16568)
- Restore ability to render multi-select listbox TV values by selection order (#16561)
- Fix return type for modResource::getTVValue() (#16567)
- Fix working with non-standard ports (#16541)
- Fix default value for modManagerLog.occurred column (#16526)
- Fix saving time for date TVs created in MODX 2.x (#16505)
- Fix recently edited resources (sub)query (#16460)
- Fix ability to view Manager Actions (#16473)
- Fix PHP Fatal error: Cannot declare class modTemplateVarInputRenderText (#16410)
- Fix ability to rename content field (#16444)
- Fix date TV parsing bug when time is hidden (#16398)
- Fix fatal error in package provider if the provider returns invalid xml (#16326)
- Fix parsing modifiers when encountering literal brackets (#16302)
- Fix parsing long template tags under some conditions (#16316)
File Management
- Fix S3 media sources by adding No Bucket Check (#16496)
- Improve file system error feedback (#16479)
- Skip files with specified extensions (#15479)
Other Improvements
- Resource icons in resource groups tree (#16099)
- Various lexicon typo corrections (#16559)
- Log SQL errors during context cache generation (#16508)
- Add ability to revert lexicon entries for any namespace (#16447)
- Add missing system setting for profile photo media source (#16515)
- Trim context setting keys on creation (#16500)
- Add session garbage collector check (#16448)
- Make "root" a reserved key for Contexts (#16475)
- Only show resource types in template picker and context menus if user has permission to create them (#15893)
- Remove deprecated fields from modResource (#16187)
- Optionally pin "installer-entry" to top (#16435)
- Change order of variables in config.inc.php (#16451)
- Harden Security/Profile/Get processor (#16437)
- Add guard-clause to clearDirty method (#16404)
- Update minimum PHP version to 7.4 and recommended version to 8.0.0 (#16405)
- Upgrade legacy modSessionHandler class references in settings (#16379)
- Modify (un)delete and (un)publish processors to respect syncsite setting (#16374)
- Add PHP 8.2 as CI target, include php compat checker in phpcs, and fix some minor compatibility issues (#16327)
- Suggest installing the PHP Internationalization extension (#16365)
- Remove unnecessary settings for uploaded files (#16349)
- Support multi select in MODx.Browser when multiSelect: true is provided (#16348)
- Cleanup legacy PHP version references (#16359)
Developer Notes
- Do not dynamically assign modProcessorResponse to modConnectorResponse (#16564)
- Use proper alias when not set explicitly in modRestController (#16395)
- Add unit test coverage for modRestService (#16381)
- Fix deprecation of dynamic properties (#16440)
- Add .nvmrc file targeting same build version as github workflow (#16478)
- Allow missing namespace in select areas via phpcs (#16470)
- Add missing namespaces partition to cache refresh process (#16431)
- Avoid deprecated notice in modAccessibleObject::checkPolicy (#16443)
- Fix return type in GetProcessor->initialize() (#16462)
- Fix class_key in modDocument constructor (#16452)
- Populate scriptProperties in Resource\Locks\Steal processor (#16418)
- Use Codecov in informational mode (#16397)
- Only post coverage comment when coverage changes. (#16358)
Please note that this release includes important updates to minimum PHP version requirements and introduces several new features and enhancements to improve user experience, security, and performance. Users can upgrade to this version without any special actions required.