Visual Studio 19

Update 1.55.1: The update addresses these issues.

Update 1.55.2: The update addresses these security issues.

Downloads: Windows: UserSystemARM Mac: Universal64 bitArm64 Linux: snapdebrpmtarballARM

Apr 19, 2021 Amanda Silver April 19, 2021 Apr 19, 2021 04/19/21 All of our product development begins and ends with you—whether you posted on Developer Community, filled out a survey, sent us feedback, or took part in a customer study, thank you for helping to continue to steer the product roadmap for Visual Studio. Visual Studio 2008, and Visual Studio Team System 2008 codenamed Orcas (a reference to Orcas Island, also an island in Puget Sound region, like Whidbey for the previous 2005 release), were released to MSDN subscribers on November 19, 2007 alongside.NET Framework 3.5. Visual Studio 2008 Express was released in November 2007, with its Service Pack 1 released on August 11, 2008. Visual Studio 2008 and 2010 Express require Windows XP SP3 or later. Although Windows 2000 is no longer supported, Visual Studio 2008 Express can develop applications to run on Windows 2000.

November 2017 (version 1.19) Update 1.19.3: The update addresses issue 42144 where the Workbench failed to load when having the Running Extensions view opened and profiling. Update 1.19.2: The update addresses these issues.This update also includes a fix for an Electron security vulnerability.To learn more details about the applied mitigation, see this blog post. Visual Studio 2008, and Visual Studio Team System 2008 codenamed Orcas (a reference to Orcas Island, also an island in Puget Sound region, like Whidbey for the previous 2005 release), were released to MSDN subscribers on November 19, 2007 alongside.NET Framework 3.5.

Welcome to the March 2021 release of Visual Studio Code. There are a number of updates in this version that we hope you will like, some of the key highlights include:

  • Accessibility improvements - Multi-cursor support and increased line limit.
  • Updated icons for macOS Big Sur - Brand icons that match the visual style of Big Sur.
  • Improvements to breakpoints - Inline breakpoints menu, and more.
  • Editor status decorations - Editor tab status decorations are on by default.
  • Customize keyboard shortcuts editor - Resize columns in the keyboard shortcuts editor.
  • Improved remote ports management - Port forwarding autodetection, regex naming, and more.
  • Terminal profiles - Define profiles in terminal to conveniently launch non-default shells.
  • Notebook improvements - Multiple cell selection, and more customizable diff editor.
  • VS Code on Raspberry Pi - New topic explaining how to install VS Code on Raspberry Pi devices.

If you'd like to read these release notes online, go to Updates on

Join us live at the VS Code team's livestream on Thursday, April 8 at 8am Pacific (4pm London) to see a demo of what's new in this release, and ask us questions live.

Insiders: Want to try new features as soon as possible? You can download the nightly Insiders build and try the latest updates as soon as they are available.



Multi-cursor support

We have added initial screen reader support for multiple cursors. Whenever a new cursor is added, VS Code now announces it along with the cursor line and column position. VS Code also announces when secondary cursors have been removed. We plan to further improve multi-cursor accessibility as we receive more feedback.

Increased limit to 1000 lines for screen reader

Thanks to upstream issues being fixed, we have increased the number of lines that a 'Say All' command can read. Previously, we had a hard limit of 100 lines that could be announced by a screen reader at one time, and we have now increased this limit to 1000. Further upstream fixes are needed in order for us to not have any limit at all.

Due to this change, the setting editor.accessibilityPageSize is now deprecated. We will still support this setting in the next couple of releases, however we plan to fully drop it in the future.


Encryption update on Windows

We've changed the way we encrypt secrets on Windows, which impacts Settings Sync and extensions using the secrets API. Users on Windows will be automatically signed out on update and will need to authenticate again.

Updated brand icons for macOS Big Sur

We've been working on updating the VS Code brand icons on macOS to match the new visual style of Big Sur. We've appreciated all of the feedback from the community, and we are happy to release the new logos for Stable and Insiders. We are also using the same logos on all platforms.


Improved sash customization

A new workbench.sash.hoverDelay setting lets you define the delay for the hover feedback of sashes. The existing workbench.sash.size setting has been improved in order to still provide a large surface grabbing area for touch devices, while keeping the UI clean.

Improved List/Tree navigation

Lists and Trees now support a custom keyboard navigation mode that behaves more naturally in specific areas such as Notebooks.

Additionally, Shift+Click range selections behave more deterministically.

Tab decorations on by default

Tab decorations for editors are now on by default, to configure them use workbench.editor.decorations.colors and workbench.editor.decorations.badges

Theme: GitHub Light Theme

Resizing columns in Keyboard Shortcuts editor

The Keyboard Shortcuts editor is now refactored to use the new table widget, allowing users to resize the columns in the editor.

Extension management improvements

  • VS Code now detects extensions installed/uninstalled through the VS Code CLI. Extensions can be activated/de-activated in the active window (instance) and will be correctly displayed in the Extensions view.

  • VS Code now shows the set of extensions included in an extension that sets the extensionPack property in a separate Extension Pack tab even when the extension is not categorized as Extension Packs.

Theme: GitHub Light Theme

Negative text filtering in Problems view

You can now filter problems that do not contain specific text from the Problems view by prepending ! to the filter text.

Reporting Marketplace issues

Last month we highlighted that there's a new public repository for issues related to the Extension Marketplace. Now, VS Code's issue reporter supports creating issues in this repository.

Configure tree hover delay

The hover delay for extension contributed tree views can now be configured with workbench.hover.delay.


The emmet.extensionsPath setting now takes in only string arrays, and can be directly edited in the Settings editor.

Search in Open Editors

You can now toggle the Search Only in Open Editors checkbox in a workspace search to change from searching the entire workspace to only searching in files that have been opened in editor tabs. This previously was enabled via an opt-in, this iteration we've enhanced the behavior with files that have not yet been loaded in the VS Code session and enabled it by default.

Control the font size of the Source Control input

You can now change the font size of the Source Control input via the new scm.inputFontSize setting.

Integrated Terminal

Terminal profiles

The terminal now supports defined profiles, which appear in the terminal's dropdown, to conveniently launch non-default shells:

VS Code will automatically detect and surface some of the more commonly used shells through this menu, but they can also be configured using the terminal.integrated.profiles.<platform> setting. With this setting, it's possible to add new profiles, change existing profiles and remove default profiles. For example:

The recommended way to initially add a profile is via the Select Default Profile command, which allows creating profiles based on either an existing profile or other detected shells.

Auto detected WSL profiles and improved defaults on Windows

Along with the new profiles feature, we now auto detect WSL profiles and show them in the list by default. This can be turned off with the terminal.integrated.useWslProfiles setting.

Cygwin is also now auto detected and exposed in the Select Default Profile command and Git Bash will run as a login shell (running ~/.bash_profile).

