Skip to main content

Changelog

[1.11.0] — 2026-07-07

✨ New Features

  • Large-image proxy loading — High-resolution photos are now rendered on the canvas from an automatically downscaled proxy, dramatically cutting memory use and preventing crashes on mobile devices when customers upload big images. The full-resolution original is always preserved — print exports and orders are unaffected. Control the threshold with the new imageProxyMaxDimension option (default 1600px; set 0 to disable).
  • Hybrid server-side proxies — Images can now point to a server-hosted, pre-downscaled variant (proxySource) so the browser only ever downloads the smaller version, saving bandwidth on top of memory. The full-resolution original is only ever used for export. Uploads and Pixabay picks wire this up automatically, and the choice is saved with the design.
  • Per-image proxy opt-out — A new imageProxy parameter (default on) lets you force any image — or a whole group, such as your configured product images — to always render at full resolution.

🛠 Improvements

  • Accurate multi-view pricing — Prices for views a customer hasn't opened yet are now included in the total from the start, so the running price is correct even before every view has been visited.
  • New documentation — Added a dedicated Image Proxy Loading guide covering both proxy modes, configuration, per-group opt-out, and the upload-server contract.

🐛 Bug Fixes

  • Gradient-filled SVG exports — Fixed a crash ("color.match is not a function") when exporting SVGs containing gradient or pattern fills; these designs now export correctly while keeping their gradients on screen.

[1.10.1] — 2026-07-03

🐛 Bug Fixes

  • Bulk Order panel — The Bulk Order panel no longer shows up empty ("Please set all variations…") on products whose variations are stored in the product/view options; the configured attributes (e.g. Size, Colors) now load reliably.
  • Names & Numbers options — Dropdown values and per-entry price configured at product/view level are now picked up by the Names & Numbers module.

[1.10.0] — 2026-07-03

✨ New Features

  • Mask rotation — Print-area masks can now be rotated directly on the canvas in mask-edit mode, alongside moving and scaling.
  • Oversized images auto-fit — Custom images larger than the canvas are now always scaled down to fit the stage automatically — no setting required (explicit resize values and print-area bounds still take precedence).

🐛 Bug Fixes

  • Mask editing on canvas — Clicking a print-area mask in edit mode no longer deselects it immediately; masks can be moved, scaled, and rotated again.

[1.9.1] — 2026-07-01

🐛 Bug Fixes

  • Element toolbar visibility — The element toolbar no longer disappears when both the Position/Layer Order and Transform tools are excluded together; the remaining actions (Duplicate, Remove Background, Remove) stay available.
  • Graphic auto-centering — Catalog graphics added without a saved position now drop into the centre of the print area instead of a corner.

[1.9.0] — 2026-06-28

✨ New Features

  • Per-view & per-print-area fonts — Font pickers can now be scoped to each view and each print area, so customers only see the fonts you've assigned to the area they're editing instead of the full global list.
  • Touch scrolling over the canvas — On touch devices, swiping over the canvas now scrolls the page naturally instead of getting trapped on the customizer.

🛠 Improvements

  • Tidied the customizer demo header and buttons for a cleaner mobile layout.

🐛 Bug Fixes

  • Font inheritance — Fixed assigned fonts not resolving correctly per scope, so views now inherit the master view's fonts as expected.
  • Image & SVG colour mode — Images and SVGs now default to "tint" colour mode instead of "multiply", producing the expected result when recolouring.

[1.8.2] — 2026-06-25

🐛 Bug Fixes

  • Text editing — The last line of a text element is now fully editable, and pressing Enter reliably inserts a new line.
  • Replace across views — Text replacement now also applies to text added through modules when "replace in all views" is enabled.
  • Legacy upload settings — Older top-level upload configuration keys are now automatically migrated into the new uploads module config, preserving upload behaviour on upgrade.

[1.8.1] — 2026-06-23

🐛 Bug Fixes

  • Pricing rule values — Pricing rule prices and values stored as strings are now correctly coerced to numbers, preventing rules from silently failing to apply.

[1.8.0] — 2026-06-17

✨ New Features

  • Colour pricing on multi-path SVG elements — Dynamic pricing rules now correctly sum individual path prices when an SVG contains multiple distinct paths, so customers pay the right amount for each colour they choose.
  • Canvas layer shadow parts — FabricJS canvas layers are now exposed as CSS shadow parts, enabling external stylesheets to target and customise individual canvas layers without modifying the component source.

🛠 Improvements

  • Simplified pricing API — The imageSize and imageSizeScaled properties have been removed from pricing rules; image-dimension pricing is now handled through a cleaner, more predictable mechanism.

