# Release Notes

New features, improvements, and fixes across the Agentic B2C Developer Toolkit.

## September 15, 2026

MCP 3.0.1

### MCP

- Restore `--allow-non-ga-tools` as a deprecated no-op so existing MCP configurations continue to start after upgrading. The server logs a warning that the flag can be removed; tool availability is unchanged. [#684](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/684)

[@salesforce/b2c-dx-mcp@3.0.1](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/%40salesforce/b2c-dx-mcp%403.0.1)

CLI 2.0.0 · IDE Extension 1.2.0 · MCP 3.0.0 · Agent Skills 1.9.0 · TypeScript SDK 2.0.0

### CLI, Agent Skills, TypeScript SDK

- De-conflict short flags on the `mrt` command surface so each `-x` means one thing: (Thanks [@kieran-sf](https://github.com/kieran-sf)!)
  - `--cloud-origin` moved from `-o` to `-u`, freeing `-o` for `--organization` (`mrt project create` / `list`) and `--output` (`mrt bundle download`) — which previously shadowed the base flag. **Breaking:** update any scripts passing `-o` for the cloud origin; the long form `--cloud-origin` is unchanged.
  - `mrt project notification create` / `update`: `--target` (the notification's target-environment list) now also accepts `--environment` / `-e` as aliases, since a notification target _is_ an environment. These two commands no longer expose the standalone single-value `--environment` flag — it was unused there and its `--target` alias collided with the command's own `--target`. [#676](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/676)

- Add `storefront` as an alias for `project` across the `mrt` command surface, matching the terminology of the SCAPI MRT API. `b2c mrt storefront <cmd>` now works identically to `b2c mrt project <cmd>` (including the `member` and `notification` subtopics), and `--storefront` / `-s` are accepted anywhere `--project` / `-p` is. The new `MRT_STOREFRONT` / `SFCC_MRT_STOREFRONT` environment variables act as fallbacks for `MRT_PROJECT` / `SFCC_MRT_PROJECT`. The `project` / `--project` (`-p`) forms and the existing `MRT_PROJECT` variables continue to work unchanged. (Thanks [@kieran-sf](https://github.com/kieran-sf)!)
  
  `-s` now uniformly means `--project` / `--storefront` on **every** `mrt` command. To make that consistent, two commands changed their own short flags (**breaking**):
  - `mrt project create` no longer has a `--slug` flag. Set the new project's slug with `--project` / `--storefront` (`-p` / `-s`) instead — e.g. `b2c mrt project create "My Storefront" -o my-org -s my-storefront`. When omitted, MRT auto-generates the slug from the name (unchanged). **Update any scripts using `--slug`.**
  - `mrt bundle save` moved `--save-dir` from `-s` to `-d`, freeing `-s` for the storefront alias. **Update any scripts using `-s` for the save directory** (the long form `--save-dir` is unchanged).
  
  `mrt project get`, `update`, and `delete` accept the project slug **either** as a positional argument **or** via `--project` / `--storefront` (`-p` / `-s`; also honoring `MRT_PROJECT` and `dw.json`). Symmetrically, `mrt env create` and `mrt env delete` now accept the environment slug **either** as a positional argument **or** via `--environment` / `-e` (also honoring `MRT_ENVIRONMENT` and `dw.json`). An explicit positional still wins when both are given.
  
  Error messages surface the alias too: the "MRT project is required" errors now mention `--project` / `--storefront` (`-p` / `-s`), and passing a flag twice through an alias (e.g. `-p x -s y`) now reports which long and short forms refer to the same flag instead of the bare "can only be specified once".
  
  On the `mrt project notification` commands, `--environment` (`-e`) is now the primary flag for specifying environments (previously `--target`), matching the rest of the `mrt` surface. `--target` / `-t` are retained as aliases so existing scripts keep working, and command output and `--help` now say "environment" / "Environments" rather than "target". `notification list` follows suit with an `--environment` filter and an `Environments` column. [#676](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/676)

- Add a `--mrt-backend` flag (`auto` | `legacy` | `scapi`, default `auto`; also `MRT_BACKEND` env var or `mrtBackend` in `dw.json`) to `b2c mrt` commands. It lets `mrt bundle history` and `mrt bundle deploy <bundleId>` run over the SCAPI Storefront Deployments API (OAuth, scopes `sfcc.storefront.deployments[.rw]`) instead of the legacy MRT Cloud API (per-user API key). `auto` prefers SCAPI when `--short-code`/`--tenant-id` and client-credentials or JWT Bearer auth are configured, otherwise uses legacy, and falls back to legacy on safe pre-execution errors (surfacing the SCAPI error instead when no legacy credentials are configured, so the real failure isn't masked); `scapi` never silently falls back. All other MRT commands — and `mrt bundle deploy`'s local-build push path — remain on the legacy backend. (Thanks [@kieran-sf](https://github.com/kieran-sf)!)
  
  Under `--json`, these commands return the serving backend's native response verbatim (legacy `{count, next, previous, deployments}` vs SCAPI `{limit, offset, total, data}`) — the human-readable table is normalized across backends, but `--json` is not, so pin `legacy` or `scapi` when a script needs a stable shape. Legacy-only flags (`--api-key`, `--cloud-origin`, `--credentials-file`) now print a warning under `--mrt-backend scapi` (where the legacy backend that honors them never runs). `--project` also gains a `--storefront` / `-s` alias for the SCAPI storefront ID. [#662](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/662)

- Add `b2c mrt bundle upload-v2` for building and uploading v2-format Managed Runtime bundles. The v2 archive is a gzip tar whose files live under a configurable root directory (default `bld/`) with the SSR configuration written inside the archive at `{root-dir}/{config-path}` (default `bld/.mrt/config.json`), uploaded as multipart/form-data. This command is upload-only — deploy the returned bundle ID with `b2c mrt bundle deploy <bundleId> -e <env>`. Every server-side parameter (root dir, config path, match mode, SSR patterns/parameters, dependencies, and CC overrides) is exposed as a flag. The SDK adds matching `createBundleV2`, `pushBundleV2`, and `uploadBundleV2` operations. (Thanks [@kieran-sf](https://github.com/kieran-sf)!)
  
  Bundle commands now read SSR configuration (`ssrOnly`/`ssrShared`/`ssrParameters`) from `config.server.ts` in the project directory, loaded straight from source, so it no longer needs to be compiled into the build output. Use `--project-directory` to point at a project other than the current directory (a compiled `config.server.js`/`config.server.mjs` and the legacy `build/config.server.js` are still accepted). For `upload-v2`, an on-disk v2 config file (`{build-dir}/{config-path}`) still takes precedence when present; command flags override the resolved values per key. The SDK's `createBundle`/`createBundleV2` gain a `projectDirectory` option for this.
  
  Bundles now include the project's declared dependencies as bundle metadata (v1 `bundle_metadata.dependencies`; v2 `bundleMetadata.dependencies` inside the archive config), derived from the project `package.json` (`dependencies` + `devDependencies`) — matching pwa-kit/storefront-next. Explicitly provided dependencies (v2 `--dependencies`) or dependencies already present in the v2 config file take precedence; collection is best-effort and never blocks a bundle if `package.json` is missing or unreadable. [#646](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/646)

- Detect deprecated OCAPI instances and guide users to SCAPI. (Thanks [@clavery](https://github.com/clavery)!)
  
  When an instance has OCAPI disabled, `code`, `job`, `bm`, `sites`, and `cap` commands now fail with an actionable message — naming the exact SCAPI scope the operation needs (e.g. `sfcc.scripts` / `sfcc.scripts.rw`) — instead of an opaque "Failed to ..." error. Documentation and agent skills for `code`, `job`, and `bm` are now SCAPI-first, presenting OCAPI as the deprecated fallback. [#413](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/413)

- Allow SLAS client `get`, `update`, `delete`, and `open` commands to use the configured SLAS client ID when their positional client ID is omitted, while keeping the positional value as an explicit override. [#642](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/642)

### CLI, IDE Extension, Agent Skills, TypeScript SDK

- Migrate `job`, `code`, `bm users`, `bm roles`, `sites`, and catalog discovery to SCAPI-first operation with a temporary OCAPI compatibility fallback. `auto` tries SCAPI when its coordinates and stateless authentication are available, pins the selected backend for multi-request operations, and falls back only on safe capability/auth/request rejections. Site cartridge-path writes, portable BM user search, disabled-user updates, system-job triggers, SDK/CLI/MCP code-version discovery, and VS Code jobs/code/catalog surfaces now participate. Inventory-list enumeration, BM `whoami`, access-key administration, and raw OCAPI user-search JSON remain temporary OCAPI compatibility operations because the current live SCAPI schemas have no equivalent. Explicit SCAPI mode rejects these operations before contacting OCAPI and identifies B2C Commerce release 26.8 as the current capability baseline. (Thanks [@clavery](https://github.com/clavery)!)
  
  `setup instance create` accepts optional SCAPI coordinates for SCAPI-first active-code-version detection. They are not required in `auto`; missing coordinates select OCAPI, and failed interactive detection reports the reason before allowing manual entry.
  
  This is a major release because JSON/results can change shape during the migration. `job run`, `job wait`, and `job search` return canonical camelCase fields with either backend, including OCAPI fallback; consumers must update fields such as `execution_status` to `executionStatus`. Other commands can retain backend-specific shapes, for which explicitly selecting OCAPI preserves the legacy shape. SDK high-level code helpers accept an explicit scripts backend; dual-backend factories and `JobsCompatibilityBackend` expose reusable fallback without making implicit backend selection an SDK-wide policy.
  
  SCAPI currently requires client-credentials or JWT Bearer authentication. Browser-based user auth continues through OCAPI/WebDAV and is selected by `auto`; explicit SCAPI with user auth errors clearly until the platform adds support.
  
  GitHub Action v2 adopts CLI 2.x and its camelCase job results. Existing `@v1` workflows remain on the maintained CLI 1.x line, preserving the OCAPI behavior and legacy result shapes of operations migrated in CLI 2 until consumers update their Action references to `@v2`. CLI 1.x commands designed specifically for SCAPI continue to use SCAPI.
  
  The VS Code extension uses configured tenant IDs consistently in API Browser, keeps partial export discovery warnings in the output log instead of showing notifications, and supports JWT-authenticated OCAPI fallback equivalently to client credentials. [#413](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/413)

### CLI, MCP, Agent Skills, TypeScript SDK

- Add b2c-ops runbooks for job health, checkout and failed-order investigation, and incident triage, available as a skills plugin, through CLI installation, and included in the MCP. Add an Operations guide with example requests, recovery checks, and handoffs to administrators, developers, providers, or Salesforce Support. [#672](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/672)

### CLI

- Add `b2c bm users create` to create a Business Manager user (create-or-replace), rounding out the `bm users` lifecycle alongside list/get/search/update/delete. Runs over SCAPI with OCAPI fallback like the other `bm users` commands. Flags: `--email` (required), `--first-name`, `--last-name`, `--external-id`, `--password`, `--role` (repeatable), `--disabled`, and preferred locales. Note that most instances use SSO with Account Manager and reject creating _local_ BM users with `LocalUserCreationException` — creation succeeds only when the instance is configured to allow local users. [#413](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/413)

### IDE Extension, MCP, Agent Skills, TypeScript SDK

- Add embedded Commerce skills through MCP resources and searchable `skills_read`, with focused configuration, authentication, and workflow guidance and consistent CLI/MCP recommendations. Enable all toolsets by default, streamline debugging and logging, identify tool effects for client approval controls, and support MCP 2026-07-28 alongside earlier clients. Include concise installation, capabilities, configuration, and security documentation. (Thanks [@clavery](https://github.com/clavery)!)
  
  Update explicit tool selections to use `debug_control`, `debug_inspect`, `logs_watch`, and `mrt_logs_watch`; remove `pwakit_get_guidelines` and `scapi_custom_api_generate_scaffold`. Remove `--allow-non-ga-tools` from launch commands. Use `--toolsets` or `--tools` to customize the catalog and `b2c scaffold generate custom-api` for local scaffolding. [#670](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/670)

### MCP, Agent Skills, TypeScript SDK

- Analyze B2C Commerce sales, merchandising, and technical trends directly through MCP with CIP report discovery and SQL queries. Includes analytics skills, shared configuration and Safety Mode support, and bounded, cancellable queries without a separate CLI installation. (Thanks [@clavery](https://github.com/clavery)!)
  
  Report discovery includes source tables and sales metric definitions. Sales, payment, and promotion reports return unavailable averages for zero-count groups instead of failing on division by zero. [#680](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/680)

- Add SCAPI code mode with offline discovery of 594 Admin and Shopper operations and standard or custom Admin API execution using automatic authentication and SDK Safety Mode. Compose requests and return focused results through `scapi_search` and `scapi_execute`, with bounded execution and actionable access errors. (Thanks [@clavery](https://github.com/clavery)!)
  
  Discover tenant custom API contracts live and execute their declared Admin operations. Live schema reads include custom-property definitions by default; known custom fields work directly in standard Admin requests. Bundled schemas remain tenant-independent.
  
  Reuse built-in workflows for product creation with optional category assignment, campaign/promotion inspection, and failed-job triage, or save reviewed workflows for later use. Export Account Manager and SLAS tokens when an external client needs them; normal SCAPI requests authenticate automatically. Code mode restricts local filesystem/process APIs to keep programs focused on API workflows; use terminal and file tools for local development. [#670](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/670)

- Add reusable workflows for job history, execution steps, code versions, and site cartridge paths. Update MCP task guidance and operational runbooks to use these workflows and exact job-log reads with less reliance on the CLI. [#680](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/680)

### MCP, TypeScript SDK

- Add MCP tools to browse instance files, read exact logs, and upload or download files without a separate CLI. Cartridge deployment now supports selected files and explicit code versions, with clearer reporting when uploads succeed but reload or cleanup fails. [#680](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/680)

### MCP

- Clarify how assistants discover tools and read bundled MCP skills, distinguishing resource reads from native assistant skill commands. [#683](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/683)

### Agent Skills, TypeScript SDK

- Fix SCAPI system-job requests so site archive imports and exports, including Page Designer content exports, use the required configuration format. Preserve OCAPI compatibility retries and clarify content authentication guidance. [#672](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/672)

- Apply shared HTTP middleware to SLAS shopper token flows so custom headers such as `SFCC_EXTRA_HEADERS` reach every request. Preserve redirect and cancellation settings when adding extra request parameters, and document the token response shape. [#675](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/675)

- Refocus Storefront Next guidance on managing existing storefronts with environment-variable updates, logs, deployments, and assistant support. Link to Salesforce's Business Manager setup guides and align the included skills and documentation search with that workflow. [#677](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/677)

### IDE Extension, TypeScript SDK

- Made VS Code instance selection workspace-specific by default, with explicit actions to set or follow the shared default without unexpectedly changing other tools and workspaces. Opening an instance's configuration now reveals its exact named entry. [#643](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/643)

### IDE Extension

- Add in-editor API Browser setup help for Admin and Shopper connections. Remove misleading Swagger authorization controls and show token failures with guidance instead of leaving authentication pending. [#681](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/681)

### Agent Skills

- [`46ab439`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/46ab439b4b306809f161a110669d9fce9376c8d5) - Lead SCAPI checkout guidance with the documented order payment-instrument authorization, placement, and failure lifecycle while retaining single-phase order hook orchestration as an option.

- Document `SFCC_MRT_BACKEND` as a supported way to select the `b2c mrt` backend (alongside `MRT_BACKEND`) in the b2c-mrt skill. [#662](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/662)

### TypeScript SDK

- Allow `embedded: true` component types on `arch_type: controller`. Previously the component type schema required `arch_type` to be `headless` whenever `embedded` was `true`; embedded content blocks (ECBs) are now supported on both headless and controller storefronts. The `embedded` ⟺ `component_id` requirement is unchanged. [#666](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/666)

- MRT commands are now aware of Managed Runtime maintenance (read-only) mode. Read commands (list, get) print a non-blocking warning but still run, while write commands (deploys, bundle uploads, environment changes) are blocked with a clear, actionable error instead of a raw API response — both pointing to the Managed Runtime Admin status page for current status and ETA. [#661](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/661)

- Refresh the shared configuration guide with complete SLAS and instance settings, clearer connection examples, and corrected authentication and credential precedence guidance on the site and in documentation search. [#681](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/681)

- Add a Project Setup guide with optional assistant instructions and team conventions for MCP and standalone skills users, linked from the product pages and available through documentation search. [#683](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/683)

- Fix two `b2c mrt` backend-selection issues. `SFCC_MRT_BACKEND` is now honored by `mrt` commands (previously only the unprefixed `MRT_BACKEND` was read, unlike the other `SFCC_`-prefixed MRT env vars). And `--mrt-backend legacy` no longer emits a spurious SCAPI `[StatefulAuth]` warning — the SCAPI backend is no longer probed when it cannot be used. [#662](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/662)

- [`1b6bdf8`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/1b6bdf87c0670e0ecc955d0acaa672859ca0c73e) - Preserve snapshot versions after packing the SDK so nightly CLI and MCP releases install the matching nightly SDK instead of an older stable version.

- Include SLAS response correlation IDs in debug logs to help diagnose shopper authentication failures without enabling trace logging. [#675](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/675)

- Redesign the documentation with clearer navigation, quick installation for AI tools, and terminal examples throughout the CLI reference. Highlight documentation search for developers, administrators, and merchants, plus live debugging with an assistant. Explain Safety Mode configuration and confirmations across the CLI, MCP, and IDE extension. Add an llms.txt setup guide and discoverable Markdown pages for agents. Update the bundled documentation search index with the revised guides and setup instructions. [#672](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/672)

### CLI, IDE Extension

- Updated dependencies [[`304f0eb`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/304f0eba3188b6dc62974ba2e63dea4fa9aaf84f), [`6503d81`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/6503d815fd4f942b74f494633cd430b680f33c05), [`6c8bd53`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/6c8bd53064a5ebcc51c9d40b464121bf68539ab5), [`3751091`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/3751091325208907e5a79932a621e2020e3a0014), [`304f0eb`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/304f0eba3188b6dc62974ba2e63dea4fa9aaf84f), [`f208d0c`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/f208d0c0be40f9b597f8bcba8636feb3be011ff2), [`407075c`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/407075c8d6b69647afbc31ac15004941be84957a), [`6503d81`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/6503d815fd4f942b74f494633cd430b680f33c05), [`6503d81`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/6503d815fd4f942b74f494633cd430b680f33c05), [`5741d42`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/5741d42beae402a664282738aa883e1d9fb8d903), [`2f92310`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/2f923102522bb83006b43e9adf6fb0e777c43701), [`2f92310`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/2f923102522bb83006b43e9adf6fb0e777c43701), [`c9cf71f`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/c9cf71fad0981e6a580581735062b171c70ba5d6), [`2924738`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/29247384d95e37ab8b8e739a191621ab3e1bd0d2), [`2dbbf72`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/2dbbf72c60579fa314a4a8db64e178d8fc83978b), [`2924738`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/29247384d95e37ab8b8e739a191621ab3e1bd0d2), [`1b6bdf8`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/1b6bdf87c0670e0ecc955d0acaa672859ca0c73e), [`407075c`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/407075c8d6b69647afbc31ac15004941be84957a), [`3773648`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/37736482722f91bca319a1b20887c01571e97663), [`3773648`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/37736482722f91bca319a1b20887c01571e97663), [`a0214e4`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/a0214e43c1d3a6f148634af1741f7cee0785551b), [`b2b026c`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/b2b026c109c6d3aad219ddd9603bfe59d426e8ec), [`b2b026c`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/b2b026c109c6d3aad219ddd9603bfe59d426e8ec), [`de36e4a`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/de36e4a5f99a38ad102b8314d14ec515602ce16d), [`304f0eb`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/304f0eba3188b6dc62974ba2e63dea4fa9aaf84f)]:
  - @salesforce/b2c-tooling-sdk@2.0.0

### MCP

- Updated dependencies [[`304f0eb`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/304f0eba3188b6dc62974ba2e63dea4fa9aaf84f), [`46ab439`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/46ab439b4b306809f161a110669d9fce9376c8d5), [`6503d81`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/6503d815fd4f942b74f494633cd430b680f33c05), [`6c8bd53`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/6c8bd53064a5ebcc51c9d40b464121bf68539ab5), [`3751091`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/3751091325208907e5a79932a621e2020e3a0014), [`304f0eb`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/304f0eba3188b6dc62974ba2e63dea4fa9aaf84f), [`f208d0c`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/f208d0c0be40f9b597f8bcba8636feb3be011ff2), [`407075c`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/407075c8d6b69647afbc31ac15004941be84957a), [`6503d81`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/6503d815fd4f942b74f494633cd430b680f33c05), [`6503d81`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/6503d815fd4f942b74f494633cd430b680f33c05), [`5741d42`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/5741d42beae402a664282738aa883e1d9fb8d903), [`2f92310`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/2f923102522bb83006b43e9adf6fb0e777c43701), [`2f92310`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/2f923102522bb83006b43e9adf6fb0e777c43701), [`c9cf71f`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/c9cf71fad0981e6a580581735062b171c70ba5d6), [`2924738`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/29247384d95e37ab8b8e739a191621ab3e1bd0d2), [`2dbbf72`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/2dbbf72c60579fa314a4a8db64e178d8fc83978b), [`2f92310`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/2f923102522bb83006b43e9adf6fb0e777c43701), [`2924738`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/29247384d95e37ab8b8e739a191621ab3e1bd0d2), [`1b6bdf8`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/1b6bdf87c0670e0ecc955d0acaa672859ca0c73e), [`407075c`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/407075c8d6b69647afbc31ac15004941be84957a), [`3773648`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/37736482722f91bca319a1b20887c01571e97663), [`3773648`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/37736482722f91bca319a1b20887c01571e97663), [`a0214e4`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/a0214e43c1d3a6f148634af1741f7cee0785551b), [`b2b026c`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/b2b026c109c6d3aad219ddd9603bfe59d426e8ec), [`b2b026c`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/b2b026c109c6d3aad219ddd9603bfe59d426e8ec), [`de36e4a`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/de36e4a5f99a38ad102b8314d14ec515602ce16d), [`304f0eb`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/304f0eba3188b6dc62974ba2e63dea4fa9aaf84f)]:
  - @salesforce/b2c-agent-plugins@1.9.0
  - @salesforce/b2c-tooling-sdk@2.0.0

### TypeScript SDK

- Updated dependencies [[`407075c`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/407075c8d6b69647afbc31ac15004941be84957a)]:
  - @salesforce/b2c-api-schemas@0.2.0

[@salesforce/b2c-cli@2.0.0](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/%40salesforce/b2c-cli%402.0.0) · [b2c-agent-plugins@1.9.0](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-agent-plugins%401.9.0) · [b2c-vs-extension@1.2.0](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-vs-extension%401.2.0)

## August 25, 2026

CLI 1.23.2 · IDE Extension 1.1.4 · MCP 2.1.2 · Agent Skills 1.8.5 · MRT Utilities 0.3.1 · TypeScript SDK 1.24.2

### MCP, Agent Skills, TypeScript SDK

- Keep debugger server-affinity guidance as a rare PIG-only troubleshooting note instead of prompting users and agents to use `dwsid` during routine debugging. [#638](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/638)

### MRT Utilities

- Improve streamed response performance by using a runtime-appropriate Brotli quality and periodically flushing compressed output. The Brotli quality and flush threshold can now be tuned via the `MRT_BROTLI_COMPRESSION_QUALITY` (0-11) and `MRT_BROTLI_FLUSH_THRESHOLD_BYTES` (bytes) environment variables, and the periodic flushing behavior can be disabled by setting `MRT_BROTLI_CHUNKING_ENABLED=false`. [#635](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/635)

### TypeScript SDK

- Remember when an Account Manager client rejects PKCE so later CLI and VS Code sessions start directly with the compatible implicit flow, and avoid reporting authentication success before the PKCE token exchange completes. [#634](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/634)

### CLI, IDE Extension, MCP

- Updated dependencies [[`5d48cfc`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/5d48cfc0122158625d24dd039d8066e1fa1c37f2), [`4dee938`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/4dee938cd4c2d5fd48c6ebc85ee99abf432529ff)]:
  - @salesforce/b2c-tooling-sdk@1.24.2

[@salesforce/b2c-cli@1.23.2](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/%40salesforce/b2c-cli%401.23.2) · [b2c-agent-plugins@1.8.5](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-agent-plugins%401.8.5) · [b2c-vs-extension@1.1.4](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-vs-extension%401.1.4)

## August 20, 2026

MCP 2.1.1 · Agent Skills 1.8.4

### MCP, Agent Skills

- Made MCP project resolution provenance consistent and tool guidance more concise, kept local paths out of tool descriptions, and clarified startup documentation workspace detection. Updated MCP protocol libraries and made tool input schemas reject unknown arguments. [#631](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/631)

[@salesforce/b2c-dx-mcp@2.1.1](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/%40salesforce/b2c-dx-mcp%402.1.1) · [b2c-agent-plugins@1.8.4](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-agent-plugins%401.8.4)

CLI 1.23.1 · IDE Extension 1.1.3 · MCP 2.1.0 · Agent Skills 1.8.3 · TypeScript SDK 1.24.1

### MCP, Agent Skills, TypeScript SDK

- Added per-call named-instance selection and consistent resolution provenance to project-aware MCP tools, including persisted context for debugger sessions and log watches. Removed the retired Storefront Next MCP toolset in favor of the current Storefront Next agent skills. [#629](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/629)

### CLI, IDE Extension, MCP

- Updated dependencies [[`1f25b1e`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/1f25b1ed3bf5c778b30ec2de8dff1e26071db5d1)]:
  - @salesforce/b2c-tooling-sdk@1.24.1

[@salesforce/b2c-cli@1.23.1](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/%40salesforce/b2c-cli%401.23.1) · [b2c-agent-plugins@1.8.3](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-agent-plugins%401.8.3) · [b2c-vs-extension@1.1.3](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-vs-extension%401.1.3)

CLI 1.23.0 · IDE Extension 1.1.2 · MCP 2.0.0 · Agent Skills 1.8.2 · TypeScript SDK 1.24.0

### CLI, IDE Extension, MCP, Agent Skills, TypeScript SDK

- Add a shared global `dw.json` for the CLI, MCP server, and VS Code extension, managed with `b2c setup default-config set|get|unset`; primary and global instances are available together without merging their fields. MCP tools now accept per-call `projectDirectory` and `configPath`; debugger callers must rename `cartridge_directory` to `cartridgeDirectory` and remove `client_id`. [#627](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/627)

### CLI, IDE Extension, MCP

- Updated dependencies [[`5f7bff4`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/5f7bff40b53c54ba3f0d9d245bab7c4d5f94c227)]:
  - @salesforce/b2c-tooling-sdk@1.24.0

[@salesforce/b2c-cli@1.23.0](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/%40salesforce/b2c-cli%401.23.0) · [b2c-agent-plugins@1.8.2](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-agent-plugins%401.8.2) · [b2c-vs-extension@1.1.2](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-vs-extension%401.1.2)

## August 18, 2026

CLI 1.22.1 · IDE Extension 1.1.1 · MCP 1.10.1 · Agent Skills 1.8.1 · TypeScript SDK 1.23.0

### CLI, Agent Skills, TypeScript SDK

- [`a90f173`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/a90f1730e6ccd366e50a35d8ee91a320fc5301ec) - Make unified configuration inspection recognize all CLI configuration environment variables and aliases, and show resolved authentication, project, service, and safety settings only when configured.

### Agent Skills, TypeScript SDK

- [`a90f173`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/a90f1730e6ccd366e50a35d8ee91a320fc5301ec) - Allow projects to configure a non-sensitive default `siteId` under the package.json `b2c` key for site-aware commands.

### Agent Skills

- [`e563174`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/e563174bc941eb762e1a49fa4f511ed6eec31098) - Clarify how to export B2C data directly into ordered import-set migrations for in-place review and trimming.

- [`ada3072`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/ada3072e5331c2da5199f3074001aaa509ca0317) - Update the documentation search skill to cover the expanded internal tooling corpus, including CLI reference, MCP, and VS Code extension pages.

### TypeScript SDK

- [`ada3072`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/ada3072e5331c2da5199f3074001aaa509ca0317) - Automatically include internal guides, CLI reference pages, MCP docs, and VS Code extension docs in the tooling search corpus, with CI and release checks that prevent stale indexes. The Developer Center corpus is also refreshed through August 18, 2026.

### CLI, IDE Extension, MCP

- Updated dependencies [[`ada3072`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/ada3072e5331c2da5199f3074001aaa509ca0317), [`a90f173`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/a90f1730e6ccd366e50a35d8ee91a320fc5301ec), [`a90f173`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/a90f1730e6ccd366e50a35d8ee91a320fc5301ec)]:
  - @salesforce/b2c-tooling-sdk@1.23.0

[@salesforce/b2c-cli@1.22.1](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/%40salesforce/b2c-cli%401.22.1) · [b2c-agent-plugins@1.8.1](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-agent-plugins%401.8.1) · [b2c-vs-extension@1.1.1](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-vs-extension%401.1.1)

CLI 1.22.0 · IDE Extension 1.1.0 · MCP 1.10.0 · Agent Skills 1.8.0 · MRT Utilities 0.3.0 · TypeScript SDK 1.22.0

### CLI, Agent Skills, TypeScript SDK

- Added ordered, idempotent site archive import sets with verified WebDAV receipts, retry-until-receipted behavior, and serialized concurrent runners. [#615](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/615)

- Import discovered cartridge metadata before migration-directory items, supporting single-archive and ordered-child layouts, an opt-out, and project-configurable recursive source exclusions. [#624](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/624)

- `job import-set` now prints a consolidated post-import notes summary from a `README.md` (or `README`) file at the top of each applied item's directory — the idiomatic place to document manual, instance-specific follow-up steps for a migration. Notes are shown for items applied in the run and previewed for pending items during `--dry-run`. [#619](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/619)

### CLI, IDE Extension, TypeScript SDK

- Add support for creating multiple sandbox clones from a single source in one request (1 to many cloning). (Thanks [@charithaT07](https://github.com/charithaT07)!)
  - `b2c sandbox clone create` now accepts `--target-count <1-5>` to create a batch of clones sharing the same source, TTL, profile, and notification emails. `--wait` polls every clone in the batch until each reaches a terminal state.
  - `b2c sandbox clone list` supports `--batch-id` to filter clones belonging to a specific batch.
  - `b2c sandbox clone get` and the VS Code extension's clone details view now show the batch ID and sibling clone IDs when a clone was created as part of a batch.
  - The VS Code extension's "Clone Sandbox" command prompts for the number of clones to create and reports aggregate progress across the batch. [#611](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/611)

- Add Authorization Code + PKCE support for browser-based OAuth (public clients) and make it the default for the `user` auth method, replacing the legacy `implicit` flow in the default chain. The default auth-method order is now `client-credentials`, `jwt`, `user`. The implicit flow is still selectable via `--auth-methods implicit` (or in dw.json) for backwards compatibility but emits a deprecation warning — OAuth 2.1 deprecates implicit for public clients. (Thanks [@clavery](https://github.com/clavery)!)
  
  `b2c auth login` now uses Authorization Code + PKCE by default and persists a refresh token alongside the access token, so subsequent commands silently refresh without re-opening the browser. The new `--auth-methods` flag on `b2c auth login` lets you opt back into the legacy implicit flow (`--auth-methods implicit`). The POC `b2c auth pkce` command has been removed; use `b2c auth login` instead.
  
  dw.json gains a `"user-auth": true` shorthand for `"auth-methods": ["user"]`. It is mutually exclusive with `"auth-methods"` — setting both is rejected during config mapping.
  
  To smooth the migration, the `user` flow includes a transitional safety net: if the configured Account Manager client is not a PKCE-capable public client, it automatically falls back to the implicit flow for that client and logs a deprecation warning recommending you create a new public (PKCE) client and use it. (An AM client's type cannot be changed after creation, so a legacy implicit-only client must be replaced, not converted.) Set `SFCC_DISABLE_PKCE_FALLBACK=1` to disable the fallback and surface PKCE failures directly. This fallback is temporary and will be removed once public clients have migrated.
  
  Persisted browser-auth sessions (which now hold long-lived PKCE refresh tokens) are written `0o600` in a `0o700` directory, so they are no longer world-readable.
  
  The VS Code extension persists PKCE refresh tokens via OS-keychain-backed `SecretStorage` (with a sync-snapshot/async-write-through cache), keeping behavior compatible with the unified `AuthSessionBackend` used by the CLI. [#574](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/574)

### CLI, TypeScript SDK

- Show the target hostname and real local source for each import-set item, and reject empty site archive directories before upload with a clear error. [#624](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/624)

- `cap:install` now warns and prompts for confirmation before installing a Commerce App from a non-Salesforce provider. Use `--force` to skip the prompt (e.g. in CI or scripted installs); the prompt is also skipped automatically in `--json` mode. [#604](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/604)

### CLI

- `b2c setup inspect` now redacts the JWT private key passphrase (`jwtPassphrase`) by default, matching the other secret fields. Use `--unmask` to show it. [#613](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/613)

### CLI, IDE Extension, Agent Skills, TypeScript SDK

- Add support for Page Designer "content blocks" (reusable `fragment.*`-typed content). (Thanks [@clavery](https://github.com/clavery)!)
  
  Content blocks are now a first-class node type: the SDK classifies them as `FRAGMENT` (instead of mislabeling them as components), parses their display name, and exposes `Library.getContentBlocks()` to list a library's blocks (including unlinked ones). The CLI renders them distinctly in `content export`/`content list` (as `CONTENT BLOCK`), counts them in export summaries, and supports `content list --type fragment`. In the VS Code extension, each library gains a **Content Blocks** group that is the single source of truth for a block; because blocks are shared singletons, every page/component that links a block shows a reference that reveals the canonical block in the group rather than an editable copy. (Converting a component into a content block is done in Business Manager / Page Designer — it is not offered here because reproducing it via site-archive import can silently drop a Layout block's child links.) [#500](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/500)

### CLI, IDE Extension

- Update the embedded B2C Commerce Script API TypeScript definitions from version 26.7 to 26.9 so IDE IntelliSense reflects the latest platform APIs. [#618](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/618)

### MCP, TypeScript SDK

- Add a `config_inspect` MCP tool that reports the resolved configuration (instance, auth, SCAPI/MRT settings) with the source of each value and the effective project directory — secrets are redacted by default. Filesystem tools now resolve the project directory with explicit precedence (per-call argument, then `--project-directory`/`SFCC_PROJECT_DIRECTORY`, then the process working directory) and echo the resolved directory back in their output, so agents can override it per call and see which directory was used across MCP clients that spawn the server from inconsistent working directories. [#613](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/613)

### IDE Extension, TypeScript SDK

- Fix sandbox creation in the VS Code extension not granting default OCAPI/WebDAV permissions. New sandboxes created from the extension now grant the configured client ID the same default permissions as the CLI's `sandbox create`, so code deployment and job execution work without manual permission setup. The shared defaults are now provided by the SDK via `buildSandboxSettings`. [#614](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/614)

### MRT Utilities

- Make DataStore.getEntry shard-aware. When the MRT_NUM_SHARDS environment variable is set to a value greater than 1, reads are spread across shard partitions by selecting a random shard, relieving read pressure on a single hot partition. When MRT_NUM_SHARDS is unset or 1, behavior is unchanged. The getEntry signature and return shape are unchanged, so this is backward compatible. [#623](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/623)

- Harden the data store's DynamoDB client against throttling: it now uses adaptive retries, a bounded number of attempts, and per-attempt connection/request timeouts so a slow or throttled call can no longer consume the whole request budget. Throttling failures are now distinguishable in error logs. [#622](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/622)

### IDE Extension

- Start, stop, and restart the active sandbox from the Command Palette (Realm Explorer context menus still target the selected sandbox) [#617](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/617)

- Honor the `SFCC_CONFIG` environment variable when resolving instance configuration. Previously the extension only looked for a `dw.json` in the workspace folder and ignored a global `dw.json` referenced by `SFCC_CONFIG`, so projects that relied on that env var (e.g. alongside a project `.env`) resolved to "No B2C Commerce instance configured". The extension now threads `SFCC_CONFIG` through as the explicit config path, matching the CLI's `--config` flag. [#621](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/621)

### Agent Skills

- Package the plugins to the open Agent Plugins standard (agent-plugins.org v1.0.0). Each plugin now has a root `plugin.json` manifest with its Codex display metadata under `extensions."com.openai"`, and the MCP server plugin ships a standard `mcp.json`. This lets Codex, Cursor, GitHub Copilot, VS Code, and Kiro consume the plugins directly; Claude Code continues to install from its marketplace as before. The legacy `.codex-plugin/plugin.json` manifests are retained during the transition so existing Codex users on older CLI versions are unaffected. [#613](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/613)

- Fix six cross-pack skill links in `b2c-scapi-admin` and `b2c-scapi-shopper` that were one directory level short and resolved to paths that do not exist. [#609](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/609)

### TypeScript SDK

- Keep site archive and import-set SDK operations silent so CLI consumers exclusively control progress and job-log output. [#624](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/624)

- Refresh the bundled documentation corpora to the 26.8 release so `b2c docs (Thanks [@clavery](https://github.com/clavery)!)
  search`/`docs read` and the MCP `docs_*` tools surface the latest content:
  - Script API reference and XSD schemas updated to DWAPP 26.8 (adds the
    `dw.commerceapps` package, connection-health hooks, and `ShippingHooks`).
  - Developer Center guides refreshed (adds newly published guides such as SCAPI
    CDN caching, guest order access codes, and several Storefront Next topics).
  
  Each corpus index now records where it came from so maintainers can spot the
  delta before a refresh: git-sourced prose corpora store the upstream commit
  (`source` block) and DWAPP-sourced corpora store the platform release
  (`platformDocVersion`, e.g. "DWAPP 26.8"). [#605](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/605)

### CLI, IDE Extension, MCP

- Updated dependencies [[`02ccc2a`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/02ccc2a1656c4895c2aca7ef2064fd2ff138e9a2), [`1f553b3`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/1f553b3e26c57909ce654b61e25f4db537111312), [`02ccc2a`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/02ccc2a1656c4895c2aca7ef2064fd2ff138e9a2), [`35f2960`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/35f296036a0659d115617bb2770327cca250bad7), [`d5551f3`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/d5551f351836f12d2c167459441093671bcad9bc), [`02ccc2a`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/02ccc2a1656c4895c2aca7ef2064fd2ff138e9a2), [`591f886`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/591f886f29cc76484b42afe27f6b28f568f1373e), [`c0ec3f6`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/c0ec3f6202ca8ee69676ae2361e8b276cd69385c), [`62db97f`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/62db97fefb40e56c12f41d54803db7315ec8c33a), [`8d096d0`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/8d096d01a2f70eb979f1b6b246fd196b77f2acd0), [`9382697`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/9382697c2715d16577fa298465a3d2dbcbef0ca9), [`2de9046`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/2de904636dad1b1f23a80da8b640dc8acd6e97f3)]:
  - @salesforce/b2c-tooling-sdk@1.22.0

[@salesforce/b2c-cli@1.22.0](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/%40salesforce/b2c-cli%401.22.0) · [b2c-agent-plugins@1.8.0](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-agent-plugins%401.8.0) · [b2c-vs-extension@1.1.0](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-vs-extension%401.1.0)

## July 31, 2026

CLI 1.21.4 · IDE Extension 1.0.6 · MCP 1.9.3 · Agent Skills 1.7.0 · TypeScript SDK 1.21.3

### CLI, Agent Skills, TypeScript SDK

- Fix skill installation output so mixed-source downloads do not show an unresolved version placeholder, repair the `b2c-hooks` skill frontmatter, and identify the affected skill path in future parsing warnings. [#603](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/603)

### Agent Skills

- Add Codex plugin packaging for the B2C DX MCP server so Codex CLI and Codex in the ChatGPT desktop app can install and load the MCP server directly through the B2C Developer Tooling plugin marketplace. Claude Code marketplace installation remains supported by the same plugin. [#603](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/603)

- Correct B2C agent skill examples to use supported Script APIs, hook extension points, OCAPI contracts, and schema-valid metadata. Generated implementations no longer rely on nonexistent APIs or invalid request and response shapes. [#601](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/601)

### CLI, IDE Extension, MCP

- Updated dependencies [[`94c7ba9`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/94c7ba979716e8401234f48178f488a4e5b29ac3)]:
  - @salesforce/b2c-tooling-sdk@1.21.3

[@salesforce/b2c-cli@1.21.4](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/%40salesforce/b2c-cli%401.21.4) · [b2c-agent-plugins@1.7.0](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-agent-plugins%401.7.0) · [b2c-vs-extension@1.0.6](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-vs-extension%401.0.6)

## July 29, 2026

IDE Extension 1.0.5

### IDE Extension

- Stop the VS Code extension from blocking other extensions in empty or non-B2C windows. Because the extension registers a TypeScript server plugin, VS Code activates it whenever any JavaScript/TypeScript file is opened — including windows with no folder. In that case the extension no longer falls back to the process working directory, and all cartridge/workspace discovery now runs only from a concrete workspace folder and never from a home or filesystem-root directory, so it can't trigger a recursive filesystem scan that stalls the extension host. [#598](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/598)

[b2c-vs-extension@1.0.5](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-vs-extension%401.0.5)

## July 27, 2026

CLI 1.21.3

### CLI

- Fix `slas client update` corrupting existing callback URIs. When merging with the current client, the command split the API's pipe-delimited `callbackUri` value on commas instead of pipes, so the entire list was sent back as a single string and the update was rejected with "CallbackURI must be a valid URL". Callback URIs are now parsed with the same shared helper used for redirect URIs everywhere in the SLAS commands, so the two paths can no longer disagree. [#596](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/596)

[@salesforce/b2c-cli@1.21.3](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/%40salesforce/b2c-cli%401.21.3)

CLI 1.21.2 · IDE Extension 1.0.4 · MCP 1.9.2 · Agent Skills 1.6.2 · TypeScript SDK 1.21.2

### CLI, IDE Extension, TypeScript SDK

- Treat activation of an already-active code version as success, preserve useful OCAPI fault details, and avoid redundant activation choices in VS Code. [#592](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/592)

### IDE Extension

- Detect nested `dw.json` project roots in VS Code workspaces and allow nested folders to be pinned from Explorer, so parent-folder and multi-root layouts connect to the intended project. [#592](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/592)

### Agent Skills

- Document the `sf-toolkit="off"` attribute on `<isinclude>` in the b2c-isml skill, explaining how to disable Storefront Toolkit markers and when to use it. [#588](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/588)

- Document the order hook lifecycle in the b2c-hooks skill: the beforePOST → afterPOST → modifyPOSTResponse sequence, Status.ERROR rollback semantics per phase, the two-hook pattern for persisting a failed order while returning an HTTP error, and request.custom for inter-hook data passing. [#577](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/577)

### CLI, IDE Extension, MCP

- Updated dependencies [[`f6b4ced`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/f6b4ced5d40b8fcd8a9fbaf524f6dcdd83852b02)]:
  - @salesforce/b2c-tooling-sdk@1.21.2

[@salesforce/b2c-cli@1.21.2](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/%40salesforce/b2c-cli%401.21.2) · [b2c-agent-plugins@1.6.2](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-agent-plugins%401.6.2) · [b2c-vs-extension@1.0.4](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-vs-extension%401.0.4)

## July 23, 2026

CLI 1.21.1 · IDE Extension 1.0.3 · MCP 1.9.1 · Agent Skills 1.6.0 · TypeScript SDK 1.21.1

### CLI, MCP, Agent Skills, TypeScript SDK

- Expose directly related documentation IDs from Salesforce Help child-topic links and Developer Center guide TOCs, including articles previously omitted from composite Help maps or hyphenated topic filenames. CLI and MCP documentation search results can now be paged by ranked position, so agents can traverse the full published content without surfacing future-profiled Help content. [#581](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/581)

### Agent Skills

- Add the `figma-to-sfnext-pagedesigner` plugin: an agent skill that converts a Figma frame into live Storefront Next Page Designer blocks — splitting the frame into one block per section, reconciling brand tokens, generating React + Tailwind components with Page Designer decorator metadata and SCAPI product loaders, and validating design fidelity. Requires the Figma MCP server. Install with `claude plugin install figma-to-sfnext-pagedesigner@b2c-developer-tooling`. [#589](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/589)

- The b2c-logs skill now documents custom-category log file discovery. It explains that a custom logger category writes to its own `custom-<prefix>-*.log` file (distinct from `customerror`), that the prefix is the first argument to `Logger.getLogger(prefix, category)`, and how to find and read these files with `logs list --filter custom` and `logs get --filter custom-<prefix>`, plus the `webdav ls --root logs` fallback. This makes the retrieval skill self-contained for triaging integration and job logs, which almost always use a custom category. [#583](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/583)

### CLI, IDE Extension, MCP

- Updated dependencies [[`1fe5ff2`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/1fe5ff2e49b4aef66c81ad9b9c9dd4b92d1da405)]:
  - @salesforce/b2c-tooling-sdk@1.21.1

[@salesforce/b2c-cli@1.21.1](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/%40salesforce/b2c-cli%401.21.1) · [b2c-agent-plugins@1.6.0](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-agent-plugins%401.6.0) · [b2c-vs-extension@1.0.3](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-vs-extension%401.0.3)

## July 16, 2026

IDE Extension 1.0.2

### IDE Extension

- Prepare the VS Code extension for its 1.0 Marketplace launch with a public-facing README, feature tour, setup guidance, Marketplace installation instructions, and support links. Contributor build, test, and packaging instructions now live in `DEVELOPMENT.md`. [#579](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/579)

- Point the extension's marketplace repository URL at `forcedotcom/b2c-dx`. The extension is published from a separate Salesforce-owned repository under open-source governance (public OSS lives under a `forcedotcom`/`salesforce` org); development, issues, and pull requests continue in this monorepo. See `packages/b2c-vs-extension/PUBLISHING.md` for the publish flow. [#549](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/549)

[docs@0.3.14](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/docs%400.3.14) · [b2c-vs-extension@1.0.2](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-vs-extension%401.0.2)

CLI 1.21.0 · IDE Extension 1.0.1 · MCP 1.9.0 · Agent Skills 1.5.3 · TypeScript SDK 1.21.0

### CLI, MCP, Agent Skills, TypeScript SDK

- Log commands and tools can now access logs in `Logs/` subdirectories (such as `internal/`). Pass a path-like `--filter`/`prefixes` value containing a `/` — e.g. `--filter internal/server` to target `server-*.log` files under `internal/`, or `--filter internal/` for everything in that subdirectory. Plain prefix filters (and the default listing) are unchanged and still only scan the top-level `Logs/` directory, so there is no performance impact unless you opt in with a path filter. Works across `logs list`, `logs get`, `logs tail`, and the corresponding MCP tools. [#568](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/568)

### IDE Extension

- Add a Marketplace/Open VSX listing icon. The extension previously published with the default placeholder tile; it now ships a 256x256 branded icon (Salesforce cloud + B2C Commerce cart) via the top-level `icon` manifest field. [#578](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/578)

### TypeScript SDK

- Fix `b2c docs read` failing to load Salesforce Help (Business Manager) articles. Help content is served online but its index entries carried a bundled-file path, so reads tried a nonexistent local file and failed instead of fetching from the source URL. Reads now fetch help articles online as intended. [#576](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/576)

### CLI, IDE Extension, MCP

- Updated dependencies [[`f169fa1`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/f169fa153f75f4f3b76622b4300c11631deb50b0), [`633f3cb`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/633f3cb7d409132f107b012e26448ab7812ed506)]:
  - @salesforce/b2c-tooling-sdk@1.21.0

[@salesforce/b2c-cli@1.21.0](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/%40salesforce/b2c-cli%401.21.0) · [b2c-agent-plugins@1.5.3](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-agent-plugins%401.5.3) · [b2c-vs-extension@1.0.1](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-vs-extension%401.0.1)

## July 15, 2026

CLI 1.20.1 · IDE Extension 1.0.0 · MCP 1.8.1 · Agent Skills 1.5.2 · TypeScript SDK 1.20.1

### IDE Extension

- Release the B2C Commerce VS Code extension 1.0. [#570](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/570)

### Agent Skills

- [`4b3ecd1`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/4b3ecd15d66112725adca54007a743ac540a8cb1) - Clarify that commands without a configured client ID reuse the saved stateful session.

- Add storefront-next skills for SCAPI client management and custom API implementation workflows [#566](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/566)

### TypeScript SDK

- Fix dead 404 links in the Developer Center guides documentation corpus. The guides index now includes only pages that are published on developer.salesforce.com (referenced from a guide table-of-contents), removing 105 orphaned entries whose URLs returned 404 in `b2c docs search`/`docs read`. [#572](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/572)

### CLI, IDE Extension, MCP

- Updated dependencies [[`3b1152f`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/3b1152f4a21bf167b1c647677f36c1507d0a476c)]:
  - @salesforce/b2c-tooling-sdk@1.20.1

[@salesforce/b2c-cli@1.20.1](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/%40salesforce/b2c-cli%401.20.1) · [b2c-agent-plugins@1.5.2](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-agent-plugins%401.5.2) · [b2c-vs-extension@1.0.0](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-vs-extension%401.0.0)

## July 13, 2026

CLI 1.20.0 · IDE Extension 0.11.0 · MCP 1.8.0 · Agent Skills 1.5.1 · TypeScript SDK 1.20.0

### CLI, TypeScript SDK

- Script API reference content is now read online (from developer.salesforce.com) instead of shipping in the package, reducing the installed SDK/CLI size by ~6 MB. Documentation search is unchanged and still works offline from the bundled index; only `docs read` for a `dw.*` class now fetches its content. (Thanks [@clavery](https://github.com/clavery)!)
  
  To keep reads fast, fetched documentation content (Script API, Developer Center guides, and Salesforce Help) is cached locally — in memory for the session and on disk (under the CLI cache dir) for 7 days — so repeated reads avoid the network. A new `b2c docs cache` command shows the cache location and size, and `b2c docs cache --clear` empties it. When a fetch fails, `docs read` falls back to the indexed summary and prints both the article URL and the raw markdown URL so you can retrieve the page yourself. [#563](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/563)

- Add support for the SCAPI Preferences API. The SDK exposes `createPreferencesClient` and the CLI exposes a new `b2c preferences` topic with `global list/get/update`, `site list/get/update/search`, and `site preference get/update` commands. Read scope is `sfcc.preferences`; write scope is `sfcc.preferences.rw`. [#565](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/565)

### CLI, MCP, TypeScript SDK

- Add a Salesforce Help documentation corpus to `docs search`/`docs read` (and the MCP docs tools), covering Business Manager administration and merchandising content from help.salesforce.com. It is split into two categories — `help-admin` (import/export, jobs, replication, security, Account Manager, permissions, logs, inventory) and `help-merchant` (catalogs, products, promotions, search, content, analytics, SEO) — so you can search platform-administration and merchandising topics alongside the existing Script API, Developer Center, and tooling docs. (Thanks [@clavery](https://github.com/clavery)!)
  
  You can scope the whole docs corpus to chosen categories with the new `docsCategories` config field, sourced from `dw.json` (`docs-categories`), the `SFCC_DOCS_CATEGORIES` env var, or `package.json` — in addition to the existing `--topics` / `--docs-topics` flags (which still override config). For example, set `"docs-categories": ["script-api", "job-step", "help-admin", "tooling"]` in dw.json to expose only developer + admin docs. [#563](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/563)

### CLI

- Remove the `b2c setup ide` third-party `dw.js` bridge subcommand and its documentation. The `setup ide` topic retains `vscode-types` (vendor Script API TypeScript definitions) and `tsserver-plugin` (print the TS Server plugin path for LSP editors). Users of the B2C DX VS Code extension need no setup; other editors can use `setup ide vscode-types` or `setup ide tsserver-plugin`. [#565](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/565)

### CLI, MCP

- `docs read` / `docs_read` now apply the same workspace-aware ranking as `docs search` when resolving a **fuzzy** query, so a fuzzy read (e.g. `productmgr`) returns the same top result that search ranks first for the current project. Exact id lookups (e.g. `dw.catalog.ProductMgr`) are unaffected — they resolve deterministically. The CLI gains a `--workspace` flag on `docs read` (defaults to auto-detect; `all` opts out); the MCP `docs_read` uses the server's detected workspace. [#563](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/563)

### IDE Extension, TypeScript SDK

- Add an interactive Export view to the VS Code extension for building site impex (site archive) exports. Check the data units you want — sites (with per-site flags), global data, catalogs, inventory lists, libraries, customer lists, and price books — then run Export to download and extract the archive locally. Sites, catalogs, and inventory lists are discovered from the instance automatically; libraries, customer lists, and price books are added by ID. The SDK gains a `discoverExportableUnits` helper that lists the exportable sites, catalogs, and inventory lists on an instance. [#565](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/565)

- Make the VS Code extension resilient offline and when an instance is unreachable. A malformed `dw.json` no longer prevents the extension from activating, so local code browsing — cartridge discovery, Script API IntelliSense, cartridge-path require resolution, CAP detection, and scaffolding — keeps working without a connection. Connection-dependent views (WebDAV, Content, Sandbox, Logs) now collapse repeated "instance unreachable" errors into a single notification instead of flooding, and the Sandbox view explains when Account Manager OAuth credentials are the missing piece. The SDK's `listInstances()` now tolerates a malformed `dw.json` (returning no instances) rather than throwing. [#565](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/565)

### IDE Extension

- Surface **Custom Step Types** as a third category under each cartridge in the **Cartridges** explorer, alongside Hooks and Job Steps. (Thanks [@clavery](https://github.com/clavery)!)
  - Custom step types are parsed from any `steptypes.json` under the cartridge (both `script-module-step` and `chunk-script-module-step` categories are supported, and the legacy flat-array shape is tolerated).
  - **Clicking a step type opens its module implementation** (the `.js` file referenced by the `module` field) — resolving across sibling cartridges when the module lives in a different cartridge from where it's registered.
  - **Right-click → Show Step Type Definition** jumps to the `@type-id` line inside `steptypes.json` for the alternate navigation target.
  - Nodes for step types whose module cannot be resolved on disk fall back to opening the JSON definition, so the click always does something useful. [#565](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/565)

- Add B2C-DX Analytics (CIP/CCAC) feature to the VS Code extension. Surfaces three webview panels: (Thanks [@clavery](https://github.com/clavery)!)
  - **Query Builder** — visual SELECT/FROM/WHERE/ORDER BY/LIMIT composer with raw-SQL toggle and a workspace-scoped Saved Queries library tagged per tenant.
  - **Tables Browser** — schema explorer for the active CIP warehouse tenant.
  - **Curated Reports** — parameter forms for every `cip report …` command with date pickers, validation, sortable result grid, and CSV/JSON export.
  
  Adds multi-realm management (group, add, edit, switch, remove) so a single workspace can target multiple tenants. CIP commands now route through `registerSafeCommand` so SafetyGuard policies are enforced and a `cipAnalytics` feature category is recorded by usage telemetry. The shared webview stylesheet is copied into `dist/cip-analytics/` at build time so the packaged extension no longer reaches into `src/` for runtime assets. [#565](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/565)

- The extension no longer activates on every VS Code startup. It now activates on demand when you open a B2C Commerce workspace (detected via `dw.json`, `.project`, `cartridge/*.properties`, or `commerce-app.json`), open a B2C view, or run a B2C command — reducing startup overhead in unrelated projects. (Thanks [@clavery](https://github.com/clavery)!)
  
  Adds an opt-in `b2c-dx.features.sandboxFilesystem` setting (default off) that automatically mounts the active instance's WebDAV filesystem as a workspace folder. [#559](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/559)

- Improve ISML diagnostics and hover help: (Thanks [@clavery](https://github.com/clavery)!)
  - Add four diagnostics that catch common structural mistakes: `<iselse>`/`<iselseif>` outside an `<isif>`, `<isbreak>`/`<isnext>`/`<iscontinue>` outside an `<isloop>`, `<isreplace>` outside an `<isdecorate>`, and `<isprint>` setting both `style` and `formatter`.
  - The `encoding="off"` output-escaping warning (stored-XSS risk) is now on by default and fires for every tag with an `encoding` attribute (previously it was opt-in and only checked a subset of tags). Silence it per line with `<iscomment> b2c-dx-disable-next-line encoding-off </iscomment>` or globally via `b2c-dx.isml.diagnostics.disabledRules`.
  - Correct and expand tag hover text (fixes an inaccurate `<isscript>` tip, documents `<isloop>` status properties, `<isprint>` style/formatter, and `<iscontent>` placement). [#565](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/565)

- Add ISML document formatting and expand ISML diagnostics. (Thanks [@clavery](https://github.com/clavery)!)
  
  **Formatting.** ISML files now support Format Document and Format Selection, powered by the same engine as VS Code's built-in HTML formatter (`vscode-html-languageservice`). `<isscript>` bodies and `${...}` expressions are preserved verbatim, and void ISML tags are normalized to `<isxxx/>`. Configurable via `b2c-dx.isml.format.*` and gated by `b2c-dx.features.ismlFormatting`.
  
  **Diagnostics.** Added required-attribute checks (e.g. `<isif>` needs `condition`, `<isloop>` needs an iterator and an alias, `<isinclude>` needs `template` or `url`) and an opt-in `encoding="off"` output-escaping warning. Every diagnostic now carries a stable rule code shown in the Problems panel.
  
  **Suppression & configuration.** Individual lines can be suppressed inline with an ISML comment directive — `<iscomment> b2c-dx-disable-next-line <code> </iscomment>` (or `b2c-dx-disable-line`, or no code to suppress all rules on the line) — offered as a quick fix on any diagnostic. Rules can be disabled project-wide via `b2c-dx.isml.diagnostics.disabledRules` (the `encoding-off` warning is disabled by default). [#565](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/565)

- Highlight ISML tags (`<isif>`, `<isloop>`, `<isprint>`, `<isscript>`, etc.) distinctly from plain HTML tags so ISML directives are easier to spot at a glance. Controlled by the `b2c-dx.isml.highlightTags` setting (on by default); disable it to render ISML tags in the normal HTML tag color. The color follows the active theme and never modifies your settings. [#565](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/565)

- Add ISML language support in the VS Code extension, including `.isml` file association, grammar and snippets, auto-close and linked editing for tags, diagnostics and quick fixes, symbols/folding/hover, semantic completions (`Resource.msg`, `URLUtils`, `res.render`, `require`), and template path links/definitions/references across cartridges. [#565](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/565)

- Consolidate the B2C Operations (Jobs) experience into the primary **B2C-DX** sidebar based on review feedback: (Thanks [@clavery](https://github.com/clavery)!)
  - **Single Job History view** under the existing `b2c-dx` container (collapsed by default). The standalone "B2C-DX Operations" sidebar and the React-based Job History table webview have been removed — all controls now live in the tree's title bar.
  - **No fetch on activation.** The view shows a load hint until you press **Refresh** (or enable the new **Auto-Refresh** toggle). A new `b2c-dx.jobs.autoRefresh` setting (off by default) and a title-bar toggle control opt-in polling.
  - **Chronological-first root view.** Job History now defaults to a BM-style flat timeline of recent executions, with a title-bar toggle to switch to the previous "group by job" view. New `b2c-dx.jobs.defaultGrouping` setting controls the default.
  - **Default status filter is `all`**, fixing the empty-view-on-first-load defect (previously required clicking the filter before anything appeared).
  - **Inline name filter** in the title bar (BM-style job-name search).
  - **Open in Business Manager** deep-links directly to _Administration › Operations › Jobs_ instead of the BM landing page.
  - **Job Definitions view removed.** Its useful action — **Create Job Scaffold** — moves to a right-click on a cartridge in the **Cartridges** explorer.
  - **Cartridges explorer broadened** to expand each cartridge into **Hooks** and **Job Steps** child nodes (parsed from `hooks.json` and `cartridge/scripts/jobsteps/`). Click a file to open it. [#565](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/565)

- Add a B2C Operations (Jobs) experience to the VS Code extension: (Thanks [@clavery](https://github.com/clavery)!)
  - **Job History** — view execution history from the connected instance, including jobs that are currently running (shown live with a spinner and auto-refresh), with a table to search, filter (status, job, user, date, time presets), sort, and export runs to CSV/JSON. Each run has inline actions to open its log, view details, and re-run.
  - **Job Definitions** — view the jobs (`jobs.xml`) and custom step types (`steptypes.json`) defined in your workspace cartridges, with actions to run, deploy, and open the source files.
  - **Run / Re-run** — trigger a job (optionally with parameters), poll it to completion, and open its log automatically. Re-run reuses the original execution's parameters.
  - **Create Job Scaffold** — generate a custom job step script, its `steptypes.json` registration, and a matching `jobs.xml` that references the registered `custom.*` step type.
  - **Deploy Job Definition** — deploy a `jobs.xml` to register the job in Business Manager.
  
  System (`sfcc-*`) jobs are distinguished from custom jobs, and actions that don't apply to them are disabled with an explanation. [#565](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/565)

- Add XSD-based validation, autocomplete, and hover docs for B2C metadata XML files, backed by ~50 bundled schemas (catalogs, promotions, jobs, services, A/B tests, page-meta-tags, sorting rules, source codes, content libraries, event routing, and more). (Thanks [@clavery](https://github.com/clavery)!)
  
  **Namespace-based association.** Validation is matched by the document's declared XML namespace, not by filename or folder layout, so a metadata file validates against the correct schema wherever it lives — in a canonical site-archive (`sites/<id>/…`), an exploded `metadata/` workspace, or anywhere else. The extension ships an XML catalog and registers it with the Red Hat XML language server at runtime; no changes are written to your `settings.json`.
  
  **Optional companion extension.** Validation is powered by the Red Hat XML extension (`redhat.vscode-xml`), a _soft_ dependency — it is not force-installed and no Java runtime is required. When you open a B2C metadata XML file, the extension offers to install it (with a "Don't ask again" option); until then the extension is unaffected. You can trigger setup any time via the **B2C DX: Set Up Metadata XML Validation** command, and disable the whole feature with the `b2c-dx.features.xmlValidation` setting. Teams whose policies block third-party extensions can simply decline the prompt. [#565](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/565)

- Fix the VS Code extension failing to activate when ISML support is enabled. The `src/isml/scanner.ts` module loaded `vscode-html-languageservice` via runtime `require()` calls that esbuild left unbundled. Because the VSIX is packaged with `vsce --no-dependencies`, the deep submodule paths could not be resolved at runtime and activation crashed silently — no "B2C DX" output channel, no instance selector, no commands. Switched to direct ESM imports so esbuild inlines the scanner code into the bundle. [#565](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/565)

- Harden ISML language support: (Thanks [@clavery](https://github.com/clavery)!)
  - Treat `<isslot>`, `<ismodule>`, and `<iscomponent>` as empty (self-closing) elements, so auto-close no longer inserts invalid closing tags and diagnostics no longer report them as "not closed".
  - Ignore markup inside `<iscomment>` and `<isscript>` bodies — commented-out ISML and `<` characters in scripts no longer produce false diagnostics, folding, or symbols.
  - Debounce diagnostics so large templates are not re-linted on every keystroke.
  - Guard the "create template" command against being run directly from the command palette.
  - Resolve template links without the `vscode-html-languageservice` dependency, removing a fragile deep import into that package's internals. [#565](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/565)

- Gate the developer onboarding walkthrough behind a new `b2c-dx.features.onboarding` setting (Preview, off by default). The guided walkthrough, role-based deep-dive panel, and their palette commands no longer appear — and the walkthrough no longer auto-opens on first activation — unless the setting is enabled. Set `b2c-dx.features.onboarding` to `true` to opt in while the feature is still in development. [#565](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/565)

- Stop bundling development-only files into the published extension. The packaged VSIX no longer includes the `test-workspace/` sample cartridges or local `.claude/` editor settings, reducing package size and removing files that were never meant to ship. [#565](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/565)

### Agent Skills

- Update the `b2c-docs` skill for the new Salesforce Help corpus (`help-admin`, `help-merchant`), the `docsCategories` config field, and the `b2c docs cache` command (online content caching + purge). [#563](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/563)

- Update the b2c-config skill's IDE integration section to reference `setup ide vscode-types` and `setup ide tsserver-plugin` for Script API IntelliSense. [#565](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/565)

### CLI, IDE Extension, MCP

- Updated dependencies [[`9fb332d`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/9fb332d92cc3289d2796c97a4c70f839dfe5f999), [`9fb332d`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/9fb332d92cc3289d2796c97a4c70f839dfe5f999), [`54d69bc`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/54d69bc3e439d0252f6a1456e9aa8a307e7a2767), [`54d69bc`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/54d69bc3e439d0252f6a1456e9aa8a307e7a2767), [`54d69bc`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/54d69bc3e439d0252f6a1456e9aa8a307e7a2767)]:
  - @salesforce/b2c-tooling-sdk@1.20.0

[@salesforce/b2c-cli@1.20.0](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/%40salesforce/b2c-cli%401.20.0) · [b2c-agent-plugins@1.5.1](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-agent-plugins%401.5.1) · [b2c-vs-extension@0.11.0](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-vs-extension%400.11.0)

## July 9, 2026

CLI 1.19.1 · IDE Extension 0.10.4 · MCP 1.7.0 · TypeScript SDK 1.19.1

### MCP, TypeScript SDK

- Fix costly recursive filesystem scan on MCP server startup. Workspace auto-discovery previously did an unbounded `**/.project` walk from the launch directory, which could hang startup when the server was spawned from a home directory (as Cursor and Claude Code often do). Discovery is now skipped entirely when explicit `--toolsets`/`--tools` are provided, skipped for home and root directories, and otherwise depth-bounded and short-circuited at the first match. `findCartridges` gains optional `maxDepth` and `firstMatchOnly` options for callers that need a bounded search (existing callers are unaffected). [#557](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/557)

### CLI, IDE Extension, MCP

- Updated dependencies [[`71dfe3a`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/71dfe3a86b7e752ffad9f3d44f1e7c6357e431fa)]:
  - @salesforce/b2c-tooling-sdk@1.19.1

[@salesforce/b2c-cli@1.19.1](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/%40salesforce/b2c-cli%401.19.1) · [b2c-vs-extension@0.10.4](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-vs-extension%400.10.4)

## July 8, 2026

CLI 1.19.0 · IDE Extension 0.10.3 · MCP 1.6.0 · Agent Skills 1.5.0 · TypeScript SDK 1.19.0

### CLI, MCP, Agent Skills, TypeScript SDK

- Add Metrics API support (**CLOSED BETA**). The new SCAPI Observability Metrics API (`observability/metrics/v1`) is now available across the tooling: (Thanks [@clavery](https://github.com/clavery)!)
  - **SDK:** a typed `createMetricsClient` plus `getOverallMetrics`, `getSalesMetrics`, `getEcdnMetrics`, `getThirdPartyMetrics`, `getScapiMetrics`, `getScapiHooksMetrics`, `getMrtMetrics`, `getControllerMetrics`, `getOcapiMetrics`, and `getMetricsByCategory` operations that fetch operational time-series metrics for an organization. Admin OAuth scope `sfcc.metrics` is handled automatically. Time bounds accept a `Date` or epoch milliseconds and are sent to the API as epoch seconds; response timestamps are normalized to epoch milliseconds. Optional `enrichMetricsTags`/`parseSeriesTags` helpers add a structured `tags` object (`realm`, `environment`, applied filters, and per-series dimensions like `apiFamily`/`host`/`cacheStatus`) to each series, so consumers can group and filter by dimension instead of parsing the packed series id.
  - **CLI:** a new `metrics` topic with per-category commands (`b2c metrics overall`, `b2c metrics scapi`, `b2c metrics ocapi`, etc.) and `b2c metrics list` — with table and `--json` output. The time window is set with `--from`/`--to` (relative like `1h`/`7d` or ISO 8601) and an optional `--window` duration (e.g. `--from 7d --window 1h` for a one-hour window seven days ago). Any open bound defaults to a 24-hour window (the API caps a window at 24 hours), so requests always send an explicit range. Category-specific filter flags (`--api-family`, `--api-name`, `--ocapi-category`, `--ocapi-api`, `--third-party-service-id`) live only on the command they apply to. Each series is enriched with a structured `tags` object by default; use `--no-tags` for the raw API shape.
  - **MCP:** a `metrics_get` tool in the SCAPI toolset (gated as non-GA; requires `--allow-non-ga-tools`). Series are returned with the structured `tags` object.
  
  This is a closed beta feature: it must be enabled for your organization, and its behavior, output, and OAuth scopes may change without notice. [#552](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/552)

### MCP, Agent Skills

- Pin the `b2c-dx-mcp` Claude Code plugin to the exact published MCP server version instead of `@latest`, and version its marketplace entry. `npx` reuses a cached package for a floating tag, so users could keep running a stale server (e.g. missing the latest docs tools) after an upgrade — an exact version forces a fetch, and versioning the marketplace entry makes clients re-pull the new pin. The pin and marketplace version track the MCP release automatically. [#556](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/556)

### CLI, IDE Extension, MCP

- Updated dependencies [[`fdf3c5f`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/fdf3c5fe570ff71fddfc4aa0d83c9e3a05be5406)]:
  - @salesforce/b2c-tooling-sdk@1.19.0

[@salesforce/b2c-cli@1.19.0](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/%40salesforce/b2c-cli%401.19.0) · [b2c-agent-plugins@1.5.0](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-agent-plugins%401.5.0) · [b2c-vs-extension@0.10.3](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-vs-extension%400.10.3)

CLI 1.18.0 · IDE Extension 0.10.2 · MCP 1.5.0 · Agent Skills 1.4.5 · TypeScript SDK 1.18.0

### CLI, MCP, Agent Skills, TypeScript SDK

- Add B2C Commerce Developer Center guides and tooling docs to `b2c docs` (CLI), the `docs_*` MCP tools, and the SDK docs module. Documentation search now spans Script API reference, standard job steps, Developer Center guides (Commerce API, PWA Kit, SFRA, Storefront Next, B2C Commerce), and this tooling's own guides, with content-aware ranking and workspace-aware results tuned to the detected project type. [#546](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/546)

### CLI, TypeScript SDK

- Clarified SFCC_SHORTCODE vs SFCC_SHORT_CODE env var usage [#550](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/550)

- Improve "configuration required" errors and error telemetry: (Thanks [@clavery](https://github.com/clavery)!)
  - When a command needs instance/auth configuration but no source is found at all (no flags, environment variables, or dw.json), the error now points to the configuration guide (https://salesforcecommercecloud.github.io/b2c-developer-tooling/guide/configuration.html) so first-time users know where to start. When a config source is present, the existing message (which lists the specific flag/env var to set) is unchanged.
  - Command-error telemetry now tags each error with a category (`validation`, `guardrail`, or `runtime`) so expected user/config errors and safety-guard blocks can be separated from genuine runtime failures when measuring reliability.
  - All telemetry events now include an `isCI` flag indicating whether they originated from a CI/automation environment, so automation traffic can be distinguished from interactive developer usage. [#525](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/525)

- Fix OAuth client authentication failing for client secrets containing `+` (or other reserved characters). Per RFC 6749 §2.3.1, the client ID and secret are now form-url-encoded before being Base64-encoded into the HTTP Basic `Authorization` header, matching how they are already encoded when sent in the request body. Previously a raw `+` in a secret was decoded to a space by Account Manager, causing `invalid_client` errors on Basic auth even though the same credential worked via the request body. Affects the client-credentials/password grants (`b2c auth client`, token renewal) and SLAS private-client flows. [#551](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/551)

### CLI, MCP, TypeScript SDK

- Documentation entries now expose both a human-facing `url` (the rendered `.html` page, for citing/opening in a browser) and a machine-readable `sourceUrl` (the raw `.md`). Content is always sourced from `.md`, and Script API reference entries gain durable `developer.salesforce.com` permalinks (previously only guides had URLs). Surface them in the CLI with `--columns url,sourceUrl` (or `-x`) and in the MCP `docs_search` `verbose` output. [#546](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/546)

### MCP, Agent Skills

- Stop MCP debug tools from routinely suggesting the session cookie (`dwsid`). The cookie is only needed in the rare multi-app-server production instance group case where a breakpoint is never hit — it is now surfaced as a troubleshooting hint on breakpoint timeout instead of in the `debug_start_session`/`debug_list_sessions` descriptions. Also clarifies that the debugger needs standard Basic auth (account password or a `WebDAV File Access and UX Studio` access key) with no separate Business Manager enablement step. [#545](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/545)

### IDE Extension, MCP

- Telemetry for MCP tool failures and VS Code extension activation failures now records the underlying error message (and cause, when present), instead of an empty value. Previously these failure events carried no error detail, which made it impossible to diagnose why a tool call or activation failed. No new data beyond the error text is collected, matching what the CLI already reports for command errors. [#525](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/525)

### Agent Skills, TypeScript SDK

- Reworked the MCP Server documentation to be leaner and human-focused: trimmed internal implementation prose from the tool reference pages, reorganized the nav around toolsets and logical tool groups (combined the two log pages and the two SCAPI custom-API pages, with client-side redirects from the old URLs), corrected the project-type auto-detection table, and removed agent-directed prompting guidance. Renamed the homepage/header "Agent Skills" entry to "Agent Plugins" and grouped the MCP plugin with the core plugins in the install instructions. The `b2c-docs` skill now notes that the MCP `docs_*` tools offer the same coverage as the CLI. (Thanks [@clavery](https://github.com/clavery)!)
  
  The `tooling` documentation corpus (the CLI/MCP/SDK guides available via `docs search`/`read`) no longer bundles a copy of each page's markdown in the SDK — like the Developer Center guides, its content is now fetched online from the docs site at read time (with an offline fallback to the indexed summary). This shrinks the package and stops doc edits from duplicating content into the SDK. [#553](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/553)

### IDE Extension

- Improve the B2C Logs view when tailing. Log entries are now color-coded by level (error, warn, info, debug) with a built-in level filter, each entry is tagged with its source log prefix (e.g. `[error]`, `[customerror]`), and multi-line stack traces are indented so each entry reads as a single block. Uses the same "B2C Logs" output channel — no new panel or command. [#517](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/517)

### TypeScript SDK

- Add optional `preview` property to the page-type JSON Schema to mirror ECOM W-23233931. [#542](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/542)

- Bound the online documentation fetch (Developer Center guides read via `docs_read`) with a 10s timeout. Previously a stalled or unreachable connection would hang the read indefinitely; it now falls back to the indexed offline summary once the timeout elapses. [#554](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/554)

- Fix Storefront Next workspace detection misclassifying PWA Kit projects. A PWA Kit app that depends on `@salesforce/storefront-next-runtime` (now common) was incorrectly detected as Storefront Next as well. Detection now keys on the `@salesforce/storefront-next-dev` toolchain dependency, and a positive PWA Kit signal rules out Storefront Next. [#546](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/546)

- Refresh bundled Script API docs, XSD schemas, Page Designer content schemas, and standard job-step data to platform version DWAPP 26.7. The `content validate` command now matches the current platform rules for Page Designer component types — `component_id` accepts the full platform character set and is only valid on embedded components (`embedded: true`). [#543](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/543)

- Fix `b2c slas token` registered-customer login failing against a private SLAS client with `HTTP 400 code_verifier is required`. The registered login flow is always PKCE-protected, so the token exchange now always sends the `code_verifier` with the `authorization_code_pkce` grant — and, for private clients, additionally authenticates with the client secret via HTTP Basic. Registered login now works on both public and private clients; guest and `client_credentials` flows are unchanged. [#538](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/538)

### CLI, IDE Extension, MCP

- Updated dependencies [[`04b02f3`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/04b02f3b4b1c1e4c353ad081fc41304276c8bdb2), [`3d0c4aa`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/3d0c4aae7a2c6c33cd82ad94cde35e4cdb5155ca), [`85e6ca1`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/85e6ca110de162d3d574cf425bf3c0fdbb2834f1), [`7055134`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/7055134e755c391cd7839c11c99d66df18672866), [`85e6ca1`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/85e6ca110de162d3d574cf425bf3c0fdbb2834f1), [`9418f08`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/9418f088d7abfff01d41f4339beb62be29df7810), [`85e6ca1`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/85e6ca110de162d3d574cf425bf3c0fdbb2834f1), [`31ec679`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/31ec679ca6058d2ba7f453528af873163a5baeff), [`b62b00b`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/b62b00b47855273dfedea62f932696cc24ef148f), [`31324e1`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/31324e16fd0fb5402a3da1340f3575708c336661), [`cab53af`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/cab53af8c1190f749adf2ab8d70c01f79d7d2dbc)]:
  - @salesforce/b2c-tooling-sdk@1.18.0

[@salesforce/b2c-cli@1.18.0](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/%40salesforce/b2c-cli%401.18.0) · [b2c-agent-plugins@1.4.5](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-agent-plugins%401.4.5) · [b2c-vs-extension@0.10.2](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases/tag/b2c-vs-extension%400.10.2)

## Older Releases

[Releases before July 2026 on GitHub](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/releases)