WebGL renderer is the new default

The terminal first got the experimental WebGL renderer back in the November 2019 release, which based our calculations at the time could increase performance by up to 900% and by even more if your environment had issues with rendering using a standard 2D canvas context.

Since then, the WebGL renderer has gradually improved in stability and had its feature gap closed. We decided now is as good a time as any to make the transition, but will be watching for any issue reports.

As part of this work we also added some fallback logic. When 'terminal.integrated.rendererType': 'auto', the following happens:

  1. The WebGL renderer will try to start up.
  2. If it fails, for example due to lack of OS/browser support:
    • The canvas renderer will be enabled and the time it takes to render a frame will start to be measured.
  3. If the first 20 frames are rendering slowly, for example if there are hardware issues or GPU rendering is disabled:
    • The DOM renderer will be enabled.

In the next release, we plan on removing the rendererType setting all together in favor of a much more understandable 'terminal.integrated.gpuAcceleration': 'auto' 'on' 'off'.

Seamless terminal relaunching

Last release, we introduced automatic relaunching of terminals when an extension wants to change the environment. This release will now prevent the flickering that was caused before when the relaunch occurs. If the output of the new terminal is identical to the last, there is no feedback or distractions caused by the relaunch.

There is also a new setting to disable this automatic relaunching all together terminal.integrated.environmentChangesRelaunch.


New auto closing pair deletion

The behavior of pressing Backspace has changed when inside auto-closing pairs. The editor will now delete the matching closing bracket or matching closing quote only if the editor auto-inserted that character. This behavior is controlled via a newly introduced setting called editor.autoClosingDelete, which can be configured to 'always' to get the previous behavior.


Improvements to breakpoints

Inline menu to edit conditions and hit count

We now show an inline menu for editing conditions and hit counts for function breakpoints. Previously the inline edit button would choose automatically what condition to edit. Now, the menu should make the flow easier and give more control to the user.

Support for all access types of data breakpoints

Now VS Code's generic debugger UI supports all data breakpoint access types defined in the Debug Adapter Protocol as context menu actions in the VARIABLES view:

  • Break on Value Read: breakpoint will be hit every time a variable gets read.
  • Break on Value Change: breakpoint will be hit every time a variable gets changed (this action was previously available).
  • Break on Value Access: breakpoint will be hit every time a variable is read or changed.

Please note that debug extensions have to opt into this feature in order to make individual actions available. For now, only the Mock Debug extension has (simulated) support for all three access types, but we expect other debug extensions to follow soon - such as the Java extension.

Clearing a terminal before launching a debuggee

Some debug extensions allow you to launch debuggees in VS Code's Integrated Terminal. In order to keep the number of Integrated Terminals small, VS Code tries to reuse a terminal if it is not blocked by a still running command. A consequence of this approach is that previous commands and program output will remain visible in the terminal, which is sometimes confusing.

In this release, we've introduced a new feature to automatically clear the Integrated Terminal before starting a new debug session. The feature is controlled by the new setting debug.terminal.clearBeforeReusing.

JavaScript debugging

As usual, the complete list of changes can be found in the vscode-js-debug changelog.

Start Debugging and Stop on Entry

When we moved to our new debugger, last year, the Debug: Start Debugging and Stop on Entry was left behind. It once again works, and requests the debugger to pause on the first line of your Node.js program. By default it is bound to F10.

Improved handling of symbolic links

Debugging Node.js programs with symbolic links can require special flags to be passed to the program. Without these flags, breakpoints remained unbound, and it was hard to figure out what was going wrong. Now, the debugger will automatically detect these cases and provide a helpful notification.


Multiple cell selection

We now support selecting multiple cells in a Notebook using the mouse (Shift+Click) or keyboard shortcuts (Shift+Arrow). Once multiple cells are selected, you can then copy/cut/paste/move/duplicate selected cells.

You can also drag and drop multiple cells together.

Limitations: When there are multiple distinct ranges of cells selected, most commands will only be executed against the first range or the focused range. We will continue improving this experience in upcoming releases.

We also added a new color token, notebook.inactiveSelectedCellBorder, that has no default color but is available for themes that prefer to use borders for multi-select instead of background colors:

Show/hide output and metadata differences in the diff editor

We have heard from users that when reviewing changes in a Notebook, the modifications in notebook cell metadata or outputs can be distracting or irrelevant. VS Code now allows you to control the visibility of metadata or output changes in the diff editor using the settings notebook.diff.ignoreMetadata and notebook.diff.ignoreOutputs. They can also be toggled by using the Show Outputs/Metadata Differences command from the editor title toolbar.

Preview features

Continued improvements to extensible Markdown renderers in Notebooks

We continued improving our support extending the Markdown renderer in Notebooks. Our focus this iteration was improving performance of the new renderers. We also fixed many regressions that the new renders introduced.

The new renderers are still disabled by default but we are now more confident that we will be able to enable them soon. You can try out the new extensible Markdown renderers today with the undocumented notebook.experimental.useMarkdownRenderer: true setting. After enabling this setting and restarting VS Code, you should be able to use :emoji: and KaTeX $math$ formulas in Markdown cells.

Getting Started

We are continuing an overhaul of our default startup editor in order to provide relevant extension-contributed tips and walkthroughs, intended to make both core VS Code features and extension contributions more approachable to new users. Many Insiders users may have already seen it, and it will be slowly rolled out to more Stable users over the course of this iteration. You can always opt in or out of the new behavior by modifying the workbench.startupEditor setting to or away from gettingStarted.

Theme: GitHub Light

Contributions to extensions

Remote Development

Work continues on the Remote Development extensions, which allow you to use a container, remote machine, or the Windows Subsystem for Linux (WSL) as a full-featured development environment.

Feature highlights in 1.55 include:

  • Double-click to name ports
  • Configure default port detection behavior
  • Updated experience for cloning a repository in a container volume

You can learn about new extension features and bug fixes in the Remote Development release notes.

GitHub Pull Requests and Issues

Work continues on the GitHub Pull Requests and Issues extension, which allows you to work on, create, and manage pull requests and issues.

To learn about all the new features and updates, you can see the full changelog for the 0.25.0 release of the extension.

Extension authoring

Untitled file API for custom editors & Notebooks

Custom editors and Notebooks now include an untitledDocumentData property on the open context, which includes the buffer of the data included in the untitled file that the user triggered a Reopen With on. This property should be read instead of the URI if populated as the URI doesn't point to a file on disk in the untitled file case.

Inline values provider API

The proposed inline values provider API introduced last milestone has been finalized and can now be used in extensions published on the Marketplace.

New Copy As submenus

There are two new menu locations, which appear in the UI as a Copy As submenu:

  • menuBar/edit/copy - for the title bar Edit menu
  • editor/context/copy - for the editor context menu

New extension property on ExtensionContext

