- core Fix
Unknown type "ShippingMethodCustomFields"
error (d810450) - core Fix FK error with adjustOrderLine when zero saleable stock (28aeddb), closes #1273
- admin-ui Fix display of facet value custom fields (f4a6dbd), closes #1282
- admin-ui Fix error if no array of assets is provided (#1249) (5af2b12), closes #1249
- admin-ui Fix layout of Zone & CustomerGroup lists (cd8b93d)
- admin-ui Fix rendering of custom field lists (da9e2ce)
- admin-ui Fix tax rate permissions so product variants do not need access to customer groups (#1274) (0a49fea), closes #1274
- admin-ui General custom field tab always comes first (873526d)
- core Add Permission.ReadProduct to Allow decorator of TaxCategoryResolver.taxCategories (#1275) (ff24fc0), closes #1275
- core Add Permission.ReadProduct to Allow decorator of TaxRateResolver.taxRates (#1258) (5f5f767), closes #1258
- core Clear shippingLines if no eligible ShippingMethods exist (f9bc532), closes #1195
- core Correctly validate custom field list types (6f71bf2), closes #1241
- core Ensure all Orders have a ShippingMethod before payment (9b9e547)
- core Fix batch size error on postgres when reindexing (#1242) (57be4c5), closes #1242
- core Fix caching of zone members when switching language (3c32fb2)
- core Fix EntityRelationPaths type for optional properties (2d065f9)
- core Fix permissions for
pendingSearchIndexUpdates
query (152e64b) - core Fix stream not being instance of ReadStream (#1238) (5ee371d), closes #1238
- core Gracefully handle errors in creating asset previews (c3cfcb3), closes #1246
- core Make facetValueCollectionFilter safe with uuids (a3fef0f)
- core Make populator.populateCollections more robust to bad input (8189c1b)
- core Order collection.children by position (f2def43), closes #1239
- core Re-allocate stock when cancelling a Fulfillment (693fd83), closes #1250
- admin-ui-plugin Support for defaultLocale (e7bd576), closes #1196
- admin-ui Add filtering to FacetListComponent (0ab212e)
- admin-ui Add json editor field input component (4297b87)
- admin-ui Add language switcher to Country & Zone list views (7552fae)
- admin-ui Add rich text control form input (0b09598), closes #415 #722
- admin-ui Add support for tabbed custom fields (b6cb16f), closes #724
- admin-ui Allow custom components to embed in detail views (e15c553), closes #415
- admin-ui Allow manual payments to be added by Administrator (0416869), closes #753
- admin-ui Display available UI extension points (0963745), closes #415
- admin-ui Export all catalog components (#1248) (e5feac4), closes #1248 #1245
- admin-ui Implement custom fields on newly-supported entities (2da2ec9), closes #1185
- admin-ui Implement filtering in Collection list view (aa74129)
- admin-ui Support for language regions (language + locale) (b5cdbce), closes #1196
- admin-ui Use customField ui components specified in config (f52459f), closes #415
- core Add OrderPlacedEvent (c1465dc), closes #1219
- core Allow customField ui components to be specified in config (e22e006), closes #415
- core Allow manual payments to be added by Administrator (107ca9a), closes #753
- core Allow PaginatedList queries to filter on ID fields (fa3d5ed), closes #1259
- core CustomField support on Country, CustomerGroup, PaymentMethod, Promotion, TaxCategory, (fac803d), closes #1185
- core Expand the range of events published by the EventBus (#1222) (edc9d69), closes #1222 #1219 #1219 #1219 #1219 #1219 #1219 #1219
- core Expose customfields on ShippingMethod- & PaymentMethodQuote (52972db), closes #1260
- core Support CSV import in multiple languages (#1199) (4754954), closes #1199
- core Upgrade TypeORM to v0.2.41 (44f6fd5)
- elasticsearch-plugin Add custom sort parameter mapping (#1230) (0d1f687), closes #1230 #1220 #1220
- elasticsearch-plugin Add option to hide indexed fields in api (#1181) (#1212) (9193dee), closes #1181 #1212
- payments-plugin Add MolliePlugin - Mollie Payments integration
- payments-plugin Add BraintreePlugin - Braintree Payments integration
- payments-plugin Add support for Braintree vault to store cc data (1d93db8)
- payments-plugin Allow Braintree environment to be set (55d67d9)
- ui-devkit Expose route data in hosted UI extensions (c3a21ff), closes #1281
- core Correctly deep-merge hydrated entities (32d19e3), closes #1229
- core Correctly set OrderItem prices on tax zone change (731f8d9), closes #1216
- core Do not list deleted ProductVariants in Collections (5cd8e1a), closes #1213
- core Fix argsArrayToHash, case where arg not present in this.args (#1224) (454fdf5), closes #1224
- core Fix edge case FK error when creating new Collections (160f457), closes #1215
- core Fix ONLY_FULL_GROUP_BY error when searching with MySQL (94fa4db), closes #1236
- core Fix ProductService.assignProductsToChannel to properly assign assets to channel (#1235) (a3066b0), closes #1235
- testing Fix "fail is not defined" error (c474d93)
- admin-ui Correctly display primitive value job queue results (d8c2195), closes #881
- admin-ui Fix display of channels in Role detail (dee331a), closes #1211
- core Correctly cancel sales when cancelling Fulfillment (00ac70d), closes #1198
- core Export missing tax config types (08951b3)
- core Fix error thrown when shipping address company is null (303a216), closes #744
- core Make populator.populateCollections more robust to bad input (15762e0)
- admin-ui-plugin Correctly handle base href for custom routes (752cc13), closes #1152
- admin-ui Add pt_PT translation to ui config (c7a7bbd)
- admin-ui Currency input handles currencies without minor units (fd643b3), closes #1146
- core Allow an Order in ArrangingAdditionalPayment to be cancelled (3e1a3cf), closes #1177
- core Export ShippingLine entity (98927dd)
- core Fix error in validating custom fields with introspection fields in query (f856491), closes #1091
- core Fix order modification with refund on shipping (95bff8f), closes #1197
- core Fix polynomial regex vulnerability (6675757)
- create Update TypeScript to match current supported version (3be6b88), closes #1188
- core Allow middleware to inject TransactionalConnection (28f713c), closes #1160
- core Fix EntityHydrator missing nested relations (fbda3dd), closes #1161
- core Fix EntityHydrator when hydrating empty array relation (70e0314), closes #1153
- core Fix EntityHydrator with entity getters (7d0e894), closes #1172
- core Fix shipping price when the promotion is not applicable anymore (#1150) (eb1dcc4), closes #1150
- core Improved error message when Order.lines not joined (0a33e5c)
- core Improve perf of DefaultSearchPlugin reindex job (bfc72f2)
- elasticsearch-plugin Optimize indexing using RequestContextCache (75da3b3)
- admin-ui Add admin-ui Portuguese (Portugal) translation (#1069) (81d9836), closes #1069
- admin-ui Add empty option for nullable custom field selects (894ca4a), closes #1083
- admin-ui Display pending search index updates in product list (6f4a89f), closes #1137
- admin-ui Display retry data in job list (9c544bf)
- admin-ui Improve facet filtering for product search input (43f0adb), closes #1078
- admin-ui Use server pagination of product variants (552eafe), closes #1110
- core Add config for enabling/disabling worker health check (f620566), closes #1112
- core Add DB-based buffer storage support to DefaultJobQueuePlugin (f26ad4b), closes #1137
- core Add Product.variantList field (438ac46), closes #1110
- core Add support for stock status in DefaultSearchPlugin (65add05), closes #870
- core Allow DefaultJobQueue retries to be configured per queue (5017622), closes #1111
- core Allow PaginatedList filters to use logical OR operator (e371aa5), closes #1149
- core Correctly index stock status based on saleable stock level (4db9a37), closes #870
- core Create buffering logic for DefaultSearchPlugin (6a47dcf), closes #1137
- core Create JobBuffer infrastructure (d6aa20f), closes #1137
- core Export RequestContextCacheService from core (92aa83f)
- core Expose
nullable
property of CustomFieldConfig (9ec6b90), closes #1083 - core Expose
withTransaction
method on TransactionalConnection (861ef29), closes #1129 - core Expose pending search index updates operations in Admin API (53a1943), closes #1137
- core Expose retry data on Job type in Admin API (4b15ef4)
- core Implement EntityHydrator to simplify working with entities (28e6a3a), closes #1103
- core Make entity cache ttl values configurable (a05e7ab), closes #988
- core Make event bus subscriptions transaction-safe (f0fd662), closes #1107 #520
- core Make extractSessionToken function available in core package (f364e68)
- core Make password hashing strategy configurable (e5abab0), closes #1063
- core Remove all long-lived in-memory state, use short-TTL caching (d428ffc)
- create Improve config defaults (e2f799c), closes #1147
- elasticsearch-plugin Add inStock attribute and filter (#1130) (53cfb8e), closes #1130 #870
- elasticsearch-plugin Allow custom mappings with type
ID
(45c5b2d) - elasticsearch-plugin Allow the SearchInput to be extended (5981619)
- elasticsearch-plugin Custom mappings can return lists & allow additional Product/variant relation hydration (ee47095), closes #1054 #1141
- elasticsearch-plugin Extend config with customScriptFields (d300f8b), closes #1143
- elasticsearch-plugin Index custom product mappings for products without variants (a0b4534)
- elasticsearch-plugin Index stock status based on saleable stock (4efe258), closes #870
- elasticsearch-plugin Support search index job batching (f3fb298), closes #1137
- job-queue-plugin Allow config of retries/backoff for BullMQ (9fda858), closes #1111
- job-queue-plugin Implement Redis-based job buffering (c7b91c3)
- admin-ui Improved Spanish translation of "facets" (#1122) (b20d497), closes #1122
- core Correct cancellation logic with custom Order process (b8448c1), closes #1104
- core Correctly calculate job duration for pending/retrying jobs (73fa278)
- core Fix error when resolving deleted Product from Order (511f04d), closes #1125
- core Fix transaction-related issues with in-memory caching (d35306f)
- create Correct escaping of quotes in templates (9537245)
- job-queue-plugin Close redis connection on destroy (64ebdd1)
- job-queue-plugin Correctly filter BullMQ jobs by isSettled (2f24a33)
- job-queue-plugin More accurate determination of BullMQ job state (3b3bb3b)
- core Simplify hot DB query for active order (fa563f2)
- core Use memoization when caching zone members (54dfbf4), closes #988
- core Use per-request caching for hot ProductVariant paths (214b86b), closes #988
- core Use request cache for hot-path tax rate calculation (9e22e8b)
This release fixes an error in the publishing of the TypeScript definitions from v1.2.2.
- admin-ui Do not cache active admin details between logins (20b4b04), closes #1099
- admin-ui Use correct order total on Customer detail page (ddc2b0a)
- core Fix wrong event type when a variant is created (#1102) (cc45254), closes #1102 #1095
- core Add missing logging & docs to DefaultJobQueuePlugin (423f307)
- core Fix collection update event generation (#1114) (6e7e864), closes #1114 #1015
- core Fix updating customer email with no NativeAuth configured (f6d3a52), closes #1092
- core Gracefully handle errors when populating initial data (36c15b2)
- core Return correct timestamp values for translated entities (ded49c4), closes #1101
- core Soft-delete variants when a product is soft-deleted (ff1ae90), closes #1096
- elasticsearch-plugin Elasticsearch Cloud auth is not set during re-indexing (#1108) (e40fc1c), closes #1108 #1106
- email-plugin Correctly register failed email sending, add retry (f50708a)
- job-queue-plugin Add missing logging & backoff settings (6f7cc34)
- job-queue-plugin Fix redis connection to remote hosts (9e36873), closes #1097
- admin-ui Add missing Spanish translation strings and fix a few typos (#1079) (bd22dc5), closes #1079
- admin-ui Hide "assign to channel" button when creating Product (ffeeaf6), closes #1059
- admin-ui Keep product search bar in sync with url params (58d5634), closes #1053
- admin-ui More consistent width of default custom field controls (001207f), closes #1077
- core Fix validation for nullable custom string fields with options (9afa145), closes #1083
- core Improve log level of ForbiddenError to reduce log noise (5be1dfe), closes #1080
- core Translate root Collection on first creation (46659c7), closes #1068
- core Update login credentials when changing customer email address (1ebc872), closes #1071
- create Do not HTML escape strings used in the config file (954c03a), closes #1070
- admin-ui Add admin-ui Italian translation (#998) (657a32b), closes #998
- admin-ui Allow editing ProductOptionGroup names & options (55d9784), closes #965
- admin-ui Allow OrderAddress custom fields to be modified (175e61a), closes #979
- admin-ui Auto-select newly uploaded assets in AssetPickerDialog (96cc8f9)
- admin-ui Support non-latin Product/Collection slugs (fac735f), closes #1006
- core Add Russian and Ukrainian translation for server messages (#973) (5b4a166), closes #973
- core Add Facet queries to Shop API (#1016) (d6a049c), closes #1016 #1013
- core Allow cookie & bearer session tokens at the same time (fc6b890), closes #960
- core Allow OrderAddress custom fields to be modified (c622f1f), closes #979
- core Always pass current Order to TaxZoneStrategy calls (7b76a7c), closes #1048
- core Export I18nModule as part of PluginCommonModule (cd8f3d4), closes #966
- core Export ProcessContextModule from PluginCommonModule (b787acb)
- core Implement health check server for worker (fd374b3), closes #994
- core Implement internal health check for worker (812b2cb), closes #994
- elasticsearch-plugin Add ability to customize index options and mappings (92587e5), closes #995 #995 #995 #995
- job-queue-plugin Create BullMQJobQueuePlugin (ba9f5d0)
- job-queue-plugin Set default concurrency (0e971e7)
- admin-ui-plugin Do not run server logic in worker context (7c30f0e)
- admin-ui Fix fetch loop on job list view (29c306a), closes #1049
- asset-server-plugin Do not run server logic in worker context (c3a67b6)
- core Correctly persist ProductVariant customFields (e59f52e), closes #1056
- core Fix incorrect common import paths (568e4b2)
- email-plugin Do not run server logic in worker context (f5b6ddc)
- admin-ui Fix regression from v1.1.4 which broke Admin UI (63ad437), closes #1045
- core Correct camel casing for custom orderable asset ids (cd18431), closes #1035
- admin-ui Apply variant name auto-generation for new translations (df3d3f4), closes #600
- admin-ui Correctly display OrderLine custom field values (496ce5e), closes #1031
- admin-ui Correctly set content lang based on available langs (d9531fd), closes #1033
- admin-ui Fix Channel dropdown auto-select in Safari (#1040) (aee8416), closes #1040 #1036
- admin-ui Improve display of long Collection paths in dropdown (4d7032b), closes #1042
- core Allow custom host id when creating new entity with orderable assets (#1035) (aeaf308), closes #1035 #1034
- core Fix custom field validation when updating ProductVariants (372b4af), closes #1014
- core Fix incorrect quantity adjustment (#983) (2441ce7), closes #983 #931
- core Fix publishing CustomerEvent without customer ID (03cd5d7)
- core Fix stock movements when multiple OrderLines have same ProductVariant (1b05f38), closes #1028
- core Improve def of Translated to allow customField typings (3911059), closes #1021
- core Loosen type def for ErrorResultUnion (43ce722)
- admin-ui Fix case sensitivity in product variant filter (02f9995)
- core Correct typings for VendureConfig.catalogOptions (73e859b)
- core Fix update of ProductVariant with relation custom fields (6e794c0), closes #997
- core Fix validation of relation custom fields (fc3a9c5), closes #1000
- core Import localeString custom fields from csv (d25ea26), closes #1001
- admin-ui Fix error when saving Product (dbf6c00)
- admin-ui Correctly display currency names in all languages (bf728d6), closes #971
- admin-ui Correctly refund shipping amount when refunding an order (42ef9bf), closes #989
- admin-ui Fix affix logic of CurrencyInputComponent (bcb57b0), closes #971
- admin-ui Fix broken image re-ordering drag-drop (e052b25), closes #982
- admin-ui Fix Russian & Ukrainian translations (5061a43)
- admin-ui Fix saving relation custom fields on ProductVariants (fb38c68)
- core Correct handling of non-default languages in ListQueryBuilder (837840e), closes #980
- core Correctly handle nested parent collection query in Shop API (2445e48), closes #981
- core Do not crash if asset filesize is over max size limit (b289cc8), closes #990
- core Fix race condition in worker when populating DB schema (7ae1e94), closes #205 #462
- core Handle SqlJobQueueStrategy errors without crashing worker (5d483f6)
- core Handling of GlobalSettings edge-case bug (8d23966), closes #987
- core Update relation custom fields when updating Asset (510025a), closes #952
- ui-devkit Fix baseHref setting when using npm (511c2ed), closes #916 #993
- admin-ui Correctly export relation selector components (56ab5bd), closes #941
- asset-server-plugin Update sharp to fix Linux install issues (e9de674), closes #962
- core Fix occasional failing variantNameCollectionFilter (ac76e2c)
- core Improve fault tolerance of "apply-collection-filters" job (be59bf9)
- core Improve fault-tolerance of JobQueue (cb5b100)
- core Make verifyCustomerAccount channel-independent (#945) (39b3937), closes #945
- admin-ui Add ability to filter promotions by name or coupon code (5795a84)
- admin-ui Add Ukrainian translation (#889) (b0b1716), closes #889
- admin-ui Enable adding OptionGroups to existing products (bd5e7c0), closes #711
- admin-ui Enable selection of content language from list views (eb9cb4f), closes #883
- admin-ui Support "text" custom fields with textarea control (2abd018), closes #885
- admin-ui Support custom field controls in FulfillmentDetail (a8a7eac), closes #887
- admin-ui Support custom field controls in OrderTable (02c2d4e), closes #887
- core Access to orderByCode configurable by strategy (2554822)
- core Add "text" custom field type for storing data over 64k (00c5c43), closes #885
- core Add retries to TransactionalConnection.getEntityOrThrow() (1e3ba7b), closes #937
- core Allow middleware to execute before server.listen (dd89204)
- core Allow Plugin entities to be defined with a function (d130134), closes #906
- core Check availability of variants when adding to Order (ea2b6b0), closes #723
- core Emit CustomerEvent on creation via Shop API (680b8c2), closes #949
- core Enable importing of custom field list data (5d85c07), closes #577
- core Export all helper classes from service layer (d529db0)
- core Export PasswordCipher helper (221051f)
- core Improve typing of TransactionConnection.getEntityOrThrow (eec8808)
- core Publish StockMovementEvent (0a71723), closes #902
- core Add
collections
field to SearchResponse, closes #943 - elasticsearch-plugin Add
collections
field to SearchResponse, closes #943 - email-plugin Add
.setOptionalAddressFields()
- cc, bcc, replyTo (8e9b72f), closes #921 - email-plugin Extend attachment support (70a55fd), closes #882
- admin-ui Handle all ErrorResults when creating a Fulfillment (75952dd), closes #929
- core Correct handling of nested variantNameCollectionFilters (14b40bb), closes #927
- core Do not return private collections in Shop API (33f40f2), closes #928
- core Fix Admin/Customer user conflict with external auth (69f46a3), closes #926
- core Remove "Placeholder" from Permission enum (eabfe77)
- admin-ui Allow Channel tokens to be updated from ChannelDetail (cafa04e)
- core Do not error when removing deleted variant from channel (e3e8828)
- core Fix worker error when using custom Logger (cbe764a), closes #912
- core Update search index when removing translated variants (fced1dc), closes #896
- create Remove tslib resolution from package.json (863ffcb), closes #925
- admin-ui Account for refunds when calculating outstanding payment (fce00c4)
- admin-ui Fixed unsupported plural for Simple Chinese translation (#888) (d43602f), closes #888
- core Correctly calculate refund amount when modifying order (56d058d), closes #890
- core Prevent FK error when migrating with better-sqlite3 driver (8bfa03d), closes #880
- core Publish PaymentStateTransitionEvent when settlePayment fails (c01106c), closes #886
- core Update NestJS & graphql-related deps to fix version conflict. This fix enables compatibility with npm v7.x (8891c43), closes #532 blob/9267a79b974e397e87ad9ee408b65c46751e4565/CHANGELOG.md#v2230
- create Remove redundant synchronize warning (73841e4)
Vendure v1.0 is here! 🎉
Note with this release, all deprecated APIs have been removed. If you were still using any, you'll have a very small amount of work to do in switching over to their replacements. Removed deprecated APIs:
- TypeScript:
EventBus.sucscribe()
, useEventBus.ofType()
instead. - TypeScript:
getEntityOrThrow()
helper. UseTransactionalConnection.getEntityOrThrow()
instead. - TypeScript:
Injector.getConnection()
. UseInjector.get(TransactionalConnection)
instead. - TypeScript:
PriceCalculationStrategy
. UseOrderItemPriceCalculationStrategy
instead. - TypeScript:
TaxCalculationStrategy
. UseProductVariantPriceCalculationStrategy
instead. - TypeScript:
VendureConfig.authOptions.sessionSecret
. UseVendureConfig.authOptions.cookieOptions.secret
instead. - TypeScript - AssetServerPlugin: The
region
option of the S3AssetStorageStrategy should be moved into thenativeS3Configuration
object. - GraphQL:
SearchResult
type -productPreview
&productVariantPreview
fields. UseproductAsset.preview
,productVariantAsset.preview
instead. - GraphQL:
Order.adjustments
. UseOrder.discounts
instead. - GraphQL:
OrderItem.unitPriceIncludesTax
. This is removed as redundant -unitPrice
is always without tax. - GraphQL:
OrderLine.totalPrice
. UseOrderLine.linePriceWithTax
instead. - GraphQL:
OrderLine.adjustments
. UseOrderLine.discounts
instead. - GraphQL:
Product.priceIncludesTax
. This is removed as redundant -price
is always without tax.
- admin-ui Improve FR translations (#884) (ad5bc2b), closes #884
- admin-ui Display refund metadata (#875) (7bc7372), closes #875
- admin-ui Enable retrying of failed refunds (4fc749d), closes #873
- admin-ui Fix configurable arg forms becoming unresponsive (6039f0c)
- admin-ui Update Chinese translations (#878) (084dc31), closes #878
- core Correct order totals in order modification preview (1795f48), closes #872
- core Fix bug in applying OrderItem promotions with postgres (aaa8393)
- core Fix multiple refunds on the same OrderLine (7316d31), closes #868
- core Fix refunds after failures & with multiple payments (ed30874), closes #873
- core Handle array circular refs when serializing RequestContext (4abb912), closes #864
- core Include tax setting when populating default shipping methods (26ce6ff)
- core Fix transition to PaymentSettled with multiple payments (c60fad7), closes #847
- core Handle different input types in validateRequiredFields() (#861) (2ca6bfd), closes #861 #855
- core Allow plugins to define global Nestjs providers (97edcb9), closes #837
- core Display informative message when saving a translatable fails (ce6293d)
- core Fix error on concurrent calls to new channel (fad9006), closes #834
- core Fix missing customField input for Assets (772bd8d), closes #844
- admin-ui Support new permissions (57566b0), closes #617
- core Allow default Roles to be defined in InitialData (d866325)
- core Improved translations (a8ca019), closes #839
- core More granular (entity-based) permissions (4ed2ed5), closes #617
- elasticsearch-plugin Improve indexing memory usage #833
- admin-ui Fix error when updating roles (432c89c), closes #828
- admin-ui Make dropdowns scrollable (e887a2b), closes #824
- core Backoff strategy does not block next jobs (709cdff), closes #832
- core Fix crash on updating Facet code (755ebc4), closes #831
- core Fix error when assigning deleted ProductVariant to channel (b5d0e43)
- elasticsearch-plugin Fix bad import (9c76767)
- admin-ui Add Russian translations (#829) (650f38e), closes #829
- core Added i18n messages for DE (#830) (d62628b), closes #830
- core JobQueueStrategy pollInterval accepts function (c2701b9)
- admin-ui Display guest orders in OrderList (c1dcb19)
- admin-ui-plugin Bump version to make fix available
- admin-ui Better display Fulfillment customFields in Order detail (0e9f528), closes #816
- core Handle relation customFields when creating Fulfillments (9559e34), closes #816
- core Join eager relations on OrderService.findOne method (5e181ea)
- core Return all assets when querying product by slug (acb3fb0), closes #820
- email-plugin Added filename filter for json files (#821) (317a63c), closes #821
- email-plugin make @types/nodemailer a dependency to resolve #817 (1c2b353), closes #817 #817
- admin-ui Display payment errors in OrderDetail view (cf31cbf)
- admin-ui Filter Customer list by customer last name (6df325b), closes #572
- admin-ui Filter Order list by customer last name (690dfa7), closes #572
- admin-ui Improve display of OrderLine customFields (fde3ffc)
- admin-ui UI for deletion of PaymentMethods (fa67076)
- core Add server translations via plugin application bootstrap (13a4b68), closes #810
- core Allow ListQuery sort/filter inputs to be manually extended (834ea2d), closes #572
- core Allow setting PaymentState on failure to settle Payment (0241ade), closes #809
- core Configurable backoff strategy for DefaultJobQueuePlugin (be0a27d), closes #813
- core Implement deletion of PaymentMethods (f97cd4f)
- core Implement sort/filter OrderList by customerLastName (c29e6f2), closes #572
- elasticsearch-plugin Add facetFilters input for search query (23cc655), closes #726
- core Reduce memory usage of apply-collection-filters job (76361d5)
- admin-ui AssetPickerDialog can take initial tags (03c6706)
- asset-server-plugin Support Apple M1 (update Sharp to 0.28) (1335080), closes #803
- core Add ability to get variants for a specific product in productVariants query (1da0592), closes #786
- core Add name and description fields to eligiblePaymentMethods query (fd28208), closes #738
- admin-ui Fix asset search component (d65277e)
- admin-ui Fix errors caused by lists greater than 1000 items (5844715), closes #807
- admin-ui Fix facet display in product search bar (a05044d)
- core Fix product query by slug (2ace0eb), closes #800
- core Correct ordering of Collection breadcrumbs (92952fb)
- core Correctly defer incomplete jobs on shutdown (d3fa83a)
- core Correctly handle multiple external auth methods (b397ba2), closes #695
- core Fix edge case in auth guard resolver detection (b190300)
- core Fix memory leak in default JobQueueStrategies (e9e3c18)
- core Fix some issues with sorting/filtering calculated properties (2d89554)
- core Fix sorting of Order calculated properties in Postgres (e9b18fe)
- core Fix TypeScript TS2502 error in Translation type (a4243c4), closes #787
- core Prevent customer data leak via Shop API (8ea544b), closes #730
- core Resolver permission changes work with REST routes (b61b47d)
- core AssetService can create assets from Readable streams (9d80145)
- core Enable the use of Permissions of GraphQL field resolvers (5c837b8), closes #730
- core Implement size limits for paginated list results (92be4e0), closes #751
- admin-ui Fix buggy price input in ProductVariant list & table (f2b53ca), closes #770
- admin-ui Fix display of string results in JobQueue list (10899f3)
- admin-ui Make assetPreview pipe handle null inputs (2c19759)
- core Correctly compare falsy customField values in OrderLines (265781c)
- core Fix gql error when OrderLine has only private customFields (4440fea)
- core Fix race condition in updating JobRecords (b446c8f)
- core Improve reliability of Job cancellation (410b4c2)
- core Make addPaymentToOrder channel aware (6338212), closes #773
- core Save relation custom fields in addItemToOrder mutation (10d43e8), closes #760
- email-plugin Fix broken images in order-confirmation mock emails (82eefde)
- admin-ui Display Order discounts with & without tax (ea5a9f2), closes #749
- admin-ui Improve German translations (3497e81)
- core Add
code
field to ShippingMethodQuote (847b4e2), closes #780 - core Add CustomerEvent and CustomerAddressEvent (480de31)
- core Enable population of relational custom fields from CSV (38611fb)
- core Include with/without tax amounts on discounts (2de6bf5), closes #749
- core Make DefaultJobQueuePlugin configurable (6373d9f)
- core Make JobQueue jobs subscribable (baba268), closes #775
- core Reinstate ProcessContext provider (9e30505), closes #772
- email-plugin Fix broken mock events (9ae47f1), closes #771
- A minor breaking change has been made to the GraphQL API: The
Order.discounts
andOrderLine.discounts
fields now returnamount
andamountWithTax
. Previously they only hadamount
, which was actually the tax-inclusive value. So if you want to show discount amounts with tax, useamountWithTax
and otherwise useamount
.
- asset-server-plugin Make S3 credentials optional (56bcbff), closes #733
- core Correctly handle refunds on Orders with multiple Payments (f4ed0e7)
- core Filter Promotions on Channel before applying to Order (0cb29e5)
- core Hide private OrderLine customFields in addItemToOrder (c2c7f1d)
- core Payment amount accounts for existing Payments on Order (e92d2ce)
- core Really correctly handle multiple payment refunds (ba8d411)
- core Resolve all LocaleString fields in GraphQL API (3ddadc0), closes #763
- core Resolve all ProductVariant price fields in GraphQL API (2bd289a), closes #763
- ui-devkit Fix Angular compiler compatibility issue (05b2b12), closes #758
- asset-server-plugin Allow assetUrlPrefix to be a function (10eb014), closes #766
- core Add Promotion Channel mutations to Admin API (ff051ae)
- core add promotion state and promotion action-condition dependency (dd66138)
- core Allow to pass validationRules to shop and admin GraphQL API (02a37ec)
- admin-ui-plugin Fix proxy port when in dev mode (28b096c)
- core Fix featuredAsset error when adding item to Order (e635f25), closes #756
- core Fix foreign key error on merging orders (5e385df), closes #754
- core Fix indexing of long descriptions in postgres (9efd7db), closes #745
- core Prevent max integer error in job duration (305727e), closes #755
- core Fix error in SqlJobQueueStrategy when using SQLite (c775822)
- admin-ui Improved control over Order payments (475b72a), closes #688 #507
- admin-ui Make order modification note not required (432a51a), closes #688
- core Allow loading of Order with deleted ShippingMethod (7ba27f2), closes #716
- core Allow unsetting PaymentMethod checkers (48c0e96), closes #469
- core Apply Promotions when calculating modified order total (c678a21), closes #688
- core Correctly handle negative "skip"/"take" in list query options (04a4c39)
- core Do not return assets not in current channel (5de1141), closes #717
- core Fix "float" customField types (b4dc912)
- core Fix Asset uploads on Node v13+ (049c75c), closes #396
- core Fix broken Collection population (29ff1f9)
- core Fix OrderMergeStrategy implementation (3193080), closes #669
- core Fix transaction errors in job queue for better-sqlite3 (0043ace)
- core Improve error message for missing price data (634e14b)
- core Include shipping tax in Order.taxSummary (cf5aa31), closes #729
- core Invoke SessionCacheStrategy lifecycle hooks (c3c5888)
- core Make CustomFulfillmentProcess injectable (8bce2b4)
- core Make CustomPaymentProcess injectable (a0a9352)
- core Make SqlJobQueueStrategy concurrency-safe (5e5e55a)
- core Prevent plugin providers multiple instantiation (98e463e)
- core Relax some restrictions on adding new payments to Order (26c1b7a), closes #688
- core RememberMe args not passed correctly for NativeAuthenticationStrategy (532ea21)
- core Remove inapplicable order-level discounts (2396cc3), closes #710
- create Fix broken bootstrap when populating data (5dcf6e5)
- elasticsearch-plugin Delete product/variant indexes for all channels (80fabb0)
- email-plugin Correctly initialize email processor (819e480)
- admin-ui Add support for "relation" custom field type (63e97c7), closes #308 #464
- admin-ui Filter Asset list by tags (c244c0a), closes #316
- admin-ui Implement creation of new PaymentMethods (09a1a97), closes #671
- admin-ui Implement default TaxCategory support (90ed7c4), closes #566
- admin-ui Implement PaymentMethod checker/handler UI (15fc707), closes #469
- admin-ui Manage tags interface (205391d), closes #316
- admin-ui Open Asset selection when clicking placeholder (c39fa55)
- admin-ui PaymentMethod & promotions list update on channel change (c02518c), closes #587
- admin-ui Support channel-aware Facets & FacetValues (4ccc65e), closes #612
- admin-ui Support custom fields on Administrator & Channel (ecd1b17), closes #598
- admin-ui Support for editing Asset custom fields (f109436), closes #684
- admin-ui Tags can be assigned to Assets in detail view (995d1b4), closes #316
- asset-server-plugin Add S3 upload options in configuration (fa4d1c0)
- core Add eligiblePaymentMethods query to Shop API (e528c09), closes #469
- core Add order line limit to Vendure configuration (6755329)
- core Add support for Asset tags (71cf3b9), closes #316
- core Add support for relation custom fields on Channel entity (7b96b9f), closes #598
- core Allow custom field validate fn to be async & injectable (5e04a14)
- core Allow NestJS middleware to be passed in apiOptions (44d0b45)
- core Base custom payment process (83af699)
- core Channel aware assets (4ea74e2), closes #677
- core Create APIs & resolver for Tag operations (6630063), closes #316
- core De-couple PaymentMethod from PaymentMethodHandler (ee9ba23), closes #671
- core Export startJobQueue helper from boostrapWorker() (d6e4af5)
- core Facet:value pairs can be used in InitialData collection def (2dc7f15)
- core Implement "relation" custom field type (3e1a900), closes #308 #464
- core Implement ChangedPriceHandlingStrategy (3aae4fb), closes #664
- core Implement eligibility checking for PaymentMethods (690514a), closes #469
- core Implement isDefault on TaxCategory (7eb21d1), closes #566
- core Implement StockDisplayStrategy to display stockLevel in API (2709922), closes #442
- core Import ServiceModule into AppModule to expose services (117a0a7)
- core Introduce OrderPlacedStrategy for better control of process (b9b7767)
- core Make Facets/FacetValues Channel-aware (e8fcb99), closes #612
- core Make PaymentMethod channel-aware (1a3b04f), closes #587
- core Make ProductOptionGroup / ProductOption soft-deletable (0c997bf), closes #291
- core Support custom fields on Administrator entity (260ccfc), closes #598
- core Support custom fields on Channel entity (489faf5), closes #598
- core Support custom Payment process (d3b0f60), closes #359 #507
- core Support for custom fields on Asset entity (60b6171), closes #684
- core Correctly optimized OrderItem persistence (5c879e7)
- core Improve order quantity update performance (3c20837)
- core Run job queues in the worker process (f05210a)
Order.taxSummary
now includes shipping taxes- A database migration is required for the new Asset tags support.
- New DB relation Asset to Channel, requiring a migration. The Admin API mutations
deleteAsset
anddeleteAssets
have changed their argument signature. - The Facet and FacetValue entities are now channel-aware. This change to the schema will require a DB migration.
- The OrderItem entity has a new field,
initialListPrice
, used to better handle price changes to items in an active Order. This schema change will require a DB migration. - The PaymentMethod entity and type has changed. Previously, a PaymentMethod was coupled to the configured PaymentMethodHandlers 1-to-1. Now the PaymentMethodHandler is just a configurable property of the PaymentMethod, much in the same way that a ShippingCalculator relates to a ShippingMethod. Any existing PaymentMethod entities will need to be migrated to the new structure.
- The PaymentMethod entity is now channel-aware which will require a DB migration to migrate existing PaymentMethods
- The ProductOptionGroup & ProductOption entities have a new
deletedAt
column which will require a DB migration. - The signature of the
OrderMergeStrategy.merge()
method has changed. If you have implemented a custom OrderMergeStrategy, you'll need to update it to return the expected type. - The TaxCategory entity now has an
isDefault
property, requiring a DB migration.
- admin-ui Typing error on pt-Br i18n (#725) (50aafb3), closes #725
- core Allow asset uploads with same major mime type (070c5f2), closes #727
- core Fix list query sorting by non-default language with filters (1e31828)
- core Prevent Facet code conflicts (bce3b59), closes #715
- email-plugin Support custom EmailGenerators and EmailSenders (3e20624)
- core Implement productVariants list query in Admin API (6d830a0)
- core Language fallback when querying Product/Collection by slug (5967c8a), closes #538
- admin-ui Fix modification of order addresses (cd9a812), closes #688
- common Correctly normalize strings with single quotes (d12f369), closes #679
- core Clean up Sessions when deleting a Channel (7e7d4b8), closes #686
- core Correctly constrain inventory on addItemToOrder mutation (8975247), closes #691
- core Do not modify billing address when shipping address changed (7e9a709), closes #688
- core Fix bad column reference in querybuilder string (61e9f83), closes #687
- core Fix sorting by price on productVariants list (0102232), closes #690
- core Fix sorting by translatable fields in list queries (d00bafb), closes #689
- core Loosen restriction on transitioning to PaymentAuthorized (59d39d6)
- core Products without variants are indexed by DefaultSearchPlugin (2dab174), closes #609
- core Reduce chance of index err in assigning variants to channels (58e3f7b)
- elasticsearch-plugin Products without variants are indexed (21b6aa3), closes #609
- admin-ui Fix filtering products by term in Channel (d880f8e)
- admin-ui Fix role editor Channel value display (c258975)
- admin-ui Fix various issues with product variant management view (d34f935), closes #602
- admin-ui Translate missing Brazilian (PT-br) i18n json (808d1fe)
- core Do not allow updating products not in active channel (4b2fac7)
- core Prevent multiple ProductVariantPrice creation (c853033), closes #652
- core Re-calculate OrderItem price on all OrderLine changes (0d8c485), closes #660
- core Update search index for all channels on updates (85de520), closes #629
- elasticsearch-plugin Update search index for all channels on updates (2be29c2), closes #629
- admin-ui Nav menu requirePermissions accepts predicate fn (c74765d), closes #651
- admin-ui Support "required" & "defaultValue" in ConfigArgs (6e5e482), closes #643
- core Support "defaultValue" field in ConfigArgs (92ae819), closes #643
- core Support "required" field in ConfigArgs (9940385), closes #643
- elasticsearch-plugin LanguageCode support in CustomMappings (b114428)
- admin-ui Fix translation of facet values (a6f3083), closes #636
- admin-ui Order widget i18n fix (68b8adb)
- admin-ui Preserve asset changes between product list/table view (c83e511), closes #632
- admin-ui Preserve changes between product/variant tabs (242787a), closes #632
- admin-ui Preserve variant price changes between list/table views (43bd770), closes #632
- admin-ui Update CS translations (d18dab0)
- asset-server-plugin Fix corrupt SVG previews (3a16d87), closes #456
- core Add ReadOrder perm to fulfillment-related shipping queries (72ed50c), closes #644
- core Allow list queries to filter/sort on calculated columns (5325387), closes #642
- core Clear order discounts after removing coupon code (e1cce8f), closes #649
- core Correctly prorate order discounts over differing tax rates (b128425), closes #653
- core Correctly return order quantities from list query (a2e34ec), closes #603
- core Do not error when querying fulfillment on empty order (b0c0457), closes #639
- core Fix NaN error when prorating discount over zero-tax line (51af5a0)
- core Gracefully handle errors in JobQueue (6d1b8c6), closes #635
- admin-ui Auto update ProductVariant name with Product name (69cd0d0), closes #600
- admin-ui Auto update ProductVariant name with ProductOption name (0e98cb5), closes #600
- admin-ui Currencies respect UI language setting (5530782), closes #568
- admin-ui Dates respect UI language setting (dd0e73a), closes #568
- admin-ui Display channel filter when more than 10 Channels (b1b363d), closes #594
- email-plugin Allow attachments to be set on emails (0082067), closes #481
- email-plugin Do not re-send order confirmation after modifying (ddb71df), closes #650
- admin-ui Refresh ShippingMethodList on channel change (6811ca8), closes #595
- admin-ui Shipping method validators fix (bbdd5be)
- admin-ui Translate to Spanish all languages available (b56e45d)
- core Always include customFields on OrderAddress type (c5e3c6d), closes #616
- core Fix error when creating Product in sub-channel (96c5103), closes #556 #613
- admin-ui Add dark mode theme & switcher component (76f80f6), closes #391
- admin-ui Add default branding values to vendure-ui-config (50aeb2b), closes #391
- admin-ui Add support for job cancellation (c6004c1), closes #614
- admin-ui Allow "enabled" state to be set when creating products (3e006ce), closes #608
- admin-ui Enable theming by use of css custom properties (68107d2), closes #391
- core Add
cancelJob
mutation (2d099cf), closes #614 - core Allow "enabled" state to be set when creating products (02eb9f7), closes #608
- ui-devkit Allow custom global styles to be specified (2081a15), closes #391
- ui-devkit Allow extensions consisting of only static assets (5ea3422), closes #391 #309
- ui-devkit Export helper function to set brand images (6cde0d8), closes #391
- admin-ui Correctly handle order modification with no custom fields (c0b699b)
- admin-ui Correctly handle widget permissions (e3d7855)
- admin-ui Fix error when creating new Channel (58db345)
- admin-ui Fix memory leak with refetchOnChannelChange usage (1bad22a)
- admin-ui Fix variant price display issues (f62f569)
- core Correct handling of discounts & taxes when prices include tax (c04b1c7), closes #573
- core Correctly handle addItemToOrder when 0 stock available (187cf3d)
- core Fix ChannelAware ProductVariant performance issues (275cd62)
- core Fix default PromotionActions when Channel prices include tax (efe640c), closes #573
- core Fix error on updateCustomer mutation (bb1878f), closes #590
- core Fix failing e2e tests (36b6dab)
- core Fix Postgres search with multiple terms (5ece0d5)
- core Handle undefined reference in customerGroup condition (0eaffc1)
- core Ignore deleted products when checking slug uniqueness (844a12d), closes #558
- core Return all ProductVariant.channels from default Channel (799f306)
- admin-ui Add support for dashboard widgets (aa835e8), closes #334
- admin-ui Allow cancellation of OrderItems without refunding (df55d2d), closes #569
- admin-ui Allow default dashboard widget widths to be set (3e33bbc), closes #334
- admin-ui Allow OrderLine customFields to be modified (e89845e), closes #314
- admin-ui Allow OrderLine customFields to be modified (5a4811f), closes #314
- admin-ui Allow overriding built-in nav menu items (9d862c6), closes #562
- admin-ui Allow setting FulfillmentHandler in ShippingDetail page (8207c84), closes #529
- admin-ui Correctly display cancelled Fulfillments (7efe800), closes #565
- admin-ui Display order tax summary, update to latest Order API (9b8e7d4), closes #573
- admin-ui Display surcharges in OrderDetail (bbcc6d8), closes #583
- admin-ui Display tax description in OrderDetail tax summary (843bec2)
- admin-ui Enable manual order state transitions (0868b4c)
- admin-ui Fulfillment dialog accepts handler-defined arguments (c787241), closes #529
- admin-ui Implement order modification flow (d3e3a88), closes #314
- admin-ui Implement reordering, resize, add, remove of widgets (9a52bdf), closes #334
- admin-ui Implement variant channel assignment controls (83a33b5), closes #519
- admin-ui Persist dashboard layout to localStorage (ace115d)
- admin-ui Persist dashboard layout to localStorage (15cae77), closes #334
- core Add Order history entry for modifications (894f95b), closes #314
- core Allow multiple Fulfillments per OrderItem (3245e00), closes #565
- core Allow Order/OrderLine customFields to be modified (ce656c4), closes #314
- core ChannelAware ProductVariants (4c1a2be)
- core Extend OrderLine type with more discount & tax info (aa5513f), closes #573
- core Implement add/remove Surcharge methods in OrderService (6cf6984), closes #583
- core Implement FulfillmentHandlers (4e53d08), closes #529
- core Implement order modification (9cd3e24), closes #314
- core Implement Order surcharges (b608e14), closes #583
- core Implement Shipping promotion actions (69b12e3), closes #580
- core Implement TaxLineCalculationStrategy (95663b4), closes #307
- core Improve naming of price calculation strategies (ccbebc9), closes #307
- core Improved handling of ShopAPI activeOrder mutations (958af1a), closes #557
- core Log unhandled errors (4dbb974)
- core Modify ShippingCalculator API to enable correct tax handling (1ab1c81), closes #580 #573
- core Pass
amount
argument into createPayment method (0c85c76) - core Re-work handling of taxes, order-level discounts (9e39af3), closes #573 #573
- core Rework Order shipping to support multiple shipping lines (a711780), closes #580
- core Simplify TaxCalculationStrategy API (9544dd4), closes #307
- core Split taxes from adjustments (2c71a82), closes #573
- ui-devkit Make baseUrl configurable (54700d2), closes #552
-
A change to the relation between OrderItems and Fulfillments means a database migration will be required to preserve fulfillment data of existing Orders. See the release blog post for details.
-
In order to support order modification, a couple of new default order states have been created -
Modifying
andArrangingAdditionalPayment
. Also a new DB entity,OrderModification
has been created. -
The
OrderLine.pendingAdjustments
field has been renamed toadjustments
, tax adjustments are now stored in a new field,taxLines
. This will require a DB migration to preserve data from existing Orders (see guide in release blog post) -
The
PaymentMethodHandler.createPayment()
method now takes a newamount
argument. Update any custom PaymentMethodHandlers to use account for this new parameter and use it instead oforder.total
when creating a new payment.// before createPayment: async (ctx, order, args, metadata) { const transactionAmount = order.total; // ... } // after createPayment: async (ctx, order, amount, args, metadata) { const transactionAmount = amount; // ... }
-
The
TaxCalculationStrategy
has been renamed toProductVariantPriceCalculationStrategy
and moved in the VendureConfig fromtaxOptions
tocatalogOptions
and its API has been simplified. ThePriceCalculationStrategy
has been renamed toOrderItemPriceCalculationStrategy
. -
The Fulfillment and ShippingMethod entities have new fields relating to FulfillmentHandlers. This will require a DB migration, though no custom data migration will be needed for this particular change.
-
The
addFulfillmentToOrder
mutation input has changed: themethod
&trackingCode
fields have been replaced by ahandler
field which accepts a FulfillmentHandler code, and any expected arguments defined by that handler. -
The ProductTranslation entity has had a constraint removed, requiring a schema migration.
-
The return object of the ShippingCalculator class has changed:
// before return { price: 500, priceWithTax: 600, }; // after return { price: 500, taxRate: 20, priceIncludesTax: false, };
This change will require you to update any custom ShippingCalculator implementations, and also to update any ShippingMethods by removing and re-selecting the ShippingCalculator.
-
The Shop API mutations
setOrderShippingAddress
,setOrderBillingAddress
setOrderCustomFields
now return a union type which includes a newNoActiveOrderError
. Code which refers to these mutations will need to be updated to account for the union with the fragment spread syntax...on Order {...}
. -
The TaxCalculationStrategy return value has been simplified - it now only need return the
price
andpriceIncludesTax
properties. TheProductVariant
entity has also been refactored to bring it into line with the corrected tax handling of the OrderItem entity. This will require a DB migration. See release blog post for details. -
The way shipping charges on Orders are represented has been changed - an Order now contains multiple ShippingLine entities, each of which has a reference to a ShippingMethod. This will require a database migration with manual queries to preserve existing order data. See release blog post for details.
-
There have been some major changes to the way that Order taxes and discounts are handled. For a full discussion of the issues behind these changes see #573. These changes will require a DB migration as well as possible custom scripts to port existing Orders to the new format. See the release blog post for details.
-
The following GraphQL
Order
type properties have changed:subTotalBeforeTax
has been removed,subTotal
now excludes tax, andsubTotalWithTax
has been added.totalBeforeTax
has been removed,total
now excludes tax, andtotalWithTax
has been added.
This release fixes an error in publishing the last release. No changes have been made.
- admin-ui Add French translations (891be89)
- core Implement negated string filter operators (75b5b7a), closes #571
- core Include express request object in RequestContext (c4352b2), closes #581
- core Log unhandled errors (c9a0bcc)
- email-plugin Improve error logging (70cb932), closes #574
- testing Create TestingLogger (c4bed2d)
- admin-ui Fix error when creating new Channel (b38e35d)
- admin-ui Add "allocated" and "saleable" values to Variant form (0df7c71), closes #554
- admin-ui Add profile page to edit current admin details (e183041)
- admin-ui Allow fulfillment when in PartiallyDelivered state (b36ce38), closes #565
- admin-ui Improved login error message (2b952aa)
- admin-ui Persist custom order filter params in url (8eb6246), closes #561
- admin-ui Store last used order list filters in localStorage (7a9ba23), closes #561
- core Add
activeAdministrator
query to Admin API (70e14f2) - core Add
updateActiveAdministrator
mutation (73ab736)
- admin-ui Add missing Czech translations for new translation tokens (f2b541f)
- admin-ui Refetch customer list on channel change (078de40)
- admin-ui Add missing "authorized" state translation (788ba87)
- admin-ui Add missing "state.error" token (b40843a)
- admin-ui Fix payment states (df32ba1)
- admin-ui Fix permission handling in nav menu (70037e5)
- admin-ui Use select control for string custom field with options (5c59b67), closes #546
- admin-ui Use the ShippingMethod name in fulfillment dialog (ca2ed58)
- admin-ui Use translated state labels in custom filter select (5f6f9ff)
- core Allow configurable stock allocation logic (782c0f4), closes #550
- core Correctly cascade deletions in HistoryEntries (6054b71)
- core Correctly encode IDs in nested fragments (d2333fc)
- core Correctly update cache in customerGroup promo condition (8df4fec)
- core Fix double-allocation of stock on 2-stage payments (c43a343), closes #550
- core Mitigate QueryRunnerAlreadyReleasedError in EventBus handlers (739e56c), closes #520
- core Validate all Role permissions on bootstrap (60c8a0e), closes #450
- admin-ui Account for stockOnHand when creating Fulfillments (540d2c6), closes #319
- admin-ui Add filter presets to the OrderDetail view (4f5a440), closes #477
- admin-ui Allow the setting of custom Permissions (d525a32), closes #450
- admin-ui Display Fulfillment custom fields (838943e), closes #525
- admin-ui Implement UI controls for setting outOfStockThreshold (335c345), closes #319
- admin-ui Support for ShippingMethod translations & custom fields (e189bd4), closes #530
- admin-ui Support new API for ProductVariant.trackInventory (b825df1)
- core Add
shouldRunCheck
function to ShippingEligibilityChecker (3b7e7db), closes #536 - core Add tax summary data to Order type (a666fab), closes #467
- core Allow custom Permissions to be defined (1baeedf), closes #450
- core Emit event when assigning/removing Customer to/from group (6676335)
- core Enable inventory tracking by default in GlobalSettings (31bb06a)
- core Export custom entity field types (21706b3)
- core Export HistoryService (8688c35)
- core Export StockMovementService (fe98c79), closes #550
- core Expose additional price & tax data on OrderLine (c870684), closes #467
- core Expose assignable Permissions via ServerConfig type (ab2f62c), closes #450
- core Implement
in
string filter for PaginatedList queries (7c7dcf2), closes #543 - core Implement
regex
string filter for PaginatedList queries (0a33441), closes #543 - core Implement constraints on adding & fulfilling OrderItems (87d07f8), closes #319
- core Implement inheritance for ProductVariant.trackInventory (f27f985)
- core Improve feedback & error handling in migration functions (7a1773c)
- core Make ShippingMethod translatable (c7418d1), closes #530
- core New "Created" initial state for Fulfillments (a53f27e), closes #510
- core New "Created" initial state for Orders (7a774e3), closes #510
- core OrderItem.unitPrice now always excludes tax (6e2d490), closes #467
- core Pass RequestContext to AssetNamingStrategy functions (48ae372)
- core Pass RequestContext to AssetPreviewStrategy functions (05e6f9e)
- core Pass RequestContext to AuthenticationStrategy.onLogOut() (a46ea5d)
- core Pass RequestContext to OrderMergeStrategy functions (eae71f0)
- core Pass RequestContext to PaymentMethodHandler functions (9c2257d), closes #488
- core Pass RequestContext to PriceCalculationStrategy (8a58325), closes #487
- core Pass RequestContext to PromotionAction functions (0a35a12)
- core Pass RequestContext to ShippingCalculator functions (6eee894)
- core Pass RequestContext to ShippingEligibilityChecker functions (a5db022)
- core Pass RequestContext to TaxZoneStrategy functions (a4d4311)
- core Return ErrorResult when setting ineligible ShippingMethod (0e09d51)
- core Support custom fields on Fulfillment entity (380f68e), closes #525
- core Track stock allocations (75e3f9c), closes #319
-
Deletions of Orders or Customers now cascade to any associated HistoryEntries, thus preserving referential integrity. This involves a DB schema change which will necessitate a migration.
-
Fulfillments now start in the new "Created" state, and then immediately transition to the "Pending" state. This allows e.g. event listeners to pick up newly-created Fulfillments.
-
Orders now start in the new "Created" state, and then immediately transition to the "AddingItems" state. This allows e.g. event listeners to pick up newly-created Orders.
-
The
AuthenticationStrategy.onLogOut()
function signature has changed: the first argument is now the RequestContext of the current request. -
The
OrderItem.unitPrice
is now always given as the net (without tax) price of the related ProductVariant. Formerly, it was either the net or gross price, depending on thepricesIncludeTax
setting of the Channel. If you have existing Orders whereunitPriceIncludesTax = true
, you will need to manually update theunitPrice
value before running any other migrations for this release. The query will look like:UPDATE order_item SET unitPrice = ROUND(unitPrice / ((taxRate + 100) / 100)) WHERE unitPriceIncludesTax = 1
-
The
OrderLine.totalPrice
field has been deprecated and will be removed in a future release. Use the newOrderLine.linePriceWithTax
field instead. -
The
PaymentMethodHandler
function signatures have changed:createPayment()
,settlePayment()
&createRefund()
now all get passed the RequestContext object as the first argument. -
The
PriceCalculationStrategy.calculateUnitPrice()
function signature has changed: the first argument is now the RequestContext of the current request. -
The
ProductVariant.trackInventory
field is now an Enum rather than a boolean, allowing explicit inheritance of the value set in GlobalSettings. This will require a DB migration with a custom query to transform the previous boolean values to the new enum (string) values of "TRUE", "FALSE" or "INHERIT". Check the release blog post for more details. -
The
ShippingMethod
entity is now translatable. This change will require a DB migration to be performed, including custom queries to migrate any existing ShippingMethods to the new table structure (see release blog post for details). -
The AssetNamingStrategy
generateSourceFileName()
&generatePreviewFileName()
function signatures have changed: the first argument is now the RequestContext of the current request. -
The AssetPreviewStrategy
generatePreviewImage()
function signature has changed: the first argument is now the RequestContext of the current request. -
The internal handling of stock movements has been refined, which required changes to the DB schema. This will require a migration.
-
The OrderMergeStrategy
merge()
function signature has changed: the first argument is now the RequestContext of the current request. -
The PromotionAction
execute()
function signature has changed: the first argument is now the RequestContext of the current request. -
The ShippingCalculator
calculate()
function signature has changed: the first argument is now the RequestContext of the current request. -
The ShippingEligibilityChecker
check()
function signature has changed: the first argument is now the RequestContext of the current request. -
The TaxZoneStrategy
determineTaxZone()
function signature has changed: the first argument is now the RequestContext of the current request.
- admin-ui Add missing I18n state tokens (215a637)
- admin-ui Fix Apollo cache warning for GlobalSettings.serverConfig (8b135ad)
- admin-ui Fix CustomerGroupList layout in Firefox (c432a14), closes #531
- admin-ui Fix overflow that made ui unusable on mobile (f129e0c)
- admin-ui Fix saving countries in other languages (11a1004), closes #528
- core Add retry logic in case of transaction deadlocks (3b60bcb), closes #527
- core Export FacetValueChecker promotion utility (fc3890e)
- admin-ui Auto-fill Product & Collection slugs in other languages (9393d04), closes #522
- admin-ui Correct display of args input in PaymentMethodDetail (3f7627e), closes #489
- admin-ui Fix collection list "expand all" behaviour when toggling (c77af2b), closes #513
- admin-ui Fix display of existing variants in ProductVariantEditor (ca538b8), closes #521
- admin-ui Preserve expanded state on moving collections (8d028cf), closes #515
- core Add missing events to export (fulfillment, logout) (04a49bf)
- core Correctly de-duplicate OrderLines with empty custom fields (ef99c22), closes #512
- email-plugin Only call
loadData()
function after filters run (e22db7e), closes #518
- admin-ui Add Czech translations (89ee826)
- admin-ui Enable filtering by custom Order states in list view (76d2d56)
- core Add custom error result on AuthenticationStrategy (d3ddb96), closes #499
- core Add NotVerifiedError to AuthenticationResult (ee39263), closes #500
- core Add support for better-sqlite3 driver to DefaultSearchPlugin (7a71fbe), closes #505
- create Use better-sqlite3 driver for improved sqlite perf (dfd4f36), closes #505
- admin-ui Allow SortPipe to work with frozen arrays (00e0af9)
- admin-ui Correctly handle missing error codes (aa80092)
- admin-ui Fix Apollo cache errors when switching Channels (ca2c1b6), closes #496
- admin-ui Fix build-time Angular CLI warnings (c52a258)
- admin-ui Fix DateFormInputComponent error (5575778)
- admin-ui Fix widths of product variant inputs (feca114), closes #503
- core DefaultSearchPlugin correctly indexes language variants (909479b), closes #493
- core Restore export of ZoneService (9b8d278)
- core Use correct permission for
updateAdministrator
mutation (4b55288) - elasticsearch-plugin Compatible with UUID primary keys strategy (cdf3a39), closes #494
- elasticsearch-plugin Correctly index language variants (e37e5c9), closes #493
- admin-ui-plugin Fix default languages list (be3bf29)
- admin-ui Allow Fulfillments to be created based on state machine (5b99f59), closes #471
- admin-ui Correctly handle missing shipping checker/calculator defs (460963a)
- core Add check on order PaymentSettled transition (141d650)
- core Correctly transition Order on Fulfillment transitions (9b2c088)
- core Fix error when using channelId with getEntityOrThrow method (65c50d4)
- core Fix NativeAuthenticationStrategy user lookup (b275c20), closes #486
- admin-ui Display error messages on failed Asset uploads (5aebcd6)
- admin-ui Handle Fulfillments state from Order detail view (7883a7a), closes #426
- admin-ui Make order history collapsible (db37707)
- admin-ui Update Apollo Client to v3 (4e628a6)
- admin-ui Update to Angular v10 & Clarity v4 (57c4106)
- core Allow public & private Payment metadata (3f72311), closes #476
- core Create improved error-handling infrastructure (0c0a7b2), closes #437
- core Create OrderCodeStrategy for more control over order codes (30dc639), closes #452
- core Create Transaction decorator (4040089)
- core Create unit-of-work infrastructure for transactions (82b54e6), closes #242
- core Implement a state machine for Fulfillments (70a7665)
- core Improved error handling for Admin API mutations (af49054), closes #437
- core Improved error handling for ShopAPI order resolvers (156c9e2), closes #437
- core Make Customers ChannelAware (0f73473)
- core Run all mutations within transactions (b40209e), closes #242
- core Update GraphQL to v15 (177a14f)
- core Update to TypeScript v4.0.3 (e1ce807)
- core Update TypeORM to 0.2.28 (d280466)
- core Use transaction to update Fulfillment state (8232ddc)
- email-plugin Provide an Injector instance to .loadData function (e2665a7)
- testing Create helpers for testing of ErrorResult union types (6ef6045), closes #437
-
All Vendure packages are now built on TypeScript v4.0.3. With new TypeScript versions come the possibility that its improved type-checking abilities will uncover new errors that it had not detected previously.
-
If you are using the
.loadData()
method of an EmailEventHandler, the callback signature has changed to provide an instance of the Injector class, rather than aninject()
function. -
The
orderOptions.generateOrderCode
config option has been replaced withorderOptions.orderCodeStrategy
. This change allows order code generation to take advantage of theInjectableStrategy
interface, i.e. to be able to inject Vendure services and other providers (e.g. the database connection). See theOrderCodeStrategy
documentation for guidance on how to use the new API. -
The
Payment.metadata
field is not private by default, meaning that it can only be read via the Admin API. Data required in the Shop API can be accessed by putting it in a field namedpublic
. Example:Payment.metadata.public.redirectUrl
-
The TypeORM
Connection
should no longer be directly used. Instead, inject the newTransactionalConnection
class, which wraps the TypeORM connection and enables database transactions to be used in conjunction with the new@Transaction
decorator.The
getEntityOrThrow()
andfindOneInChannel()
helper functions have been deprecated and replaced by methods with the same name (but slightly different signature) on the TransactionalConnection class. -
The upgrade of the Admin UI to Angular v10 means that if you are using the
@vendure/ui-devkit
package to compile an extended version of the Admin UI, you need to have at least TypeScript v3.9.2 installed.
- admin-ui Allow cancellation from custom Order states (117264f), closes #472
- admin-ui Fix address dialog issues (0d61f47), closes #463
- admin-ui Fix asset drag/drop support in safari (55304c5)
- core Fix handling of JobRecord ids when using UUID strategy (30e6e70), closes #478
- email-plugin Include shipping method in order receipt handler (ea907a4), closes #473
- core Add
totalQuantity
field to Order type (829ac96), closes #465 - elasticsearch-plugin Allow full client options to be passed (c686509), closes #474
- admin-ui Customer address editor opens in modal (0a4d460)
- create Make distinction between MySQL & MariaDB (a31bbf8)
- admin-ui Allow removing last item from ProductSelectorFromInput (21db8cf)
- admin-ui Correctly update product list after deletion (5587144), closes #453
- admin-ui Display custom fields in Address form (f074f65), closes #455
- core Add resolver for Product.facetValues (163a32f), closes #449
- core Add warning for list defaults in mysql (d47becc)
- core Correctly parse fragments defined before operations (44a9ab9), closes #459
- core Fix only_full_group_by issues in MySQL search (188cfaa)
- admin-ui Dynamically set yearRange of DatetimePickerComponent (c66b10b), closes #425
- admin-ui Fix channel header when using bearer auth (fa29805)
- admin-ui Fix filtering of product variant table (121b6fc)
- admin-ui Prevent clipping of product selector overlay (7f9b6d7)
- admin-ui Refetch orders list on channel change (ffa5615)
- asset-server-plugin Make nativeS3Configuration optional (650977d)
- core Correct shipping calculator typing (9052845)
- core Correct shipping calculator typing (4a8e9ed)
- core Correct typing of GraphQL ID type in generated code (dc7b303), closes #410
- core Correctly calculate item price discount actions (06bb780)
- core Correctly handle adjustOrderLine with quantity 0 (7381d3d), closes #435
- core Ignore deleted variants when validating options (9c242f8), closes #412
- core Make AssetOptions fields optional (698011e)
- admin-ui Add Brazilian Portuguese translations (7673353)
- admin-ui Add password form input (6c909b3), closes #445
- admin-ui Add pt_BR to default translations (5da5b4e)
- admin-ui Implement list types for ConfigurableOperationDef args (4c7467b), closes #414
- admin-ui Implement list types for custom fields (e72f0b3), closes #416
- admin-ui Implement pagination & filtering of product variants (e2b445b), closes #411
- admin-ui Implement product selector custom form input (f687f49), closes #400
- admin-ui Unify CustomFieldControl type with FormInputComponent (9e22347), closes #415
- core Add
productVariant
query to Admin API (72b6ccd) - core Add removeAllOrderLines mutation in Shop API (841e352), closes #430
- core Add support for list types in ConfigurableOperationDefs (6698195), closes #414
- core Implement "containsProducts" PromotionCondition (688d304), closes #400
- core Implement customer group form input (177866e), closes #400
- core Implement customer group promotion condition (fd70448), closes #400
- core Implement product discount promotion action (7da0d46), closes #400
- core Implement search by collection slug (a4cbdbb), closes #405
- core Improve type-safety of custom ui input config (d0cc096), closes #414
- core Make Orders ChannelAware (9bb5750), closes #440
- core Support list types for custom fields (1fa3cf1), closes #416
- elasticsearch-plugin Implement search by collection slug (cbfd499), closes #405
- If you use custom field controls in the Admin UI, you'll need to slightly modify the component class: the
customFieldConfig
property has been renamed toconfig
and a requiredreadonly: boolean;
field should be added. This is part of an effort to unify the way custom input components work across different parts of the Admin UI. - Orders are now channel-aware which requires a non-destructive DB migration to apply the schema changes required for this relation. In addition, this migration is required to relate existing Orders to the default Channel:
// Assuming the ID of the default Channel is 1. If you are using a UUID strategy, // replace 1 with the ID of the default channel. await queryRunner.query( 'INSERT INTO `order_channels_channel` (orderId, channelId) SELECT id, 1 FROM `order`', undefined, );
- The
'facetValueIds'
type has been removed from theConfigArgType
type, and replaced by'ID'
and thelist
option. This change only affects you if you have created custom CollectionFilters of PromotionActions/Conditions using the'facetValueIds'
type for an argument. - The
ID
type in@vendure/common/lib/generated-types
&@vendure/common/lib/generated-shop-types
is now correctly typed asstring | number
, whereas previously it wasstring
. If you are using any generated types in your plugin code, this may lead to TypeScript compiler errors which will need to be corrected.
- admin-ui Fix notification for customer verification email (6c76ebe), closes #438
- admin-ui Make emailAddress required in CustomerDetail form (2a9ee2e), closes #438
- admin-ui Update facets cache after deletion (f4eec6a), closes #424
- core Correct shipping calculator typing (18f5bcd)
- core Correctly handle aliases when transforming Asset urls (18bbeee), closes #417
- email-plugin Add filter of emailVerificationHandler (a68b18e), closes #438
- admin-ui Add Address custom fields to order detail (c4ca2d0), closes #409
- admin-ui Restrict Asset input based on permitted file types (dc668d9), closes #421
- asset-server-plugin Extended S3Config to accept aws-sdk configuration properties (ce903ad)
- core Add Address custom fields to OrderAddress (6f35493), closes #409
- core Custom field length configuration for localeString (9fab7e8)
- core Expose all cookie options in VendureConfig (ad089ea), closes #436
- core Expose permitted Asset types in ServerConfig type (66abc7f), closes #421
- core Implement permitted mime types for Assets (272b2db), closes #421
- core Validate DB table structure on worker bootstrap (c1ccaa1)
- core Verbose query error logging (#433) (8cf7483), closes #433
- admin-ui Fix error when creating new Customer (edc56f8)
- admin-ui Fix ts error introduced by ShippingMethods custom fields (8c38ad1)
- admin-ui Save custom fields in the Customer detail view (3c45b16), closes #387
- core Correct handling of multiple session for same user (2c42305)
- core Correctly call PaymentMethodHandler.onStateTransitionStart (143e62f)
- core Define cascade behaviour for featured assets (3f0c79b)
- core Fix bug where session user in cache would get removed (ebec0f0)
- core Fix error when de-serializing a RequestContext without expiry (a1e03fd)
- core Prevent countryCode exception when adding payment to order (49c2ad4)
- admin-ui-plugin Support
loginUrl
option (5a95476) - admin-ui Add
loginUrl
option to support external login pages (2745146), closes #215 - admin-ui Add ability to delete administrator from admin list (e217ce0), closes #384
- admin-ui Display auth strategy in customer history (bdfc43d)
- admin-ui Display customer last login time (0f9dd1c)
- admin-ui Enable updating of Order custom fields (5bbd80b), closes #404
- admin-ui Implement multiple asset deletion (b2f3f08), closes #380
- admin-ui Implement order process state chart view (7283258)
- admin-ui Improve multi-selection in Asset gallery component (a4e132a), closes #380
- admin-ui Support custom state transitions from Order detail view (1d2ba31)
- core Add
ProductOption.group
field & resolver (f20e108), closes #378 - core Add
ProductVariant.product
field & resolver (0334848), closes #378 - core Add admin helpers to ExternalAuthenticationService (3456ffb)
- core Add custom fields to registerCustomerAccount mutation (be1f200), closes #388
- core Allow all CustomOrderProcess handlers to be async functions (5d67d06)
- core Enable custom fields on ShippingMethod entity (#406) (fbc36ab), closes #406 #402
- core Export ExternalAuthenticationService (c3ed2cd)
- core Expose
nextStates
on Order type in Admin API (ece0bbe) - core Expose order state machine config via
serverConfig
type (0a77438) - core Expose User.authenticationMethod in GraphQL APIs (96f923a)
- core Implement
authenticate
mutation for Admin API (357f878) - core Implement
deleteAdministrator
mutation (dc82b2c), closes #384 - core Implement
setOrderCustomFields
in Admin API (ad89fc9), closes #404 - core Implement
setOrderCustomFields
in Shop API (3a12dc5), closes #404 - core Implement
transitionOrderToState
in Admin API (3196b52) - core Implement configurable session caching (09a432d), closes #394
- core Implement deleteAssets mutation (6f12014), closes #380
- core Improve customization of order process (0011ea9), closes #401
- core Include auth strategy name in AttemptedLoginEvent (b83f1fe)
- core Log error variables as well as message (de25bdb)
- core More flexible customer registration flow (92350e6), closes #392
- core More flexible handling of shipping calculations (d166c08), closes #397 #398
- core Record lastLogin date on authenticate (39c743b)
- core Record strategy used to register in Customer history (5504044)
- core Rework User/auth implementation to enable 3rd party auth (f12b96f), closes #215
- core Store authenticationStrategy on an AuthenticatedSession (e737c56)
- email-plugin Use new User model in email handlers (16dd884)
- (email-plugin) The default email handlers have been updated to use the new User model, and as a result the email templates "email-verification", "email-address-change" and "password-reset" should be updated to remove the "user" object, so
{{ user.verificationToken }}
becomes{{ verificationToken }}
and so on. - A new
AuthenticationMethod
entity has been added, with a one-to-many relation to the existing User entities. Several properties that were formerly part of the User entity have now moved to theAuthenticationMethod
entity. Upgrading with therefore require a careful database migration to ensure that no data is lost. On release, a migration script will be provided for this. - Some ON DELETE behaviour was incorrectly defined in the database schema, and has how been fixed. This will require a non-destructive migration.
- The
AttemptedLoginEvent.identifier
property is now optional, since it will only be sent when using the "native" authentication strategy. Code that listens for this event should now check that theidentifier
property is defined before attempting to use it. - The
RequestContext.session
object is no longer aSession
entity. Instead it is a new type,SerializedSession
which contains a subset of data pertaining to the current session. For example, if you have custom code which referencesctx.session.activeOrder
you will now get an error, sinceactiveOrder
does not exist onSerializedSession
. Instead you would useSerializedSession.activeOrderId
and then lookup the order in a separate query.
The reason for this change is to enable efficient session caching.
- The Administrator entity has a new
deletedAt
field, which will require a non-destructive database migration. - The way custom Order states are defined has changed. The
VendureConfig.orderOptions.process
property now accepts an array of objects implementing theCustomerOrderProcess
interface. This interface is more-or-less the same as the oldOrderProcessOptions
object, but the use of an array now allows better composition, and sinceCustomerOrderProcess
inherits fromInjectableStrategy
, this means providers can now be injected and used in the custom order process logic.
- admin-ui Display billing address in Order detail view (c8992a5), closes #372
- core Add setOrderBillingAddress mutation to Shop API (83347b2), closes #372
- core Allow phoneNumber in registerCustomerAccount mutation (2c710b9), closes #389
- admin-ui Add custom field controls to ProductOption dialog (4678360), closes #382
- admin-ui Correctly render channels in Role detail view (cfb3c03)
- admin-ui Only check jobs if Admin has ReadSettings permission (daca6b6), closes #383
- core Correctly resolve activeCustomer order lines (56449b8), closes #374 #375
- core Implement field resolvers for Facet & FacetValue (7a4d046)
- admin-ui-plugin Correct handling of missing config file (41f9085)
- admin-ui Fix duplicated "Adding Items" filter option in Order list (2da3c16)
- admin-ui Fix facet detail form losing input data (2430f30), closes #353
- core Attach Order to PaymentStateTransitionEvent on create (1c57462), closes #371
- core Correctly serialize job queue data payloads (1a9ac07)
- core Fix collection.parent resolver in Postgres (f3feb7c), closes #361
- core Fix cookie auth for custom controller routes (e36b9db), closes #362
- core Fix error when applying multiple promotions (c807d32)
- core Fix findByIdsInChannel to take ids into account (#365) (dd4bbc9), closes #365
- core Fix removal of order item promotions (f385d69)
- core Fix typo in "transitions" config option name (41b07eb)
- email-plugin Do not HTML-escape "from" address (699c796), closes #363
- email-plugin Fix dev mailbox when trailing slash omitted (5372561), closes #355
- admin-ui-plugin Enable traditional & simplified Chinese trans (43ef874)
- admin-ui Add 'groups' field to Customer type in Admin API (9635677), closes #330
- admin-ui Add Collection slug to detail form (700f4d6), closes #335
- admin-ui Add phoneNumber to customer detail form (768c838), closes #359
- admin-ui Add Traditional Chinese for i18n-Message (7160048)
- admin-ui Allow groups admin from CustomerDetailComponent (8dca9a3), closes #330
- admin-ui Create CustomerGroup UI components & routes (90b38a5), closes #330
- admin-ui Display customer history in detail view (8eea7d6), closes #343
- admin-ui Enable deletion of Customers from customer list (d1b0b9e), closes #360
- admin-ui Implement UI for updating, deleting notes (ef5eddf), closes #310
- core Add "slug" field to Collection entity (5b4d3db), closes #335
- core Add "slug" field to CollectionBreadcrumb type (97ffb1d)
- core Create customer history entries for groups (4620730), closes #343
- core Enable Collection query by slug (d5586bc), closes #335
- core Enable users to specify superadmin credentials (0f0a1ad), closes #279
- core Implement Customer history tracking (ccedf7c), closes #343
- core Implement CustomerGroup queries & mutations (13342c0), closes #330
- core Implement editing & deletion of Order/Customer notes (90bacf5), closes #310
- core Improved control over TypeORM query logging (3168e54), closes #368
- core Search by facetValueId allows operator argument (2eca24e), closes #357
- core Update LanguageCode enum to support common regional variants (8daee55), closes #356
- elasticsearch-plugin Added mapQuery option (a6de120), closes #364
- elasticsearch-plugin Search by facetValueId allows operator arg (f7f7e5c), closes #357
- email-plugin Enable logging for SMTP transport (5ed6c24), closes #369
- A DB migration will be required due to some additions to the schema related to Customer history entries.
- A new "slug" field has been added to the CollectionTranslation entity, requiring a DB migration. Also, when creating a new Collection via the
createCollection
mutation, each translation must include a slug.
- admin-ui Add German translations (00bf630)
- admin-ui Focus facet selector when opening "add facets" dialog (42c1a48)
- admin-ui Fix error updating PaymentMethod config parameters (b4061a5), closes #345
- admin-ui Update available facets when creating new values (05864c6), closes #347
- asset-server-plugin Fix mime type detection (7613f74), closes #341
Fixes broken publish of admin-ui-plugin
- core Fix MySQL error in DefaultSearchPlugin (9eb39a2), closes #331 #342
- core Increase resilience of app close when worker in main thread (3ce74ff)
- admin-ui Display visual feedback when uploading Assets (ca6c30f)
- core Add static lifecycle hooks to run before bootstrap (c92c21b)
- core Implement configurable PriceCalculationStrategy (3e2cc2b), closes #237
- testing Expose underlying NestApplication & NestMicroservice (ebf78a2)
- create Add work-around for upstream tslib issue (2f39379)
- admin-ui-plugin Fix default value for apiPort (efde4d7)
- create Fix use of deprecated port option (96765b4)
- admin-ui Add Polish translations (#317) (65a113b), closes #317
- admin-ui Add system health status page (b3411f2), closes #289
- admin-ui Allow status badges to be defined for NavMenuItems (97e209c)
- asset-server-plugin Add health check (05820f4), closes #289
- asset-server-plugin Create S3AssetStorageStrategy (3f89022), closes #191
- core Add health check for DB & worker (1b84ea7), closes #289
- core Added playground and debug config for graphql apis (1fb5fb4)
- core Allow custom CollectionFilters in config (87edc9b), closes #325
- core Group api options in VendureConfig (6904743), closes #327
- core Implement injectable lifecycle hooks for configurable ops (16db620), closes #303
- core Implement injectable lifecycle hooks for strategies (451caf1), closes #303
- core Prettier console greeting on server start (fc30dfd)
- elasticsearch-plugin Add health check (47a8cb9), closes #289
- admin-ui-plugin Correctly fall back to 'auto' apiHost option (b02d58a)
- core Fix emailAddress conflict when creating Customers (0d4e31a), closes #300
-
Options in the VendureConfig related to the API have been moved into a new location:
VendureConfig.apiOptions
. The affected options arehostname
,port
,adminApiPath
,shopApiPath
,channelTokenKey
,cors
,middleware
andapolloServerPlugins
.// before const config: VendureConfig = { port: 3000, middleware: [/*...*/], // ... } // after const config: VendureConfig = { apiOptions: { port: 3000, middleware: [/*...*/], }, // ... }
This also applies to the
ConfigService
, in case you are using it in a custom plugin. -
The
customer
anduser
tables have received some non-destructive modifications, requiring a DB migration. -
The graphql-playground for the Shop and Admin APIs are now turned off by default, and the Apollo server debug option is also set to false by default (it was formerly true). You can manually configure these values using the VendureConfig.apiOptions object.
- admin-ui Correctly display overlays inside modals (ee9c8ca)
- admin-ui Restore missing translation for "public" (2f06d30)
- core Correctly invalidate Zone cache on Country changes (f4101b7)
- core Fix swiss and congolese currency codes (#302) (2fbf37a), closes #302
- core Throw on no active taxZone when applying taxes to price (451ae50), closes #321
- core Use correct error type for email address conflict (0ba66cb), closes #299
- ui-devkit Correctly handle static asset file paths (27b0adb), closes #309
- ui-devkit Fix generation of shared module file (#318) (fd73472), closes #318
- admin-ui Display warnings if Channel lacks default zones (e80fcf8), closes #323
- admin-ui Implement Zone list view, improved Zone/Country admin (821f258), closes #323
- asset-server-plugin Implement asset binary deletion (571ee55), closes #306
- core Implement asset binary deletion (b8fc937), closes #306
- core Warn when deleting a Zone used as a Channel default (945c36d)
- admin-ui Fix display of in-progress jobs (5bed0e6)
- admin-ui Get entity default language from active Channel (effe2c6), closes #296
- admin-ui Refresh Collection List on deletion (4202398), closes #295
- core add missing translations for default channel not found (#301) (07e1958), closes #301
- core Correctly derive request language from active Channel (aae4aa9)
- core Correctly reindex enabled state (2231505), closes #295
- core Fix deletion of Collections (44916b7), closes #297
- core Fix generated import in CLI populate types (4ea139f)
- core Fix race condition when moving Collections (987b611)
- core Limit Channel defaultLanguage to one of availableLanguages (b9f4dc0)
- core Use configured defaultLanguageCode rather than hard-coded val (d2942e6), closes #296
- core Validate availableLanguages when update GlobalSettings (e304ae2)
- elasticsearch-plugin Fix bad import paths (99733fa)
- email-plugin Pass all email options when creating transport (1c6b39f)
- admin-ui Display live list of queued jobs (bbe5855)
- admin-ui Enable setting default language for Channels (0120202), closes #296
- admin-ui Implement Asset deletion UI (4912a29), closes #285
- admin-ui Update to Angular 9.1.0 (084edd9)
- asset-server-plugin Update Sharp version to 0.25.2 (13edc9c)
- core Add DB-based persistence for JobQueue (a61df93), closes #282
- core Add jobQueues query (46068b3)
- core Export ProcessContext service (3177ac0)
- core Extract SQL-based JobQueueStrategy in a bundled plugin (a2069f6)
- core Implement deleteAsset mutation (efa12ba), closes #285
- core Implement removeSettledJobs mutation (82af7f6)
- core Log any errors when creating Asset preview images (e1b8cb8)
- core Redesign JobQueue to allow persistence, concurrency etc (7acf532), closes #282
- core Resume interrupted jobs in queue on restart (9b66d33)
- core Update to Nestjs v7 (3d6657a)
- core Update to TypeScript 3.8 (e255674), closes #286
- create Add DefaultJobQueuePlugin to default config template (38b375f)
- elasticsearch-plugin Update index on asset deletion (c80662a)
- elasticsearch-plugin Update to use new job queue (42b1d28)
- email-plugin Generate and send emails on the worker (0cc5f87)
- testing Add
bootstrap
method to TestServer (dab9e21)
- admin-ui-plugin Use trackBy function to improve perf of datatable (09ab4d7)
-
(If using the DefaultJobQueuePlugin) A new JobRecord entity has been added, so a DB migration will be needed.
-
In order to accommodate Asset deletion, some non-destructive DB modifications have been made which will require a migration.
-
Nestjs has been updated to v7. If you make use of any of the Nest internals in your plugins, this may cause some breaking changes. Please see the Nest migration guide for details.
This release also includes updates to many dependencies which in turn have dropped support for Node.js v8. Therefore Vendure now supports Node.js v10 or higher.
-
The CollectionAsset entity had a cascade delete defined, which will require a DB migration.
-
The JobQueueService has been completely re-designed. In the event that you are using this service in your Plugins, please see the API documentation on how to use it now.
- admin-ui-plugin Add Chinese to the default available languages (46ff932)
- admin-ui Fix prosemirror error when changing product detail tabs (8a7cf9a)
- admin-ui Make rich text editor editable when creating products etc (d268276)
- asset-server-plugin Fix build to export non-image file icon (63166a2)
- admin-ui Better error reporting for invalid translation files (a64f7ac), closes #292
- create Check server port is free before install (202f68d)
- create Pin TypeScript version (a2fba13), closes #268
- admin-ui-plugin Allow ui languages to be set in the AdminUiPlugin (db3bce3), closes #264
- admin-ui Added Chinese i18n messages (#280) (749ee3d), closes #280
- admin-ui Enable ui language config & selection (aa4452e), closes #264
- core Export some missing symbols from Core (f16bd7b)
- testing Expose raw http fetch method in SimpleGraphQLClient (d715d30)
- ui-devkit Allow custom i18n files to compiled into the Admin UI (df88d58), closes #264
- ui-devkit Allow stand-alone translation extensions (7a70642), closes #264
- core Correctly handle error responses for REST controllers (72be58d), closes #187
- core Fix DefaultAssetNamingStrategy with files without extensions (dee3258), closes #271 #272
- core Fix error when using non-TCP transport in workerOptions (b37ea05), closes #270
- core Prevent data leakage of guest Customer data (ea51000), closes #98
- elasticsearch-plugin Do not expose private facets in search result (60bb5b9)
- admin-ui Export helper for hosting external ui extensions (3d08460)
- admin-ui Export minified theme css for ui extensions dev (99073c9)
- admin-ui Improved ui extension development API & architecture (fe72c41)
- admin-ui Simplify API for adding menu items, custom controls (2b9e4c4)
- admin-ui Update Angular to v9 (bc35c25)
- admin-ui Update Clarity to v3.rc (f8b94b2)
- admin-ui Use ProseMirror as rich text editor (e309111)
- ui-devkit Allow static assets to be renamed (08e23d0)
- ui-devkit Run detect and run ngcc on first compilation (b5a57a8)
- admin-ui Enable full template type checks and fix issues (db36111)
- admin-ui Prevent removal of FacetValue on ProductDetail form enter (1db6c3d), closes #267
- core Correctly resolve deprecated asset fields in search query (e9a517b)
- core Correctly update search index on ProductVariant deletion (401c236), closes #266
- elasticsearch-plugin Correctly update index on variant deletion (8b91a59), closes #266
-
This release introduces a re-architected solution for handling extensions to the Admin UI. If you do not use the ui extensions feature, you will not need to change anything. For those already using ui extensions, these are the changes:
-
The
@vendure/admin-ui-plugin
now contains only the default admin ui app. -
To create extensions, you will need to install
@vendure/ui-devkit
, which exposes acompileUiExtensions()
function. -
Here is an example of how the config differs:
// before AdminUiPlugin.init({ port: 3002, extensions: [ ReviewsPlugin.uiExtensions, RewardsPlugin.uiExtensions, ], watch: true, }),
// after import { compileUiExtensions } from '@vendure/ui-devkit/compiler'; // ... AdminUiPlugin.init({ port: 3002, app: compileUiExtensions({ // The source files of the admin ui, extended with your extensions, // will be output and compiled from this location outputPath: path.join(__dirname, '../admin-ui'), extensions: [ ReviewsPlugin.uiExtensions, RewardsPlugin.uiExtensions, ], watch: true, }), }),
-
For lazy-loaded extension modules, you must now specify a
route
property. This allows us to lazy-load each extension individually, whereas previously all extensions were bundled into a single lazy-loaded chunk.export class ReviewsPlugin { static uiExtensions: AdminUiExtension = { extensionPath: path.join(__dirname, 'ui'), id: 'reviews-plugin', ngModules: [{ type: 'lazy', + route: 'product-reviews', ngModuleFileName: 'reviews-ui-lazy.module.ts', ngModuleName: 'ReviewsUiLazyModule', }], }; } // in the route config of the lazy-loaded module { - path: 'product-reviews', + path: '', + pathMatch: 'full', component: AllProductReviewsListComponent, },
-
The
CustomFieldControl
interface changed slightly:import { - CustomFieldConfig, + CustomFieldConfigType, CustomFieldControl, } from '@vendure/admin-ui/core'; @Component({ // ... }) export class ReviewCountComponent implements CustomFieldControl { - customFieldConfig: CustomFieldConfig; + customFieldConfig: CustomFieldConfigType; formControl: FormControl; // ... }
-
NOTE: if you run into errors with Angular dependencies in the wrong place (e.g. nested inside the
node_modules
of another dependency), try runningyarn upgrade --check-files
, or failing that, remove the node_modules directory, delete the lockfile, and re-install.
- asset-server-plugin Correctly handle non-integer image dimensions (e28c2b3)
- core Do not merge orders from another Customer (de3715f), closes #263
- testing Correctly log from the main process (bdd419f)
- admin-ui Asset names can be updated (fcb4f3d)
- admin-ui Export BaseEntityResolver (db68d86)
- admin-ui Implement editing of Asset focal point (11b6b33), closes #93
- admin-ui Thumbnails make use of focal point data (667b885), closes #93
- asset-server-plugin Add ability to disable caching per-request (22cc878)
- asset-server-plugin Implement focal point-aware cropping (5fef77d), closes #93
- asset-server-plugin Make AssetNamingStrategy configurable (09dc445), closes #258
- asset-server-plugin Make the AssetStorageStrategy configurable (a13a504), closes #258
- core Add
focalPoint
field to Asset entity (1666e22), closes #93 - core Add asset focal point data to SearchResult type (f717fb3), closes #93
- core Publish AssetEvent when Asset created/modified (3a352c5)
- elasticsearch-plugin Store asset focal point data (9027beb), closes #93
- asset-server-plugin Implement hashed directory naming for assets (30c27c5), closes #258
- testing Disable synchronization for sqljs e2e tests (4ad7752)
- A new field,
focalPoint
has been added to theAsset
entity which will require a database migration to add. - The
LocalAssetStorageStrategy
class has been removed from@vendure/core
and now lives in the@vendure/asset-server-plugin
package. - The
search
query'sSearchResult
type has had two properties deprecated:productPreview
andproductVariantPreview
. They are replaced byproductAsset.preview
andproductVariantAsset.preview respectively
. The deprecated properties still work but will be removed from a future release. - The AssetServerPlugin has a new default naming strategy - instead of dumping all assets & previews into a single directory, it will now split sources & previews into subdirectories and in each of them will use hashed directories to ensure that the total number of files in a single directory does not grow too large (as this can have a negative performance impact). If you wish to keep the current behavior, then you must manually set the
namingStrategy: new DefaultAssetNamingStrategy()
in theAssetServerPlugin.init()
method.
- admin-ui Can delete TaxCategory via list view (6f6e0a1), closes #262
- admin-ui Can delete TaxRate via list view (ee02aa2), closes #262
- core Implement deletion of TaxCategory (b263b8b), closes #262
- core Implement deletion of TaxRate (8c2db90), closes #262
- email-plugin Correctly filter when using loadData in handler (66bc98c), closes #257
- email-plugin Fix Handlebars "cannot resolve property" error (2984a90), closes #259
- admin-ui Do not reset Promotion actions & conditions on update (2b3fc72), closes #256
- core Prevent Customers from logging in to admin API (09eb30c), closes #77
- admin-ui Better error message when user lacks permissions (1f7c230), closes #246
- admin-ui Correct types for OrderDetail (2169366), closes #232
- admin-ui Fix TS error with latest apollo-client typings (465f81e), closes #243
- admin-ui Set default
requiresPermission
for ActionBar items (292e6d4) - core Correctly resolve Customer.User property (c11c8a0)
- core Fix "contains" list filter operator for postgres (c3898a6)
- core Fix date handling for ListQueryBuilder (6a6397b), closes #251
- core Fix inconsistencies in behaviour between DB drivers (71b8f4c)
- core Fix inconsistencies in DefaultSearchPlugin search strategies (50fbae6)
- core Fix worker becoming unresponsive after errors (0f905b0), closes #250
- core Publish state transition events after persisting entities (005a553), closes #245
- core Remove null defaults from entity fields (98bff33), closes #244
- core Validate non-nullable custom fields (f5dd95e)
- elasticsearch-plugin Fix inconsistencies in behaviour between DBs (35d0008)
- admin-ui Expose services to ActionBarItem onClick function (e44d372), closes #247
- core Set default DB timezone to UTC (8bf2c7a)
- core Store TaxRate value as decimal type (1aea1b5), closes #234
- core Use decimal type for OrderItem.taxRate (92650ec), closes #234
- testing Add support for e2e tests backed by MySQL/MariaDB (dbc591f), closes #207
- testing Add support for e2e tests backed by Postgres (50bdbd8), closes #207
- testing Modularize DB support for e2e tests (f8060b5), closes #207
- The
@vendure/testing
package now requires you to explicitly register initializers for the databases you with to test against. This change enables e2e tests to be run against any database supported by TypeORM. ThedataDir
option has been removed from the call to theTestServer.init()
method, as it is specific to the SqljsInitializer:
before:
import { createTestEnvironment, testConfig } from '@vendure/testing';
describe('my e2e test suite', () => {
const { server, adminClient } = createTestEnvironment(testConfig);
beforeAll(() => {
await server.init({
dataDir: path.join(__dirname, '__data__'),
initialData,
productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
customerCount: 1,
});
});
//...
});
after:
import { createTestEnvironment, registerInitializer, SqljsInitializer, testConfig } from '@vendure/testing';
registerInitializer('sqljs', new SqljsInitializer(path.join(__dirname, '__data__')));
describe('my e2e test suite', () => {
const { server, adminClient } = createTestEnvironment(testConfig);
beforeAll(() => {
await server.init({
initialData,
productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
customerCount: 1,
});
});
//...
});
- The
OrderItem.taxRate
column type in the database has been changed fromint
todecimal
. You will need to perform a migration to update this column and depending on your database type, you may need to manually edit the migration script in order to preserve the old values. - The
TaxRate.value
column type in the database has been changed fromint
todecimal
. You will need to perform a migration to update this column and depending on your database type, you may need to manually edit the migration script in order to preserve the old values. - The default
dbConnectionOptions.timezone
setting is now set to'Z'
(UTC). If you have not explicitly set the timezone in your project, then up until now it would have defaulted to'local'
. To preserve this behavior you can override this new default by settingdbConnectionOptions.timezone: 'local'
in your VendureConfig. - This relates to Admin UI extensions. The
onClick
function signature of any custom ActionBarItems has changed - the second parameter used to be theActivatedRoute
- it is now an object containingActivatedRoute
plus an instance ofDataService
andNotificationService
.
- admin-ui Display CustomFields for OrderLines in order detail view (c33f1f6), closes #227
- ui-devkit Allow ui extensions to be launched in a new window (71eb6a5)
- admin-ui Correct mis-spelled "secondary" type in ModalService (9600c42)
- admin-ui Correctly handle multiple additional NavMenu items (6e27c37)
- core Update TypeORM version to fix Postgres 12 compatibility (895ebdf), closes #177
- core Add
reload: false
to .save() operations (3c33f33) - core Implement caching of GraphqlValueTransformer type trees (ffe47b1), closes #226
- core Optimize OrderCalculator logic to improve performance (71f3eab), closes #226
- core Optimize some SQL queries in hot code paths for Orders (691f579), closes #226
- core Remove the @RelationId() decorator from OrderItem (6bda232), closes #226
- The
Order
entity now has a new column,taxZoneId
. This is used to more efficiently track changes to the active tax zone, and therefore reduce the number of tax calculations to be performed on an Order. This change will require a migration which should be routine.
- admin-ui Add polling to watch mode to alleviate race condition (1b95a81)
- admin-ui Allow new FacetValues to be added (337762e), closes #222
- admin-ui Assign NavMenuSection default permission if not specified (b476dcb)
- admin-ui Correctly initialize Facet detail view (d68fcb7)
- admin-ui Fix CustomerDetail display of custom fields (02757ea)
- core Fix error when patching custom fields (a3afc1b)
- admin-ui Export Dialog interface (6b31f28)
- admin-ui Initial implementation of extension host architecture (85815c1), closes #225
- ui-devkit Add
notify()
function (085c7cf) - ui-devkit Create ui-devkit package for developing UI extensions (20cd34d), closes #225
- admin-ui Correct bad imports (3cd74ab)
- admin-ui Make Channel zones required in ChannelDetailComponent (ba27360), closes #218
- admin-ui Order detail - fix broken app when no featuredAsset (#219) (e0bfa4d), closes #219
- core Enforce Channels created with a default tax/shipping Zone (f57fb51), closes #218
- core Use "double precision" as column type for float custom fields (8f2d034), closes #217
- email-plugin Fix incorrect relative imports (561c793)
- admin-ui Make readonly custom fields readonly in the UI (cf1d7f1), closes #216
- core Export OrderCalculator helper service (6340045)
- core Implement internal and readonly CustomField properties (c2ae44f), closes #216
Note: only the @vendure/email-plugin
package was updated in this release, as v0.6.2 included a critical bug which prevented installation via @vendure/create
- email-plugin Fix TypeScript compiler error on defaultEmailHandlers (d794e5f)
- core Allow custom ApolloServerPlugins to be specified (dc45c87), closes #210
- create Include a .gitignore file (6b6b3e3)
- email-plugin Allow async data loading in EmailEventHandlers (155d429), closes #184
- core Ensure plugins instantiated only once per process (7198b85), closes #213
- core Export LoginEvent & RefundStateTransitionEvent (90e161b)
- core Use correct config & output path when generating migrations (637c863)
- core Use correct config for runMigrations & revertLastMigration (c9acd68)
- asset-server-plugin Update sharp dependency for node 13 compat (186b47e), closes #204
- core Fix product search with postgres (dadef4c), closes #206
- admin-ui Correctly display HttpErrorResponse messages (8cc6885)
- admin-ui Correctly specify channels when creating a Role (34a6a3e)
- admin-ui Update permissions-based display when permissions change (aec08be)
- core Add resolver for Role.channels (5a2ddc5)
- admin-ui Add channel switcher (0396e88), closes #12
- admin-ui Display color-coded label for Channels (571c379)
- admin-ui Display permissions by Channel in Admin detail view (586f2d7)
- admin-ui Enable assigning Products to Channels (59b9c91), closes #12
- admin-ui Enable deletion of Channels (b295e52), closes #12
- admin-ui Enable deletion of Roles (2a674a3)
- admin-ui Enable removal of Product from Channel (27eea68), closes #12
- admin-ui Enable setting Role channel on update (8379a82), closes #12
- admin-ui Truncate display of role permissions if too long (98d971f)
- core Add channel handling to DefaultSearchPlugin (280a38b)
- core Allow Roles to be created in other channels (df5f006), closes #12
- core Allow Roles to have Channels specified on update (b3dd6c1)
- core Assign superadmin Role to newly created Channels (6fc421a)
- core Automatically assign Customer role to all new Channels (da826f2)
- core Constrain channel-aware queries by channelId (51c1b07), closes #12
- core Implement
assignProductsToChannel
mutation (5fda66b), closes #12 - core Implement deleteChannel mutation (989960b), closes #12
- core Implement deleteRole mutation (7b338a4)
- core Implement removeProductsFromChannel mutation (6a165dc)
- core Make product/variant events more granular (4f9a186)
- core Update search index on Product assigned/removed from Channel (3a6c277), closes #12
- elasticsearch-plugin Add support for multiple channels (aacfaf4)
- The
CatalogModificationEvent
which was previously published whenever changes were made toProduct
orProductVariant
entities has been replaced with aProductEvent
andProductVariantEvent
, including the type of event ('created', 'updated', 'deleted'). - The
SearchIndexItem
entity used by theDefaultSearchPlugin
has a couple of new fields related to Channel handling. Once the schema is updated (either by synchronizing or running a migration), the search index should be rebuilt.
- admin-ui Export CanDeactivateDetailGuard (89c0699)
- core Allow lazy evaluation of APIExtensionDefinitions (69dad0b)
- core Export some entity utils from service helpers (ddceb64)
- core Export the Api decorator & ApiType type (c7857d3)
- core Update Nestjs to v6.8.5, TypeORM to v0.2.20
- elasticsearch-plugin Allow definition of custom mappings (2c8b7df)
- testing Extract e2e testing tools into
@vendute/testing
package, closes #198
- admin-ui-plugin Allow UI extensions to contain multiple modules (b23c3e8)
- admin-ui Display hint if deleting Collection with descendants (27b7080)
- admin-ui Export BaseListComponent & BaseDetailComponent (d222449)
- admin-ui Make CollectionList items expandable (147bf17)
- core Allow log level to be set in migration helpers (34cb07e)
- core Auto-generate GraphQL ListOptions for plugin extensions (aa40776)
- core Export all service-layer helpers in PluginCommonModule (0d57eca)
- core Export ListQueryBuilder helper (5bb5c1e)
- admin-ui Fix notification label for CollectionList (cd02789), closes #186
- admin-ui Import missing social-shapes icons (7b5b943)
- admin-ui Remove paging from CollectionList (517fcd0)
- core Correctly handle 404 and other Nestjs errors (4f2c4df), closes #187
- core Deleting a Collection also deletes descendants (1ba9e2d), closes #186
- core Prevent unhandled promise rejection on worker SIGINT (39ca526), closes #150
- create Add .gitattributes to prevent eol conversions (5fdeace), closes #185
- The API for configuring Admin UI extensions has changed to allow a single extension to define multiple Angular NgModules. This arose as a requirement when working on more complex UI extensions which e.g. define both a shared and a lazy module which share code. Such an arrangement was not possible using the existing API.
Here's how to update:
// Old API
extensions: [
{
type: 'lazy',
ngModulePath: path.join(__dirname, 'ui-extensions/greeter'),
ngModuleFileName: 'greeter-extension.module.ts',
ngModuleName: 'GreeterModule',
}
],
// New API
extensions: [
{
extensionPath: path.join(__dirname, 'ui-extensions/greeter'),
ngModules: [{
type: 'lazy',
ngModuleFileName: 'greeter-extension.module.ts',
ngModuleName: 'GreeterModule',
}],
}
],
- admin-ui Add coupon & date rage data to PromotionList (4827aa4)
- admin-ui Add date range & coupon code controls to PromotionDetail (48def65), closes #174
- admin-ui Add detailed promotion & tax info to OrderDetail view (cd823fe)
- admin-ui Add visibility to Order notes (760d519), closes #180
- admin-ui Create cross-browser datetime picker component (78a713c), closes #181
- admin-ui Display coupon code entries in order history (9f269fe)
- core Add couponCodes to Order & mutations to add/remove codes (fdacb4b), closes #174
- core Add date range and couponCode to Promotion entity (e615d2f), closes #174
- core Add history entry to Order when vouchers applied/removed (887cc6c)
- core Add isPublic flag to AddNoteToOrderInput (f97c3ac), closes #180
- core Add validation to Promotion conditions (74e7444)
- core Export database migration helpers (d509805)
- core Expose Order.promotions via GraphQL APIs (02ebd9c), closes #174
- core Implement per-customer usage limits for Promotions (9d45069), closes #174
- core Implement Promotion date range & coupon code checks (f6eb343), closes #174
- core Log thrown errors (ed7f5fb)
- core Move error logging to the API Filter layer (e8fd15d)
- create Generate README file with new projects (4e2784f)
- create Rework folder structure, add build & migration scripts (746abff), closes #175
- admin-ui Fix creating new Channels (b8e4c6c), closes #182
- admin-ui Fix customField product error: handle undef. case (8265359)
- core Allow nullable fields to be unset via GraphQL API (d9f5c41)
- core Fix DefaultLogger logLevel Error (d5405a0)
- core Fix duplicate plugin entities being registered on bootstrap (ce00406)
- core Fix order totals calculation with order % discount (a4fea59)
- core Fix OrderItem totals calculation logic (3c66cf8)
- A new
couponCodes
column is added to the Order table, which will require a DB migration. - A new
promotions
relation has been added to the order table, and aperCustomerUsageLimit
column to the promotion table. This will require a DB migration. - Removes
atLeastNOfProduct
from defaultPromotionConditions anditemPercentageDiscount
&buy1Get1Free
from defaultPromotionActions. They are either not useful or need to be re-implemented in a way that works correctly.
- admin-ui Do not expose internal entity IDs (2ca9cc1), closes #178
- core Add date fields to graphql Country type (818be24)
- core Fix uuid strategy, rework setting of ID data types in DB (d50d488), closes #176
- admin-ui Allow creation of verified Customers (f451115), closes #171
- admin-ui Allow selection of payment to be refunded (8009220)
- core Improved Collection import (c654d6f), closes #173
- core Verify admin-created Customers if password supplied (9931e25), closes #171
- admin-ui Correctly handle defaults for configurable operations (9bd6a79)
- admin-ui Fix DisabledDirective making form dirty (70e857d)
- core Do not duplicate plugins when running work in main process (c040c0b)
Note only the @vendure/admin-ui
, @vendure/admin-ui-plugin
& @vendure/email-plugin
packages were updated in this release.
- admin-ui Fix infinite loop hang on CollectionList page (230703f), closes #170
- email-plugin Fix smtp auth (98bc90a)
- admin-ui Add controls for disabling & deleting a Promotion (7568e20), closes #159
- admin-ui Add permissions checks for Product list/detail views (75dc385), closes #94
- admin-ui Add permissions checks to main nav items (78201fb), closes #94
- admin-ui Add permissions checks to Promotions & Settings views (2552191), closes #94
- admin-ui Allow extensions to define CustomField controls (83d9090), closes #55
- admin-ui Allow shared & lazy UI plugins to be specified (5daf756), closes #55
- admin-ui Can add custom buttons to list/detail views (ef47c62), closes #55
- admin-ui Expose
query
&mutation
method on DataService (09250a8) - admin-ui Implement readonly state for RichTextEditor (5f2987c)
- admin-ui Permissions checks for Facet & Collection views (7f8163a), closes #94
- admin-ui Set up infrastructure for permission-based UI display (6bd5181), closes #94
- core Add Promotion-specific CRUD permissions (7ddd893)
- core Allow length of custom field strings to be specified (fe360f5), closes #166
- core Ensure SuperAdmin role has all permissions (ab866c1)
- core Expose active user permissions in Admin API (b7cd6e5), closes #94
- create Add example fromAddress global template variable (b727327)
- email-plugin Added
from
field to the email config (#168) (09eb34e), closes #168
- admin-ui Correctly disable selects/toggles based on permissions (1e41b92)
- core Correct permissions for tax-related resolvers (d2b52ce)
- core Correct some permissions in Channel & Promotion resolvers (e2a64fa)
- core Ensure all Roles always include the Authenticated permission (c2de3de)
- admin-ui-plugin Add watch mode for UI extension development (c0b4d3f), closes #55
- admin-ui-plugin Detect whether extensions need to be re-compiled (ba8c44f), closes #55
- admin-ui Display Order custom fields (cbe11d2), closes #164
- admin-ui Enable adding options to single-variant Products (7303171), closes #162
- admin-ui Enable drag-drop reordering of assets (0e624f4), closes #156
- admin-ui Enable drag-drop reordering of Collections (ffab838)
- admin-ui Experimental system for extending the UI (1dcb2e6), closes #55
- admin-ui Expose public API at @vendure/admin-ui/devkit (c2742ec)
- admin-ui Implement adding new variants by extending options (fefe0ea), closes #162
- core Re-architect entity-asset relations to allow ordering (4ed2ce3), closes #156
- create Add ci option to test installs (c2c7b82)
- admin-ui Trigger navigation confirm if assets have been changed (6e751b0)
- core Allow removal of all Assets from an entity (528eb3c)
- core Fix facet value CollectionFilter (7b6fe6c), closes #158
- core Resolve collection assets field (e32895f), closes #157
- core Specify Collection.description as text type (351e811), closes #165
- The internal representation of Asset relations has changed to enable explicit ordering of assets. This change means that the database schema had to be updated.
- admin-ui Check for running jobs after each mutation (8b2b0dc)
- core Add optional metadata to JobInfo (7ddec36)
- core Create WorkerService for simpler communication to worker (16ab03d)
- core Enable custom fields on Order entity (4ef0f15)
- core EventBus exposes Observable event stream with .ofType() (506a0fa)
- core Improve speed of bulk product import (92abbcb)
- admin-ui Fix error creating product with localeString custom prop (4ae5b72)
- core Fix fetching entities with a single localeString custom field (0d0545f)
- elasticsearch-plugin Fix null productVariantPreview error (571f7af)
- admin-ui Add filtering to countries list (fff6f19)
- admin-ui Add filtering to orders list (8dda408)
- admin-ui Add search input to customer list (28e4e41)
- common Add DeepRequired type (c77e365)
- core Expose new RuntimeVendureConfig interface (6ea7124)
- core Include width and height in Asset entity (338ef95), closes #79
- elasticsearch-plugin Add options for customising term query (7191842)
- elasticsearch-plugin Allow facetValues size to be configured (3a5aff4)
- elasticsearch-plugin Allow querying by price range (573f345)
- elasticsearch-plugin Extend response with price range data (81eff46)
- common Add missing chars to normalizeString function (f687cc8), closes #144
- core Correctly prefix asset urls for resolved properties (0517b6c), closes #146
- elasticsearch-plugin Correctly remove deleted items from index (f0a56fa)
- elasticsearch-plugin Correctly report facetValue counts (2f8af7c)
- elasticsearch-plugin Fix error when creating new Product (b6ae235), closes #145
- elasticsearch-plugin Make option optional (da8b2f2)
- admin-ui Add missing icon (4027325)
- admin-ui Fix error on creating product with empty option values (452f5a9), closes #141
- core Add 'float' type to arg types for shipping operations (f8626d1)
- core Correctly filter out ineligible shipping methods (911463a)
- core Fix application hang when worker microservice fails to start (25de044)
- create Correctly log verbose output from server (a4b76b2)
- admin-ui-plugin Automatically configure admin-ui auth method (fd68d1e), closes #138
- admin-ui Add shipping method eligibility testing tool (300da15)
- admin-ui Automatically populate shipping method code (082e882)
- admin-ui Display shipping calculator metadata (4e5bce5), closes #136
- admin-ui Enable deletion of shipping methods (0032978)
- admin-ui Support bearer token auth method (c31a383), closes #138
- core Add testEligibleShippingMethods query (bc860e0)
- core Allow ShippingCalculator to return arbitrary metadata (bdbdf9a), closes #136
- core Automatically set CORS exposedHeaders for bearer auth (f4cd718), closes #137
- core Implement deleteShippingMethod mutation, add tests (0b1dfd5)
- admin-ui Correctly display long items in SimpleItemList (ca2758f)
- admin-ui Display zero shipping price in test tool (0e7e2d3)
- admin-ui Fix styling of order history (8c5ff50)
- admin-ui Minor styling fixes (c8fe561)
- core Correct typing of PaymentMetadata (e6d35df)
- core Correctly update Refund state (58caba7)
- admin-ui Add shipping method test UI (b76eac5), closes #133
- admin-ui Display ProductVariant custom fields (32017f3)
- admin-ui Display refund metadata (eabd343)
- admin-ui Support extended ConfigurableOperations (8cc0941), closes #135
- core Extend configurable operation arguments API (d17aaa9), closes #135
- core I18n for descriptions and labels of ConfigurableOperations (a135e15)
- core Implement testShippingMethod query (a3a9931), closes #133
-
adjustmentOperations
query has been replaced bypromotionConditions
andpromotionActions
-
ConfigurableOperations (ShippingEligibilityChecker, ShippingCalculator, CollectionFilter, PromotionCondition, PromotionAction, PaymentMethodHandler) have a new API for defining their arguments. For existing Vendure installations, any Shipping Methods, Promotions and Collection will need to be re-configured after the update by removing any checker/calculator/filter/condition/action and re-adding it.
-
ConfigurableOperations descriptions must now be specified as an array of LocalizedString rather than just a plain string. This allows the descriptions to be adapted to other locales.
- admin-ui Display nested payment metadata (f90e773)
- admin-ui Enable cancellation of active orders (8224ddd)
- core Add error handling to payments (cba63e1)
- core Allow cancellation of order by id (8d0a0eb)
- core Export OrderState & PaymentState types (8ef699d)
- core Correct ID types for SearchInput (de78cc8)
- core Fix incorrect import paths (663fbd8)
- core Remove LanguageCode arg from Shop API (3b80224), closes #130
- core Remove non-existent import (e660d46)
- elasticsearch-plugin Remove references to Decode decorator (0d3d8ef)
- The
languageCode
argument has been removed from all Shop API queries, namelyproduct
,products
,collection
andcollections
. Instead, LanguageCode should be specified as a query param.
- core Make request pipeline compatible with REST requests (42aa5fb)
- core Rewrite plugin system to use Nest modules (7ec309b), closes #123
- core Use query param to specify language (2035003), closes #128
- create Improve error handling (b5e0b62)
- create Update config template to new plugin format (eb5d4ff)
-
All
languageCode
GraphQL arguments have been removed from queries and instead, a "languageCode" query param may be attached to the API URL to specify the language of any translatable entities. -
Vendure plugins are now defined as Nestjs modules. For existing installations, the VendureConfig will need to be modified so that plugins are not instantiated, but use the static .init() method to pass options to the plugin, e.g.:
// before plugins: [ new AdminUiPlugin({ port: 3002 }) ], // after plugins: [ AdminUiPlugin.init({ port: 3002 }) ],
- core Fix filtering PaginatedList results (b6a365f)
- core Fix graphQL schema errors with latest nestjs/graphql (fbeecef), closes #129
- admin-ui Extend custom field controls to support new options (019cd02), closes #85
- core Add custom validation function to custom field config (80eba9d), closes #85
- core Add nullable & defaultValue options to custom fields config (b1722d8), closes #85
- core Add options to string custom field config (bc0813e), closes #85
- core Add validation parameters to custom fields (b6b13a5), closes #85
- core Check for name conflict in custom fields, test sort/filter (27abcff), closes #85
- core Implement access control for custom fields (8f763b2), closes #85
- core Improve error messages for invalid custom field inputs (af13dc2), closes #85
- admin-ui Implement deletion of Collections (1d7ab26)
- admin-ui Implement deletion of ProductVariants (bcc2662)
- admin-ui Implement editing of ProductOptions (420793d)
- admin-ui Implement integrated ProductVariant creation (58dad1d), closes #124
- core Add createProductVariant mutation & tests (9d74d9d), closes #124
- core Implement create and update of ProductOption (601c766)
- core Implement deleteCollection mutation (051f2f3)
- core Implement deleteProductVariant mutation (8b22831), closes #124
- admin-ui Do not hide dropdown panel (bbbe70d)
- common Fix generateAllCombinations edge case (016adf8)
- core Make ProductOption type fields non-nullable (0ea150c)
- core Publish CatalogModificationEvent when variant created (65d18ee)
- The
generateVariantsForProduct
mutation has been removed
- admin-ui Add controls to settle authorized payments (32006ae), closes #117
- admin-ui Display order history timeline (3f5745d), closes #118
- admin-ui Implement adding notes to Order history (1108914), closes #118
- admin-ui Implement cancellation & refund flows (9295a90), closes #121
- admin-ui Implement creating fulfillment for orders (1a22d0d), closes #119
- admin-ui Implement fulfillment controls (a006545), closes #119
- admin-ui Implement manual refund settlement (66006a1), closes #121
- admin-ui Improve layout of OrderDetailComponent (c1d8664)
- core Add settlePayment mutation (f2b9a12), closes #117
- core Allow payment handler to reject settlement (4cbae46), closes #117
- core Implement adding notes to an Order (3682cbf), closes #118
- core Implement cancelOrder mutation (a03fec7), closes #120
- core Implement createFulfillment mutation (e501578), closes #119
- core Implement order history (e4927c3), closes #118
- core Implement OrderItem-level cancellation (35084f3), closes #120
- core Implement Refund mutations (8870b02), closes #121
- core Implement resolver for Order.fulfillments (ff0bb0a), closes #119
- core Simplify API for creating Fulfillments (8cb4c41)
- core Fix AssetInterceptor stack overflow with cyclic response (c90a2a4)
- core Make @types/fs-extra a dependency (37e9865)
- elasticsearch-plugin Close down es client when app closes (44809a1)
- elasticsearch-plugin Index products when updating by variantIds (6d243d2)
- admin-ui Correctly display checkboxes and toggles (bc42b95)
- admin-ui Correctly handle boolean configurable inputs (b5d10c1), closes #112
- admin-ui Fix asset picker dialog filtering (16e7fc1), closes #113
- admin-ui Paginate Collections list (17ac985), closes #114
- core Clean up unused dependencies in DefaultSearchPlugin (9b3cd26)
- core Close worker when app closes when running in main process (33b2fe1)
- core Fix bad imports from common module (960b647)
- core Set worker to run off main process by default (8e14213)
- core Wait for worker tasks to complete on app shutdown (2a9fb0b)
- core When populating, run search index builder on main process (6564d3f)
- create Run worker on main process when populating (87dc49a)
- email-plugin Move server setup to onBootstrap method (5f7a65e)
- core Display more worker info on bootstrap (edbcbc4)
- core FacetValue Collection filter can specify logical operator (f136117), closes #112
- core Get DefaultSearchPlugin working with new Worker architecture (6ca2ab4), closes #115
- core Prevent calling bootstrapWorker when runInMainProcess = true (dc8e173)
- core Set up worker architecture based on Nest microservices (508bafd), closes #115
- create Set an env variable during the create process (b085e49)
- create Update to use separate worker process (f3560f2)
- admin-ui Fix background image on login screen (8066d9b)
- admin-ui Fix styles to work with Clarity v2 (6ab33cc)
- core Disable index builder worker thread for sql.js (a49d1a3)
- core Fix i18next typing issues after update (41a3e7a)
- core Fix TypeScript errors arising in v3.5.1 (8e78450)
- core Queue concurrent search index writes to avoid key conflicts (ae1145a)
- admin-ui Display background jobs in UI (59d8312), closes #111
- admin-ui Improve polling logic for jobs (ced3990)
- admin-ui Update to Angular 8 (cb69306)
- core Background thread search indexing (b78354e)
- core Create async job manager for long-running tasks (a83945a), closes #111
- core Process all updates to the search index on worker thread (fe40641)
- core Update TypeORM to 0.2.18, compatible with sql.js 1.0 (7eda23b)
- core Use batching when reindexing search index (40c5946)
- core Use batching when updating collection filters (325b807)
- The
reindex
mutation now returns a JobInfo type, which has an id that can then be polled via the newjob
query as to its progress and status.
- admin-ui Allow custom error messages passed to FormFieldComponent (220d861)
- admin-ui Update slug in product detail form after save (2cecb39)
- admin-ui Validate slug pattern in product detail form (29509d8), closes #103
- core Allow custom fields to be set on OrderLine (a4b7e07), closes #109
- core Allow product to be queried by slug (a2d847d), closes #108
- core Enforce unique slugs for Products (d8d5fcc), closes #103
- core Normalize product slug values (e2235cb), closes #103
- core Rename SearchInput facetIds arg to facetValueIds (8b116b2)
- asset-server-plugin Fix type of assetUrlPrefix option (d753f0e)
- core Configure GraphQL Playground to include credentials (4429730), closes #107
- core Do not list deleted productVariants in a Collection (e1fecbb), closes #100
- core Do not throw when deleting Facet with no FacetValues (f7d337f), closes #105
- core Fix bad common import paths (6a54be3)
- core Fix error when searching ShopAPI with postgres (f05360b), closes #99
- core Fix postgres error when specifying custom fields (d8b6c47), closes #85 #101
- email-plugin Fix bad common import paths (077fd6d)
- The "facetIds" field of the SearchInput type has been renamed to "facetValueIds" to better reflect the expected id type.
- This change allows custom fields to be defined on the OrderLine entity. When they are, then the "addItemToOrder" mutation will accept a third argument - "customFields", which matches the fields specified in the config. Additionally, a couple of mutations have been renamed: "removeItemFromOrder" -> "removeOrderLine", "adjustItemQuantity" -> "adjustOrderLine" and their "orderItemId" argument has been renamed to "orderLineId".
- core Fix CollectionBreadcrumb.name error (5b6f93a), closes #97
- core Fix intermittent "no active session" errors (1313ca7)
- asset-server-plugin Allow url prefix to be set in options (c0ea092)
- admin-ui Fix publish flow to ensure correct version in UI (dc52814)
- admin-ui Correctly display configurable money values (3546071)
- admin-ui Correctly sort assets (e57450b)
- admin-ui Do not run CanDeactivateGuard when switching tabs (d8e6258)
- admin-ui Fix boolean configurable input (994264d)
- admin-ui Fix creation of zone from country list (0aa0bc8)
- admin-ui Fix error with rich text editor (trix) (b42ead6)
- admin-ui Replace all clr-dropdown with vdr-dropdown (4de2a6a), closes #95
- admin-ui Reset page when filters changed in product list (c9325b6)
- core Add missing timestamp fields to Asset GraphQL type (1c543db)
- core Add property resolver for Collection.featuredAsset (cd367a7)
- core Check existence of ProductVariant before updating (fe5eedd)
- core Correctly intercept top-level Assets (d767a9d)
- core Correctly update country in customer address (75f9492)
- core Fix bad import paths (e126d2e)
- core Fix bug which created new address for each order placed (8703e25)
- core Fix error when updating variant stock level (57c5499)
- core Fix reordering of collections (75f8858), closes #75
- core Fix search.facetValues resolver error (ecfbf56)
- core Fix type error (missing isPrivate property) (4d1cd65)
- core Implement property resolver for Collection.children (e5f614e)
- core Prevent race conditions when updating search index (8872a94)
- core Relax engines check for Yarn (9c4f8fb)
- core Typo in mock product data (cf0f842)
- email-plugin Fix failing test (cf2acbf)
- admin-ui Add ApiType to RequestContext (9b55c17)
- admin-ui Add asset preview dialog (34413ce)
- admin-ui Add controls for stockOnHand & trackInventory (4e021b8), closes #81
- admin-ui Add enabled/disabled toggle to ProductVariants (406ab28), closes #62
- admin-ui Add input for configurable string operators (b5a07d1), closes #71
- admin-ui Add toggle to enable/disable Product (a117bbe), closes #62
- admin-ui Add UI controls for making Collections private (4f17d3e), closes #71
- admin-ui Add UI controls for private Facets (290a576), closes #80
- admin-ui Collapse settings menu group by default (c8539de)
- admin-ui Create ProductSearchInput bar (0668443)
- admin-ui Implement custom dropdown based on CDK Overlay (409bb16), closes #95
- admin-ui Improve collection list & child collection creation (c996fa7)
- admin-ui Improve layout of ProductVariantList card (8ecd2c3)
- admin-ui Link up product filters with url (8aab908)
- admin-ui Make facet list values expandable (13ce943)
- admin-ui More styling for product variant list (0522e5c)
- admin-ui Numerous style tweaks (14ee458)
- admin-ui Reindex search index from product list (de7f22d)
- admin-ui Restyle form inputs (438802d), closes #60
- admin-ui Set the global trackInventory setting (bf4185b), closes #81
- admin-ui Standardise colour palette (9cb73ae), closes #41
- admin-ui Table view for product variants (058749a)
- core Add "enabled" field to Product & ProductVariant (a877853), closes #62
- core Add "enabled" field to search index, add & fix e2e tests (fcd3086), closes #62
- core Add isPrivate flag to Collection (848c8b4), closes #71
- core Correctly handle disabled field for grouped search (56cad72), closes #62
- core Create entities & fields needed for stock control (aace38f), closes #81
- core Create Logger service (65445cb), closes #86
- core Create Sale stock movements when Order is completed (e0a0441), closes #81
- core Create StockMovements when variant stock changed (f8521db), closes #81
- core Create workflow for updating a Customer email address (f8065de), closes #87
- core Export populate-collections CLI command (0aef0b7)
- core Expose init CLI command (4d5f0d9)
- core Implement CollectionFilter based on ProductVariant name (18549c7), closes #71
- core Implement private Facets (b6c3240), closes #80
- core Implement tax on shipping (1b13aa3), closes #54
- core Improved logging messages on bootstrap (9efada8), closes #86
- core Publish events on login/logout (5ab83da), closes #53
- core Richer mock data (089282e), closes #96
- core Update import CSV format to include stock fields (3f732ab), closes #81
- core Use Logger to log TypeORM logs (5966bec), closes #86
- create Better error reporting on DB connection issues. (1a7dc05), closes #90
- create Update config with latest email-plugin API changes (b2277c5)
- email-plugin Create dev mode mailbox server (e38075f)
- email-plugin Create handler for email address change (8a5907e), closes #87
- email-plugin Generate test emails from dev mailbox (35105ec)
- email-plugin Highlight open email in dev mailbox (3fac1ac)
- email-plugin Improve styling of email templates (8f0c6e7)
- email-plugin Introduce globalTemplateVars option (407d232)
- email-plugin Simplify email config API (d35420a), closes #88