# V4 Release Notes

## Functional corrections

- Removed MySQL-incompatible `IN (SELECT ... LIMIT ...)` catalogue media query.
- Added database-preserving V4 upgrade and runtime diagnostic tools.
- Connected Marketing campaigns/analytics to campaign and event tables.
- Connected Product Performance to analytics events and paid order items.
- Connected Finance/Reports to paid orders, VAT, refunds, wallet liability and inventory.
- Connected Messages/Notifications to database records and live AJAX refresh.
- Connected Dispatch to assignments, status transitions, rider coordinates and live map.
- Added actual cart mutation, Instant Buy, wishlist, text suggestions, voice search and image similarity search.
- Added social cart sharing and paid-order share attribution rewards.
- Added customer wallet funding/payment and loyalty redemption flows.
- Added real product comparison for guests and signed-in customers.
- Corrected passkey WebAuthn server flow and moved to security-focused `report-uri/passkeys-php` Composer dependency.
- Variant creation now creates variant inventory records.
- Product Save as Draft button now submits a real draft instead of being inert.

## External provider boundaries

Real payment, Google OAuth, direct owned-social-account publishing and external BNPL decisions require account credentials/merchant approval. They cannot be pre-authorized inside a downloadable source ZIP.