Extension authors can now use the new extension property on ExtensionContext, which is passed into the extension's activate function. This returns the same Extension instance that vscode.extensions.getExtension(<extension-id>) returns, which contains properties such as the extension's ID, version, and a serialized packageJSON property where you can access data directly from your extension's package.json file.

Docker compose language

A new Docker compose language has been added. This won't have much user facing change; however, extension authors can now use this to target Docker compose files. The language ID is dockercompose.

Telemetry enablement API

Extensions could always check whether or not the user had disabled telemetry via the configuration value of telemetry.enableTelemetry, but it was not possible to check if the user had used the CLI flag --disable-telemetry. This milestone, we've added two more properties to the env object of extension API: isTelemetryEnabled and onDidChangeTelemetryEnabled. The former takes into account the CLI flag and the current configuration value. The latter is event that fires any time isTelemetryEnabled changes.

Workspace Trust development

For several iterations, we have been exploring a security feature we refer to as Workspace Trust. As we near its release, we seek to engage extension authors to start their onboarding process and get feedback. At the present, extensions that are not updated to handle Workspace Trust will inherit safe defaults; however, for an optimal user-experience, we request extension authors read more information in issue #106488 and subscribe for updates as we progress through the next iteration.

Proposed extension APIs

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 file into your project's source location.

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.


This month our work was focused around resolving the provider portion of the testing APIs. Primarily, moving to an approach that allows for tests to be loaded on-demand and asynchronously. Shifting to an asynchronous approach presented challenges that required semantics new to the extension host API to solve. This iteration we merged in the changes, and will refine them over the coming month. We hope to begin finalizing portions of the testing API in our April iteration.


The proposed triggerKind property on CodeActionContext tracks why code actions are being requested from a CodeActionProvider. The possible values of this property are:

  • Invoke: Code actions were requested explicitly, either with a keyboard shortcut or command.

  • Automatic: Code actions were requested without explicit user action. This includes requesting code actions when the contents of a document change.

Providers can use triggerKind to return different sets of results depending on how code actions are requested. For example, a refactoring code action provider that is triggered automatically may only return refactorings for the exact current selection in order to limit how often the code action lightbulb shows up. However when code actions are explicitly requested, the same provider may automatically expand the current selection to try to show all the refactorings that a user may be interested in at the current location.


Any extension that starts processes that listen on ports and wants to have a stellar experience when used with a VS Code remote extension should consider providing feedback and adopting the new PortsAttributesProvider API. Since VS Code detects and automatically forwards ports when using one of the remote extensions, any extension that listens on ports will have those ports automatically forwarded. Often though, these ports are only important for the internal workings of the extension, and it isn't useful for the user to have these ports forwarded. This API can be used to set the behavior when a port is detected to prevent unwanted autoforwarding of ports that shouldn't be user facing.

Quick input options title

The QuickPickOptions passed in to showQuickPick and InputBoxOptions passed into showInputBox now have an optional title property that was previously only available in the createQuickPick API. This property, when set, displays a title bar on the quick input with the title you specified.

Language Server Protocol

A draft version of the diagnostic pull model specification is now available for feedback.

Debug Adapter Protocol

The stopped event can now report the breakpoints that were hit

An optional attribute hitBreakpointIds has been added to the stopped event that contains the IDs of the breakpoints that triggered the event.

Note that VS Code does not yet surface this information in any way. We are discussing possible UI ideas in issue #118743.


Faster Snap launch

The snap package now uses the lzo compression algorithm, which provides faster launch times. For more information, see the blog post from Ubuntu about the algorithm.

Progress on Electron sandbox

This milestone we continued to make the VS Code window ready for enabling Electron's sandbox and context isolation features.


  • We were able to move some of the native module requirements we have in the renderer to other processes.
  • We were able to make more components and services available when sandbox option is enabled.


VS Code and JavaScript in the classroom

Read the case study of a Computer Science lecturer at Naresuan University in Thailand, who uses VS Code in his introductory Web Development classes with JavaScript and Node.js. Learn about the settings and extensions he recommends for his students, as well as a helpful Node.js and JavaScript Education Extension Pack.

Raspberry Pi

There is a new topic describing how to install VS Code on Raspberry Pi devices.

Notable fixes

  • 74505: Emmet built-in plugin cheats starting with @ expand only inside blocks
  • 97632: Emmet kicks in when editing pure xml documents
  • 107506: Debug Variables View does not show multiple variables from Debug Adapter when names are not unique
  • 112675: Emmet abbreviations are not working in .scss files
  • 113801: Tab wrap - tab should not fill all spare space when wrap to new line
  • 115814: Unable to type in Chinese in integrated terminal
  • 117350: Should Home/End, PageUp/PageDown also navigate in actions?
  • 117967: Copy + Paste automatically open file in new tab
  • 118210: debug console shouldn't collapse messages when they have different source locations
  • 118557: Strange behavior of files.exclude in workspace with nested folders
  • 118839: My screen reader does not find information about a remote connection in the status bar
  • 119585: All problems disappear when closing file

Thank you

Last but certainly not least, a big Thank You to the following people who contributed this month to VS Code:

Contributions to our issue tracking:

