Vai al contenuto
Home / Blog /Maho news / A week of practical fixes in Maho

A week of practical fixes in Maho

The weekly Maho roundup: address validation, exports, database encoding, payments and developer tooling.

Leggi in italiano

This was a week of practical fixes: checkout validation became more accurate, export tooling grew a useful first set of commands, and several edge cases in payments and installation were closed. The database encoding change deserves particular attention before an upgrade.

Maho’s goat mascot at work, between servers, a storefront on screen and development notes

Highlights

Country-aware address validation reaches checkout and the admin

PR #1481 by fballiano adds postcode and region validation based on the country. The address forms put the country first, show a country-specific postcode example and validate the format in the browser before submit. The same rule set is used in checkout, customer account and admin. A follow-up fix in PR #1506 by hirale keeps the customer and cart APIs from requiring a postcode in countries where it is optional.

CSV exports arrive in the CLI

PR #1503 by fballiano adds product, customer and category export commands, with CSV output, filters and a skip option. The default destination is var/export. This completes the CLI part of the related category import work and keeps the sample-data column names aligned.

MySQL and MariaDB move to utf8mb4

PR #1490 by fballiano changes the connection and existing tables from utf8mb3 to utf8mb4, allowing four-byte characters such as emoji to be stored. The first ./maho migrate rebuilds every table, so a large store needs a maintenance window. ./maho migrate --dry-run lists the conversions first.

PayPal no longer reports an already-placed order

PR #1501 by fballiano fixes the race between the PayPal approval webhook and the buyer-facing action. The action now loads the session quote correctly and takes the order lock before rejecting an inactive quote. The change was backported to 26.9 in PR #1502.

The installer handles translated apostrophes

PR #1488 by fballiano escapes translated PHP values before inserting them into JavaScript in the web installer. This fixes steps that stopped parsing when a translation contained an apostrophe, including the Italian language pack. The fix was backported to 26.9 in PR #1489.

The queue watchdog works on a fresh install

PR #1484 by fballiano gets the queue log path from Maho’s log-directory helper. That creates var/log when needed and honours a custom log directory, so the watchdog can start a worker on a fresh installation. The fix was backported to 26.9 in PR #1485.

Changelog

  • #1506 optional postcodes in customer and cart address APIs, by hirale.
  • #1483 DBAL 4.5 and typed schema editors, by fballiano.
  • #1504 Symfony MCP bundle 0.14 and percent signs in store names, by fballiano.
  • #1481 country-aware postcode and region validation, by fballiano.
  • #1503 product, customer and category CSV exports, by fballiano.
  • #1502 PayPal fix backport to 26.9, by github-actions[bot].
  • #1501 PayPal webhook/order race fix, by fballiano.
  • #1498 payment method instance cache fix, by fballiano.
  • #1495 Altcha and DaisyUI dependency updates, by dependabot[bot].
  • #1496 CI and Cloudflare action updates, by dependabot[bot].
  • #1494 icons, Symfony Console and PHP-CS-Fixer updates, by dependabot[bot].
  • #1493 search fix backport to 26.9, by github-actions[bot].
  • #1490 utf8mb4 migration, by fballiano.
  • #1489 installer fix backport to 26.9, by github-actions[bot].
  • #1488 installer apostrophe fix, by fballiano.
  • #1486 coupon usage report fix, by fballiano.
  • #1485 queue watchdog backport to 26.9, by github-actions[bot].
  • #1484 queue watchdog log path fix, by fballiano.

Editor's note.Text prepared with the help of AI and checked against the source before publication. It can still contain mistakes: if you find one, report it.Read the manifesto

Does your store still sell?

Tell us where you are starting from: we reply with a first assessment, no strings attached.

Ask for the store assessment