Release January 20, 2026#2582
Open
github-actions[bot] wants to merge 204 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
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
… customization of the header
…w local LayoutDefault in new LayoutNavigation Unchaged for now (except import paths). Changes coming in next commits.
… components
LayoutNavigation was a big file that mixed the navigation overlay,
the header content, and the layout shell.
Customizing the header — sticky behavior, owning the container styling,
or adding a beforeHeader slot — required forking the whole file or
copying chunks of @graphcommerce/next-ui's LayoutDefault.
The header is now four reusable pieces:
- HeaderContainer the <Container component='header'> wrapper, lifted
out of LayoutDefault so each project owns its
header container.
- Header the header content (Logo, DesktopNavBar,
DesktopNavActions, MobileTopRight).
- MenuOverlay the NavigationProvider + NavigationOverlay.
- LayoutDefault a local copy that renders the `header` slot raw,
since the wrapping now lives in HeaderContainer.
Keeping LayoutDefault as a project-local copy makes the layout shell
itself customizable: tweaking the grid, the fab container, the
beforeHeader slot or the sticky behavior no longer requires patching
@graphcommerce/next-ui or copying the file — the example owns it.
Combined with the extracted Header / MenuOverlay / HeaderContainer,
projects can override any single piece without forking the rest.
LayoutNavigation becomes a slim orchestrator that composes them.
LayoutMinimal is updated to use the same local LayoutDefault +
HeaderContainer so both layouts share the canonical header pattern.
There is no visual change:
HeaderContainer carries the same styling that the
header slot of next-ui's LayoutDefault used to apply.
…tion Feature/layout navigation
Blog pages never fetched the global config in getStaticProps, so GlobalConfigProvider received undefined and the footer rendered empty. Add fetchGlobalConfig + globalConfig prop to the blog index/post/tagged pages, matching the pattern in pages/[...url].tsx.
…content fix: fetch globalConfig on blog pages so global content renders
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