Skip to content

v0.1.7

Release date: May 8, 2026

New Features

S3 Asset Storage

  • A new optional ASSETS_STORAGE_MODE=s3 setting lets stores push uploads to an S3-compatible bucket and serve them from a CDN, instead of the default local data/files/ directory
  • When S3 mode is on, every uploaded image is pre-generated at common widths (200/400/600/800/1200) as WebP variants and stored alongside the original, so the storefront can serve correctly-sized images without on-the-fly conversion
  • A new optional ASSETS_MAX_BYTES cap limits cumulative file storage (in either local or S3 mode), so a runaway upload flow can't blow up the bucket bill — per-upload caps (5 MB image / 50 MB video) are unchanged
  • A one-shot migrate-assets-to-s3.mjs script ships with the Docker image; running it inside a container uploads existing local files to the bucket, rewrites their stored URLs to the CDN, and pre-generates variants

CSV Exports for Users and Orders

  • The Users list has a new Export Users button that downloads the current view as a CSV
  • The Orders list has a new Export Orders button that downloads the current view as a CSV
  • Both endpoints are CSRF-protected and rate-limited

Responsive Storefront Images

  • Product cards, product pages, slideshow slides, image-with-text sections, collection tiles, and other storefront images now render with srcSet and sizes, snapped to pre-generated WebP widths (200/400/600/800/1200)
  • Phones and tablets pull the smallest variant that fits their viewport instead of always loading the desktop-sized asset, cutting page weight and improving Core Web Vitals on slow connections

Error Telemetry

  • When Platform Telemetry is enabled in Settings → Integrations, server-side exceptions and unhandled client-side errors (window.onerror, unhandled promise rejections) are reported anonymously to the Capyshop team as $exception events
  • No personal data, customer information, or store details are forwarded — the existing telemetry toggle gates the entire pipeline, and turning it off halts all error reporting too

Page-Builder Font Loading

  • Slideshow titles and subtitles, image-with-text titles/subtitles/body, and text-section body fonts picked in the page builder are now loaded with the page automatically
  • Previously only the store-wide theme font was loaded, which meant admin font choices on home-page sections silently fell back to the default font on first paint

Stripe Checkout Localization

  • Stripe Elements (the embedded card form) now mounts in the customer's selected language, so card field labels, error messages, and the "Pay" button match the rest of the checkout

Improvements

  • Webfont loading is now non-render-blocking — the storefront renders immediately and the webfont swaps in once it's loaded, eliminating the previous "blank screen until Google Fonts responds" stall
  • Build target updated to modern browsers (Chrome 111+, Edge 111+, Firefox 128+, Safari 16+) so the bundle no longer ships ES6 polyfills no current browser needs
  • Admin dashboard, analytics overview, and analytics funnel chart sizing refined for clearer visualization
  • The Docker image release pipeline moved to a dedicated workflow triggered by GitHub Releases, gated on a green CI run on main for the same commit — no more ad-hoc image pushes

Security Fixes

  • All state-changing API endpoints (POST/PATCH/PUT/DELETE) now validate the request Origin against TRUSTED_ORIGINS and reject mismatches; only Stripe webhooks opt out, since they authenticate by signature instead of cookie
  • The AI assistant proxy (/api/admin/chat, /api/admin/generate-text) and the sign-up endpoint now count every call against the rate limit — not just failed ones — to defend against paid-API drain and bulk account creation abuse