🐛 Bug Fixes

  • Colour pricing on text — Fixed colour pricing silently falling back to zero when text element colour prices were configured but the global textParameters object was empty ({}).
  • Catalog design placement — Designs fetched from the graphics catalog that were saved at the default 0/0 origin are now centred on the canvas when added, matching the expected behaviour.
  • Optional views (legacy) — Views stored with optionalView: "yes" / "no" string values (legacy format) are now handled correctly; the editor no longer incorrectly locks these views.
  • Curved text pricing — Switching a text element to curved mode no longer resets its individual element price.
  • Upload-zone to print-area conversion — Elements placed inside an upload zone now keep their correct position when the zone is converted to a print area.
  • Background elements in exports — Background elements that extend outside the canvas bounds are no longer clipped during offscreen rendering (exports), ensuring full bleed backgrounds appear correctly in print-ready files.
  • Text cursor under text transforms — The text editing caret no longer jumps to an incorrect position when textTransform (uppercase/lowercase) is applied to the element.

[1.7.0] — 2026-06-03

✨ New Features

  • Export-only print areas — A print area can now be marked export-only, so it appears in the final print-ready file but stays hidden in the live customizer. Useful for production marks, hidden backgrounds, or print-only content customers shouldn't see while designing.
  • Resize controls for free-scaling text — Text elements set to free scaling now show width and height dimension controls, so they can be sized precisely instead of dragged by eye.

🐛 Bug Fixes

  • Bulk variation quantity preserved on variation switch — Fixed the bulk order quantity and variation details collapsing to a single unit when a WooCommerce variation reload swapped the product. The visible rows were kept, but the underlying order quantity, cart line-item quantity, and saved variation details quietly reset to one; they now stay in sync with what's shown.
  • "Replace Default Elements on Product Switch" applies reliably — Fixed this option not wiring through on product switches, including correct handling of elements pinned to print areas that no longer exist on the newly loaded product.
  • Engraving opacity on catalog graphics — Fixed engraving opacity not being applied to graphics added from the catalog, so engraved previews now match other engraved elements.

[1.6.0] — 2026-05-26

✨ New Features

  • Themable module and toolbar internals — Module dialogs and the element toolbar's opacity slider now expose shadow-DOM CSS parts, so external stylesheets can fully theme these internal elements.

🐛 Bug Fixes

  • Module dialogs stay anchored while scrolling — Fixed customizer module dialogs drifting or detaching on host-page scroll; dialogs now follow the customizer, stay clamped within the viewport, self-heal stale offsets, and fade out cleanly as the host page scrolls.
  • Element toolbar tracks its element on scroll — Fixed the element toolbar losing alignment during host-page scroll; it now follows the selected element and fades out as the page scrolls.
  • Used-colors list includes SVG fill colors — Fixed getUsedColors() omitting colors applied to SVG fills, so the used-colors panel now reflects every color in the design.
  • Curved text restored correctly — Fixed curved text (text with the curved flag) not being promoted to proper curved-text objects when a design is loaded.
  • Accurate stage dimensions in saved views — Fixed resolved stage width/height not being serialized into view options, preventing size drift in saved and exported designs.

[1.5.0] — 2026-05-16

✨ New Features

  • Server-side image filters for Pixabay and AI images — Images sourced from Pixabay search and AI generation now have the configured Imagick filter applied on the server, matching the look of uploaded images.
  • markSaved() public API on the customizer — Integrations can now mark the current customization as saved without going through getOrder(), useful when persisting state via your own auto-save flow. The unsaved-changes flag is also cleared automatically on getOrder() so external save buttons stay in sync.
  • hideCropMarks option for SVG/print export — Crop-mark overlays can now be suppressed during export by passing hideCropMarks through printAreasToSVG / toObjectForPrint.
  • Themable element and image toolbar parts — The color sub-tab in the element toolbar and the tab strip in the image module now expose CSS parts so external stylesheets can fully theme them.
  • HTML support in the images-agreement modalmodules.images_agreement now accepts HTML, so you can include links and emphasis in the agreement copy customers see before uploading.

🐛 Bug Fixes

  • Print-area display settings preserved across view switches — Fixed display state being reset when switching customizer views, so per-print-area visibility no longer flips back to defaults.
  • Legacy view output dimensions carried into converted print areas — Fixed output width/height being lost when an older view was converted to a print area, preventing wrong-size prints on legacy products.
  • SVG export no longer leaks other print areas' UI chrome — Fixed exported SVGs containing UI overlays and elements from print areas that weren't being exported. Cross-print-area elements are now properly stripped.
  • Graphics search thumbnails match results consistently — Fixed search results in the graphics module showing stale thumbnails; items are now keyed by a stable identity so the right preview always appears with the right item.

[1.4.0] — 2026-05-05

