diff --git a/.github/release.config.js b/.github/release.config.js index a2cd654950..932fca2c58 100644 --- a/.github/release.config.js +++ b/.github/release.config.js @@ -6,17 +6,17 @@ module.exports = { level: "minor" }, { - name: "release/2.*", + name: "v2-lts", channel: "zowe-v2-lts", level: "patch" }, { - name: "release/3.*", - channel: "latest", + name: "v1-lts", + channel: "zowe-v1-lts", level: "patch" }, { - name: "next", + name: "release/3.*", prerelease: true, } ], diff --git a/.gitignore b/.gitignore index bc2770a13d..d66ecd848f 100644 --- a/.gitignore +++ b/.gitignore @@ -32,4 +32,5 @@ packages/zowe-explorer/__tests__/__integration__/ci !packages/zowe-explorer/__tests__/__integration__/ci/zowe.config.json package.nls.*.json bundle.l10n.*.json +bundle.l10n.json.template zedc/target diff --git a/README.md b/README.md index 6a75fd2c40..cd9a1aeb6d 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Join our [Slack channel](https://slack.openmainframeproject.org/) to connect wit Client-side prerequisites for development: - Install [Node.js](https://nodejs.org/en/download/) v16.0 or later. -- Install [PNPM](https://pnpm.io/installation). +- Install [PNPM 8](https://pnpm.io/installation). Host-side prerequisites for connection: diff --git a/package.json b/package.json index 1701c8560c..62e382e2ef 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,9 @@ "webpack-cli": "^5.1.4" }, "pnpm": { - "overrides": {} + "overrides": { + "ws": "^8.17.1" + } }, "scripts": { "clean": "pnpm -r clean", diff --git a/packages/zowe-explorer-ftp-extension/CHANGELOG.md b/packages/zowe-explorer-ftp-extension/CHANGELOG.md index c758a7a72a..8cf4db7d8b 100644 --- a/packages/zowe-explorer-ftp-extension/CHANGELOG.md +++ b/packages/zowe-explorer-ftp-extension/CHANGELOG.md @@ -8,6 +8,7 @@ All notable changes to the "zowe-explorer-ftp-extension" extension will be docum - Update Zowe SDKs to `8.0.0` for technical currency. - Update z/OS FTP Plug-in for Zowe CLI dependency to `3.0.0`. +- Removed popup notification of successful registration with Zowe Explorer and log the success instead. [#2862](https://github.com/zowe/zowe-explorer-vscode/issues/2862) ## `3.0.0-next.202409132122` diff --git a/packages/zowe-explorer-ftp-extension/src/extension.ts b/packages/zowe-explorer-ftp-extension/src/extension.ts index ba46231d73..83316c24e0 100644 --- a/packages/zowe-explorer-ftp-extension/src/extension.ts +++ b/packages/zowe-explorer-ftp-extension/src/extension.ts @@ -44,7 +44,7 @@ async function registerFtpApis(): Promise { await zoweExplorerApi.getExplorerExtenderApi().initForZowe(pType, schema); await zoweExplorerApi.getExplorerExtenderApi().reloadProfiles(pType); - await Gui.showMessage("Zowe Explorer was modified for FTP support.", { logger: globals.LOGGER }); + globals.LOGGER.logImperativeMessage("Zowe Explorer was modified for FTP support.", MessageSeverity.INFO); return true; } diff --git a/packages/zowe-explorer/CHANGELOG.md b/packages/zowe-explorer/CHANGELOG.md index 19d5a6c47e..c6a21f9db9 100644 --- a/packages/zowe-explorer/CHANGELOG.md +++ b/packages/zowe-explorer/CHANGELOG.md @@ -14,6 +14,7 @@ All notable changes to the "vscode-extension-for-zowe" extension will be documen - Fix issue with extender profiles not being included in fresh team configuration file. [#3122](https://github.com/zowe/zowe-explorer-vscode/issues/3122) - Fixed issue where file extensions were removed from data sets, causing language detection to sometimes fail for Zowe Explorer extenders. [#3121](https://github.com/zowe/zowe-explorer-vscode/issues/3121) - Fixed an issue where copying and pasting a file/folder in the USS tree would fail abruptly, displaying an error. [#3128](https://github.com/zowe/zowe-explorer-vscode/issues/3128) +- Removal of broken VSC command to `Zowe Explorer: Refresh Zowe Explorer`, use VS Code's `Extensions: Refresh` command instead. [#3100](https://github.com/zowe/zowe-explorer-vscode/issues/3100) - Update Zowe SDKs to `8.0.0` for technical currency. ## `3.0.0-next.202409132122` diff --git a/packages/zowe-explorer/__tests__/__unit__/extension.unit.test.ts b/packages/zowe-explorer/__tests__/__unit__/extension.unit.test.ts index 98683ba35c..42634d45cc 100644 --- a/packages/zowe-explorer/__tests__/__unit__/extension.unit.test.ts +++ b/packages/zowe-explorer/__tests__/__unit__/extension.unit.test.ts @@ -242,7 +242,6 @@ async function createGlobalMocks() { "zowe.compareWithSelectedReadOnly", "zowe.compareFileStarted", "zowe.placeholderCommand", - "zowe.extRefresh", ], }; diff --git a/packages/zowe-explorer/__tests__/__unit__/trees/shared/SharedInit.unit.test.ts b/packages/zowe-explorer/__tests__/__unit__/trees/shared/SharedInit.unit.test.ts index 63de0a6311..7a54f6aaa8 100644 --- a/packages/zowe-explorer/__tests__/__unit__/trees/shared/SharedInit.unit.test.ts +++ b/packages/zowe-explorer/__tests__/__unit__/trees/shared/SharedInit.unit.test.ts @@ -18,7 +18,6 @@ import { Constants } from "../../../../src/configuration/Constants"; import { Profiles } from "../../../../src/configuration/Profiles"; import { SharedActions } from "../../../../src/trees/shared/SharedActions"; import { LocalFileManagement } from "../../../../src/management/LocalFileManagement"; -import { ZoweLogger } from "../../../../src/tools/ZoweLogger"; import { ZoweExplorerApiRegister } from "../../../../src/extending/ZoweExplorerApiRegister"; import { SharedInit } from "../../../../src/trees/shared/SharedInit"; import { TsoCommandHandler } from "../../../../src/commands/TsoCommandHandler"; @@ -319,44 +318,6 @@ describe("Test src/shared/extension", () => { processSubscriptions(commands, test); }); - describe("registerRefreshCommand", () => { - const context: any = { subscriptions: [] }; - const activate = jest.fn(); - const deactivate = jest.fn(); - const dispose = jest.fn(); - let extRefreshCallback; - const spyExecuteCommand = jest.fn(); - - beforeAll(() => { - Object.defineProperty(vscode.commands, "registerCommand", { - value: (_: string, fun: () => void) => { - extRefreshCallback = fun; - return { dispose }; - }, - }); - Object.defineProperty(vscode.commands, "executeCommand", { value: spyExecuteCommand }); - SharedInit.registerRefreshCommand(context, activate, deactivate); - }); - - beforeEach(() => { - jest.clearAllMocks(); - }); - - afterAll(() => { - jest.restoreAllMocks(); - }); - - it("Test assuming we are unable to dispose of the subscription", async () => { - const testError = new Error("test"); - dispose.mockRejectedValue(testError); - await extRefreshCallback(); - expect(spyExecuteCommand).not.toHaveBeenCalled(); - expect(deactivate).toHaveBeenCalled(); - expect(ZoweLogger.error).toHaveBeenCalledWith(testError); - expect(dispose).toHaveBeenCalled(); - expect(activate).toHaveBeenCalled(); - }); - }); describe("watchConfigProfile", () => { let context: any; diff --git a/packages/zowe-explorer/l10n/poeditor.json b/packages/zowe-explorer/l10n/poeditor.json index be85961d07..162ecc36b7 100644 --- a/packages/zowe-explorer/l10n/poeditor.json +++ b/packages/zowe-explorer/l10n/poeditor.json @@ -29,9 +29,6 @@ "zowe.profileManagement": { "Manage Profile": "" }, - "zowe.extRefresh": { - "Refresh Zowe Explorer": "" - }, "zowe.editHistory": { "Edit History": "" }, diff --git a/packages/zowe-explorer/package.json b/packages/zowe-explorer/package.json index f3bc127083..3dded787ad 100644 --- a/packages/zowe-explorer/package.json +++ b/packages/zowe-explorer/package.json @@ -111,11 +111,6 @@ "key": "delete", "when": "focusedView == zowe.uss.explorer" }, - { - "command": "zowe.extRefresh", - "key": "ctrl+alt+z", - "mac": "cmd+alt+z" - }, { "command": "zowe.editHistory", "key": "ctrl+alt+y", @@ -168,15 +163,6 @@ "title": "%zowe.profileManagement%", "category": "Zowe Explorer" }, - { - "command": "zowe.extRefresh", - "title": "%zowe.extRefresh%", - "category": "Zowe Explorer", - "icon": { - "light": "./resources/light/refresh.svg", - "dark": "./resources/dark/refresh.svg" - } - }, { "command": "zowe.editHistory", "title": "%zowe.editHistory%", @@ -1810,7 +1796,8 @@ "createTestProfileData": "tsx ./scripts/createTestProfileData.ts", "createDemoNodes": "tsx ./scripts/createDemoNodes.ts", "generateLocalization": "pnpm dlx @vscode/l10n-dev export --o ./l10n ./src && node ./scripts/generatePoeditorJson.js", - "copy-secrets": "tsx ./scripts/getSecretsPrebuilds.ts" + "copy-secrets": "tsx ./scripts/getSecretsPrebuilds.ts", + "strip-l10n": "node ./scripts/stripL10nComments.js" }, "engines": { "vscode": "^1.79.0" diff --git a/packages/zowe-explorer/package.nls.json b/packages/zowe-explorer/package.nls.json index fe569e4476..b21aa2e228 100644 --- a/packages/zowe-explorer/package.nls.json +++ b/packages/zowe-explorer/package.nls.json @@ -9,7 +9,6 @@ "zowe.placeholderCommand": "Placeholder", "zowe.promptCredentials": "Update Credentials", "zowe.profileManagement": "Manage Profile", - "zowe.extRefresh": "Refresh Zowe Explorer", "zowe.editHistory": "Edit History", "zowe.ds.explorer": "Data Sets", "zowe.uss.explorer": "Unix System Services (USS)", diff --git a/packages/zowe-explorer/scripts/generatePoeditorJson.js b/packages/zowe-explorer/scripts/generatePoeditorJson.js index 6b09354d2a..90753e24e9 100644 --- a/packages/zowe-explorer/scripts/generatePoeditorJson.js +++ b/packages/zowe-explorer/scripts/generatePoeditorJson.js @@ -6,27 +6,22 @@ const fs = require("fs"); const langId = process.argv[2]; +const fileSuffix = langId ? `${langId}.json` : "json"; const poeditorJson = {}; -const packageNls = require(__dirname + "/../package.nls.json"); -if (!langId) { - for (const [k, v] of Object.entries(packageNls)) { +const packageNls = require(__dirname + "/../package.nls." + fileSuffix); +for (const [k, v] of Object.entries(packageNls)) { + if (!langId) { poeditorJson[k] = { [v]: "" }; - } -} else { - const packageNls2 = require(__dirname + "/../package.nls." + langId + ".json"); - for (const [k, v] of Object.entries(packageNls)) { - poeditorJson[k] = packageNls2[k] ? { [v]: packageNls2[k] } : undefined; + } else { + poeditorJson[k] = packageNls[k] ? { [v]: packageNls[k] } : undefined; } } -const l10nBundle = require(__dirname + "/../l10n/bundle.l10n.json"); -if (!langId) { - for (const [k, v] of Object.entries(l10nBundle)) { +const l10nBundle = require(__dirname + "/../l10n/bundle.l10n." + fileSuffix); +for (const [k, v] of Object.entries(l10nBundle)) { + if (!langId) { poeditorJson[typeof v === "string" ? k : v.message] = ""; - } -} else { - const l10nBundle2 = require(__dirname + "/../l10n/bundle.l10n." + langId + ".json"); - for (const [k, v] of Object.entries(l10nBundle)) { - poeditorJson[typeof v === "string" ? k : v.message] = l10nBundle2[k]?.message || l10nBundle2[k]; + } else { + poeditorJson[typeof v === "string" ? k : v.message] = l10nBundle[k]?.message || l10nBundle[k]; } } -fs.writeFileSync(__dirname + "/../l10n/poeditor." + (langId ? `${langId}.json` : "json"), JSON.stringify(poeditorJson, null, 2) + "\n"); +fs.writeFileSync(__dirname + "/../l10n/poeditor." + fileSuffix, JSON.stringify(poeditorJson, null, 2) + "\n"); diff --git a/packages/zowe-explorer/scripts/stripL10nComments.js b/packages/zowe-explorer/scripts/stripL10nComments.js new file mode 100644 index 0000000000..23c60b78eb --- /dev/null +++ b/packages/zowe-explorer/scripts/stripL10nComments.js @@ -0,0 +1,11 @@ +// Strip comments out of bundle.l10n.json and sort properties by key +const fs = require("fs"); +const jsonFilePath = process.argv[2] || (__dirname + "/../l10n/bundle.l10n.json"); +let l10nBundle = JSON.parse(fs.readFileSync(jsonFilePath, "utf-8")); +for (const [k, v] of Object.entries(l10nBundle)) { + if (typeof v === "object") { + l10nBundle[k] = l10nBundle[k].message; + } +} +l10nBundle = Object.fromEntries(Object.entries(l10nBundle).sort(([a], [b]) => a.localeCompare(b))); +fs.writeFileSync(jsonFilePath + ".template", JSON.stringify(l10nBundle, null, 2) + "\n"); diff --git a/packages/zowe-explorer/src/configuration/Constants.ts b/packages/zowe-explorer/src/configuration/Constants.ts index 590773222f..f2643a3504 100644 --- a/packages/zowe-explorer/src/configuration/Constants.ts +++ b/packages/zowe-explorer/src/configuration/Constants.ts @@ -17,7 +17,7 @@ import type { Profiles } from "./Profiles"; export class Constants { public static CONFIG_PATH: string; - public static readonly COMMAND_COUNT = 100; + public static readonly COMMAND_COUNT = 99; public static readonly MAX_SEARCH_HISTORY = 5; public static readonly MAX_FILE_HISTORY = 10; public static readonly MS_PER_SEC = 1000; diff --git a/packages/zowe-explorer/src/extension.ts b/packages/zowe-explorer/src/extension.ts index d4e39adac3..0eceaab8d0 100644 --- a/packages/zowe-explorer/src/extension.ts +++ b/packages/zowe-explorer/src/extension.ts @@ -50,7 +50,6 @@ export async function activate(context: vscode.ExtensionContext): Promise Promise, - deactivate: () => Promise - ): void { - ZoweLogger.trace("shared.init.registerRefreshCommand called."); - // set a command to silently reload extension - context.subscriptions.push( - vscode.commands.registerCommand("zowe.extRefresh", async () => { - await deactivate(); - for (const sub of context.subscriptions) { - try { - await sub.dispose(); - } catch (e) { - ZoweLogger.error(e); - } - } - await activate(context); - }) - ); - } - public static registerCommonCommands(context: vscode.ExtensionContext, providers: Definitions.IZoweProviders): void { ZoweLogger.trace("shared.init.registerCommonCommands called."); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1d642d02b3..09422e8eae 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,9 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + ws: ^8.17.1 + importers: .: @@ -10069,7 +10072,7 @@ packages: cross-fetch: 4.0.0 debug: 4.3.4(supports-color@8.1.1) devtools-protocol: 0.0.1232444 - ws: 8.16.0 + ws: 8.18.0 transitivePeerDependencies: - bufferutil - encoding @@ -12366,19 +12369,6 @@ packages: signal-exit: 3.0.7 dev: true - /ws@8.16.0: - resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true - /ws@8.18.0: resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} engines: {node: '>=10.0.0'}