Commit Graph

9408 Commits

Author SHA1 Message Date
Shahed Nasser
4bf0dac97d docs: update next and react (#14288) 2025-12-12 09:55:13 +02:00
olivermrbl
f2b1ba2f1f chore: Add repo config to draft order plugin 2025-12-11 18:52:41 +01:00
Oli Juhl
70eaf9c5aa chore: Introduce OIDC auth for npm publishing (#14279) 2025-12-11 18:25:25 +01:00
github-actions[bot]
dbc592cd80 chore(docs): Generated + Updated UI Reference (automated) (#14285)
Co-authored-by: olivermrbl <olivermrbl@users.noreply.github.com>
2025-12-11 16:40:35 +02:00
Adrien de Peretti
f13c23a4b7 feat(): Sync order translations (#14267)
* feat(): Sync order translations

* feat(): Sync order translations

* tests

* Create tender-melons-develop.md

* fix tests

* cleanup

* cleanup
2025-12-11 15:40:11 +01:00
github-actions[bot]
fe314ab5bc chore(docs): Generated DML JSON files (automated) (#14284)
* chore(docs): Generated DML JSON files (automated)

* fixes

---------

Co-authored-by: olivermrbl <olivermrbl@users.noreply.github.com>
Co-authored-by: Shahed Nasser <shahednasser@gmail.com>
2025-12-11 16:00:26 +02:00
Shahed Nasser
62c637d709 docs: updates for next release (#14275) 2025-12-11 15:56:34 +02:00
github-actions[bot]
920d002288 chore(docs): Update version in documentation (automated) (#14283)
Co-authored-by: olivermrbl <olivermrbl@users.noreply.github.com>
2025-12-11 15:56:23 +02:00
olivermrbl
5bc391ead4 chore: Release 2025-12-11 14:25:42 +01:00
Nicolas Gorga
70929ecac3 fix(dashboard,medusa,types): improve performance for price list prices retrieval (#14138)
## Summary

**What** — What changes are introduced in this PR?

Price lists prices didn't have a dedicated method to query them and instead, relied on being returned as part of price lists. This, however, introduces optimization issues that for price lists with many prices, could cause crashes. The reason being that relations are not paginated and thus, all prices linked to the price list would be returned.

This PR aims to solve this by introducing a dedicated endpoint and avoiding returning the `prices` as part of price lists by default. The idea being that it is up to the user to explicitly express this, which, for small price lists no issues will arise, but for bigger ones, they will easily recognize the performance impact.

**Why** — Why are these changes relevant or necessary?  

Users with large enough price lists would have serious performance issues or even crashes when querying the `/admin/price-lists` endpoints. This is also true when navigating to the price list section of the Admin UI since it queries this same endpoints.

**How** — How have these changes been implemented?

- Removed the `prices` relation to be part of the default fields returned by the `/admin/price-lists/` endpoints. User may still request it by passing it in `fields` query param.
- Added new `/admin/price-lists/[id]/prices` GET endpoint to be able to retrieve a price list prices with pagination.

**Testing** — How have these changes been tested, or how can the reviewer test the feature?

Integration tests.

---

## Examples

Provide examples or code snippets that demonstrate how this feature works, or how it can be used in practice.  
This helps with documentation and ensures maintainers can quickly understand and verify the change.

```ts
// Example usage
```

---

## Checklist

Please ensure the following before requesting a review:

- [x] I have added a **changeset** for this PR
    - Every non-breaking change should be marked as a **patch**
    - To add a changeset, run `yarn changeset` and follow the prompts
- [x] The changes are covered by relevant **tests**
- [x] I have verified the code works as intended locally
- [x] I have linked the related issue(s) if applicable

---

## Additional Context

The current state of the PR fixes the issue on the price list list and detail component. It still doesn't solve the issue for the following screens: Edit Prices & Add Prices

All the prices are still retrieved from the `/admin/price-lists/` endpoint for these. I want first some feedback before changing it to the new endpoint, since the current DataGrid implementation doesn't support pagination and it seems we are passing a default limit for the products to show there, an arbitrarily large number 9999 and there is also a TODO comment of changing that.

This previous point, though, could be implemented in a later PR, so we can already fix the issue in the price list list and detail pages, so at least for large price lists these screens don't explode and smaller price lists can still have its product prices edited, while only large ones will explode when trying to perform this action. @adrien2p @fPolic thoughts?

closes ENTSUP-265, CORE-1239
2025-12-11 13:13:08 +00:00
olivermrbl
237b472e73 chore: Version packages 2025-12-11 14:10:54 +01:00
Nicolas Gorga
00e57a21a8 fix(framework): Prevent registering express handler for disabled routes (#14236)
## Summary

**What** — What changes are introduced in this PR?

Avoid registering express handlers for routes that have been disabled via `defineFileConfig`.

**Why** — Why are these changes relevant or necessary?  

When middlewares are defined, disabled routes satisfying the matcher will be registered in express routes with no handler (since this is correctly skipped). This will cause, for example, for routes that have `validateAndTransformBody` defined, for the middleware to be registered. When the body doesn't match the validator, instead of the expected 404, we would get a 400, since the route is registered in the express application (even though it doesn't have a corresponding handler).

**How** — How have these changes been implemented?

Added a new `#isRouteFileDisabled` method to `ApiLoader` that prevents a middleware to be registered in the express application if the route was disabled.

**Testing** — How have these changes been tested, or how can the reviewer test the feature?

Integration tests.

---

## Examples

Provide examples or code snippets that demonstrate how this feature works, or how it can be used in practice.  
This helps with documentation and ensures maintainers can quickly understand and verify the change.

```ts
// Example usage
```

---

## Checklist

Please ensure the following before requesting a review:

- [x] I have added a **changeset** for this PR
    - Every non-breaking change should be marked as a **patch**
    - To add a changeset, run `yarn changeset` and follow the prompts
- [x] The changes are covered by relevant **tests**
- [x] I have verified the code works as intended locally
- [x] I have linked the related issue(s) if applicable

---

## Additional Context

Add any additional context, related issues, or references that might help the reviewer understand this PR.
2025-12-11 12:44:49 +00:00
Adrien de Peretti
9852a7c74d fix(): Improve store currency readonly link (#14276)
* fix(): Improve store currency readonly link

* fix(): Improve store currency readonly link

* fix(): Improve store currency readonly link

* Create wicked-rabbits-sparkle.md
2025-12-11 10:47:44 +01:00
Nicolas Gorga
d565a92f63 fix(core-flows): refresh payment collection inside updateCartPromotionsWorkflow (patch) (#14274)
* Refresh payment collection after cart promotion update

* Add missing test

* Add changeset

* Update changeset

* Add force_refresh_payment_collection to updateCartPromotionsWorkflow to conditionally refresh payment collection

* Prevent refreshing payment collection multiple times

* Fix test

* Formatting and unused vars

* Force refresh payment collection on dedicated store cart promotion endpoints

---------

Co-authored-by: Adrien de Peretti <adrien.deperetti@gmail.com>
Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
2025-12-11 10:29:52 +01:00
Shahed Nasser
a78f68fa46 fix(utils,core-flows): add events constant for translations and use it in workflows (#14277) 2025-12-11 11:22:08 +02:00
Adrien de Peretti
d7398736e8 fix(): Improve store supported locale -> locale readonly link (#14269)
* fix(): store supported locales read only link

* fix(): store supported locales read only link

* Create two-books-reply.md

* remove unnecessary links

* remove unnecessary links

* remove unnecessary links

* fix(): store supported locales read only link

* fix(): store supported locales read only link

* improve link
2025-12-11 10:00:12 +01:00
Adrien de Peretti
fd3965974d feat(): Pluralized props for list readonly link (#14190)
* feat(): Pluralized props for list readonly link

* Create perfect-jeans-end.md

* handle backward compat

* Add tests case
2025-12-10 19:38:06 +01:00
Oli Juhl
bca145bdbe chore: Add locks to order edit flows (#14270) 2025-12-10 17:55:03 +01:00
Nicolas Gorga
8bd1d22765 chore(order): Remove unique index on item_id:version for order_item (#14268)
* Remove unique index

* Add changeset

* Remove previous migration file

* Remove down method
2025-12-10 13:51:08 +01:00
Adrien de Peretti
dd74ce34ba chore(): Add translations/locale integration tests and fix locale endpoint (#14266)
* chore(): Add translations/locale integration tests and fix locale end point

* Create selfish-dots-shop.md
2025-12-10 13:45:35 +01:00
Adrien de Peretti
e4877616c3 feat(): sync cart translation synced (#14226)
ref: https://github.com/medusajs/medusa/pull/14189

  **Summary**

  This PR extends the translation module to support automatic translation syncing for cart line items based on the cart's locale.

  Key changes:
  - Added locale field to the Cart model to store the cart's locale preference
  - Created new workflow steps:
    - getTranslatedLineItemsStep - Translates line items when adding to cart or creating a cart
    - updateCartItemsTranslationsStep - Re-translates all cart items when the cart's locale changes
  - Integrated translation logic into cart workflows:
    - createCartWorkflow - Applies translations to initial line items
    - addToCartWorkflow - Applies translations when adding new items
    - updateCartWorkflow - Re-translates all items when locale_code is updated
    - refreshCartItemsWorkflow - Maintains translations during cart refresh
  - Added applyTranslationsToItems utility to map variant/product/type/collection translations to line item fields (title, subtitle, description, etc.)
2025-12-10 08:37:30 +00:00
Adrien de Peretti
356283c359 chore(): Accept an extra agument 'all-or-nothing' on the migrate command (#14262)
* chore(): Accept an extra agument 'all-or-nothing' on the migrate command

* Create rich-camels-brush.md

* chore(): Accept an extra agument 'all-or-nothing' on the migrate command

* chore(): Accept an extra agument 'all-or-nothing' on the migrate command

* chore(): Accept an extra agument 'all-or-nothing' on the migrate command

* chore(): fix broken down migrations

* chore(): update changeset
2025-12-10 09:23:41 +01:00
Adrien de Peretti
9bcfb990bf chore(): Upgrade validator patched version (#14254)
* chore(): Upgrade validator patched version

* Create curvy-paws-laugh.md
2025-12-10 09:22:15 +01:00
Nicolas Gorga
fdc2b722d9 fix(core-flows, medusa): Prevent cart addresses duplication on update (#13841)
* Allow id field in addresses properties for cart update validator

* Update cart addresses in update step where id is provided, both reference and nested fields

* Add tests

* Add changeset

* Remove unnecessary map step

* Review changes
2025-12-09 21:49:16 -03:00
Nicolas Gorga
4dbf46f2cb fix(utils): avoid inflating refundable_total for tax inclusive pricing (#14237)
* Prevent refundable_total inflation for tax inclusive item pricing

* Add tests

* Add changeset

* Update changeset

* Review changes
2025-12-09 19:28:22 +01:00
Adrien de Peretti
bff0142e7a chore(): Move event bus local logging (#14244)
**what**
Log only when actually processing events
2025-12-09 18:27:38 +00:00
Shahed Nasser
c26f5643b6 docs: improve build with AI chapter (#14259)
* docs: improve build with AI chapter

* update sidebar
2025-12-09 16:59:39 +02:00
Shahed Nasser
cc84b9ac49 chore: improvements of TSDocs of link steps (#14261) 2025-12-09 16:59:15 +02:00
Shahed Nasser
0084460765 docs: various improvements and fixes (#14257) 2025-12-09 16:16:45 +02:00
Shahed Nasser
75eac9ebec docs: okta integration tutorial (#14188)
* initial

* docs: okta integration tutorial
2025-12-09 08:36:31 +02:00
Adrien de Peretti
6dc0b8bed8 feat(): Introduce translation module and preliminary application of them (#14189)
* feat(): Translation first steps

* feat(): locale middleware

* feat(): readonly links

* feat(): feature flag

* feat(): modules sdk

* feat(): translation module re export

* start adding workflows

* update typings

* update typings

* test(): Add integration tests

* test(): centralize filters preparation

* test(): centralize filters preparation

* remove unnecessary importy

* fix workflows

* Define StoreLocale inside Store Module

* Link definition to extend Store with supported_locales

* store_locale migration

* Add supported_locales handling in Store Module

* Tests

* Accept supported_locales in Store endpoints

* Add locales to js-sdk

* Include locale list and default locale in Store Detail section

* Initialize local namespace in js-sdk

* Add locales route

* Make code primary key of locale table to facilitate upserts

* Add locales routes

* Show locale code as is

* Add list translations api route

* Batch endpoint

* Types

* New batchTranslationsWorkflow and various updates to existent ones

* Edit default locale UI

* WIP

* Apply translation agnostically

* middleware

* Apply translation agnostically

* fix Apply translation agnostically

* apply translations to product list

* Add feature flag

* fetch translations by batches of 250 max

* fix apply

* improve and test util

* apply to product list

* dont manage translations if no locale

* normalize locale

* potential todo

* Protect translations routes with feature flag

* Extract normalize locale util to core/utils

* Normalize locale on write

* Normalize locale for read

* Use feature flag to guard translations UI across the board

* Avoid throwing incorrectly when locale_code not present in partial updates

* move applyTranslations util

* remove old tests

* fix util tests

* fix(): product end points

* cleanup

* update lock

* remove unused var

* cleanup

* fix apply locale

* missing new dep for test utils

* Change entity_type, entity_id to reference, reference_id

* Remove comment

* Avoid registering translations route if ff not enabled

* Prevent registering express handler for disabled route via defineFileConfig

* Add tests

* Add changeset

* Update test

* fix integration tests, module and internals

* Add locale id plus fixed

* Allow to pass array of reference_id

* fix unit tests

* fix link loading

* fix store route

* fix sales channel test

* fix tests

---------

Co-authored-by: Nicolas Gorga <nicogorga11@gmail.com>
Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
2025-12-08 19:33:08 +01:00
Nicolas Gorga
fea3d4ec49 fix(core-flows): Access orderItem.variant safely inside convertDraftOrderWorkflow when containing custom items (#14233)
* Access orderItem variant safely on convert draft order workflow

* Tests

* Add changest

* Remove .only from test
2025-12-08 08:56:05 -03:00
Nicolas Gorga
b53d63d6c8 fix(dashboard): pass prefix to useDataTable to fix product list not paginating (#14232)
* Pass prefix to useDataTable hook

* Add changeset
2025-12-08 08:39:58 -03:00
Frane Polić
6176f93ac5 fix(dashboard,order): preview pending diff summary (#14221)
* wip: preview pending diff summary

* fix: return test

* fix: rm return calc from processAction_

* chore: cleanup

* chore: changeset

* feat: add estimated diff for return,claim,exchange forms

* chore: changeset
2025-12-08 09:57:13 +01:00
Adrien de Peretti
fe49b567d6 chore: Backend HMR (expriemental) (#14074)
**What**

 This PR introduces experimental Hot Module Replacement (HMR) for the Medusa backend, enabling developers to see code changes reflected immediately without restarting the server. This significantly improves the development experience by reducing iteration time.

### Key Features

  - Hot reload support for:
    - API Routes
    - Workflows & Steps
    - Scheduled Jobs
    - Event Subscribers
    - Modules
  - IPC-based architecture: The dev server runs in a child process, communicating with the parent watcher via IPC. When HMR fails, the child process is killed and restarted, ensuring
  clean resource cleanup.
  - Recovery mechanism: Automatically recovers from broken module states without manual intervention.
  - Graceful fallback: When HMR cannot handle a change (e.g., medusa-config.ts, .env), the server restarts completely.


### Architecture
```mermaid
  flowchart TB
      subgraph Parent["develop.ts (File Watcher)"]
          W[Watch Files]
      end

      subgraph Child["start.ts (HTTP Server)"]
          R[reloadResources]
          R --> MR[ModuleReloader]
          R --> WR[WorkflowReloader]
          R --> RR[RouteReloader]
          R --> SR[SubscriberReloader]
          R --> JR[JobReloader]
      end

      W -->|"hmr-reload"| R
      R -->|"hmr-result"| W
```

### How to enable it

Backend HMR is behind a feature flag. Enable it by setting:

```ts
  // medusa-config.ts
  module.exports = defineConfig({
    featureFlags: {
      backend_hmr: true
    }
  })
```

or

```bash
export MEDUSA_FF_BACKEND_HMR=true
```

or

```
// .env
MEDUSA_FF_BACKEND_HMR=true
```

Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com>
2025-12-08 08:48:36 +00:00
Nicolas Gorga
4de555b546 fix(medusa): use customer query config on delete address route (#14238)
* Use customer query config when deleting address

* Add changeset
2025-12-08 09:11:55 +01:00
Shahed Nasser
b517137466 fix(utils): fix error when generating migrations for a module with existing snapshot (#14218) 2025-12-08 08:54:32 +02:00
Nicolas Gorga
a791ea03ab Add js-sdk to resolutions in local development section (#14197)
## Summary

**What** — What changes are introduced in this PR?

*Please provide answer here*

**Why** — Why are these changes relevant or necessary?  

*Please provide answer here*

**How** — How have these changes been implemented?

*Please provide answer here*

**Testing** — How have these changes been tested, or how can the reviewer test the feature?

*Please provide answer here*

---

## Examples

Provide examples or code snippets that demonstrate how this feature works, or how it can be used in practice.  
This helps with documentation and ensures maintainers can quickly understand and verify the change.

```ts
// Example usage
```

---

## Checklist

Please ensure the following before requesting a review:

- [ ] I have added a **changeset** for this PR
    - Every non-breaking change should be marked as a **patch**
    - To add a changeset, run `yarn changeset` and follow the prompts
- [ ] The changes are covered by relevant **tests**
- [ ] I have verified the code works as intended locally
- [ ] I have linked the related issue(s) if applicable

---

## Additional Context

Add any additional context, related issues, or references that might help the reviewer understand this PR.
2025-12-08 02:43:36 +00:00
Nicolas Gorga
9e4d2df72f fix(dashboard): avoid unnecessary product relations to be returned by default (#14175)
## Summary

**What** — What changes are introduced in this PR?

Improve Admin UI product detail performance after updating the entity.

**Why** — Why are these changes relevant or necessary?  

Products with a lot of relations would cause issues when trying to be updated through various edit components, since the core update api route returns these entities by default.

**How** — How have these changes been implemented?

We remove these unnecessary relations when calling the update route, by passing the `fields` query param with the negation sign for each of these. For example: `fields=-type,-collection...`

**Testing** — How have these changes been tested, or how can the reviewer test the feature?

Tested all of the update components and validated they still work correctly, plus, none depend on the returned product to perform an action or render information.

---

## Examples

Provide examples or code snippets that demonstrate how this feature works, or how it can be used in practice.  
This helps with documentation and ensures maintainers can quickly understand and verify the change.

```ts
// Example usage
```

---

## Checklist

Please ensure the following before requesting a review:

- [x] I have added a **changeset** for this PR
    - Every non-breaking change should be marked as a **patch**
    - To add a changeset, run `yarn changeset` and follow the prompts
- [ ] The changes are covered by relevant **tests**
- [x] I have verified the code works as intended locally
- [x] I have linked the related issue(s) if applicable

---

## Additional Context

Add any additional context, related issues, or references that might help the reviewer understand this PR.

fixes #13783, #14183
closes CORE-1296, SUP-2791


Co-authored-by: Adrien de Peretti <25098370+adrien2p@users.noreply.github.com>
2025-12-07 19:03:25 +00:00
Nicolas Gorga
842c0f5007 fix(core-flows): refresh payment collection inside updateCartPromotionsWorkflow (#13963)
* Refresh payment collection after cart promotion update

* Add missing test

* Add changeset

* Update changeset

* Add force_refresh_payment_collection to updateCartPromotionsWorkflow to conditionally refresh payment collection

* Prevent refreshing payment collection multiple times

* Fix test

* Formatting and unused vars

---------

Co-authored-by: Adrien de Peretti <adrien.deperetti@gmail.com>
2025-12-05 15:27:21 -03:00
Adrien de Peretti
144f0f4e2e chore(event-bus, workflow-engine): Enable more granualar queues configuration (#14201)
Summary

  This PR adds BullMQ queue and worker configuration options to the workflow-engine-redis module, bringing feature parity with the event-bus-redis module. It also introduces per-queue
  configuration options for fine-grained control over the three internal queues (main, job, and cleaner).

  Key changes:
  - Added per-queue BullMQ configuration options (mainQueueOptions, jobQueueOptions, cleanerQueueOptions and their worker counterparts) with shared defaults
  - Unified Redis option naming across modules: deprecated url → redisUrl, options → redisOptions (with backward compatibility)
  - Moved configuration resolution to the loader and registered options in the DI container
  - Added comprehensive JSDoc documentation for all configuration options
  - Added unit tests for option merging and queue/worker configuration

  Configuration Example

```ts
  // Simple configuration - same options for all queues
  {
    redisUrl: "redis://localhost:6379",
    queueOptions: { defaultJobOptions: { removeOnComplete: 1000 } },
    workerOptions: { concurrency: 10 }
  }
```

```ts
  // Advanced configuration - per-queue overrides
  {
    redisUrl: "redis://localhost:6379",
    workerOptions: { concurrency: 10 },        // shared default
    jobWorkerOptions: { concurrency: 5 },      // override for scheduled workflows
    cleanerWorkerOptions: { concurrency: 1 }   // override for cleanup (low priority)
  }
```
2025-12-05 12:03:12 +00:00
Nicolas Gorga
3e3e6c37bd fix(dashboard): show correct color indicators for payment and fulfillment status columns for view_configuration feature flag (#14215)
## Summary

**What** — What changes are introduced in this PR?

Show correct color indicator for payment and fulfillment status columns when `view_configuration` feature flag is enabled on order data table.

**Why** — Why are these changes relevant or necessary?  

For non canceled status, grey default indicator was shown, as these columns weren't handled with their dedicated helper functions.

**How** — How have these changes been implemented?

Updated `StatusRenderer` to resolve the label and color for these columns with their helper functions, just like we do for the normal order table.

**Testing** — How have these changes been tested, or how can the reviewer test the feature?

Validated Admin UI shows correct color indicators when `view_configuration` is enabled.

---

## Examples

Provide examples or code snippets that demonstrate how this feature works, or how it can be used in practice.  
This helps with documentation and ensures maintainers can quickly understand and verify the change.

```ts
// Example usage
```

---

## Checklist

Please ensure the following before requesting a review:

- [x] I have added a **changeset** for this PR
    - Every non-breaking change should be marked as a **patch**
    - To add a changeset, run `yarn changeset` and follow the prompts
- [ ] The changes are covered by relevant **tests**
- [x] I have verified the code works as intended locally
- [x] I have linked the related issue(s) if applicable

---

## Additional Context

Add any additional context, related issues, or references that might help the reviewer understand this PR.

closes CORE-1309
2025-12-05 11:59:34 +00:00
Adrien de Peretti
24c469d217 chore(): Run some commands in server mode only (#14202)
* chore(): Run some commands in server mode only

* Create orange-timers-lay.md

* chore(): Run some commands in server mode only

* chore(): Run some commands in server mode only

* chore(): Run some commands in server mode only
2025-12-05 12:55:23 +01:00
Nicolas Gorga
008f5bb47d feat(dashboard): Improve fully refunded order details (#14077)
## Summary

**What** — What changes are introduced in this PR?

Improve fully refunded order details in the order list of Admin UI.

**Why** — Why are these changes relevant or necessary?  

Fully refunded orders did not show a value for the `total` column and its `payment_status` color badge expressed a happy path.

**How** — How have these changes been implemented?

Added the refund amount with line through style for fully refunded orders in the `total` column of order list table and changed the `payment_status` badge color to red

**Testing** — How have these changes been tested, or how can the reviewer test the feature?

Validated UI looks as expected

---

## Examples

Provide examples or code snippets that demonstrate how this feature works, or how it can be used in practice.  
This helps with documentation and ensures maintainers can quickly understand and verify the change.

```ts
// Example usage
```

---

## Checklist

Please ensure the following before requesting a review:

- [x] I have added a **changeset** for this PR
    - Every non-breaking change should be marked as a **patch**
    - To add a changeset, run `yarn changeset` and follow the prompts
- [ ] The changes are covered by relevant **tests**
- [x] I have verified the code works as intended locally
- [x] I have linked the related issue(s) if applicable

---

## Additional Context

Add any additional context, related issues, or references that might help the reviewer understand this PR.


---

> [!NOTE]
> Show refunded amounts with muted strikethrough in the total column for fully refunded orders and set the refunded payment badge to red, fetching `payment_collections` as needed.
> 
> - **Admin Dashboard — Order List**:
>   - **Total column**: For `payment_status === "refunded"`, display the sum of `payment_collections.refunded_amount` with `text-ui-fg-muted` and `line-through` via `TotalCell` `className`.
>   - **Payment status**: Change `refunded` badge color to red.
>   - **Component**: `TotalCell` now accepts optional `className`.
> - **Data**:
>   - Add `*payment_collections` to `DEFAULT_RELATIONS` for orders.
> - **Changeset**:
>   - Patch release for `@medusajs/dashboard`.
> 
> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 802d24330bceaeba74e11d85886593809876cd8d. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>
2025-12-05 09:20:45 +00:00
Pedro Guzman
56ed9cf9f7 fix S3 URL escaping (#14220) 2025-12-04 22:03:17 +01:00
Pedro Guzman
b7adfb225b fix: escape non-ascii characters in filenames in s3 file provider (#14209)
* escape non-ascii characters in filenames in s3 file provider

* fix url encoding
2025-12-04 18:37:56 +01:00
Shahed Nasser
e3e3c725db docs: triage issues + revamp troubleshooting guides (#14216)
* docs: triage issues + revamp troubleshooting guides

* small change
2025-12-04 17:12:48 +02:00
github-actions[bot]
a00bba5cfc chore(docs): Updated UI Reference (automated) (#14212)
* chore(docs): Generated + Updated UI Reference (automated)

* install deps

---------

Co-authored-by: olivermrbl <olivermrbl@users.noreply.github.com>
Co-authored-by: Shahed Nasser <shahednasser@gmail.com>
2025-12-04 15:05:10 +02:00
Carlos R. L. Rodrigues
5b7e3c0e76 chore: configurable database migration in concurrency (#14004)
> [!NOTE]
> Adds a configurable concurrency for link migrations (CLI/commands), forces concurrency=1 when pgstream is detected, and ignores duplicate link-table inserts.
> 
> - **CLI**
>   - Add `--concurrency` option to `db:migrate` and `db:sync-links`.
> - **Medusa commands**
>   - `migrate` and `sync-links` accept `concurrency`; set `DB_MIGRATION_CONCURRENCY` and force `1` when `pgstream` schema exists via new `isPgstreamEnabled`.
> - **Link Modules (migrations)**
>   - Execute plan actions with `executeWithConcurrency` using `DB_MIGRATION_CONCURRENCY`.
>   - Make link-table tracking inserts idempotent with `ON CONFLICT DO NOTHING` (including bulk/upsert and per-create).
> 
> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 07432293c8fe8de30b07920fa47823b9081edacc. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>
2025-12-04 11:30:30 +00:00
Shahed Nasser
a33ef1e4d9 docs: update Next.js + React (#14210) 2025-12-04 11:50:25 +02:00