From 01e118d31922b1ae0ae53e79c3fdaea3c3e2d273 Mon Sep 17 00:00:00 2001 From: wenyutang-ms Date: Tue, 24 Mar 2026 16:24:38 +0800 Subject: [PATCH 1/2] ci: separate stable and prerelease --- .azure-pipelines/rc.yml | 7 +++++++ package-lock.json | 2 +- package.json | 2 +- scripts/prepare-nightly-build.js | 10 +++++++--- scripts/prepare-stable-build.js | 17 +++++++++++++++++ src/extension.ts | 6 +++++- 6 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 scripts/prepare-stable-build.js diff --git a/.azure-pipelines/rc.yml b/.azure-pipelines/rc.yml index 1f7bd599..07ab4763 100644 --- a/.azure-pipelines/rc.yml +++ b/.azure-pipelines/rc.yml @@ -88,6 +88,13 @@ extends: displayName: Replace AI Key inputs: script: npx json@9.0.6 -I -f package.json -e "this.aiKey=\"%AI_KEY%\"" + - task: PowerShell@2 + displayName: Update package.json for stable + inputs: + targetType: inline + script: |- + node ./scripts/prepare-stable-build.js + Move-Item -Path "./package.stable.json" -Destination "./package.json" -Force - task: CmdLine@2 displayName: vsce package inputs: diff --git a/package-lock.json b/package-lock.json index 1dc95bfe..4078800b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "vscode-java-dependency", - "version": "0.27.0", + "version": "0.27.1", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 25e76efd..b43d2647 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "vscode-java-dependency", "displayName": "Project Manager for Java", "description": "%description%", - "version": "0.27.0", + "version": "0.27.1", "publisher": "vscjava", "preview": false, "aiKey": "5c642b22-e845-4400-badb-3f8509a70777", diff --git a/scripts/prepare-nightly-build.js b/scripts/prepare-nightly-build.js index 7e40038b..a41983f3 100644 --- a/scripts/prepare-nightly-build.js +++ b/scripts/prepare-nightly-build.js @@ -2,12 +2,15 @@ const fs = require("fs"); const json = JSON.parse(fs.readFileSync("./package.json").toString()); const stableVersion = json.version.match(/(\d+)\.(\d+)\.(\d+)/); +if (!stableVersion) { + throw new Error(`Invalid stable version: ${json.version}`); +} const major = stableVersion[1]; const minor = stableVersion[2]; function prependZero(number) { if (number > 99) { - throw "Unexpected value to prepend with zero"; + throw new Error("Unexpected value to prepend with zero"); } return `${number < 10 ? "0" : ""}${number}`; } @@ -16,10 +19,11 @@ const date = new Date(); const month = date.getMonth() + 1; const day = date.getDate(); const hours = date.getHours(); -patch = `${date.getFullYear()}${prependZero(month)}${prependZero(day)}${prependZero(hours)}`; +const patch = `${date.getFullYear()}${prependZero(month)}${prependZero(day)}${prependZero(hours)}`; const insiderPackageJson = Object.assign(json, { version: `${major}.${minor}.${patch}`, + preview: true, }); -fs.writeFileSync("./package.insiders.json", JSON.stringify(insiderPackageJson)); \ No newline at end of file +fs.writeFileSync("./package.insiders.json", `${JSON.stringify(insiderPackageJson, null, 2)}\n`); \ No newline at end of file diff --git a/scripts/prepare-stable-build.js b/scripts/prepare-stable-build.js new file mode 100644 index 00000000..2596a598 --- /dev/null +++ b/scripts/prepare-stable-build.js @@ -0,0 +1,17 @@ +const fs = require("fs"); + +const packageJsonPath = "./package.json"; +const packageJson = JSON.parse(fs.readFileSync(packageJsonPath).toString()); +packageJson.preview = false; + +if (packageJson.contributes) { + delete packageJson.contributes.languageModelTools; + delete packageJson.contributes.chatSkills; + delete packageJson.contributes.chatInstructions; + + if (packageJson.contributes.configuration && packageJson.contributes.configuration.properties) { + delete packageJson.contributes.configuration.properties["vscode-java-dependency.enableLspTools"]; + } +} + +fs.writeFileSync("./package.stable.json", `${JSON.stringify(packageJson, null, 2)}\n`); diff --git a/src/extension.ts b/src/extension.ts index aa915423..d5dd4c31 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -87,9 +87,13 @@ async function activateExtension(_operationId: string, context: ExtensionContext setContextForDeprecatedTasks(); // Register Copilot context providers after Java Language Server is ready + const isPrereleaseBuild = context.extension.packageJSON.preview === true; languageServerApiManager.ready().then((isReady) => { + if (!isPrereleaseBuild) { + return; + } const config = workspace.getConfiguration("vscode-java-dependency"); - const isSettingEnabled = config.get("enableLspTools", true); + const isSettingEnabled = config.get("enableLspTools", false); if (isReady && isSettingEnabled) { registerJavaContextTools(context); } From 0e5a83ff0f371b9cab0e672a6cc730bded6abdff Mon Sep 17 00:00:00 2001 From: wenyutang-ms Date: Wed, 25 Mar 2026 10:03:44 +0800 Subject: [PATCH 2/2] perf: update --- src/extension.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index d5dd4c31..4c5c9637 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -2,8 +2,10 @@ // Licensed under the MIT license. import * as path from "path"; -import { commands, Diagnostic, Extension, ExtensionContext, extensions, languages, - Range, tasks, TextDocument, TextEditor, Uri, window, workspace } from "vscode"; +import { + commands, Diagnostic, Extension, ExtensionContext, extensions, languages, + Range, tasks, TextDocument, TextEditor, Uri, window, workspace +} from "vscode"; import { dispose as disposeTelemetryWrapper, initializeFromJsonFile, instrumentOperation, instrumentOperationAsVsCodeCommand, sendInfo } from "vscode-extension-telemetry-wrapper"; import { Commands, contextManager } from "../extension.bundle"; import { BuildTaskProvider } from "./tasks/build/buildTaskProvider"; @@ -88,10 +90,10 @@ async function activateExtension(_operationId: string, context: ExtensionContext // Register Copilot context providers after Java Language Server is ready const isPrereleaseBuild = context.extension.packageJSON.preview === true; + if (!isPrereleaseBuild) { + return; + } languageServerApiManager.ready().then((isReady) => { - if (!isPrereleaseBuild) { - return; - } const config = workspace.getConfiguration("vscode-java-dependency"); const isSettingEnabled = config.get("enableLspTools", false); if (isReady && isSettingEnabled) {