Order | TOCTitle | PageTitle | MetaDescription | MetaSocialImage | Date | DownloadVersion |
---|---|---|---|---|---|---|
70 |
September 2021 |
Visual Studio Code September 2021 |
Learn what is new in the Visual Studio Code September 2021 Release (1.61) |
1_61/release-highlights.png |
2021-10-07 |
1.61.0 |
Welcome to the Insiders build. These are the preliminary notes for the September 1.61 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 September milestone release notes are available, you can still track our progress:
- September iteration plan - Review what's planned for the milestone.
- Commit log - GitHub commits to the vscode open-source repository.
- Closed issues - 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 on GitHub.
A new command Split in Group (kb(workbench.action.splitEditorInGroup)
) was added to split an editor into two sides without requiring a second editor group. This allows you to work in two editors side by side on the same file:
There is a new setting workbench.editor.splitInGroupLayout
for the splitting to be either vertical or horizontal.
There are new commands to use this new feature via keybindings:
workbench.action.splitEditorInGroup
workbench.action.toggleSplitEditorInGroup
workbench.action.joinEditorInGroup
workbench.action.toggleSplitEditorInGroupLayout
And to navigate between the sides, new commands were added as well:
workbench.action.focusFirstSideEditor
workbench.action.focusSecondSideEditor
workbench.action.focusOtherSideEditor
The new color sideBySideEditor.border
is sets the color for the border to separate the one side from the other.
We introduced locked editor groups last milestone as experimental new feature. During this milestone, the settings experience was improved allowing you to easily select an editor that should lock a group automatically when opening:
The setting is now called workbench.editor.autoLockGroups
. Similar, the commands related to editor group locking have been renamed and are no longer experimental:
workbench.action.lockEditorGroup
workbench.action.unlockEditorGroup
workbench.action.toggleEditorGroupLock
Opened editors support to indicate whether they are readonly or whether their associated resource has been deleted from disk. This indication was given by appending "deleted" and/or "readonly" to the editor label, requiring quite a bit of space.
We now changed to using decorations for this purpose:
- Editors with deleted resource appear with strikethrough and in red.
- Editors with readonly resources appear with a lock icon.
When you compare two files, we typically had prefixed the file names with the workspace relative folder path, making it harder to actually see the file names that are compared.
In this release, the folder is now hidden from the label unless both file names are the same, matching what we had already done for normal editor labels.
If both file names are identical, a description is shown that hints at the folder difference:
When you normally split an editor to the side, we open a new editor group, even if an existing group is present to the side. But sometimes you might want to split an editor into a group on the side that is already there.
For that purpose new commands have been added:
workbench.action.splitEditorToPreviousGroup
: Split into the previous groupworkbench.action.splitEditorToNextGroup
: Split into the next groupworkbench.action.splitEditorToAboveGroup
: Split into the group above the current oneworkbench.action.splitEditorToBelowGroup
: Split into the group below the current oneworkbench.action.splitEditorToLeftGroup
: Split into the group to the left of the current oneworkbench.action.splitEditorToRightGroup
: Split into the group to the right of the current oneworkbench.action.splitEditorToFirstGroup
: Split into first groupworkbench.action.splitEditorToLastGroup
: Split into last group
On macOS, if you select the Open... menu item from the File menu, you can open both files and folders. For new users, this may come as a surprise, especially since Open Workspace was often used to try to open a folder, but that menu item is specifically to open a .code-workspace
file.
As such, we made slight adjustments to the file menu on macOS:
- A new entry Open Folder... opens a folder.
- Open Workspace... was renamed to Open Workspace from File...
The file watcher we use to detect changes to files and folders on disk changed to a library that can handle all of our supported platforms (Windows, Linux, macOS) and as such reduces the overhead of maintaining different watchers for different platforms. We plan to enable this library by default on all platforms. This iteration we enabled it on Windows and macOS, while Linux is planned shortly after.
The new watcher should be faster on startup and result in fewer CPU cycles spend on large folders. One downside of this benefit though is that the file watcher is no longer automatically detecting folders in a workspace that are symbolic links on macOS. If you have such a setup, you can use the new files.watcherInclude
setting to explicitly add the path of a symbolic link to be included for file watching. On the upside, you can use this new setting on Windows to explicitly include symbolic link folders inside the workspace - something that was not possible before on Windows.
You should not notice any regressions in your day to day work, but if file watching is broken for you, please report an issue back to us. A new setting files.legacyWatcher
was added to forcefully enable the old watcher in case of problems.
telemetry.enableTelemetry
and telemetry.enableCrashReporter
have been deprecated in favor of telemetry.telemetryLevel
. In future iterations, the settings will be phased out completely. telemetry.telemetryLevel
allows higher configuration granularity now allowing users to select if they want to only allow error telemetry to be sent. Values of "error" or above will also enable the crash reporter.
It is now possible to configure the minimap background opacity independently of the minimap text's opacity using the newly added minimap.foregroundOpacity
color.
Statically set terminal dimensions for cases when line wrapping can be jarring or disruptive using workbench.action.terminal.setDimensions
.
Toggle the terminal width between fitting the full contents and wrapped lines via kb(workbench.action.terminal.sizeToContentWidth)
or using the tab context menu action Toggle Size to Content Width.
Extensions can benefit from knowing whether or not a terminal has been interacted with by the user. For example, an extension might want to wait until a user has interacted with the terminal to run an action.
Terminal state, including isInteractedWith
, can now be known by extensions using:
export const onDidChangeTerminalState: Event<Terminal>;
readonly state: TerminalState;
Terminal names are traditionally the name of the process they're associated with. Thus, it can be difficult to distinguish between them.
We now support configuring both title and description to help with this using variables described in terminal.integrated.tabs.title
and terminal.integrated.tabs.description
Emojis are now supported for IMEs on macOS.
Some terminal UI apps, like nano, use keybindings that are consumed by the workbench, which limits their functionality when integrated within VS Code. A new context key, TerminalContextKeys.altBufferActive
, directs keybindings to the terminal instead of the workbench when the alt buffer is active to work around this.
The current TypeScript version and IntelliSense state are now shown in the language status item:
Previously the TypeScript version was always shown the in status bar. You can pin the version to restore the old behavior:
The language status item also shows the current file's jsconfig/tsconfig
and will indicate if you are currently in partial mode.
When you fold a JSX tag in JavaScript or TypeScript, we now continue to show the closing tag:
This matches how folding works in HTML.
When a VS Code window is closed, terminal processes get disposed of.
This iteration, we've added opt-in support for restoring the buffer and recreating the processes under configurable conditions found under terminal.integrated.persistentSessionReviveProcess
.
Debugging
VS Code now supports full debug features for Jupyter notebooks. To try it out, make sure you have ipykernel
v6+ installed as your selected kernel, set a breakpoint, and select the Debug Cell command.
Remote Debugging
You can also use Run by Line and debug Jupyter notebooks using remote kernels. To try it out, connect to your remote kernel with the Jupyter: Specify local or remote Jupyter server for connections command, make sure you have ipykernel
v6+ installed as your selected kernel, and use Run by Line or debugging as usual.
Work continues on the GitHub Pull Requests and Issues extension, which allows you to work on, create, and manage pull requests and issues. Check out the changelog for the 0.31.0 release of the extension to see the highlights.
The Webview UI Toolkit is a component library for building webview-based extensions in Visual Studio Code.
Features of the library include:
- Implements the Visual Studio Code design language: Create extensions that have a consistent look and feel with the rest of the editor.
- Automatic support for color themes: All components are designed with theming in mind and will automatically display the current editor theme.
- Use any tech stack: The library ships as a set of web components, meaning developers can use the toolkit no matter what tech stack (React, Vue, Svelte, etc.) their extension is built with.
- Accessible out of the box: All components ship with web standard compliant ARIA labels and keyboard navigation.
This month we shipped additional APIs for extensions building on the new testing APIs. Test tags allow you configure if and how certain tests can be run--or not. Non-error output allows you to associate additional console output with specific test cases. Messages from the output are displayed inline, similarly to failure messages.
Extensions can now publish different VSIXs for each platform (Windows, Linux, macOS) VS Code is running on. We call such extensions platform-specific extensions. Starting with version 1.61.0, VS Code looks for the extension package that matches the current platform.
Platform-specific extensions are useful if your extension has platform-specific libraries or dependencies, so you can control the exact binaries that are included in a platform package. A common use case is the use of native node modules.
More about this can be found in our platform-specific extensions documentation.
File system providers can now mark individual files as readonly via a new permissions
property on the FileStat
by setting the value of the property to FilePermission.Readonly
. Readonly files are not editable.
Note: If all files should be treated readonly, you can use the existing isReadonly
option when calling registerFileSystemProvider
.
The Settings editor now displays a subtree for an extension's contributes.configuration
endpoint when there are categories.
To create multiple categories, the contributes.configuration
accepts an array of configurations, and the title
key of each configuration is used for the section headings. There is also an order
field, which allows categories to be reordered within the subtree.
The API proposal for adding type hierarchy providers has been finalized.
The @vscode/test-web node module offers a CLI and API to test web extensions in Chromium, Firefox, or Webkit.
New for this milestone is the option folderPath
that allows to open VS Code for the Web on test data. An in-memory file system contains the resources of the given location so that tests have something to work with.
vscode-test-web --browserType=chromium --extensionDevelopmentPath=$extensionLocation $testDataLocation
The following new icons were added to our codicon library:
beaker-stop
bracket-dot
bracket-error
bracket
debug-continue-small
graph-line
graph-scatter
pie-chart
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.
The close
property, which is a presentation
property in the tasks.json
schema, is available in the TaskPresentationOptions
API. It functions in the same way as the matching tasks.json
property by controlling whether the terminal will be closed upon completion of the task.
An API for reading and manipulating tabs has been added as proposed API. This unblocks common feature requests such as wanting access to the list of open resources when there is not a backing textDocument
. Please provide any feedback regarding this API in issue #133532.
The newly proposed supportHtml
property on MarkdownString
enables rendering of a safe subset of raw HTML that appears inside the Markdown text.
supportHtml
defaults to false
. When disabled, VS Code will instead strip out any raw HTML tags that appear in the Markdown text.
The keepScrollPosition
property on the QuickPick
object that you get back from window.createQuickPick()
has been added as proposed API. This allows you to control whether or not the scroll position (cursorTop
) in the Quick Pick moves back to the top of the list. There are a few use cases we had in mind for this API:
- Implementing a "remove this item from the list" using the also proposed
QuickPickItemButton
s (for example, Ctrl/Cmd + Px
QuickPickItemButton). - Implementing a "toggle this item in some way" using the also proposed
QuickPickItemButton
s (for example, Insert Snippet command). - Asynchronously loading items in the Quick Pick (like
setInterval
adding an item to the list by reassigning the.items
property... scroll shouldn't jump to the top).
Without the ability to control it, every one of these operations would force the scroll position of the Quick Pick to jump up to the top of the list of picks. The keepScrollPosition
allows extension authors to control this behavior.
We've switched to use DOMPurify internally to sanitize HTML that is rendered in the main workbench. This is mainly used for sanitizing rendered Markdown.
DOMPurify is well maintained and compliant with trusted types out of the box. This switch helps protect users and gives us more confidence in enabling features such as MarkdownString.supportHtml
.
On macOS Big Sur, we now use the open command to spawn VS Code when launched from the command line. This change allows Code to open as though it were launched from the dock, which fixes some issues involving entitlements.
- 130407: [trivial] settings>files: exclude changing pattern as (blank) won't deletable
- 133910: Show an error when resolving shell environment fails or is timing out
- 133567: accessibility: the labels for the top-level tree nodes in find references all just read "true"
- 133149: Task terminal marked failed for info/warning-level problems.
- 133976: Allow to open a
.code-workspace
via protocol URL
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:
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- CodeCrazy-ywt (@CodeCrazy-ywt)
- ArturoDent (@ArturoDent)
- Alberto Santin (@albertosantini)
- Tarunav.BA (@TarunavBA)
- Simon Chan (@yume-chan)
Contributions to vscode
:
- @adaex (Aex)
- Update to latest seti-ui icon theme PR #131856
- Update to latest seti-ui icon theme PR #132512
- @aghArdeshir (aghArdeshir): Remove IE-support for clipboard data PR #133679
- @AiverReaver (Ashish Vagish): added feature to add keybinding to Copy Command Title(fix #131350) PR #131436
- @AkatQuas (Akat)
- fix(html-language-feature): remove vague statement PR #132508
- fix: early return on cancellation PR #132523
- @akosyakov (Anton Kosyakov): apply installation options for extensions from vsix files PR #131786
- @armanio123 (Armando Aguirre): Add jsxAttributeCompletionStyle setting PR #133920
- @CGNonofr (Loïc Mangeonjean): Add resolveCodeAction to monaco registerCodeActionProvider PR #133335
- @crackalak (Dan Hughes): Added
ariaContainerElement
toIStandaloneEditorConstructionOptions
PR #131865 - @crimx (CRIMX): fix: correct submenu position calculation PR #133596
- @davidanthoff (David Anthoff): Add setKernelSpecAndLanguageInfo to ipynb ext PR #132298
- @door-bell (Tim): Fix formatting on setting workbench scroll sensitivity setting description PR #132214
- @DragWx: Allow bracket pairs to share open tokens or close tokens in the colorizer PR #132504
- @fwcd (FW): Add Citation File Format (
.cff
) to the recognized YAML file extensions PR #131323 - @gjsjohnmurray (John Murray)
- Append hint text to placeholder if input supports history PR #129324
- Prevent duplicate '(read-only)' suffix on window title (#132127) PR #132134
- @heartacker: add cmd+i (mac), ctrl+i (linux/win) as additional intellisense toggleSuggestionDetails PR #131976
- @IllusionMH (Andrii Dieiev): Fix keys used to resolve terminal settings PR #132851
- @jackos (Jack Clayton): Added close field in vscode.d.ts interface TaskPresntationOptions PR #131127
- @jeanp413 (Jean Pierre): Fixes terminal editor tab displays content from another terminal editor tab PR #131211
- @jwei98 (Justin Wei): Do not fold closing tag PR #132316
- @LEGOL2 (Sebastian Łużyński): Increase max file size for file comparison PR #127860
- @MarkZuber (Mark Zuber): Add telemetry to extension host startup success/fail PR #131917
- @MasterOdin (Matthew Peveler): Docs: Fix grammar on language and value docstrings PR #132782
- @matkoniecz (Mateusz Konieczny): recognise .geojson as json, fixes #129329 PR #129330
- @philnagel (Philipp Nagel): Recognize .pyt files in Python extension PR #133546
- @SNDST00M (SNDST00M: M.U.N.I.N): Whitelist comments in all JSON files PR #129206
- @ssigwart (Stephen Sigwart)
- Fix fold jumping with no parent fold PR #130309
- Make go to next/prev folding range more intuitive PR #133363
- Fix Typescript NLS JSON PR #134179
- @Suven-p (Suven-p): Remove colorized bracket pair for plain text files PR #132534
- @Un-index: Update iframe.ts PR #132577
- @utajum (Vladimir Tasic): Minimap - highlight all instances of selected word PR #132584
- @youngjuning (洛竹): fix: GetSessionOptions -> AuthenticationGetSessionOptions PR #131644
- @yume-chan (Simon Chan)
- fix: progress text in welcome page PR #133812
- fix: avoid stack overflow when loading bracket guides for large files PR #134189
- @goldst (Leonard Goldstein): Multiple tab labels for diff editors PR #116178
Contributions to vscode-eslint
:
- @eungyeole (Eungyeol): Add exception to a .gitignore PR #1332
- @geekanant (Anant Patni): fix: tasks typo PR #1342
Contributions to vscode-html-languageservice
:
- @domdomegg (Adam Jones): Update method and formmethod HTML attrs capitalization PR #113
- @ssigwart (Stephen Sigwart): Add doNotAddAttributeQuotes setting to disable automatic quotes PR #112
Contributions to vscode-json-languageservice
:
- @dsherret (David Sherret): fix: clear
JsonSchemaService
local single resource cache on schema change PR #105
Contributions to vscode-languageserver-node
:
- @AkatQuas (Akat): fix: modify some comments in jsdoc PR #817
- @link89: fix import of jsonrpc module PR #805
Contributions to vscode-pull-request-github
:
- @burkeholland (Burke Holland)
- Fixes #2259 PR #2909
- Respect remote link type for upstream PR #2929
- Button sizes don't look right when PR title is wrapped PR #2966
- Focus border is used on assignees when it's not focused PR #2967
- Create commit select horizontal padding is too high PR #2970
- Fixes Tick SVG doesn't look right #2950 PR #2971
- PR created x minutes ago is cut off in small tabs PR #2985
- Lowercase branch names PR #2986
- Skipped status check is shown as pending PR #3005
- @lgarron (Lucas Garron): GitHub permalinks: Deduplicate the line number if the range is one line. PR #2980
- @moshfeu (Mosh Feu): fix: make pending checks "show" button / link accessible PR #2972
Contributions to vscode-references-view
:
- @Eskibear (Yan Zhang): show type hierarchy PR #71
Contributions to vscode-vsce
:
- @prashantvc (Prashant Cholachagudda): Fixed an issue where search returns ADO and VSIDE PR #606
- @wangweixuan (Wang Weixuan): Supports repository shorthand PR #598
- @youngjuning (洛竹): chore: add defaultIgnore item PR #614
Contributions to language-server-protocol
:
- @larshp (Lars Hvam): semantic highlighting range, does not return delta PR #1345
- @rcjsuen (Remy Suen): Reorder words to fix the grammar PR #1347
Contributions to monaco-editor-webpack-plugin
:
- @six-ponies (马騳骉): fix: Failed to execute 'importScripts' on 'WorkerGlobalScope': The URL xxx is invalid. PR #160