Skip to content

SDK releases

Load a release from its address on Pixonaut’s CDN, with the integrity listed for the file, as Embed the designer shows. A release never changes once it is published: a fix is a new release. Each release says what changed since the one before it, changes that alter what an existing embed shows first.

A release keeps working against the live api until 6 months after the next one is released. It stays served at its address for at least 24 months from its own release, and never for less time than it keeps working. These promises may be lengthened, never shortened.

A template made after your release may use something its renderer cannot draw. Every release after 0.14.0 names itself to the api, which refuses it such a template rather than hand over a design it cannot show: mount rejects with a PixonautApiError whose code is sdk_outdated and whose minimumSdkVersion names the first release that draws the template, or is null when no release does yet. A document the renderer cannot read that reaches it anyway, a template you pass in or a stored design, rejects mount with an UnreadableDocumentError (code document_unreadable). Either way the designer is torn down, onError hears it with action: "mount", and nothing throws outside mount.

try {
await Pixonaut.mount('#pixonaut', { publishableKey: 'pk_…', templateId: 'classic-tshirt@2' });
} catch (err) {
if (err.code === 'sdk_outdated') {
console.error(`this template needs SDK ${err.minimumSdkVersion ?? 'a later release'}`);
} else if (err instanceof Pixonaut.UnreadableDocumentError) {
console.error('this SDK release cannot read the design: update it');
}
}

0.22.0

Released 2026-11-02. The latest release: it works until 6 months after the next one. Served until at least 2028-11-02.

