Bump Version to 0.20.1
This commit is contained in:
@@ -4,6 +4,43 @@ All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
||||
|
||||
## [0.20.1] - 2026-09-24
|
||||
|
||||
### Fixed
|
||||
- `Modules\Core\Catalog\Support\ProductDocumentLocalizer::withLocalizedFields()` — a translated
|
||||
attribute (name, description, ...) saved blank for the current locale kept the empty string
|
||||
instead of falling back to the store's default language, since `??` only falls back on a
|
||||
missing/null key, not an empty one. A product with no English copy yet showed a blank
|
||||
title/description on `/en/` instead of its Greek content.
|
||||
- `Modules\Core\Command\WipeCatalogCommand` — now also deletes every `CartLine` referencing a
|
||||
`product_variant` purchasable as part of the wipe (line items only, `Cart` records themselves
|
||||
are left alone). Previously, any cart still holding a line for a wiped variant crashed the
|
||||
entire storefront on every page load (`PricingManager::for()` throws when the variant a line
|
||||
points at no longer exists) until those dangling lines were removed by hand.
|
||||
- `Modules\Core\Command\MigrateImportCommand` now asks which language a Shopify export file's
|
||||
own text is written in before importing, instead of silently assuming it matches the store's
|
||||
default language — the two are independent facts, and a mismatch used to save every imported
|
||||
product's name/description under the wrong language. Backing class renamed `DefaultLocale` →
|
||||
`Modules\Core\MigrateImport\Services\ImportLocale` to stop implying that assumption.
|
||||
|
||||
### Changed
|
||||
- `Modules\Core\MigrateImport` reorganized to match every other module's layout
|
||||
(`Contracts/`, `DTOs/`, `Jobs/`, `Models/`, `Services/`) instead of loose files at each
|
||||
namespace root — no behavior change, but every `use` of `Importer`, `ImportSpec`,
|
||||
`ImporterFactory`, `ImportLocale`, `RunMigrateImportJob`, `ShopifyExportImporter`,
|
||||
`ShopifyCsvReader`, `ProductGroup`, `JudgeMeExportImporter`, and `JudgeMeCsvReader` moved to
|
||||
its new namespace.
|
||||
- `Modules\Core\MigrateImport\Shopify\Services\ShopifyExportImporter::import()` now dispatches
|
||||
one `Jobs\ImportShopifyProductJob` per product (via `Bus::batch()`) instead of importing every
|
||||
product inline in a single queued job. A large export's variants, resolvers, and media
|
||||
downloads accumulating in one long-lived process routinely exceeded `queue:work`'s
|
||||
`--memory` limit; the worker died mid-run, the container restarted, and the entire import
|
||||
started over from the first row every time, never actually finishing. Splitting into one job
|
||||
per product resets memory between products, and a restart now only repeats whichever single
|
||||
product was in flight. `Modules\Core\Catalog\Services\SkuBackfillService::backfill()` moved
|
||||
from running right after the import loop to the batch's `then()` callback, since it must wait
|
||||
for every product job to finish rather than firing the moment jobs are merely queued.
|
||||
|
||||
## [0.20.0] - 2026-09-23
|
||||
|
||||
### Added
|
||||
|
||||
Reference in New Issue
Block a user