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.
The new `screencastMode.keyboardOverlayTimeout` settings allows the user to customize the time in milliseconds for the keyboard indicator.
### Screencast mode mouse indicator color and size
The new `screencastMode.mouseIndicatorColor`, and `screencastMode.mouseIndicatorSize` settings allows the use to customize the mouse indicator color and size.
When contributing to another project, "Format on Save" and "Format Document" can get in your way because they format lines that you have not changed. This makes pull requests large and is often unwanted. There is new feature to help with that:
* We added a new command "Format Modified Lines" which allows to manually format new and changes lines
* There is a new setting `editor.formatOnSaveMode` which makes "Format on Save" only format modified lines
Note, that modifications are defined by your source control provider, e.g changes in 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.
Previously when you type in the Find Wiget input box, VS Code will automatically search and then move the cursor to the nearest find result. Now you can 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.
Debug console now supports filtering. This should make it easier for users to find the output they are looking for in the Debug Console and to be able to hide irrelevant logs. Filter also supports the exclude patterns which should be prefixed with `!`.
User evaluations are not respecting the filter and are always shown. Like other input boxes in VS Code you can use `up` and `down` arrow to navigate between old filter inputs.
* When debugging multiple sessions, we now only render the arrow in the glyph margin for the focussed 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 very large stack traces.
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 sit 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]`):
We've added two settings that let users customize the cell appearance:
-`notebook.cellToolbarLocation`: Whether the toolbar should be shown on the left, the right, or hidden
-`notebook.showCellStatusBar`: Whether or not the cell status bar should be visible
**Cell status bar item contributions**
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 just 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. Traditinal notebooks are stored in JSON format, which is easy to parse but not effective on 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 notebook document and cells concept to help users quickly identify what cell content or metadata are changed.
![Enhanced Notebook Text Diff](images/1_49/notebook-enhanced-text-diff.gif)
You can still switch to regular text diff editor temporarily from the editor action toolbar or disable this feature by turning off setting `notebook.diff.enablePreview`.
![Switch to regular text diff editor](images/1_49/notebook-switch-to-regular-text-diff.gif)
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:
* Converted pull requests and issues to a multi-repo model to better align with how the build-in git extension works.
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
at MyProgram.main(MyFile.java:10)
```
Using terminal link providers it is now possible to have a link for `java.lang.ArrayIndexOutOfBoundsException` that goes to API docs and create links for the symbols `MyProgram` or `main`.
The following example implementation creates a link for the first instance of the word `"test"` on each line:
VS Code uses the function `vscode.debug.startDebugging` for starting debug sessions. In this milestone, we introduced the matching function `vscode.debug.stopDebugging` to stop a specific session (or all 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.
* In this milestone we provide official extension API for "Run without Debugging": a new property `noDebug` has been added to the `DebugSessionOptions` of the `debug.startDebugging` function. `noDebug` controls whether the session about to start should run with or without debugging. When the `noDebug` property is missing, the value from the parent session (if there is one) is used. If there is no parent session, the value 'false' is assumed for a missing `noDebug` property.
* In order to make the CALL STACK view less crowded in common cases, we have introduced a feature to hide a parent debug session node if it only has a single child session. This feature is called "compact mode" and is available through a new optional `compact` property on the `DebugSessionOptions` of the `debug.startDebugging` function. If `compact` is true, 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.
If `compact` is false or missing, the parent node stays visible (which is the current behavior).
* Before a debug session starts `preLaunchTask` is now launched after the `resolveDebugConfiguration` call and before the `resolveDebugConfigurationWithSubstitutedVariables`.
The API to resolve variables for custom execution tasks has been finalized. Variables in a custom execution task's defintion are resolved and then passed into the task's callback.
```typescript
export class CustomExecution {
/**
* Constructs a CustomExecution task object. The callback will be executed the task is run, at which point the
* extension should return the Pseudoterminal it will "run in". The task should wait to do further execution until
* [Pseudoterminal.open](#Pseudoterminal.open) is called. Task cancellation should be handled using
* [Pseudoterminal.close](#Pseudoterminal.close). When the task is complete fire
It is now possible for extensions to contribute commands to the context menu in the Variables view. More about menu contributions in general can be found [here](https://code.visualstudio.com/api/references/contribution-points#contributes.menus).
The Variables context menus has the following default groups which the extensions can contribute to:
*`navigation`: Commands related to navigation across VS Code. It is empty by default. This group always comes first.
*`1_view`: Commands related to displaying variables in different view formats. Empty by default.
*`3_modifications`: Commands related to modifications of variables. "Set Value" command
*`5_cutcopypaste`: Commands related to cutting, copying and pasting of variables. "Copy Value" and "Copy as Expression" commands
*`z_commands`: Other commands that do not belong to the above categories. "Add to Watch" and "Break on Value changes" commands. This group comes last.
As the context for these commands we pass the following object:
```
{
container: DebugProtocolVariableContainer;
variable: DebugProtocolVariable;
}
```
`DebugProtocolVariableContainer` is an opaque stand-in type for the intersection of the `Scope` and `Variable` types defined in the Debug Adapter Protocol. A `DebugProtocolVariable` is an opaque stand-in type for the Variable type defined in the Debug Adapter Protocol.
In order to give greater context key flexibility to extensions we have introduced the following context key: `debugProtocolVariableMenuContext` which has the value of a `__vscodeVariableMenuContext` attribute from the Variable that the context menu is executed on. This context key should enable extensions to for example show array related commands only on variables that are arrays by passing the `__vscodeVariableMenuContext` attribute with a specific value for those variables.
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 moved into it's own [repository](https://github.com/microsoft/vscode-web-playground).
### Web Playground support for different versions
Our [online web playground](https://vscode-web-test-playground.azurewebsites.net/) is now capable of running not only the latest insiders version of VSCode, but also the stable version or any released version by commit. New query parameters allow to drive this:
*`quality=<stable|insider>`
*`commit=<commit-sha>`
**Note:** if you specify a `commit` you must also specify it's associated `quality`.
### Minimal sandboxed workbench
We continue to explore enabling Electron's `sandbox` option in VSCode. During this milestone, we worked on allowing to bring up a minimal VSCode instance that is fully sandboxed by shimming a lot of the internals that today still require node.js access. This will be a multi-milestone journey and progress can be tracked at 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. Learn more about trusted types here: https://web.dev/trusted-types/, follow our process here: 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 cusor 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)