Repository navigation
Releases: dinkuskit/commerce
Release list
v0.7.0
Minor Changes
-
#204
b4b84fbThanks @saariuslystoned! - Commit catalog price, manual availability, submitted feed choices and multi-choice weight saves atomically within the default sandbox budget. Reject stale forms and distinguish a confirmed save from a failed panel refresh or unknown write outcome.Existing values are read through until saved into the product record. Direct kernel price, availability and feed readers require the catalog reader as their third argument. Older binaries must not write concurrently or be installed as a downgrade without a data conversion.
-
#213
390ab48Thanks @saariuslystoned! - Record a billing address on every checkout. Checkout contact accepts and requiresbilling(same shape and checks asdelivery, any country, refused asBILLING_INVALID) and freezes it with the order. The Orders detail now shows the customer's email and phone, Ship to and Bill to ("Same as delivery address" when equal, "Not recorded" on older orders). The agents'ordersroute anddinkus-commerce orders showreturnbillToandbillToMatchesShipTo. Storefronts must sendbilling; the template store's checkout form ships with this release. -
#201
71b1595Thanks @saariuslystoned! - Agents and tools can manage products through the privatecatalogroute with an EmDash API token: list, get, create, link, prices and stock status, choices, SKU, weight, identifiers, archive, pictures and feeds, with the same checks as the product page panels. Thedinkus-commerceCLI gains product commands on that route, each previewed with--dry-runand sent with the--confirmvalue it printed, which Commerce checks before it saves. A smaller Registry build makes room for it without removing anything. -
#200
20b5196Thanks @saariuslystoned! - Flat shipping can be free over an amount the owner sets in Set up Commerce at DinkusKit.com. Commerce asks DinkusKit.com for that amount and charges no shipping once an order's goods, after any discount, reach it. -
#208
11d24e4Thanks @saariuslystoned! - Commerce keeps the link between a product page and its product, so a product page no longer needs a Commerce product field that people could type into. The Dinkus Commerce panel links the page without filling or saving anything on it, and stops asking for theadmin.editor-draft:patchpermission.catalog-items/set-on-saletakes the page alone and finds its product: a publish sells the panel's pick, and an unpublish, delete or title change acts on what the page last sold. The privatecatalogroute'sgettakes a page'sentryIdto answer the product that page sells, Drafts included. The public catalog lists each product'spage, andcatalog/public/item?pageId=finds the product a published page sells, so a storefront reads the link from Commerce.Update the store's template with this release. A template that still reads the page's Commerce product field when it publishes keeps selling the pages that have it filled in, but a page linked in this panel would publish without going on sale.
-
#188
3846c70Thanks @saariuslystoned! - The product page title is the product's one name. The store's publish check may send the page title asnamewithcatalog-items/set-on-sale, and Commerce saves it in the same write that puts the product on sale, so the shop, cart, checkout and new orders show it. A write withnameand noonSaleonly renames the product the page already sells, never changing whether it is for sale, so the store can catch up with a title that changed under an overlapping publish. The Dinkus Commerce panel no longer has its own Name field and Rename button.Update the store first: its publish check must send the title (dinkuskit/template-store#158) before it takes this release. A store that takes Commerce first keeps selling and keeps each product's current name until its store code is updated.
-
#196
73be237Thanks @saariuslystoned! - A product page gets a second sidebar panel, "Product image & gallery", for the product's picture and up to eight gallery pictures from the Media Library, so they no longer sit at the bottom of the Dinkus Commerce panel. The Dinkus Commerce panel now says "Simple product. Add a choice, like Size, to sell it in more than one version." on a product with no choices. Store settings read the country list in less space; the accepted countries are unchanged. -
#195
f9a5456Thanks @saariuslystoned! - The Dinkus Commerce panel tells the owner when a product has no Regular price. It says "Add a Regular price to sell it" under the state line, a published page's unpriced product reads "Published: off the shop" instead of "On sale", and a Save that leaves Regular empty answers with the same words as an info notice instead of "Product saved". Saving a choice's price with Regular empty answers the same. What is for sale does not change: a missing Regular price still keeps the product off the shop.
Patch Changes
-
#198
f7c6071Thanks @saariuslystoned! - When the site scheduler hangs long enough for a second try to start, a late failure from the first try no longer makes Commerce forget that the second try registered its 5-minute background check. Switching Commerce on still forgets any earlier registration and writes the check again. -
#183
28dd633Thanks @saariuslystoned! - Guard catalog price updates and clears withgetVersioned,compareAndSet, andcompareAndDeleteretries so concurrent Regular and Sale edits revalidate invariants and never clobber sibling fields. -
#209
501bc9aThanks @saarius! - Fail closed when a requested CLI configuration profile is missing or malformed. Inherited JavaScript property names no longer count as defined profiles, and selected profiles/maps must be JSON objects before any HTTP request. This prevents a malformed selection from silently dispatching an authenticated change to the base site. Explicitly defined names, valid overrides, configuration precedence, and project-config credential restrictions are unchanged. -
#210
08483daThanks @saarius! - Report CLI timeouts and dropped connections while reading a response body as transport failures (exit 3), not internal errors (exit 5). Keep raw transport exceptions, including request-level abort errors, out of command output and do not retry possibly applied writes. -
#216
9655633Thanks @saarius! - Report an unknown outcome (exit 3) when Ctrl-C interrupts a catalog or order change after dispatch starts, instead of falsely saying nothing was sent (exit 4). Read-only preflights, blocked requests and already-cancelled changes do not mark a write as sent. -
#182
4e15ae5Thanks @saariuslystoned! - Deduplicate site-scope origin resolution, guest capability header parsing, catalog route error translation, and redundant catalog/coupon helpers to reclaim Registrybackend.jsbundle headroom. -
#223
6871875Thanks @saariuslystoned! - Build and test against EmDash 1.4.0. The runtime peer and the recorded EmDash compatibility move to exactemdash1.4.0. The Registry bundle is byte-for-byte unchanged; the reference article now says Commerce requires EmDash 1.4.0. -
#207
1d20f26Thanks [@saarius](https://github.com/saarius...
v0.7.0-beta.5
Prerelease artifacts for the EmDash Registry.
v0.6.0
Minor Changes
- #180
63f3e17Thanks @saariuslystoned! - One product screen: each Content > Products page gets a Dinkus Commerce editor panel with price, sale price, SKU, sizes, stock, weight and photos, plus "Add price and stock", which makes a Draft product and links it to the page without saving the page. The Commerce Products page is gone; Commerce settings lists products without a page, each with Make a page. New products start as a Draft (off the shop) until the store's publish check calls the privatecatalog-items/set-on-saleroute; restoring an archived product returns it to Draft. Commerce pages sit in a "Dinkus Commerce" sidebar folder, and Settings is labelled "Commerce settings". Admin is Block Kit only: native installs get the same Orders and Commerce settings pages and product page panel as Registry stores, and the React Products, Store and Coupons screens, the@dinkuskit/commerce/adminexport and thereactpeer dependency are removed. Coupon records stay in storage.
Patch Changes
- #173
7632cabThanks @smoky-agent! - Allow products to hold up to three variant-defining options (such asSize × Color), up to fifty values per option, and up to fifty sparse or full variant members with explicit existing-member assignments when appending options, revision-fenced option/value label renaming across options, and native + Registry editor support.
v0.5.0
Minor Changes
- #170
1d6bb4cThanks @saariuslystoned! - Connect to DinkusKit replaces pasting the checkout settings and the store key: an Administrator presses Connect on Commerce Settings, the business owner approves at DinkusKit.com, and Commerce gets its own store key, kept encrypted. Commerce connects first; Payments and Ship join the store it makes. Commerce fetches its checkout settings from DinkusKit.com itself, after Connect, on Get checkout settings and on every background check. The Checkout settings and Store key boxes are gone.
Patch Changes
-
#169
8064ddfThanks @saariuslystoned! - The Registry build leaves out checkout's coupon quoting, reservation and reconciliation, which it cannot reach without a coupon port, freeing about 5.6 KB under the Registry's per-file size limit. A coupon code is refused exactly as before; the native entry keeps every coupon path. -
#168
8dac3cfThanks @saariuslystoned! - The Registry build leaves out the Manage stock, stock reservation and order Pack paths it cannot reach, freeing about 6.9 KB under the Registry's per-file size limit. Nothing a Registry store can do changes; the native entry keeps every path.
v0.4.0
Minor Changes
-
#151
18f0c19Thanks @saariuslystoned! - Add a host-onlybuildProductPreviewJsonLdhelper for editorial product pages
without a Commerce item. It emits only supplied page facts and never invents
identifiers, price, availability, or an Offer.Expose existing merchant-approved feed channels on public catalog list and
item responses so storefront hosts can build public feeds without admin
reads. Missing or empty eligibility never opts a product in. -
#143
952b5b9Thanks @saariuslystoned! - Require Node 24 (engines>=24.15.0 <25); Node 22 has critical SQLite bugs. The repository pins Node 24.22.0. To move an existing Node 22 install, switch to Node 24.15 or newer, then reinstall from the lockfile withnpm ci: native modules built for Node 22, such as better-sqlite3, fail to load under Node 24 until they are reinstalled. -
#152
c42597bThanks @saariuslystoned! - Add store-local shopper accounts (dinkus.customers) with passwordless 6-digit email OTP sign-in (email:send), origin-boundx-commerce-customer-sessioncapability tokens, automatic case-folded email linking to past and future paid orders, and a single default saved shipping address + optional phone. -
#161
2d51753Thanks @saariuslystoned! - Require a supported US state or District of Columbia for new physical checkouts to the United States. Accept abbreviations and full names while preserving merchant-configured non-US destinations, saved addresses and existing checkout attempts.
Patch Changes
-
#157
eebeca0Thanks @saariuslystoned! - Recover the 5-minute background check when the site scheduler fails or stalls
while Commerce is switched on. Switching on now gives the scheduler 3 seconds
and never fails the hook; until the check is registered, the next request
registers it, at most one attempt a minute per isolate, so payments a shopper
never returned from and Ship labels are still picked up without switching the
plugin off and on. -
#159
75e90a3Thanks @saariuslystoned! - Shrink the Registry plugin file by 1,457 bytes with no change in behavior.
Shopper accounts, guest checkout and the Inventory Pack button now share one
copy of the same-origin request check and the secret hashing helpers, and the
shopper account handlers, routes and error table are written once instead of
five times.
v0.3.0
Minor Changes
- #129
6f4d293Thanks @saariuslystoned! - Store owners can rename a product, archive it (it leaves the shop and checkout refuses it) and restore it, and copy its product ID from the product's admin page. Past orders keep the name the product had when bought.
Patch Changes
-
#135
cb8ba5eThanks @saariuslystoned! - Product admin screens no longer fail with "Too many subrequests" once a store has more than a handful of products. The Products list reads only names, and each product screen and its saves read that one product directly, with prices and stock in one batched call, so a screen costs the same few storage calls with 10 products or 1,000, archived products included. -
#137
5a449ecThanks @saariuslystoned! - The shop's product list no longer fails with "Too many subrequests" once a shop has more than a couple of live products. Each page reads prices, stock and photo records for all its products in a few batched calls, and a page stops early once its photos would take more than 16 Media Library reads, with the next cursor picking up at the next product. One product's page reads each record once. The cursor stays opaque; follow it until it is absent, as before. -
#125
d86690dThanks @saariuslystoned! - Commerce's 5-minute background check now gets 25 seconds instead of EmDash's default 5, so it reaches Ship, collects labels and marks orders Completed on Registry stores without anyone opening Commerce Orders. -
#133
82837f7Thanks @saariuslystoned! - Commerce asks only for DinkusKit's own hosts: payments, coupons and ship under dinkuskit.com, and dinkuskit.com itself. The isolated Ship TEST profile from 0.3.0-beta.0 and its test hostship.sm0ky.devare gone, including the private Orders actionsship.admitandcohort.disable. A store whose checkout settings still name that profile keeps checkout and simply has no Ship until it is set up with Ship at ship.dinkuskit.com, which every store uses. -
#116
01b907aThanks @saariuslystoned! - Support the separately published beta package's exact Registry installation identity while preserving stable and unknown-identity admission rules.
v0.3.0-beta.4
Patch Changes
-
#135
cb8ba5eThanks @saariuslystoned! - Product admin screens no longer fail with "Too many subrequests" once a store has more than a handful of products. The Products list reads only names, and each product screen and its saves read that one product directly, with prices and stock in one batched call, so a screen costs the same few storage calls with 10 products or 1,000, archived products included. -
#137
5a449ecThanks @saariuslystoned! - The shop's product list no longer fails with "Too many subrequests" once a shop has more than a couple of live products. Each page reads prices, stock and photo records for all its products in a few batched calls, and a page stops early once its photos would take more than 16 Media Library reads, with the next cursor picking up at the next product. One product's page reads each record once. The cursor stays opaque; follow it until it is absent, as before.
v0.3.0-beta.3
Patch Changes
- #133
82837f7Thanks @saariuslystoned! - Commerce asks only for DinkusKit's own hosts: payments, coupons and ship under dinkuskit.com, and dinkuskit.com itself. The isolated Ship TEST profile from 0.3.0-beta.0 and its test hostship.sm0ky.devare gone, including the private Orders actionsship.admitandcohort.disable. A store whose checkout settings still name that profile keeps checkout and simply has no Ship until it is set up with Ship at ship.dinkuskit.com, which every store uses.
v0.3.0-beta.2
Minor Changes
- #129
6f4d293Thanks @saariuslystoned! - Store owners can rename a product, archive it (it leaves the shop and checkout refuses it) and restore it, and copy its product ID from the product's admin page. Past orders keep the name the product had when bought.
v0.3.0-beta.1
Patch Changes
- #125
d86690dThanks @saariuslystoned! - Commerce's 5-minute background check now gets 25 seconds instead of EmDash's default 5, so it reaches Ship, collects labels and marks orders Completed on Registry stores without anyone opening Commerce Orders.