6 min readOct 11, 2026by jakub

Changelog

Current version: 1.0.0

The suite installs as one metapackage, qoliber/ppwr, but each module carries its own changelog. Entries below are grouped by release, then by module.

1.0.0 — 2026-09-14

PPWR Core

First release — the foundation of PPWR Packaging for Magento Open Source and Mage-OS.

Added

  • Legal entities — admin screens for the companies that sell and report, with a completeness check (registered name, address, country and a tax or business identifier) and a default entity provisioned on install.
  • Legal entity roles — effective-dated, jurisdiction-scoped roles such as importer or manufacturer. Saving opens a new version and keeps the previous one, so every past decision stays reconstructible.
  • Market scopes — which company places packaging on which market, and under which recognition rule, revised rather than edited.
  • Versioned regulatory code lists — bin/magento ppwr:codelist:import imports datasets as drafts, and activation is a separate, audited action with its own permission that retires the previously active version. bin/magento ppwr:codes:status shows active and pending versions. Ships material category, packaging level, recognition rule, polymer, jurisdiction (all 27 EU Member States) and dimension applicability datasets.
  • Private document storage — local or S3-compatible adapters, file-signature checks on upload, configurable MIME types and size limit, server-derived retention dates, and downloads behind their own permission with readable file names. Each document remembers the adapter it was stored with.
  • Append-only audit trail written through AuditRecorderInterface, and a shared bitemporal versioning service for effective-dated records.
  • Permission tree — a PPWR resource group with master data, reviewer, fulfilment operator, report user, auditor and configuration roles.
  • Configuration — selling legal entity per website, multi-entity management, document storage and translatable storefront text.

PPWR Packaging

First release — packaging master data with review, approval and traceability.

Added

  • Packaging specifications and revisions — draft, in review, approved and superseded. Approved revisions are immutable history; a correction opens a new revision that supersedes the old one, and every transition is audited.
  • Quick Create — a specification, its first revision and its material components in one form, optionally with a document and a one-item recipe.
  • Completeness check before approval, including configurable evidence document types per packaging level. Approval runs under a row lock, so a concurrent edit can never slip an unchecked revision through.
  • Single-user fast path or distinct approver, selectable per website.
  • Article 9 compostability advisory on approval for formats expected to be compostable — it advises and never blocks.
  • Packaging recipes (bills of materials) — purposes, calculation bases (per unit, per N units, per parcel, per shipment), a BOM editor, grid filters, and a new-version flow for recipes that are already in use.
  • Article 22 traceability — supplier-side supply transactions recorded against approved revisions with server-derived direction and retention, recipient-side records for business counterparties, and bin/magento ppwr:traceability:purge-expired, which only ever removes records past their retention date.
  • REST API — 20 endpoints for specifications, revisions, workflow transitions, recipes, recipe items and traceability, each behind an ACL resource. Every write records the authenticated caller.
  • Packaging format code list, including a version carrying Article 9 compostability flags.

PPWR Catalog

First release — packaging on products, in the admin and on the storefront.

Added

  • Product assignments — product and website to recipe, effective-dated and system-versioned, with history that survives product deletion and resolves as of any past date.
  • Deterministic resolution for simple, configurable, bundle, grouped, virtual and downloadable products, with an optional fallback from a simple product to its configurable parent.
  • Assignment CSV import and export with a per-row success and failure report; re-importing revises an assignment instead of duplicating it.
  • PPWR Packaging section on the product edit page with the current assignment and a live completeness summary.
  • Storefront packaging block for Luma — packaging mass by material, a component table, evidence-gated "Recyclable" and "Compostable" claims, compostability-aware disposal guidance, reuse guidance, a destination-country switcher and the Article 12 note, per store view. Configurable products update the block on variant change without a page reload; merchant text is escaped and the block passes an automated accessibility scan.
  • Nothing renders when nothing applies — a product with no packaging resolved produces no block at all, not an empty wrapper.
  • Stable region order — the mass bar, composition table, status row and disposal panel hold their places, so the block reads the same however many times a shopper switches configurable variants, on any axis.
  • A data-ppwr-role hook on every region, so a theme or an integration can address part of the block by role rather than by CSS class.
  • Wording advisory on storefront guidance text for generic environmental claims listed by the Empowering Consumers Directive (Directive (EU) 2024/825).
  • REST API — list, get, upsert-by-SKU and close endpoints for assignments.
  • Cache refresh — saving an assignment clears the product's cache, and activating a code list clears cached packaging data.

