Release January 20, 2026#2582
Open
github-actions[bot] wants to merge 192 commits into
Open
Conversation
fix: use immediate input value for Enter navigation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
fix: get redirectTo from the url params instead of the headers
0fc4cb5 to
6629180
Compare
…ieve the flags in the middleware as well.
… for plugins. Disabledby default.
Feature/private catalog
…t route Earlier wording suggested adding a `pages/test/<feature>.tsx` demo route counted as a showcase. It does not — that route lives outside the real flow, reviewers don't walk through it, and the integration with the storefront stays unproven. Replace the section with a stricter rule: every feature PR must wire the feature into one of the existing example storefronts so it is visible on a real page (product page, account flow, cart page, etc.). The PR's "Test plan" must name the URL the reviewer opens to see it working, and any backend prerequisites (Magento product config, Hygraph content) must be called out.
…k-with-private-packages docs: clarify type-check workflow with private packages
`SidebarGallery` was spreading only `src`, `width`, `height`, `loading`,
`sx`, `sizes`, and `alt` onto each `MotionImageAspect`. The `Additional`
component and `slotProps` set by `ProductPageGallery` for video entries
were silently dropped, so `<ProductVideo>` (and now `<YoutubeEmbed>`)
never reached the DOM — every gallery video slide rendered as a static
image with no play button at all.
Spread the full `image` props onto `MotionImageAspect` instead, and
merge `image.sx` into the gallery's default `{ display: 'block',
objectFit: 'contain' }` via `sxx` so the per-image `objectFit: 'cover'`
that ProductPageGallery sets for non-image slides also takes effect.
Also: fix playwright.config.ts so `npx playwright test` actually loads.
The previous config imported `examples/magento-graphcms/next.config.ts`,
which transitively pulls `@graphcommerce/next-config`'s ESM build into
a CJS context and crashes Playwright's TS loader with
`ReferenceError: exports is not defined in ES module scope`. The
import was only used to read i18n locales for multi-locale project
generation; replace it with an opt-in `PLAYWRIGHT_LOCALES=nl,de` env
var so the default config no longer touches Next.js internals.
Add the first playwright test for this PR's showcase:
`packages/magento-product/test/youtubeEmbedInGallery.playwright.ts`
navigates to a product with a YouTube video in its media gallery,
asserts that `YoutubeEmbed-root` is present, that the poster comes
from the Magento preview image (not `i.ytimg.com`), that hovering
adds the `<link rel="preconnect">` to YouTube, and that clicking
swaps in the iframe with the expected video id and `autoplay=1`.
`PRODUCT_URL` and `EXPECTED_YOUTUBE_ID` env vars override the
backend-specific defaults.
`npx playwright test` writes `test-results/.last-run.json` (and a full `playwright-report/` on failures) next to the runner. These are local artifacts, not source — exclude them from git.
The existing single-line mention ("E2E tests use Playwright: yarn
playwright") doesn't say where the tests live, how to install the
browsers, how to point them at a non-default port/backend, or that
they require a running storefront. Expand it so new contributors can
actually run the suite (and so it's clear that adding new tests means
dropping a `<feature>.playwright.ts` next to the package).
Also documents the `URL` and `PLAYWRIGHT_LOCALES` env vars used by
`playwright.config.ts` after the ESM-loader fix in PR #2627.
The existing single-line mention ("E2E tests use Playwright: yarn
playwright") doesn't say where the tests live, how to install the
browsers, how to point them at a non-default port/backend, or that
they require a running storefront. Expand it so new contributors can
actually run the suite (and so it's clear that adding new tests means
dropping a `<feature>.playwright.ts` next to the package).
Also documents the `URL` and `PLAYWRIGHT_LOCALES` env vars used by
`playwright.config.ts` after the ESM-loader fix in #2627.
docs: document the playwright e2e workflow
…k-with-private-packages docs: document the playwright e2e workflow
The `parses an env config object` test feeds the env-schema parser `GC_DEMO_MODE='1'`, `GC_STOREFRONT_0_HYGRAPH_LOCALES_0='en'`, and `GC_STOREFRONT_1_HYGRAPH_LOCALES_0='de'`, but the committed snapshot still reflects the pre-`demoMode` / pre-flattened-`hygraphLocales` schema. Every CI run since those config fields were added (and the test input updated) has failed the `test` job on every PR with a snapshot mismatch unrelated to the PR's own changes: Snapshot \`parses an env config object 1\` mismatched + "GC_DEMO_MODE": true, + "GC_STOREFRONT_0_HYGRAPH_LOCALES_0": "en", + "GC_STOREFRONT_1_HYGRAPH_LOCALES_0": "de", Update the snapshot to match the schema. No code change.
test(next-config): regenerate mergeEnvIntoConfig snapshot to unblock CI
Default Fab size is `large` (54px). Without filtering on variant, every `<Fab variant="extended">` without an explicit size matched the `large` rule and got `width: 54px, height: 54px` applied, collapsing extended Fabs to a fixed square regardless of their label. Scope the size variants to `variant: 'circular'` so extended Fabs grow with their label (consumers control the floor via `min-width`).
fix(next-ui): scope MuiFabSizes width/height to circular Fabs
feat(next-ui): add YoutubeEmbed component
Adds a per-storefront storyblokLocale config to map GraphCommerce locales to Storyblok language codes, and refetches stories + global config client-side in the editor's selected language so previews match the editor sidebar regardless of which storefront the page renders in.
cosmiconfig's built-in synchronous TypeScript loader transpiles `graphcommerce.config.ts` to a fixed `.cjs` path on disk and removes it again in the finally block. When Next.js (especially Turbopack) spawns worker processes that load the config concurrently, one process can delete the file while another is still trying to require it — producing panics like "Cannot find module …graphcommerce.config.cjs". Replace the `.ts` loader with one that uses `@swc/core`'s `transformFileSync` and writes to a per-process unique filename: .graphcommerce.tmp.<pid>-<counter>.cjs next to the source. Unique filenames mean concurrent workers can't collide on the temp path; placing it next to the source keeps any relative `require()` in the config resolvable. The file is removed in the finally block as before. No new dependencies and no API change — `loadConfig` stays sync, so all existing callsites (`withGraphCommerce`, the CLI commands, mesh, etc.) keep working unchanged.
…y through Cursor: The issue was a TTY handling bug in graphql-codegen's CLI. When running in Cursor's terminal without a proper TTY: The spinner/progress output was suppressed The exit code was incorrectly set to 1 The fix was to pipe gc-gql-codegen through cat, which forces proper output handling
Sync Storyblok content with the Visual Editor's selected language
Fix/config fixes
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automated release PR from canary branch