All Versions
66
Latest Version
Avg Release Cycle
15 days
Latest Release
-
Changelog History
Page 1
Changelog History
Page 1
-
v3.9.0 Changes
- 0️⃣ Re-enable 5 minute database connection persistence by default - #11074 + #11100 by @NyanKiyoshi
Set
DB_CONN_MAX_AGE=0
to disable this behavior (adds overhead to requests) - ⬆️ Bump cryptography to 38.0.3: use OpenSSL 3.0.7 - #11126 by @NyanKiyoshi
- ➕ Add
attribute
field toAttributeValueTranslatableContent
type. #11028 by @zedzior
...
- 0️⃣ Re-enable 5 minute database connection persistence by default - #11074 + #11100 by @NyanKiyoshi
Set
-
v3.8.0 Changes
Highlights
- ➕ Add tax exemption API for checkouts (
taxExemptionManage
mutation) - #10344 by @SzymJ - Switch GraphQL Playground to GraphiQL V2
💥 Breaking changes
- 👌 Verify JWT tokens whenever they are provided with the request. Before, they were only validated when an operation required any permissions. For example: when refreshing a token, the request shouldn't include the expired one.
GraphQL API
- ➕ Add the ability to filter by slug. #10578 by @kadewu
- Affected types: Attribute, Category, Collection, Menu, Page, Product, ProductType, Warehouse
- Deprecated
slug
in filter formenus
. Useslugs
instead
- ➕ Add new
products
filters. #10784 by @kadewuisAvailable
publishedFrom
availableFrom
isVisibleInListing
- ➕ Add the ability to filter payments by a list of ids. #10821 by @kadewu
- ➕ Add the ability to filter customers by ids. #10694 by @kadewu
- ➕ Add
User.checkouts
field. #10862 by @zedzior - ➕ Add optional field
audience
to mutationtokenCreate
. If provided, the created tokens will have keyaud
with value:custom:{audience-input-value}
- #10845 by @korycins - 👉 Use
AttributeValue.name
instead ofAttributeValue.slug
to determine uniqueness of a value instance for dropdown and multi-select attributes. - #10881 by @jakubkuc - 👍 Allow sorting products by
CREATED_AT
field. #10900 by @zedzior - ➕ Add ability to pass metadata directly in create/update mutations for product app models - #10689 by @SzymJ
- ➕ Add ability to use SKU argument in
productVariantUpdate
,productVariantDelete
,productVariantBulkDelete
,productVariantStocksUpdate
,productVariantStocksDelete
,productVariantChannelListingUpdate
mutations - #10861 by @SzymJ - ➕ Add sorting by
CREATED_AT
field. #10911 by @zedzior- Affected types: GiftCard, Page.
- Deprecated
CREATION_DATE
sort field on Page type. UseCREATED_AT
instead.
Other changes
- Reference attribute linking to product variants - #10468 by @IKarbowiak
- ➕ Add base shipping price to
Order
- #10771 by @fowczarek - 🔊 GraphQL view no longer generates error logs when the HTTP request doesn't contain a GraphQL query - #10901 by @NyanKiyoshi
- ➕ Add
iss
field to JWT tokens - #10842 by @korycins - ⬇️ Drop
py
andtox
dependencies from dev requirements - #11054 by @NyanKiyoshi
Saleor Apps
- ➕ Add
iss
field to JWT tokens - #10842 by @korycins - ➕ Add new field
audience
to App manifest. If provided, App's JWT access token will haveaud
field. - #10845 by @korycins - ➕ Add new asynchronous events for objects metadata updates - #10520 by @rafalp
CHECKOUT_METADATA_UPDATED
COLLECTION_METADATA_UPDATED
CUSTOMER_METADATA_UPDATED
FULFILLMENT_METADATA_UPDATED
GIFT_CARD_METADATA_UPDATED
ORDER_METADATA_UPDATED
PRODUCT_METADATA_UPDATED
PRODUCT_VARIANT_METADATA_UPDATED
SHIPPING_ZONE_METADATA_UPDATED
TRANSACTION_ITEM_METADATA_UPDATED
WAREHOUSE_METADATA_UPDATED
VOUCHER_METADATA_UPDATED
- ➕ Add tax exemption API for checkouts (
-
v3.7.0 Changes
Highlights
- 👍 Allow explicitly setting the name of a product variant - #10456 by @SzymJ
- Added
name
parameter to theProductVariantInput
input
- Added
- ➕ Add a new stock allocation strategy based on the order of warehouses within a channel - #10416 by @IKarbowiak
- Add
channelReorderWarehouses
mutation to sort warehouses to set their priority - Extend the
Channel
type with thestockSettings
field - Extend
ChannelCreateInput
andChannelUpdateInput
withstockSettings
- Add
💥 Breaking changes
- 🔨 Refactor warehouse mutations - #10239 by @IKarbowiak
- Providing the value in
shippingZone
filed inWarehouseCreate
mutation will raise a ValidationError. UseWarehouseShippingZoneAssign
to assign shipping zones to a warehouse.
- Providing the value in
GraphQL API
- Hide Subscription type from Apollo Federation (#10439) (f5132dfd3)
- 🗄 Mark
Webhook.secretKey
as deprecated (#10436) (ba445e6e8)
Saleor Apps
- Trigger the
SALE_DELETED
webhook when deleting sales in bulk (#10461) (2052841e9) - ➕ Add
FULFILLMENT_APPROVED
webhook - #10621 by @IKarbowiak
Other changes
- ➕ Add support for
bcrypt
password hashes - #10346 by @pkucmus - ➕ Add the ability to set taxes configuration per channel in the Avatax plugin - #10445 by @mociepka
- 👍 Allow explicitly setting the name of a product variant - #10456 by @SzymJ
-
v3.6.0 Changes
💥 Breaking changes
- ⬇️ Drop
django-versatileimagefield
package; add a proxy view to generate thumbnails on-demand - #9988 by @IKarbowiak- Drop
create_thumbnails
command
- Drop
- Change return type from
CheckoutTaxedPricesData
toTaxedMoney
in plugin manager methodscalculate_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
andACCOUNT_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
andORDER_CALCULATE_TAXES
toWebhookEventTypeSyncEnum
#9526 by @fowczarek, @mateuszgrzyb, @stnatic - ➕ Add
forceNewLine
flag to lines input inCheckoutLinesAdd
,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 thansend-sale-toggle-notifications
ifsend-sale-toggle-notifications
doesn't returnis_due = False
(stuck forever until beat restart or ais_due = True
)tick()
was sometimes scheduling other schedulers such as observability to be run every 5m instead of every 20sis_due()
fromsend-sale-toggle-notifications
was being invoked every 5s on django-celery-beat instead of every 60ssend-sale-toggle-notifications
would crash on django-celery-beat withCannot 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)
- ⬇️ Drop
-
v3.5.4 Changes
- 🛠 Fix ORM crash when generating hundreds of search vector in SQL - #10261 by @NyanKiyoshi
- 🛠 Fix "stack depth limit exceeded" crash when generating thousands of search vector in SQL - #10279 by @NyanKiyoshi
-
v3.5.3 Changes
- 👉 Use custom search vector in order search - #10247 by @fowczarek
- ⚡️ Optimize filtering attributes by dates - #10199 by @tomaszszymanski129
-
v3.5.2 Changes
- 🛠 Fix stock allocation for order with global collection point - #10225 by @IKarbowiak
- 🛠 Fix stock validation and allocation for order with local collection point - #10218 @IKarbowiak
- 🛠 Fix returning GraphQL IDs in the
SALE_TOGGLE
webhook - #10227 by @IKarbowiak
-
v3.5.1 Changes
🛠 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 thansend-sale-toggle-notifications
ifsend-sale-toggle-notifications
doesn't returnis_due = False
(stuck forever until beat restart or ais_due = True
)tick()
was sometimes scheduling other schedulers such as observability to be ran every 5m instead of every 20sis_due()
fromsend-sale-toggle-notifications
was being invoked every 5s on django-celery-beat instead of every 60ssend-sale-toggle-notifications
would crash on django-celery-beat withCannot 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
-
v3.5.0 Changes
GraphQL API
- 👍 Allow skipping address validation for checkout mutations (#10084) (7de33b145)
- ➕ Add
OrderFilter.numbers
filter - #9967 by @SzymJ - 🔦 Expose manifest in the
App
type (#10055) (f0f944066) - 🔧 Deprecate
configurationUrl
anddataPrivacy
fields in apps (#10046) (68bd7c8a2) - 🛠 Fix
ProductVariant.created
resolver (#10072) (6c77053a9)
Saleor Apps
- Add webhooks
PAGE_TYPE_CREATED
,PAGE_TYPE_UPDATED
andPAGE_TYPE_DELETED
- #9859 by @SzymJ - Add webhooks
ADDRESS_CREATED
,ADDRESS_UPDATED
andADDRESS_DELETED
- #9860 by @SzymJ - Add webhooks
STAFF_CREATED
,STAFF_UPDATED
andSTAFF_DELETED
- #9949 by @SzymJ - Add webhooks
ATTRIBUTE_CREATED
,ATTRIBUTE_UPDATED
andATTRIBUTE_DELETED
- #9991 by @SzymJ - Add webhooks
ATTRIBUTE_VALUE_CREATED
,ATTRIBUTE_VALUE_UPDATED
andATTRIBUTE_VALUE_DELETED
- #10035 by @SzymJ - ➕ Add webhook
CUSTOMER_DELETED
- #10060 by @SzymJ - ➕ Add webhook for starting and ending sales - #10110 by @IKarbowiak
- 🛠 Fix returning errors in subscription webhooks payloads - #9905 by @SzymJ
- 🏗 Build JWT signature when secret key is an empty string (#10139) (c47de896c)
- 👉 Use JWS to sign webhooks with secretKey instead of obscure signature (ac065cdce)
- 🛰 Sign webhook payload using RS256 and private key used JWT infrastructure (#9977) (df7c7d4e8)
- Unquote secret access when calling SQS (#10076) (3ac9714b5)
🐎 Performance
- ➕ Add payment transactions data loader (#9940) (799a9f1c9)
- Optimize 0139_fulfil_orderline_token_old_id_created_at migration (#9935) (63073a86b)
Other changes
- Introduce plain text attribute - #9907 by @IKarbowiak
- ➕ Add
metadata
fields toOrderLine
andCheckoutLine
models - #10040 by @SzymJ - ➕ Add full-text search for Orders (#9937) (61aa89f06)
- 0️⃣ Stop auto-assigning default addresses to checkout - #9933 by @SzymJ
- 🛠 Fix inaccurate tax calculations - #9799 by @IKarbowiak
- 🛠 Fix incorrect default value used in
PaymentInput.storePaymentMethod
- #9943 by @korycins - 👌 Improve checkout total base calculations - #10048 by @IKarbowiak
- 👌 Improve click & collect and stock allocation - #10043 by @IKarbowiak
- 🛠 Fix product media reordering (#10118) (de8a1847f)
- ➕ Add custom SearchVector class (#10109) (bf74f5efb)
- 👌 Improve checkout total base calculations (527b67f9b)
- 🛠 Fix invoice download URL in send-invoice email (#10014) (667837a09)
- 🛠 Fix invalid undiscounted total on order line (22ccacb59)
- 🛠 Fix Avalara for free shipping (#9973) (90c076e33)
- Fix Avalara when voucher with
apply_once_per_order
settings is used (#9959) (fad5cdf46) - ⚠ Use Saleor's custom UvicornWorker to avoid lifespan warnings (#9915) (9090814b9)
- ➕ Add Azure blob storage support (#9866) (ceee97e83)
-
v3.4.0 Changes
💥 Breaking changes
- 📇 Hide private metadata in notification payloads - #9849 by @maarcingebala
- From now on, the
private_metadata
field inNOTIFY_USER
webhook payload is deprecated and it will return an empty dictionary. This change also affectsAdminEmailPlugin
,UserEmailPlugin
, andSendgridEmailPlugin
.
- From now on, the
Other changes
GraphQL API
- ➕ Add new fields to
Order
type to show authorize/charge status #9795- Add new fields to Order type:
totalAuthorized
totalCharged
authorizeStatus
chargeStatus
- Add filters to
Order
: authorizeStatus
chargeStatus
- ➕ Add mutations for managing a payment transaction attached to order/checkout. - #9564 by @korycins
- add fields:
order.transactions
checkout.transactions
- add mutations:
transactionCreate
transactionUpdate
transactionRequestAction
- add new webhook event:
TRANSACTION_ACTION_REQUEST
- Unify checkout's ID fields. - #9862 by @korycins
- Deprecate
checkoutID
andtoken
in all Checkout's mutations. Useid
instead. - Deprecate
token
incheckout
query. Useid
instead.
- Deprecate
- ➕ Add
unitPrice
,undiscountedUnitPrice
,undiscountedTotalPrice
fields toCheckoutLine
type - #9821 by @fowczarek - 🛠 Fix invalid
ADDED_PRODUCTS
event parameter forOrderLinesCreate
mutation - #9653 by @IKarbowiak - ⚡️ Update sorting field descriptions - add info where channel slug is required (#9695) (391743098)
- 🛠 Fix using enum values in permission descriptions (#9697) (dbb783e1f)
- 🔄 Change gateway validation in
checkoutPaymentCreate
mutation (#9530) (cf1d49bdc) - 🛠 Fix invalid
ADDED_PRODUCTS
event parameter forOrderLinesCreate
mutation (#9653) (a0d8aa8f1) - 🛠 Fix resolver for
Product.created
field (#9737) (0af00cb70) - 👍 Allow fetching by id all order data for new orders (#9728) (71c19c951)
- Provide a reference for the rich text format (#9744) (f2207c408)
- 👌 Improve event schema field descriptions - #9880 by @patrys
Saleor Apps
- Add menu webhooks:
MENU_CREATED
,MENU_UPDATED
,MENU_DELETED
,MENU_ITEM_CREATED
,MENU_ITEM_UPDATED
,MENU_ITEM_DELETED
- #9651 by @SzymJ - Add voucher webhooks:
VOUCHER_CREATED
,VOUCHER_UPDATED
,VOUCHER_DELETED
- #9657 by @SzymJ - Add app webhooks:
APP_INSTALLED
,APP_UPDATED
,APP_DELETED
,APP_STATUS_CHANGED
- #9698 by @SzymJ - Add warehouse webhoks:
WAREHOUSE_CREATED
,WAREHOUSE_UPDATED
,WAREHOUSE_DELETED
- #9746 by @SzymJ - 🔦 Expose order alongside fulfillment in fulfillment-based subscriptions used by webhooks (#9847)
- 🛠 Fix webhooks payload not having field for
is_published
(#9800) (723f93c50) - ➕ Add support for
ORDER_*
mounting points for Apps (#9694) (cc728ef7e) - ➕ Add missing shipping method data in order and checkout events payloads. (#9692) (dabd1a221)
- 🛰 Use the human-readable order number in notification payloads (#9863) (f10c5fd5f)
Models
- Migrate order discount id from int to UUID - #9729 by @IKarbowiak
- Changed the order discount
id
fromint
toUUID
, the old ids still can be used for old order discounts.
- Changed the order discount
- Migrate order line id from int to UUID - #9637 by @IKarbowiak
- Changed the order line
id
fromint
toUUID
, the old ids still can be used for old order lines.
- Changed the order line
- Migrate checkout line id from int to UUID - #9675 by @IKarbowiak
- Changed the checkout line
id
fromint
toUUID
, the old ids still can be used for old checkout lines.
- Changed the checkout line
🐎 Performance
- Fix memory consumption of
delete_event_payloads_task
(#9806) (2823edc68) - ➕ Add webhook events dataloader (#9790) (e88eef35e)
- ➕ Add dataloader for fulfillment warehouse resolver (#9740) (9d14fadb2)
- 🛠 Fix order type resolvers performance (#9723) (13b5a95e7)
- 👌 Improve warehouse filtering performance (#9622) (a1a7a223b)
- ➕ Add dataloader for fulfillment lines (#9707) (68fb4bf4a)
Other
- Observability reporter - #9803 by @przlada
- ⚡️ Update sample products set - #9796 by @mirekm
- 🛠 Fix for sending incorrect prices to Avatax - #9633 by @korycins
- 🛠 Fix tax-included flag sending to Avatax - #9820
- 🛠 Fix AttributeError: 'Options' object has no attribute 'Model' in
search_tasks.py
- #9824 - 🛠 Fix Braintree merchant accounts mismatch error - #9778
- Stricter signatures for resolvers and mutations - #9649
- 📇 Hide private metadata in notification payloads - #9849 by @maarcingebala