Skip to content

Releases: dinkuskit/commerce

v0.7.0

Choose a tag to compare

@dinkuskit-release dinkuskit-release released this 31 Oct 03:50

Minor Changes

  • #204 b4b84fb Thanks @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 390ab48 Thanks @saariuslystoned! - Record a billing address on every checkout. Checkout contact accepts and requires billing (same shape and checks as delivery, any country, refused as BILLING_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' orders route and dinkus-commerce orders show return billTo and billToMatchesShipTo. Storefronts must send billing; the template store's checkout form ships with this release.

  • #201 71b1595 Thanks @saariuslystoned! - Agents and tools can manage products through the private catalog route 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. The dinkus-commerce CLI gains product commands on that route, each previewed with --dry-run and sent with the --confirm value it printed, which Commerce checks before it saves. A smaller Registry build makes room for it without removing anything.

  • #200 20b5196 Thanks @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 11d24e4 Thanks @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 the admin.editor-draft:patch permission. catalog-items/set-on-sale takes 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 private catalog route's get takes a page's entryId to answer the product that page sells, Drafts included. The public catalog lists each product's page, and catalog/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 3846c70 Thanks @saariuslystoned! - The product page title is the product's one name. The store's publish check may send the page title as name with catalog-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 with name and no onSale only 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 73be237 Thanks @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 f9a5456 Thanks @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 f7c6071 Thanks @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 28dd633 Thanks @saariuslystoned! - Guard catalog price updates and clears with getVersioned, compareAndSet, and compareAndDelete retries so concurrent Regular and Sale edits revalidate invariants and never clobber sibling fields.

  • #209 501bc9a Thanks @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 08483da Thanks @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 9655633 Thanks @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 4e15ae5 Thanks @saariuslystoned! - Deduplicate site-scope origin resolution, guest capability header parsing, catalog route error translation, and redundant catalog/coupon helpers to reclaim Registry backend.js bundle headroom.

  • #223 6871875 Thanks @saariuslystoned! - Build and test against EmDash 1.4.0. The runtime peer and the recorded EmDash compatibility move to exact emdash 1.4.0. The Registry bundle is byte-for-byte unchanged; the reference article now says Commerce requires EmDash 1.4.0.

  • #207 1d20f26 Thanks [@saarius](https://github.com/saarius...

Read more

v0.7.0-beta.5

v0.7.0-beta.5 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Oct 17:22

Prerelease artifacts for the EmDash Registry.

v0.6.0

Choose a tag to compare

@dinkuskit-release dinkuskit-release released this 25 Oct 16:02

Minor Changes

  • #180 63f3e17 Thanks @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 private catalog-items/set-on-sale route; 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/admin export and the react peer dependency are removed. Coupon records stay in storage.

Patch Changes

  • #173 7632cab Thanks @smoky-agent! - Allow products to hold up to three variant-defining options (such as Size × 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

Choose a tag to compare

@dinkuskit-release dinkuskit-release released this 23 Oct 00:47

Minor Changes

  • #170 1d6bb4c Thanks @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 8064ddf Thanks @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 8dac3cf Thanks @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

Choose a tag to compare

@dinkuskit-release dinkuskit-release released this 21 Oct 21:28
96bcecd

Minor Changes

  • #151 18f0c19 Thanks @saariuslystoned! - Add a host-only buildProductPreviewJsonLd helper 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 952b5b9 Thanks @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 with npm ci: native modules built for Node 22, such as better-sqlite3, fail to load under Node 24 until they are reinstalled.

  • #152 c42597b Thanks @saariuslystoned! - Add store-local shopper accounts (dinkus.customers) with passwordless 6-digit email OTP sign-in (email:send), origin-bound x-commerce-customer-session capability tokens, automatic case-folded email linking to past and future paid orders, and a single default saved shipping address + optional phone.

  • #161 2d51753 Thanks @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 eebeca0 Thanks @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 75e90a3 Thanks @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

Choose a tag to compare

@dinkuskit-release dinkuskit-release released this 19 Oct 17:10
e8eca12

Minor Changes

  • #129 6f4d293 Thanks @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 cb8ba5e Thanks @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 5a449ec Thanks @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 d86690d Thanks @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 82837f7 Thanks @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 host ship.sm0ky.dev are gone, including the private Orders actions ship.admit and cohort.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 01b907a Thanks @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

v0.3.0-beta.4 Pre-release
Pre-release

Choose a tag to compare

@dinkuskit-release dinkuskit-release released this 19 Oct 14:05
f0e3fee

Patch Changes

  • #135 cb8ba5e Thanks @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 5a449ec Thanks @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

v0.3.0-beta.3 Pre-release
Pre-release

Choose a tag to compare

@dinkuskit-release dinkuskit-release released this 18 Oct 23:02
36c8df1

Patch Changes

  • #133 82837f7 Thanks @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 host ship.sm0ky.dev are gone, including the private Orders actions ship.admit and cohort.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

v0.3.0-beta.2 Pre-release
Pre-release

Choose a tag to compare

@dinkuskit-release dinkuskit-release released this 17 Oct 22:17
cbc636e

Minor Changes

  • #129 6f4d293 Thanks @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

v0.3.0-beta.1 Pre-release
Pre-release

Choose a tag to compare

@dinkuskit-release dinkuskit-release released this 17 Oct 18:33
1974309

Patch Changes

  • #125 d86690d Thanks @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.