@@ -394,7 +394,8 @@ jobs:
394394 - name : Create GitHub Release
395395 if : steps.release-type.outputs.type == 'stable' && steps.changesets.outputs.skip != 'true' && steps.quick-check.outputs.skip != 'true'
396396 run : |
397- # Determine the release tag — prefer CLI as the user-facing product
397+ # Determine the release tag — prefer CLI as the user-facing product.
398+ # VSX is excluded: it gets its own dedicated release to avoid tag collisions.
398399 if [[ "${{ steps.packages.outputs.publish_cli }}" == "true" ]]; then
399400 RELEASE_TAG="@salesforce/b2c-cli@${{ steps.packages.outputs.version_cli }}"
400401 elif [[ "${{ steps.packages.outputs.publish_sdk }}" == "true" ]]; then
@@ -403,18 +404,27 @@ jobs:
403404 RELEASE_TAG="@salesforce/b2c-dx-mcp@${{ steps.packages.outputs.version_mcp }}"
404405 elif [[ "${{ steps.packages.outputs.publish_mrt }}" == "true" ]]; then
405406 RELEASE_TAG="@salesforce/mrt-utilities@${{ steps.packages.outputs.version_mrt }}"
406- elif [[ "${{ steps.packages.outputs.publish_vsx }}" == "true" ]]; then
407- RELEASE_TAG="b2c-vs-extension@${{ steps.packages.outputs.version_vsx }}"
408407 elif [[ "${{ steps.packages.outputs.publish_docs }}" == "true" ]]; then
409408 RELEASE_TAG="docs@${{ steps.packages.outputs.version_docs }}"
410409 elif [[ "${{ steps.packages.outputs.publish_plugins }}" == "true" ]]; then
411410 RELEASE_TAG="b2c-agent-plugins@${{ steps.packages.outputs.version_plugins }}"
412411 else
413- echo "No packages published, skipping release"
412+ echo "No non-VSX packages published, skipping main release"
414413 exit 0
415414 fi
416415
417- gh release create "$RELEASE_TAG" --notes-file /tmp/release-notes.md
416+ # Build a human-readable title from published package versions
417+ TITLE_PARTS=()
418+ [[ "${{ steps.packages.outputs.publish_cli }}" == "true" ]] && TITLE_PARTS+=("b2c-cli ${{ steps.packages.outputs.version_cli }}")
419+ [[ "${{ steps.packages.outputs.publish_sdk }}" == "true" ]] && TITLE_PARTS+=("b2c-tooling-sdk ${{ steps.packages.outputs.version_sdk }}")
420+ [[ "${{ steps.packages.outputs.publish_mcp }}" == "true" ]] && TITLE_PARTS+=("b2c-dx-mcp ${{ steps.packages.outputs.version_mcp }}")
421+ [[ "${{ steps.packages.outputs.publish_mrt }}" == "true" ]] && TITLE_PARTS+=("mrt-utilities ${{ steps.packages.outputs.version_mrt }}")
422+ [[ "${{ steps.packages.outputs.publish_vsx }}" == "true" ]] && TITLE_PARTS+=("b2c-vs-extension ${{ steps.packages.outputs.version_vsx }}")
423+ [[ "${{ steps.packages.outputs.publish_docs }}" == "true" ]] && TITLE_PARTS+=("docs ${{ steps.packages.outputs.version_docs }}")
424+ [[ "${{ steps.packages.outputs.publish_plugins }}" == "true" ]] && TITLE_PARTS+=("agent-plugins ${{ steps.packages.outputs.version_plugins }}")
425+ RELEASE_TITLE="Version Packages — $(IFS=', '; echo "${TITLE_PARTS[*]}")"
426+
427+ gh release create "$RELEASE_TAG" --title "$RELEASE_TITLE" --notes-file /tmp/release-notes.md
418428 env :
419429 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
420430
@@ -433,7 +443,7 @@ jobs:
433443 - name : Upload skills to release
434444 if : steps.release-type.outputs.type == 'stable' && steps.changesets.outputs.skip != 'true' && steps.quick-check.outputs.skip != 'true' && steps.packages.outputs.publish_plugins == 'true'
435445 run : |
436- # Determine the release tag (same priority as Create GitHub Release)
446+ # Determine the release tag (same priority as Create GitHub Release, excludes VSX )
437447 if [[ "${{ steps.packages.outputs.publish_cli }}" == "true" ]]; then
438448 RELEASE_TAG="@salesforce/b2c-cli@${{ steps.packages.outputs.version_cli }}"
439449 elif [[ "${{ steps.packages.outputs.publish_sdk }}" == "true" ]]; then
@@ -442,8 +452,6 @@ jobs:
442452 RELEASE_TAG="@salesforce/b2c-dx-mcp@${{ steps.packages.outputs.version_mcp }}"
443453 elif [[ "${{ steps.packages.outputs.publish_mrt }}" == "true" ]]; then
444454 RELEASE_TAG="@salesforce/mrt-utilities@${{ steps.packages.outputs.version_mrt }}"
445- elif [[ "${{ steps.packages.outputs.publish_vsx }}" == "true" ]]; then
446- RELEASE_TAG="b2c-vs-extension@${{ steps.packages.outputs.version_vsx }}"
447455 elif [[ "${{ steps.packages.outputs.publish_docs }}" == "true" ]]; then
448456 RELEASE_TAG="docs@${{ steps.packages.outputs.version_docs }}"
449457 else
@@ -454,35 +462,38 @@ jobs:
454462 env :
455463 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
456464
457- - name : Upload VS Code extension to release
458- if : steps.release-type.outputs.type == 'stable' && steps.packages.outputs.publish_vsx == 'true'
459- run : |
460- # Determine the release tag (same logic as Create GitHub Release)
461- if [[ "${{ steps.packages.outputs.publish_cli }}" == "true" ]]; then
462- RELEASE_TAG="@salesforce/b2c-cli@${{ steps.packages.outputs.version_cli }}"
463- elif [[ "${{ steps.packages.outputs.publish_sdk }}" == "true" ]]; then
464- RELEASE_TAG="@salesforce/b2c-tooling-sdk@${{ steps.packages.outputs.version_sdk }}"
465- elif [[ "${{ steps.packages.outputs.publish_mcp }}" == "true" ]]; then
466- RELEASE_TAG="@salesforce/b2c-dx-mcp@${{ steps.packages.outputs.version_mcp }}"
467- elif [[ "${{ steps.packages.outputs.publish_mrt }}" == "true" ]]; then
468- RELEASE_TAG="@salesforce/mrt-utilities@${{ steps.packages.outputs.version_mrt }}"
469- elif [[ "${{ steps.packages.outputs.publish_vsx }}" == "true" ]]; then
470- RELEASE_TAG="b2c-vs-extension@${{ steps.packages.outputs.version_vsx }}"
471- else
472- echo "No release to upload to"
473- exit 0
474- fi
475-
476- gh release upload "$RELEASE_TAG" packages/b2c-vs-extension/*.vsix
477- env :
478- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
479-
480465 - name : Create VS Code extension release
481466 if : >-
482467 steps.release-type.outputs.type == 'stable'
483468 && steps.packages.outputs.publish_vsx == 'true'
484469 run : |
485470 VSX_TAG="b2c-vs-extension@${{ steps.packages.outputs.version_vsx }}"
471+ VSX_VERSION="${{ steps.packages.outputs.version_vsx }}"
472+
473+ # Extract extension changelog for the dedicated release
474+ extract_latest() {
475+ awk '
476+ /^## / { if (found) exit; found=1; next }
477+ found { print }
478+ ' "$1"
479+ }
480+
481+ VSX_CHANGELOG=$(extract_latest packages/b2c-vs-extension/CHANGELOG.md)
482+
483+ VSX_NOTES="## B2C DX VS Code Extension v${VSX_VERSION}
484+
485+ Download the \`.vsix\` file below and install via :
486+ \`\`\`
487+ code --install-extension b2c-vs-extension-${VSX_VERSION}.vsix
488+ \`\`\`
489+
490+ Or in VS Code : Extensions → ⋯ → Install from VSIX...
491+
492+ ---
493+
494+ # ## Changelog
495+
496+ ${VSX_CHANGELOG}"
486497
487498 # Create a dedicated release for the extension (not latest — main releases own that)
488499 # Use --clobber on upload in case a previous run partially completed
@@ -491,21 +502,10 @@ jobs:
491502 gh release upload "$VSX_TAG" packages/b2c-vs-extension/*.vsix --clobber
492503 else
493504 gh release create "$VSX_TAG" \
494- --title "VS Code Extension ${{ steps.packages.outputs.version_vsx } }" \
505+ --title "VS Code Extension ${VSX_VERSION }" \
495506 --latest=false \
496- --notes "$(cat <<'NOTES'
497- ## B2C DX VS Code Extension v${{ steps.packages.outputs.version_vsx }}
498-
499- Download the `.vsix` file below and install via:
500- ```
501- code --install-extension b2c-vs-extension-${{ steps.packages.outputs.version_vsx }}.vsix
502- ```
503-
504- Or in VS Code: Extensions → ⋯ → Install from VSIX...
505- NOTES
506- )"
507+ --notes "$VSX_NOTES"
507508
508- # Upload the VSIX to the dedicated release
509509 gh release upload "$VSX_TAG" packages/b2c-vs-extension/*.vsix
510510 fi
511511 env :
0 commit comments