diff --git a/.changeset/RELEASE b/.changeset/RELEASE index 34433c6e..d04c4d51 100644 --- a/.changeset/RELEASE +++ b/.changeset/RELEASE @@ -1 +1 @@ -Fri May 29 16:33:24 UTC 2026 +Tue Jun 9 02:14:10 UTC 2026 diff --git a/.changeset/api-browser-custom-api-org-prefix.md b/.changeset/api-browser-custom-api-org-prefix.md deleted file mode 100644 index 5bd716d4..00000000 --- a/.changeset/api-browser-custom-api-org-prefix.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'b2c-vs-extension': patch ---- - -Fix VS Code API Browser handling of Custom APIs and shopper-named system APIs. Custom APIs now show endpoint paths with the required `/organizations/{organizationId}/...` prefix, and the Shopper/Admin classification is now derived from the spec's declared security schemes (ShopperToken / AmOAuth2 / BearerToken) rather than the API family name — fixing token selection for shopper-named APIs that live under non-shopper families (e.g. `product/shopper-products`, `checkout/shopper-baskets`) and for Custom APIs which can be either type. Resolves #453. diff --git a/.changeset/api-browser-sfnext-scapi-add.md b/.changeset/api-browser-sfnext-scapi-add.md deleted file mode 100644 index 1d343d0d..00000000 --- a/.changeset/api-browser-sfnext-scapi-add.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'b2c-vs-extension': minor ---- - -API Browser: right-click a Shopper schema to run `pnpm sfnext scapi add` in an integrated terminal. The action is only shown when the workspace is detected as a Storefront Next project. diff --git a/.changeset/doc-audit-and-jsdoc-pass.md b/.changeset/doc-audit-and-jsdoc-pass.md deleted file mode 100644 index a9c2b8b9..00000000 --- a/.changeset/doc-audit-and-jsdoc-pass.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@salesforce/b2c-dx-docs': patch -'@salesforce/b2c-tooling-sdk': patch ---- - -Documentation audit and repair pass: corrected stale CLI flag and command references across the CLI reference and guides, fixed broken examples (e.g. eCDN mTLS, sandbox `--no-*` flags, WebDAV `get` arguments), aligned SDK JSDoc with current signatures, and added the missing `operations/cap` typedoc entry point so the Commerce App SDK module appears in the API reference. Filled in JSDoc for previously undocumented public exports across the SDK (auth, clients, instance, logging, ods, mrt, cap, cip, debug, scaffold, schemas, skills, etc.) so the generated API docs cover the full public surface. diff --git a/.changeset/ecdn-firewall-rules-cli-commands.md b/.changeset/ecdn-firewall-rules-cli-commands.md deleted file mode 100644 index a9ca0459..00000000 --- a/.changeset/ecdn-firewall-rules-cli-commands.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -'@salesforce/b2c-cli': minor ---- - -Add `ecdn firewall` commands (`list`, `get`, `create`, `update`, `delete`, -`reorder`) for managing custom firewall rules on a CDN zone via the existing -cdn-zones v1 APIs (`/firewall-custom/rules`). Supports partial updates, -`--json` output (with table column flags on `list`), and routes destructive -operations (`delete`, `reorder`) through the same safety guard the rest of -the CLI uses. diff --git a/.changeset/fix-metadata-skill-value-definition-order.md b/.changeset/fix-metadata-skill-value-definition-order.md deleted file mode 100644 index b2f6cf0d..00000000 --- a/.changeset/fix-metadata-skill-value-definition-order.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@salesforce/b2c-agent-plugins': patch ---- - -Fix `value-definition` element order in the b2c-metadata and b2c-site-import-export skills. The B2C `metadata.xsd` requires `` to appear before `` inside each ``; the skill examples had them reversed, which caused enum/set attribute imports to fail site-archive validation with `cvc-complex-type.2.4.d`. Examples now use the correct order and call out the requirement. diff --git a/.changeset/fix-mtls-dispatcher-fetch.md b/.changeset/fix-mtls-dispatcher-fetch.md deleted file mode 100644 index b99e0d89..00000000 --- a/.changeset/fix-mtls-dispatcher-fetch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@salesforce/b2c-tooling-sdk': patch ---- - -Make mTLS / self-signed client certificates robust against Node's bundled undici version. The TLS dispatcher is an undici `Agent` from the `undici` npm package, but it was handed to `global.fetch`, which is backed by whatever undici Node bundles internally — a version that drifts across Node releases and can be a different major than the npm package. Because undici's request-handler interface changed across majors (and the cross-version compatibility shim is removed in undici 8), pairing a foreign Agent with `global.fetch` can fail and silently drop the client certificate. Requests that carry a dispatcher now use undici's own `fetch` so the Agent and fetch always share one undici instance, regardless of Node version. Applies to all auth strategies (basic, client-credentials, JWT, implicit, API key), so staging deploys with `--certificate`/`--selfsigned` keep working as Node updates its bundled undici. diff --git a/.changeset/mcp-logs-and-docs-tools.md b/.changeset/mcp-logs-and-docs-tools.md deleted file mode 100644 index 119b733b..00000000 --- a/.changeset/mcp-logs-and-docs-tools.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@salesforce/b2c-dx-mcp': minor -'@salesforce/b2c-tooling-sdk': minor ---- - -Add MCP tools for log inspection and documentation lookup. Logs: `logs_list_files`, `logs_get_recent`, and a `logs_watch_start` / `logs_watch_poll` / `logs_watch_stop` / `logs_watch_list` lifecycle that buffers entries between polls so agents don't miss logs produced between tool calls. Docs: `docs_search`, `docs_read`, `docs_list`, `docs_schema_search`, `docs_schema_read`, `docs_schema_list` for the bundled Script API and XSD schema corpora. Adds a new `DIAGNOSTICS` toolset that groups the script debugger and log tools; like `SCAPI`, it is always enabled (auto-discovered for every project type). SDK now also exports the log filter helpers (`parseSinceTime`, `filterBySince`, `filterByLevel`, `filterBySearch`, `matchesLevel`, `matchesSearch`) for reuse. - -The log watch buffers `logs_watch_start` defaults to `last_entries: 0` (capture only new entries, matching the "start before triggering" workflow), bounds the entry buffer by bytes as well as count, reports each discovered file only once per poll, stops the underlying tail if a concurrent-start hostname race loses registration, and makes `logs_watch_stop` truly idempotent. diff --git a/.changeset/multi-part-site-import.md b/.changeset/multi-part-site-import.md deleted file mode 100644 index 9533ff1a..00000000 --- a/.changeset/multi-part-site-import.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@salesforce/b2c-cli': minor -'@salesforce/b2c-tooling-sdk': minor -'@salesforce/b2c-agent-plugins': patch ---- - -`b2c job import` now supports `--split` for importing directories larger than the instance archive size limit. With `--split` (and optional `--max-size`, default `190mb`), the import is broken into several smaller archives: order-sensitive metadata/XML is imported first — kept together when it fits, otherwise split at data-unit boundaries in dependency order — followed by static assets packed by compressed size. A normal import that exceeds the limit now warns and recommends `--split`. - -Example: `b2c job import ./big-site-data --split --max-size 150mb` - -The SDK adds a corresponding `siteArchiveImportSplit()` operation. diff --git a/.changeset/remove-cap-root-dir-convention-warning.md b/.changeset/remove-cap-root-dir-convention-warning.md deleted file mode 100644 index 084ec8c0..00000000 --- a/.changeset/remove-cap-root-dir-convention-warning.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@salesforce/b2c-tooling-sdk': patch ---- - -Remove the CAP validation warning that flagged a root directory not matching the `{id}-v{version}` naming convention. This convention is no longer required, so the check has been dropped from `b2c cap validate` (and `b2c cap install`). diff --git a/.changeset/remove-page-designer-assistant.md b/.changeset/remove-page-designer-assistant.md deleted file mode 100644 index 721e1706..00000000 --- a/.changeset/remove-page-designer-assistant.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'b2c-vs-extension': minor ---- - -Remove the Page Designer Assistant webview and its "Open Page Designer Assistant UI" command from the VS Code extension. diff --git a/.changeset/setup-action-idempotent-install.md b/.changeset/setup-action-idempotent-install.md deleted file mode 100644 index 1fae1aec..00000000 --- a/.changeset/setup-action-idempotent-install.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@salesforce/b2c-dx-docs': patch ---- - -Document the GitHub Actions install behavior change. The high-level actions (`code-deploy`, `data-import`, `job-run`, `mrt-deploy`, `webdav-upload`) now reuse an already-installed CLI and install one only when none is present — so a deploy that follows a setup step, and repeated operations on a persistent self-hosted runner, no longer trigger a redundant reinstall or an unexpected upgrade. The `setup` action called directly still installs the version you request (a new `skip-if-present` input opts into reuse). The actions no longer cache the npm download directory, which had grown to gigabytes on long-lived self-hosted runners and slowed restores. Plugin installs are skipped by exact name match. diff --git a/.changeset/staging-ci-cd-docs.md b/.changeset/staging-ci-cd-docs.md deleted file mode 100644 index d8316570..00000000 --- a/.changeset/staging-ci-cd-docs.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@salesforce/b2c-dx-docs': patch ---- - -Document deploying to staging environments (two-factor mTLS) from CI/CD. The `setup` GitHub Action now accepts `webdav-server`, `certificate`, `certificate-passphrase`, and `selfsigned` inputs so workflows can target staging instances that require a separate WebDAV hostname and a client certificate. The CI/CD guide includes a full GitHub Actions example using a base64-encoded `.p12` secret. diff --git a/.changeset/vsix-build-packaging-hardening.md b/.changeset/vsix-build-packaging-hardening.md deleted file mode 100644 index 6a01c0f0..00000000 --- a/.changeset/vsix-build-packaging-hardening.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'b2c-vs-extension': patch ---- - -Harden the extension build and packaging pipeline. The esbuild bundle now minifies, drops debugger statements, targets Node 22 (matching VS Code 1.105's runtime), and inlines `require('@salesforce/b2c-tooling-sdk/package.json')` at SDK source-load time so minification can no longer break the substitution. SDK data directories that the runtime expects (`cip-proto`, `script-api`, `content-schemas`, `scaffolds`) are all staged into `dist/data/` instead of just `scaffolds`. The `inject-script-types` step that adds the bundled TypeScript Server plugin to the VSIX now uses pure-Node JSZip instead of shelling out to `zip`/`unzip`, removing the host-binary requirement (Windows CI compatibility) and fixing a regression where `[Content_Types].xml` entries for the injected plugin were emitted without their leading dot. The extension version and telemetry connection string are now injected as build-time constants, eliminating a runtime `readFileSync(package.json)`. `vscode:prepublish` now builds `@salesforce/b2c-script-types` before the extension bundle so a stale plugin tree can no longer ship. diff --git a/.changeset/vsix-phase1-correctness-ux.md b/.changeset/vsix-phase1-correctness-ux.md deleted file mode 100644 index c4dc58fc..00000000 --- a/.changeset/vsix-phase1-correctness-ux.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -'b2c-vs-extension': patch ---- - -Correctness and UX hardening pass across the extension: - -- **Content libraries**: `ContentFileSystemProvider.stat()` now returns a stable `mtime` instead of `Date.now()` per call. VS Code no longer believes content files are constantly mutating, eliminating phantom "file modified externally" prompts and silent buffer reloads that could clobber unsaved edits. -- **WebDAV explorer**: F2-rename now works. The `rename()` method delegates to the SDK's `webdav.move` (already used by drag-and-drop) instead of throwing `NoPermissions`. Cross-root attempts and 412 conflicts are mapped to the right `vscode.FileSystemError`. -- **Activation performance**: replaced sync `fs.readFileSync` / `existsSync` / `statSync` on the activation hot path (`B2CExtensionConfig`) and in the per-paint CAP file-decoration provider with `vscode.workspace.fs` async equivalents and a Set lookup, respectively. CAP decorations now answer in O(1) without filesystem syscalls. -- **Cancellation**: long-running operations (sandbox clone polling, CAP install, deploy, content export, Swagger UI proxy fetches) now show a working Cancel button. Cancelling stops the local poll/wait; aborting the server-side operation requires SDK `AbortSignal` support which is a separate change. -- **Tree state stability**: every tree provider (sandbox, WebDAV, content libraries, API browser, cartridges) now sets a stable `TreeItem.id`, so expand/collapse state survives refresh and `treeView.reveal()` works without try/catch fallback. -- **Safety + telemetry coverage**: 11 contributed commands previously bypassed `registerSafeCommand`, including `b2c-dx.sandbox.clone` (a billable operation). All now route through the safety guard and feature-usage telemetry. Added a `scriptTypes` feature category and command-prefix mapping. -- **Dead code removal**: removed an unused `createDeleteAndDeployCommand`, the unused `tempDirs` cleanup loop in `cartridge-commands`, the dead `openExternal` branch in the Page Designer webview message handler, and the never-implemented `b2c-dx.codeSync.diffCartridge` command. diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index f095d1be..54a452e7 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -17,7 +17,7 @@ "source": "./skills/b2c-cli", "category": "productivity", "strict": false, - "version": "1.3.2" + "version": "1.3.3" }, { "name": "b2c", @@ -29,7 +29,7 @@ "source": "./skills/b2c", "category": "productivity", "strict": false, - "version": "1.3.2" + "version": "1.3.3" }, { "name": "b2c-dx-mcp", @@ -52,7 +52,7 @@ "source": "./skills/storefront-next", "category": "productivity", "strict": false, - "version": "1.3.2" + "version": "1.3.3" }, { "name": "cap-dev", diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 671812e9..a8cd2792 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,15 @@ # @salesforce/b2c-dx-docs +## 0.3.4 + +### Patch Changes + +- [#473](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/473) [`b723939`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/b72393951bb95b64f3291cd3cb76197e280a6a37) - Documentation audit and repair pass: corrected stale CLI flag and command references across the CLI reference and guides, fixed broken examples (e.g. eCDN mTLS, sandbox `--no-*` flags, WebDAV `get` arguments), aligned SDK JSDoc with current signatures, and added the missing `operations/cap` typedoc entry point so the Commerce App SDK module appears in the API reference. Filled in JSDoc for previously undocumented public exports across the SDK (auth, clients, instance, logging, ods, mrt, cap, cip, debug, scaffold, schemas, skills, etc.) so the generated API docs cover the full public surface. (Thanks [@clavery](https://github.com/clavery)!) + +- [#478](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/478) [`d19802f`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/d19802f26b5e1c0a609a2a27daa60dd1763b6786) - Document the GitHub Actions install behavior change. The high-level actions (`code-deploy`, `data-import`, `job-run`, `mrt-deploy`, `webdav-upload`) now reuse an already-installed CLI and install one only when none is present — so a deploy that follows a setup step, and repeated operations on a persistent self-hosted runner, no longer trigger a redundant reinstall or an unexpected upgrade. The `setup` action called directly still installs the version you request (a new `skip-if-present` input opts into reuse). The actions no longer cache the npm download directory, which had grown to gigabytes on long-lived self-hosted runners and slowed restores. Plugin installs are skipped by exact name match. (Thanks [@clavery](https://github.com/clavery)!) + +- [#431](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/431) [`80d594f`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/80d594f741b6eb9c8ac76a4bb954403518497478) - Document deploying to staging environments (two-factor mTLS) from CI/CD. The `setup` GitHub Action now accepts `webdav-server`, `certificate`, `certificate-passphrase`, and `selfsigned` inputs so workflows can target staging instances that require a separate WebDAV hostname and a client certificate. The CI/CD guide includes a full GitHub Actions example using a base64-encoded `.p12` secret. (Thanks [@clavery](https://github.com/clavery)!) + ## 0.3.3 ### Patch Changes diff --git a/docs/package.json b/docs/package.json index bab17201..5a54be6a 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,6 +1,6 @@ { "name": "@salesforce/b2c-dx-docs", - "version": "0.3.3", + "version": "0.3.4", "private": true, "description": "Documentation for B2C Developer Tooling", "scripts": { diff --git a/packages/b2c-cli/CHANGELOG.md b/packages/b2c-cli/CHANGELOG.md index e327af97..aba33e1d 100644 --- a/packages/b2c-cli/CHANGELOG.md +++ b/packages/b2c-cli/CHANGELOG.md @@ -1,5 +1,27 @@ # @salesforce/b2c-cli +## 1.14.0 + +### Minor Changes + +- [#452](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/452) [`9e44bee`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/9e44bee20a6a1aa1439b530e37965e35594189a9) - Add `ecdn firewall` commands (`list`, `get`, `create`, `update`, `delete`, (Thanks [@charithaT07](https://github.com/charithaT07)!) + `reorder`) for managing custom firewall rules on a CDN zone via the existing + cdn-zones v1 APIs (`/firewall-custom/rules`). Supports partial updates, + `--json` output (with table column flags on `list`), and routes destructive + operations (`delete`, `reorder`) through the same safety guard the rest of + the CLI uses. + +- [#484](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/484) [`80e63fc`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/80e63fca888d9b83efd53c9c0054247fb2aa31b3) - `b2c job import` now supports `--split` for importing directories larger than the instance archive size limit. With `--split` (and optional `--max-size`, default `190mb`), the import is broken into several smaller archives: order-sensitive metadata/XML is imported first — kept together when it fits, otherwise split at data-unit boundaries in dependency order — followed by static assets packed by compressed size. A normal import that exceeds the limit now warns and recommends `--split`. (Thanks [@clavery](https://github.com/clavery)!) + + Example: `b2c job import ./big-site-data --split --max-size 150mb` + + The SDK adds a corresponding `siteArchiveImportSplit()` operation. + +### Patch Changes + +- Updated dependencies [[`b723939`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/b72393951bb95b64f3291cd3cb76197e280a6a37), [`21bbed0`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/21bbed0ea1b42e8750d4259669370f8bcf562c10), [`de8d40b`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/de8d40b54dc923c5805fac2ef587db8b86349a6b), [`80e63fc`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/80e63fca888d9b83efd53c9c0054247fb2aa31b3), [`c8e0b60`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/c8e0b602e1a8da88f7e6620e5d5614f3a55689bd)]: + - @salesforce/b2c-tooling-sdk@1.12.0 + ## 1.13.0 ### Minor Changes diff --git a/packages/b2c-cli/package.json b/packages/b2c-cli/package.json index ff3bce93..5c972991 100644 --- a/packages/b2c-cli/package.json +++ b/packages/b2c-cli/package.json @@ -1,7 +1,7 @@ { "name": "@salesforce/b2c-cli", "description": "A Salesforce B2C Commerce CLI", - "version": "1.13.0", + "version": "1.14.0", "author": "Charles Lavery", "bin": { "b2c": "./bin/run.js" diff --git a/packages/b2c-dx-mcp/CHANGELOG.md b/packages/b2c-dx-mcp/CHANGELOG.md index 75b6b5e7..35d33ca9 100644 --- a/packages/b2c-dx-mcp/CHANGELOG.md +++ b/packages/b2c-dx-mcp/CHANGELOG.md @@ -1,5 +1,18 @@ # @salesforce/b2c-dx-mcp +## 1.2.0 + +### Minor Changes + +- [#420](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/420) [`de8d40b`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/de8d40b54dc923c5805fac2ef587db8b86349a6b) - Add MCP tools for log inspection and documentation lookup. Logs: `logs_list_files`, `logs_get_recent`, and a `logs_watch_start` / `logs_watch_poll` / `logs_watch_stop` / `logs_watch_list` lifecycle that buffers entries between polls so agents don't miss logs produced between tool calls. Docs: `docs_search`, `docs_read`, `docs_list`, `docs_schema_search`, `docs_schema_read`, `docs_schema_list` for the bundled Script API and XSD schema corpora. Adds a new `DIAGNOSTICS` toolset that groups the script debugger and log tools; like `SCAPI`, it is always enabled (auto-discovered for every project type). SDK now also exports the log filter helpers (`parseSinceTime`, `filterBySince`, `filterByLevel`, `filterBySearch`, `matchesLevel`, `matchesSearch`) for reuse. (Thanks [@clavery](https://github.com/clavery)!) + + The log watch buffers `logs_watch_start` defaults to `last_entries: 0` (capture only new entries, matching the "start before triggering" workflow), bounds the entry buffer by bytes as well as count, reports each discovered file only once per poll, stops the underlying tail if a concurrent-start hostname race loses registration, and makes `logs_watch_stop` truly idempotent. + +### Patch Changes + +- Updated dependencies [[`b723939`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/b72393951bb95b64f3291cd3cb76197e280a6a37), [`21bbed0`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/21bbed0ea1b42e8750d4259669370f8bcf562c10), [`de8d40b`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/de8d40b54dc923c5805fac2ef587db8b86349a6b), [`80e63fc`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/80e63fca888d9b83efd53c9c0054247fb2aa31b3), [`c8e0b60`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/c8e0b602e1a8da88f7e6620e5d5614f3a55689bd)]: + - @salesforce/b2c-tooling-sdk@1.12.0 + ## 1.1.3 ### Patch Changes diff --git a/packages/b2c-dx-mcp/package.json b/packages/b2c-dx-mcp/package.json index a93925e0..1665eaca 100644 --- a/packages/b2c-dx-mcp/package.json +++ b/packages/b2c-dx-mcp/package.json @@ -1,7 +1,7 @@ { "name": "@salesforce/b2c-dx-mcp", "description": "MCP server for B2C Commerce developer experience tools", - "version": "1.1.3", + "version": "1.2.0", "author": "Salesforce", "license": "Apache-2.0", "repository": "SalesforceCommerceCloud/b2c-developer-tooling", diff --git a/packages/b2c-tooling-sdk/CHANGELOG.md b/packages/b2c-tooling-sdk/CHANGELOG.md index 0eac1db7..478f243c 100644 --- a/packages/b2c-tooling-sdk/CHANGELOG.md +++ b/packages/b2c-tooling-sdk/CHANGELOG.md @@ -1,5 +1,27 @@ # @salesforce/b2c-tooling-sdk +## 1.12.0 + +### Minor Changes + +- [#420](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/420) [`de8d40b`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/de8d40b54dc923c5805fac2ef587db8b86349a6b) - Add MCP tools for log inspection and documentation lookup. Logs: `logs_list_files`, `logs_get_recent`, and a `logs_watch_start` / `logs_watch_poll` / `logs_watch_stop` / `logs_watch_list` lifecycle that buffers entries between polls so agents don't miss logs produced between tool calls. Docs: `docs_search`, `docs_read`, `docs_list`, `docs_schema_search`, `docs_schema_read`, `docs_schema_list` for the bundled Script API and XSD schema corpora. Adds a new `DIAGNOSTICS` toolset that groups the script debugger and log tools; like `SCAPI`, it is always enabled (auto-discovered for every project type). SDK now also exports the log filter helpers (`parseSinceTime`, `filterBySince`, `filterByLevel`, `filterBySearch`, `matchesLevel`, `matchesSearch`) for reuse. (Thanks [@clavery](https://github.com/clavery)!) + + The log watch buffers `logs_watch_start` defaults to `last_entries: 0` (capture only new entries, matching the "start before triggering" workflow), bounds the entry buffer by bytes as well as count, reports each discovered file only once per poll, stops the underlying tail if a concurrent-start hostname race loses registration, and makes `logs_watch_stop` truly idempotent. + +- [#484](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/484) [`80e63fc`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/80e63fca888d9b83efd53c9c0054247fb2aa31b3) - `b2c job import` now supports `--split` for importing directories larger than the instance archive size limit. With `--split` (and optional `--max-size`, default `190mb`), the import is broken into several smaller archives: order-sensitive metadata/XML is imported first — kept together when it fits, otherwise split at data-unit boundaries in dependency order — followed by static assets packed by compressed size. A normal import that exceeds the limit now warns and recommends `--split`. (Thanks [@clavery](https://github.com/clavery)!) + + Example: `b2c job import ./big-site-data --split --max-size 150mb` + + The SDK adds a corresponding `siteArchiveImportSplit()` operation. + +### Patch Changes + +- [#473](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/473) [`b723939`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/b72393951bb95b64f3291cd3cb76197e280a6a37) - Documentation audit and repair pass: corrected stale CLI flag and command references across the CLI reference and guides, fixed broken examples (e.g. eCDN mTLS, sandbox `--no-*` flags, WebDAV `get` arguments), aligned SDK JSDoc with current signatures, and added the missing `operations/cap` typedoc entry point so the Commerce App SDK module appears in the API reference. Filled in JSDoc for previously undocumented public exports across the SDK (auth, clients, instance, logging, ods, mrt, cap, cip, debug, scaffold, schemas, skills, etc.) so the generated API docs cover the full public surface. (Thanks [@clavery](https://github.com/clavery)!) + +- [#474](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/474) [`21bbed0`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/21bbed0ea1b42e8750d4259669370f8bcf562c10) - Make mTLS / self-signed client certificates robust against Node's bundled undici version. The TLS dispatcher is an undici `Agent` from the `undici` npm package, but it was handed to `global.fetch`, which is backed by whatever undici Node bundles internally — a version that drifts across Node releases and can be a different major than the npm package. Because undici's request-handler interface changed across majors (and the cross-version compatibility shim is removed in undici 8), pairing a foreign Agent with `global.fetch` can fail and silently drop the client certificate. Requests that carry a dispatcher now use undici's own `fetch` so the Agent and fetch always share one undici instance, regardless of Node version. Applies to all auth strategies (basic, client-credentials, JWT, implicit, API key), so staging deploys with `--certificate`/`--selfsigned` keep working as Node updates its bundled undici. (Thanks [@clavery](https://github.com/clavery)!) + +- [#470](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/470) [`c8e0b60`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/c8e0b602e1a8da88f7e6620e5d5614f3a55689bd) - Remove the CAP validation warning that flagged a root directory not matching the `{id}-v{version}` naming convention. This convention is no longer required, so the check has been dropped from `b2c cap validate` (and `b2c cap install`). (Thanks [@clavery](https://github.com/clavery)!) + ## 1.11.1 ### Patch Changes diff --git a/packages/b2c-tooling-sdk/package.json b/packages/b2c-tooling-sdk/package.json index a93306d5..cd0ea30a 100644 --- a/packages/b2c-tooling-sdk/package.json +++ b/packages/b2c-tooling-sdk/package.json @@ -1,7 +1,7 @@ { "name": "@salesforce/b2c-tooling-sdk", "description": "Core tooling library for Salesforce B2C Commerce CLI", - "version": "1.11.1", + "version": "1.12.0", "author": "Charles Lavery", "license": "Apache-2.0", "repository": "SalesforceCommerceCloud/b2c-developer-tooling", diff --git a/packages/b2c-vs-extension/CHANGELOG.md b/packages/b2c-vs-extension/CHANGELOG.md index 199544a5..10975d9a 100644 --- a/packages/b2c-vs-extension/CHANGELOG.md +++ b/packages/b2c-vs-extension/CHANGELOG.md @@ -1,5 +1,31 @@ # Change Log +## 0.9.0 + +### Minor Changes + +- [#457](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/457) [`8aa076e`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/8aa076e367b5f99ad3c0a5e7c0926c464a7f5a83) - API Browser: right-click a Shopper schema to run `pnpm sfnext scapi add` in an integrated terminal. The action is only shown when the workspace is detected as a Storefront Next project. (Thanks [@clavery](https://github.com/clavery)!) + +- [#467](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/467) [`ce0c0b5`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/ce0c0b5c3961faa86dc446f061316100bf4ecbcc) - Remove the Page Designer Assistant webview and its "Open Page Designer Assistant UI" command from the VS Code extension. (Thanks [@clavery](https://github.com/clavery)!) + +### Patch Changes + +- [#458](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/458) [`637df9e`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/637df9ed4d02d4b9ba6cfb68a149dddce6dba8d5) - Fix VS Code API Browser handling of Custom APIs and shopper-named system APIs. Custom APIs now show endpoint paths with the required `/organizations/{organizationId}/...` prefix, and the Shopper/Admin classification is now derived from the spec's declared security schemes (ShopperToken / AmOAuth2 / BearerToken) rather than the API family name — fixing token selection for shopper-named APIs that live under non-shopper families (e.g. `product/shopper-products`, `checkout/shopper-baskets`) and for Custom APIs which can be either type. Resolves #453. (Thanks [@clavery](https://github.com/clavery)!) + +- [#475](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/475) [`0363dca`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/0363dca90f1eb3822d0c750d29ace743e82afcaf) - Harden the extension build and packaging pipeline. The esbuild bundle now minifies, drops debugger statements, targets Node 22 (matching VS Code 1.105's runtime), and inlines `require('@salesforce/b2c-tooling-sdk/package.json')` at SDK source-load time so minification can no longer break the substitution. SDK data directories that the runtime expects (`cip-proto`, `script-api`, `content-schemas`, `scaffolds`) are all staged into `dist/data/` instead of just `scaffolds`. The `inject-script-types` step that adds the bundled TypeScript Server plugin to the VSIX now uses pure-Node JSZip instead of shelling out to `zip`/`unzip`, removing the host-binary requirement (Windows CI compatibility) and fixing a regression where `[Content_Types].xml` entries for the injected plugin were emitted without their leading dot. The extension version and telemetry connection string are now injected as build-time constants, eliminating a runtime `readFileSync(package.json)`. `vscode:prepublish` now builds `@salesforce/b2c-script-types` before the extension bundle so a stale plugin tree can no longer ship. (Thanks [@clavery](https://github.com/clavery)!) + +- [#475](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/475) [`0363dca`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/0363dca90f1eb3822d0c750d29ace743e82afcaf) - Correctness and UX hardening pass across the extension: (Thanks [@clavery](https://github.com/clavery)!) + - **Content libraries**: `ContentFileSystemProvider.stat()` now returns a stable `mtime` instead of `Date.now()` per call. VS Code no longer believes content files are constantly mutating, eliminating phantom "file modified externally" prompts and silent buffer reloads that could clobber unsaved edits. + - **WebDAV explorer**: F2-rename now works. The `rename()` method delegates to the SDK's `webdav.move` (already used by drag-and-drop) instead of throwing `NoPermissions`. Cross-root attempts and 412 conflicts are mapped to the right `vscode.FileSystemError`. + - **Activation performance**: replaced sync `fs.readFileSync` / `existsSync` / `statSync` on the activation hot path (`B2CExtensionConfig`) and in the per-paint CAP file-decoration provider with `vscode.workspace.fs` async equivalents and a Set lookup, respectively. CAP decorations now answer in O(1) without filesystem syscalls. + - **Cancellation**: long-running operations (sandbox clone polling, CAP install, deploy, content export, Swagger UI proxy fetches) now show a working Cancel button. Cancelling stops the local poll/wait; aborting the server-side operation requires SDK `AbortSignal` support which is a separate change. + - **Tree state stability**: every tree provider (sandbox, WebDAV, content libraries, API browser, cartridges) now sets a stable `TreeItem.id`, so expand/collapse state survives refresh and `treeView.reveal()` works without try/catch fallback. + - **Safety + telemetry coverage**: 11 contributed commands previously bypassed `registerSafeCommand`, including `b2c-dx.sandbox.clone` (a billable operation). All now route through the safety guard and feature-usage telemetry. Added a `scriptTypes` feature category and command-prefix mapping. + - **Dead code removal**: removed an unused `createDeleteAndDeployCommand`, the unused `tempDirs` cleanup loop in `cartridge-commands`, the dead `openExternal` branch in the Page Designer webview message handler, and the never-implemented `b2c-dx.codeSync.diffCartridge` command. + +- Updated dependencies [[`b723939`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/b72393951bb95b64f3291cd3cb76197e280a6a37), [`21bbed0`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/21bbed0ea1b42e8750d4259669370f8bcf562c10), [`de8d40b`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/de8d40b54dc923c5805fac2ef587db8b86349a6b), [`80e63fc`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/80e63fca888d9b83efd53c9c0054247fb2aa31b3), [`c8e0b60`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/c8e0b602e1a8da88f7e6620e5d5614f3a55689bd)]: + - @salesforce/b2c-tooling-sdk@1.12.0 + ## 0.8.2 ### Patch Changes diff --git a/packages/b2c-vs-extension/package.json b/packages/b2c-vs-extension/package.json index 252aa46a..09b84063 100644 --- a/packages/b2c-vs-extension/package.json +++ b/packages/b2c-vs-extension/package.json @@ -2,7 +2,7 @@ "name": "b2c-vs-extension", "displayName": "B2C DX VSCE", "description": "VS Code extension for B2C Commerce developer experience (Page Designer assistant, B2C CLI integration)", - "version": "0.8.2", + "version": "0.9.0", "publisher": "Salesforce", "license": "Apache-2.0", "repository": "SalesforceCommerceCloud/b2c-developer-tooling", diff --git a/skills/CHANGELOG.md b/skills/CHANGELOG.md index a756cdfc..99f7f8bd 100644 --- a/skills/CHANGELOG.md +++ b/skills/CHANGELOG.md @@ -1,5 +1,17 @@ # @salesforce/b2c-agent-plugins +## 1.3.3 + +### Patch Changes + +- [#485](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/485) [`e6cec0a`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/e6cec0a704c65d9f0241fa9771fed37017eb7b1a) - Fix `value-definition` element order in the b2c-metadata and b2c-site-import-export skills. The B2C `metadata.xsd` requires `` to appear before `` inside each ``; the skill examples had them reversed, which caused enum/set attribute imports to fail site-archive validation with `cvc-complex-type.2.4.d`. Examples now use the correct order and call out the requirement. (Thanks [@clavery](https://github.com/clavery)!) + +- [#484](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/pull/484) [`80e63fc`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/80e63fca888d9b83efd53c9c0054247fb2aa31b3) - `b2c job import` now supports `--split` for importing directories larger than the instance archive size limit. With `--split` (and optional `--max-size`, default `190mb`), the import is broken into several smaller archives: order-sensitive metadata/XML is imported first — kept together when it fits, otherwise split at data-unit boundaries in dependency order — followed by static assets packed by compressed size. A normal import that exceeds the limit now warns and recommends `--split`. (Thanks [@clavery](https://github.com/clavery)!) + + Example: `b2c job import ./big-site-data --split --max-size 150mb` + + The SDK adds a corresponding `siteArchiveImportSplit()` operation. + ## 1.3.2 ### Patch Changes diff --git a/skills/b2c-cli/.codex-plugin/plugin.json b/skills/b2c-cli/.codex-plugin/plugin.json index ab3d9938..1ea48489 100644 --- a/skills/b2c-cli/.codex-plugin/plugin.json +++ b/skills/b2c-cli/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "b2c-cli", - "version": "1.3.2", + "version": "1.3.3", "description": "B2C CLI Skills for Salesforce Commerce Cloud development.", "author": { "name": "Salesforce" diff --git a/skills/b2c/.codex-plugin/plugin.json b/skills/b2c/.codex-plugin/plugin.json index efbd8d25..9fb0a488 100644 --- a/skills/b2c/.codex-plugin/plugin.json +++ b/skills/b2c/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "b2c", - "version": "1.3.2", + "version": "1.3.3", "description": "B2C Commerce development skills including Custom API development guides.", "author": { "name": "Salesforce" diff --git a/skills/package.json b/skills/package.json index ee5798c4..d8510f1e 100644 --- a/skills/package.json +++ b/skills/package.json @@ -1,6 +1,6 @@ { "name": "@salesforce/b2c-agent-plugins", - "version": "1.3.2", + "version": "1.3.3", "description": "B2C Commerce agent skills plugins (b2c-cli, b2c). Private — distributed via GitHub release zips.", "private": true } diff --git a/skills/storefront-next/.codex-plugin/plugin.json b/skills/storefront-next/.codex-plugin/plugin.json index 8950a3d6..8365c60e 100644 --- a/skills/storefront-next/.codex-plugin/plugin.json +++ b/skills/storefront-next/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "storefront-next", - "version": "1.3.2", + "version": "1.3.3", "description": "Storefront Next development skills for building React 19 storefronts on Salesforce B2C Commerce.", "author": { "name": "Salesforce"