Skip to content

Release: Catalyst CLI 1.0.0 and create-catalyst 2.0.0 (merge alpha → canary)#3077

Merged
jorgemoya merged 90 commits into
canaryfrom
alpha
Jul 1, 2026
Merged

Release: Catalyst CLI 1.0.0 and create-catalyst 2.0.0 (merge alpha → canary)#3077
jorgemoya merged 90 commits into
canaryfrom
alpha

Conversation

@jorgemoya

Copy link
Copy Markdown
Contributor

What/Why?

Merges the alpha branch into canary to stage the first stable release of the Catalyst CLI and the major rewrite of create-catalyst. alpha has been rebased onto the current canary, so this is a linear, conflict-free merge.

Staged package releases (highest bump per package across queued changesets):

Package Current Bump Result
@bigcommerce/catalyst (CLI) 1.0.0-alpha.6 major 1.0.0
@bigcommerce/create-catalyst 1.0.3 major 2.0.0

Headlines:

  • @bigcommerce/catalyst graduates from alpha to its first stable 1.0.0 — the consolidated CLI for building/deploying Catalyst to BigCommerce Native Hosting (auth, project, build, deploy, start, logs tail, upgrade, telemetry). See .changeset/alpha-release-notes.md for the full command surface.
  • @bigcommerce/create-catalyst2.0.0 — reduced to a thin wrapper that delegates to catalyst create. The init, integration, and standalone telemetry subcommands are removed (use catalyst channel link / catalyst telemetry).

⚠️ Before merging — exit changeset pre mode

This branch is in changeset prerelease mode: it adds .changeset/pre.json (mode: pre, tag: alpha) to canary. If merged as-is, canary inherits alpha pre mode and the Version Packages step will produce 1.0.0-alpha.7 / 2.0.0-alpha.0 instead of stable versions.

Required: run pnpm changeset pre exit and commit the pre.json removal (either onto this branch before merge, or as the first action after merge and before the Version Packages PR is versioned) so the release resolves to stable 1.0.0 / 2.0.0.

Testing

  • CLI alpha builds (1.0.0-alpha.11.0.0-alpha.6) have been dogfooded through the full auth → project → build → deploy → logs flow against Native Hosting.
  • After merge, verify the auto-generated Version Packages PR shows @bigcommerce/catalyst@1.0.0 and @bigcommerce/create-catalyst@2.0.0 (not -alpha.*) — that confirms pre mode was exited correctly.

Migration

@bigcommerce/create-catalyst@2.0.0 is a breaking change: create-catalyst init, create-catalyst integration, and the standalone create-catalyst telemetry subcommands are removed. pnpm create catalyst / npx create-catalyst still scaffold a project (now via catalyst create); use catalyst channel link and catalyst telemetry for the removed subcommands.

chanceaclark and others added 30 commits July 1, 2026 14:31
Deploy now runs the Catalyst build pipeline before bundling, so users
no longer need to manually run `catalyst build && catalyst deploy`.
skip build step when --prebuilt is passed; fail with actionable error
when .bigcommerce/dist/ is missing or empty.
* feat(cli): map ignition error codes to actionable messages
* feat(cli): add crash reporting with trace ids

Centralized error handling via withErrorHandler HOF, singleton telemetry
with UUID trace ids, X-Correlation-Id headers on all API calls, and
global uncaught exception handlers. On any CLI error, a trace ID is
displayed for support debugging.

* refactor(cli): remove traceId() and trackError() abstractions

* fix(cli): update deploy tests to match error handler string output

The error handler extracts the message string from Error objects before
passing to consola.error, so tests should expect strings, not Error objects.

* refactor(cli): move error handling from per-command HOF to top-level try/catch

Replace the withErrorHandler() HOF pattern with a single try/catch
around program.parseAsync() in the entry point. This makes error
handling automatic for all commands instead of requiring each command
author to remember to wrap their action.

- Add commandName property to Telemetry, set by preAction hook via
  Commander's actionCommand parameter
- Delete error-handler.ts and its spec
- Update tests to assert error propagation via rejects.toThrow()

* fix(cli): address PR feedback on error handling

- Remove redundant closeAndFlush() from try block (postAction hook
  already handles it)
- Only show trace ID when telemetry is enabled; prompt disabled users
  to enable telemetry without showing an unlookable trace ID

