Skip to content
Merged
41 changes: 37 additions & 4 deletions .github/workflows/release-please.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@ on:
push:
branches: [main]
workflow_dispatch:
inputs:
tag:
description: >-
Release tag to publish (e.g. v1.5.1). Only needed to manually
(re)run the publish job for a release that already exists — e.g.
after a packaging fix, when the tag itself predates the fix.
Leave blank for a normal run.
required: false
type: string

permissions:
contents: write
Expand All @@ -29,18 +38,36 @@ jobs:
# workflow would silently never run.
publish:
needs: release-please
if: ${{ needs.release-please.outputs.release_created == 'true' }}
if: ${{ needs.release-please.outputs.release_created == 'true' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag != '') }}
runs-on: ubuntu-latest
permissions:
contents: write
env:
VS_MARKETPLACE_TOKEN: ${{ secrets.VS_MARKETPLACE_TOKEN }}
OPEN_VSX_TOKEN: ${{ secrets.OPEN_VSX_TOKEN }}
steps:
# On a normal run, release-please just created the release and handed us its tag/upload_url
# directly. On a manual re-run (release already exists, e.g. retrying after a packaging fix),
# those outputs are empty, so look the release up by the tag the user supplied instead.
- name: Resolve release tag and upload URL
id: resolve
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
if [ "${{ needs.release-please.outputs.release_created }}" = "true" ]; then
echo "tag=${{ needs.release-please.outputs.tag_name }}" >> "$GITHUB_OUTPUT"
echo "upload_url=${{ needs.release-please.outputs.upload_url }}" >> "$GITHUB_OUTPUT"
else
TAG="${{ github.event.inputs.tag }}"
UPLOAD_URL=$(gh api "repos/${{ github.repository }}/releases/tags/${TAG}" --jq '.upload_url')
echo "tag=${TAG}" >> "$GITHUB_OUTPUT"
echo "upload_url=${UPLOAD_URL}" >> "$GITHUB_OUTPUT"
fi

- name: Checkout release tag
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
ref: ${{ needs.release-please.outputs.tag_name }}
ref: ${{ steps.resolve.outputs.tag }}

- name: Setup Node.js
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
Expand Down Expand Up @@ -68,10 +95,15 @@ jobs:
#
# Lets users grab the .vsix straight from the GitHub Release and "Install from VSIX...",
# no Marketplace/Open VSX account or token needed for this path.
#
# Only meaningful right after release-please creates the (draft) release. On a manual
# re-run the release is already published and non-draft, so attaching again would just
# 422 on the duplicate asset name — skip both steps in that case.
- name: Attach VSIX to GitHub Release
if: ${{ needs.release-please.outputs.release_created == 'true' }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
UPLOAD_URL: ${{ needs.release-please.outputs.upload_url }}
UPLOAD_URL: ${{ steps.resolve.outputs.upload_url }}
run: |
VSIX_FILE=$(ls *.vsix)
BASE_URL="${UPLOAD_URL%%\{*}"
Expand All @@ -82,9 +114,10 @@ jobs:
"${BASE_URL}?name=${VSIX_FILE}"

- name: Publish GitHub Release
if: ${{ needs.release-please.outputs.release_created == 'true' }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
UPLOAD_URL: ${{ needs.release-please.outputs.upload_url }}
UPLOAD_URL: ${{ steps.resolve.outputs.upload_url }}
run: |
RELEASE_ID=$(echo "${UPLOAD_URL}" | sed -E 's#.*/releases/([0-9]+)/.*#\1#')
gh api -X PATCH "repos/${{ github.repository }}/releases/${RELEASE_ID}" -f draft=false
Expand Down
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "1.5.0"
".": "1.5.2"
}
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,22 @@
# Changelog

## [1.5.2](https://github.com/Wikid82/Workspace-File-Bookmarks/compare/workspace-file-bookmarks-v1.5.1...workspace-file-bookmarks-v1.5.2) (2026-08-20)


### Bug Fixes

* **ci:** allow manual re-run of publish job for existing releases ([ba6719d](https://github.com/Wikid82/Workspace-File-Bookmarks/commit/ba6719d230139f9ffd611d057ad70ea25ff3a336))

## [1.5.1](https://github.com/Wikid82/Workspace-File-Bookmarks/compare/workspace-file-bookmarks-v1.5.0...workspace-file-bookmarks-v1.5.1) (2026-08-20)


### Bug Fixes

* derive pre-release version from live registry state, not local package.json ([92cb0ea](https://github.com/Wikid82/Workspace-File-Bookmarks/commit/92cb0ea51b7bf383b8d1b292a04e78a750dd86ee))
* update ansi-regex version to 6.3.0 ([253850d](https://github.com/Wikid82/Workspace-File-Bookmarks/commit/253850d6faba8cfeb3f00b201c89994d2a51dd4c))
* update TypeScript and @types/node versions; adjust tsconfig module settings ([7c30fff](https://github.com/Wikid82/Workspace-File-Bookmarks/commit/7c30fff555f1b2659578555f92cfdff7508234b8))
* update typescript version to ~7.0.0 ([32f6cfb](https://github.com/Wikid82/Workspace-File-Bookmarks/commit/32f6cfbebe8dd4ca11989b02dea992f1967f62a3))

## [1.5.0](https://github.com/Wikid82/Workspace-File-Bookmarks/compare/workspace-file-bookmarks-v1.4.3...workspace-file-bookmarks-v1.5.0) (2026-08-11)


Expand Down
6 changes: 3 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"description": "Bookmark files across multi-repo VS Code workspaces for quick access.",
"publisher": "Wikid82",
"private": false,
"version": "1.5.0",
"version": "1.5.2",
"icon": "media/icon.png",
"categories": [
"Other"
Expand Down Expand Up @@ -32,7 +32,7 @@
},
"homepage": "https://github.com/Wikid82/Workspace-File-Bookmarks#readme",
"engines": {
"vscode": "^1.133.0"
"vscode": "^1.134.0"
},
"activationEvents": [],
"main": "./dist/extension.cjs",
Expand Down
13 changes: 13 additions & 0 deletions scripts/wfb_dep_update.sh
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,19 @@ for MODULE in "${NPM_MODULES[@]}"; do
# support yet, which crashes `npm run lint`. Keep pinned to ^9 until
# eslint-config-next ships a compatible eslint-plugin-react.
npx --yes npm-check-updates -u --reject "typescript,@typescript-eslint/*"

# ncu only touches dependency ranges, not engines.vscode, so keep the
# minimum supported VS Code version in lockstep with @types/vscode here.
# vsce refuses to package when engines.vscode is behind @types/vscode.
node -e '
const fs = require("fs");
const pkg = JSON.parse(fs.readFileSync("package.json", "utf8"));
const typesVersion = pkg.devDependencies?.["@types/vscode"]?.replace(/^[^0-9]*/, "");
if (typesVersion && pkg.engines?.vscode) {
pkg.engines.vscode = `^${typesVersion}`;
fs.writeFileSync("package.json", JSON.stringify(pkg, null, 2) + "\n");
}
'
rm -rf node_modules package-lock.json
npm install --legacy-peer-deps
npm dedupe --legacy-peer-deps
Expand Down