Contributions to vscode:

  • @abhiajju (ABHIJEET PANDEY): Fixing emmet issue where incorrect abbreviation is displayed in an html file PR #117759
  • @abhijeet75 (Abhijeet Joshi): Fix Emmet abbreviation for Handlebars style blocks PR #118832
  • @alienvspredator (Danylo Shevchenko): Fix 'new Promise' TypeScript snippet PR #118596
  • @anonymouse64 (Ian Johnson): snap-build-linux.yml: use 'snap pack' to get LZO PR #119478
  • @atscott (Andrew Scott): fix microsoft/vscode#117095 de-duplicate reference results PR #117424
  • @conwnet (netcon): fix the readonly attribute of textarea break the vscode.workspace.onDidChangeTextDocument API #117755 PR #117758
  • @Daniel-Knights (Daniel Knights): fix: typo PR #119012
  • @davidanthoff (David Anthoff): Add Julia indentation rules PR #118269
  • @DonJayamanne (Don Jayamanne): Repro for bug PR #118471
  • @Flanker32 (Hanxiao Liu): Add comments to add java workspace tags to GDPR inventory PR #117740
  • @GitMensch (Simon Sobisch): rpm-spec: fix the wrong claim about working on EL7 PR #117994
  • @gjsjohnmurray (John Murray)
    • fix #62531 add negative text filtering to Problems PR #115351
    • #101995 extend tooltip of menu item that defines 'alt' command PR #116211
    • fix #117093 update Filter on Type indicator after 'list.toggleFilterOnType' command PR #117099
    • fix #117718 fire onDidChangeResources event after unregistering group PR #117719
    • fix #118615 'scm/resourceXXX/context' extension point descriptions PR #118616
    • fix #119261 filter also by description in Insert Snippet PR #119315
  • @hantatsang (Sang): Fix extension's readme not rendering images width and height PR #117961
  • @jeanp413 (Jean Pierre)
    • Fixes Extension Feature Contributions doesn't render markdownDescription PR #95882
    • Fixes long ouput with wrapped lines in narrow terminal crashes vscode PR #117734
    • Fixes output filter field icon cannot be tabbed to, only shift-tabbed PR #117832
    • Fix focus outline oddly rendered for some action icons when panel is on the side PR #117834
    • Fixes markdown preview gets empty PR #118397
    • Fix strange behavior of files.exclude in workspace with nested folders PR #118777
  • @ko1 (Koichi Sasada): Update vscode.d.ts PR #117974
  • @matthew-haines (Matthew Haines): #97684 Add alt-click & actions to fold/unfold surronding regions PR #100027
  • @mtaran-google: Fix typo in IWorkbenchExtensioManagementService PR #118071
  • @noahbliss (Noah Bliss): Replace 'Favours' with 'Favors' PR #119250
  • @NotWearingPants
    • Fix cursor position when at the start of RTL syntax tokens PR #117062
    • Fix a random typo in recent commit PR #119607
  • @pauladams8 (Paul Adams): Improve GitHub repository search PR #117075
  • @RPwnage (Luca): Adding 'Delete Branch..' to the Source Control > Branch section PR #118542
  • @shskwmt (Shunsuke Iwamoto): Fixes #116822: Remove escaping whitespace characters PR #117138
  • @smorimoto (Sora Morimoto): Add more OCaml related file extensions to the OCaml group PR #118310
  • @soredake: snap: set compression to lzo, #117852 PR #118116
  • @spetrescu (Stefan Petrescu): Fix tooltip for codelens-sample extension PR #118468
  • @thebinarysearchtree (Andrew Jones): Fix transformToSnakecase PR #118400
  • @TranquilMarmot (Nate Moore): Update seti-ui icon theme PR #117842
  • @wdesgardin (William Desgardin): fix(search): preserve case when match start with lowercase char PR #119373
  • @XECDesign: Do no install repo on Raspberry Pi OS PR #118826
  • @yannickowow: Support for DataBreakpointAccessType condition PR #117835

Contributions to vscode-emmet-helper:

  • @jeanp413 (Jean Pierre): Fix emmet completions in scss PR #61
  • @lancewl (Hsuan-An Weng Lin): Fix vscode#118008 PR #59
  • @OBITORASU (Souhit Dey): Fixes Issue 117154 - VScode Emmet missing HTML 'hgroup' tag PR #55

Contributions to vscode-eslint:

  • @9at8 (Aditya Thakral): Add additionalProperties: false to some settings PR #1004
  • @sfj (Silas Fontain): Align text wording with actual button text PR #1207
  • @threehams (David Edmondson): Add reload command. PR #845

Contributions to vscode-hexeditor:

  • @fython: Support different scheme file uris PR #213
  • @natecraddock (Nathan Craddock): Add default endianness setting PR #215

Contributions to vscode-html-languageservice:

  • @aliasliao (Liao Jinyuan): support script type='text/html' PR #102
  • @miladbarazandeh (Milad Barazandeh): target field autocomplete added PR #103

Contributions to vscode-js-debug:

  • @lumaxis (Lukas Spieß): Use correct spelling of npm PR #928

Contributions to vscode-languageserver-node:

  • @irengrig: Remove unreachable break statement PR #750

Contributions to vscode-mock-debug:

  • @Udith (Udith Gunaratna): Added 'compile' as a pre launch task for 'Server' run config PR #50
  • @yannickowow (Yanis HAMITI): Modify and mockDebug to test DataBreakpoint access types PR #50

Contributions to vscode-textmate:

  • @msftrncs (Carl Morris): Make scope capture substitution regex global PR #148

Contributions to vscode-vsce:

  • @felipecrs (Felipe Santos): Use HEAD as default branch rather than master PR #540
  • @jamesgeorge007 (James George): chore: improve error message PR #546

Contributions to debug-adapter-protocol:

  • @EvilBeaver (Andrei Ovsiankin): Added OneScript (BSL) debugger implementation PR #183

Contributions to language-server-protocol:

  • @reznikmm (Maxim Reznik): Fix typo in LSP 3.16 PR #1218

Update 1.19.3: The update addresses issue 42144 where the Workbench failed to load when having the Running Extensions view opened and profiling.

Update 1.19.2: The update addresses these issues. This update also includes a fix for an Electron security vulnerability. To learn more details about the applied mitigation, see this blog post.

Update 1.19.1: The update addresses these issues.


Note: As a result of fixing issue 40351, we now require you to pass '-' as an argument to explicitly signal that the output of a piped command is coming in through stdin. For example: echo Hello World code - (Windows) and ps aux grep code code - (macOS, Linux). This is a breaking change from 1.19.0, please update any scripts that make use of this functionality.

Downloads: Windows Mac Linux 64-bit: .tar.gz.deb.rpm Linux 32-bit: .tar.gz.deb.rpm

Welcome to the November 2017 release of Visual Studio Code. As announced in the November iteration plan, the focus this month was on GitHub issue clean-up, product performance, and data collection tools for better issue reporting.

During this iteration, we closed 4400 issues (either triaged or fixed) across all our VS Code repositories. As we busily closed issues, you did not stop filing new ones and you created around 2700 new issues. This resulted in a net reduction of around 1700 issues of which 1400 were in the main vscode repository.

Bug fixes as well as community PRs still resulted in a great list of updates. Here are some of the release highlights:

  • Performance - Faster startup and other performance improvements.
  • Serviceability/Diagnostics - New VS Code diagnostics, logging, and extension monitoring.
  • Smarter IntelliSense - IntelliSense remembers your previous suggestion choices.
  • Better Tab layout - Tabbed headers can scale to fit the available space.
  • Git side-by-side image diff - Git source control provider can display image changes side by side.
  • Pipe output into VS Code - Easily view terminal output in a VS Code editor.
  • New debugging recipes - Learn how to debug Next.js, Meteor projects and applications using the nodemon utility.

If you'd like to read these release notes online, go to Updates on
You can also check out this 1.19 release highlights video from Cloud Developer Advocate Brian Clark.

The release notes are arranged in the following sections related to VS Code focus areas. Here are some further updates:

  • Workbench - Compare your active file to the Clipboard contents.
  • Editor - Folding improvements, interval line numbers, support macOS global Clipboard.
  • Languages - TypeScript 2.6.2, JSX fragment syntax, new JSON with comments mode.
  • Debugging - Undefine env variables per session, better VARIABLES rendering.
  • Extensions - Choose which extensions are active in your workspaces.
  • Extension Authoring - Pre-release extension support, yo code can enable TSLint and checkJS.

