Skip to content

Releases: MahoCommerce/maho

25.1.0

14 Jan 11:59
fcb4c25
Compare
Choose a tag to compare

🎉🎉 Welcome to a new release of Maho, the new ecommerce platform you already know! 🎉🎉
First release of 2025, huge release already, fasten your seatbelts for this ride, cause we powered through the holidays, cramming ~150 commits into Maho 25.1, shaking the foundations of open source ecommerce once more!

Creating Maho is a massive effort that requires all the help possible, please consider joining our sponsorship program.
It will make all the difference in the world!
become a sponsor

Maho rocks! 🚀
https://mahocommerce.com
https://demo.mahocommerce.com

Foundation

Maho 25.1.0 is based on OpenMage 21.0-beta2 + all the patches merged in the main branch up to 13th Jan 2025.

🚀 New features and major improvements

Completely removed prototypejs from our frontend!

This doesn't really need an explanation right? PrototypeJS was an ancient javascript library that was at the base of the M1 platform but that became anachronistic and unsupported, its last release was in 2015... It had to go, but removing it from the frontend was a huge, huge effort that took years in rewriting and testing thousands of lines of code. We focused on the frontend first because it's for sure the most important part, backend will come later. Better security, modern code, lighter frontend with hundreds of KB of javascript saved at each request.


Converted all colors into variables for easy color scheme customization

Customizing the color scheme of your store was never this easy!

We've reviewed 10k lines of CSS, extracted and cleaned all colors and moved them into 25 CSS variables to allow you to have complete control, but also to make a another step forward in the modernization of Maho's frontend.




Added optional 2 Factor Authentication for backend

In 2025 security is no joke to anybody, 2FA was a requested feature since long time and we wanted Maho to have native support for that.

With Maho 25.1 your backend users can decide to enable 2FA, scan the autogenerated SVG QR code (no temporary image files are generated, for enhanced security and easier sysadmin maintenance), save, done.




Added Order Status color

Having a great support for modules was the key to the success of the M1 platform, but at Maho we believe that key functionalities should be bundled in the core, that's why we decided to add support for assigning a color to each order-status, something that a lot of stores were already using with 3rd party code.

Now, natively, with just a few clicks, store managers have an easier way to overview the orders, allowing for faster workflow and less possibility to forget to process an order.




Composer plugin v3

Bootstrapping Maho now just requires 3 lines of code, gone are the days of including bootstrap.php, Mage.php and then still it wasn't working.
Our composer plugin v3 enables full composer autoload for the whole platform, autoloading performance improvement and full support for Modman based modules.




Removed the ancient ExtJS and replaced with Maho Tree

ExtJs is a powerful tool, but because of licensing, the version that was bundled in the M1 platform for 10+ years was extremely obsolete. Here again we rethought the whole thing, looking for alternatives and deciding to create our own minimal js tree library based on standard HTML elements like details/summary. HTML/CSS are extremely powerful now and we should always try to leverage the standards as much as possible, this will assure better maintainability, security and performance.




New design for star rating

The previous implementation looked old and outdated, it was time for a complete overhaul. It's not a big deal in the great schema of things, but reviews are still important for ecommerce websites and the need for a quick, clear and modern interface to allow customers to leave a review was absolutely necessary.




Dashboard charts are now based on Chart.js

Dashboard charts relied on a 3rd party server for many, many years, in the M1 platform. That is a problem on multiple levels, what if that server goes down? Also, in order to generate the charts, all the data was obviously sent to that service and... well.. let's say we don't want to leak our precious sales data. At Maho we are dedicated at tackling these infrastructural problems and here we are again, with a local-only chart solution for the backend dashboard, modern, interactive and safe.




Added "Cron Jobs" mask to "System -> Tools"

For many years the M1 platform had a few modules to see and modify cron jobs, we think such a configuration is better held via code, but it's extremely helpful to be able to see which cron jobs are running, for how long and if there are any errors. This is now possible without having to install any 3rd party module.


🐛 Minor bugfix, improvements and changes

  • Fixed target file format conversion for images (#79)
  • Added $this->getResponse()->setBodyJson() method (#85)
  • Backend: Rewrote file uploader without flow.js (now removed from the repo) and prototype.js (#91)
  • Backend: Rewrote WYSIWYG without PrototypeJS (#87)
  • Backend: Removed double span element from HTML buttons
  • RWD: Removed double span element from HTML buttons
  • RWD: Removed DOM element span.swatch-label from layered navigation
  • Frontend: Restyled swatches with flexbox, also made them slightly bigger to respect touch-point-sizing
  • Frontend: Removed a few "go back" and "change" links from checkout for better readability
  • Removed obsolete install scripts (#65)
  • Fixed bug with Mage::getModel('core/url')->getUrl('', ['_current' => true, '_query' => false]) (#82)
  • Fixed configurable swatches undefined array key warning (#80)

🛠️ Technical updates

  • Updated PHPStan to 2.1
  • Updated Rector to 2.0

And many more, be sure to check the full changelog.

24.11.0

25 Nov 17:03
043fd88
Compare
Choose a tag to compare

🎉🎉 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!
become a sponsor

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

Maho 24.11 new frontend

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...
Read more

24.9.0

19 Sep 11:29
Compare
Choose a tag to compare

🎉🎉 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 and skin folders now live inside the public directory, it is now mandatory to set the document root of your web server (Apache, Nginx, Caddy or FrankenPHP) to public.
    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 for urn:Magento and urn:OpenMage and replace all occurrences with urn: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' {} +
  • 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 with mahoErrorReport()

New features

Minor bugfix and changes

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