Releases: MahoCommerce/maho
24.11.0
🎉🎉 Welcome to a new release of Maho, the ecommerce platform you already know! 🎉🎉
Remember our last release two months ago?
Well, time must be an illusion since we managed to pack two years' worth of changes (about 300 commits) into this new one!
For this reason we had to condense these release notes to spare you from a document that would make Lord of the Rings seem short.
🚨⚠ DISCLAIMER ⚠🚨
Maho is a big shift in the M1 paradigm so please, for the time being, handle it with care. As much as we'd love to see production stores going live on Maho, be sure to test everything very carefully.
Before starting, a word about the future
We had to remove a major new feature from this release, the global attribute editor, Justin worked extremely hard on this (and not only on this ❤️), but the task is huge, it will bring a whole new set of features to our platform, and it simply requires a bit more time. We're confident that it will be ready for Maho 25.01 along with many other revolutionary changes, we aim for Maho 25.01 to have the first prototypejs-free frontend since the beginning of the M1 platform!
This massive effort requires all the help possible - please consider joining our sponsorship program. It will make all the difference in the world!
Maho rocks! 🚀
https://mahocommerce.com
https://demo.mahocommerce.com
Foundation
Maho 24.9.0 is based on OpenMage 21.0-beta2 + all the patches merged in the main branch up to 24th Nov 2024
Visible from outside: changes to the frontend theme
- Completely removed jQuery,
- All icons are now SVG
- Converted all font-size to rem for enhanced accessibility
- Removed google font and replaced it with Tailwind default font rule
- Removed elevateZoom and rewrote basic zoom functionality in vanilla js
- Removed slideshow js and rewrote them in modern CSS + basic vanilla JS
- Avoided content layout shift
- Removed modernizr.js
- Removed imagesloaded.js completely and rewrote funcionality with modern js, added lazy load to image gallery in product view
And many, many other minor improvements.
🚀 New features and major improvements
Added back/forward cache support for CMS/category/product pages
This will allow extreme performance improvements when using the back/forward buttons, better pagespeed scores, and could lead to big bandwidth/load saving on your infrastructure. (read more)
Added support for AVIF images
AVIF is a modern, open-source image format that offers superior compression efficiency while maintaining excellent image quality. It's particularly important because it supports advanced features like HDR, wide color gamut, and transparency, necessary to highlight the characteristics of specific type of products on your store. (example)
Added possibility to set a file format (default WebP) for all images processing (resize, thumbnails etc)
Convert all your catalog to WebP with a single click. (read more)
SEO: Added automatic hreflang tag
This starts an effort to bring a complete set of SEO related tools to Maho. (read more)
From now on, multi store website will be linked across languages so that search engines will understand the language correlation between pages, out of the box.
Removed Mage_Persistent and improved cookie handling
Remember the "remember me"? Well, this change removed the ancient Mage_Persistent module, consolidate and merged all templates, cleaned up a lot of code and completely rewrote the cookie management for session, you may not see the difference with your naked eye, but you will know it will work so much better.
Replaced js calendar by Mihai Bazon with flatpickr with lazyload
The javascript library used for dates in all M1 installation was extremely old (last release was almost 20 years ago!) and it had to go, and it's now replaced with a lightweight, moderd looking and modernly coded one called flatpickr.
Massive improvements to Maho's autoloaders
The idea at the base of Maho itself was the new set of autoloaders that allow all of the platform to live inside composer's vendor
folder, like any other modern framework would and that was never possible in the Magento world. With this PR Justin took this concept and made it 10 times better.
Improved jstranslator.xml capabilities
Jstranslator gives you the possibility to add translation strings to frontend's javascript code, without having to write any javascript. It's a great feature but it needed some love. This new version separates frontend/backend strings, allows to define a string relatively to a module, scope or if a specific javascript file is included in the target page. (read more)
Added option to redirect to register page during checkout
When your customer registration form is too long, it's probably not the best to have it inside the checkout procedure, with this new option you can decide that your users will be redirected to the customer registration page if they choose to register during the checkout phase. Simple, but effective.
Added MahoCLI command to create a new command
When developing an ecommerce project, you will find yourself developing some quick command line scripts, you could already integrate them into Maho CLI but today this is easier than ever with ./maho create-command
.
Introduced ./maho health-check
and migrate to Maho guide
You asked us for a migration guide and we delivered, but we thought we needed something more, that's why we created ./maho health-check
, which will help you keep your project in good health, but also will ./maho health-check
that a project could have.
❗ Major changes you need to know
- [Products count is now disabled by default in layered navigation](https://gith...
24.9.0
🎉🎉 Welcome to the first public release of Maho, the new ecommerce platform you already know! 🎉🎉
This might sound odd, and that's intentional 😉 Maho is part of the M1 ecosystem, started in 2008 with Magento1, then followed by OpenMage and now here we are. A platform you're already familiar with, but brand new in many many aspects!
Maho wants to provide a forward-thinking approach, fun for developers, a modern environment but keeping our strong roots of the M1 platform.
We have about 250 commits for this release 🤯, ranging from minor tweaks to major feature additions, so... buckle up! And notice that we had to omit many minor details for brevity but we hope to have highlighted everything important.
🚨⚠ DISCLAIMER ⚠🚨
Maho is a big shift in the M1 paradigm so please, for the time being, handle it with care. As much as we'd love to see production stores going live on Maho, be sure to test everything very carefully.
Maho rocks! 🚀
https://mahocommerce.com
Foundation
Maho 24.9.0 is based on OpenMage 21.0-beta2 + all the patches merged in the main branch up to 18th Sep 2024
The new paradigm
Three main pillars set Maho apart from any other M1 based platform:
- Project structure: no duplicates files from the core is your project folder, like any other modern PHP project, frameworks and libraries live only in the
vendor
folder, thanks to composer, our new composer-plugin and our completely rewritten autoloaders.
This means a clean project structure that only contains YOUR code and less possibilities for inexperienced developers to "patch the core". - Built in CLI tool ./maho: with inspirations from Laravel Artisan, Laravel starter project and the great n98-magerun (three extremely important pieces of software both historically and in the current open source landscape) we decided to create our own CLI tool, make it as complete as possible, and bundle it. In the meanwhile we also made it expandable so that you can build your own commands.
media
,js
andskin
folders now live inside thepublic
directory, it is now mandatory to set the document root of your web server (Apache, Nginx, Caddy or FrankenPHP) topublic
.
This may be a bit more uncomfortable on some shared hostings, but it's needed to keep things simpler and, most importantly, more secure.
Important things you must know
- API: Adjusted WSDL attributes for Maho branding
If your project has custom APIs you've to search forurn:Magento
andurn:OpenMage
and replace all occurrences withurn:Maho
, to do that you can run these commands- on Linux
find app -type f -exec sed -i 's/urn:\(Magento\|OpenMage\)/urn:Maho/g' {} +
- on MacOS (be sure to have
gsed
installed)find app -type f -exec gsed -i 's/urn:\(Magento\|OpenMage\)/urn:Maho/g' {} +
- on Linux
- PHP 8.2 minimum: more performant end secure, this change also allows us to remove a lot of polyfills from our composer.json, slimming down your final vendor folder but also ensuring that you use native PHP functionalities instead of the less performant 3rd party polyfills
- The ancient Scriptaculous was completely removed, thanks to html5sortables and the creation of MahoAutocomplete and a basic vanilla js version of Prototype Effect
- Removed prototypejs/window.js (along many unused prototypejs subfiles) in favor of the new vanillajs/HTML5 maho-dialog.js
- The
/errors
folder doesn't exist anymore and it's replaced withmahoErrorReport()
New features
- Maho supports SVG format for product image placeholders
- Added ability to view orders paid with removed payment method without breaking
- TinyMCE WYSIWYG editor
- TinyMCE is now optional and not required by the core anymore
- The dependency has been moved to the Maho starter project. It was made this way so that you can remove it quickly and safely from your projects.
- In the meanwhile we also fixed security vulnerability CVE-2024-29881.
- Added support for PHP 8.4, but also added PHP 8.3+ #[\Override] to all our codebase
Minor bugfix and changes
- Fixed a bug with swatches shown even for out-of-stock variants
- Removed obsolete Mage_All.xml and references to this file
- Adminhtml: Fixed active menu highlighting
- Web installer was simplified a restyled, removing a lot of unused files from the skin/install folder and some installation options that are no longer needed in 2024 (use_rewrites, enable_charts, skip_url_validation)
- phtml files now use short echo tags
<?=
- Huge cleanup of old/unused files throughout the whole project
- Mage_Backup, Mage_Captcha and Mage_Sendfriend were removed, together with SCSS in RWD/admin themes
- In the backend, Magento1 theme is no longer available and the icons next to the page name were removed
- Redis modules are no longer required but only suggested
Upgrade from Magento1 or OpenMage
At the moment we don't have an upgrade script or an upgrade guide, we will work on both of them very soon.
Be sure to check all of the documentation we have at https://mahocommerce.com/getting-started