Insiders: Want to see new features as soon as possible? You can download the nightly Insiders build and try the latest updates as soon as they are available.


Performance is key to an editor and during November we fixed almost 50 performance-related issues. We spent significant time in the profiler and revisited the initialization phase of VS Code. Improving performance is not just about optimizing algorithms but also about improving perceived performance for the user. We began thinking about the startup life-cycle phases (#38080) to better order the creation of our components for faster perceived startup (for instance, always try to show a blinking cursor in the editor). To learn more about our performance work, you can review our issues labeled with perf-startup, perf-bloat (source code reduction), or perf.

Finally here are some noteworthy optimizations we'd like to mention:

Plex brings together all the media that matters to you. Your personal collection will look beautiful alongside stellar streaming content. Enjoy Live TV & DVR, a growing catalog of great web shows, news. Plex video card list.

  • Improve startup and overall performance with an improved configuration-model #37426, #37539.
  • Improve startup by caching extension information from package.json files #28331.
  • Improve startup by delaying the creation of helper processes, like file watcher #38230, search app #38235, and extensions process #38323.
  • Improve file loading for better startup performance #37541.
  • Use the faster list widget instead of the tree when possible #38638. Rework the BREAKPOINTS view and the OPEN EDITORS Explorer section.
  • Optimize the handling of touch events for improved performance #37917.
  • Improve the overall workbench performance by skipping unnecessary layouts and computations 39699, #39185, #38966, #38963, #38962, #38960.
  • Improve startup by removing unused code #38414.

And we are not done. Performance is a constant theme of the whole development team. Track our work with the perf-labels and don't be shy in filing performance related issues.


This release we also focused on VS Code serviceability in order to make it easier for you to provide us with the information we need to track down issues. We worked on logging, diagnostics, and extension monitoring to help you help us to make VS Code even better. Some of these features are still under development but we wanted to get these tools in your hands early.


VS Code now creates activity log files which can help diagnose unexpected issues like crashes, delays, etc. When running, VS Code creates four primary processes, main, shared, renderer and extension-host, and each process logs into its own log file. You can open each log file using the command Developer: Show Logs.. which will open a process picker to select the specific process log file.

VS Code supports following log levels:

  • critical
  • error
  • warn
  • info
  • debug
  • trace
  • off

By default, VS Code is configured with info level and logs info and the levels above (warn, error, critical). You can change the log level using the command-line argument --log.

You can also turn off logging using the option --log off.

--status command-line option

A new command-line argument was added which prints some useful VS Code diagnostics information to the terminal. You can share this information with us in GitHub issues and we will have a better understanding of the state of VS Code at the time of the issue.

Run code --status from the command line while another instance of VS Code is running and, after collecting status, you will see a display like this:

The output includes information about the environment, all running processes, and the counts of some common file types in the workspace.

VS Code process view

As a by-product of the new VS Code command-line option --status, we created an experimental extension vscode-processes that shows all child processes of VS Code in a custom view and dynamically updates as processes come and go. To better understand the role of those processes, the extension analyses the process arguments and labels the processes accordingly. The extension's CPU load and memory consumption is also shown in parentheses.

In addition, the extension tries to identify processes that can be debugged by VS Code itself and offers a debug action for those in the context menu. All processes can be terminated or killed from the menu as well.

This extension is still a prototype and so it is not yet available on the Marketplace but you can easily build the extension VSIX by running the following commands:

Once the extension VSIX is created, use VS Code's Install from VSIX.. command to install the extension.

Running extensions

To make it easier for users to detect faulty or poorly performing extensions, we added a Running Extensions view. This view shows all the extensions which are currently running along with useful performance information. With this view, users can also profile VS Code in order to detect which extensions take the most time and are a likely cause of performance issues. Run the Developers: Show Running Extensions command from the Command Palette to see this view.

Note: The Running Extensions view is still under development so expect to see updates in future releases. We'd also appreciate your feedback.

How to file performance and native crash issues

We have created guides for:

  • Performance Issues - tracking down and filing performance issues

  • Native Crash Issues - data collection techniques for native crashes


New editor tabs layout option

A new setting, workbench.editor.tabSizing, was added to control how tabs should size depending on the space available in the outer container. The default (fit) works as before and will always ensure that the tab shows the entire name of the file. If space gets too little, a scroll bar will appear.

You can change this behavior by setting this new option to shrink. When there is little space available, the tabbed headers will shrink up to a minimum and thus make it less likely that a scroll bar appears.

Pipe output directly into VS Code

We added support to pipe the output of a terminal command directly into VS Code and have it open in an editor:

The encoding of the terminal will be determined by running the command locale charmap on Linux/macOS and chcp on Windows. You can also set a VSCODE_CLI_ENCODING environment variable to specify the encoding manually.

Note: We will now open a temporary file for reading from stdin as soon as we detect that stdin is not connected to a terminal. If you are in a setup where you start VS Code via the shell script ( or code.cmd) from an application that is not a terminal, please change that to start our executable directly instead.

Compare open file to Clipboard

Thanks to PR #37841 from Max Furman (@maxfurman), you can now compare the contents of the currently opened file with the contents of the Clipboard. The command is Compare Active File with Clipboard (command id workbench.files.action.compareWithClipboard).

workbench.panel.location is deprecated

We have removed the workbench.panel.location from settings and are now saving this in storage. All the previous functionality for moving the panel to the side is retained. More details about this change can be found here.


Smarter IntelliSense

VS Code IntelliSense re-sorts suggestions as you type. This ensures that the most relevant suggestions are near the top. However, there are cases in which multiple suggestions match equally well, for example con matches on confirm, console, const, and constructor equally well and lexicographic sort decides which suggestion is pre-selected.

In this release, we've updated IntelliSense to remember what you have selected in such cases. Select const for the con prefix once and it will be the top match in the future.

Sometimes when you are typing, you may accidentally mix up neighboring characters, for instance instead of console, you might type cnosole, or resutl instead of result. We have made IntelliSense more relaxed and it will now try a few permutation when scoring suggestions.

In the sample above, IntelliSense favors the console suggestion by changing cnos to cons as that match is stronger than the match of cnos on RTCIceTransportStateChangedEvent.

Folding improvements

We have changed Shift + Click on the folding icons to not only fold/unfold the corresponding section but also all its children.

New folding regions have been added for the following languages:

  • CSS/Less/SCSS: /*#region*/ and /*#endregion*/
  • Coffeescript: #region and #endregion
  • PHP: #region and #endregion
  • Bat: ::#region and ::#endregion

Note: If you don't remember a folding marker, type # at the beginning of a line and you will get IntelliSense suggestions. Each language proposes completion proposals or snippets.

New folding commands have been added:

  • Fold All Regions (⌘K ⌘8 (Windows, Linux Ctrl+K Ctrl+8)) folds all regions from markers (for example #region).
  • Unfold All Regions (⌘K ⌘9 (Windows, Linux Ctrl+K Ctrl+9)) unfolds all regions from markers.
  • Fold All Block Comments (⌘K ⌘/ (Windows, Linux Ctrl+K Ctrl+/)) folds all regions that start with a block comment token (for example /*).

Interval line numbers

Thanks to PR #37120 from David Weber, the setting editor.lineNumbers can now be configured with the value interval, which will cause VS Code to render the line numbers every 10th line.

Global find Clipboard on macOS

Thanks to PR #35956 from Melvin, the editor now integrates with the macOS global find Clipboard. If you search for something in VS Code or another native macOS applications and then switch to another, the find widget will contain the same text. This feature is turned on by default on macOS and you can disable it by setting editor.find.globalFindClipboard to false.



HTML now offers code completion for character entities, such as &gt;, &amp. To see the proposals, type & in a element content or attribute value and invoke IntelliSense.

JSON with comments

A new mode JSON with Comments (jsonc) has been added to distinguish between JSON-like files that allow comments and JSON files that follow the standard JSON specification. All VS Code configuration files use the new mode and allow comments, while .json files default to the standard JSON mode that will report comments as errors.

TypeScript 2.6.2

VS Code now includes TypeScript 2.6.2. This minor update fixes a few important bug fixes and tooling improvements.


JSX fragment syntax

TypeScript 2.6.2 also brings support for React 16.2's new JSX fragment syntax.

Typescript reportStyleChecksAsWarnings

VS Code now displays TypeScript code style issues as warnings instead of errors. This applies to:

  • Variable is declared but never used
  • Property is declared but its value is never read
  • Unreachable code detected
  • Unused label
  • Fall through case in switch
  • Not all code paths return a value

Treating these as warnings is consistent with other tools, such as TSLint. These will still be displayed as errors when you run tsc from the command line.

You can disable this behavior by setting: 'typescript.reportStyleChecksAsWarnings': false.

Language Server Protocol

The language server protocol was extended with the following new feature: a completion context given access to the trigger character, more completion item and symbol kinds as well as markdown support for completion items and signature help. The protocol additions are available in the 4.0.0-next.x version of the client and server npm modules.


Image diffing

You can now view changes in your images, side by side, directly from your Git repository:


Edit Breakpoint command

We have added a new Edit Breakpoint.. command to the BREAKPOINTS context menu. This will make it easier for users to edit the condition or hit count of breakpoints.

Undefining environment variables

Many debug extensions provide support for adding (or overriding) environment variables that are passed to the debug target. With this release, it is now possible to un-define (remove) a variable from the environment as well.

If an environment variable is set to null, this variable will be removed from the environment before the debug target is launched. This makes it much easier to test and debug code that relies on a variable not being defined.

Please note that in this release, only the Node.js debugger supports this.

New rendering style for synthetic elements in VARIABLES

In the debugger's VARIABLES view, we now show 'synthetic' elements in a subdued style to distinguish them from the real 'data' received from the debugger or runtime. In this release, only the 'range' nodes of big arrays are considered 'synthetic' and are rendered in the subdued style. We expect that more debug extensions will opt into this feature in the future.

New debug settings

  • A new setting debug.showInStatusBar controls the visibility of the debug Status Bar item. Possible values are: never, always and the default onFirstSessionStart.
  • A new setting debug.openDebug controls the visibility of the Debug view. Possible values are: neverOpen, openOnSessionStart and the default openOnFirstSessionStart.


Enable extensions per workspace

VS Code has had support for disabling extensions globally or per workspace. However, there was also demand for enabling extensions per workspace. With this release, you can configure extensions to run only for specific workspaces.

New Documentation

Java topics

There is new set of Java topics showing how to use the Java Extension Pack for debugging, cloud deployment, and Azure Functions development.

Python topics

Python also has its own section where you can find tutorials for the Microsoft Python extension. There are topics starting with 'Hello World', moving on to debugging, linting, and unit testing.

Debugging Recipes

We've added several new debugging recipes:

See Debugging Recipes to learn more about these guides and find helpful blog posts.

Extension Authoring

Pre-release versions

You can now distribute extension VSIXs with pre-release versions like x.y.z-alpha, x.y.z-beta and VS Code will detect them and provide updates according to their version increments as defined here. Refer to this issue to learn more.

Extension generator - yo code

The yeoman generators for TypeScript and JavaScript extensions now provide additional options to enable more checking of your extensions. For TypeScript extensions the generator provides options to setup TSLint and to enable the strict TypeScript compiler options.

For JavaScript, there is a prompt to enable the checkJS option which enables type checking in JavaScript files.

Debug API updates

Preview: Breakpoints API

In this milestone, we've continued work on the Debug API related to breakpoints. It is now possible to access the set of all breakpoints of a workspace (vscode.debug.breakpoints) and register for notification about added, removed, or changed breakpoints (vscode.debug.onDidChangeBreakpoints).

Please note that accessing breakpoints initially returns an empty array but triggers a subsequent BreakpointsChangeEvent event that updates vscode.debug.breakpoints to the correct set. So if your code relies on the correct set of breakpoints, don't forget to register for BreakpointsChangeEvents.

The different types of breakpoints are represented as different subclasses of Breakpoint. Currently supported are SourceBreakpoint and FunctionBreakpoint. Use an instanceof check to determine the concrete type.

Note: Currently this API is proposed, so in order to use it, you must opt into it by adding a 'enableProposedApi': true to package.json and you'll have to copy the vscode.proposed.d.ts into your extension project. Also be aware that you cannot publish an extension to the Marketplace that uses the enableProposedApi attribute.

Output text on Debug Console

The proposed Debug Console API from last month has been slightly modified and moved from 'proposed' to 'official'. An extension can append text to the Debug Console with vscode.debug.activeDebugConsole.append(text) or vscode.debug.activeDebugConsole.appendLine(text). The deprecated debug.logToDebugConsole will be dropped as soon as it is no longer used in any extension on the Marketplace.

Debug contributions in package.json

More fine-grained debugger activation events

If a debug extension uses a DebugConfigurationProvider, it is important that the extension is activated early enough so that the DebugConfigurationProvider can be registered before first being used.

The foolproof way to achieve this is by adding the onDebug activation event to the activationEvents section of the extension's package.json. This works fine as long as the extension does not spend a lot of time in its startup sequence. If it does,for instance starting a language server, early activation must be avoided because it could negatively affect other debug extensions.

To simplify startup, we have introduced two more fine-grained activation events:

  • onDebugInitialConfigurations is fired just before the provideDebugConfigurations method of the DebugConfigurationProvider is called.
  • onDebugResolve:type is fired just before the resolveDebugConfiguration method of the DebugConfigurationProvider for the specified type is called.

Rule of thumb: If activation of a debug extensions is lightweight, use onDebug. If it is heavyweight, use onDebugInitialConfigurations and/or onDebugResolve depending on whether the DebugConfigurationProvider implements the corresponding methods provideDebugConfigurations and/or resolveDebugConfiguration.

Debug Adapter Protocol

Visual Studio 19.6

New enum value virtual for the presentationHint.kind attribute of type Variable

The new enum value virtual indicates that the variable is a synthetic object introduced by the debugger for rendering or user interaction purposes. The client is expected to render this element in a different way then regular variables.

Support for removing variables from the environment

The runInTerminal request is used by a debug adapter to launch a debug target in an integrated or external terminal. One parameter to the request is the set of environment variables to pass to the debug target. In this release, null has been added to the environment variable's value type with the semantics 'remove the environment variable from the environment before launching the target'.



We now use Yarn to manage our production and development dependencies. This has greatly reduced the setup time to prepare a VS Code repository, both for development and build. More details are in this Pull Request.

New commands

KeyCommandCommand id
Open Raw Default Settingsworkbench.action.openRawDefaultSettings
⌃⌘W (Windows , Linux Ctrl+Meta+W)View: Toggle Tab Visibilityworkbench.action.toggleTabsVisibility
⌃0 (Windows, Linux Alt+0)View: Open Last Editor in Groupworkbench.action.lastEditorInGroup
⌘K C (Windows, Linux Ctrl+K C)Compare Active File with Clipboardworkbench.files.action.compareWithClipboard
Refresh Search resultssearch.action.refreshSearchResults
Collapse Search resultssearch.action.collapseSearchResults
Clear Search resultssearch.action.clearSearchResults

Notable Changes

  • 36491: Backspace should not always cancel code completion
  • 39594: Problems with nested snippet insertion
  • 11928: Possible to bring up multiple dialogs on same dirty file when closing
  • 31667: Configuration values are missing from files on remote network drives
  • 18733: Dragging a tab can show visual glitch when tab not fully visible
  • 16690: Closing tabs using mouse wheel click turns cursor into auto scroll
  • 30530: Keyboard Shortcut to Skip Preview Using Quick Open
  • 17552: Switch to Unsaved Tab When Prompting to Save
  • 15477: Support dependencies for VSIX extensions
  • 26871: Show a count badge for Problems panel
  • 35580: Make 'Workspace' and 'Folder' settings more discoverable
  • 38609: Install older version of an extension using VSIX
  • 28331: Cache extension manifest files
  • 38481: Use Yarn to manage dependencies
  • 35749: Improve image view in working tree

Microsoft Visual Studio 19

Thank You

Last but certainly not least, a big Thank You! to the following folks that helped to make VS Code even better:

  • Abinav Seelan (@abinavseelan): Add logging snippets for Javascript & typescript PR #37889
  • David Valachovic (@AdenFlorian): Support middle mouse click on folding decorator to recursively toggle folding PR #38727
  • Ajit Singh (@ajitid): Update Quiet Light theme's JSX PR #39451
  • Alberto Cortés (@alcortesm): fix Keyboard dispatch help message typos PR #36866
  • Brook Riggio (@brookr): Update PR #36673
  • Dan Bovey (@danbovey): Update NumberBadge to show hundreds in full, thousands with k PR #38605
  • Hannu Hartikainen (@dancek): Call shellscript files just 'Shell Script' PR #36889
  • David Weber (@DdWr): Add line number interval setting PR #37120
  • Deric Cain (@dericcain): Added ability to use tilde as home dir in config for cloning repos PR #32222
  • David Lechner (@dlech): Add firstline match for Makefile PR #38126
  • Francisco Moreira (@Dozed12): Size down SCM discard icon PR #39135
  • Ryan Lee (@drdgvhbh): add split pane to preferences editor PR #38000
  • Carson McManus (@dyc3): fix debug console to handle more than one graphics mode in a single escape sequence PR #38981
  • Louis MacFhionnlaigh (@ethernetcable): Change Twitter character limit PR #39109
  • Harjyot Singh (@excerebrose)
    • Sync (Rebase) Command added PR #31416
    • Displaying Repository URL (Git Link) on Extensions Page. PR #31487
  • Fabio Spampinato (@fabiospampinato): Uninstall extensions given paths to their .vsix files PR #34042
  • Felix Becker (@felixfbecker)
    • Fix macOS builds PR #37564
    • Make npm logs less verbose in CI PR #37566
  • Joel Kuntz (@Frozenfire92): Fix #39867 fix git popStash type check PR #39868
  • Sanders Lauture (@golf1052): Show preview tag on extension page if extension is in preview PR #36261
  • HUI ZHOU (@huizhougit): Set placeholder text in SourceControlInputBox PR #29822
  • Anton Vildyaev (@hun1ahpu): Fix 37385 by introducing addition configuration setting PR #37704
  • Ignacio Nicolás Rodríguez (@ignacionr): Update taskTemplates.ts PR #37905
  • Yuki Ueda (@Ikuyadeu): Fix Markdown quote syntax highlight(fix #38523) PR #39487
  • Itamar (@itamark): Capitalizing Contains in Contains changes PR #37980
  • Justin Horner (@justinhhorner): Add Rename Branch to Git Extension PR #32244
  • Karthik Iyengar (@karthikiyengar): Allow user to cancel cloning a git repo #30057 - WIP PR #32119
  • MXI (@KillyMXI): Add Region folding for CSS (#_3422) PR #37789
  • Markus Igeland (@Markussss): Added support for sorting multiple selections PR #36652
  • Joe Martella (@martellaj): Adds 'Accept All Current' to command palette PR #38582
  • Max Furman (@maxfurman)
    • Compare with Clipboard PR #37841
    • Toggle Tab Visibility PR #37735
  • Max Schmitt (@mxschmitt): 'Cannot read property 'filter' of undefined' in extensionGalleryService PR #38642
  • Melvin (@melvin0008): Add support for macOS globalFindClipboard #11233 #28896 PR #35956
  • Jared Moore (@moorejs): Open File Handler now untildifies. Fixes #32736 PR #39122
  • Nehal J Wani (@nehaljwani): Make v8-profiler, css-parser URI http-proxy friendly PR #38181
  • Zanidd (@ninijay): Add platform info in code --version #37793 Done PR #37824
  • @nkofl: Add code folding #region support in coffeescript PR #39334
  • Tomer Ohana (@ohana54): Add .nvmrc file PR #39814
  • Manuel Sommerhalder (@oncode): Trim whitespace from command.stash PR #39264
  • Nathan Shively-Sanders (@sandersn): Fix array syntax in debugViewer.ts PR #37542
  • Shivam Mittal (@shivammittal99)
    • Fixes markdown link syntax highlighting bug PR #38328
    • Correct spelling of Message in reloadMessaage in extensionsActions.ts and extensionsActions.test.ts PR #38698
  • Shobhit Chittora (@shobhitchittora)
    • Removing Disabled Extensions while Issue Reporting PR #37705
    • Fixing integrated terminal font-size overflow PR #37636
  • Suhas (@suhasdeshpande): Update monaco-editor-setup.js PR #38130
  • Sye van der Veen (@Syeberman): Auto-closing quotes in Python raw string literals PR #35636
  • Ethan Woodward (@Takadimi): #36562 Sort multiple selections PR #37196
  • Martin Thierer (@thierer): Compare to correct Ressource-URI when fetching content PR #34690
  • Thomas Struller-Baumann (@Thomas-S-B): Removed unnecessary comma. PR #38104
  • @tsalinger: Reuse last commit message for amend PR #38865
  • Alexander (@usernamehw): Fixes #38691 PR #38692
  • Yang Liu (@zesik): Ensure Replace box's width when showing PR #36902

Contributions to language-server-protocol:

  • Remy Suen (@rcjsuen):
    • Fix a small typo in PR #263
    • Fix the grammar PR #322
    • Fix a small typo PR #332
  • Brett Cannon (@brettcannon):
    • Grammar tweaks for initialize request PR #269
    • Fix a spelling mistake PR #270
  • Maxim Reznik (@reznikmm): Formating is done by server, not by client PR #316
  • Sven-Hendrik Haase (@svenstaro): Some grammar and consistency fixes PR #311
  • Vlad Dumitrescu (@vladdu): Specify response from client/unregisterCapability PR #331
  • Waleed Khan (@arxanas): Clarify response ordering (#_306) PR #333

Contributions to vscode-languageserver-node:

  • Darin Morrison (@freebroccolo) Fix docs for TextDocumentItem.create PR #269
  • Mickael Istria @(mickaelistria):
    • Multi-root declared as ServerCapability (#_298) PR #272
    • workspaceFolders isn't a model element PR #273
  • @amiramw typo fix PR #339
  • Peter Burns (@rictic): Document that onWillSave handler capabilities reqs PR #275
  • @danixeee: Return value after executing command request PR #284

Contributions to vscode-extension-vscode:

  • Gunnar Wagenknecht (@guw): Allow testing against latest Insiders app (#_89) PR #89
  • kimushu (@kimushu): Fix invalid permission on Linux (#_84) PR #84

Contributions to vscode-css-languageservice:

  • Adam Miller (@amiller-gh): Add attrib namespace to parser PR #50

Contributions to vscode-html-languageservice:

  • Ludovic Oger (@garconvacher): Add DPub-ARIA roles (Digital Publishing WAI-ARIA Module 1.0) PR #14

Contributions to vscode-node-debug:

  • Sindre Svendby (@SindreSvendby): Accept .mjs as a valid fileending PR #161

Contributions to vsce:

  • Morten N.O. Nørgaard Henriksen (@raix)
    • fix show: add icon fallback on win32 PR #226
    • fix 'show' to be case insensitive PR #225
    • feature/issue-216-add-search-command PR #218
    • Feature/issue 214 add show command PR #215

Contributions to vscode-tslint:

  • Sebastian Silbermann (@eps1lon): Fixed link anchor PR #301
  • Joachim Seminck (@jseminck): Fix typo: Rename udpate* to update* PR #293
  • Seth (@osdavison): Fix incorrect link PR #291

Contributions to vscode-recipes:

  • Maximiliano Céspedes (@neomaxzero): update Next-Js link PR #42
  • John Pankowicz (@johnpankowicz): Added recipe for AspNetCore.SpaTemplates PR #41
  • Cengiz Ilerler (@cilerler): updated deprecated command PR #32

Contributions to localization:

This is the eighth month since we opened community localization in Transifex. We now have nearly 600 members in the Transifex VS Code project team. We appreciate your contributions, either by providing new translations, voting on translations, or suggesting process improvements.

Here is a snapshot of top contributors for this release. For details about the project including the contributor name list, visit the project site at

  • French: Antoine Griffard, Bruno Lewin, Maxime COQUEREL.
  • Italian: Alessandro Alpi, Piero Azi, Aldo Donetti.
  • German: thefreshman89, Carsten Kneip, Dejan Dinic, Volkmar Rigo, Max Schmitt.
  • Spanish: Roberto Fonseca, Raul Rama, Alberto Poblacion, Carlos Mendible, Thierry DEMAN-BARCELO, Andy Gonzalez, Juan Ramón Rodríguez, David Triana, Pedro Sánchez, Jorge Serrano Pérez.
  • Japanese: EbXpJ6bp, Tomoaki Yoshizawa, Yuichi Nukiyama, tanaka_733, 杉田 寿憲, Yoshihisa Ozaki, Hiroyuki Mori, Miho Yamamoto, Yuki Ueda.
  • Chinese (Simplified): Joel Yang, 王东程, Wang Weixuan, 陈嘉恺, bingzheyuan, YF.
  • Chinese (Traditional): Duran Hsieh, Winnie Lin, Kirk Chen, Ke-Hsu Chen.
  • Korean: Ian Y. Choi.
  • Hungarian: Tar Dániel.
  • Portuguese (Brazil): Roberto Fonseca, Bruno Sonnino, Lucas Miranda, SQLCrespi, Alefe Souza, Felipe Caputo, Danilo Dantas, João Holanda, .
  • Portuguese (Portugal): BlueKore, António Campos, Ruben Mateus.
  • Turkish: Adem Coşkuner.
  • Bulgarian: Любомир Василев, Didi Milikina, Bozhidar Gevechanov, Ilia Iliev.
  • Dutch: Maarten van Stam, Armand Duijn, Senno Kaasjager, Elmar Jansen, Gerjan, Gerald Versluis, Peter Hut.
  • Indonesian: Joseph Aditya P G, Hendra Setiawan, Febrian Setianto (Feber), simplyeazy, Septian Primadewa, Riwut Libinuko, Alfa Phi.
  • Polish: Wojciech Maj, Patryk Adamczyk, Patryk Zawadzki, Sölve Svartskogen, Mateusz Wyczawski, KarbonKitty, Marek Kurdej, Adam Borowski, Paweł Sołtysiak, Jakub Drozdek.
  • Serbian: Darko Puflović, Марко М. Костић, Nikola Radovanović.
  • Swedish: Joakim Olsson.
  • Tamil: rajakvk, Praveen, Karunakaran Samayan, Nadar Solomon Sunder.
  • Thai: Sirisak Lueangsaksri, Yuttana Buasen.
  • Ukrainian: R.M., Oleksandr, Bogdan Surai, Borys Lebeda, Yevhen Kuzminov.
  • Vietnamese: Thanh Phu, Khoi Pham, Hung Nguyen, Vuong, Trung Đào.