Contributions
Shaping the tools I use every day, one pull request at a time
A hand-picked selection: only the contributions worth reading about, not every merged pull request.
Recognize PATCH as a valid HTTP method in the Varnish VCL — on GitHub
The generated VCL rejected PATCH with a synthetic 405, which broke REST clients doing partial updates behind Varnish. One line in the method whitelist, years of head-scratching saved.
Hardcode the xxh128 hash algorithm in product import — on GitHub
Product import derived its row hash from whatever algorithm the environment happened to offer, so the same CSV produced different hashes on different PHP builds and re-imported unchanged rows. Pinned to xxh128.
Compress the content types Magento actually serves — on GitHub
nginx.conf.sample left PWA manifests and EOT/OTF fonts out of gzip_types, so they shipped uncompressed on every store built from the sample. Also dropped the gzip_disable "msie6" workaround.
Preserve cart price rule discounts when editing an order in admin — on GitHub
Editing an order silently dropped rules limited by uses-per-customer: the new quote re-validated usage while the original order — the one about to be canceled — still held the usage slot. Same defect hit coupon validation.
Handle malformed UTF-8 in the CatalogWidget cache key — on GitHub
ProductsList::getCacheKeyInfo() serialized raw $_GET — so a single malformed byte in the query string threw out of json_encode() and took the whole page down to the generic error page. Bots find those bytes for you.
Align the bootstrap PHP version check with what Magento requires — on GitHub
app/bootstrap.php still gated on PHP 8.1 while composer.json demanded 8.3, so anyone on 8.1 or 8.2 sailed past the friendly message and hit an opaque Composer failure instead.
Change quote.applied_rule_ids to TEXT — on GitHub
quote.applied_rule_ids was VARCHAR(255) while quote_item and quote_address_item used TEXT. Past ~100 applied rules the parent column truncated and stopped matching its children.
Stop evaluating project .env values as shell code — on GitHub
loadEnvConfig piped the project .env straight into eval, so cloning a repository and running any warden env command executed whatever the .env author put in a variable value. Replaced with parsing that does not run the file.
Expose invoice and credit memo CRUD, API routes and events — on GitHub
The entities, validators, ACL features and search indexes were already there — nothing exposed them. Added the commands, /api/sales/invoices and /api/sales/credit-memos routes, credit memo events, document number sequences and audit-trail keys across 15 files.
Only merged work is listed here, and only the parts worth a comment — the full history, including everything still in review, lives on GitHub.
Warden installed Mutagen from a Homebrew tap that no longer exists, so a fresh
warden syncon macOS failed before it ever started. Repointed the install to the maintainedmutagen-iotap.