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.
Enable the compiled configuration cache for test execution — on GitHub
The compiled_config cache holds the merged di.xml graph, and integration tests rebuilt it instead of reusing it. Straight wall-clock off every suite run.
Handle negative page numbers on category listings — on GitHub
A negative ?p= value was treated as a valid request and ended in an exception instead of a sensible response — trivially reachable by any crawler that guesses at URLs.
Fix the escaping example in the view models guide — on GitHub
Official docs showed $block->escape…() for output escaping and had the @var annotation the wrong way round. Documentation is copy-pasted into production more often than anyone admits.
Escape table names so encryption key rotation survives them — on GitHub
Table names containing special characters broke the generated SQL mid-rotation — a bad moment to discover a quoting bug, given what the tool is re-encrypting.
Fix customer data when a form contains a field named "method" — on GitHub
customer-data.js read event.target.method to check the form method — but with an input named method in the form, that resolves to the element, not the attribute. Two lines, one very confusing class of checkout bugs.
Use the hex-tag JSON serializer for data embedded in templates — on GitHub
A User module view model serialized data for output with the plain JSON serializer, which breaks the moment the content carries markup — precisely the case JsonHexTag exists for.
Make checkout failure logs groupable by reason, not quote ID — on GitHub
The quote ID was baked into the log message, so Kibana, New Relic and Sentry each saw every checkout failure as a unique event and aggregated nothing. Event data moved to the PSR-3 context, leaving a stable message to group on.
Prefetch orders to kill an N+1 in the admin grid — on GitHub
The orders grid issued one query per row for Mailchimp data. Prefetching cut over 20% of the grid load locally — more on any environment with real network latency to the database.
Stop setup:install hanging in integration test runs — on GitHub
Any prompt raised during install left the test bootstrap waiting for an answer nobody could type, so CI hung until it timed out. --no-interaction turns that into a clean failure.
Only merged work is listed here, and only the parts worth a comment — the full history, including everything still in review, lives on GitHub.
Sales > Orders rendered street, city, region and postcode but not the country, which is ambiguous for anyone shipping internationally. Added
country_idto both address aggregators.