diff --git a/.npmrc b/.npmrc index 060337bfad898..9409ee2f45d4a 100644 --- a/.npmrc +++ b/.npmrc @@ -1,6 +1,6 @@ disturl="https://electronjs.org/headers" target="39.2.7" -ms_build_id="12953945" +ms_build_id="13098910" runtime="electron" build_from_source="true" legacy-peer-deps="true" diff --git a/build/.moduleignore b/build/.moduleignore index 0459b46f74346..ed36151130cc1 100644 --- a/build/.moduleignore +++ b/build/.moduleignore @@ -75,10 +75,10 @@ native-is-elevated/src/** native-is-elevated/deps/** !native-is-elevated/build/Release/*.node -native-watchdog/binding.gyp -native-watchdog/build/** -native-watchdog/src/** -!native-watchdog/build/Release/*.node +@vscode/native-watchdog/binding.gyp +@vscode/native-watchdog/build/** +@vscode/native-watchdog/src/** +!@vscode/native-watchdog/build/Release/*.node @vscode/vsce-sign/** !@vscode/vsce-sign/src/main.d.ts diff --git a/build/linux/debian/dep-lists.ts b/build/linux/debian/dep-lists.ts index 941501b532c52..46c257da4f7a7 100644 --- a/build/linux/debian/dep-lists.ts +++ b/build/linux/debian/dep-lists.ts @@ -33,6 +33,7 @@ export const referenceGeneratedDepsByArch = { 'libc6 (>= 2.2.5)', 'libc6 (>= 2.25)', 'libc6 (>= 2.28)', + 'libc6 (>= 2.4)', 'libcairo2 (>= 1.6.0)', 'libcurl3-gnutls | libcurl3-nss | libcurl4 | libcurl3', 'libdbus-1-3 (>= 1.9.14)', diff --git a/eslint.config.js b/eslint.config.js index b245f9466ac42..af29b3dba74b3 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1445,6 +1445,7 @@ export default tseslint.config( '@vscode/vscode-languagedetection', '@vscode/ripgrep', '@vscode/iconv-lite-umd', + '@vscode/native-watchdog', '@vscode/policy-watcher', '@vscode/proxy-agent', '@vscode/spdlog', @@ -1463,7 +1464,6 @@ export default tseslint.config( 'minimist', 'node:module', 'native-keymap', - 'native-watchdog', 'net', 'node-pty', 'os', diff --git a/package-lock.json b/package-lock.json index b14a6d39f8e28..2b2332b3383b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ "@types/semver": "^7.5.8", "@vscode/deviceid": "^0.1.1", "@vscode/iconv-lite-umd": "0.7.1", + "@vscode/native-watchdog": "^1.4.6", "@vscode/policy-watcher": "^1.3.2", "@vscode/proxy-agent": "^0.36.0", "@vscode/ripgrep": "^1.15.13", @@ -45,11 +46,10 @@ "minimist": "^1.2.8", "native-is-elevated": "0.8.0", "native-keymap": "^3.3.5", - "native-watchdog": "^1.4.1", "node-pty": "^1.2.0-beta.6", "open": "^10.1.2", "tas-client": "0.3.1", - "undici": "^7.9.0", + "undici": "^7.18.2", "v8-inspect-profiler": "^0.1.1", "vscode-oniguruma": "1.7.0", "vscode-regexpp": "^3.1.0", @@ -3258,6 +3258,13 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/@vscode/native-watchdog": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@vscode/native-watchdog/-/native-watchdog-1.4.6.tgz", + "integrity": "sha512-C2hsQFVYF2hBv7sa7OztRBimrMsEofGNh/lYs7MIPpKdhyJpYSpDb5iu/bilgLqSO61PLBCJ5xw6iFI21LI+9Q==", + "hasInstallScript": true, + "license": "MIT" + }, "node_modules/@vscode/policy-watcher": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/@vscode/policy-watcher/-/policy-watcher-1.3.7.tgz", @@ -12825,12 +12832,6 @@ "hasInstallScript": true, "license": "MIT" }, - "node_modules/native-watchdog": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/native-watchdog/-/native-watchdog-1.4.2.tgz", - "integrity": "sha512-iT3Uj6FFdrW5vHbQ/ybiznLus9oiUoMJ8A8nyugXv9rV3EBhIodmGs+mztrwQyyBc+PB5/CrskAH/WxaUVRRSQ==", - "hasInstallScript": true - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -17233,9 +17234,9 @@ "dev": true }, "node_modules/undici": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.9.0.tgz", - "integrity": "sha512-e696y354tf5cFZPXsF26Yg+5M63+5H3oE6Vtkh2oqbvsE2Oe7s2nIbcQh5lmG7Lp/eS29vJtTpw9+p6PX0qNSg==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.18.2.tgz", + "integrity": "sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==", "license": "MIT", "engines": { "node": ">=20.18.1" diff --git a/package.json b/package.json index f698bd3808f68..44e6740de43f2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "code-oss-dev", "version": "1.109.0", - "distro": "b570759d1928b4b2f34a86c40da42b1a2b6d3796", + "distro": "f44449f84806363760ce8bb8dbe85cd8207498ff", "author": { "name": "Microsoft Corporation" }, @@ -79,6 +79,7 @@ "@types/semver": "^7.5.8", "@vscode/deviceid": "^0.1.1", "@vscode/iconv-lite-umd": "0.7.1", + "@vscode/native-watchdog": "^1.4.6", "@vscode/policy-watcher": "^1.3.2", "@vscode/proxy-agent": "^0.36.0", "@vscode/ripgrep": "^1.15.13", @@ -108,11 +109,10 @@ "minimist": "^1.2.8", "native-is-elevated": "0.8.0", "native-keymap": "^3.3.5", - "native-watchdog": "^1.4.1", "node-pty": "^1.2.0-beta.6", "open": "^10.1.2", "tas-client": "0.3.1", - "undici": "^7.9.0", + "undici": "^7.18.2", "v8-inspect-profiler": "^0.1.1", "vscode-oniguruma": "1.7.0", "vscode-regexpp": "^3.1.0", @@ -240,4 +240,4 @@ "optionalDependencies": { "windows-foreground-love": "0.5.0" } -} \ No newline at end of file +} diff --git a/remote/package-lock.json b/remote/package-lock.json index fd2b8a14beeaf..b651afca5e41f 100644 --- a/remote/package-lock.json +++ b/remote/package-lock.json @@ -13,6 +13,7 @@ "@parcel/watcher": "^2.5.4", "@vscode/deviceid": "^0.1.1", "@vscode/iconv-lite-umd": "0.7.1", + "@vscode/native-watchdog": "^1.4.6", "@vscode/proxy-agent": "^0.36.0", "@vscode/ripgrep": "^1.15.13", "@vscode/spdlog": "^0.15.2", @@ -37,7 +38,6 @@ "katex": "^0.16.22", "kerberos": "2.1.1", "minimist": "^1.2.8", - "native-watchdog": "^1.4.1", "node-pty": "^1.2.0-beta.6", "tas-client": "0.3.1", "vscode-oniguruma": "1.7.0", @@ -409,6 +409,13 @@ "integrity": "sha512-tK6k0DXFHW7q5+GGuGZO+phpAqpxO4WXl+BLc/8/uOk3RsM2ssAL3CQUQDb1TGfwltjsauhN6S4ghYZzs4sPFw==", "license": "MIT" }, + "node_modules/@vscode/native-watchdog": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@vscode/native-watchdog/-/native-watchdog-1.4.6.tgz", + "integrity": "sha512-C2hsQFVYF2hBv7sa7OztRBimrMsEofGNh/lYs7MIPpKdhyJpYSpDb5iu/bilgLqSO61PLBCJ5xw6iFI21LI+9Q==", + "hasInstallScript": true, + "license": "MIT" + }, "node_modules/@vscode/proxy-agent": { "version": "0.36.0", "resolved": "https://registry.npmjs.org/@vscode/proxy-agent/-/proxy-agent-0.36.0.tgz", @@ -1025,12 +1032,6 @@ "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" }, - "node_modules/native-watchdog": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/native-watchdog/-/native-watchdog-1.4.2.tgz", - "integrity": "sha512-iT3Uj6FFdrW5vHbQ/ybiznLus9oiUoMJ8A8nyugXv9rV3EBhIodmGs+mztrwQyyBc+PB5/CrskAH/WxaUVRRSQ==", - "hasInstallScript": true - }, "node_modules/node-abi": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.8.0.tgz", diff --git a/remote/package.json b/remote/package.json index f506788e938e2..180f3b668f915 100644 --- a/remote/package.json +++ b/remote/package.json @@ -8,6 +8,7 @@ "@parcel/watcher": "^2.5.4", "@vscode/deviceid": "^0.1.1", "@vscode/iconv-lite-umd": "0.7.1", + "@vscode/native-watchdog": "^1.4.6", "@vscode/proxy-agent": "^0.36.0", "@vscode/ripgrep": "^1.15.13", "@vscode/spdlog": "^0.15.2", @@ -32,7 +33,6 @@ "katex": "^0.16.22", "kerberos": "2.1.1", "minimist": "^1.2.8", - "native-watchdog": "^1.4.1", "node-pty": "^1.2.0-beta.6", "tas-client": "0.3.1", "vscode-oniguruma": "1.7.0", diff --git a/src/main.ts b/src/main.ts index ec2e45c31d255..fc2d71affbd2a 100644 --- a/src/main.ts +++ b/src/main.ts @@ -227,7 +227,10 @@ function configureCommandlineSwitchesSync(cliArgs: NativeParsedArgs) { // bypass any specified proxy for the given semi-colon-separated list of hosts 'proxy-bypass-list', - 'remote-debugging-port' + 'remote-debugging-port', + + // Enable recovery from invalid Graphite recordings + 'enable-graphite-invalid-recording-recovery' ]; if (process.platform === 'linux') { @@ -374,6 +377,7 @@ interface IArgvConfig { readonly 'use-inmemory-secretstorage'?: boolean; readonly 'enable-rdp-display-tracking'?: boolean; readonly 'remote-debugging-port'?: string; + readonly 'enable-graphite-invalid-recording-recovery'?: boolean; } function readArgvConfigSync(): IArgvConfig { diff --git a/src/vs/editor/browser/viewParts/rulers/rulers.css b/src/vs/editor/browser/viewParts/rulers/rulers.css index aad356bd7490a..17a9da155d001 100644 --- a/src/vs/editor/browser/viewParts/rulers/rulers.css +++ b/src/vs/editor/browser/viewParts/rulers/rulers.css @@ -7,4 +7,5 @@ position: absolute; top: 0; box-shadow: 1px 0 0 0 var(--vscode-editorRuler-foreground) inset; + pointer-events: none; } diff --git a/src/vs/editor/browser/viewParts/rulers/rulers.ts b/src/vs/editor/browser/viewParts/rulers/rulers.ts index f34f20f43a96b..ec1a5042e9168 100644 --- a/src/vs/editor/browser/viewParts/rulers/rulers.ts +++ b/src/vs/editor/browser/viewParts/rulers/rulers.ts @@ -70,7 +70,7 @@ export class Rulers extends ViewPart { while (addCount > 0) { const node = createFastDomNode(document.createElement('div')); node.setClassName('view-ruler'); - node.setWidth('1px'); + node.setWidth('1ch'); this.domNode.appendChild(node); this._renderedRulers.push(node); addCount--; diff --git a/src/vs/platform/diagnostics/common/diagnostics.ts b/src/vs/platform/diagnostics/common/diagnostics.ts index d2a5432d4ed01..bdb36c2a799a4 100644 --- a/src/vs/platform/diagnostics/common/diagnostics.ts +++ b/src/vs/platform/diagnostics/common/diagnostics.ts @@ -142,6 +142,11 @@ export interface IProcessDiagnostics { readonly name: string; } +export interface IGPULogMessage { + readonly header: string; + readonly message: string; +} + export interface IMainProcessDiagnostics { readonly mainPID: number; readonly mainArguments: string[]; // All arguments after argv[0], the exec path @@ -149,4 +154,5 @@ export interface IMainProcessDiagnostics { readonly pidToNames: IProcessDiagnostics[]; readonly screenReader: boolean; readonly gpuFeatureStatus: any; + readonly gpuLogMessages: IGPULogMessage[]; } diff --git a/src/vs/platform/diagnostics/electron-main/diagnosticsMainService.ts b/src/vs/platform/diagnostics/electron-main/diagnosticsMainService.ts index 72e9060db8c80..d128f47f473e6 100644 --- a/src/vs/platform/diagnostics/electron-main/diagnosticsMainService.ts +++ b/src/vs/platform/diagnostics/electron-main/diagnosticsMainService.ts @@ -7,7 +7,7 @@ import { app, BrowserWindow, Event as IpcEvent } from 'electron'; import { validatedIpcMain } from '../../../base/parts/ipc/electron-main/ipcMain.js'; import { CancellationToken } from '../../../base/common/cancellation.js'; import { URI } from '../../../base/common/uri.js'; -import { IDiagnosticInfo, IDiagnosticInfoOptions, IMainProcessDiagnostics, IProcessDiagnostics, IRemoteDiagnosticError, IRemoteDiagnosticInfo, IWindowDiagnostics } from '../common/diagnostics.js'; +import { IDiagnosticInfo, IDiagnosticInfoOptions, IGPULogMessage, IMainProcessDiagnostics, IProcessDiagnostics, IRemoteDiagnosticError, IRemoteDiagnosticInfo, IWindowDiagnostics } from '../common/diagnostics.js'; import { createDecorator } from '../../instantiation/common/instantiation.js'; import { ICodeWindow } from '../../window/electron-main/window.js'; import { getAllWindowsExcludingOffscreen, IWindowsMainService } from '../../windows/electron-main/windows.js'; @@ -94,13 +94,24 @@ export class DiagnosticsMainService implements IDiagnosticsMainService { pidToNames.push({ pid, name }); } + type AppWithGPULogMethod = typeof app & { + getGPULogMessages(): IGPULogMessage[]; + }; + + let gpuLogMessages: IGPULogMessage[] = []; + const customApp = app as AppWithGPULogMethod; + if (typeof customApp.getGPULogMessages === 'function') { + gpuLogMessages = customApp.getGPULogMessages(); + } + return { mainPID: process.pid, mainArguments: process.argv.slice(1), windows, pidToNames, screenReader: !!app.accessibilitySupportEnabled, - gpuFeatureStatus: app.getGPUFeatureStatus() + gpuFeatureStatus: app.getGPUFeatureStatus(), + gpuLogMessages }; } diff --git a/src/vs/platform/diagnostics/node/diagnosticsService.ts b/src/vs/platform/diagnostics/node/diagnosticsService.ts index ea57c9326e467..5a424bb9ff009 100644 --- a/src/vs/platform/diagnostics/node/diagnosticsService.ts +++ b/src/vs/platform/diagnostics/node/diagnosticsService.ts @@ -255,6 +255,12 @@ export class DiagnosticsService implements IDiagnosticsService { output.push(`Screen Reader: ${info.screenReader ? 'yes' : 'no'}`); output.push(`Process Argv: ${info.mainArguments.join(' ')}`); output.push(`GPU Status: ${this.expandGPUFeatures(info.gpuFeatureStatus)}`); + if (info.gpuLogMessages && info.gpuLogMessages.length > 0) { + output.push(`GPU Log Messages:`); + info.gpuLogMessages.forEach(msg => { + output.push(`${msg.header}: ${msg.message}`); + }); + } return output.join('\n'); } diff --git a/src/vs/platform/environment/test/node/nativeModules.integrationTest.ts b/src/vs/platform/environment/test/node/nativeModules.integrationTest.ts index 50999154d1656..c30c6da5f0b32 100644 --- a/src/vs/platform/environment/test/node/nativeModules.integrationTest.ts +++ b/src/vs/platform/environment/test/node/nativeModules.integrationTest.ts @@ -50,9 +50,9 @@ flakySuite('Native Modules (all platforms)', () => { assert.ok(result, testErrorMessage('native-keymap')); }); - test('native-watchdog', async () => { - const watchDog = await import('native-watchdog'); - assert.ok(typeof watchDog.start === 'function', testErrorMessage('native-watchdog')); + test('@vscode/native-watchdog', async () => { + const watchDog = await import('@vscode/native-watchdog'); + assert.ok(typeof watchDog.start === 'function', testErrorMessage('@vscode/native-watchdog')); }); test('@vscode/sudo-prompt', async () => { diff --git a/src/vs/workbench/api/node/extensionHostProcess.ts b/src/vs/workbench/api/node/extensionHostProcess.ts index db779d8fd3f62..bb0fb8eec64c0 100644 --- a/src/vs/workbench/api/node/extensionHostProcess.ts +++ b/src/vs/workbench/api/node/extensionHostProcess.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import minimist from 'minimist'; -import * as nativeWatchdog from 'native-watchdog'; +import * as nativeWatchdog from '@vscode/native-watchdog'; import * as net from 'net'; import { ProcessTimeRunOnceScheduler } from '../../../base/common/async.js'; import { VSBuffer } from '../../../base/common/buffer.js'; @@ -375,7 +375,7 @@ function connectToRenderer(protocol: IMessagePassingProtocol): Promise .content .editor-group-container > .title .tabs-container > .tab { + background-color: color-mix(in srgb, var(--vscode-progressBar-background) 15%, transparent) !important; +} + +/* Active tab gets slightly stronger tint */ +.monaco-workbench.focus-view-active .part.editor > .content .editor-group-container > .title .tabs-container > .tab.active { + background-color: color-mix(in srgb, var(--vscode-progressBar-background) 25%, transparent) !important; +} + +.hc-black .monaco-workbench.focus-view-active .part.editor > .content .editor-group-container > .title .tabs-container > .tab, +.hc-light .monaco-workbench.focus-view-active .part.editor > .content .editor-group-container > .title .tabs-container > .tab { + background-color: transparent !important; + border: 1px solid var(--vscode-contrastBorder); +} + +/* Border around entire editor area using pseudo-element overlay */ +.monaco-workbench.focus-view-active .part.editor { + position: relative; +} + +@keyframes focus-view-glow-pulse { + 0%, 100% { + box-shadow: + 0 0 8px 2px color-mix(in srgb, var(--vscode-progressBar-background) 50%, transparent), + 0 0 20px 4px color-mix(in srgb, var(--vscode-progressBar-background) 25%, transparent), + inset 0 0 15px 2px color-mix(in srgb, var(--vscode-progressBar-background) 15%, transparent); + } + 50% { + box-shadow: + 0 0 15px 4px color-mix(in srgb, var(--vscode-progressBar-background) 70%, transparent), + 0 0 35px 8px color-mix(in srgb, var(--vscode-progressBar-background) 35%, transparent), + inset 0 0 25px 4px color-mix(in srgb, var(--vscode-progressBar-background) 25%, transparent); + } +} + +.monaco-workbench.focus-view-active .part.editor::after { content: ''; position: absolute; inset: 0; pointer-events: none; - z-index: 10000; - box-shadow: inset 0 0 0 3px var(--vscode-progressBar-background), inset 0 0 30px color-mix(in srgb, var(--vscode-progressBar-background) 35%, transparent); - transition: box-shadow 0.2s ease-in-out; + z-index: 1000; + border: 2px solid var(--vscode-progressBar-background); + border-radius: 4px; + animation: focus-view-glow-pulse 2s ease-in-out infinite; } -.hc-black .monaco-workbench.focus-view-active::after, -.hc-light .monaco-workbench.focus-view-active::after { - box-shadow: inset 0 0 0 2px var(--vscode-contrastBorder); +.hc-black .monaco-workbench.focus-view-active .part.editor::after, +.hc-light .monaco-workbench.focus-view-active .part.editor::after { + border-color: var(--vscode-contrastBorder); + animation: none; + box-shadow: none; } /* ======================================== diff --git a/src/vs/workbench/contrib/chat/common/model/chatModel.ts b/src/vs/workbench/contrib/chat/common/model/chatModel.ts index eb8349b4e1072..c32f835af684c 100644 --- a/src/vs/workbench/contrib/chat/common/model/chatModel.ts +++ b/src/vs/workbench/contrib/chat/common/model/chatModel.ts @@ -2055,7 +2055,7 @@ export class ChatModel extends Disposable implements IChatModel { agent, slashCommand: raw.slashCommand, requestId: request.id, - modelState: raw.modelState || { value: raw.isCanceled ? ResponseModelState.Cancelled : ResponseModelState.Complete, completedAt: Date.now() }, + modelState, vote: raw.vote, timestamp: raw.timestamp, voteDownReason: raw.voteDownReason, diff --git a/src/vs/workbench/contrib/extensions/browser/media/extensionEditor.css b/src/vs/workbench/contrib/extensions/browser/media/extensionEditor.css index eb7649d45cb16..2e1cece4685df 100644 --- a/src/vs/workbench/contrib/extensions/browser/media/extensionEditor.css +++ b/src/vs/workbench/contrib/extensions/browser/media/extensionEditor.css @@ -131,9 +131,8 @@ .extension-editor > .header > .details > .subtitle { padding-top: 6px; - white-space: nowrap; - height: 20px; line-height: 20px; + flex-wrap: wrap; } .extension-editor > .header > .details > .subtitle .hide { @@ -179,9 +178,6 @@ .extension-editor > .header > .details > .description { margin-top: 10px; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; } .extension-editor > .header > .details > .actions-status-container { @@ -197,6 +193,10 @@ text-align: initial; } +.extension-editor > .header > .details > .actions-status-container > .monaco-action-bar > .actions-container { + flex-wrap: wrap; +} + .extension-editor > .header > .details > .actions-status-container > .monaco-action-bar > .actions-container > .action-item { margin-right: 0; overflow: hidden; diff --git a/src/vs/workbench/electron-browser/desktop.contribution.ts b/src/vs/workbench/electron-browser/desktop.contribution.ts index 5fad6f9317779..a18ff87a5d8d6 100644 --- a/src/vs/workbench/electron-browser/desktop.contribution.ts +++ b/src/vs/workbench/electron-browser/desktop.contribution.ts @@ -454,6 +454,10 @@ import { MAX_ZOOM_LEVEL, MIN_ZOOM_LEVEL } from '../../platform/window/electron-b 'remote-debugging-port': { type: 'string', description: localize('argv.remoteDebuggingPort', "Specifies the port to use for remote debugging.") + }, + 'enable-graphite-invalid-recording-recovery': { + type: 'boolean', + description: localize('argv.enableGraphiteInvalidRecordingRecovery', "Enables recovery from invalid Graphite recordings.") } } }; diff --git a/test/sanity/src/context.ts b/test/sanity/src/context.ts index 82023c01c1a0d..2fbd0a5eaf57e 100644 --- a/test/sanity/src/context.ts +++ b/test/sanity/src/context.ts @@ -30,7 +30,7 @@ interface ITargetMetadata { */ export class TestContext { private static readonly authenticodeInclude = /^.+\.(exe|dll|sys|cab|cat|msi|jar|ocx|ps1|psm1|psd1|ps1xml|pssc1)$/i; - private static readonly codesignExclude = /node_modules\/(@parcel\/watcher\/build\/Release\/watcher\.node|@vscode\/deviceid\/build\/Release\/windows\.node|@vscode\/ripgrep\/bin\/rg|@vscode\/spdlog\/build\/Release\/spdlog.node|kerberos\/build\/Release\/kerberos.node|native-watchdog\/build\/Release\/watchdog\.node|node-pty\/build\/Release\/(pty\.node|spawn-helper)|vsda\/build\/Release\/vsda\.node)$/; + private static readonly codesignExclude = /node_modules\/(@parcel\/watcher\/build\/Release\/watcher\.node|@vscode\/deviceid\/build\/Release\/windows\.node|@vscode\/ripgrep\/bin\/rg|@vscode\/spdlog\/build\/Release\/spdlog.node|kerberos\/build\/Release\/kerberos.node|@vscode\/native-watchdog\/build\/Release\/watchdog\.node|node-pty\/build\/Release\/(pty\.node|spawn-helper)|vsda\/build\/Release\/vsda\.node)$/; private readonly tempDirs = new Set(); private _currentTest?: Mocha.Test & { consoleOutputs?: string[] };