PPWR Fulfillment

First release — what actually went out with each shipment.

Added

  • Parcels & Packaging on the shipment page — capture parcels with their outer carton and other packaging uses, then finalize the manifest.
  • REST API — POST /V1/ppwr/manifests for WMS manifests (idempotent replay, all-or-nothing batches) and POST /V1/ppwr/dispatch for carrier, WMS or manual dispatch confirmation.
  • Recognition gates — dispatch assumed from shipment creation with an optional delay, and a packaging gate with a WMS grace period that applies the website's default shipment packaging recipe when no manifest arrives in time.
  • Transactional outbox written inside the shipment save transaction, processed by cron every five minutes with leases, skip-locked claiming and retries with backoff, so parallel workers split the backlog and no event is lost.
  • Compliance exceptions queue — named failures resolved with a reason on record; resolving re-queues an event that had run out of retries.
  • bin/magento ppwr:outbox:status — backlog, stalled leases, failures and open exceptions, a per-shipment explanation, and a non-zero exit past a backlog threshold for monitoring.
  • Fallback packaging cron every fifteen minutes, and a configurable re-check interval for events waiting on a gate.
  • RecognitionScopeInterface extension point for modules that decide a shipment is out of scope.

PPWR EPR

First release — an append-only EPR ledger and reproducible report runs.

Added

  • Placed-on-market ledger — one row per packaging material per recognised shipment, immutable and idempotent, with dimension and responsibility snapshots. Corrections are compensating entries with a mandatory reason, including partial corrections and corrected replacements.
  • Reportable markets and reporting timezones — explicit markets with per-market IANA timezones (EU 27 plus GB by default), recognition dates in the destination's local calendar, and audited out-of-scope handling for other destinations.
  • External packaging movements over REST (POST /V1/ppwr/movements) and CSV — registered sources, idempotency keys, sales, samples, replacements, inbound unpacking and import receipts recorded as provenance, mapping profiles, explicit dimensions, and Article 22 records for inbound goods.
  • Source periods — declared expectations that close only when stored movements match, or are attested with a reason; bin/magento ppwr:source:materialize-periods opens periods for every active source.
  • Reconciliation — bin/magento ppwr:ledger:reconcile with per-source scope and compliance exception creation, and bin/magento ppwr:ledger:rebuild-missing with a dry run.
  • EPR registrations per legal entity and Member State, with readiness checks that pick the registration valid on the day.
  • EPR dashboard — shipment coverage, open exceptions, registrations needing attention and report readiness per market.
  • Report runs — ppwr:report:generate, ppwr:report:validate and ppwr:report:finalize, a generic CSV adapter under a versioned adapter registry, a finalization guard that names every blocker, byte-for-byte reproducible regeneration, drill-down from each total to its ledger entries, checksummed artifacts with a separate download permission, and amendments for activity after a run's cutoff.
  • Admin screens for the ledger explorer, report runs, registrations, movement sources, mapping profiles and source periods.
  • EPR Accounting permission group with separate view and adjust, and view and download, resources.
  • Jurisdiction registry covering all 27 EU Member States.

PPWR Hyvä

First release — the PPWR packaging block on Hyvä.

Added

  • Hyvä template for the storefront packaging block, built with Tailwind and Alpine.js from the same view model and data as the Luma block.
  • Compatibility-module registration, so the template is used only when a Hyvä theme is active and stays inert on any other theme.
  • Placement below Add to Cart through a Hyvä-only layout handle.
  • Variant switching on configurable products through Hyvä's configurable-selection-changed event, with no RequireJS or jQuery.
  • Evidence-gated claims and compostability-aware disposal guidance, identical to the Luma block. The status row appears under the same conditions as Luma's — a reuse status, a recyclability claim or a compostability claim — and nothing renders at all when no packaging resolves for the product.
  • The same data-ppwr-role hooks as the Luma block for the title, aside, body, mass bar, composition table, status row and material swatches, so a theme or an integration addresses either block the same way.
  • Tailwind configuration shipped with the module for theme builds.
Changelog — PPWR Packaging — Compliance & Legal — Extensions | qoliber Docs