Saleor v3.6.0 Release Notes

  • ๐Ÿ’ฅ Breaking changes

    • โฌ‡๏ธ Drop django-versatileimagefield package; add a proxy view to generate thumbnails on-demand - #9988 by @IKarbowiak
      • Drop create_thumbnails command
    • Change return type from CheckoutTaxedPricesData to TaxedMoney in plugin manager methods calculate_checkout_line_total, calculate_checkout_line_unit_price - #9526 by @fowczarek, @mateuszgrzyb, @stnatic

    Saleor Apps

    • โž• Add GraphQL subscription support for synchronous webhook events - #9763 by @jakubkuc
    • Add support for the CUSTOMER_* app mount points (#10163) by @krzysztofwolski
    • Add permission group webhooks: PERMISSION_GROUP_CREATED, PERMISSION_GROUP_UPDATED, PERMISSION_GROUP_DELETED - #10214 by @SzymJ
    • Add ACCOUNT_ACTIVATED and ACCOUNT_DEACTIVATED events - #10136 by @tomaszszymanski129
    • ๐Ÿ‘ Allow apps to query data protected by MANAGE_STAFF permission (#10103) (4eb93d3f5)
    • ๐Ÿ›  Fix returning sale's GraphQL ID in the SALE_TOGGLE payload (#10227) (0625c43bf)
    • โž• Add descriptions to async webhooks event types (#10250) (7a906bf7f)

    GraphQL API

    • Add CHECKOUT_CALCULATE_TAXES and ORDER_CALCULATE_TAXES to WebhookEventTypeSyncEnum #9526 by @fowczarek, @mateuszgrzyb, @stnatic
    • โž• Add forceNewLine flag to lines input in CheckoutLinesAdd, CheckoutCreate, DraftOrderCreate, OrderCreate, OrderLinesCreate mutations to support same variant in multiple lines - #10095 by @SzymJ
    • โž• Add VoucherFilter.ids filter - #10157 by @Jakubkuc
    • โž• Add API to display shippable countries for a channel - #10111 by @korycins
    • ๐Ÿ‘Œ Improve filters' descriptions - #10240 by @dekoza
    • โž• Add query for transaction item and extend transaction item type with order (#10154) (b19423a86)

    ๐Ÿ”Œ Plugins

    • Add a new method to plugin manager: get_taxes_for_checkout, get_taxes_for_order - #9526 by @fowczarek, @mateuszgrzyb, @stnatic
    • ๐Ÿ‘ Allow promoting customer users to staff (#10115) (2d56af4e3)
    • ๐Ÿ‘ Allow values of different attributes to share the same slug (#10138) (834d9500b)
    • ๐Ÿ›  Fix payment status for orders with total 0 (#10147) (ec2c9a820)
    • ๐Ÿ›  Fix failed event delivery request headers (#10108) (d1b652115)
    • Fix create_fake_user ID generation (#10186) (86e2c69a9)
    • ๐Ÿ›  Fix returning values in JSONString scalar (#10124) (248d2b604)
    • ๐Ÿ›  Fix problem with updating draft order with active Avalara (#10183) (af270b8c9)
    • ๐Ÿ‘‰ Make API not strip query params from redirect URL (#10116) (75176e568)
    • โšก๏ธ Update method for setting filter descriptions (#10240) (65643ec7c)
    • Add expires option to CELERY_BEAT_SCHEDULE (#10205) (c6c5e46bd)
    • Recalculate order prices on marking as paid mutations (#10260) (4e45b83e7)
    • ๐Ÿ›  Fix triggering ORDER_CANCELED event at the end of transaction (#10242) (d9eecb2ca)
    • ๐Ÿ›  Fix post-migrate called for each app module (#10252) (60205eb56)
    • Only handle known URLs (disable appending slash to URLs automatically) - #10290 by @patrys

    Other changes

    • โž• Add synchronous tax calculation via webhooks - #9526 by @fowczarek, @mateuszgrzyb, @stnatic
    • ๐Ÿ‘ Allow values of different attributes to share the same slug - #10138 by @IKarbowiak
    • โž• Add query for transaction item and extend transaction item type with order - #10154 by @IKarbowiak
    • 0๏ธโƒฃ Populate the initial database with default warehouse, channel, category, and product type - #10244 by @jakubkuc
    • ๐Ÿ›  Fix inconsistent beat scheduling and compatibility with DB scheduler - #10185 by @NyanKiyoshi This fixes the following bugs:
      • tick() could decide to never schedule anything else than send-sale-toggle-notifications if send-sale-toggle-notifications doesn't return is_due = False (stuck forever until beat restart or a is_due = True)
      • tick() was sometimes scheduling other schedulers such as observability to be run every 5m instead of every 20s
      • is_due() from send-sale-toggle-notifications was being invoked every 5s on django-celery-beat instead of every 60s
      • send-sale-toggle-notifications would crash on django-celery-beat with Cannot convert schedule type <saleor.core.schedules.sale_webhook_schedule object at 0x7fabfdaacb20> to model Usage:
      • Database backend: celery --app saleor.celeryconf:app beat --scheduler saleor.schedulers.schedulers.DatabaseScheduler
      • Shelve backend: celery --app saleor.celeryconf:app beat --scheduler saleor.schedulers.schedulers.PersistentScheduler
    • ๐Ÿ›  Fix problem with updating draft order with active Avalara - #10183 by @IKarbowiak
    • ๐Ÿ›  Fix stock validation and allocation for order with local collection point - #10218 by @IKarbowiak
    • ๐Ÿ›  Fix stock allocation for order with global collection point - #10225 by @IKarbowiak
    • ๐Ÿ›  Fix assigning an email address that does not belong to an existing user to draft order (#10320) (97129cf0c)
    • ๐Ÿ›  Fix gift cards automatic fulfillment (#10325) (6a528259e)