Change:
My VScode and Cursor are broken since today's update. I can't use 'Run and debug', it doesn't open a terminal for my web app runs. Only runs work. VS Code Version: 1.93.0 OS Version: MacOS 14.6.1 (23G93)
I have the same issue when trying to run and debug my Electron application. When I change to (or remove since is the default value) I can use 'Run and debug' again. I won't get the output of the main process (only the renderer process), but at least it's working for now.
same here, this launch configuration fails to start on macos when using or . it only works if you have or remove the console configuration. VS Code Version: 1.93.1 OS Version: MacOS Sonoma 14.6.1 Demo:
Exactly the same issue with nx and nest, also for some strange reason the breakpoints are marked as attached (red) even when no process is running. Something definitely was broken in the last version, this was working fine a few days ago. Not happening on WSL2.
were there any terminal-relate changes here? The on the debug side didn't change in the last release. (Or is there a better way to do things side from a 1s timeout now that shell integration is smart?)
I'm experiencing the same issues; I can't debug anything in NodeJS/TypeScript. This started happening after I updated to MacOS Sequoia. The only way to make it work is if I set the value to the property in the . However, that's not the desired behavior. After a few hours of testing, I managed to make it work —although it's not the ideal solution— by adding the property with the value . Additionally, I with the value . In summary, I have the following configuration:
Your case probably duplicates
Nothing comes to mind around recent changes to terminal launch, apart from a different path for SI scripts. The better way to run command is to use shell integration is it's available. There's no helper function for it just yet though. do you know what that issue was we were discussing a helper?
<!-- AUTHORVERIFICATIONREQUEST --This bug has been fixed in the latest release of ! you can help us out by commenting if things are now working as expected. If things still don't seem right, please ensure you're on version of Insiders (today's or later - you can use in the command palette to check), and leave a comment letting us know what isn't working as expected. Happy Coding!
Looks like it's solved. Waiting for the official release so Vscode + Cursor will be fixed.
fyi I think cursor is quite a bit behind vscode so I would not expect it to be fixed there soon
Weird, the issue was immediate on both ides a week ago.
Marking as verified due to confirmation.

Discussion:
*  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ <del> import type * as vscode from 'vscode'; import { createCancelablePromise, firstParallel, timeout } from '../../../base/common/async.js'; import { IDisposable } from '../../../base/common/lifecycle.js'; </del> <ins> import * as vscode from 'vscode'; import { createCancelablePromise, disposableTimeout, firstParallel, RunOnceScheduler, timeout } from '../../../base/common/async.js'; import { DisposableStore, IDisposable } from '../../../base/common/lifecycle.js'; </ins> import * as platform from '../../../base/common/platform.js'; import * as nls from '../../../nls.js'; import { IExternalTerminalService } from '../../../platform/externalTerminal/common/externalTerminal.js';

import { DebugAdapterExecutable, DebugAdapterNamedPipeServer, DebugAdapterServer, ThemeIcon } from '../common/extHostTypes.js'; import { IExtHostVariableResolverProvider } from '../common/extHostVariableResolverService.js'; import { IExtHostWorkspace } from '../common/extHostWorkspace.js'; <ins> import { IExtHostTerminalShellIntegration } from '../common/extHostTerminalShellIntegration.js'; </ins> export class ExtHostDebugService extends ExtHostDebugServiceBase {

@IExtHostExtensionService extensionService: IExtHostExtensionService, @IExtHostConfiguration configurationService: IExtHostConfiguration, @IExtHostTerminalService private _terminalService: IExtHostTerminalService, <ins> @IExtHostTerminalShellIntegration private _terminalShellIntegrationService: IExtHostTerminalShellIntegration, </ins> @IExtHostEditorTabs editorTabs: IExtHostEditorTabs, @IExtHostVariableResolverProvider variableResolver: IExtHostVariableResolverProvider, @IExtHostCommands commands: IExtHostCommands,

const shellProcessId = await terminal.processId; if (giveShellTimeToInitialize) { <del> // give a new terminal some time to initialize the shell await new Promise(resolve => setTimeout(resolve, 1000)); </del> <ins> // give a new terminal some time to initialize the shell (most recently, #228191) // - If shell integration is available, use that as a deterministic signal // - Debounce content being written to known when the prompt is available // - Give a longer timeout otherwise const enum Timing { DataDebounce = 500, MaxDelay = 5000, } const ds = new DisposableStore(); await new Promise<void>(resolve => { const scheduler = ds.add(new RunOnceScheduler(resolve, Timing.DataDebounce)); ds.add(this._terminalService.onDidWriteTerminalData(e => { if (e.terminal === terminal) { scheduler.schedule(); } })); ds.add(this._terminalShellIntegrationService.onDidChangeTerminalShellIntegration(e => { if (e.terminal === terminal) { resolve(); } })); ds.add(disposableTimeout(resolve, Timing.MaxDelay)); }); ds.dispose(); </ins> } else { <del> if (terminal.state.isInteractedWith) { </del> <ins> if (terminal.state.isInteractedWith && !terminal.shellIntegration) { </ins> terminal.sendText('u0003'); // Ctrl+C for #106743. Not part of the same command for #107969 await timeout(200); // mirroring https://github.com/microsoft/vscode/blob/c67ccc70ece5f472ec25464d3eeb874cfccee9f1/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts#L852-L857 }

} const command = prepareCommand(shell, args.args, !!args.argsCanBeInterpretedByShell, cwdForPrepareCommand, args.env); <del> terminal.sendText(command); </del> <ins> if (terminal.shellIntegration) { terminal.shellIntegration.executeCommand(command); } else { terminal.sendText(command); } </ins> // Mark terminal as unused when its session ends, see #112055 const sessionListener = this.onDidTerminateDebugSession(s => {