Releases: graphcommerce-org/graphcommerce
Release list
Release 10.1.0-canary.30
@graphcommerce/next-ui@10.1.0-canary.30
Patch Changes
- #2643
04ba9be- Only render disabled pagination items as links when enabled. DisabledPaginationItems no longer receive acomponent/href, preventing crawlers from following links to an infinite number of list pages and inflating the static page cache. (@Giovanni-Schroevers)
Release 10.1.0-canary.29
@graphcommerce/demo-magento-graphcommerce@10.1.0-canary.29
Patch Changes
- #2642
1dc4e9e- Fix breadcrumb "up" link title being translated in the wrong locale during static generation. The Linguitmacro title was evaluated inside the returned props after awaiting GraphQL queries, so a concurrent static-generation request for another locale could change the global active locale mid-flight. Theupobject is now computed synchronously before any await, capturing the correct locale for the current request. (@Giovanni-Schroevers)
Release 10.1.0-canary.28
@graphcommerce/storyblok-ui@10.1.0-canary.28
Patch Changes
-
#2640
e6685c9- AddrequestStoryblokCacheVersionRefresh()and stop the cache-version refresh from logging a spurious "apiPlugin not loaded" warning.On-demand revalidation (e.g. a cache-notify webhook) previously had to call
refreshStoryblokCacheVersion(), which callsgetStoryblokApi(). In a context wherestoryblokInithas not run — such as a serverless API route that never rendered a page — that logs "You can't use getStoryblokApi if you're not loading apiPlugin." The newrequestStoryblokCacheVersionRefresh()only flips a flag that the next published read consumes, so it never touches the Storyblok client and never logs the warning. In a shared-process deployment (Kubernetes) the page regeneration that follows picks it up immediately; on serverless, freshness falls back to thestoryblok.cacheVersionTtlinterval.refreshStoryblokCacheVersion()is removed — replace any direct calls withrequestStoryblokCacheVersionRefresh(). (@bramvanderholst)
Release 10.1.0-canary.27
@graphcommerce/storyblok-ui@10.1.0-canary.27
Patch Changes
-
#2639
6eb86fd- Refresh the pinned Storyblok cache-version (cv) on a TTL so published content no longer stays frozen on long-lived servers.storyblok-js-clientpins the spacecvper process on the first published request and never refreshes it (itscache.cleardefaults to'manual'), so published edits only became visible after a process restart — on a multi-pod deployment this could mean content not updating for a long time.fetchStory,fetchStoriesandfetchAllStoriesnow call the newrefreshStoryblokCacheVersion()before published reads, which re-fetchescdn/spaces/meat most once per the newstoryblok.cacheVersionTtlconfig (seconds, default 60; 0 refreshes on every read) to advance the pinnedcv. Skipped for preview/draft and in development. The helper is exported so on-demand revalidation (e.g. a cache-notify webhook) can force an immediate refresh. (@bramvanderholst)
Release 10.1.0-canary.26
chore(release): update prerelease versions
Release 10.1.0-canary.25
@graphcommerce/magento-cart@10.1.0-canary.25
Patch Changes
- #2637
9f5e765- Added disableScrollEffects prop to CartFab & NavigationFab for easier customization of the header (@bramvanderholst)
@graphcommerce/next-ui@10.1.0-canary.25
Minor Changes
- #2637
bdaa6ec- RefactoredLayoutNavigationinto composable pieces (Header,HeaderContainer,MenuOverlay, project-localLayoutDefault).LayoutDefault/LayoutDefaultPropsin@graphcommerce/next-uiare marked@deprecated. If you are upgrading and do not want these changes, you can just discard them. This is just a structural change for more ease of use. No visually change. (@bramvanderholst)
Patch Changes
-
#2637
9f5e765- Added disableScrollEffects prop to CartFab & NavigationFab for easier customization of the header (@bramvanderholst) -
#2637
21a676b- Changed Footer props type to allow setting footer container props (@bramvanderholst)
Release 10.1.0-canary.24
@graphcommerce/next-config@10.1.0-canary.24
Patch Changes
- #2636
78f9803- Fix Turbopack panic ("Cannot find module …graphcommerce.config.cjs") when loadinggraphcommerce.config.ts. cosmiconfig's sync TypeScript loader transpiles the config to a fixed temp.cjspath on disk and deletes it again, which races between Next.js worker processes. The.tsloader now transpiles via SWC and writes to a per-process unique filename next to the source so concurrent loads never collide. (@bramvanderholst)
Release 10.1.0-canary.23
@graphcommerce/graphql@10.1.0-canary.23
Patch Changes
- #2634
06082ad- Make GraphCommerce compatible with Apollo Client 4.2+ by augmenting Apollo'sDefaultOptionstype with thepreviewextension and the SSR clients'errorPolicy: 'all'default. (@bramvanderholst)
@graphcommerce/storyblok-ui@10.1.0-canary.23
Patch Changes
- #2634
e1a7e85- Sync Storyblok content with the Visual Editor's selected language (@bramvanderholst)
Release 10.1.0-canary.22
@graphcommerce/magento-product@10.1.0-canary.22
Minor Changes
-
#2627
95c188f- AddYoutubeEmbedcomponent — a lightweight lazy-loading YouTube player that defers iframe creation until the user clicks the poster. Uses preconnect on hover for fast playback start and is styled with MUI sx, so no external CSS is required. Supports playlists, no-cookie mode, custom aspect ratios and ad-network preconnect hints.ProductVideo(used byProductPageGallery) now delegates YouTube playback toYoutubeEmbed, so any product whose Magentomedia_gallerycontains a YouTube video entry gets the new lazy-loading player on its product page. Vimeo and self-hosted video paths are unchanged. The Magento preview image is passed as the YoutubeEmbedthumbnailso the visible poster stays consistent with the rest of the gallery.Fix
SidebarGalleryso it forwards theAdditionalandslotPropsfrom each image toMotionImageAspect. Before this fix the gallery silently dropped both props, which meant anyAdditionaloverlay configured byProductPageGallery(the<ProductVideo>overlay with itsPlayCircleand the newYoutubeEmbed) never reached the DOM. That was a latent regression that made all video-gallery entries render as static images, with or without this PR's YouTube changes.Fix
playwright.config.tssonpx playwright testactually loads. The config previously importedexamples/magento-graphcms/next.config.ts, which transitively pulled@graphcommerce/next-config's ESM build into a CJS context and crashed withReferenceError: exports is not defined. Replaced with an opt-inPLAYWRIGHT_LOCALESenv var for the multi-locale projects that the next.config import was meant to drive. (@paales)
@graphcommerce/next-ui@10.1.0-canary.22
Minor Changes
-
#2627
95c188f- AddYoutubeEmbedcomponent — a lightweight lazy-loading YouTube player that defers iframe creation until the user clicks the poster. Uses preconnect on hover for fast playback start and is styled with MUI sx, so no external CSS is required. Supports playlists, no-cookie mode, custom aspect ratios and ad-network preconnect hints.ProductVideo(used byProductPageGallery) now delegates YouTube playback toYoutubeEmbed, so any product whose Magentomedia_gallerycontains a YouTube video entry gets the new lazy-loading player on its product page. Vimeo and self-hosted video paths are unchanged. The Magento preview image is passed as the YoutubeEmbedthumbnailso the visible poster stays consistent with the rest of the gallery.Fix
SidebarGalleryso it forwards theAdditionalandslotPropsfrom each image toMotionImageAspect. Before this fix the gallery silently dropped both props, which meant anyAdditionaloverlay configured byProductPageGallery(the<ProductVideo>overlay with itsPlayCircleand the newYoutubeEmbed) never reached the DOM. That was a latent regression that made all video-gallery entries render as static images, with or without this PR's YouTube changes.Fix
playwright.config.tssonpx playwright testactually loads. The config previously importedexamples/magento-graphcms/next.config.ts, which transitively pulled@graphcommerce/next-config's ESM build into a CJS context and crashed withReferenceError: exports is not defined. Replaced with an opt-inPLAYWRIGHT_LOCALESenv var for the multi-locale projects that the next.config import was meant to drive. (@paales)
@graphcommerce/misc@10.1.0-canary.22
Patch Changes
-
#2627
95c188f- AddYoutubeEmbedcomponent — a lightweight lazy-loading YouTube player that defers iframe creation until the user clicks the poster. Uses preconnect on hover for fast playback start and is styled with MUI sx, so no external CSS is required. Supports playlists, no-cookie mode, custom aspect ratios and ad-network preconnect hints.ProductVideo(used byProductPageGallery) now delegates YouTube playback toYoutubeEmbed, so any product whose Magentomedia_gallerycontains a YouTube video entry gets the new lazy-loading player on its product page. Vimeo and self-hosted video paths are unchanged. The Magento preview image is passed as the YoutubeEmbedthumbnailso the visible poster stays consistent with the rest of the gallery.Fix
SidebarGalleryso it forwards theAdditionalandslotPropsfrom each image toMotionImageAspect. Before this fix the gallery silently dropped both props, which meant anyAdditionaloverlay configured byProductPageGallery(the<ProductVideo>overlay with itsPlayCircleand the newYoutubeEmbed) never reached the DOM. That was a latent regression that made all video-gallery entries render as static images, with or without this PR's YouTube changes.Fix
playwright.config.tssonpx playwright testactually loads. The config previously importedexamples/magento-graphcms/next.config.ts, which transitively pulled@graphcommerce/next-config's ESM build into a CJS context and crashed withReferenceError: exports is not defined. Replaced with an opt-inPLAYWRIGHT_LOCALESenv var for the multi-locale projects that the next.config import was meant to drive. (@paales)
Release 10.1.0-canary.21
@graphcommerce/next-ui@10.1.0-canary.21
Patch Changes
- #2633
7554ad4- Fix:<Fab variant="extended">no longer gets a fixedwidthfromMuiFabSizes. The size-based width/height variants are now scoped tovariant: 'circular'only, so extended Fabs can grow with their label (controlled viamin-widthinstead) as MUI intends. Previously every extended Fab without an explicitsizematched the defaultlargerule and was forced to 54px wide. (@paales)