Skip to content

2.0.4

Choose a tag to compare

@EmilsM EmilsM released this 10 Jun 21:52
· 9 commits to magebit since this release
a8c0672

Post-release reconciliation/idempotency fixes for the v2 line, driven by feedback from real project use. No config-format breaks. Several components were re-saving (or noisily logging) on every configurator:run instead of settling to skipped once in sync; a few also failed outright in maintain mode.

Components now settle to a skip when unchanged

  • Categories — gained the per-entity diff the other components already had. In maintain mode it previously re-saved every category every run, and the no-op re-save regenerated URL rewrites and threw UrlAlreadyExistsException, aborting the component. Unchanged categories now skip the save entirely.
  • TaxRules — previously re-imported the rule every run (updated 1 that never settled to 0). Now loads the full rule (rate/class ids live in association tables) and diffs ids + scalars before saving.
  • Widgets — page_groups were compared against a value that isn't loaded on the collection item and that uses different stored column names, so the compare never matched and forced a re-save every run (which, per the report, then surfaced "Layout update is invalid"). The instance is now hydrated and compared in the simplified shape; built groups are always carried onto the model so an unrelated change can't drop them. getPageGroups() also now reads the correct stored columns.
  • Pages — setStores() was called unconditionally (a magic data-setter), marking the model dirty and producing a phantom "Save page" every run. Stores are now only re-assigned when the assignment actually differs.

Other fixes

  • TaxRates — the generated import CSV now carries Magento's canonical header (Code,Country,State,…) in the data's actual column order, instead of the source machine-key header in a mismatched order.
  • Attributes — stopped logging "… does not exist or is not mapped" for valid addAttribute-only keys (sort_order, group, visible, position) that aren't readable on the loaded attribute row. Keys the entity type does expose are still diffed, and genuinely unknown keys still log.

Quality

  • Unit suite expanded to 455 tests, covering the new unchanged/skip paths and format fixes per component, green on PHPUnit 9.6 in a real Magento install.
  • The Widgets fix was additionally verified end-to-end against a live store: create → skip → skip, DB unchanged.

Full changelog: 2.0.3...2.0.4