✨ New Features

  • Multi-image upload — Upload multiple images at once; they are automatically distributed across print areas in order, saving time on bulk product setups.
  • Drag-to-scroll toolbar — The horizontal module toolbar now has a smooth draggable scrollbar thumb. Filter grids and Virtual Try-On history strips get the same treatment for consistent scrolling throughout the UI.

🐛 Bug Fixes

  • Loading spinner on element add — Fixed the loading indicator not dismissing after an element is added or fails to load.
  • Bulk variation rows preserved — Fixed variation rows being cleared when re-creating a product whose variant structure hasn't changed.
  • Toolbar clicks with drag-scroll active — Fixed toolbar button clicks not registering while drag-scroll was in use; drag now requires a movement threshold before capturing the pointer.

[1.3.0] — 2026-05-04

✨ New Features

  • Global bleed box toggle — A new option lets you show or hide the bleed/crop-mark overlay across all products from a single setting, without editing each product individually.

🐛 Bug Fixes

  • Placeholder visibility on view switch — Fixed an issue where image placeholders disappeared and did not reappear after switching between customizer views.
  • Text templates with unexpected data — Fixed a crash in the text module when a template list contained a non-array value.

[1.2.1] — 2026-04-30

🐛 Bug Fixes

  • Element drag stability — Fixed a crash that could occur when dragging or moving elements, caused by an unguarded property check on the drag payload.
  • Palette scroll thumb gap — Restored the 4 px breathing room between color swatches and the scroll thumb in the element toolbar palette.

[1.2.0] — 2026-04-30

✨ New Features

  • Drag scrollbar on horizontal toolbars — Module navigation rows now show a visible drag-thumb scrollbar so customers can quickly scrub through long tool lists without using a touchpad or arrow keys.
  • Scroll thumb on filter grids and Try-On history — Color swatch rows, filter grids, and the Virtual Try-On history strip all display the same drag-to-scroll thumb for a consistent experience.

🛠 Improvements

  • Toolbar click handling restored — Clicking toolbar buttons no longer requires a deliberate pause; pointer capture is now deferred until an actual drag threshold is crossed.
  • Scroll thumb appears immediately — The drag thumb is visible as soon as content overflows, not only after the user has already scrolled.
  • Styled scrollbar track on color rows — Color swatch rows show a slim, styled scrollbar track for better discoverability.
  • 4 px gap between filter grid and scroll thumb — Visual breathing room added between the filter area and the scrollbar thumb.

🐛 Bug Fixes

  • ESLint errors and warnings resolved — Full linting clean-up across the monorepo (625 warnings and all errors eliminated); no behaviour changes.

[1.1.0] — 2026-04-30

✨ New Features

  • Virtual Try-On — fully configurable: The Try-On experience is now completely merchant-controlled. Add custom HTML content above the generate button (perfect for showing credit costs or custom CTAs), choose which AI models to offer, and configure the experience via the new tryOn options block.
  • Try-On usage bar: A new cv-tryon-usage component displays a live quota bar so customers always see how many generations they have left. Supports per-user rate limiting via the TryOnQuota API.
  • Try-On fully translated: All 30 strings in the Try-On panel are now translatable via the standard ChamevoLabels system — no hardcoded English copy remains.
  • Price breakdown with base price: cv-price-breakdown now accepts a productPrice prop so the panel can show the complete cost including the platform's base product price (e.g. a WooCommerce variation price), not just the customization add-ons.
  • Close button for sidebar toolbar: When the element toolbar is in sidebar mode, a small × button now appears at the top-right edge of the panel — customers can dismiss the toolbar without having to click the canvas background.
  • WIDGET_ACTIONS exported: Developers building custom UIs can now import WIDGET_ACTIONS directly from @chamevo/components and @chamevo/customizer.

🛠 Improvements

  • Export accuracy for unvisited views: Elements in product views the customer never switches to are now exported correctly. Previously they could be centered on the wrong area; they now use the print area bounds consistently.
  • Print areas in options: printAreas config now lives inside view options (aligning with the WP plugin and exporter format), making integrations simpler and more predictable.

🐛 Bug Fixes

  • DPI warning now appears: The low-resolution image alert was never showing after upload due to an incorrect property check. Fixed — the warning now correctly appears whenever an uploaded image falls below the configured minimum DPI.
  • Dragging print areas in Scale & Move mode works again: Click-to-select logic was firing before Fabric could register a drag, making print areas impossible to move. Fixed.
  • No more crash when switching print areas: Selecting a print area no longer crashes element listeners that expect a design element. The event is now properly filtered.
  • Sidebar panel no longer flashes an empty "layers" state on load: An incorrect default module ID caused a blank panel header to appear briefly before the UI initialized. Corrected.