Highlights
Medusa 2.0 update
Most of the changes in this release are related to Medusa 2.0 and will not affect any users' setup. The expected date for a 2.0 release candidate is early summer. You can track the progress in our high-level roadmap.
The larger remaining todos are:
- Convert Rest API to use Workflows, new modules, and API routes
- Migrate Admin to use 2.0
- Documentation
- Migration guide
- Cleanup/housekeeping
Admin Redesign update
Aside from changes for Medusa 2.0, this release also contains work for the Admin Redesign, set to be released in beta at the beginning of April. The redesign will significantly improve the UX and UI of our admin dashboard and make the overall look and feel much more consistent.
Others
Additionally, this release squashes some minor bugs in Medusa 1.*.
Make medusaClient
optional in MedusaProvider
The property medusaClient
on the type MedusaProviderProps
in medusa-react
has been updated to be optional.
Using the MedusaProvider
without the medusaClient
will initialize and use a new default client under the hood:
<MedusaProvider
baseUrl={process.env.MEDUSA_BASE_URL}
...
>
{children}
</MedusaProvider>
Add Product Categories to search subscriber
Product categories are included in search indexing on product updates and creations if the product categories feature flag is enabled.
Update index on customer table
The multicolumn uniqueness index on the customer table (email, has_account)
has been updated to only apply to rows where deleted_at
is null. This is to allow for the creation of customers that were previously soft-deleted.
Features
- feat: Add BigNumber implementation by @olivermrbl in #6253
- feat(region): Add admin region get + list endpoints by @olivermrbl in #6322
- feat(fulfillment): Init dtos work by @adrien2p in #6329
- feat(dashboard,medusa,ui): Manual gift cards + cleanup by @kasperkristensen in #6380
- feat(payment): provider service by @fPolic in #6308
- feat(region): Add store region get + list endpoints by @olivermrbl in #6342
- feat(medusa): workflow engine api by @carlos-r-l-rodrigues in #6330
- feat(region): Create region with countries by @olivermrbl in #6372
- feat(user, types): add invite and user properties + migration by @pKorsholm in #6327
- feat(cart):
POST /store/carts/:id
by @olivermrbl in #6274 - feat(medusa, types, core-flows): Add invite endpoints for api-v2 by @pKorsholm in #6395
- feat(fulfillment): Module service implementation first iteration by @adrien2p in #6381
- feat(order): module foundation by @carlos-r-l-rodrigues in #6399
- feat(tax): tax module scaffolding by @srindom in #6417
- feat: CartRegion link, definition + workflow by @olivermrbl in #6392
- feat: Cart SalesChannel link + clean-up by @olivermrbl in #6418
- feat(tax): Add TaxRegion by @srindom in #6421
- Feat(medusa, user, core-flows): User creation with invites by @pKorsholm in #6413
- feat: Cart Customer link + create cart with customer by @olivermrbl in #6426
- feat(core-flow, medusa): Create cart with Sales Channel by @olivermrbl in #6427
- feat(fulfillment): implementation part 2 by @adrien2p in #6408
- feat(region): Region create, delete, update admin endpoints by @olivermrbl in #6332
- feat(regions): Add support for updating countries in a region by @sradevski in #6432
- feat: Add skeleton for api key module by @sradevski in #6451
- feat(tax): introduce tax override data models by @srindom in #6422
- Feat(order): order changes by @carlos-r-l-rodrigues in #6435
- feat(dashboard, medusa, medusa-js, medusa-react, icons): DataGrid, partial Product domain, and ProductVariant hook by @kasperkristensen in #6428
- feat(api-key): Add CRUD functionalities to the api key module by @sradevski in #6463
- chore(utils): Move generic utils from region module to utils by @sradevski in #6466
- feat(dashboard): Rework route modals by @kasperkristensen in #6459
- feat(tax): adds getItemTaxLines by @srindom in #6440
- feat(utils): Fix big number decorator and cleanup by @adrien2p in #6473
- feat(modules-sdk, types, user, utils):init user module events by @pKorsholm in #6431
- feat(api-key): Add the endpoints and workflows for api key module by @sradevski in #6471
- feat(fulfillment): Shipping options, rules CRUD + rules based context filtering by @adrien2p in #6455
- feat: Update signature of region module to match latest spec by @sradevski in #6487
- feat(tax): singular creates and deletes of regions, rates, rules by @srindom in #6464
- feat(tax): soft deletes by @srindom in #6486
- feat: Add skeleton for Store module by @sradevski in #6506
- feat(workflows-sdk,core-flows,medusa,types): add workflow to update promotions to cart by @riqwan in #6474
- feat: Create cart with line items by @olivermrbl in #6449
- feat: Add basic CRUD functionality to store module by @sradevski in #6510
- feat(fulfillment): List shipping options filtered by context anmd rules by @adrien2p in #6507
- feat(payment, payment-stripe): Add Stripe module provider by @olivermrbl in #6311
- feat(tax): add tax provider support by @srindom in #6492
- feat: Update authentication middleware by @pKorsholm in #6447
- feat: Refresh invite by @pKorsholm in #6469
- feat(tax): normalize country and province code by @srindom in #6513
- feat(tax): add support for updating tax rates by @srindom in #6516
- feat(api-key): Allow revoking in the future, and enforce the secret key by @sradevski in #6484
- feat(user): standardize events emitted for token generation by @pKorsholm in #6520
- feat(admin-next) discounts list page by @fPolic in #6490
- feat(core-flows,medusa,types,utils): adds update cart API with promotions by @riqwan in #6514
- feat: Line Items API Routes by @olivermrbl in #6478
- feat(api-key): Add api-key authentication to middleware by @sradevski in #6521
- feat(payment): Add migration by @olivermrbl in #6509
- feat: Add basic endpoints and workflows for Store module by @sradevski in #6515
- feat(types): add util to transform get response to an update request by @riqwan in #6289
- feat(types): promotion module uses big number by @riqwan in #6522
- feat(tax): migration file by @srindom in #6523
- feat(medusa,core-flows): update cart adjustments on item updates by @riqwan in #6539
- feat(dashboard,medusa): Update Pub. API key table and add query params to endpoint by @kasperkristensen in #6483
- feat(tax): add endpoints to create tax regions and tax rates by @srindom in #6533
- feat(tax): add support for updating tax rates by @srindom in #6537
- feat(tax): v2 api tax rates and regions deletes by @srindom in #6541
- feat(utils): consolidate promotion utils + refactor + fixes by @riqwan in #6531
- feat(dashboard): Regions domain by @kasperkristensen in #6534
- feat: Add currency module and remove currency models from region and pricing modules by @sradevski in #6536
- feat(link-modules): Cart, Payment Collection link definition by @olivermrbl in #6508
- feat(order): order change actions engine by @carlos-r-l-rodrigues in #6467
- feat: Modify api key and sales channel link to use modules and add test by @sradevski in #6546
- feat: Add supported currencies to store model by @sradevski in #6562
- feat: Add payment collection creation for cart by @olivermrbl in #6527
- feat(medusa-react,medusa,utils): add users/me endpoint + add missing specs by @riqwan in #6441
- feat(core-flows,link-modules,modules-sdk): add cart <> promotion link as source of truth by @riqwan in #6561
- feat: Create payment sessions by @olivermrbl in #6549
- feat: Region PaymentProvider link by @olivermrbl in #6577
- feat: add product admin v2 endpoints by @sradevski in #6579
- Feat(fulfillment): service provider registration + fulfillment management by @adrien2p in #6524
- feat(dashboard): Order details page by @kasperkristensen in #6538
- feat(tax): add endpoints to manage tax rate rules by @srindom in #6557
- feat(fulfillment): Initialize models work by @adrien2p in #6328
- Feat(utils): psql unique index instead of constraint by @pKorsholm in #6386
- feat(dashboard): Discounts details + edits by @fPolic in #6547
- feat(pricing,medusa,utils): added list + get endpoints for price lists by @riqwan in #6592
- feat: Capture payment by @olivermrbl in #6601
- feat: Refund payment by @olivermrbl in #6610
- feat: Refresh payment collection + delete session by @olivermrbl in #6594
- feat(medusa,core-flows,types): add cart <> tax integration workflows + steps by @riqwan in #6580
- feat(order): order changes by @carlos-r-l-rodrigues in #6614
- feat(orchestration,modules-sdk): options autoCreateServiceNameAlias by @carlos-r-l-rodrigues in #6622
- feat: Set withDeleted as true if filtering on deleted_at in modules by @sradevski in #6626
- feat(stock-location): Convert module to use mikro-orm by @pKorsholm in #6616
- feat(inventory-next, types): inventory module conversion by @pKorsholm in #6596
- feat: Add Sales Channel Stock Location link by @olivermrbl in #6634
- feat(medusa,dashboard): Tax settings pages and fixes to list tax rates endpoint by @kasperkristensen in #6606
- feat(dashboard): Workflow executions by @kasperkristensen in #6564
- feat(dashboard) admin 3.0 create discounts form by @fPolic in #6590
- feat(dashboard): Reservations and inventory item list pages by @kasperkristensen in #6550
- feat(dashboard): Return Reasons domain by @kasperkristensen in #6640
- feat(medusa,dahsboard): Initial work on pricing domain by @kasperkristensen in #6633
- feat: Implement missing methods in product module and make more tests pass by @sradevski in #6650
- feat: Add payment + promotion refreshing to cart workflows by @olivermrbl in #6654
- feat(dashboard,medusa): Draft order list page by @kasperkristensen in #6658
- feat(fulfillment): Soft deletes by @adrien2p in #6630
- feat(medusa): added list price list products endpoint by @riqwan in #6617
- feat(fulfillment): Migration backward compatibility by @adrien2p in #6672
- feat(core-flows,medusa,types): add automatic-taxes to region + generate tax lines endpoint by @riqwan in #6667
- feat: Add shipping method to cart workflow by @olivermrbl in #6661
- feat(medusa,pricing,types): added get endpoints for pricing rule types by @riqwan in #6678
- feat: List shipping options for cart by @olivermrbl in #6677
- feat(core-flows,medusa): added api + workflows for rule types CRUD by @riqwan in #6684
- feat: Confirm inventory in create cart workflow by @olivermrbl in #6635
- feat(core-flows,medusa,types,utils): add rules to promotion endpoints + workflow by @riqwan in #6692
- feat(core-flows,medusa,types): remove rules from promotion endpoints + workflows by @riqwan in #6696
- feat(core-flows,medusa,types): remove rules from promotion endpoints + workflows by @riqwan in #6696
- Feat(inventory-next, medusa): Add List inventory items endpoint by @pKorsholm in #6694
- feat(medusa,types): GET admin promotion endpoint to fetch by code by @riqwan in #6697
- feat(core-flows,medusa,types,utils): add/remove fulfillment shipping option rules by @riqwan in #6698
- feat(dashboard): Setup parallel V2 routes by @kasperkristensen in #6691
- feat(medusa,core-flows,types): adds update promotion rule endpoint + workflow by @riqwan in #6702
- feat(dashboard,medusa): Draft order detail by @kasperkristensen in #6703
- feat(core-flows,medusa,pricing,types,utils): added price list workflows + endpoints by @riqwan in #6648
- feat(dashboard): manage discounts conditions by @fPolic in #6620
- feat: Update the product options model and refactor the product module by @sradevski in #6685
- feat(fulfillment): Separate list and context rules validation by @adrien2p in #6674
- feat(medusa): Add get inventory item endpoint by @pKorsholm in #6704
- feat(): Update transformer middleware and API by @adrien2p in #6647
- Feat(core-flows, inventory-next, medusa, types): Add create location level endpoint by @pKorsholm in #6695
- feat(core-flows,medusa,types): create/update workflows to create and update PriceList prices by @riqwan in #6711
- feat: Sales Channels API routes + workflows by @olivermrbl in #6722
- Feat(core-flows, inventory-next, medusa, types): Add create inventory item endpoint by @pKorsholm in #6693
- Feat(core-flows, medusa, types): Add delete location level api-v2 endpoint by @pKorsholm in #6727
- Feat(core-flows, medusa): delete inventory item by @pKorsholm in #6708
- feat: Add products to sales channel by @olivermrbl in #6725
- feat: Add product and pricing link on create and delete operations by @sradevski in #6740
- feat: make it possible to use subscribers in v2 by @srindom in #6731
- feat(dashboard) admin 3.0 order edit by @fPolic in #6665
Bugs
- fix(ui,ui-preset): Code component styles by @kasperkristensen in #6357
- fix(medusa-react): medusa provider needs a medusa client instance by @gutyerrez in #6363
- fix: typo in git checkout command by @leocabeza in #6403
- fix(utils): Symbol for Indian Currency by @Faiyyaz in #6453
- fix: fix fulfillment spec by @riqwan in #6456
- fix(medusa): register logger when running migrations by @fPolic in #6415
- fix(workflows-sdk): Fix StepFunction typings and custom step name by @adrien2p in #6468
- fix(utils): bignumber util considers nullable options when setting value by @riqwan in #6499
- fix(medusa) Fix logger level error by @chemicalkosek in #6512
- fix(medusa-cli): Logger arguments by @xyzones in #6526
- fix: Move country loading for region to the loader, fix a bug with cascade by @sradevski in #6559
- fix(tax): improve error handling by @srindom in #6563
- fix: Add some tests and test cleanup for product module by @sradevski in #6586
- fix: Loading custom modules by @carlos-r-l-rodrigues in #6411
- fix(medusa): unable to delete downloaded files by @wangjue666 in #6169
- fix(fulfillment): Fulfillment set file name typo by @olivermrbl in #6671
- fix(orchestrator): inject context on decorated methods only by @carlos-r-l-rodrigues in #6666
- fix(medusa): Add product category relation in ProductSearchSubscriber by @pepijn-vanvlaanderen in #6555
- fix: make v2 with modules run by @srindom in #6636
- fix(tests): Cart links by @olivermrbl in #6628
- Fix(orchestrator): Joiner field alias by @carlos-r-l-rodrigues in #6602
- fix: integration-tests/modules by @adrien2p in #6595
- fix: integration tests modules 2 by @adrien2p in #6599
- fix: constraint on customer table to allow soft-deletes by @madsleejensen in #6631
- fix: Medusa V2 project loader by @srindom in #6639
- fix: Medusa V2 loader by @srindom in #6639
- fix(dashboard): fixed some strings by @shahednasser in #6686
- fix(workflows-sdk): Value resolver should resolve non StepResponse by @adrien2p in #6726
Chores
- chore: cleanup inspection by @adrien2p in #6358
- chore: small fixes to tsdocs by @shahednasser in #6341
- chore(): Fix database test utils and utils by @adrien2p in #6383
- chore(docs): Updated UI Reference by @github-actions in #6347
- docs-util: support generating OAS in docblock generator by @shahednasser in #6338
- chore(docs): add empty changeset step to actions by @shahednasser in #6377
- chore(medusa-test-utils): Add debug option to the module test runner by @adrien2p in #6462
- chore(cart): Make all cart entities soft-deletable by @olivermrbl in #6475
- chore: generated tsdocs by @shahednasser in #6352
- chore(util): Detect circular dependencies on soft delete by @adrien2p in #6489
- chore(utils): Soft delete should allow self referencing circular deps by @adrien2p in #6504
- chore(cart): Use module native soft-delete/delete methods by @olivermrbl in #6491
- chore(utils): Improve big number decorator by @adrien2p in #6525
- chore: V2 core loader + modules integration-tests by @olivermrbl in #6544
- chore: Use default countries and currencies from utils by @sradevski in #6543
- chore(actions): Use PG pass secret by @olivermrbl in #6548
- chore(medusa-test-utils): Add logger by default by @adrien2p in #6558
- chore(): Run packages integrations concurrently and not in band by @adrien2p in #6576
- chore(utils): Add default ordering to the internal service factory list/listAndCount by @adrien2p in #6436
- chore(): Prevent from soft deleting all entities by @adrien2p in #6396
- chore: Use module test runner in Carts API test suite by @olivermrbl in #6679
- chore(order): big number calculations by @carlos-r-l-rodrigues in #6651
- chore: align version of
dotenv
by @kasperkristensen in #6657 - chore: Adjusting the v2 product module to follow the v1 specs by @sradevski in #6618
- chore(integration-tests): Introduce V2 tests in Admin Payments API test suite by @olivermrbl in #6621
- chore: Use new test runner in admin payments API by @olivermrbl in #6611
- chore: Start using medusa test runner on product API tests by @sradevski in #6609
- chore(tests): Try to use the api integration tests for v2 by @sradevski in #6588
- chore: Chore/integration tests modules utils by @adrien2p in #6581
- chore: Revert #6548 by @olivermrbl in #6598
- chore: Update CODEOWNERS by @olivermrbl in #6682
- chore(medusa): use batch/add and batch/remove endpoints for promotion rules by @riqwan in #6701
- chore: Bump all modules by @olivermrbl in #6700
- chore: Update version bump from minor to patch by @olivermrbl in #6699
- chore: Use module test runner in all modules by @sradevski in #6706
Documentation
- docs: new troubleshooting guide + cors fix by @shahednasser in #6387
- docs: Add sradevski to teams.yml by @sradevski in #6416
- docs: Update teams.yml by @edast in #6419
- docs: Update CONTRIBUTING.md to include information on generating a changeset by @sradevski in #6454
- docs: add missing widget props for collections injection zones by @shahednasser in #6452
- docs: typo fix in create event module reference by @shahednasser in #6470
- docs(ui): show icon tooltip on small devices by @shahednasser in #6407
- docs: Update redis.md by @leocabeza in #6519
- docs: fixes to CLI reference by @shahednasser in #6530
- docs: Fixed typo in database_url [:post] instead of [:port] by @nkhar in #6505
- docs: add ignore tag to isPaymentProcessor by @shahednasser in #6410
- docs-util: fix import issues following merge by @shahednasser in #6390
- docs: fixes to code snippets in Workflows documentation by @shahednasser in #6393
- docs(payments): Fix incorrect reference in payment processor tsdoc by @sradevski in #6409
- docs: add missing steps to enable
medusa_v2
flag by @shahednasser in #6406 - docs: fix search in api reference by @shahednasser in #6578
- docs: clarification in text by @MedusaNick in #6361
- docs-util: fix release scripts by @shahednasser in #6353
- docs: update next.js starter docs by @shahednasser in #6378
- docs: fix migrations path in extend entity docs by @shahednasser in #6645
- docs: hide admin translations contribution page by @shahednasser in #6603
- docs: Heroku typo by @minhtungo in #6629
- docs: prep for v2 documentation by @shahednasser in #6710
New Contributors
- @gutyerrez made their first contribution in #6363
- @leocabeza made their first contribution in #6403
- @sradevski made their first contribution in #6409
- @edast made their first contribution in #6419
- @Faiyyaz made their first contribution in #6453
- @nkhar made their first contribution in #6505
- @madsleejensen made their first contribution in #6631
Full Changelog: v1.20.2...v1.20.3
New Contributors
- @gutyerrez made their first contribution in #6363
- @leocabeza made their first contribution in #6403
- @sradevski made their first contribution in #6409
- @edast made their first contribution in #6419
- @Faiyyaz made their first contribution in #6453
- @nkhar made their first contribution in #6505
- @madsleejensen made their first contribution in #6631
Full Changelog: v1.20.2...v1.20.3
New Contributors
- @gutyerrez made their first contribution in #6363
- @leocabeza made their first contribution in #6403
- @sradevski made their first contribution in #6409
- @edast made their first contribution in #6419
- @Faiyyaz made their first contribution in #6453
- @nkhar made their first contribution in #6505
- @madsleejensen made their first contribution in #6631
Full Changelog: v1.20.2...v1.20.3