New

  • The preview’s shape (#3001): product.getPreviewAspect() answers the width over height of what the preview shows, and a previewShape event says when it changes, so a host can give its frame that shape and draw no bars either side of it.

Changed

  • A preview opened on the Design view with no photo measured takes the print’s shape, no longer a square (#3001). Choosing Design after a photo keeps the photo’s shape, so that switch does not jump.
  • Delete on a lone text field sits on its hint’s row (#3001). An image, several fields or a text with no hint keep a row of their own.
  • A preset for customer-added layers can be a look of its own, on a template holding no layer of that kind (#3003).

Fixed

  • “Create with AI” shows “Changes applied” with Undo for an answer that only adds or removes a customer’s own layer (#3008). It showed Pixel’s reply, or the failure message when the reply was empty, and offered no Undo.

Client types

  • The client’s types follow the api: a store’s webhook address can be set and changed (#3013), a printshop’s credential guide can name its config fields and it says whether it has partner photos (#3011), and a Pixel turn’s tool list has a limit in bytes (#2987).
  • A sandbox store whose webhook address does not answer is enqueued no delivery (#3013). Once its address moves or answers, only what happens from then on is delivered: what was waiting is dropped, so a store catches up by pulling GET /v1/events.
FileIntegrity
LICENSEsha384-MV00ik7bg3KDxAYG2LmT6pRlMm/KZfMfvhACxolh8kRi5C+lG8zYm9GpDUF8k0px
LICENSE-MITsha384-GfDAhGWC7TWUdEi3V+S/ssif42F4il3RjyDHMVf9SUI377mMrcZUwUu5N1m1IJrx
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-qMp/+mESHBlLWcrkTUMYby43w8A0bMwclnbAkYxRgefOICyVlA4q/ZfVxCEE0Kdr
pixonaut-client.jssha384-iMUT3C/i+b4VRRTfeEdtV2gZXmFPOHiLHA62MmKfZwDeMH8cW99Km09XHlDnvMYo
pixonaut-core.d.tssha384-NKTO9SsX8/Km1nCr32yiOPqpva7P0UaVnxxBE2Q4b0bqqWj0Y27Ugqq/jJ4co47Q
pixonaut-core.jssha384-8FELw/Y8znGOyI/IcxRa1sdh8u57HNY2OTlaxCsDW2yJ0o/F0Elnqn2ZInmEGi5N
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-AsCIHhWsuvqeiqdECwpwphaQwXoFitoV9InsPUOPoz2zyYCUbtCRjGEimG4pLJBU
pixonaut.d.tssha384-LuewxIAaXVkeowf5AN0wRmb+AZ4K7vAChylJd6AaS6C3gF6Bs3ai0NyidUkIOU2W
pixonaut.esm.jssha384-5EiY692akz/Vs+nUhbQw7SxE2hG/d1w/1mrUekXWITPHGaVP1fmcouLewHOMRsiH
pixonaut.iife.jssha384-3HeZyOhjIYrwU73wjaZ2IAzklTrFuVVoYaz+fnlLaZpDY1XpWIh59pWXA2KFdjEM
pixonaut_wasm.jssha384-rZylPmOB3KzQM+YAMXYBdjqKojHQnM0IxFhC2ZgvdPmHyAZr6JbCbLFGgxU2THwD
pixonaut_wasm_bg.wasmsha384-/3a9i/BFz3Tvnj9DYIP92IZhtkvu5b4BXMPq5L1djoCRLdQQp45XpVjjpW/YHkMG
schema.d.tssha384-25IL+DNnFJ8pyWk7VSZB4s18KJ9jcNWRwbFjwbfnx+UXZM4FGGBjoSe/OtcXIXpp

0.21.0

Released 2026-11-02. Works against the api until 2027-05-02. Served until at least 2028-11-02.

New

  • “Create with AI” (#2923): the form’s always-open “Ask Pixel” block is now a compact control: a button that opens a one-line prompt, then one row per state (generating with Cancel, changes applied with Undo, reverting, and the failure message with Try again). pixel.ask(prompt, { signal }) takes an abort signal: a cancel rejects with the signal’s reason, stops the request in the api and applies nothing of it, and on('pixel') hears a new cancelled status. An answer names the pictures Pixel is cutting out (cutOuts).
  • A customer’s own layers (#2866, #2872, #2919, #2960): on a template that allows them (customerLayers), the form offers a step or a chosen place to add text, pictures and shapes, a card per added layer with the fields its preset offers, and Remove. A correction shows the layers the design added. Shopper Pixel adds, changes and removes them too, and an answer lists them under layers (PixelLayerChange).
  • Delete on a template layer (#2952): a layer with deletable: true offers the customer Delete and Restore. A design lists what it deleted under $deleted, and the preview, proof, mockups and print file leave it out.
  • Values for dark garments (#2961, #2966, #2969): when the customer picks a dark colour, the designer draws the template’s onDark values, in the canvas, the proof, the committed design and the pictures of other variants and templates.
  • Recolour and invert tones (#2953): two more tones for an image layer’s photo adjustments, offered in the form.

Changed

  • The form’s pixel.* messages (#2923): pixel.legend, pixel.ask and pixel.asking are gone, replaced by pixel.create, pixel.generate, pixel.generating, pixel.generating-hint, pixel.cancel, pixel.close, pixel.dismiss, pixel.try-again and pixel.undoing. A host that overrides the old keys moves to the new ones.
  • The canvas selection chrome is redesigned and takes the accent (#2916): a solid frame with a light halo, round and pill knobs in larger hit boxes, and a rotate knob on a stem. A short layer can be dragged again (#2970).
  • The client’s types follow the api: designs, customer sessions and prints answer in camelCase (#2921, #2950).
FileIntegrity
LICENSEsha384-MV00ik7bg3KDxAYG2LmT6pRlMm/KZfMfvhACxolh8kRi5C+lG8zYm9GpDUF8k0px
LICENSE-MITsha384-GfDAhGWC7TWUdEi3V+S/ssif42F4il3RjyDHMVf9SUI377mMrcZUwUu5N1m1IJrx
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-qMp/+mESHBlLWcrkTUMYby43w8A0bMwclnbAkYxRgefOICyVlA4q/ZfVxCEE0Kdr
pixonaut-client.jssha384-XPemnClJDxHzF3zMglDOvdVNlMpES6PjL1lmQXSycZ81FG6zcN5EIVd8egIFV99Q
pixonaut-core.d.tssha384-JDmPKnNrJuL2M6HfS03YW2zwrMiAfyjbin/2kdggKwKbFFdbGEH04QhWEjRXVQve
pixonaut-core.jssha384-JDJNZqmsRuMva9yQScOLO4jH3k/gqU1RBbyofXKKhfOyQw4r+EoQXbC3m0UKORN4
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-9gjbAwDy8e9d0dDs/oSBRpqTqWdKC3tc8LLtTPn54+EGnYUU8obZ5g2m0Q+sQyyG
pixonaut.d.tssha384-2f/Kd8s6KnuRqvJQ9zo5F97SEfeR0O9/uxikvuYFliNvwi00OJUSPGh30dEBN5/J
pixonaut.esm.jssha384-rCyd4VA2oPpUAZJ7RDnhyrSQIf8w1s9bNit1/YW8+tR0nquUNK2/sPqCb68TuwGk
pixonaut.iife.jssha384-AdsybEoDTynBw5tWlpcHz0DETG8/i8VHeuosho3hsEtIhbt6vaOaxyXo6sEMFBI5
pixonaut_wasm.jssha384-tolCRPVcMZ/kYncR5eB9yProJswf60HIBlRoTaLMjdcALgVr7tMYGeulwYI8P2EY
pixonaut_wasm_bg.wasmsha384-vJ4h0JhvnQ2KJjwy8+73pASZ8Dn0OmV6IXjcJHKpnWepbRoQwe4J9JHIYCI1f7M2
schema.d.tssha384-nk4kfICjS//gbwVxO2qbiz9ZnmMOLGXsorqo5wXKG9RP41/mMvtsEp6LADMm5jdu

0.20.0

Released 2026-10-31. Works against the api until 2027-05-02. Served until at least 2028-10-31.

New

  • drawAtTemplateRatio (#2859): a mount option, and a template setting of the same name, that draws the canvas and the live preview at the template’s own ratio at every print size, scaled the way the template’s fit prints it into the chosen size. A size change rescales the canvas and never reshapes it. The effective value is opts.drawAtTemplateRatio ?? template.drawAtTemplateRatio ?? false, so a mount that leaves it out keeps today’s behaviour unless the template turns it on. It has no effect on panel layout mounts, stored-design and correction mounts, a shaped print area or a design that repeats. The upload and background resolution checks still measure the chosen size, and proof, commit and validation requests carry the mount’s value when it set one. A non-boolean value counts as left out, with one console.warn naming the option.

Changed

  • The core accepts a template that carries customerLayers (#2833): it loads, takes a design and serialises it back unchanged. The designer does not offer customer-added layers yet.
FileIntegrity
LICENSEsha384-MV00ik7bg3KDxAYG2LmT6pRlMm/KZfMfvhACxolh8kRi5C+lG8zYm9GpDUF8k0px
LICENSE-MITsha384-GfDAhGWC7TWUdEi3V+S/ssif42F4il3RjyDHMVf9SUI377mMrcZUwUu5N1m1IJrx
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-qMp/+mESHBlLWcrkTUMYby43w8A0bMwclnbAkYxRgefOICyVlA4q/ZfVxCEE0Kdr
pixonaut-client.jssha384-nyL7+uHZAFdyj8+arZldeEdSTBFPww33ypjcvcH8qM1+ovNe7NcIHwoXH7YgpCAG
pixonaut-core.d.tssha384-XoeI0qD30pnZrhTJtqYpZQpY6NJxyO+j65AvFiLoG8C9nfnropzN0n4EYsLDg57k
pixonaut-core.jssha384-8dSuFU0y99fW0jvPV2nxTpU/JfRft51nylRFkakXIOxwyOax7w9UznH22s1BgSwn
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-qYsMdcHirMWqWpiWrF5KXweKBLm1rsYp7WvPDFpeqcbRDyD0D+AxoMJ3Azbm/cbH
pixonaut.d.tssha384-UP3ClDhlvk8BfENaAfeb/p0EsUl5dZvdQd8RtDJtoZ1xjmg6LT5RkorAhglnXF17
pixonaut.esm.jssha384-jxKJpCwy9ojJ3XgA1myAGS9WnhHTTBuxsxwnas52SdiwokigWO/QhhYMmEp0qcH1
pixonaut.iife.jssha384-Uly6La88b9g2Px07WpYJ1aQV6P/wFUheG69GXb0Ju8O6mYsCN9NP/kjBSSqtzGHq
pixonaut_wasm.jssha384-Mop701qQJqV44bq72JYWVdq6xz1gdEuzCRukKzI4VL7GpFhCtzZHJ4gU118gT+MU
pixonaut_wasm_bg.wasmsha384-hOVHLpVZS6Vr08lvpCeCF2ytoch+44CpVv3QA0w/ETAf9KWuoM8K1dF09TPCpCoC
schema.d.tssha384-2juD3/v6kYtKOST3jUyptW13QV/BrtBxRhXprbmW1m+p/5luF12etjru2XUEOEJr

0.19.0

Released 2026-10-30. Works against the api until 2027-04-30. Served until at least 2028-10-30.

New

  • ProductVariant.printable (#2795): getVariants() says whether the design can print on each variant, judged as a commit judges it: a chosen print size against the variant’s print area, else the sizes the template’s constraints read reports it cannot print at (a repeated design is not held to those). On a cut-and-sewn placement, where the print is the whole panel, a template whose ratio matches one size’s panel does not fit another’s. The default option picker disables a size no printable variant has, labelled “not available for this design” (the new variants.misfit message, translated), keeps fitting sizes and every colour choosable, and checks again when the repeat or the print size changes. A placement’s box carries the misfits as misfitSizes.

Changed

  • A long font or shape choice is a select (#2792): a font, shape or fit field with more than eight options shows as a drawn select instead of a row of tiles. Each font’s name in it is set in that font, and each shape is shown beside its name, led by None when the shape may be left out. The list opens on a click and answers the arrow keys, Home, End, Enter, Space, Escape and a typed letter.

Fixed

  • Clicking a layer on the preview selects it only when the customer may move, turn, scale or resize it (#2792). A fixed layer, such as a name set by the template, no longer draws a selection box; its text, opacity, flip and crop choices stay on the form.
FileIntegrity
LICENSEsha384-MV00ik7bg3KDxAYG2LmT6pRlMm/KZfMfvhACxolh8kRi5C+lG8zYm9GpDUF8k0px
LICENSE-MITsha384-GfDAhGWC7TWUdEi3V+S/ssif42F4il3RjyDHMVf9SUI377mMrcZUwUu5N1m1IJrx
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-qMp/+mESHBlLWcrkTUMYby43w8A0bMwclnbAkYxRgefOICyVlA4q/ZfVxCEE0Kdr
pixonaut-client.jssha384-oHjEbAX3uTcP4X6K3xrjlNDiqdcrn5uxa2PJF0M0BDzgRvxo7/d2CLJBQvOGEZTa
pixonaut-core.d.tssha384-izR2Qw3NFh971Dzg5EMJNaROhFS0ZOFc4GJdPrxFIWywlAhlnX2w61P3ZwKPvEzR
pixonaut-core.jssha384-gFSYOV87CFiFoOEAnP9s48aV1EDtlJAglTvml95QvEQ4dMsMwOSB+9Lxd0V+ZXR8
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-ZOVuVnyLp8ygIDEITSZuclL7fbEQaUr7jx4qyRF0pjrMqNjGmLc/SiOvdgSOG7dO
pixonaut.d.tssha384-5D1l6SK385SW7lDtpfKqr6PmUXqBF+CxUKVFaRqLt442W69p3Pu+r15VsbXAFDWo
pixonaut.esm.jssha384-8tFUR4imcD9Hh+7oBi/rXJnyZt9l/wpN4p/xHti01OFY6VlNfuspVtZ6lAtn3/mz
pixonaut.iife.jssha384-BH+dhKvhwgyaTfVfBcGecQ/9PB/KaOf4B2qe7zTyiJIJrYCUD6WYuiR2fjXMnVaQ
pixonaut_wasm.jssha384-ZyV4yg5ybAlcNGL8QhgZc9aPxm5M2QJ+lG13GKrLSnUSIi3gxNABNusY9Vg0nF03
pixonaut_wasm_bg.wasmsha384-HObJ5awMH3UvYBspM+CpJy7JUPn3AB3Q42EpUX+VDfLCogGPi2jvSWBowSlXWQaC
schema.d.tssha384-KqMMr0PBMto2Y6z1Ndf8yw1y853QrzXsIhxOaMLvX0LSyF+WXUhn79VSInkROm+q

0.18.1

Released 2026-10-30. Works against the api until 2027-04-30. Served until at least 2028-10-30.

Fixed

  • A split preview mounted under the host’s own markup keeps its part’s width while the loading cover is up (#2786). The cover held the preview’s shape with aspect-ratio while the photo gave the stage a height, so the stage narrowed on every placement and the page under the preview jumped at the reveal. The cover now holds the shape only while the stage has no height of its own.
  • A text drawn in a text case draws every letter from its font subset (#2788). Subsets were cut from the stored text, so a text shown in capitals (or title case) drew the capitals missing from the subset as missing-glyph boxes. Each subset now holds the characters the text draws in its case: the template’s, a stored design’s, or the customer’s choice.
FileIntegrity
LICENSEsha384-MV00ik7bg3KDxAYG2LmT6pRlMm/KZfMfvhACxolh8kRi5C+lG8zYm9GpDUF8k0px
LICENSE-MITsha384-GfDAhGWC7TWUdEi3V+S/ssif42F4il3RjyDHMVf9SUI377mMrcZUwUu5N1m1IJrx
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-qMp/+mESHBlLWcrkTUMYby43w8A0bMwclnbAkYxRgefOICyVlA4q/ZfVxCEE0Kdr
pixonaut-client.jssha384-VOGf1qSFXmz32faSEfvLMfoLQc2UcTLqN0jnUK4gCOYETAVBa/o66vzrNmjdynb8
pixonaut-core.d.tssha384-RpvoR3gxDtgBhM2Fo6mqTQliI0n/9lh7WBgJmXz/jxsdPGM7U8QELr4sq8A7CZcc
pixonaut-core.jssha384-7r9F4XVKhGoANIq0NGyLDczSdFZNY2TfOYqWKMh2gRdPF3QYyaHYaVnoBQrwR4Ad
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-FnZ/Q1gLgGN+K7RVOiko8Gsge7z28E3J5cwjxGcba6TeJ7OELq6rujvbfCwP3a+V
pixonaut.d.tssha384-JJaM534Yg2GaDiEafrd+HTsBxZOE54PMvJD51JSefPGaUfqPOFB7PMupE2oSxDG7
pixonaut.esm.jssha384-9wIRhHbmKjIEd6wE/r/3HpxIFIgWKNp7zrxOJI7Xcu0PyF5Ae1hzztoXjv+xt4za
pixonaut.iife.jssha384-W9myqLPUBma8vXdMHkXc9KrL2df00H2E53Jmt1rbMJ3SUmqxq2wVFjo0whYotuJm
pixonaut_wasm.jssha384-e/dT3TlbLLl+DTtNPQzsjJmgBfrDkBMMp2hjLIW0oArdedlpx4yUBz++ytK0XnjB
pixonaut_wasm_bg.wasmsha384-SR0cl8gZLkSAJ2AkKdnTP+HXYdVpZewvHl/mtUsunseCF8VM6x7VkcuUq8A82T4h
schema.d.tssha384-pXzb6WbEI8gxjkLvSUvS6QueanEXHIyxlGIwWXQB2zIXgITXxTMqqzvOxfW1Ea+f

0.18.0

Released 2026-10-30. Works against the api until 2027-04-30. Served until at least 2028-10-30.

New

  • Pixel for shoppers (#2770): designer.pixel lets a shop’s customer ask Pixel to change their design (“write my name in gold”). available() says whether the template has Pixel for customers on, ask(prompt) applies what Pixel changed as one step and answers with its reply and the changed fields, and undo() puts them back, keeping any field the customer has changed since; busy() and canUndo() say what the controls may do. The designer draws a prompt where the template turns Pixel on, emits pixel (asking, done, failed, undone), and ask rejects with PixelUnavailableError where it is off. onError hears a failure with action: "pixel". The prompt’s words are pixel.* messages.
  • markTarget (#2752): a mount option naming an element of the host’s for “Powered by Pixonaut”, so the mark can sit below the preview card, outside its border. Without it the mark sits under the stage as before.

Changed

  • “Powered by Pixonaut” is drawn as Pixonaut’s mark (#2752, #2757): “Powered by”, the logo and the wordmark, linking to pixonaut.app. The logo is inlined, so a shop’s page makes no extra request for it.

Fixed

  • A repeat across linked sides is sized at the group’s widest print area when the designer offers a size in one colour alone and no variant is shown, as the saved design is (#2767).
FileIntegrity
LICENSEsha384-MV00ik7bg3KDxAYG2LmT6pRlMm/KZfMfvhACxolh8kRi5C+lG8zYm9GpDUF8k0px
LICENSE-MITsha384-GfDAhGWC7TWUdEi3V+S/ssif42F4il3RjyDHMVf9SUI377mMrcZUwUu5N1m1IJrx
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-qMp/+mESHBlLWcrkTUMYby43w8A0bMwclnbAkYxRgefOICyVlA4q/ZfVxCEE0Kdr
pixonaut-client.jssha384-jr5fs0eXyEXgCRQ1g9EqLUn7vuy0WxGp+kC6SVKJOv0wU62J6+IHNBjeBqFceHi/
pixonaut-core.d.tssha384-RpvoR3gxDtgBhM2Fo6mqTQliI0n/9lh7WBgJmXz/jxsdPGM7U8QELr4sq8A7CZcc
pixonaut-core.jssha384-/31eUelCP3kVSVciDx9fY0R86aliNvZM1YMi43m0VaQQjYzdOo8HUQ5l1ImJ1xCq
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-7NNKDxQKc2NoHP9gYh3CV4bwrrr3622Hon8CVGmGFNIppz9nr7OXLypyqvHah+7Y
pixonaut.d.tssha384-JJaM534Yg2GaDiEafrd+HTsBxZOE54PMvJD51JSefPGaUfqPOFB7PMupE2oSxDG7
pixonaut.esm.jssha384-lp/Trcd5spA+axEBlND26meKXv0X3YV+hgcCYqKKHPz7tLWs1UHxMjUZIBaFzCn6
pixonaut.iife.jssha384-KYfQS4eY615spVh8Qwuo9yUFOK+RCdWPJPKvcbS6GOYeG+cA+FTdnhZMo4Hx2DxA
pixonaut_wasm.jssha384-VZW9yOBv5xxTwyB4Z2ZU1sXxQG+kHpt7NWV5sB6ibuAqoStgztv4cW96k8eO6H9V
pixonaut_wasm_bg.wasmsha384-rsqfMvx34zKO24kJp0vRR7dSR7fXRfQ8E65nko9lhHbOUSBDK6uBW+Z8nghT1jck
schema.d.tssha384-Zg7dckHrfTzQgdERUxg60gTdK/YoP0KqFzkkchdHSbZkHbQdY9g6bf0rKBE+w/yp

0.17.0

Released 2026-10-29. Works against the api until 2027-04-30. Served until at least 2028-10-29.

New

  • Repeats (#2162, #2175, #2186, #2199): a design can repeat its template as a grid, brick, halfDrop or scatter pattern. Turn it on with the repeat mount option or designer.enableRepeat(), read it with getRepeat(), change it with setRepeat() and turn it off with disableRepeat(); shopperMayChange and shopperMayTurnOff say what the shopper’s controls may do. The designer emits repeat when it changes. See “Repeats and linked sides” in the docs.
  • Linked sides (#2160, #2175, #2186): with linkedPlacements, one design drives several placements, each printed at its own area and optionally mirrored (presets each, suggested and all, or your own groups). setSideLink() links, unlinks or mirrors one side, and the designer emits link. A commit over several placements returns each saved design in designs, and keeps those that saved when one fails (#2196).
  • Panel layouts (#2003, #2060, #2387): panelLayout mounts the designer on a cut-and-sewn layout’s canvas. The shopper drags, sizes and nudges a picture on its preview, snapping to placement centres, and the link commits through it.
  • Garment views rendered from a 3D model (#2401, #2431, #2660): a UV-mapped view draws each print through the garment’s pieces and dyes the garment in the chosen variant’s colour. The views strip redraws its thumbnails in that colour (#2696).
  • Cut-out (#1938): a customer’s uploaded photo can have its background removed in the form. onError hears a failure with action: "cut-out".
  • Pictures: an outline (#1937), a scatter over a repeat (#1968, #1993), a cover crop that keeps any of nine points (#1959), a crop frame drawn on the product photo where the picture prints (#2385), and a picture centred on a panel layout’s placement (#2379).
  • Print area shapes (#2313, #2339): a print area can have a shape with cut-outs, and fills, prints and previews honour it.
  • showPlacementFrame (#2483): draws the placement’s frame on the preview; off by default.
  • onVariantChange and DesignerProduct: the product methods (getVariants, setView, renderView and the rest) now live on DesignerProduct, which PixonautDesigner extends, with renderSidePrint() and setSidePrint() for one side’s print.
  • Client (Pixonaut.createClient): pixelConversation.get() reads an integration key’s own Pixel conversation (#2723), and its working says whether a turn still holds it (#2728); an order job’s bundle() downloads every file as one zip (#2725); an asset’s cutOutStatus(); and a blank view’s mockup.

Changed

  • Faster drawing: the renderer is built with SIMD (up to 2.4× faster prints, #2627), side prints are drawn on a small pool of workers (#2618), the shown view draws first (#2575), and each side’s print is drawn once per change (#2572).
  • A cover background covers the print’s bleed box (#2726) in every render, not only the trim box.

Fixed

  • Tiles of a repeated picture join without a line between them (#2380).
  • Mockup print edges are smooth along a product’s outline (#2334).
  • Each view keeps its picture across view switches (#2398), and coming back from the Design view keeps the garment view as drawn (#2621).
FileIntegrity
LICENSEsha384-MV00ik7bg3KDxAYG2LmT6pRlMm/KZfMfvhACxolh8kRi5C+lG8zYm9GpDUF8k0px
LICENSE-MITsha384-GfDAhGWC7TWUdEi3V+S/ssif42F4il3RjyDHMVf9SUI377mMrcZUwUu5N1m1IJrx
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-oGR1rSzllU7++N2LOAZO1s1lgGWPmUukVOyTf9LTkRe9PZ44zs30cB4g/eYXuYTR
pixonaut-client.jssha384-2lMWnECMJyzGdOnflcSCS8oDgB3n9MeeMc4cN+5BAcTOpy6yBPyj3d2IAYMkTZR7
pixonaut-core.d.tssha384-DjqO4tevF5DonAGWQTpcrRvE24uOyl4qtiZf2ZgK6ilybIibG7qn/87lqpq7sZzQ
pixonaut-core.jssha384-xTTfnkYNEx7PJj+cOCqv/tD/9Xtty6FXpVuS7rJioPi95EnyIT/m3Df7oV9WcKAM
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-bYBcrAVtNDNOiJETtWHhlFdFVYEFXOln4hfrSSlSSf1XyvC7FFbciMUEjRFhrOcm
pixonaut.d.tssha384-vpbqVRAC6Fj7RxvoFr30jCygF4LZ8nd3BeBp7q6fhUCnznDQ4usBlyfY0olES9++
pixonaut.esm.jssha384-92tEVstCeIV2lOYdhjWLa557x6KKpJqLccgJoPiwNQSSyQbPZ2BXVxwKdtjK9ivi
pixonaut.iife.jssha384-VtkXMFgiLmvQFmx5D4n+i8r9vXPv9lJ0HUjZuXMjwOgb6niCCur/SmYTu4ntB12+
pixonaut_wasm.jssha384-hDOBchgSv3w0sqn9M3AOb/uaoZ+HrYoUyM1+Obfu4nyHDHO2gWomiAD9ncWUMRYL
pixonaut_wasm_bg.wasmsha384-W+HtSai1J6xdei28a/77B4gKDEjtN7uob+bQL6oAX927oNfW1qt9ik0t5Xr+sRfT
schema.d.tssha384-8xnDccFu30vESwVE//MxqoFTK6xv9ee1dotJXsIdcUA+0WzTIbHSIIE9R1zs4/ue

0.16.0

Released 2026-10-29. Works against the api until 2027-04-29. Served until at least 2028-10-29.

Changed

  • “Powered by Pixonaut” sits under the preview (#2682): the mark is laid out after the stage in every layout (the embedded row’s canvas column, the fill column, the split preview part) instead of over the picture’s corner, so a customer cannot take it for part of the print. A preview part the host holds at a height fits the stage into what is left under the mark. Template previews and proof images the api draws no longer carry the mark at all.
  • The form replaces the host’s form markup once it is built (#2702): a split mount over host markup swaps the host’s form markup as soon as the form is built from the template, ahead of the first preview; the preview and view strip are still replaced on the first draw. A mount that fails before then puts the host’s form markup back.
  • The template read names its whole page (#2701): the designer’s template read alone sends the page’s origin and path in Referer (no-referrer-when-downgrade), so the api can tell which of a shop’s pages shows the designer; it keeps the path and drops the query. Every other request is unchanged.

Fixed

  • The fill panel keeps its bottom padding (#2702): a form laid out as one page in fill mode no longer shrinks to the panel, so its last field no longer runs over the panel’s foot.
FileIntegrity
LICENSEsha384-MV00ik7bg3KDxAYG2LmT6pRlMm/KZfMfvhACxolh8kRi5C+lG8zYm9GpDUF8k0px
LICENSE-MITsha384-GfDAhGWC7TWUdEi3V+S/ssif42F4il3RjyDHMVf9SUI377mMrcZUwUu5N1m1IJrx
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-cxu+lIWPc1qvOu6bnlF16cOuWQqX5l3tqGcBrcxpBkcX0Tyvez+WEKdU6L41UyJO
pixonaut-client.jssha384-Q6hVSdBFvirQvlgMVw0oQKNnYZkSkigsbyOjTjY/MuhW7K3CVNc+zJkMJvROeCjZ
pixonaut-core.d.tssha384-KG1gCTiL00vDs4m1q/P1rQsGvqa2Kyb01kGhOAaiEASEesEJmCwg0MwG6gN2Fdk7
pixonaut-core.jssha384-xLdgIxyNsuD/r/X0GoW+tftUMaDIW2KvTt3oULNAdUXBgwTWqiHU+pSiUDiOxq7d
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-N4a8i2oThIfnRAsc6sl/sS4qMydfiiShlfHRqbNzDqtXG9j6gSmtUIvWcfEbzl/H
pixonaut.d.tssha384-vmkTcivmrSreziRo/pOQ0gsANHQT8Bghe66uKJ+Qo+BXOzo6epk4W0K8K2bORf6P
pixonaut.esm.jssha384-/ost5+9YQVhol1mf8LATdqeWOLR+bOcu5WKZi5ESIP8buUweK5eHcCwBXiyVQmqc
pixonaut.iife.jssha384-JHf11DDZojbQZWjvtnecKg14MmkW+aPltUzxusqmQtYZYTZcVOqDa8vewyN1VDRt
pixonaut_wasm.jssha384-OJzdsB8koEA/grGgT6HyvHECPCWoHDQei7oFPOHdhfUj6TpPb7RdQndIFoMOFknd
pixonaut_wasm_bg.wasmsha384-lLhUbxyXLAOXGiiocq5P4cvsBRzntX7SfkZbTxxW9ZpkDwnhumEcs0Nwt1NQKQeW
schema.d.tssha384-pGbZNi/xZ7Fo4ydJcUhRJL1d7gfIIdcCU8idE2z4QQNzwm0TFn0jvZnIcG+DOYEJ

0.15.0

Released 2026-10-28. Works against the api until 2027-04-29. Served until at least 2028-10-28.

New

  • A release names itself to the api (#2652): every request the SDK sends carries its release in the x-pixonaut-sdk-version header, and the api refuses it a template or stored design its renderer cannot draw. mount then rejects with a PixonautApiError whose code is "sdk_outdated" and whose minimumSdkVersion names the first release that draws the template, or is null when none does yet.
  • Pixonaut.UnreadableDocumentError (#2652): a document the renderer cannot read that reaches it anyway, a template passed to mount or a stored design, rejects mount with this error (code "document_unreadable", the renderer’s own failure as its cause) rather than failing inside the first preview. The designer is torn down and onError hears it with action: "mount".
FileIntegrity
LICENSEsha384-MV00ik7bg3KDxAYG2LmT6pRlMm/KZfMfvhACxolh8kRi5C+lG8zYm9GpDUF8k0px
LICENSE-MITsha384-GfDAhGWC7TWUdEi3V+S/ssif42F4il3RjyDHMVf9SUI377mMrcZUwUu5N1m1IJrx
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-sIXyfp5QMnTfOvDo24kVmn0xzeRzRmmDSwTyp32ixFkpWruS8OMFZIRhCmET4BsM
pixonaut-client.jssha384-NJ+KjEi6qHVwcegHkyKD7UmSJg/k6oiyBjcC+KU8lmfzJIdYaoMEY9AhrFvFDOr8
pixonaut-core.d.tssha384-KG1gCTiL00vDs4m1q/P1rQsGvqa2Kyb01kGhOAaiEASEesEJmCwg0MwG6gN2Fdk7
pixonaut-core.jssha384-eVlo//neQKNdkFGVDMQnv1ZXIuqVzI70unbF9M94zotcBFa9CaXfUEBk0xBFyrPP
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-Ln4/+wAkfIIZ+rlC7qfQj2R5/J16v6o9o4JEVyOuJsB0wSkiWsoEsgRVAcb1zDKd
pixonaut.d.tssha384-ejgzWsYc/E9SkZ7UF/f9yvpfgqrsJDTkqOCj52hX8RHWuEIIgAJuuIemOAn4VaVR
pixonaut.esm.jssha384-3dOlK6M91vmeKgXkC3tvnDceuQJMi4VR8D1JUFzcCJ4poSAjYUPPXHgbOfQoMIli
pixonaut.iife.jssha384-ytFxsmBNDf9BOfY6qHrochxr6Kdxw2LqUznG+K4ViutwU+CtYL7IFELnGaTJF73I
pixonaut_wasm.jssha384-fIezvF2tW405XuU2IlEE5h6tDvND0+Wp7v8LTIgG9xNM3Um9v16gitHeycCLBiye
pixonaut_wasm_bg.wasmsha384-ws3PYQSDRsDgbzIhHHSPdfRi+F/N4+YVuBVhWgc88cbcc2pGTKoa9sznVevUtBJD
schema.d.tssha384-qGT401ElOm1yy3D1W3HasWrp3GFxcaE6iYdChwjZHF9oILTXA5qeF+4yrJVw/uam

0.14.0

Released 2026-10-28. Works against the api until 2027-04-28. Served until at least 2028-10-28.

New

  • A required change is asked for at its field (#2610, #2638): a template can require the customer to change a default, such as a sign’s placeholder name or photo. A design that still holds one, or leaves a required picture out, is now stopped by approve() and commit() before anything is sent: they reject with a PixonautApiError (status 422, code "constraint_violation", its violations, and the side’s placementId when the item has several), the built-in form marks each field with form.violation.unchanged or form.violation.required and shows the step holding the first, and onValidation hears the same list. A refusal only Pixonaut can judge takes the same path. Both sentences are translated into every language the designer ships, and can be overridden through messages.
  • Template showcases on catalogue image links (#2606): a catalogue image link may draw one of a template’s showcases, and a template’s read answers each showcase with its own previewUrl.

Fixed

  • The drag hint draws a small pointer beside its words (#2638), not an icon filling the hint with its words pushed out of it.
  • What the designer hides stays hidden under a shop’s theme (#2638): a theme rule setting display on buttons, !important included, no longer shows the hidden “improve” button under an upload.
  • The loading marks keep their colour under a strict Content-Security-Policy (#2643): they set their stroke through the style property, which a style-src without 'unsafe-inline' allows.
FileIntegrity
LICENSEsha384-MV00ik7bg3KDxAYG2LmT6pRlMm/KZfMfvhACxolh8kRi5C+lG8zYm9GpDUF8k0px
LICENSE-MITsha384-GfDAhGWC7TWUdEi3V+S/ssif42F4il3RjyDHMVf9SUI377mMrcZUwUu5N1m1IJrx
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-YM8AtEo0Y0PhpaI1wsqUQC5lYJoswgjND7ZPAWZ+amtu5gkYuDYE9TwiCgt6vli/
pixonaut-client.jssha384-ROa40ApAstM1nh9zI3rFs2tZrUuek2YL5rnWX0G7I1zEfMT7nAjZPTrgEhmN+qeC
pixonaut-core.d.tssha384-y4YOWlqUYLQSbdJuaOI5Jib6V8HnMlGA1Zc8hKO0WYrLmQtVHCDRNWCQlbC3BNCt
pixonaut-core.jssha384-RmZoiD4K66aFxj0hmAnxcIV57YEdMaMTnrTfxqo0Gupx3cw4ibHNCZH89iAwK7d5
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-yrKypwU9xmpNCeAYe4BZl6m0gwX2SMKsUJsZJWAN3UDUhyiKAWEuHvHjVxsHIz2J
pixonaut.d.tssha384-qIBz0y99V8xLRkIoYwDdIt/hzmkYKUkgMF5BDD34oIlomw7PlGxTARgpYWvWSqlY
pixonaut.esm.jssha384-rNBqAWELhhZokxiypvctgpbTC65BRC+3euJ0cIdoZw1F3vFrYJ8RYXnvID7zjkG8
pixonaut.iife.jssha384-8rQBPRChKTIbjkAJ7e1sW31hM495RJMi7Sba1MF54YWvb1a0baNMFojDcQ8hJ1Si
pixonaut_wasm.jssha384-nrmiNGwzDPkrvO9OW0lZ3bZP7w59tAqTmsRdvIRMW7ZPkxFjqpglEG+VkvxhIPlQ
pixonaut_wasm_bg.wasmsha384-1kRBczUXyNuLTQoeuPJe0HVaOCOcWhvMNrcrqHfXnvL/n2jfJb+mQVVT+RmbuOMO
schema.d.tssha384-dWE8jHEeKNcm0F6Mzb156Cp+kg5lSPkqd9KjbLF8R+HELXmqFRRfdcyUQqqii1Su

0.13.0

Released 2026-10-27. Works against the api until 2027-04-28. Served until at least 2028-10-27.

New

  • Template showcases (#2598): client.templates.get(id) answers showcases, the template’s sets of example values by id and name. Pass one’s id as showcase to a template’s preview.png or a placement’s mockup.png, and the image is drawn with that set’s values in place of the template’s defaults, cached as the defaults are. An id the template holds no showcase under is 404 showcase_not_found.
  • An upscale offer’s own target density (#2589): a picture’s upscale constraint takes toDpi beside belowDpi. An upload below belowDpi is offered an upscale to toDpi (at most belowDpi), priced for that size; one already at its target is not offered one. The upscale mount option still narrows what the template offers, and an upscale reaches the picture’s target and no further.

Changed

  • A font file that fails to arrive is fetched again (#2590), after 1 s and 4 s, before its load fails. A load that still fails reports every face that failed in its font_not_loaded validation, not only the first.
FileIntegrity
LICENSEsha384-MV00ik7bg3KDxAYG2LmT6pRlMm/KZfMfvhACxolh8kRi5C+lG8zYm9GpDUF8k0px
LICENSE-MITsha384-GfDAhGWC7TWUdEi3V+S/ssif42F4il3RjyDHMVf9SUI377mMrcZUwUu5N1m1IJrx
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-YM8AtEo0Y0PhpaI1wsqUQC5lYJoswgjND7ZPAWZ+amtu5gkYuDYE9TwiCgt6vli/
pixonaut-client.jssha384-8pLTQ77shbUyom8v+swpocrUSR+saheV6IBvHWB9RduXcgSGru73UNAm2JrT8iC5
pixonaut-core.d.tssha384-f1thHawa1eM/UF+5qNMFFNK9N2jLxH0HNED9KHTw8Nxfr8I2DwAnsVPCxDHildWX
pixonaut-core.jssha384-Pv/yS2xwwRTQ8DjQq6o5Jpnu8oMp7u8+VDkN5gZEUYhXa9X8LpUFSK0xSHYC/q+U
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-kP9oWgOEY3Mbm1RiNR2sU9iIoXMS6In0UZeIy5u1Qe0BAZegkLIAOfg3tvczZBsT
pixonaut.d.tssha384-3oSJzik+gKyrbJBYNz/mh5aHVdf5KLvdMPCitbuCskWB7HkguUQmt9vN66BlI707
pixonaut.esm.jssha384-FGIiPIHdVITH2IGVVMkRHiSHXMwHe8z0oTu1d3Tdz21ZE60klabdokg3lnCzkcp+
pixonaut.iife.jssha384-EhoyK2jM+PxRrwqo53Wx8ZLJ5d8hYpn8Qb+/+YkGh0zI8UcPFtz98XRL3RUH7+aD
pixonaut_wasm.jssha384-UJD2+waEat8R6u4S4OE8UHnARpDq6e1Pzx75YPySrbjuSohEfhPYv8kNEHqyot7a
pixonaut_wasm_bg.wasmsha384-fQ9gGV7VDJTjmDmMVGNT22Cr2HQqtjlR3UswCg8gISNo6I26PyBovNhyk1mlXBdp
schema.d.tssha384-IrGJbMiLsZ0PsAl5i7n7wxsYqbH46duJ4FgTzh9hwwBwtAhOcToNuZDxh1IvsaK1

0.12.0

Released 2026-10-27. Works against the api until 2027-04-27. Served until at least 2028-10-27.

New

  • The designer draws every new layer setting. A template made in the studio since 0.11 renders in the embedded designer as it does in the studio and in print:
    • layers flipped horizontally or vertically (#2526);
    • text along an arc, a circle, a shape’s outline or an open path drawn for it (#2535, #2542);
    • a text’s letter spacing, line height and case (#2546);
    • gradient fills on text and shapes (#2551);
    • outlines, drop shadows and rounded corners on images and shapes, and an image’s outline and shadow that follow its picture’s shape (#2555, #2560);
    • an image’s photo adjustments: tone (black and white, sepia, duotone), brightness, contrast and saturation (#2562);
    • blend modes, which mix a layer with what is under it (#2565).
  • The customer form offers what the template offers (#2526, #2546, #2552, #2557, #2564): a flip, a text’s letter spacing, line height and case, a gradient fill’s colours, an outline’s, a shadow’s and corners’ settings, and an image’s tone, brightness, contrast and saturation each get a field when the template offers them to customers. Their labels are translated into every language the designer ships.
  • TransformValues and TransformPatch (#2526): setTransform takes flipX and flipY, and a stored layer’s transform carries them.
  • OptionMessages (#2546): the messages for a choice field’s options (alignment, fit, text case, tone), which SdkMessages extends.
  • client.assets.roundShapes.get(id) (#2563): the circles and rings a picture holds, such as a photo frame or a badge, for a text to curve round.

Changed

  • The designer opens sooner. It fetches its renderer while its script runs and compiles it as it streams (#2468), from a smaller wasm (#2462), and loads the subsets of its fonts a template’s text needs first, the full fonts once the page is idle (#2452).
FileIntegrity
LICENSEsha384-MV00ik7bg3KDxAYG2LmT6pRlMm/KZfMfvhACxolh8kRi5C+lG8zYm9GpDUF8k0px
LICENSE-MITsha384-GfDAhGWC7TWUdEi3V+S/ssif42F4il3RjyDHMVf9SUI377mMrcZUwUu5N1m1IJrx
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-YM8AtEo0Y0PhpaI1wsqUQC5lYJoswgjND7ZPAWZ+amtu5gkYuDYE9TwiCgt6vli/
pixonaut-client.jssha384-0YeFRlK+W0e/dlnYv9+S3WQbz9BBd/N25ajL7v0mo1LK5GiaFj4k7BMWwAaAwn0Z
pixonaut-core.d.tssha384-Y2NNfsRDdhCFFJktqGr1qcbv+51CL6nbdkvisVFojlK9GEdSHtEFtN7Wx8XULTan
pixonaut-core.jssha384-X3WeGLuLYTnWu+nOkFXg8NRDEm7+1lEzm8hqdE9QxvcLWrO6BVuWH1L4I1EGH4bc
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-DrpkrGgkypyCB4lrr27RCEZpq5YkYIOGl2IaY7wdC6+SIqfitvbRQjo8cM6iPL4G
pixonaut.d.tssha384-ChOzDMO5nzAL7mdDDSmC0jIJfew22EADahFqDXTaqGQcHxaAwqVcyoP6WAHy6lVU
pixonaut.esm.jssha384-CURmBTSst5vF4oh93WCj4xnm8ELf99dTRNoImLZnIBb1Wh5boNDZyzLK2upPBneu
pixonaut.iife.jssha384-Bn+wO2DnFl1aA/6gFbQLqq/I9mgJPhLYO34rzjKvxkEhmDk8bwH/+Uq/3S0jKKRG
pixonaut_wasm.jssha384-fAl92/uTixF/5Kio30k+gEl1P8d+qFVgD3ja+rVmWZ1l/x1aO7agULoOFoH+xXto
pixonaut_wasm_bg.wasmsha384-kEj376aNFWHEXR8fMkqyppMKzQ4v5uTAFUCFLS2eaxECg/YjjhDxSOtLAKE6dzlA
schema.d.tssha384-mR6+EmoWlWVJcGChqsuA6uHeyyM6nz5jPsGZzpcwTUzDpoWCZRUwZpWAGfgF0sY0

0.11.0

Released 2026-10-25. Works against the api until 2027-04-27. Served until at least 2028-10-25.

New

  • client.shareLinks.designer.get(id) (#2351): what a designer link was handed out with, for an edit form to start from. A designer link’s settings can now be changed with PATCH /v1/share-links/{id}, and it keeps its id, token and address.

Changed

  • The default form holds up under shop theme CSS (#2420). A theme’s global rules for inputs, buttons, labels, selects and icons no longer reach the parts the designer draws: one adopted stylesheet reverts what their inline styles leave unset to the browser’s default, with a selector that outweighs a theme’s. Elements a host lends into the form keep the host’s styles. It is built from script, so a CSP without 'unsafe-inline' still allows it.
  • The SDK’s licence names its licensor (#2325): JPE IT AB, trading as Pixonaut.
FileIntegrity
LICENSEsha384-MV00ik7bg3KDxAYG2LmT6pRlMm/KZfMfvhACxolh8kRi5C+lG8zYm9GpDUF8k0px
LICENSE-MITsha384-GfDAhGWC7TWUdEi3V+S/ssif42F4il3RjyDHMVf9SUI377mMrcZUwUu5N1m1IJrx
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-+cRX+jMP8V0EKcINS7CKbFHCeVlZxuLdRnOXs3VinYV5wJAy2HOP4y7WmdLzFHfy
pixonaut-client.jssha384-c0Bre4AWaOy/bGgGtH57HdkdL56BeyCTnFNRZRs987BDA2/ZyanMILfQdRT6bmLB
pixonaut-core.d.tssha384-vgT+P9efXuA9+NXzFS96R5KiA41C6Pgw3ARmhtJVWcg6jVRBZNfunJ7MW9GMnxyE
pixonaut-core.jssha384-CwvHNEvdSLI2pQoSltcuM2lQNrOiRR5ltJqolVZZn2a/4ocGyiBdwaUQjCRjQ76G
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-NETJ7kTSBYBnCUYviicSvwCbbKIyw4TY60nORf6TgTAspNiV+HojVKau1eulJfRJ
pixonaut.d.tssha384-BwxwgyuGAXGcQrJV9dDHinQr8jG2z+JwkcV+CiOgBSVKPif48nhzjycHeqTCyG7E
pixonaut.esm.jssha384-wz+Q7tUWssz68ALmbJn5xS+1Uv2c9KlVLbhKXXDatm/SWcbfWb3R/wUU/+e00Spe
pixonaut.iife.jssha384-8gKlcLuuurNd2+SZZVpsv6JegmzZ5k/+KYIlS4ES9tTNntAUN2ppa0cA4OgHg1gK
pixonaut_wasm.jssha384-NFMDPFpd+V4pYDO9Iw0xZoWcg0wlRAjhpEhz1dGJXZrKtChHvVV5kOXnHGhJgucu
pixonaut_wasm_bg.wasmsha384-TV2MXeO4EKa3ZgQPHp7rYvgGJ0A+4NKrqYEV2OjFSjCJ3444vWXjCrmQiGNHmB04
schema.d.tssha384-f6J/h62miFt72cUE2sp8JssBriLNb5OQHrVwXyN9fUWfRQgDCia1i2WuhOVNLgH8

0.10.1

Released 2026-10-24. Works against the api until 2027-04-25. Served until at least 2028-10-24.

Changed

  • getFieldTexts() names a customer’s own colour by the hex the form shows (#2276). A colour field whose value is not a palette entry, or that has no palette, read as “Custom” in every language. It now reads as the field’s heading: #RRGGBB, upper-case, the colour picked by eye while the stored value is an estimate made from it, else the stored colour (CMYK, spot or RGB) as the mount’s output profile previews it. A palette entry keeps its name in the page’s language, and an empty field stays empty.
FileIntegrity
LICENSEsha384-T3v0fww2nJcyu9wolQbAUVtdXZuq3RLNPTh78MMnHizCNQ7XifzzFCo2o6/XYcLs
LICENSE-MITsha384-tM5LbP5GcuO09LJ4934A9c0ra82HbZqcscAQKyyWJIIw65CiW/J6Uo5N3RS3R4CL
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-9eDfwIeefxUcIjYWfIq+h30wAHJqJHWFmjGeMVuYnX286ihRpjBTVt4/TAHuSXiw
pixonaut-client.jssha384-qPuORqcIz08VW0UN0TCXBno2Mm5lL1um50zF//cnHNDeYQE2Lsssms3eaa6VHArl
pixonaut-core.d.tssha384-vgT+P9efXuA9+NXzFS96R5KiA41C6Pgw3ARmhtJVWcg6jVRBZNfunJ7MW9GMnxyE
pixonaut-core.jssha384-0mx5kmdV6oNscQ6EDOc/0zq1r+xaPhhTZ7IZNe6YWnx8jsYWS85C8ddQ2HrbYuW+
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-lY4jqPrg92SLSF4SyCzWU5l0oSjC28FaExuE+bGIVoIax/XBTYBzn2Dy1N3dLGwt
pixonaut.d.tssha384-v8UiCKBgQIyPnZNNOO1NlKO0Xak/IzDYy/R6zj6TKwRgpkrVJCWaZ1JdtD0N/exk
pixonaut.esm.jssha384-o/7710w+4F0w0/SmMpcvwijmPUWesL1m2LLrUINKZCtyobJM7QbBL7IY6c9DOStd
pixonaut.iife.jssha384-j2cKCzyaAcYSEBk1tozEbYAr08xGzHjekc8ftdZBx4hvM+ix/AguCMdf72d9XfJc
pixonaut_wasm.jssha384-Je6ygqQ1tXU/mN1U7xAMc6nqLt+ISl/XDXAHNuLDEJ+jhEGxk5qoHTve+lvP5JHK
pixonaut_wasm_bg.wasmsha384-yT7K8w71KS1QFb7Hf/2M4rX9KZ/YC+3V6AWreKxIj9o0o1SVcV1lNbNNX+EI+1tm
schema.d.tssha384-e1bc9ktpQnX1hUsMfGU7IpGw0ZhpiJAF3Zcc2bbbZBrKd/Wo9WfxZfj03KlBcfck

0.10.0

Released 2026-10-24. Works against the api until 2027-04-24. Served until at least 2028-10-24.

New

  • PrintSizeOption and MockupOption take localizedLabels (#2268): a label per language, beside the label as written. The designer shows the one for its language, else the label as written.

Changed

  • The blank’s option names, values and view labels read in the designer’s language (#2236). The designer asks for the blank’s variants and mockups with its language, so the variant picker and the view strip show the names the merchant gave in it, else the original. client.blanks.variants.list and client.blanks.mockups.list take a { lang } query.
  • Sides, print sizes, photos and palette colours read in the page’s language (#2268). A designer link’s side labels, print-size names and photo labels, and a palette’s colour names, are shown in the mount’s language, else as written. A colour field’s line in fieldTexts(), what a cart lists, names the colour in that language; the field’s value is still the colour’s own name.
  • A picture sized past its move bounds follows its box when dragged (#2239). A wide picture scaled past the room its bounds leave (past about 135 %) slides while it covers them and stops where an edge would come inside, and the preview draws it at every position the box takes.
FileIntegrity
LICENSEsha384-T3v0fww2nJcyu9wolQbAUVtdXZuq3RLNPTh78MMnHizCNQ7XifzzFCo2o6/XYcLs
LICENSE-MITsha384-tM5LbP5GcuO09LJ4934A9c0ra82HbZqcscAQKyyWJIIw65CiW/J6Uo5N3RS3R4CL
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-9eDfwIeefxUcIjYWfIq+h30wAHJqJHWFmjGeMVuYnX286ihRpjBTVt4/TAHuSXiw
pixonaut-client.jssha384-+cg6FwxFw/MWc3a/X45TZMKdbSnxKB0CKZ/oXZmOTUhIR4emRyZf8MNZjpk74xs0
pixonaut-core.d.tssha384-zvI/Rj9dYlto4mIcVJbUhIV/B3C9i7eeGpiizZRfLzwu5ZTp48fqLltx1fyKbvzs
pixonaut-core.jssha384-iuJuTjORdmo5pTDXRyhXGX5kQ1utB+Iu7UN056PMw43X4JK1Wtc/zSJKR8wxNImY
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-0TbjmaetvV+R763YsW1Fyjs/z7Bp4tqptBxHqGSR7eEE/nYccB2OoVa7hUaDrc2R
pixonaut.d.tssha384-AcAoJIL8YJ/Z7TpTJalZYym6MajXXGTHbnK55XExweVSfYAL23Pgx0reAGSYjw/X
pixonaut.esm.jssha384-6+Pr5TeKbQlzZO3rfQ1vPNU/vYnyQESsLf5VcVL13/AvBgGWSVOUtOhbufCejhT/
pixonaut.iife.jssha384-hzFIPSxHDDB93H601+4XkeBRXpyYnGYrBFKDvUkSNmLbBu3iM0aYCF2iyGUc2ige
pixonaut_wasm.jssha384-d7O5NaQrh/gan1vdSXmr9D4RxvL8qMGXCwEg19bedGXQWjSyAXN8ivN7ZlYKKuaK
pixonaut_wasm_bg.wasmsha384-r1V+gzUJ033PvKOIHnCLD8zpF6DS8nYzqatLF/VONd/OTcvNOrCjne3ZIyGc5s31
schema.d.tssha384-e1bc9ktpQnX1hUsMfGU7IpGw0ZhpiJAF3Zcc2bbbZBrKd/Wo9WfxZfj03KlBcfck

0.9.0

Released 2026-10-23. Works against the api until 2027-04-24. Served until at least 2028-10-23.

New

  • formGroups arranges the template’s groups for a page (#2232). The groups are shown in the host’s order, with the fields it places in each, its titles and its words for a field’s label, help, placeholder and offered values, in every language; the template is unchanged. The host’s own elements ({ host, element }) are moved into a group as optionsStep’s content is, and put back on destroy(). Groups and fields it does not name follow in template order, and an id the template does not have is passed over with a console warning. Works in both layouts.
  • setHostItemComplete(id, complete) (#2232) marks a host item done: in the steps layout Next waits on a step until each of its host items is.
FileIntegrity
LICENSEsha384-T3v0fww2nJcyu9wolQbAUVtdXZuq3RLNPTh78MMnHizCNQ7XifzzFCo2o6/XYcLs
LICENSE-MITsha384-tM5LbP5GcuO09LJ4934A9c0ra82HbZqcscAQKyyWJIIw65CiW/J6Uo5N3RS3R4CL
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-gLnWNmUVhcl9tKlRcxf0vjHzBKK3mWzoDK54SKlxShBYCLxf8OSs4Yx4aEgqXOFj
pixonaut-client.jssha384-U03+vnX4PzvXNz6NvKg/X7A1Tu3tfufLiPdC9OALvR2LHMrDVQH01X9HEhUZdING
pixonaut-core.d.tssha384-k4orGyjn+lv+3v26wxwzQvxiUDCZE/cm8GidkIUfpxPP6AgB03mbU2Bgovp7hC0e
pixonaut-core.jssha384-Ioa9BCyFYpY9tcG5pf8PWzAs3JxzdSdJObjXhTi4URWGfSyfT0cQYZuqAuJmSMYc
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-qwm85sE/gDEmX6ur7GgLo1jauUZ7daq9fSlJ694VaVEa7CpxMMAW4qBH8uVBdULN
pixonaut.d.tssha384-e+p6KyJPwD85EVJkQFPJvg2jiaKm1WTgqXxhRDsvKnBgx+cxWVJ1R1RSawBsc/4j
pixonaut.esm.jssha384-3zCBnLpZQacVIZ2rH0HOFK9Gw0r+AaLV7GrJTHjH2eVMljae4K+mExxi+GSQkmGV
pixonaut.iife.jssha384-vyFXxa0H+qRUMMSE46wOztrK7f6k96+lASL7Qd5T5GOJmYKXZYbwoPLAV9qGjN22
pixonaut_wasm.jssha384-26ZaFFE9pCydulsyU6UFfcaVzRlYbyIOIJRzH4BieioO+5R/zD/AHS+86GuYfInm
pixonaut_wasm_bg.wasmsha384-1wrvPTZUpXQuA8ONvhdwW9DqYgyKEHEvOLJoaWR0HMJavw9BaagAfuaXSFdWbZ5l
schema.d.tssha384-T5vSl1ggtxHyvAUNVD1n/QOsmVRdCRQXhUMsMISMbvcjt6pPVDmFu9bd46QqJyWs

0.8.0

Released 2026-10-23. Works against the api until 2027-04-23. Served until at least 2028-10-23.

New

  • optionsStep puts the product’s options into the steps (#2223). In the steps layout the designer’s first step holds the blank’s variant and print-size pickers, then the host’s own content element, under title (or “Options”). getStep() names it "$options". On a page the same block opens the form, unnumbered.
  • lastStepContent shows the host’s cart row on the last step (#2223), under Back, and at the end of the form on a page. Both options move the host’s elements into the designer and put them back on destroy(); a control moved out of its <form> is still submitted with it.
  • getStep() and the step event carry isLast (#2223).

Changed

  • A split preview fits a fixed-height element (#2222). When the host holds the preview’s element at a height, the preview is scaled to fit inside it, centred, and refitted on resize and on a change of side, view, variant or photo, so the page no longer jumps. Otherwise it takes the element’s full width as before.
  • The views gallery keeps a gap above it (#2222), var(--pixonaut-views-gap, 12px), so the chosen ring never meets the preview.
  • A swatch’s face has its own edge (#2222), so a white swatch shows on a white form.
FileIntegrity
LICENSEsha384-T3v0fww2nJcyu9wolQbAUVtdXZuq3RLNPTh78MMnHizCNQ7XifzzFCo2o6/XYcLs
LICENSE-MITsha384-tM5LbP5GcuO09LJ4934A9c0ra82HbZqcscAQKyyWJIIw65CiW/J6Uo5N3RS3R4CL
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-gLnWNmUVhcl9tKlRcxf0vjHzBKK3mWzoDK54SKlxShBYCLxf8OSs4Yx4aEgqXOFj
pixonaut-client.jssha384-1PqT/MxiC8zLqpQ+VdSDURyu8tKV/uwef7doTNu2NooJ3aGlDvRUAnYqPagPrbo9
pixonaut-core.d.tssha384-J0O1bss9sdFi/lYNm0jPF6M/eo+sh+O5NqGAesOiTRjZRdaHvLIARrR8k1t833lk
pixonaut-core.jssha384-StO0+604q3tUt+W/g3yGOxOd6bZjUx649G/Hrz+er2+q17PFj+uzVc8ejEImgncp
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-xquLAsfQQFwse38VErTmXovXFB4FpdvYOZ94HVcfqvpaVvGY4eCwhipU6SQBftCj
pixonaut.d.tssha384-IaXrd3EAWwaVLdf95MscMR6YXShA213UWcbZUYFnQYsnhFstEN5Ffnjs8EbkqCB6
pixonaut.esm.jssha384-drP+ly1lQBcIpIlhwBPcACEc+jGRDsKctpvaUTNIOYt8b4x9bjYyYPskV32Mth8r
pixonaut.iife.jssha384-Uy9s5f5i8tBq5RA/mJ2W+8djAUGr7B48cXCoRoQD6QnLL7ur65PMbQ3Fc4azjvHs
pixonaut_wasm.jssha384-vs5VUyzLQz1iUIjCtDlcSZMEcIWKlcjHEn3xeCFqU3YIPSZi286wZnNEGgzO4lXx
pixonaut_wasm_bg.wasmsha384-rH8KFTvNwj3AqRypftIfoDk80x4SN3eA3cSgU9/U5cNOJfl0XyU0nb/965LKYRGG
schema.d.tssha384-T5vSl1ggtxHyvAUNVD1n/QOsmVRdCRQXhUMsMISMbvcjt6pPVDmFu9bd46QqJyWs

0.7.1

Released 2026-10-22. Works against the api until 2027-04-23. Served until at least 2028-10-22.

Changed

  • Dynamic values are written in the mount’s language (#2092). The SDK sends the designer’s language as lang beside tz on the template read, validation, proof and commit, so a value such as a month’s name reads in the words the designer shows.
  • The views gallery rings the chosen view inside its photo (#2093), so every thumbnail in a viewsTarget covers the same box and the chosen one no longer looks larger.
FileIntegrity
LICENSEsha384-T3v0fww2nJcyu9wolQbAUVtdXZuq3RLNPTh78MMnHizCNQ7XifzzFCo2o6/XYcLs
LICENSE-MITsha384-tM5LbP5GcuO09LJ4934A9c0ra82HbZqcscAQKyyWJIIw65CiW/J6Uo5N3RS3R4CL
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-u6Ybhj+8Qfebgv0cSVZ7X5atuX1tftxHU8Ql4gVnbY87HgcoToHLJ2qTa5wvcwlP
pixonaut-client.jssha384-998qep12eNIgpYHb7MNi0oQ8UUXWhg9KK4IL0ZO+gd0k7X7c4zqeyB9wn3EVV2bc
pixonaut-core.d.tssha384-T/pJeuzY0gfVJYqkK7tsBvfgCrC1EBxnb/p/49f4E3Uxa1pVp36dlapHqv1w55xk
pixonaut-core.jssha384-gc8j0G5jxRcsp/knt3t8BcEDeXnuh7bLWKB8ESqfP2CpYWq5Ejdr7FPOJJC0GRoZ
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-3gPk9RdNOWB7nmhhgKrW8VmW8tXS8HLa28zecP4dWaEz0q/ybRtoNJf/+TH7mRdC
pixonaut.d.tssha384-Zb05jGYoNvOa/TFLyCvuqxEjn6wV9OB52NSooPXl50xWXaIAcCX20gdstUHZl0RT
pixonaut.esm.jssha384-SxoQyPvu9geEZ3WVJTqEq614jOGPUeK7KIMOWx1hmKP24EwgrsurwXEQ1L2qD8qy
pixonaut.iife.jssha384-vFQ4Y5P6YROSsoO3x+TU/4X9js+6za142ABYcqe6TTONatYX+ADtEpLaytm8lxNA
pixonaut_wasm.jssha384-SBFkrG3UGHPHg90MdSR4RNcBhfTnvzeKLC94g68vfjKwBKQwB5Cx+bjQ3hBLQRg/
pixonaut_wasm_bg.wasmsha384-QNV9cNQiP8HsqiaU1ivXWLepF5hgdB0XHgfupm4qWEaSmB+o78pkI/DFoR4PXAEx
schema.d.tssha384-5MxndJLvMTG6O6oQexgFa0egXsGocV1+nDb04l0rzP4jkq2Ne4yE267BYC4UBJ/5

0.7.0

Released 2026-10-21. Works against the api until 2027-04-22. Served until at least 2028-10-21.

New

  • The classic script’s window.Pixonaut carries every export (#2018) of the package entry: createDesigner, designerUi, createClient and the rest, beside mount, version and the error classes it had before. A page loading the SDK from the CDN can now mount from the reads its server made.
  • The designer speaks nine languages (#2015): English, Swedish, German, French, Spanish, Dutch, Danish, Norwegian Bokmål and Finnish. A mount whose locale names no bundled language uses the template’s workspace language, else English.
  • Template text can hold dynamic values (#1989), such as Class of {date.year}. The SDK sends the browser’s time zone as tz on the template read, validation, proof and commit, so the text is written out for the reader’s own date.
  • The shown event and designer.shown() (#2025) tell the host once, after the first preview is drawn and a split mount’s parts have replaced the host’s markup.
  • The printSize event and onPrintSizeChange (#2025) report another size chosen in the SDK’s size menu, with its index and entry.
  • showPickers takes { size, variant } (#2025) to hide the size menu or the variant picker alone. The boolean and showVariantPicker keep working.
  • debug: true (#2025) logs events, requests with their status (no bodies), the upload’s PUT by path and a preload photo’s failure to the console.
  • fileName on UploadProgress and UploadResult, and getFieldTexts() (#2025), which lists each field’s label and value, an upload by its file name.
FileIntegrity
LICENSEsha384-T3v0fww2nJcyu9wolQbAUVtdXZuq3RLNPTh78MMnHizCNQ7XifzzFCo2o6/XYcLs
LICENSE-MITsha384-tM5LbP5GcuO09LJ4934A9c0ra82HbZqcscAQKyyWJIIw65CiW/J6Uo5N3RS3R4CL
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-u6Ybhj+8Qfebgv0cSVZ7X5atuX1tftxHU8Ql4gVnbY87HgcoToHLJ2qTa5wvcwlP
pixonaut-client.jssha384-vQGcik7FWjdJN5DN4PKuUDRsIvGyJBX3ytEtZT5eMkHhmNFqKoYWtOmj7xLARZbP
pixonaut-core.d.tssha384-5Bn54iliD8jsGI2VS5L6suH3cC6zQH4hGQ2VAF0B+nNbkgdcxQsEsh0+wrrsxEP3
pixonaut-core.jssha384-Xij0UBBAj06fE7lzCUBSMiFepjoh6GP6J8z5LpLeaZMGBvuw3odvhEdsoLZrmvx1
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-NkiixWxw5iN/FjKGNKGw6I2z/NUekrsjce7X+wROdKH0VCwPplZnEUjZ1PTr0Jux
pixonaut.d.tssha384-DwSg1v1ntG9YAyHHFJPD3SgIHgs5gGBVKOplCc5cVX6vKF6PJyki9TtjAs3c5MPo
pixonaut.esm.jssha384-t2SZwhCMB5SLbYElEU1Zf+wTjwhw8RB6axRgxrRERWiUuj8LyuFRfNASUcJvFrMP
pixonaut.iife.jssha384-nXhWEbyTRrn0SINq4ahwoKbzPUSK6Zgy+0g7S42TTDfx5svkuQx0YGINzbIRm9hJ
pixonaut_wasm.jssha384-m1rOvoCmdixll3FTLzswsASvgUBxvb/Po+1EvyUzO3Kgpbhhsbk3EzA/gT0osh3g
pixonaut_wasm_bg.wasmsha384-iIWsb0QmVE3rdiToaA0RhnmHNS744tlRf8/H6VbBnm8EKif3zhHxRxegY6X5rWUz
schema.d.tssha384-gIBxgYEmszIIrV1mqlgCPZKEHgPT4cfUfpky2eLHhP+TGH+pa9mX4V6s4zgAjOtd

0.6.0

Released 2026-10-21. Works against the api until 2027-04-21. Served until at least 2028-10-21.

New

  • A correction link mounts the full designer (#1979). A correction-link mount takes the product options a product mount takes (blankId, placementId, placements, views, initialView, variants, printSizes, selectedPrintSizeIndex) and draws the stored design on the blank’s photos with the view strip, in the box it was bought at. A pair the design was not made on rejects mount() with a TypeError; a correction keeps its size, so it draws no size menu, and shows only its own side of placements.
  • Server-rendered markup is taken over without a layout shift (#1988). In a split mount, the markup a host rendered into the preview’s, the form’s and the view strip’s elements, a loading spinner included, stays until the designer’s preview is drawn, and the designer’s parts then replace it at once. A failed mount leaves that markup in place. A new onError option hears every error event and a failed mount. createDesigner() in @pixonaut/sdk/core takes the three elements, as mount() does.
  • The upscale mount option (#1744) takes false or { belowDpi }, and narrows the upscale a template offers per picture; it never widens it.
  • The designer carries “Powered by Pixonaut” (#1849) in the preview’s bottom-right corner whenever the api says the workspace shows it. There is no mount option for it.

Changed

  • A chosen print size is drawn at its real size on a blank’s photos (#1984). A blank’s photo marks the placement’s usual box; a larger or smaller size is drawn larger or smaller than that rect, in the preview and in renderView() thumbnails, and a size chosen after the photo is placed re-places it. A storefront’s own mockups mark no size, so the design still fills their rect.
  • A product with one print size draws no size menu (#1979). The size is still sent with the proof.
  • CMYK is drawn through the output profile the print will use (#1855, #1878). The preview, the swatches and the colour picker’s estimate use the profile of the machine an order would be printed on, where they used ISOcoated_v2_eci alone; a profile the workspace uploaded is drawn through its own tables, read before the first colour is painted, and through the bundled profile when they can’t be read.

Fixed

  • The designer-session id is random when storage is blocked (#1799). It is 128 random bits whether or not the page can use localStorage, where a blocked storage fell back to a time-based id a publishable key could guess.
FileIntegrity
LICENSEsha384-T3v0fww2nJcyu9wolQbAUVtdXZuq3RLNPTh78MMnHizCNQ7XifzzFCo2o6/XYcLs
LICENSE-MITsha384-tM5LbP5GcuO09LJ4934A9c0ra82HbZqcscAQKyyWJIIw65CiW/J6Uo5N3RS3R4CL
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-eJjdIyeI910qdfN4INkoUe0yCFjlvvnirXERz3E5Xee+OVKMt8Uhgy4oJiUkNUBO
pixonaut-client.jssha384-H/sY4xWfDVGu2oNTQqXppKeCEYaL4DMhnQS3LP6BKoWnJreYms1KLG7212KkFwtw
pixonaut-core.d.tssha384-cOoTaKHvL6VCNT1NH2OyBFQYxpuNlXW/MQlDRBVBQuBn2EHtrMB0gXP8kAEUUUzg
pixonaut-core.jssha384-s0LOXLxK65WtRjZ7BcP5dqEzaRBp/nS+qekSSjj8rLB1QPMzjt85a3c7zBKnAUJJ
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-tzaVVSS7XWUn67dYanSvVq0gyyZowfCGlINAAmkuK0lcfJkahGbogYU4wLKk1Fgd
pixonaut.d.tssha384-kN+9Tvv8P9EEQUpGUCkazaNOrXqr598xFHq6O4zCa57zvvw2JFiGX+2qToAiIYe6
pixonaut.esm.jssha384-WzEyTZCoYGzUWlZX8Xl98pa2ttFO9iSKQDN8+oqShI8MRo6GIWGMzuKW7euQ4GuX
pixonaut.iife.jssha384-+dFKXEn9NeEU2nIVCh0+s21EB07AgCnpBdhhPqKRgZxTkmMV7n1WfL27oj3xnyCj
pixonaut_wasm.jssha384-NPngwXBn0pMLLKx74DiCd2wLiagxrBEwokEJeG5o6ppWSU4xGY16K7qpZqiVs0iK
pixonaut_wasm_bg.wasmsha384-B83wDpfuI0iK7ZXNTJw0+V5nl3fJg/fEavZZyd2Q1Tj+7fEEjpN/SEpr9CbkrCDh
schema.d.tssha384-aeT8oBNJRUm8f+ScQv+ulmAZ/fZr8OTUhDC89ydGE2lvdy00nRJ+Yk+2WyHW+3lV

0.5.0

Released 2026-10-20. Works against the api until 2027-04-21. Served until at least 2028-10-20.

Changed

  • The preview is as sharp at every print size (#1682). Without a previewDpi from the host, the preview renders as many pixels as it is drawn wide on screen, at the screen’s pixel density, within previewMaxEdgePx, where it rendered the print at a fixed 96 dpi: a 50 × 50 mm print was a few hundred pixels stretched over the box a 500 × 500 mm one filled. A resize of the preview, or a move to a screen of another density, draws a frame at the new size. A frame drawn while a gesture runs is three quarters of that resolution, never sharper than the frame it stands in for. An explicit previewDpi is used as before.
  • The print size picker is a row of chips (#1682), drawn as the option picker’s chips, where it was the platform’s <select>: the chosen size ringed in the accent, a refused size disabled with its reason as its accessible name and title. It is one tab stop, and the arrow keys pick the next or previous size, wrapping and skipping the refused ones.
  • A side or template switch keeps the picture shown (#1677) until the new one is drawn and its photo placed, where the preview went blank and the designer’s height dropped, moving the host page, and a frame could show the next side’s photo without its layers.
  • A variant on the same photo redraws nothing (#1677): choosing another garment size on a view whose photo is the same fetches and places nothing again. A variant that changes a photo redraws only the view thumbnails whose photo changed.

New

  • getViews() lists each view’s photoUrl (#1677): the url of its photo of the variant shown, or null without one and for the Design view.

Fixed

  • A preview frame asked for as the designer closes is not drawn (#1697). It was drawn on the page’s thread after the designer’s worker was gone, into a renderer instance that outlives the designer, so opening and closing designers grew the page’s memory.
FileIntegrity
LICENSEsha384-T3v0fww2nJcyu9wolQbAUVtdXZuq3RLNPTh78MMnHizCNQ7XifzzFCo2o6/XYcLs
LICENSE-MITsha384-tM5LbP5GcuO09LJ4934A9c0ra82HbZqcscAQKyyWJIIw65CiW/J6Uo5N3RS3R4CL
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-u8G5pNQQsqTeJxccCtzVq/bP6tFffMjhEChgAhhXzMY/cwLiaiE+NZ4GKK5McpAC
pixonaut-client.jssha384-Z6U59c+6HJUnzMluoeKqXIGouJGkpEucntQf8y21pI+IXPXycN3vRJkQX8aDPLbV
pixonaut-core.d.tssha384-AQaAEzWMuv/CJtUK6hbQQLE9Zwe0GcHG89ZZtfeq7eM7QGh9tsbLzXmK/aPmOD4B
pixonaut-core.jssha384-DcztXLn4daaV0G/z3+AM5wLqSKe7NZBoyMOutTnocCT5ma1xuHYqFtiClcd5UoTF
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-Mow/Z8HjxRCc7esoqPZKMAlVoI/fpj3wrJ1l/53zSi6KLj45Jw5G3fI5k5/CEN3l
pixonaut.d.tssha384-tckdraC03vKQJ5k/IRISkoDKLhE0Jvjexf/XrsvuxPBsu7pMTP2i+C1S3X0ZZ05n
pixonaut.esm.jssha384-W6QXfCXgaHcYtLzN4o2kQWgBOt843XJ6vApk0GCpa/+SXYrnKjF6AQp0yRgyIQXc
pixonaut.iife.jssha384-foJbvqYJwok+qYqF7KY6kemnLlnJpZR+aqO5tZkV+vaE/tRYhumk821BQY86VMvH
pixonaut_wasm.jssha384-t/vYxIEXbQDh6AaxRaR+rNfFrJn6gw0fLLvdVdEdnw1pBcvBvLcMOtHEFyHgMyQR
pixonaut_wasm_bg.wasmsha384-FUByTg/pt7suKuaWvJixVtWyOp7XKfpGt+yj1WT8wU5TMw24WEOlRyWi45wY5fJx
schema.d.tssha384-l5/09mtosac//Fow9O9O4f3Hwd/xwiiQ9Ii3l7hQLe3SlhrFu4+XTRO6A8tCJX63

0.4.1

Released 2026-10-19. Works against the api until 2027-04-20. Served until at least 2028-10-19.

Fixed

  • The designer loads on a page served over plain http from a name other than localhost. Such a page has no crypto.subtle, and the check of the renderer’s files against this release’s hashes needed it, so the designer never mounted (Cannot read properties of undefined (reading 'digest')). The files are now checked in script there, and a file whose bytes differ is still refused. Over https and on localhost nothing changes.
  • A dragged layer’s picture lines up with the preview whatever border the page gives the preview image: it takes the preview’s border widths and box-sizing, where it assumed a 1px border.
FileIntegrity
LICENSEsha384-T3v0fww2nJcyu9wolQbAUVtdXZuq3RLNPTh78MMnHizCNQ7XifzzFCo2o6/XYcLs
LICENSE-MITsha384-tM5LbP5GcuO09LJ4934A9c0ra82HbZqcscAQKyyWJIIw65CiW/J6Uo5N3RS3R4CL
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-u8G5pNQQsqTeJxccCtzVq/bP6tFffMjhEChgAhhXzMY/cwLiaiE+NZ4GKK5McpAC
pixonaut-client.jssha384-ymIsBinMwYera6/TY5aHGZ+HHWDvg7qGwfGijMPhjcHAGS3ua22bRpZs8SybMk0e
pixonaut-core.d.tssha384-9JC8QfsA/RZO7JVas79Hk09YC+G/OsQ+TVKAU8tLd7pEy89/d0HUtpwoRaUrBZtA
pixonaut-core.jssha384-HAA5Hks7+uktuc1vcgajN76OOFfmNSonCZPXy4y7dHI4w5lXI1oJ0L6l8VQYZo7K
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-hrDXTAHo1VcWP4JzDI2jsxrWRn+qCcbUB+2jRAcISeD2bxXwetgSsbfLWu1hxdOn
pixonaut.d.tssha384-OQTlxip/gU6IHpa3z4bbGeoym5KkKCHlyGxi9TWwBPZxf9pS5xt2vQ7DH9H43/zq
pixonaut.esm.jssha384-rX9ne+ltgb/HqIMeQej47cOEWaE5aZOIsZKwutlggq2Cj/hhdA/g9o1FP6S676le
pixonaut.iife.jssha384-KKBErE/I5Co7+9qopP8ZJgI9EzQ6Lz+5/Da2SrdCy8Db6+l3/a4rA9eCutoUtnWK
pixonaut_wasm.jssha384-7QzmOUinB4BwOcJHlQYZ1t/fmiGskg9J4JCyq89h0CTStUTJ5yaYQKaJGWzW64aL
pixonaut_wasm_bg.wasmsha384-Lt2iQLz8kxuQ06VM0Bz1z37G8MfF996F5cgRA55f7vThD/S0rgYFCVWbjR6Lvjeg
schema.d.tssha384-eiehfgzyAYv75jZBb+oIBVrAfwXnvDCLnNtrdgK221D9tIx+FHbzNvRKFOOIUPdF

0.4.0

Released 2026-10-19. Works against the api until 2027-04-19. Served until at least 2028-10-19.

Changed

  • The preview draws no frame around the print area by default (#1552). The thin grey frame the designer drew around the print area on the product photo read as part of the product, so an embed with the default look now shows the print on the photo with no frame. Pass showPrintAreaFrame: true to draw it as before.
  • The option picker draws each value as it looks (#1548). On a mount with a blank, the designer draws a row for each of the blank’s options with two values or more, in the blank’s order and named as the blank names it, where it drew a colour row and a garment-size menu. A row whose values carry appearances is swatches: a flat colour, two colours half and half, or the value’s picture, the chosen one ringed and named beside the option’s name; a value without an appearance is a plain circle with its initial, never a crop of the item’s photo. A row without appearances is text chips. What decides it is the values’ appearances, never the option’s name. Choosing a value keeps the other options’ values when a variant has them, and the values of the variant the designer opens on show as chosen.
  • A product with options to choose opens on a variant (#1548): without initialVariant, or when it cannot be shown, the designer opens on the first offered variant with a photo on placementId, so getVariant() names it from the start and its values show as chosen. A product with nothing to choose opens on each view’s default photo, as before.
  • Outline and shadow lengths read as a percent of the text’s size (#1543): a screen reader is told the percent the slider shows (4%, through form.percent), as its value label and limits already read, and an offset up or left reads with a minus sign.
  • A text’s outline and shadow fields sit under headings (#1562), “Outline” and “Shadow” (form.group.outline, form.group.shadow), each drawn only when the template offers one of its props.
  • The view switcher above the form keeps its place, with 76 × 64 px frames on 84 px buttons (#1543). Colour swatches share one 32 px edge and every menu the form draws one 40 px look.
  • variants.unavailable interpolates {value}; {colour} still works. variants.colour-legend and variants.size-legend are no longer drawn, and are deprecated (#1548).

New

  • The Design view (#1537): on a blank with photographed views, the views end with one showing the customer’s artwork alone on a transparency checker, with no photo behind it. Its id is "design", exported as DESIGN_VIEW_ID, and it has no placement of its own: it shows the side the editor is on, and stays shown through setVariant() and setSide(). views and initialView accept it, and views leaves it out when it names other views without it. getViews() lists it with kind: "design" (every other view is kind: "photo"), setView(), getView() and the view event treat it like any other view, and renderView() and renderTemplate() draw the design alone on a transparent ground for it, the same in every variant. It is labelled by the new message views.design, and is not offered for storefront mockups, for a blank with no view on the placements sold, or when the blank already has a view with that id.
  • The view gallery (#1543): given viewsTarget, the switcher is drawn there as a four-column gallery of square photos under the preview, each view’s name under its photo and the chosen one ringed.
  • accent (#1543), the host’s accent colour as #rrggbb: the chosen view, swatch or tile is ringed in it, a slider’s track is filled in it up to the thumb, and the form’s Next button is drawn in it, with black or white text, whichever reads. Any other value is refused at mount.
  • showVariantPicker: false (#1543) hides the rows of the blank’s options but keeps the print-size menu, for a store whose own variation form chooses the item; showPickers: false still hides both.
  • showPrintAreaFrame (#1552) draws the print area’s frame on the preview, which is off by default from this release.
  • getOptions() (#1548) lists the options the product is chosen by, each with its values and each value’s appearance: { kind: "fill", colours } (one #rrggbb, or two), { kind: "image", assetId, url }, or null. With getVariants(), it is everything the built-in picker draws from, for a picker of your own.
  • The client gains automations.list, automations.get and automations.versions (#1565).

Deprecated

  • ProductVariant.colour and ProductVariant.size, read off the names of the blank’s axes (#1548). Read options by the option getOptions() names.
FileIntegrity
LICENSEsha384-T3v0fww2nJcyu9wolQbAUVtdXZuq3RLNPTh78MMnHizCNQ7XifzzFCo2o6/XYcLs
LICENSE-MITsha384-tM5LbP5GcuO09LJ4934A9c0ra82HbZqcscAQKyyWJIIw65CiW/J6Uo5N3RS3R4CL
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-u8G5pNQQsqTeJxccCtzVq/bP6tFffMjhEChgAhhXzMY/cwLiaiE+NZ4GKK5McpAC
pixonaut-client.jssha384-Sji4p9yqLpkhIshJRo1wjIls/HJxLkht8+UJOoWgdueUxDz3kFlAtycPrjpS8xrA
pixonaut-core.d.tssha384-9JC8QfsA/RZO7JVas79Hk09YC+G/OsQ+TVKAU8tLd7pEy89/d0HUtpwoRaUrBZtA
pixonaut-core.jssha384-RtY9zP3jV2e9StOTI5dm+qUd9SPiB3Db8a+Gf9Wp0QDM3Pj+tEcUlxwnkBtWYL9B
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-UeH/hqIAU0MiDboGwEFkgad8eJsh2FoL+GavWpqpYR70kRRIOPdhnS8bmFf0O/Am
pixonaut.d.tssha384-OQTlxip/gU6IHpa3z4bbGeoym5KkKCHlyGxi9TWwBPZxf9pS5xt2vQ7DH9H43/zq
pixonaut.esm.jssha384-lCQSJ9TNxC0ATABMPOtyDd2nbSOPznxEAIzrafu0mKncS4GlbQIQOjTRcXVCYG/z
pixonaut.iife.jssha384-5T71H7bANIoAYXsSFAI0HYiibMfmbs1cSJs0KrEARh2uGBr+MlSq1NUPFXCZUUsq
pixonaut_wasm.jssha384-XhDkqI4x1Fgj28JnA1O9YFYCgbNdHZaHTB9JnshvAeHYf5p5OFcbGR/jUEeZDHOB
pixonaut_wasm_bg.wasmsha384-worAVw/GvKUn7LYikiLMS3kDdnGsuCO8ZabhPig8V+8gi6zwoQHZZWiLWCxfSfpv
schema.d.tssha384-wC5t2i4L4gebq90jKpbcLDA9WDsGat8XhPWLseSa5HCX3mB595EbB4VlebsczDRM

0.3.0

Released 2026-10-18. Works against the api until 2027-04-19. Served until at least 2028-10-18.

Breaking changes

  • approve() and commit() answer for every side (#1415). approve() resolves Approved and commit() resolves Committed: the lead side’s proof or design (the first enabled side), with every enabled side’s under sides (SideProof, SideCommit, each naming its placementId). The approved and committed events carry the same. A one-side mount’s result reads as before, but code typed against ApproveResult or CommitResult must take the new types. With several sides, commit() validates every side before it commits any, and a refusal names the first side refused in PixonautApiError.placementId. An approve() or commit() interrupted by a side switch rejects with PlacementChangedError.
  • Each side keeps its own values (#1415). An unkeyed value never leaves its side, also when two sides print the same template, where until now they shared one set. A keyed value is still the item’s, on every side with a field of that key, unless sideValues: "own". getState() names the shown side as placementId and holds the others under $sides, which initialValues restores; $sides is refused as a layer id.

New

  • One designer designs every side of an item (#1415). Each entry of placements is a side on its own template, and one marked enabled: false is left out until the shopper chooses it. setSide shows a side, as does setView with a view of another side, and both emit side. getSides() lists each side’s template, whether it is enabled and whether its design passes; setSideEnabled turns one on or off. A mount with more than four placements logs a warning, and a designer link holds up to ten sides (#1433).
  • Colour and size pickers (#1531). On a mount with a blank, the form shows the offered colours as swatches and the chosen colour’s garment sizes as a menu; showPickers: false draws neither. variants narrows what is offered and initialVariant is the variant the designer opens on. getVariants() lists the offered variants with their colour, size, options and photo, for a picker of the host’s own, and setVariant() rejects a variant not offered with not_offered.
  • Preloading (#1432). The preload option ("off", "background", "eager", or "auto", the default) loads a product’s other variants, views and sides ahead of time, so a switch shows on the next frame. preload(target, options) loads on demand, cancelPreload() stops, preloadPlan() says what auto would do and why, and the preload event reports progress.
  • renderTemplate(templateId, options) (#1416) draws another published template with its sample or the shopper’s values, carried by field key, optionally on a view’s photo, for a gallery of templates. A picture that cannot be drawn rejects with TemplateRenderError. The client’s templates.list({ ids }) reads the templates named in one request with a publishable key.
  • Text outline and shadow (#1427). A text layer can draw an outline and a shadow, which the author may offer to the shopper; the form shows their lengths as percents of the text’s size (#1487).
  • getValue(layerId, prop) (#1422) answers the value a field shows, for a form of the host’s own drawn again after setTemplate() or setSide().
  • settled() (#1526) resolves once every upload and improvement under way has written its value.
  • A proof records the view and variant (#1420) the shopper previewed the design on.
  • PixonautApiError.reopensAt (#1477): when a designer link has reached its design limit, when it opens again, in epoch milliseconds, or null when it never does.
  • A share link’s designer shows its blank’s photos (#1527).
  • The client gains orders.rerouteTargets, the blanks a failed order could be sent to (#1423).

Fixed

  • A view switch keeps the previous photo on the stage until the next one is shown, rather than showing the artwork alone and jumping in height, and a dragged layer is drawn where its selection box is (#1487).
  • A picture still loading is marked as loading rather than drawn as missing, and the preview shows nothing until its first raster (#1453).
  • The print size menu is headed “Print size” (#1487).
FileIntegrity
LICENSEsha384-T3v0fww2nJcyu9wolQbAUVtdXZuq3RLNPTh78MMnHizCNQ7XifzzFCo2o6/XYcLs
LICENSE-MITsha384-tM5LbP5GcuO09LJ4934A9c0ra82HbZqcscAQKyyWJIIw65CiW/J6Uo5N3RS3R4CL
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-qu59KQwP8xS2ZwTBF/IfFmAlUK1zJNEeMKVEP6Auy4sd5l3eJD+j8piDhZ72gNCc
pixonaut-client.jssha384-84Vh7ckAlDa7ht1MWSkYYqSjSSQVbD4BsAT4LwxjIzpl2wPecmNIU5OcRaIOYkuk
pixonaut-core.d.tssha384-uustDGdnoi2FkSZBilZv4MDmAkcRkiFLlfo9VXFbHFohM7CDbLh6TBBe7Ijp+eCZ
pixonaut-core.jssha384-nX5lr/B9mNfgqchY25y3VJbAc015jSfni9m1yQtJVE2DyqLeixy8dPTS/IzLnuls
pixonaut-ui.d.tssha384-tJLL0sJydPg53bWRT/PI8IUs7lXTx4Sg8v1bwbotEPV8jPNdy95LXhh7EnCTprHg
pixonaut-ui.jssha384-+B/srpjutPk0PE515OFuTmPborAdSewk5DO/lqtdynwqrgMOUThwKRJ5nukVFhXQ
pixonaut.d.tssha384-xZB1SV364VJYNNY0rBmz665UfI38oOIDV11vFcs4Y0QoNDypw1v1urmL+kueoaxu
pixonaut.esm.jssha384-RfEI6WFTkjdmPMtkdFdsKjEfKWYLfUFh/sMtNazMFEWbGbCx/1gCybX32A+2lHY0
pixonaut.iife.jssha384-sDX/RIiRR4f7rhcsS57TohDdvVGDViJDPMjuqnfY/UpEv0PnIJQGSHRJKB59c4Fm
pixonaut_wasm.jssha384-mE7J+yZK0ZvkG7jwy+79u45slx7un5y1qwlBVeFU3Ks6uIa4frSo2IZ7umV2ZVC/
pixonaut_wasm_bg.wasmsha384-kk6aC51hgKsewR+MzkB2mprIm7Xqg4Ibw4YHQy1WEYhIVht3N9+E1jVz1htunB7B
schema.d.tssha384-ymGA0yNTKdGMK/TYbiEVnQpUfFUMHuWHPsf3Mx91EeLnvhyaTzW6lrho6P7WDoZD

0.2.0

Released 2026-10-16. Works against the api until 2027-04-18. Served until at least 2028-10-16.

Breaking changes

  • A product is shown by view and variant (#1410). setMockup, getMockup, setPlacement, buildMockupPicker and the selectedMockupIndex and onMockupChange options are removed. A mount naming a blank lists what it sells in placements, the views it is shown in in views, and opens on initialView; the host switches with setView and setVariant and reads getViews, getView and getVariant, or leaves it to the built-in strip of view thumbnails (viewsTarget, showViews). A view of another placement switches the editor to that placement and its template. A variant with no photo in any allowed view rejects with VariantUnavailableError. A storefront’s own mockups are views named by their viewId.
  • SdkRequestError is now PixonautApiError (#1388). Beside status, code and violations it carries requestId, the request the API’s answer names, to quote to support.
  • getState().values keeps keyed fields apart (#1389): the shown template’s unkeyed values by layer, every keyed value under $fields, and other templates’ values under $templates. initialValues restores all three, and a state saved by 0.1.0 still restores. The payload a proof or commit sends is unchanged.
  • The licence is split (#1401). The client (pixonaut-client.js) and every .d.ts are MIT-licensed (LICENSE-MIT, which replaces LICENSE-TYPES). The rest stays under LICENSE, which now also allows installing the SDK from npm and bundling the core and the UI into your own site, and no further.

New

  • The SDK is three parts (#1388), each a file of its own beside pixonaut.esm.js, which still holds all three with Pixonaut.mount(): pixonaut-client.js, a method for every published read (createClient); pixonaut-core.js, the designer, which takes its template, placement and values as arguments (createDesigner) and may route its requests through the host’s server (transport); and pixonaut-ui.js, the generated form, steps and pickers (designerUi). npm: @pixonaut/sdk/client, @pixonaut/sdk/core, @pixonaut/sdk/ui.
  • An integrator’s own UI drives the designer through public calls (#1372): on(event, handler) for change, selection, step, view, variant, mode, progress, error, approved and committed; setMode("edit" | "preview"), setInteractive, resetLayer, clearSelection, attach and detach, getResolution, and upload progress. showPickers: false draws no size or colourway picker.
  • setTemplate(templateId) (#1389) switches a mounted designer to another published template without remounting. A field’s new fieldKey carries the shopper’s value to the field of the same key in the next template, and every value comes back on switching back.
  • Crop mode and scale (#1400): setCropMode(target) for a layer’s picture, the background or none, reported by the crop event, and scaleLayer(layerId, scale), clamped and rounded as the scale handle is.
  • renderView(viewId) (#1410) renders the design on a view’s photo.
  • Italic text (#1316): a text layer set italic draws its family’s italic faces, falling back to the upright ones where the family has none.

Fixed

  • An event a handler emits while another is delivered reaches every handler after the one in progress, in order (#1400).
FileIntegrity
LICENSEsha384-T3v0fww2nJcyu9wolQbAUVtdXZuq3RLNPTh78MMnHizCNQ7XifzzFCo2o6/XYcLs
LICENSE-MITsha384-tM5LbP5GcuO09LJ4934A9c0ra82HbZqcscAQKyyWJIIw65CiW/J6Uo5N3RS3R4CL
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut-client.d.tssha384-SQ8jfH6V6PXS5qcpWI9YMlEn/h9c+weKhPKf7eSRBX4rY0jvx8h1osfekyHxL7jR
pixonaut-client.jssha384-1s1RWxQi5Z4XenLIgf6V1CYIqNP9v2NNiu+oyc1Ga0h75PqH4VVXPybqFs4qlHB5
pixonaut-core.d.tssha384-uens3eDgAFvrhQPsdNLbVeS3helYNkzthk6D9+1XTV/aOlzF1j3EbYkR5WEyq0i8
pixonaut-core.jssha384-J2eb7OJv6w6ddzM8G77vcoaMJBinYD2EacH8Fd0l9HBum6f5iWm/Nzg1FOcWtFIS
pixonaut-ui.d.tssha384-JOK1x/bVQV4VnVJto9pek7r8d4aJyMviQLyJKSCury6QRa9f86w+NOFSyjPCqkZM
pixonaut-ui.jssha384-LSH1g6JzIPxCOtzDkthMFW5ldgUyoVGDMTaPuasOL/zLtRjN+zvYGfc9eCy9K8JS
pixonaut.d.tssha384-PXkalEsjZEREjNIILYnquN0yYI3MpfL7U0gh7WP1Euhk9r2rn772sopuGYLT8w7M
pixonaut.esm.jssha384-dEGLdUYc7KeuFzcqmaoNaGTbhGi6YyfsXDUYwD2gNapglpYlia6pB5xqL7/5XXPV
pixonaut.iife.jssha384-irXdPL9NxUzNLqI+uNTtU0yHAsm+BMRFNPeLBSeWwzOyEx3Uz9RmTjYH0+ess8c3
pixonaut_wasm.jssha384-o2tMIKr8F6kDTOplDCRebAu3xZS14Srh3Ru+Q6uJMUVofkHuLi0IBVwD6UJi/dw5
pixonaut_wasm_bg.wasmsha384-JmcRPI8n1kIMGhmrSqcy9Erqz8xfHpM3H8CqUIv77SSXZnxI/X7CpflMmrhFFJ3d
schema.d.tssha384-N0s5aTyrS78xBzLj17SameoEpRkamfNJT6W0/I37awKBfwJCATzXLlIEJsB+kBZy

0.1.0

Released 2026-10-14. Works against the api until 2027-04-16. Served until at least 2028-10-14.

FileIntegrity
LICENSEsha384-KE+eRmuZInAja+2CXyPwWbxbLvoeIrv7B+7vEU+T4GXEt/BCkfiUUe/DjrUihBXW
LICENSE-TYPESsha384-IaJfxefR22Mfyp0QE9hg7/flYaPpmBnNlBRZ9NwqwFl9t3EY/z1oHfkTXt2pUbEn
THIRD_PARTY_NOTICES.mdsha384-waGW35SIPumNkW6vxJ2kxSLBgdz8Q5KEuCnTrCZncntlXoqU3l1yKX24qoXuZeOJ
pixonaut.d.tssha384-ztVfFO9kHU8lnanTUgcuqrDQUjv68Nqob5or/GeayA2iVJS/9nByAzPLDyc0aLBA
pixonaut.esm.jssha384-GHoORgupg8lSQC+zMbmavdDh4i5ObUJUQfMlQQa40AZ+ZfI7ouccCgV9TDTF3I0E
pixonaut.iife.jssha384-ucDGRjS0kkyJA5nc3onoIxrql1b/lb99cB/IdbNN3EYQz6Op0Fxz442DVYfNw6lX
pixonaut_wasm.jssha384-GBf9TdeoxsQHDfSxiLN+YOjLq5cIWzY5R0AqoYIWrs5F4ymMFckj/uN2uHoj/Dn1
pixonaut_wasm_bg.wasmsha384-bfYYE9jVHvCFqQXQqZhQz8k77ywfiOeoiJ9ItuB1OOy4FBNUqz4zICEMpMuQ/TNX
schema.d.tssha384-CIYbMt//bItsN/K2zBF2BLTfgdF5nwi4geuMkk93Kj5z8TGnk+GoeoiHJhiagqc5

Questions? Write to [email protected].

Status · Terms of service · Privacy policy · Subprocessors