The most specific method code now wins: with both flatrate and flatrate_flatrate configured, the compound code is used instead of whichever row happened to come first
Rows with an empty type are skipped; they previously matched every order and swallowed all other instructions
Errors during CMS filtering are logged instead of being discarded silently
composer.json declares the Magento modules the code actually uses (cms, config, payment, sales, shipping, store)
composer.json declares php: >=8.0 (str_contains() is the highest language feature used) and ext-intl, which Select::sortOptions() needs for Collator
etc/module.xml declares a load sequence and drops the obsolete setup_version
magento/framework now starts at 103.0.4 (Magento 2.4.4). The previous lower bound of 102.0.0 promised
support for Magento 2.3 / 2.4.0-2.4.3, which run on PHP <= 7.4 and cannot execute the str_contains() call
in the instruction matcher
Admin field comments are translatable; German translations added in i18n/de_DE.csv
README condensed and its compatibility statement corrected