From 84c0d5c2aa6ce1f0b70138d8cfd46c7d88fc2adf Mon Sep 17 00:00:00 2001 From: Vivek Aggarwal Date: Fri, 17 Jul 2026 22:21:25 +1000 Subject: [PATCH 1/5] feat(promotions): PROMO-1574 add featured promotions callout on homepage (#3108) * feat(promotions): PROMO-1574 add featured promotions callout on homepage * feat(promotions): PROMO-1574 resolve moreOffers label inline in productCard --- .changeset/promo-1574-promotion-callouts-homepage.md | 5 +++++ core/app/[locale]/(default)/page.tsx | 4 ++-- core/messages/en.json | 3 +++ core/vibes/soul/primitives/product-card/index.tsx | 7 ++++--- 4 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 .changeset/promo-1574-promotion-callouts-homepage.md diff --git a/.changeset/promo-1574-promotion-callouts-homepage.md b/.changeset/promo-1574-promotion-callouts-homepage.md new file mode 100644 index 000000000..2fce16936 --- /dev/null +++ b/.changeset/promo-1574-promotion-callouts-homepage.md @@ -0,0 +1,5 @@ +--- +"@bigcommerce/catalyst-core": minor +--- + +Show featured promotion callouts on the homepage product cards (featured and newest carousels), consistent with the existing PDP and PLP callouts. diff --git a/core/app/[locale]/(default)/page.tsx b/core/app/[locale]/(default)/page.tsx index 6bbb776ec..a9789c91a 100644 --- a/core/app/[locale]/(default)/page.tsx +++ b/core/app/[locale]/(default)/page.tsx @@ -56,7 +56,7 @@ export default async function Home({ params }: Props) { showOutOfStockMessage ? defaultOutOfStockMessage : undefined, showBackorderMessage, taxDisplay, - ).map((p) => ({ ...p, promotions: undefined })); + ); }); const streamableNewestProducts = Streamable.from(async () => { @@ -74,7 +74,7 @@ export default async function Home({ params }: Props) { showOutOfStockMessage ? defaultOutOfStockMessage : undefined, showBackorderMessage, taxDisplay, - ).map((p) => ({ ...p, promotions: undefined })); + ); }); const streamableShowNewsletterSignup = Streamable.from(async () => { diff --git a/core/messages/en.json b/core/messages/en.json index 1f8aaf3c4..d77e80e04 100644 --- a/core/messages/en.json +++ b/core/messages/en.json @@ -568,6 +568,9 @@ "search": "Search" }, "Components": { + "ProductCard": { + "moreOffers": "+{count, plural, =1 {# more offer} other {# more offers}}" + }, "Header": { "home": "Home", "toggleNavigation": "Toggle navigation", diff --git a/core/vibes/soul/primitives/product-card/index.tsx b/core/vibes/soul/primitives/product-card/index.tsx index 3bbf9bd55..b3b2a8943 100644 --- a/core/vibes/soul/primitives/product-card/index.tsx +++ b/core/vibes/soul/primitives/product-card/index.tsx @@ -1,4 +1,5 @@ import { clsx } from 'clsx'; +import { useTranslations } from 'next-intl'; import { Content as CalloutContent, Description as CalloutDescription, @@ -40,7 +41,6 @@ export interface ProductCardProps { imageSizes?: string; compareLabel?: string; compareParamName?: string; - moreOffersLabel?: string; product: Product; showRating?: boolean; } @@ -88,10 +88,11 @@ export function ProductCard({ aspectRatio = '5:6', compareLabel, compareParamName, - moreOffersLabel = 'more offers', imagePriority = false, imageSizes = '(min-width: 80rem) 20vw, (min-width: 64rem) 25vw, (min-width: 42rem) 33vw, (min-width: 24rem) 50vw, 100vw', }: ProductCardProps) { + const t = useTranslations('Components.ProductCard'); + return (
{promotions.length > 1 && ( - +{promotions.length - 1} {moreOffersLabel} + {t('moreOffers', { count: promotions.length - 1 })} )} From 064d1eeaa2849cb7c41c4d054b1f3ab2589de882 Mon Sep 17 00:00:00 2001 From: Jorge Moya Date: Fri, 17 Jul 2026 09:03:04 -0500 Subject: [PATCH 2/5] fix(ci): complete latest started Linear release instead of by version (#3115) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The `Complete Linear release` step passed `version` to linear-release-action`s `complete`, which looks up an existing release with that exact version. The `catalyst-release` pipeline is a scheduled pipeline whose started release is unversioned (the accumulating `sync` steps run without a version), so the lookup never matched and the step failed on every publish with `No release found with version "..."` — on both canary (catalyst-core) and integrations/makeswift (catalyst-makeswift). Drop the `version` input so `complete` finalizes the latest started release, i.e. the one `sync` has been accumulating into. Release notes are still fetched by tag and passed through. Refs LTRAC-1265 Co-authored-by: Claude Opus 4.8 (1M context) --- .github/workflows/changesets-release.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/changesets-release.yml b/.github/workflows/changesets-release.yml index bae05ce28..37121218b 100644 --- a/.github/workflows/changesets-release.yml +++ b/.github/workflows/changesets-release.yml @@ -93,5 +93,10 @@ jobs: with: access_key: ${{ secrets.LINEAR_ACCESS_KEY }} command: complete - version: ${{ steps.headline.outputs.tag }} + # No `version`: the `catalyst-release` pipeline is a scheduled pipeline + # whose started release is unversioned (the accumulating `sync` steps + # above run without a version). Passing `version` makes `complete` look + # up an existing release with that exact version, which never exists and + # fails with `No release found with version "…"`. Omitting it completes + # the latest started release — the one sync has been accumulating into. release_notes: /tmp/release-notes.md From 3cbfcb318e2abcd52efb32e68fc5401aabb85a62 Mon Sep 17 00:00:00 2001 From: Jordan Arldt Date: Fri, 17 Jul 2026 11:47:29 -0500 Subject: [PATCH 3/5] TRAC-1250: Add missing storefront_api scope to device login flow (#3116) --- packages/catalyst/src/cli/lib/auth.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/catalyst/src/cli/lib/auth.ts b/packages/catalyst/src/cli/lib/auth.ts index ef75cd96c..de185ed08 100644 --- a/packages/catalyst/src/cli/lib/auth.ts +++ b/packages/catalyst/src/cli/lib/auth.ts @@ -5,11 +5,13 @@ import { httpError } from './http-errors'; export const DEVICE_OAUTH_CLIENT_ID = 'b8063bu6hhml4e0lqh22yut63atsbyv'; export const DEVICE_OAUTH_SCOPES = [ 'store_v2_information', + 'store_storefront_api', 'store_infrastructure_deployments_manage', 'store_infrastructure_logs_read_only', 'store_infrastructure_projects_manage', 'store_channel_settings', ].join(' '); + export const DEFAULT_LOGIN_URL = 'https://login.bigcommerce.com'; export const DeviceCodeResponseSchema = z.object({ From bd721106dbded48e823acad6548019d1210258f6 Mon Sep 17 00:00:00 2001 From: Jordan Arldt Date: Fri, 17 Jul 2026 16:27:46 -0500 Subject: [PATCH 4/5] TRAC-1250: Add additional scopes missing from CLI create command (#3119) * TRAC-1250: Add additional scopes missing from CLI create command * TRAC-1250: Add changeset --- .changeset/trac-1250-cli-create-scopes.md | 5 +++++ packages/catalyst/src/cli/lib/auth.ts | 3 +++ 2 files changed, 8 insertions(+) create mode 100644 .changeset/trac-1250-cli-create-scopes.md diff --git a/.changeset/trac-1250-cli-create-scopes.md b/.changeset/trac-1250-cli-create-scopes.md new file mode 100644 index 000000000..aceb85608 --- /dev/null +++ b/.changeset/trac-1250-cli-create-scopes.md @@ -0,0 +1,5 @@ +--- +"@bigcommerce/catalyst": patch +--- + +Add `store_v2_products`, `store_v2_content`, and `store_sites` OAuth scopes so `catalyst create` no longer errors when creating a new channel with sample data. diff --git a/packages/catalyst/src/cli/lib/auth.ts b/packages/catalyst/src/cli/lib/auth.ts index de185ed08..1eea0fc66 100644 --- a/packages/catalyst/src/cli/lib/auth.ts +++ b/packages/catalyst/src/cli/lib/auth.ts @@ -5,6 +5,9 @@ import { httpError } from './http-errors'; export const DEVICE_OAUTH_CLIENT_ID = 'b8063bu6hhml4e0lqh22yut63atsbyv'; export const DEVICE_OAUTH_SCOPES = [ 'store_v2_information', + 'store_v2_products', + 'store_v2_content', + 'store_sites', 'store_storefront_api', 'store_infrastructure_deployments_manage', 'store_infrastructure_logs_read_only', From 75724656c9edc1ee662aadd49de2909fdfc10dfa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 17 Jul 2026 17:31:18 -0500 Subject: [PATCH 5/5] Version Packages (`canary`) (#3117) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/promo-1574-promotion-callouts-homepage.md | 5 ----- .changeset/trac-1250-cli-create-scopes.md | 5 ----- core/CHANGELOG.md | 6 ++++++ core/package.json | 6 +++--- packages/catalyst/CHANGELOG.md | 6 ++++++ packages/catalyst/package.json | 2 +- packages/create-catalyst/CHANGELOG.md | 7 +++++++ packages/create-catalyst/package.json | 2 +- 8 files changed, 24 insertions(+), 15 deletions(-) delete mode 100644 .changeset/promo-1574-promotion-callouts-homepage.md delete mode 100644 .changeset/trac-1250-cli-create-scopes.md diff --git a/.changeset/promo-1574-promotion-callouts-homepage.md b/.changeset/promo-1574-promotion-callouts-homepage.md deleted file mode 100644 index 2fce16936..000000000 --- a/.changeset/promo-1574-promotion-callouts-homepage.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@bigcommerce/catalyst-core": minor ---- - -Show featured promotion callouts on the homepage product cards (featured and newest carousels), consistent with the existing PDP and PLP callouts. diff --git a/.changeset/trac-1250-cli-create-scopes.md b/.changeset/trac-1250-cli-create-scopes.md deleted file mode 100644 index aceb85608..000000000 --- a/.changeset/trac-1250-cli-create-scopes.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@bigcommerce/catalyst": patch ---- - -Add `store_v2_products`, `store_v2_content`, and `store_sites` OAuth scopes so `catalyst create` no longer errors when creating a new channel with sample data. diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index ef30176cd..036b0d1b2 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 1.10.0 + +### Minor Changes + +- [#3108](https://github.com/bigcommerce/catalyst/pull/3108) [`84c0d5c`](https://github.com/bigcommerce/catalyst/commit/84c0d5c2aa6ce1f0b70138d8cfd46c7d88fc2adf) Thanks [@bc-vivekaggarwal](https://github.com/bc-vivekaggarwal)! - Show featured promotion callouts on the homepage product cards (featured and newest carousels), consistent with the existing PDP and PLP callouts. + ## 1.9.0 ### Minor Changes diff --git a/core/package.json b/core/package.json index cefa981a2..417bc4311 100644 --- a/core/package.json +++ b/core/package.json @@ -1,10 +1,10 @@ { "name": "@bigcommerce/catalyst-core", "description": "BigCommerce Catalyst is a Next.js starter kit for building headless BigCommerce storefronts.", - "version": "1.9.0", + "version": "1.10.0", "catalyst": { - "version": "1.9.0", - "ref": "@bigcommerce/catalyst-core@1.9.0" + "version": "1.10.0", + "ref": "@bigcommerce/catalyst-core@1.10.0" }, "private": true, "engines": { diff --git a/packages/catalyst/CHANGELOG.md b/packages/catalyst/CHANGELOG.md index c74b12620..d8e665e80 100644 --- a/packages/catalyst/CHANGELOG.md +++ b/packages/catalyst/CHANGELOG.md @@ -1,5 +1,11 @@ # @bigcommerce/catalyst +## 1.1.1 + +### Patch Changes + +- [#3119](https://github.com/bigcommerce/catalyst/pull/3119) [`bd72110`](https://github.com/bigcommerce/catalyst/commit/bd721106dbded48e823acad6548019d1210258f6) Thanks [@jordanarldt](https://github.com/jordanarldt)! - Add `store_v2_products`, `store_v2_content`, and `store_sites` OAuth scopes so `catalyst create` no longer errors when creating a new channel with sample data. + ## 1.1.0 ### Minor Changes diff --git a/packages/catalyst/package.json b/packages/catalyst/package.json index 3d6544f82..631832898 100644 --- a/packages/catalyst/package.json +++ b/packages/catalyst/package.json @@ -1,6 +1,6 @@ { "name": "@bigcommerce/catalyst", - "version": "1.1.0", + "version": "1.1.1", "type": "module", "repository": { "type": "git", diff --git a/packages/create-catalyst/CHANGELOG.md b/packages/create-catalyst/CHANGELOG.md index 15ad54d2f..f90f3dcac 100644 --- a/packages/create-catalyst/CHANGELOG.md +++ b/packages/create-catalyst/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## 2.0.2 + +### Patch Changes + +- Updated dependencies [[`bd72110`](https://github.com/bigcommerce/catalyst/commit/bd721106dbded48e823acad6548019d1210258f6)]: + - @bigcommerce/catalyst@1.1.1 + ## 2.0.1 ### Patch Changes diff --git a/packages/create-catalyst/package.json b/packages/create-catalyst/package.json index b99202e55..2e3a6ab0d 100644 --- a/packages/create-catalyst/package.json +++ b/packages/create-catalyst/package.json @@ -1,6 +1,6 @@ { "name": "@bigcommerce/create-catalyst", - "version": "2.0.1", + "version": "2.0.2", "repository": { "type": "git", "url": "https://github.com/bigcommerce/catalyst",