Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
7e1071f
Push initial porting to ZE
awharn Apr 22, 2026
c126918
Add missed file
awharn Apr 22, 2026
3e4a9c2
Remove references to ZoweVsCodeExtension from zowe-native-api
t1m0thyj Apr 22, 2026
59a36d1
Fix typing of ProfilesCache in prompt API
t1m0thyj Apr 22, 2026
86033aa
Handle SDK rename
awharn Apr 23, 2026
66e15ab
Update configs, workflows, etc.
awharn Apr 23, 2026
a174e69
Fix existing tests and oversight
awharn Apr 23, 2026
7aa5c9e
Code cleanup
awharn Apr 24, 2026
26e756f
Fix last broken test
awharn Apr 24, 2026
1ccaac1
Use the newly published package instead of a file.
awharn Apr 27, 2026
1a216db
Rename package
awharn Apr 27, 2026
056f821
Update changelog, prepare release note addition.
awharn Apr 27, 2026
ee64f7f
Merge remote-tracking branch 'origin/main' into awharn/migration/zowe…
awharn Apr 27, 2026
edb7370
Update lockfile
awharn Apr 27, 2026
37cc2b2
Migrate linting behavior for zowex APIs, upgrade linters, fix breakages.
awharn Apr 27, 2026
9476557
Apply suggestions from code review
awharn Apr 28, 2026
7f0eef0
Apply suggestions from code review
awharn Apr 28, 2026
22bbb57
Update readme, package.json, webpack per suggestions
awharn Apr 28, 2026
639c76a
Remove uses of getVsceConfig function
awharn Apr 28, 2026
4ca2e01
DCO Remediation Commit for Andrew W. Harn <andrew.harn@broadcom.com>
awharn Apr 28, 2026
bb7c794
Update packages/zowe-explorer/package.nls.json
awharn Apr 30, 2026
e7219f1
Update packages/zowex-for-zowe-explorer/CHANGELOG.md
awharn Apr 30, 2026
60c7f7a
DCO Remediation Commit for Andrew W. Harn <andrew.harn@broadcom.com>
awharn Apr 30, 2026
59f5693
Enhance the logger to work with zowex, improve performance.
awharn May 1, 2026
69ff6d4
Address PR comments.
awharn May 1, 2026
138a35c
Make requested change to simplify layout
awharn May 1, 2026
3fbaff9
Replace this with ZoweLogger.
awharn May 1, 2026
329f94e
Update readme
awharn May 4, 2026
15bbe56
Merge pull request #4210 from zowe/awharn/migration/zowe-native-apis
awharn May 4, 2026
36ff5c9
Finish Zowex VSCE Migration (#4225)
awharn May 5, 2026
8febd37
Zowex staging catchup - 05052026 (#4226)
awharn May 5, 2026
5f19c2e
zowex/ promptForProfile fixes (#4224)
jace-roell May 7, 2026
8943b39
zowex: Remove SSH attribute provider for data sets (#4223)
t1m0thyj May 7, 2026
aefb025
fix: package script should skip zowex (#4239)
traeok May 9, 2026
9e0682d
added binary check (#4245)
pujal0909 May 15, 2026
a0fe5c9
Pass encoding to getSpoolContentById for Zowex (#4260)
awharn May 21, 2026
897ef37
chore: update ZE readme with SSH info (#4263)
traeok May 21, 2026
597e790
Fix Tests & Update to Main in Zowex Staging (#4281)
awharn May 29, 2026
0d22de0
Document how to link zowex sdk for devs
t1m0thyj May 28, 2026
a69d3bb
Bundle server pax in ZE extension
t1m0thyj May 28, 2026
1561500
Fix pnpm link and add doc for backend testing
t1m0thyj May 29, 2026
587869c
Apply suggestion from @anaxceron
t1m0thyj Jun 3, 2026
ce574b3
Address PR feedback
t1m0thyj Jun 3, 2026
f20696a
Merge pull request #4279 from zowe/dev/add-link-zowex-doc
awharn Jun 4, 2026
42af328
copy frontend implementation
MarkAckert May 12, 2026
c71a4ec
fix missing import
MarkAckert May 12, 2026
31be9c0
add changelog
MarkAckert May 12, 2026
41191c6
initial updates re: code review comments
MarkAckert Jun 1, 2026
e1ef500
replace sequential dataset when it's brand new
MarkAckert Jun 9, 2026
04eb906
Support linking directly to zowex PRs (#4318)
t1m0thyj Jun 10, 2026
cfc79a7
add test case for copy behavior w/ updated replace behavior
MarkAckert Jun 10, 2026
fe7398c
expose additionalDetails of imperative errors if any (#4321)
CBforZ Jun 12, 2026
af79f9e
Update staging/zowex branch with changes from main (#4331)
t1m0thyj Jun 12, 2026
66e7858
Merge branch 'staging/zowex' into user/markackert/copy-frontend
MarkAckert Jun 12, 2026
a62e6bc
Merge pull request #4244 from zowe/user/markackert/copy-frontend
MarkAckert Jun 12, 2026
af03729
tests: End-to-end tests for commands, implement `SshCommandApi.issueU…
traeok Jun 16, 2026
ba9ee68
tests: End-to-end test cases for jobs capabilities (#4328)
traeok Jun 17, 2026
a4ce8ac
fix(zowex): `SshJesApi.getJobsByParameters` should handle status (#4344)
traeok Jun 18, 2026
1d019d4
Fix `link:zowex` script not propagating changes (#4351)
t1m0thyj Jun 19, 2026
97dc5d3
fix/pass encoding for submit jcl (#4350)
jace-roell Jun 19, 2026
dd172e2
Update staging/zowex branch with changes from main (#4358)
t1m0thyj Jun 19, 2026
ee350a3
Merge branch 'staging/zowex' into update-main-with-zowex
t1m0thyj Jun 19, 2026
26f236a
Fix merge conflict resolution
t1m0thyj Jun 19, 2026
c1facc0
Third-Party DCO Remediation Commit for Jace Roell <111985297+jace-roe…
t1m0thyj Jun 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion .eslintrc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ env:
es6: true
ignorePatterns:
[
"**/benchmarks",
"**/russh-native-loader.js",
"**/scripts",
"**/__mocks__",
"**/lib",
Expand Down Expand Up @@ -68,7 +70,12 @@ rules:
"@typescript-eslint/no-unsafe-argument": off
"@typescript-eslint/no-unsafe-call": off
"@typescript-eslint/no-unsafe-member-access": off

"@typescript-eslint/no-namespace": warn
"@typescript-eslint/no-explicit-any": warn
"@typescript-eslint/no-redundant-type-constituents": warn
"@typescript-eslint/no-unsafe-enum-comparison": warn
"@typescript-eslint/no-base-to-string": warn
"@typescript-eslint/no-non-null-asserted-optional-chain": warn
"@typescript-eslint/no-shadow": error
"@typescript-eslint/no-unused-expressions": error
"@typescript-eslint/no-var-requires": warn
Expand Down
1 change: 1 addition & 0 deletions .github/release.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ module.exports = {
"zowe-explorer": "Zowe Explorer",
"zowe-explorer-ftp-extension": "IBM z/OS FTP for Zowe Explorer",
"zowe-explorer-api": "Zowe Explorer APIs",
"zowex-for-zowe-explorer": "Zowe Remote SSH APIs",
},
headerLine: "## TBD Release",
},
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/report-artifact-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ on:
paths:
- packages/zowe-explorer/**
- packages/zowe-explorer-api/**
- packages/zowex-for-zowe-explorer/**
- .github/workflows/report-artifact-pr.yml
- .github/resources/artifact-template.hbs

Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/zowe-explorer-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@ on:
paths:
- packages/zowe-explorer/**
- packages/zowe-explorer-api/**
- packages/zowex-for-zowe-explorer/**
- .github/workflows/zowe-explorer-ci.yml
pull_request:
paths:
- packages/zowe-explorer/**
- packages/zowe-explorer-api/**
- packages/zowex-for-zowe-explorer/**
- .github/workflows/zowe-explorer-ci.yml

jobs:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,4 @@ package.nls.*.json
bundle.l10n.*.json
bundle.l10n.json.template
zedc/target
packages/zowe-explorer/bin
8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
"@types/mocha": "^10.0.10",
"@types/node": "^22.13.14",
"@types/vscode": "^1.73.0",
"@typescript-eslint/eslint-plugin": "^5.62.0",
"@typescript-eslint/parser": "^5.62.0",
"@typescript-eslint/eslint-plugin": "^6.4.0",
"@typescript-eslint/parser": "^6.4.0",
"@vitest/coverage-v8": "^3.2.6",
"@vitest/ui": "^3.2.6",
"@vscode/l10n-dev": "^0.0.35",
Expand All @@ -46,7 +46,7 @@
"mocha-junit-reporter": "^2.2.1",
"mocha-multi-reporters": "^1.5.1",
"node-loader": "^2.1.0",
"prettier": "^2.8.8",
"prettier": "^3.0.0",
"rimraf": "^3.0.2",
"terser-webpack-plugin": "^5.3.16",
"tsx": "^4.21.0",
Expand All @@ -70,6 +70,6 @@
"test:parallel": "pnpm -r --parallel --color test",
"package": "pnpm -r --sequential package",
"preinstall": "npx only-allow pnpm",
"update-sdks": "pnpm -r update \"@zowe/*@zowe-v3-lts\" \"!@zowe/zowe-explorer-api\" \"!@zowe/zos-ftp-for-zowe-cli\""
"update-sdks": "pnpm -r update \"@zowe/*@zowe-v3-lts\" \"!@zowe/zowe-explorer-api\" \"!@zowe/zos-ftp-for-zowe-cli\" \"!zowex-for-zowe-explorer\""
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@
* difference. We permit floating Thenable objects that don't implement a
* .catch function and have no risk of an uncaught promise exception.
*/
const path = require("path");
const rewire = require("rewire");
const tsutils = require("tsutils");
const oldRule = rewire("@typescript-eslint/eslint-plugin/dist/rules/no-floating-promises");
const eslintPluginPath = path.dirname(require.resolve("@typescript-eslint/eslint-plugin"));
const oldRule = rewire(eslintPluginPath + "/rules/no-floating-promises");
const oldIsPromiseLike = oldRule.__get__("isPromiseLike");
oldRule.__set__("isPromiseLike", (checker, node) => {
const type = checker.getTypeAtLocation(node);
Expand Down
1 change: 1 addition & 0 deletions packages/eslint-plugin-zowe-explorer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
"package": "echo \"eslint-plugin: nothing to package.\""
},
"devDependencies": {
"@typescript-eslint/rule-tester": "^6.4.0",
"requireindex": "^1.1.0",
"rewire": "^6.0.0",
"vitest": "^3.2.6"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
"use strict";

const rule = require("../../../lib/rules/no-floating-promises");
const { ESLintUtils } = require("@typescript-eslint/utils");
const { RuleTester } = require("@typescript-eslint/rule-tester");

const ruleTester = new ESLintUtils.RuleTester({
const ruleTester = new RuleTester({
parser: "@typescript-eslint/parser",
parserOptions: {
ecmaVersion: 2015,
Expand Down
2 changes: 0 additions & 2 deletions packages/zowe-explorer-api/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -442,13 +442,11 @@ All notable changes to the "zowe-explorer-api" extension will be documented in t
- Added the `onVaultUpdate` VSCode event to notify extenders when credentials are updated on the OS vault by other applications. [#2994](https://github.com/zowe/zowe-explorer-vscode/pull/2994)
- Added the `onCredMgrsUpdate` VSCode event to notify extenders when the local PC's credential manager has been updated by other applications. [#2994](https://github.com/zowe/zowe-explorer-vscode/pull/2994)
- **LTS Breaking:** Updated most function signatures for exported programmatic interfaces. Changes make developing with the Zowe Explorer API more efficient for extenders by showing which properties they can expect when calling our APIs. [#2952](https://github.com/zowe/zowe-explorer-vscode/issues/2952)

- Updated `IApiExplorerExtender.ts`, see changes below:
- Allowed `reloadProfiles` and `initForZowe` to be synchronous methods (non-breaking)
- Updated `MainframeInteraction.ts`, see changes below:
- Modified `getStatus` to add `string` type to the optional parameter `profileType`
- Updated `IZoweTree.ts`, see changes below:

- Modified `checkCurrentProfile(node: IZoweTreeNode);` to return `Validation.IValidationProfile | Promise<Validation.IValidationProfile>`
- Modified `getSearchHistory()` to return `string[]`
- Modified `getAllLoadedItems()` to return `IZoweTreeNode[] | Promise<IZoweTreeNode[]>`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -925,64 +925,41 @@ describe("ZosmfCommandApi", () => {
const spy = sharedSpyOn(zosuss.Shell, "executeSshCwd");
spy.mockClear().mockResolvedValue(undefined);
await obj.issueUnixCommand("ls", "dir'with'quotes", SshSessionobj);
expect(spy).toHaveBeenCalledWith(
SshSessionobj,
"ls",
"dir'with'quotes",
expect.any(Function),
true
);
expect(spy).toHaveBeenCalledWith(SshSessionobj, "ls", "dir'with'quotes", expect.any(Function), true);
});

it("issueUnixCommand should pass cwd raw to executeSshCwd even with shell metacharacters", async () => {
const obj = new ZoweExplorerZosmf.CommandApi();
const spy = sharedSpyOn(zosuss.Shell, "executeSshCwd");
spy.mockClear().mockResolvedValue(undefined);

await obj.issueUnixCommand("pwd", "test'dir$(sleep 5)`whoami`", SshSessionobj);

expect(spy).toHaveBeenCalledWith(
SshSessionobj,
"pwd",
"test'dir$(sleep 5)`whoami`",
expect.any(Function),
true
);

expect(spy).toHaveBeenCalledWith(SshSessionobj, "pwd", "test'dir$(sleep 5)`whoami`", expect.any(Function), true);
});

it("issueUnixCommand should pass cwd raw to executeSshCwd even with consecutive/edge single quotes", async () => {
const obj = new ZoweExplorerZosmf.CommandApi();
const spy = sharedSpyOn(zosuss.Shell, "executeSshCwd");
spy.mockClear().mockResolvedValue(undefined);

await obj.issueUnixCommand("ls", "''weird''dir'", SshSessionobj);

expect(spy).toHaveBeenCalledWith(
SshSessionobj,
"ls",
"''weird''dir'",
expect.any(Function),
true
);

expect(spy).toHaveBeenCalledWith(SshSessionobj, "ls", "''weird''dir'", expect.any(Function), true);
});

it("issueUnixCommand should call executeSsh directly if cwd is empty", async () => {
const obj = new ZoweExplorerZosmf.CommandApi();
const spySsh = sharedSpyOn(zosuss.Shell, "executeSsh");
const spySshCwd = sharedSpyOn(zosuss.Shell, "executeSshCwd");

spySsh.mockClear().mockResolvedValue(undefined);
spySshCwd.mockClear().mockResolvedValue(undefined);

await obj.issueUnixCommand("ls", "", SshSessionobj);

expect(spySshCwd).not.toHaveBeenCalled();
expect(spySsh).toHaveBeenCalledWith(
SshSessionobj,
"ls",
expect.any(Function),
true
);
expect(spySsh).toHaveBeenCalledWith(SshSessionobj, "ls", expect.any(Function), true);
});

it("check whether sshProfileNeeded", () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,4 +181,25 @@ describe("displayCorrelatedError", () => {
expect(correlateErrorMock).toHaveBeenCalledWith(ZoweExplorerApiType.All, initialError, { profileType: "zosmf" });
expect(errorMessageMock).toHaveBeenCalledWith("Network Error. Initial error.", { items: ["More info"] });
});

it("displays an error exposing the additionalDetails field", async () => {
const initialError = new ImperativeError({
msg: "Imperative Error.",
additionalDetails: "Failed to acquire ENQ on the data set!",
causeErrors: new Error("Initial error."),
});
const error = new CorrelatedError({
correlation: { summary: "Network Error." },
initialError: initialError,
});
const correlateErrorMock = vi.spyOn(ErrorCorrelator.getInstance(), "correlateError").mockReturnValueOnce(error);
const errorMessageMock = vi.spyOn(Gui, "errorMessage");
await ErrorCorrelator.getInstance().displayError(ZoweExplorerApiType.All, initialError, {
profileType: "zosmf",
});
expect(correlateErrorMock).toHaveBeenCalledWith(ZoweExplorerApiType.All, initialError, { profileType: "zosmf" });
expect(errorMessageMock).toHaveBeenCalledWith("Network Error. Failed to acquire ENQ on the data set! Initial error.", {
items: ["More info"],
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,23 @@ import { PaginationCodeLens } from "../../../../src/vscode/ui/PaginationCodeLens
vi.mock("vscode", () => {
return {
Range: class {
public constructor(public startLine: number, public _startChar: number, public endLine: number, public _endChar: number) {
public constructor(
public startLine: number,
public _startChar: number,
public endLine: number,
public _endChar: number
) {
this.start = { line: startLine };
this.end = { line: endLine };
}
public start: { line: number };
public end: { line: number };
},
CodeLens: class {
public constructor(public range: any, public command: any) {}
public constructor(
public range: any,
public command: any
) {}
},
l10n: {
t: (str: string) => str,
Expand Down
5 changes: 4 additions & 1 deletion packages/zowe-explorer-api/src/fs/types/datasets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,10 @@ export enum DsType {
export class DsEntry extends FileEntry implements DsEntryProps {
public metadata: DsEntryMetadata;

public constructor(name: string, public isMember: boolean = false) {
public constructor(
name: string,
public isMember: boolean = false
) {
super(name);
}

Expand Down
5 changes: 4 additions & 1 deletion packages/zowe-explorer-api/src/logger/IZoweLogger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,10 @@ export class IZoweLogger {
/**
* Creates an instance of the Imperative logger
*/
public constructor(private extensionName: string, loggingPath: string) {
public constructor(
private extensionName: string,
loggingPath: string
) {
for (const appenderName of Object.keys(loggerConfig.log4jsConfig.appenders)) {
this.LOGGER_CONFIG.log4jsConfig.appenders[appenderName].filename = path.join(
loggingPath,
Expand Down
5 changes: 4 additions & 1 deletion packages/zowe-explorer-api/src/profiles/ProfilesCache.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,10 @@ export class ProfilesCache {
protected defaultProfileByType = new Map<string, imperative.IProfileLoaded>();
protected overrideWithEnv = false;

public constructor(protected log: imperative.Logger, protected cwd?: string) {
public constructor(
protected log: imperative.Logger,
protected cwd?: string
) {
this.cwd = cwd != null ? FileManagement.getFullPath(cwd) : undefined;
}

Expand Down
14 changes: 11 additions & 3 deletions packages/zowe-explorer-api/src/utils/ErrorCorrelator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ export class ErrorCorrelator {
}

for (const apiError of [
...(opts?.profileType ? this.errorMatches.get(api)?.[opts.profileType] ?? [] : []),
...(opts?.profileType ? (this.errorMatches.get(api)?.[opts.profileType] ?? []) : []),
...(this.errorMatches.get(api)?.any ?? []),
...this.errorMatches.get(ZoweExplorerApiType.All).any,
]) {
Expand Down Expand Up @@ -315,8 +315,16 @@ export class ErrorCorrelator {
*/
public async displayCorrelatedError(error: CorrelatedError, opts?: DisplayCorrelatedErrorOpts): Promise<string | undefined> {
const errorCodeStr = error.properties.errorCode ? ` (Error Code ${error.properties.errorCode})` : "";
const additionalDetails =
error.initial instanceof ImperativeError && error.initial.causeErrors instanceof Error ? error.initial.causeErrors.message : undefined;
let additionalDetails = "";
if (error.initial instanceof ImperativeError) {
if (error.initial.additionalDetails) {
additionalDetails = error.initial.additionalDetails + " ";
}
if (error.initial.causeErrors instanceof Error) {
additionalDetails += error.initial.causeErrors.message;
}
}

const userSelection = await Gui.errorMessage(
`${opts?.additionalContext ? opts.additionalContext + ": " : ""}${error.message}${errorCodeStr}${
additionalDetails ? " " + additionalDetails : ""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,10 @@
import * as vscode from "vscode";

export class PaginationCodeLens implements vscode.CodeLensProvider {
public constructor(private commandId: string, private shouldShowCodeLens?: (document: vscode.TextDocument) => boolean) {}
public constructor(
private commandId: string,
private shouldShowCodeLens?: (document: vscode.TextDocument) => boolean
) {}
public provideCodeLenses(document: vscode.TextDocument, token: vscode.CancellationToken): vscode.ProviderResult<vscode.CodeLens[]> {
const lineCount = document.lineCount;
const lastLine = lineCount - 1;
Expand Down
22 changes: 14 additions & 8 deletions packages/zowe-explorer-api/src/vscode/ui/TableView.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1022,10 +1022,13 @@ export namespace Table {
});
}

const rowsObject = rows.reduce((acc, row, index) => {
acc[index] = row;
return acc;
}, {} as Record<number, RowData>);
const rowsObject = rows.reduce(
(acc, row, index) => {
acc[index] = row;
return acc;
},
{} as Record<number, RowData>
);

return this.request<boolean>("pin-rows", { rows: rowsObject });
}
Expand All @@ -1036,10 +1039,13 @@ export namespace Table {
* @returns Whether the webview successfully unpinned the rows
*/
public async unpinRows(rows: RowData[]): Promise<boolean> {
const rowsObject = rows.reduce((acc, row, index) => {
acc[index] = row;
return acc;
}, {} as Record<number, RowData>);
const rowsObject = rows.reduce(
(acc, row, index) => {
acc[index] = row;
return acc;
},
{} as Record<number, RowData>
);

return this.request<boolean>("unpin-rows", { rows: rowsObject });
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ export class TableProviderRegistry {
this.providers.set(tableId, []);
}

const existingProviders = this.providers.get(tableId)!;
const existingProviders = this.providers.get(tableId);
if (!existingProviders.includes(provider)) {
existingProviders.push(provider);
}
Expand Down
1 change: 1 addition & 0 deletions packages/zowe-explorer/.vscodeignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
*/**

# Allowlist what we need
!bin/**
!l10n/bundle*.json
!out/src/**.js
!out/src/nls.metadata*.json
Expand Down
2 changes: 2 additions & 0 deletions packages/zowe-explorer/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ All notable changes to the "vscode-extension-for-zowe" extension will be documen

### Bug fixes

- Fixed an issue where additional error details were not displayed, particularly using SSH profiles. [zowex/#766](https://github.com/zowe/zowex/issues/766)

## `3.5.1`

### Bug fixes
Expand Down
Loading
Loading