4 min readAug 22, 2026by jakub
Changelog
Current version: 1.0.0
[1.0.0] - 2026-08-22
First release. Everything below describes the module as it ships; nothing preceded it, so there is nothing here that was changed or removed.
Packing
- Three-dimensional packing of the cart into the merchant's own packaging catalogue, built on
dvdoug/boxpacker, with rotation, stacking and weight limits. - Packaging catalogue with admin grid and form, seeded with nine common European formats. Containers and trailers install inactive: the packer minimises the number of packages, and an active container will happily swallow a mid-sized order at seven per cent full.
- Packing profiles - fragile, this side up, bearable load, courier allowed - set once and
assigned to many products.
Courier allowedis enforced at placement time, not merely recorded: a product a courier may not carry is never packed into courier packaging. - Stack pressure is cumulative, so several individually light items cannot together exceed a bearing item's rating.
- Product attributes for packing length, width, height and profile. Magento Open Source ships no product dimension attributes of its own.
- Volumetric weight, calculated per package and then summed, the way carriers bill it.
- Packaging is selected by size first, with
Sort orderbreaking ties between packaging of the same size. Sort order is not an override: a newly created bulk carton must not leap ahead of every parcel and quote a 2 kg order at 60 kg volumetric weight.
Rates
- Rate rules matching on country, region, postcode (exact, wildcard, range, list), billable
weight, order subtotal, item quantity, customer group and required packaging type, with four
price modes.
Required packaging typeandWebsiteboth default to "any". Stop after this ruleis honoured: a matching rule that does not stop processing can be overridden by a later match.- A shipping carrier that prices from the packing result and withholds the method, with a configurable message, whenever the order cannot be packed or no rule matches.
- When nothing in the cart can be measured - which is every catalogue on the day the module is
installed - the carrier says nothing at all rather than announcing a failure beside carriers
that are working.
Show method if not applicabledefaults to off. - Method visibility: courier methods can be hidden when the packing produced freight packaging or contains an item couriers may not carry. Nothing is hidden on the strength of an incomplete plan, and other carriers' rates are untouched when this carrier is disabled.
- Website assignment on rate rules and store-view assignment on packaging.
- Server-side validation for rate rules, packing profiles and packaging; zero dimensions and negative available quantities are refused.
Storefront and admin
- A packing summary telling the customer how their order will ship, in the cart and at checkout. It is plain markup with no theme-specific classes, so the same template serves Luma and Hyvä, and it follows the cart through a customer-data section rather than being frozen at page render - at checkout the page never reloads.
- A cart that cannot be packed at all shows its manual-quote notice.
- The packing plan is recorded against every order the module can pack, whichever carrier the customer chose, and shown on a Packing Plan tab in admin with loading order, positions and placed sizes.
Operations
- The plan cache binds to its own cache type, so the admin toggle and cache flush for
qoliber_packaging3d_planaffect it. Cached plans carry a schema version and restore every field, including the flags that decide which shipping methods a customer may choose. - A packing profile deleted while still assigned to products logs a warning rather than silently dropping every handling restriction.
- Unit, integration and Playwright test suites.
- A release script that builds the module-rooted archive and installs what it built before calling it a release.
- A GitLab pipeline that runs everything this module claims: the source parsed on every PHP version it supports, static analysis and the floor guard, the unit suite per version, the integration suite against MySQL and OpenSearch, a clean install through setup:di:compile, the Playwright journeys against a real served store, and the release archive built and then installed.
Not in this release
- Hyvä Checkout has no adapter. The module's only storefront output is the packing summary, and Hyvä Checkout renders its own shipping step; a merchant who wants the summary inside that step has to place it themselves. See README.
- Packaging stock is recorded and shown, but not reserved. Two concurrent orders can both be quoted the last carton.
- Packaging availability is a single figure per packaging type, not per MSI source.