* fix(cli): wrap entry point in IIFE for module compatibility
OAuth device code flow for browser-based authentication.
Stores credentials in .bigcommerce/project.json.
…tility (#2888)

Add resolveCredentials() that resolves storeHash/accessToken from flags,
env vars, or stored config, with unified error message mentioning
`catalyst auth login`. Apply to project create/list/link and deploy.
users should run next dev directly instead
start command now only runs opennextjs-cloudflare preview.
vanilla next.js users should run next start directly.
jorgemoya and others added 11 commits July 1, 2026 14:31
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…reate (#3061)

Merchants now receive a clean standalone project instead of the full
monorepo. `catalyst create` downloads the core/ subdirectory as a tarball
from GitHub's codeload endpoint and stream-extracts it to the project root,
resolves workspace: dependencies to their published npm versions, detects
the invoking package manager (npm/pnpm/yarn/bun) from npm_config_user_agent,
and initializes a fresh git repository.

Previously create cloned the entire bigcommerce/catalyst monorepo (full
history, packages/*, turbo) and built the workspace packages locally. The
core/ contents are now flattened to the project root, so deploy/project/
commerce-hosting no longer assume a core/ subdirectory.

Refs LTRAC-468

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Adds the foundational layer for `catalyst upgrade`: small fs utilities, ref parsing, base-version similarity scoring, and the per-file 3-way merge engine (`git merge-file`).

Refs TRAC-924
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Adds the whole-tree merge engine (`git merge-tree --write-tree`) as the default strategy, plus `applyIndexState` which registers conflicts as real unmerged index entries so editors surface the merge UI.

Refs TRAC-925
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
…d tests

Completes the `catalyst upgrade` command: project layout detection, tarball download/cache, base ref resolution, the full CLI action, and the integration and action-level test suite.

Refs TRAC-926, TRAC-927
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
* TRAC-499: feat - implement query logs in catalyst cli

* TRAC-499: test - implement tests for query logs
…catalyst create` (#3053)

* LTRAC-910: ref(cli) - Reduce create-catalyst to a thin wrapper over `catalyst create`

create-catalyst now delegates to `@bigcommerce/catalyst`: its entry resolves the
catalyst bin from its own dependency tree and spawns `catalyst create`,
forwarding all args (stdio inherited, exit code and signals propagated). All
scaffolding logic now lives in @bigcommerce/catalyst.

- Add @bigcommerce/catalyst as a workspace dependency; drop the ~20 runtime deps
  the old in-package commands needed.
- Delete the duplicated commands/, utils/, prompts/, and hooks/.
- Bump the tsup target to node24 so esbuild preserves `import.meta.url`.

Package name and `bin` are unchanged, so `pnpm create catalyst` / `npx
create-catalyst` keep working. The dropped init/integration/telemetry
subcommands are superseded by `catalyst channel link`, (integration dropped),
and `catalyst telemetry`.

Refs LTRAC-910
Co-Authored-By: Claude <noreply@anthropic.com>

* LTRAC-910: chore - Add changeset for create-catalyst thin wrapper

Refs LTRAC-910
Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
* LTRAC-988: feat(cli) - Add custom domain command

Add a domains command group with a create-domain API client and wait support for pending domain verification.

Refs LTRAC-988

* LTRAC-988: fix(cli) - Clarify domain API server errors

Include the HTTP status and correlation ID when domain API requests fail with a server-side response so 502 Bad Gateway errors are actionable.

Refs LTRAC-988

* LTRAC-988: fix(cli) - Avoid duplicate correlation ID

Keep domain API server error messages concise because the CLI fatal error handler already prints the correlation ID for support.

Refs LTRAC-988
Add domain listing support with optional domain and verification-status filters so users can scan configured Native Hosting domains from the CLI.

Refs LTRAC-989
Add a domains status command that fetches one domain, renders its color-coded state, and can wait for pending verification to finish.

Refs LTRAC-990
Add a domains remove command that checks current status, confirms active domain removal, and deletes the domain through the Native Hosting API.

Refs LTRAC-991
@vercel

vercel Bot commented Jul 1, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
catalyst Ready Ready Preview, Comment Jul 1, 2026 9:39pm

Request Review

@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Bundle Size Report

Comparing against baseline from 81b88df (2026-07-01).

No bundle size changes detected.

Collapse the 11 individual @bigcommerce/catalyst changesets accumulated
across the alpha prerelease series into one comprehensive major changeset
so the stable 1.0.0 changelog reads as a single release announcement.
Refresh the command surface to include create, channel, env, domains, and
upgrade. No change to the resulting version bump (still major -> 1.0.0).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Jul 1, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 1a8f688

The changes in this PR will be included in the next version bump.

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

Run `changeset pre exit` so the Version Packages step produces stable
versions (@bigcommerce/catalyst 1.0.0, @bigcommerce/create-catalyst 2.0.0)
instead of continuing the 1.0.0-alpha.* prerelease series.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Infrastructure API 403 error messages told users to reach out 'if you
are part of the alpha'. The Native Hosting program is now in beta, so
update the copy across project, domains, and logs error paths (and the
matching test assertions).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Use `catalyst project`, `catalyst auth`, `catalyst logs`, and
`catalyst channel` in the release-note command table instead of listing
each subcommand row, for a more concise changelog.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jorgemoya
jorgemoya marked this pull request as ready for review July 1, 2026 21:43
@jorgemoya
jorgemoya requested a review from a team as a code owner July 1, 2026 21:43
@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Unlighthouse Performance Comparison — Vercel

Comparing PR preview deployment Unlighthouse scores vs production Unlighthouse scores.

Summary Score

Aggregate score across all categories as reported by Unlighthouse.

Prod Desktop Prod Mobile Preview Desktop Preview Mobile
Score 90 93 92 94

Category Scores

Category Prod Desktop Prod Mobile Preview Desktop Preview Mobile
Performance 73 85 76 89
Accessibility 95 92 95 92
Best Practices 100 100 100 100
SEO 88 100 100 100

Core Web Vitals

Metric Prod Desktop Prod Mobile Preview Desktop Preview Mobile
LCP 4.8 s 4.4 s 3.6 s 3.8 s
CLS 0.04 0 0.001 0
FCP 1.2 s 1.1 s 1.2 s 1.1 s
TBT 0 ms 0 ms 0 ms 0 ms
Max Potential FID 50 ms 50 ms 40 ms 50 ms
Time to Interactive 4.9 s 4.4 s 3.6 s 3.8 s

Full Unlighthouse report →

import { getWranglerConfig } from '../lib/wrangler-config';

const WRANGLER_VERSION = '4.24.3';
const WRANGLER_VERSION = '4.90.0';

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🍹 We should probably provide a CLI flag to be able to build with a different wrangler version.

.addCommand(channel)
.addCommand(auth)
.addCommand(upgrade)
.addCommand(telemetry)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🍹 We might want to add a debug command that merchants can provide us with any bug issues.

@jorgemoya
jorgemoya added this pull request to the merge queue Jul 1, 2026
Merged via the queue into canary with commit a45ab43 Jul 1, 2026
23 of 25 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants