MetaDescription: Learn what is new in the Visual Studio Code August 2020 Release (1.49)
MetaSocialImage: 1_49/release-highlights.png
Date: 2020-9-12
DownloadVersion: 1.49.0
---
# August 2020 (version 1.49)
<!-- DOWNLOAD_LINKS_PLACEHOLDER -->
Welcome to the Insiders build. These are the preliminary notes for the August 1.49 release of Visual Studio Code. As we get closer to the release date, you'll find details below about new features and important fixes.
Until the August milestone release notes are available, you can still track our progress:
* **[Commit log](https://github.com/Microsoft/vscode/commits/master)** - GitHub commits to the vscode open-source repository.
* **[Closed issues](https://github.com/Microsoft/vscode/issues?q=is%3Aissue+milestone%3A%22August+2020%22+is%3Aclosed)** - Resolved bugs and implemented feature requests in the milestone.
We really appreciate people trying our new features as soon as they are ready, so check back here often and learn what's new.
If you find issues or have suggestions, you can enter them in the [VS Code repository](https://github.com/Microsoft/vscode/issues) on GitHub.
When contributing to another project, the **Format on Save** and **Format Document** commands can cause unwanted updates because they format lines that you have not changed. This behavior can result in large pull requests, which are hard to review and touch code you didn't intend to modify. There is now a new feature to help limited unwanted changes:
* We added a new command **Format Modified Lines**, which allows you to only format new and changes lines.
* There is a new setting `editor.formatOnSaveMode`, which makes **Format on Save** only apply to modified lines.
Note that modifications are defined by your source control provider, for example, changes as detected by Git, and that without changes in source control, no modified lines are formatted. The Quick Diff indicator is a reliable hint for what lines will be formatted.
The **Format Selection** command is now multi-cursor aware. Select multiple lines or statements, trigger **Format Selection**, and formatting will be applied to all sections.
When typing in the Find input box, VS Code automatically searches and moves the cursor to the nearest find result. You can now control if the cursor should jump to the find matches while typing by configuring `editor.find.cursorMoveOnType`. When disabled, VS Code will only move the cursor when you press `Enter/Shift+Enter`.
The Debug Console now supports filtering, making it easier for users to find the output they are looking for or to hide irrelevant logging output. The filter also supports exclude patterns (for example, patterns starting with an exclamation mark `!`). The filter only applies to program output but not to evaluations run by a user. Like other input boxes in VS Code, you can use the `up` and `down` arrow keys to navigate between old filter inputs.
* When debugging multiple sessions, VS Code now only renders the arrow in the glyph margin for the focused session. This should make it easier for users to distinguish which editor Call Stack decoration belongs to the debug session the user is interested in.
* Large stack frames now show a **Load All Stack Frames** button to load all the remaining stack frames. Previously this was a **Load More Stack Frames** button, which would require multiple clicks for large stack traces.
[Auto Attach](https://code.visualstudio.com/docs/nodejs/nodejs-debugging#_auto-attach-feature) can now debug processes even without manually passing an `--inspect` flag to them. When Auto Attach is turned on, by default VS Code uses its "smart" mode to debug any Node.js script outside of `node_modules` folders, as well as some common 'runner' tools such as mocha and ts-node.
You can switch back to the old behavior, or choose to debug **all** Node.js scripts, using the **debug.javascript.autoAttachFilter** setting. If you want to change when the "smart" mode attaches, you can configure it in the **debug.javascript.autoAttachSmartPattern** setting.
Previously, the stack trace when logging a JavaScript error like `console.log(error)` would show the locations in your compiled code. If sourcemaps are available, VS Code will now process the stack trace to use the source locations. This is useful when debugging web apps that use bundlers like Webpack.
* Previously, VS Code aggressively cached sourcemaps in a way that interfered with some types of tooling, such as Angular's `ng serve` and Nest.js `nest start --watch`. This is now fixed.
* When working in a remote (SSH, Containers, or WSL), VS Code did not support attaching to browsers already running locally; this is now fixed.
* You can now choose to stop if a conditional breakpoint throws an error by toggling the **debug.javascript.breakOnConditionalError** setting.
Previously, the cell execute button would take the place of the execution order label when hovering or selecting a cell. This made it impossible to see the execution order label while executing a cell. We have moved it to be below the execute button, aligned with the base of the editor. This should make it easier to find. (In this example, it's the `[6]`):
It's now possible for extensions to contribute custom items to the cell Status bar, similarly to the VS Code Status bar. These items can be buttons that trigger commands, or plain text items. As an example, our GitHub issues notebook extension now contributes the **Open x results** command as a Status bar item:
In this release, we added a new type of diff editor for viewing changes in notebook documents. Traditional notebooks are stored in JSON format, which is easy to parse but not effective for diffing since most diff algorithms on text files are line-based. To improve this experience, we built an enhanced diff editor, which is aware of the concept of notebook documents and cells to help users quickly identify what cell content or metadata are changed.
You can still switch to regular text diff editor temporarily from the editor action tool bar or disable this feature by turning off the setting `notebook.diff.enablePreview`.
Work continues on the [GitHub Pull Requests and Issues](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github) extension, which allows you to work on, create, and manage pull requests and issues. Some updates for this release include:
To learn about all the new features and updates, you can see the full [changelog for the 0.20.0](https://github.com/microsoft/vscode-pull-request-github/blob/master/CHANGELOG.md#0200) release of the extension.
The terminal link provider API is now stable. This API enables language/lint extensions to handle more obscure link formats that are not already supported and even support language-specific behavior.
Take the following Java exception for example:
```
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
Using terminal link providers, it is now possible to have a link for `java.lang.ArrayIndexOutOfBoundsException` that goes to API documentation and create links for the symbols `MyProgram` or `main`.
* **DebugAdapterNamedPipeServer**: VS Code offers three different ways of communication with Debug Adapters: via direct method calls, stdin/stdout, or TCP sockets. In this milestone, we've added a fourth type: via "named pipes". Our debugger sample "Mock Debug" [shows](https://github.com/microsoft/vscode-mock-debug/blob/f4b0e37cfd0cb1653c82a26bdab4910c87489713/src/extension.ts#L215-L244) how to use the `DebugAdapterNamedPipeServer`.
* **Changed timing of 'preLaunchTask'**: Before a debug session starts, the debug configuration's `preLaunchTask` is now launched in between the `resolveDebugConfiguration` and the `resolveDebugConfigurationWithSubstitutedVariables` calls of a `DebugConfigurationProvider`. Previously, it was launched after both calls. For details, see [issue #95162](https://github.com/microsoft/vscode/issues/95162).
* **Access Debug Adapter Protocol Breakpoints**: VS Code breakpoints are independent from debug adapters and they exist outside of debug sessions. When a debug session starts, VS Code breakpoints are registered with the debug adapter of the debug session and VS Code receives Debug Adapter Protocol (DAP) breakpoints in return. That means one VS Code breakpoint maps to zero, one, or more DAP breakpoints (depending on the number of concurrently active debug sessions). VS Code maintains a mapping between its breakpoints and corresponding DAP breakpoints. In this milestone, we've added an API for accessing the mapping: the method `DebugSession.getDebugProtocolBreakpoint` returns a DAP breakpoint for a given VS Code breakpoint.
* **Finalized APIs**: Three proposed extension APIs for debugging have been finalized and can now be used in extensions published on the Marketplace:
* The function `vscode.debug.stopDebugging` for stopping a single specific or all debug sessions. With this new API, it is no longer necessary to use the less predictable **Debug: Stop** command (command ID: `workbench.action.debug.stop`) which only stops the "active" debug session.
* The `noDebug` property of `DebugSessionOptions` controls whether the session about to start should run with or without debugging.
* The `compact` property of `DebugSessionOptions` controls whether the parent of the newly created debug session will be hidden in the CALL STACK view as long as it only has a single child.
The API to resolve variables for custom execution tasks has been finalized. Variables in a custom execution task's definition are resolved and then passed into the task's callback.
Every milestone comes with new proposed APIs and extension authors can try them out. As always, we want your feedback. This is what you have to do to try out a proposed API:
* You must use Insiders because proposed APIs change frequently.
* You must have this line in the `package.json` file of your extension: `"enableProposedApi": true`.
* Copy the latest version of the [`vscode.proposed.d.ts`](https://github.com/microsoft/vscode/blob/master/src/vs/vscode.proposed.d.ts) file into your project's source location.
Note that you cannot publish an extension that uses a proposed API. There may be breaking changes in the next release and we never want to break existing extensions.
We've added command contribution support for the context menu in the Variables view. This makes it possible to implement frequently requested features like variable formatting (e.g. "View as Hex") or viewing variables in custom data views:
When a registered context menu command is executed, both the underlying variable and its container are passed as Debug Adapter Protocol (DAP) objects. Please note that VS Code's extension API uses opaque stand-in types instead of the real DAP types. In order to access their properties, they can be easily coerced into the corresponding DAP types.
Menu contributions for the Variables view are identified by a `"debug/variables/context"` key. General information about menu contributions can be found [here](https://code.visualstudio.com/api/references/contribution-points#contributes.menus).
To help with structuring menu commands into meaningful groups, we have added some predefined groups:
*`navigation`: Commands related to navigation across VS Code. This group always comes first and is currently empty by default.
*`1_view`: Commands related to displaying variables in different view formats. Currently empty by default.
*`3_modifications`: Commands related to modifications of variables. Currently home of the "Set Value" command.
*`5_cutcopypaste`: Commands related to cutting, copying and pasting of variables. Currently home of the "Copy Value" and "Copy as Expression" commands.
*`z_commands`: Other commands that do not belong to the above categories. This group comes last and currently contains the "Add to Watch" and "Break on Value changes" commands.
Typically, menu contributions in the Variables view should only apply to a specific debug type. This can be easily achieved by adding a "when" clause to the contribution. Here is one for Java:
Since some menu contributions should only be available for variables of a specific kind, we have introduced a new optional context key `debugProtocolVariableMenuContext`, which receives its value from a property `__vscodeVariableMenuContext` of the underlying DAP type `Variable` (please note that the `__vscodeVariableMenuContext` property is not part of the DAP specification, because it is specific to VS Code and its menu contribution support).
This makes it possible to show an array related menu command only on variables where a property `__vscodeVariableMenuContext` got a value `'array'` from the debug adapter:
The extension that drives our [online web playground](https://vscode-web-test-playground.azurewebsites.net/), as well as `yarn web` when running out of sources, has moved into its own [repository](https://github.com/microsoft/vscode-web-playground).
Our [online web playground](https://vscode-web-test-playground.azurewebsites.net/) is now capable of running not only the latest Insiders version of VS Code, but also the Stable version or any released version by commit.
We continue to explore enabling Electron's `sandbox` option in VS Code. During this milestone, we worked on being able to bring up a minimal VS Code instance that is fully sandboxed by shimming various internals that today still require Node.js access. This will be a multi-milestone journey and you can track progress in [issue #92164](https://github.com/microsoft/vscode/issues/92164).
We have started an effort to make VS Code "Trusted Types" compliant. The goal is to prevent DOM-based cross site scripting vulnerabilities. You can learn more about trusted types at the web.dev [Trusted Types site](https://web.dev/trusted-types) and follow our progress in [issue #103699](https://github.com/microsoft/vscode/issues/103699).
* [102199](https://github.com/microsoft/vscode/issues/102199): JavaScript debugging: run to cursor can skip to next statement if cursor is after semicolon
* [Aditya Thakral (@9at8)](https://github.com/9at8): Silently ignore the screen size is bogus error in the Process Explorer [PR #104277](https://github.com/microsoft/vscode/pull/104277)
* [Ciprian Florescu (@cipacda)](https://github.com/cipacda): Make mtk classes more specific to avoid CSS conflicts [PR #103485](https://github.com/microsoft/vscode/pull/103485)
* [Dhananjay Tanpure (@DTan13)](https://github.com/DTan13): Activity bar can be at left or right of workbench [PR #103359](https://github.com/microsoft/vscode/pull/103359)
* [John Murray (@gjsjohnmurray)](https://github.com/gjsjohnmurray): fix #104698 Make query element of uri survive conflict resolution massaging [PR #104699](https://github.com/microsoft/vscode/pull/104699)
* [Andrii Dieiev (@IllusionMH)](https://github.com/IllusionMH): Address feedback in #101467 [PR #105880](https://github.com/microsoft/vscode/pull/105880)
* [Ken Brownfield (@irridia)](https://github.com/irridia): Support \U\u\L\l replace modifiers in global search/replace (see PR #96128) [PR #105101](https://github.com/microsoft/vscode/pull/105101)
* [Jack Works (@Jack-Works)](https://github.com/Jack-Works): Improve typescript.code-snippets for async [PR #99544](https://github.com/microsoft/vscode/pull/99544)
* [Jean Pierre (@jeanp413)](https://github.com/jeanp413)
* Fixes TypeScript select version inserts full path to tsserver.js [PR #105664](https://github.com/microsoft/vscode/pull/105664)
* Fixes collapse folders action doesn't work when workspace root folder has just one file child item [PR #104744](https://github.com/microsoft/vscode/pull/104744)
* Fixes middle-click on a link doesn't open the link properly [PR #104885](https://github.com/microsoft/vscode/pull/104885)
* [Jonatan Ivanov (@jonatan-ivanov)](https://github.com/jonatan-ivanov): Support for .jenkinsfile extension and Jenkinsfile.* filename pattern [PR #105326](https://github.com/microsoft/vscode/pull/105326)
* [Leila Pearson (@leilapearson)](https://github.com/leilapearson): Compare full filenames [PR #104528](https://github.com/microsoft/vscode/pull/104528)
* [Marvin A. Ruder (@marvinruder)](https://github.com/marvinruder): Changed description of “Commit Signing” configuration label to include X.509. [PR #105228](https://github.com/microsoft/vscode/pull/105228)
* Add to WorkingCopyCapabilities enum to reflect usage. [PR #105020](https://github.com/microsoft/vscode/pull/105020)
* Ban unreachable code. [PR #104521](https://github.com/microsoft/vscode/pull/104521)
* [n-gist (@n-gist)](https://github.com/n-gist): Making TM_SELECTED_TEXT snippet variable working with overtyped text v2 [PR #105440](https://github.com/microsoft/vscode/pull/105440)
* [Noelle Caldwell (@noellelc)](https://github.com/noellelc): updated rich nav task version [PR #104213](https://github.com/microsoft/vscode/pull/104213)
* [@nrayburn-tech](https://github.com/nrayburn-tech): [themeing] Use Object.create(null) instead of {} for TokenRegistry [PR #103349](https://github.com/microsoft/vscode/pull/103349)
* [Sam Lee (@orionlee)](https://github.com/orionlee): Dimmed Monokai theme - improve markdown support [PR #104468](https://github.com/microsoft/vscode/pull/104468)
* [Pascal Fong Kye (@pfongkye)](https://github.com/pfongkye): Use default flex values and use margins [PR #104052](https://github.com/microsoft/vscode/pull/104052)
* [Pranav Senthilnathan (@PranavSenthilnathan)](https://github.com/PranavSenthilnathan): prune the refactor not applicable reasons if there are too many [PR #103203](https://github.com/microsoft/vscode/pull/103203)
* [Rob OLeary (@robole)](https://github.com/robole): Add snippets for markdown [PR #105174](https://github.com/microsoft/vscode/pull/105174)
* [Rotem Bar (@rotem-bar)](https://github.com/rotem-bar): fix(extpath): windows reserved names being allowed with file extension [PR #104980](https://github.com/microsoft/vscode/pull/104980)
* [Sam Poder (@sampoder)](https://github.com/sampoder): Fix spelling mistake in main.js [PR #104987](https://github.com/microsoft/vscode/pull/104987)
* [Tyler James Leonhardt (@TylerLeonhardt)](https://github.com/TylerLeonhardt): Add DebugAdapterNamedPipeServer [PR #103210](https://github.com/microsoft/vscode/pull/103210)
* [@ultraGentle](https://github.com/ultraGentle): Adds setting to disable cursor movement while typing into Find Widget [PR #94825](https://github.com/microsoft/vscode/pull/94825)
* [Duc Nghiem Xuan (@xuanduc987)](https://github.com/xuanduc987): Don't include this function types in completeFunctionCalls [PR #104479](https://github.com/microsoft/vscode/pull/104479)
* Fix multipleOf with float [PR #67](https://github.com/microsoft/vscode-json-languageservice/pull/67)
* Use propertyNames for completion proposals [PR #65](https://github.com/microsoft/vscode-json-languageservice/pull/65)
* Add support for defaultSnippets in patternProperties and additionalProperties [PR #62](https://github.com/microsoft/vscode-json-languageservice/pull/62)
* [Hongcai Deng (@denghongcai)](https://github.com/denghongcai): feat: support node remote debug through ws [PR #667](https://github.com/microsoft/vscode-mock-debug/pull/667)