release: 2026-06-07#320
Merged
Merged
Conversation
…card images (#317) Drop bg-accent from the PDP desktop grid tiles and bg-muted from the product card image container so product imagery sits flush on the page background. The PDP mobile carousel already had no backing, so the two viewports now match. The product card's no-image fallback keeps its gray box (bg-muted moved onto the fallback div). Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* fix: lint warnings and format issues across template + docs
- Run oxfmt on previously-unformatted files in apps/template
and 2 mdx files in apps/docs (caught by oxfmt --check).
- Add `no-underscore-dangle` allow lists to both .oxlintrc.json
files for names we don't control: __typename (Shopify GraphQL),
__dirname (Node builtin), __registerFileInput (vendored
AI Elements).
- Fix react-hooks/exhaustive-deps warnings in template-owned code:
- agent-panel.tsx: include onOpenChange and triggerRef in the
outside-click effect's deps.
- use-scroll-contain.ts: include ref in deps (refs are stable;
replaces a no-longer-effective oxlint-disable comment).
- cart/context.tsx: add oxlint-disable comments on the unmount
cleanup that intentionally reads ref.current at teardown.
The only remaining warnings are in vendored components/ai-elements
code, left alone by design.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* chore: expand alphabetization rule, apply to shopify operations (#319)
* chore: expand alphabetization rule and apply it across shopify operations
The Ordering rule in apps/template/AGENTS.md previously named only four
things to alphabetize: export specifiers, i18n JSON keys, string union
type members, and config object keys. That left object destructuring
patterns and interface/type properties undefined — and `operations/`
had drifted accordingly.
Update the rule wording to include both, then bring `operations/products.ts`
and `operations/cart.ts` into compliance:
- products.ts: alphabetize all parameter types, destructuring patterns,
and return-shape literals across `buildCatalogQuery`, `fetchCatalogProducts`,
`getSearchFacets`, `searchIndexProducts`, and `getCollectionProducts`.
- cart.ts: alphabetize the `addCartDeliveryAddress`/`updateCartDeliveryAddress`
address parameter types and the `CartShippingOption` type (and the matching
GraphQL response shape + the `.map()` literal that builds it).
Out of scope: GraphQL `variables: { ... }` payloads (they mirror query
variable order) and lib/types.ts type declarations (a separate sweep).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* chore: alphabetize properties in lib/types.ts
Brings the domain-type contract module in line with the alphabetization
rule. Pure interface property reordering (plus FilterType string union)
— no runtime effect; TypeScript doesn't require literal field order to
match type declaration order, so consumers are unaffected.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Credentials come from the Headless sales channel (not Settings → Customer accounts), the client must be Confidential since the template uses a client secret, and the better-auth genericOAuth callback path is /api/auth/oauth2/callback/shopify. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Logout is local-only; the template does not call Shopify's OIDC end_session_endpoint, so the IdP session persists and a later sign-in can silently re-auth. Note the wildcard-free Logout URI requirement for implementing RP-initiated logout. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…profile Replace the stubbed account pages with live Shopify Customer Account API data: paginated order history, order detail, address CRUD, and editable profile. Adds a customerAccountFetch helper plus customer operations, transforms, domain types, and server actions. Updates the auth docs and adds a template-rollout-log entry. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…iscovery The Customer Account API GraphQL endpoint is not served on the storefront domain — that path 302s to an HTML page, so response.json() threw "Unexpected token '<'". Derive the real endpoint (https://shopify.com/{shopId}/account/customer/api/{version}/graphql) from the shop ID in the OIDC issuer, cache it, and surface non-JSON responses with a legible error. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The components/ai-elements directory is vendored shadcn-style code; its upstream exhaustive-deps warning is not ours to own. Ignore it in both the template and docs oxlint configs. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
50 silently truncated products with large variant matrices, leaving some variants unselectable. Raise PRODUCT_FRAGMENT to the Storefront API's 250 max. Updates the PDP and storefront-api docs and adds a rollout-log entry for downstream adoption. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Sitemap index + paged children backed by Shopify's Storefront sitemap(type:) query — the model Hydrogen uses. Each child holds ≤250 entries.
- New URLs: /sitemap.xml (index) + /sitemap/{static,products-{n},collections-{n}}.xml (children)
- Implemented as route handlers to avoid colliding with Next.js's reserved /sitemap.xml metadata route
- Adds a Sitemap anatomy docs page
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.
Release branch.
Template
Docs
Chores