Skip to content

W-22382831 & W-22382821 feat: VSCode Release Draft workflow - #28

Open
franciscoperezsammartino wants to merge 11 commits into
salesforce:mainfrom
franciscoperezsammartino:feat/automated-release-workflow
Open

franciscoperezsammartino wants to merge 11 commits into
salesforce:mainfrom
franciscoperezsammartino:feat/automated-release-workflow

Conversation

@franciscoperezsammartino

Copy link
Copy Markdown

Summary

  • Adds .github/workflows/vscode-release.yml — weekly (Wednesday) + manual dispatch workflow that finds new commits since the last release, computes a proposed version from the lsp-server diff (even-minor convention), builds a CHANGELOG draft + VSIX, and opens a release-draft PR
  • Adds packages/vscode/vsix-versions/ directory (.gitkeep) as the target location for VSIX artifacts
  • Adds repository field to packages/vscode/package.json

Closes W-22382827, W-22382831

Test plan

  • Trigger workflow manually via workflow_dispatch with override_last_version set to the current version to validate the end-to-end flow
  • Confirm release-draft PR is opened with correct CHANGELOG draft, version bump, and VSIX artifact
  • Confirm workflow exits cleanly with no PR when there are no relevant commits

Notes

  • Secrets (VSCE_PERSONAL_ACCESS_TOKEN, IDEE_OVSX_PAT) and the publish workflow will be added in a follow-up (W-22382824)
  • VSIX LFS decision is pending — to be made before the first real release

🤖 Generated with Claude Code

- Add .github/workflows/vscode-release.yml: weekly + manual dispatch
  workflow that finds new commits since the last release, computes a
  proposed version from lsp-server diff (even-minor convention), builds
  a CHANGELOG draft + VSIX, and opens a release-draft PR
- Add packages/vscode/vsix-versions/ as the VSIX artifact directory
- Add repository field to packages/vscode/package.json

Closes W-22382827, W-22382831

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@franciscoperezsammartino franciscoperezsammartino changed the title feat: automated VSCode extension release workflow feat: VSCode Release Draft workflow May 6, 2026
Francisco Sammartino and others added 9 commits May 7, 2026 09:59
…ad of git log

Replaces the git log commit scrape with a per-package CHANGELOG.md reader.
Each package uses changesets and squash-merges, so individual commits are not
reliably visible on the default branch. Reading the package changelogs directly
gives richer, more accurate content for the release draft.

Packages tracked: lsp-server, lsp, language, compiler, parser, parser-javascript,
parser-tree-sitter, agentforce, types, lsp-browser, dialect/agentscript,
dialect/agentforce, dialect/agentfabric.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…a process.env

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…sion comparison

Version comparison required changeset history that may not exist in all
environments. Git diff on each package CHANGELOG.md between the release
commit and HEAD is simpler and works universally.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…and git commits

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1. Upload VSIX as draft GitHub Release asset instead of committing to git
2. Add tree-sitter binary checksum verification after download
3. Add job-level timeout-minutes: 30
4. Pin runner to ubuntu-24.04 instead of ubuntu-latest
5. Use git pickaxe (-S) for faster release commit detection
6. Use ::notice:: annotation when nothing to release
7. Document even/odd minor versioning convention in comment

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@franciscoperezsammartino franciscoperezsammartino changed the title feat: VSCode Release Draft workflow W-22382831 feat: VSCode Release Draft workflow May 11, 2026
@franciscoperezsammartino
franciscoperezsammartino marked this pull request as ready for review May 11, 2026 17:23
@franciscoperezsammartino franciscoperezsammartino changed the title W-22382831 feat: VSCode Release Draft workflow W-22382831 & W-22382821 feat: VSCode Release Draft workflow May 11, 2026
override_last_version:
description: 'Override last released version (e.g. 2.2.4) — leave empty to auto-detect from git log'
required: false
default: ''

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Should probably use a boolean here?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

I did this as a text so we can specify from which version we wanted to build. This is just for testing purposes, like "lets see if we try to upgrade from an older version, what changes will this pick up"

Comment on lines +27 to +28
env:
TREE_SITTER_VERSION: '0.25.3'

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'd highly recommend using mise here. That way, we don't have various copies of the version floating around: #28


steps:
- name: Checkout repository
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Why SHAs?

GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OVERRIDE_LAST_VERSION: ${{ inputs.override_last_version }}
run: |
set -euo pipefail

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Might be more readable to put this in a shell script?

@BichengWang BichengWang left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

[P2] Find the commit that introduced the overridden version

At .github/workflows/vscode-release.yml:110–114, git log -S matches both addition and removal of the version string. Taking the newest match selects the release that replaced an older version, so the documented override can silently omit the changes it was meant to collect.

I ran the unchanged release-detection and changelog-collection shell from this head with OVERRIDE_LAST_VERSION=2.2.2. It selects 794ca59, whose VS Code manifest is already 2.2.4, reads lsp-server 2.2.25 as the baseline, and exits successfully with “No changelog entries found since 794ca59. Nothing to release.” The commit that introduced 2.2.2 is 38221b0, where lsp-server is 2.2.14; the omitted range includes 5371432 (TypedMapParser refactor) and 794ca59 (compiler string escaping). The 2.2.4 override similarly selects the later 2.4.0 release commit. Using current 2.4.0 as a control selects its actual introduction commit.

Please select a commit whose resulting manifest contains the requested version, rather than its removal, and cover an older-version override that must retain intervening changes.

Reviewed exact head 534a85707354338889a172694eac4ede2f3183ba. I checked the existing reviews and all five inline comments; they discuss input type, tool versions, action pins and script layout, not this lookup defect. Offline validation used Node 22.20.0 and the real repository history: the extracted shell passed bash -n, and the three override cases above ran through the unchanged read-only detection/collection section. No dependency build, VSIX packaging or hosted Actions execution was performed, and no workflow write/push/publish section was executed.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants