- 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