Zen Cart
Open-source online store management system
A twenty-year-old PHP cart still shipping, entirely on admin polish and PHP 8 hygiene.
◆Recent moves
- 8mo ago
Zen Cart 2.2.0 alpha shows the MFA secret during setup
The opening build of the 2.2.0 line, and the most user-facing item is displaying the MFA secret during two-factor setup — a small fix that makes enrolment work without a QR scanner. The rest is familiar admin maintenance: image sizing moved from HTML attributes to CSS, a banner manager that stops selecting a non-existent banner, null gift-voucher balances treated as zero, and plugin-manager cleanup suppressed for uninstalled plugins.
View source ↗ - 1y ago
Zen Cart 2.0.0 RC2 retires the Square module
A candidate build mixing accessibility work with payment cleanup: aria-labels on select blocks, date-of-birth validation, a shipping estimator message when no rates are available, and the deprecated Square module removed. The SQL upgrade fix for installations with table prefixes matters most to anyone actually running the migration.
View source ↗ - 1y ago
Zen Cart 2.1.0 alpha1 refactors shipping modules
The first 2.1.0 build, notable for a shipping-module refactor and for making template_settings.php viewable in the admin. It also retires Netscape and Internet Explorer patches from the country pulldown — a good illustration of how much legacy this codebase is still shedding.
View source ↗ - 1y ago
Zen Cart 2.1.0 alpha2 is cosmetic admin cleanup
Icon alignment in product listings, duplicated quotes in the banner manager, language-file typos, and editor configuration. Two fixes have real effect — clearing the cart when an admin switches customer accounts, and adjusting attribute pricing only when products are actually priced by attributes — but the build as a whole is polish.
View source ↗ - 1y ago
Zen Cart 2.1.0 beta1 drops legacy language files for plugins
The beta tightens the plugin contract by ending legacy language-file support for zc_plugins, and fixes PHP warnings in the table shipping module when rates are percentage-based. An mb_string polyfill and a position column in the banner manager round it out — the same mix of modernisation and admin ergonomics the whole 2.x cycle runs on.
View source ↗