CINXE.COM
January 2025 (version 1.97)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="awa-expId" content="vscw_aaflight1016_treatment:103440;" /> <meta name="awa-env" content="prod" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="google-site-verification" content="hNs7DXrTySP_X-0P_AC0WulAXvUwgSXEmgfcO2r79dw" /> <!-- Twitter and Facebook OpenGraph Metadata--> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:site" content="@code" /> <meta name="description" content="Learn what is new in the Visual Studio Code January 2025 Release (1.97)" /> <meta name="keywords" content="" /> <!-- Twitter and Facebook OpenGraph Metadata--> <meta name="twitter:card" content="summary_large_image" /> <meta property="og:url" content="https://code.visualstudio.com/updates/v1_97" /> <meta property="og:type" content="article" /> <meta property="og:title" content="January 2025 (version 1.97)" /> <meta property="og:description" content="Learn what is new in the Visual Studio Code January 2025 Release (1.97)" /> <meta property="og:image" content="https://code.visualstudio.com/assets/updates/1_97/release-highlights.png" /> <link rel="shortcut icon" href="/assets/favicon.ico" sizes="128x128" /> <link rel="apple-touch-icon" href="/assets/apple-touch-icon.png"> <title>January 2025 (version 1.97)</title> <link rel="stylesheet" href="/vendor/bootstrap/css/bootstrap.min.css"> <link rel="stylesheet" href="/dist/v2/style.css"> <script src="https://consentdeliveryfd.azurefd.net/mscc/lib/v2/wcp-consent.js"></script> <script type="text/javascript" src="https://js.monitor.azure.com/scripts/c/ms.analytics-web-4.min.js"></script> <script type="text/javascript"> // Leave as var; siteConsent is initialized and referenced elsewhere. var siteConsent = null; const GPC_DataSharingOptIn = false; WcpConsent.onInitCallback(function () { window.appInsights = new oneDS.ApplicationInsights(); window.appInsights.initialize({ instrumentationKey: "1a3eb3104447440391ad5f2a6ee06a0a-62879566-bc58-4741-9650-302bf2af703f-7103", propertyConfiguration: { userConsented: false, gpcDataSharingOptIn: false, callback: { userConsentDetails: siteConsent ? siteConsent.getConsent : undefined }, }, cookieCfg: { ignoreCookies: ["MSCC"] }, webAnalyticsConfiguration:{ // Web Analytics Plugin configuration urlCollectQuery: true, urlCollectHash: true, autoCapture: { scroll: true, pageView: true, onLoad: true, onUnload: true, click: true, resize: true, jsError: true } } }, []); window.appInsights.getPropertyManager().getPropertiesContext().web.gpcDataSharingOptIn = GPC_DataSharingOptIn; }); </script> <link rel="alternate" type="application/atom+xml" title="RSS Feed for code.visualstudio.com" href="/feed.xml" /> </head> <body > <!-- Setting theme here to avoid FOUC --> <script> function setTheme(themeName) { if (themeName === 'dark') { document.documentElement.removeAttribute('data-theme'); // dark is default, so no data-theme attribute needed } if (themeName === 'light') { document.documentElement.setAttribute('data-theme', themeName); } return; } // Determine initial theme: user preference or system preference let theme = localStorage.getItem('theme') || (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'); setTheme(theme); // Apply the initial theme // Listen for changes in the system theme preference window.matchMedia('(prefers-color-scheme: dark)').addListener(e => { if (!localStorage.getItem('theme')) { // Only if no user preference is saved setTheme(e.matches ? 'dark' : 'light'); } }); </script> <div id="main"> <div class="navbar-fixed-container"> <div class="navbar navbar-inverse navbar-fixed-top " data-spy="affix" data-offset-top="1"> <div id='cookie-banner'></div> <nav role="navigation" aria-label="Top Level"> <div class="container"> <div class="nav navbar-header"> <a class="navbar-brand" href="/"><span>Visual Studio Code</span></a> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse" aria-label="Expand and Collapse Menu"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> </div> <div class="navbar-collapse collapse"> <ul class="nav navbar-nav navbar-left"> <li ><a id="nav-docs" href="/docs">Docs</a></li> <li class="active" ><a id="nav-updates" href="/updates">Updates</a></li> <li ><a id="nav-blogs" href="/blogs">Blog</a></li> <li ><a id="nav-extend" href="/api">API</a></li> <li><a href="https://marketplace.visualstudio.com/VSCode" target="_blank" rel="noopener" id="nav-extensions">Extensions</a></li> <li ><a id="nav-faqs" href="/docs/supporting/faq">FAQ</a></li> <li class='search visible-xs visible-sm' ><a href="/Search">Search</a></li> <li ><a id="nav-copilot" href="/docs/copilot/overview">GitHub Copilot</a></li> </ul> </ul> <ul class="nav navbar-nav navbar-right" role="presentation"> <li> <button type="button" class="theme-switch" id="theme-toggle"> <img class="theme-icon-light" src="/assets/icons/theme-light.svg" alt="Switch to the dark theme" /> <img class="theme-icon-dark" src="/assets/icons/theme-dark.svg" alt="Switch to the light theme" /> </button> </li> <li> <a href="/Search" title="Search" class="btn search-btn" id="nav-search"> <img class="search-icon-light" src="/assets/icons/search.svg" width="16px" height="16px" alt="Search" /> <img class="search-icon-dark" src="/assets/icons/search-dark.svg" width="16px" height="16px" alt="Search" /> </a> </li> <li class="search" role="presentation"> <form class="nav-search search-form" role="search" aria-label="Search"> <div class="input-group" role="presentation"> <input type="text" name="q" class="search-box form-control" placeholder="Search Docs" aria-label="Search text"/> <span class="input-group-btn"> <button tabindex="0" class="btn" type="submit" aria-label="Search"> <img class="search-icon-dark" src="/assets/icons/search-dark.svg" alt="Search" /> <img class="search-icon-light" src="/assets/icons/search.svg" alt="Search" /> </button> </span> </div> </form> </li> <!-- this was hiden in the home and download page, keeping it for now --> <li><a class="link-button" href="/Download" id="nav-download"> <span>Download</span></a></li> </ul> </div> </div> </nav> </div> </div> <div class="updates-banner "> <div class="container"> <p class="message">🚀 Get <a class="copilot-deep-link" href="vscode://github.copilot-chat?referrer=vscode-updatebanner" id="banner-link-updates" rel="noopener">GitHub Copilot Free</a> in VS Code!</p> </div> <div tabindex="0" role="button" title="Dismiss this update" class="dismiss-btn" id="banner-dismiss-btn"><span class="sr-only">Dismiss this update</span><span aria-hidden="true" class="glyph-icon"></span></div> </div> <!-- This div wraps around the entire site --> <!-- The body itself should already have a main tag --> <div id="main-content"> <div class="container body-content docs releases"> <div class="row"> <!-- left nav --> <div class="col-xs-12 col-md-2 docs-navbar-container"> <nav id="docs-navbar" aria-label="Updates" class="docs-nav updates-nav visible-md visible-lg"> <h4>Updates</h4> <ul class="nav"> <li class="active"> <a href="/updates/v1_97" aria-label="Current Page: January 2025">January 2025</a> </li> <li > <a href="/updates/v1_96" >November 2024</a> </li> <li > <a href="/updates/v1_95" >October 2024</a> </li> <li > <a href="/updates/v1_94" >September 2024</a> </li> <li > <a href="/updates/v1_93" >August 2024</a> </li> <li > <a href="/updates/v1_92" >July 2024</a> </li> <li > <a href="/updates/v1_91" >June 2024</a> </li> <li > <a href="/updates/v1_90" >May 2024</a> </li> <li > <a href="/updates/v1_89" >April 2024</a> </li> <li > <a href="/updates/v1_88" >March 2024</a> </li> <li > <a href="/updates/v1_87" >February 2024</a> </li> <li > <a href="/updates/v1_86" >January 2024</a> </li> <li > <a href="/updates/v1_85" >November 2023</a> </li> <li > <a href="/updates/v1_84" >October 2023</a> </li> <li > <a href="/updates/v1_83" >September 2023</a> </li> <li > <a href="/updates/v1_82" >August 2023</a> </li> <li > <a href="/updates/v1_81" >July 2023</a> </li> <li > <a href="/updates/v1_80" >June 2023</a> </li> <li > <a href="/updates/v1_79" >May 2023</a> </li> <li > <a href="/updates/v1_78" >April 2023</a> </li> <li > <a href="/updates/v1_77" >March 2023</a> </li> <li > <a href="/updates/v1_76" >February 2023</a> </li> <li > <a href="/updates/v1_75" >January 2023</a> </li> </ul> </nav> <nav id="small-nav" aria-label="Updates" class="docs-nav updates-nav hidden-md hidden-lg"> <label class="faux-h4" for="small-nav-dropdown">Updates</label> <select id="small-nav-dropdown" aria-label="updates"> <option value="/updates/v1_97" selected>January 2025</option> <option value="/updates/v1_96" >November 2024</option> <option value="/updates/v1_95" >October 2024</option> <option value="/updates/v1_94" >September 2024</option> <option value="/updates/v1_93" >August 2024</option> <option value="/updates/v1_92" >July 2024</option> <option value="/updates/v1_91" >June 2024</option> <option value="/updates/v1_90" >May 2024</option> <option value="/updates/v1_89" >April 2024</option> <option value="/updates/v1_88" >March 2024</option> <option value="/updates/v1_87" >February 2024</option> <option value="/updates/v1_86" >January 2024</option> <option value="/updates/v1_85" >November 2023</option> <option value="/updates/v1_84" >October 2023</option> <option value="/updates/v1_83" >September 2023</option> <option value="/updates/v1_82" >August 2023</option> <option value="/updates/v1_81" >July 2023</option> <option value="/updates/v1_80" >June 2023</option> <option value="/updates/v1_79" >May 2023</option> <option value="/updates/v1_78" >April 2023</option> <option value="/updates/v1_77" >March 2023</option> <option value="/updates/v1_76" >February 2023</option> <option value="/updates/v1_75" >January 2023</option> </select> </nav> </div> <!-- small right nav --> <div class="col-xs-12 visible-xs"> <nav aria-labelledby="small-right-nav-label" class="small-nav docs-nav updates-nav"> <label class="faux-h4" for="small-right-nav-dropdown" id="small-right-nav-label">In this update</label> <select id="small-right-nav-dropdown" class="small-nav-select" aria-label="Sections"> <option value="#_github-copilot">GitHub Copilot</option> <option value="#_accessibility">Accessibility</option> <option value="#_workbench">Workbench</option> <option value="#_editor">Editor</option> <option value="#_source-control">Source Control</option> <option value="#_notebooks">Notebooks</option> <option value="#_terminal">Terminal</option> <option value="#_tasks">Tasks</option> <option value="#_debug">Debug</option> <option value="#_languages">Languages</option> <option value="#_remote-development">Remote Development</option> <option value="#_contributions-to-extensions">Contributions to extensions</option> <option value="#_preview-features">Preview Features</option> <option value="#_extension-authoring">Extension Authoring</option> <option value="#_proposed-apis">Proposed APIs</option> <option value="#_engineering">Engineering</option> <option value="#_notable-fixes">Notable fixes</option> <option value="#_thank-you">Thank you</option> </select> </nav> </div> <!-- main content --> <main class="col-xs-12 col-sm-9 col-md-8 body"> <div class="edit-github pull-right"> <a href="https://vscode.dev/github/microsoft/vscode-docs/blob/main/release-notes/v1_97.md" class="btn btn-default" title="Edit this document in vscode.dev"> <span class="glyphicon glyphicon-pencil"></span> <span class="hidden-xs">Edit</span> </a> </div> <h1>January 2025 (version 1.97)</h1> <p><strong>Update 1.97.1</strong>: The update addresses these security <a href="https://github.com/microsoft/vscode/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%22January+2025+Recovery+1%22+" class="external-link" target="_blank">issues</a>.</p> <p><strong>Update 1.97.2</strong>: The update addresses these <a href="https://github.com/microsoft/vscode/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%22January+2025+Recovery+2%22+" class="external-link" target="_blank">issues</a>.</p> <p>Downloads: Windows: <a href="https://update.code.visualstudio.com/1.97.2/win32-x64-user/stable">x64</a> <a href="https://update.code.visualstudio.com/1.97.2/win32-arm64-user/stable">Arm64</a> | Mac: <a href="https://update.code.visualstudio.com/1.97.2/darwin-universal/stable">Universal</a> <a href="https://update.code.visualstudio.com/1.97.2/darwin/stable">Intel</a> <a href="https://update.code.visualstudio.com/1.97.2/darwin-arm64/stable">silicon</a> | Linux: <a href="https://update.code.visualstudio.com/1.97.2/linux-deb-x64/stable">deb</a> <a href="https://update.code.visualstudio.com/1.97.2/linux-rpm-x64/stable">rpm</a> <a href="https://update.code.visualstudio.com/1.97.2/linux-x64/stable">tarball</a> <a href="https://code.visualstudio.com/docs/supporting/faq#_previous-release-versions">Arm</a> <a href="https://update.code.visualstudio.com/1.97.2/linux-snap-x64/stable">snap</a></p> <hr> <p>Welcome to the January 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:</p> <ul> <li><a href="#_copilot-next-edit-suggestions-preview">Next Edit Suggestions (preview)</a> - Copilot predicts the next edit you are likely to make.</li> <li><a href="#_move-the-command-palette-and-quick-inputs">Reposition Command Palette</a> - Drag the Command Palette and Quick Inputs to a new position.</li> <li><a href="#_improved-editor-controls">Auto accept edits</a> - Automatically accept edits from Copilot after a configurable timeout.</li> <li><a href="#_trusting-extension-publishers">Extension publisher trust</a> - Keep your environment secure with extension publisher trust.</li> <li><a href="#_compound-logs">Compound logs</a> - Combine multiple logs into a single, aggregated log view.</li> <li><a href="#_output-panel-filtering">Filter output logs</a> - Filter the contents of the Output panel.</li> <li><a href="#_git-blame-information">Git blame information</a> - Rich git blame information and open on GitHub.</li> <li><a href="#_filter-and-search-on-values">Search values in debug variables</a> - Filter and search for specific values in debug variables.</li> <li><a href="#_inline-values-upon-cell-execution">Notebook inline values</a> - View inline values for code cell variables in notebooks.</li> <li><a href="#_no-config-debug">Python no-config debug</a> - Quickly debug a Python script or module without setup.</li> </ul> <blockquote><p>If you'd like to read these release notes online, go to <a href="https://code.visualstudio.com/updates">Updates</a> on <a href="https://code.visualstudio.com">code.visualstudio.com</a>. <strong>Insiders:</strong> Want to try new features as soon as possible? You can download the nightly <a href="https://code.visualstudio.com/insiders">Insiders</a> build and try the latest updates as soon as they are available.</p> </blockquote><h2 id="_github-copilot" data-needslink="_github-copilot">GitHub Copilot</h2> <h3 id="_copilot-next-edit-suggestions-preview" data-needslink="_copilot-next-edit-suggestions-preview">Copilot Next Edit Suggestions (Preview)</h3> <p><strong>Setting</strong>: <span class="setting"><a href="vscode://settings/github.copilot.nextEditSuggestions.enabled" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'github.copilot.nextEditSuggestions.enabled' in Settings Editor"></span></a>github.copilot.nextEditSuggestions.enabled</span></p> <p>GitHub Copilot code completions are great at autocomplete, but since most coding activity is editing existing code, it's a natural evolution of completions to also help with edits. So, we're excited to release a new preview feature, <strong>Copilot Next Edit Suggestions</strong> (Copilot NES).</p> <p>Based on the edits you're making, Copilot NES both predicts the location of the next edit you'll want to make and what that edit should be. NES suggests future changes relevant to your current work, and you can simply <span class="keybinding">Tab</span> to quickly navigate and accept suggestions.</p> <p>Notice in the following example that changing a variable triggers an edit suggestion further down the file. Just use the <span class="keybinding">Tab</span> key to navigate and accept the suggestion. The gutter indicator will guide you to your next edit suggestion.</p> <p><img src="/assets/updates/1_97/nes-arrow-directions.gif" alt="Video showing Copilot NES suggesting code edits at another location. The gutter shows an arrow indicating the relative position of the edit." loading="lazy"></p> <p>Enable Copilot NES via the VS Code setting <span class="setting"><a href="vscode://settings/github.copilot.nextEditSuggestions.enabled" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'github.copilot.nextEditSuggestions.enabled' in Settings Editor"></span></a>github.copilot.nextEditSuggestions.enabled</span>.</p> <p>Based on the size and type of edit, the rendering of the suggestion might change dynamically from side-by-side to below the current line. Configure the <span class="setting"><a href="vscode://settings/editor.inlineSuggest.edits.renderSideBySide" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'editor.inlineSuggest.edits.renderSideBySide' in Settings Editor"></span></a>editor.inlineSuggest.edits.renderSideBySide</span> setting to always render suggestions below the current line.</p> <p>Copilot NES is rapidly evolving, and we can't wait to get your feedback via issues in <a href="https://github.com/microsoft/vscode-copilot-release" class="external-link" target="_blank">our repo</a>. You can read our full <a href="https://aka.ms/gh-copilot-nes-docs" class="external-link" target="_blank">Copilot NES docs</a> for more information and scenarios as we expand the NES experience.</p> <blockquote><p><strong>Note</strong>: If you are a Copilot Business or Enterprise user, an administrator of your organization <a href="https://docs.github.com/en/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization#enabling-copilot-features-in-your-organization" class="external-link" target="_blank">must opt in</a> to the use of Copilot "Editor Preview Features," in addition to you setting <span class="setting"><a href="vscode://settings/github.copilot.nextEditSuggestions.enabled" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'github.copilot.nextEditSuggestions.enabled' in Settings Editor"></span></a>github.copilot.nextEditSuggestions.enabled</span> in your editor.</p> </blockquote><h3 id="_copilot-edits" data-needslink="_copilot-edits">Copilot Edits</h3> <h4 id="_copilot-edits-general-availability" data-needslink="_copilot-edits-general-availability">Copilot Edits general availability</h4> <p>In our VS Code October release, we announced the preview of Copilot Edits. Today, we're now announcing the general availability of Copilot Edits! Copilot Edits is optimized for code editing and enables you to make code changes across multiple files in your workspace, directly from chat.</p> <h4 id="_improved-editor-controls" data-needslink="_improved-editor-controls">Improved editor controls</h4> <p>Edits can now be accepted and discarded individually, giving you more control. Also new is that the editor controls for edits remain visible when switching to the side-by-side view. This is useful for understanding larger changes.</p> <p><img src="/assets/updates/1_97/edits-accept-hunk.png" alt="Screenshot that shows how to accept an individual change from Copilot Edits in the editor." loading="lazy"> <em>Theme: <a href="https://marketplace.visualstudio.com/items?itemName=GitHub.github-vscode-theme" class="external-link" target="_blank">GitHub Light Colorblind (Beta)</a> (preview on <a href="https://vscode.dev/editor/theme/GitHub.github-vscode-theme/GitHub%20Light%20Colorblind%20(Beta)" class="external-link" target="_blank">vscode.dev</a>)</em></p> <p>Lastly, we have added a new setting for automatically accepting edit suggestions after a configurable timeout. The setting for that is <span class="setting"><a href="vscode://settings/chat.editing.autoAcceptDelay" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'chat.editing.autoAcceptDelay' in Settings Editor"></span></a>chat.editing.autoAcceptDelay</span>, which specifies the number of seconds after which changes are accepted. The countdown stops when you interact with the accept button or when you start to review changes. This should be familiar to anyone who binge-watches on the weekends.</p> <p><video src="/assets/updates/1_97/edits-auto-accept.mp4" title="Video showing a gradient on the Accept button for Copilot Edits, indicating the auto-accept progress." autoplay loop controls muted></video> <em>Theme: <a href="https://marketplace.visualstudio.com/items?itemName=GitHub.github-vscode-theme" class="external-link" target="_blank">GitHub Light Colorblind (Beta)</a> (preview on <a href="https://vscode.dev/editor/theme/GitHub.github-vscode-theme/GitHub%20Light%20Colorblind%20(Beta)" class="external-link" target="_blank">vscode.dev</a>)</em></p> <h3 id="_apply-in-editor" data-needslink="_apply-in-editor">Apply in editor</h3> <p>In Copilot Chat, any code block can be applied to a file in the workspace by using the <strong>Apply to Editor</strong> action in the toolbar of the code block. We made several improvements to this experience:</p> <ul> <li> <p>The hover of the action now shows the file the code block was generated for.</p> <p><img src="/assets/updates/1_97/apply-code-block-hover.png" alt="Screenshot that shows the Apply Code Block hover text, indicating the target file name." loading="lazy"></p> </li> <li> <p>If the code block is for a non-existent file, you are prompted where to create the file. This can be at a file path suggested by Copilot, in an untitled editor, or in the currently active editor.</p> </li> <li> <p>When the changes are computed and applied, the same flow and UI as for Copilot Edits are used. You can review, improve, or discard each change individually.</p> </li> </ul> <h3 id="_temporal-context" data-needslink="_temporal-context">Temporal context</h3> <p>Temporal context helps when editing or generating code by informing the language model about files that you have recently interacted with. We are experimenting and measuring its effectiveness but it can also be enabled manually, <span class="setting"><a href="vscode://settings/github.copilot.chat.editor.temporalContext.enabled" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'github.copilot.chat.editor.temporalContext.enabled' in Settings Editor"></span></a>github.copilot.chat.editor.temporalContext.enabled</span> for Inline Chat and <span class="setting"><a href="vscode://settings/github.copilot.chat.edits.temporalContext.enabled" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'github.copilot.chat.edits.temporalContext.enabled' in Settings Editor"></span></a>github.copilot.chat.edits.temporalContext.enabled</span> for Copilot Edits.</p> <h3 id="_workspace-index-status-ui" data-needslink="_workspace-index-status-ui">Workspace index status UI</h3> <p>When you ask Copilot a question about the code in your project by using <code>@workspace</code> or <code>#codebase</code>, we use an index to quickly and accurately search your codebase for relevant code snippets to include as context. This index can either be a <a href="https://code.visualstudio.com/docs/copilot/workspace-context#_remote-index">remote index managed by GitHub</a>, <a href="https://code.visualstudio.com/docs/copilot/workspace-context#_local-index">a locally stored index</a>, or <a href="https://code.visualstudio.com/docs/copilot/workspace-context#_basic-index">a basic index</a> used as a fallback for large projects that can't use a remote index.</p> <p>This iteration, we've added the new workspace index to the language status indicator in the Status Bar that shows the type of index being used by Copilot and related information, such as the number of files being reindexed. To see this, just select the <code>{}</code> icon in the VS Code Status Bar.</p> <p><img src="/assets/updates/1_97/copilot-workspace-status.png" alt="Screenshot that shows the status of the Copilot workspace indexing in the Status Bar." loading="lazy"></p> <p>Check out the <a href="https://code.visualstudio.com/docs/copilot/workspace-context#_managing-the-workspace-index">Copilot workspace docs</a> for more info about the types of workspace indexes and how you can switch between them.</p> <h3 id="_build-a-remote-workspace-index" data-needslink="_build-a-remote-workspace-index">Build a remote workspace index</h3> <p><a href="https://code.visualstudio.com/docs/copilot/workspace-context#_remote-index">Remote workspace indexes</a> are managed by GitHub. A remote index can provide high-quality results quickly, even for large projects. They also only have to be built once per GitHub project, instead of once per user.</p> <p>Given all these advantages, we have added several new ways to upgrade a project to a remote index:</p> <ul> <li> <p>Run the new <strong>GitHub Copilot: Build Remote Index</strong> command.</p> </li> <li> <p>Select the Build Index button in the <a href="#_workspace-index-status-ui">workspace index status UI</a>. This only shows up if your project is eligible for remote indexing.</p> </li> <li> <p>Select the Build Index button in the first <code>@workspace</code> response you see. This only shows up if your project is eligible and also only shows once per workspace.</p> </li> </ul> <p>Keep in mind that only projects with a GitHub remote can currently use a remote index. It may also take some time to build up the remote index, especially if your project is large. Check the <a href="#_workspace-index-status-ui">Workspace index status UI</a> to see if remote indexing has completed.</p> <h3 id="_workspace-search-improvements" data-needslink="_workspace-search-improvements">Workspace search improvements</h3> <p>We've also continued optimizing code search for <code>@workspace</code> and <code>#codebase</code>. Highlights include:</p> <ul> <li> <p>Improved tracking and handling of locally changed files when using a <a href="https://code.visualstudio.com/docs/copilot/workspace-context#_remote-index">remote index</a>.</p> </li> <li> <p>Added background updating of changed files in the <a href="https://code.visualstudio.com/docs/copilot/workspace-context#_local-index">local index</a>, so that <code>@workspace</code> questions don't have to wait for them to be updated.</p> </li> <li> <p>Optimized the <a href="https://code.visualstudio.com/docs/copilot/workspace-context#_basic-index">basic index</a> for large projects.</p> </li> </ul> <h3 id="_git-changes-context-variable" data-needslink="_git-changes-context-variable">Git changes context variable</h3> <p>When writing queries for Chat or Edits, you can now reference files that were modified in Git source control by using the <code>#changes</code> context variable. For example, you could prompt for <code>summarize the #changes in my workspace</code>.</p> <p><img src="/assets/updates/1_97/copilot-chat-git-changes.png" alt="Screenshot of a Copilot chat response, which lists the modified files and changes when prompting for '#changes'." loading="lazy"></p> <h3 id="_model-availability" data-needslink="_model-availability">Model availability</h3> <p>You now have even more models to choose from when using Copilot. The following models are now available in the model picker in Visual Studio Code and github.com chat:</p> <ul> <li> <p><strong>OpenAI’s o3-mini</strong>: OpenAI’s newest reasoning model to your coding workflow, is rolling out gradually and will be available to GitHub Copilot Pro, Business, and Enterprise users. Learn more about the o3-mini model availability in the <a href="https://github.blog/changelog/2025-01-31-openai-o3-mini-now-available-in-github-copilot-and-github-models-public-preview/" class="external-link" target="_blank">GitHub blog post</a>.</p> </li> <li> <p><strong>Gemini 2.0 Flash</strong>: Google’s latest model shows high capabilities for code suggestions, documentation, and explaining code. This model is now available to all GitHub Copilot customers, including Copilot Free. Learn more about the Gemini 2.0 Flash model availability in the <a href="https://github.blog/changelog/2025-02-05-google-gemini-2-0-flash-is-now-available-to-all-copilot-users-in-public-preview/" class="external-link" target="_blank">GitHub blog post</a>.</p> </li> </ul> <h2 id="_accessibility" data-needslink="_accessibility">Accessibility</h2> <h3 id="_enhanced-accessibility-sounds" data-needslink="_enhanced-accessibility-sounds">Enhanced accessibility sounds</h3> <p>We've refined several accessibility sounds based on user feedback to improve clarity and distinction. The following sounds have been updated:</p> <ul> <li><span class="setting"><a href="vscode://settings/accessibility.signals.save" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'accessibility.signals.save' in Settings Editor"></span></a>accessibility.signals.save</span></li> <li><span class="setting"><a href="vscode://settings/accessibility.signals.lineHasFoldedArea" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'accessibility.signals.lineHasFoldedArea' in Settings Editor"></span></a>accessibility.signals.lineHasFoldedArea</span></li> <li><span class="setting"><a href="vscode://settings/accessibility.signals.terminalQuickFix" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'accessibility.signals.terminalQuickFix' in Settings Editor"></span></a>accessibility.signals.terminalQuickFix</span></li> <li><span class="setting"><a href="vscode://settings/accessibility.signals.lineHasInlineSuggestion" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'accessibility.signals.lineHasInlineSuggestion' in Settings Editor"></span></a>accessibility.signals.lineHasInlineSuggestion</span></li> </ul> <p>You can preview these updates by running the command <strong>Help: List Signal Sounds</strong> from the Command Palette.</p> <h3 id="_copilot-edits-accessibility-help-dialog" data-needslink="_copilot-edits-accessibility-help-dialog">Copilot Edits Accessibility Help dialog</h3> <p>Screen reader users can now access guidance on interacting with Copilot Edits by invoking: <span class="dynamic-keybinding" data-commandId="editor.action.accessibilityHelp" data-osx="⌥F1" data-win="Alt+F1" data-linux="Shift+Alt+F1"><span class="keybinding">⌥F1</span> (Windows <span class="keybinding">Alt+F1</span>, Linux <span class="keybinding">Shift+Alt+F1</span>)</span> within the input box.</p> <p>Additionally, when an editor contains pending Copilot edits, this status is now indicated in the editor help dialog. We've also introduced keyboard shortcuts for navigating next <span class="dynamic-keybinding" data-commandId="chatEditor.action.navigateNext" data-osx="⌥F5" data-win="Alt+F5" data-linux="Alt+F5"><span class="keybinding">⌥F5</span> (Windows, Linux <span class="keybinding">Alt+F5</span>)</span> / previous <span class="dynamic-keybinding" data-commandId="chatEditor.action.navigatePrevious" data-osx="⇧⌥F5" data-win="Shift+Alt+F5" data-linux="Shift+Alt+F5"><span class="keybinding">⇧⌥F5</span> (Windows, Linux <span class="keybinding">Shift+Alt+F5</span>)</span>, accepting <span class="dynamic-keybinding" data-commandId="chatEditor.action.acceptHunk" data-osx="⇧⌘Enter" data-win="Ctrl+Shift+Enter" data-linux="Ctrl+Shift+Enter"><span class="keybinding">⇧⌘Enter</span> (Windows, Linux <span class="keybinding">Ctrl+Shift+Enter</span>)</span>, discarding <span class="dynamic-keybinding" data-commandId="chatEditor.action.undoHunk" data-osx="⇧⌘Backspace" data-win="Ctrl+Shift+Backspace" data-linux="Ctrl+Shift+Backspace"><span class="keybinding">⇧⌘Backspace</span> (Windows, Linux <span class="keybinding">Ctrl+Shift+Backspace</span>)</span>, and toggling the diff view <span class="dynamic-keybinding" data-commandId="chatEditor.action.diffHunk" data-osx="⇧⌥F7" data-win="Shift+Alt+F7" data-linux="Shift+Alt+F7"><span class="keybinding">⇧⌥F7</span> (Windows, Linux <span class="keybinding">Shift+Alt+F7</span>)</span>.</p> <h3 id="_source-control-accessibility-help-dialog" data-needslink="_source-control-accessibility-help-dialog">Source Control Accessibility Help dialog</h3> <p>If you invoke the <strong>Show Accessibility Help</strong> command while the Source Control view is focused, it opens the Source Control Accessibility Help dialog to provide important information for screen reader users. The dialog contains the summary of the current source control state and general information about the views and how to navigate them.</p> <h3 id="_improved-screen-reader-notifications" data-needslink="_improved-screen-reader-notifications">Improved screen reader notifications</h3> <p>When a screen reader is detected, related notifications now include a link to learn more, providing additional context and resources.</p> <h3 id="_ignore-code-blocks-in-text-to-speech" data-needslink="_ignore-code-blocks-in-text-to-speech">Ignore code blocks in text to speech</h3> <p>Previously, when you used text-to-speech to read out a Copilot response, code blocks were also read out loud. You can ignore code blocks from text-to-speech sessions by using the <span class="setting"><a href="vscode://settings/accessibility.voice.ignoreCodeBlocks" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'accessibility.voice.ignoreCodeBlocks' in Settings Editor"></span></a>accessibility.voice.ignoreCodeBlocks</span> setting.</p> <h2 id="_workbench" data-needslink="_workbench">Workbench</h2> <h3 id="_move-the-command-palette-and-quick-inputs" data-needslink="_move-the-command-palette-and-quick-inputs">Move the Command Palette and Quick Inputs</h3> <p>You can now move the Command Palette and other Quick Inputs to a new position, instead of having it fixed at the top of the window.</p> <p>Features:</p> <ul> <li>Drag and drop the Command Palette or any other Quick Input with snapping to center and top</li> <li>Persisted position across reloads, allowing you to set a new permanent position for Quick Inputs</li> <li>Preset positions are available in the Customize Layout picker</li> </ul> <p><video src="/assets/updates/1_97/quick-pick-move.mp4" title="Video showing moving the Command Palette around the screen and watching it snap into different places. Then opening Customize Layout to play with the presets: top & center." autoplay loop controls muted></video></p> <h3 id="_trusting-extension-publishers" data-needslink="_trusting-extension-publishers">Trusting extension publishers</h3> <p>When you install an extension from a publisher for the first time you will now see a dialog to help you assess the trustworthiness of the extension publisher. This feature helps ensure that you only install extensions from trusted sources, enhancing the security of your development environment.</p> <p><img src="/assets/updates/1_97/trust-publisher-dialog.png" alt="Screenshot that shows the Trust Publisher dialog that is shown when a user installs an extension." loading="lazy"></p> <p>If you install an extension pack or an extension with dependencies, trusting the publisher will also implicitly trust the publishers of the extensions that get installed along with it.</p> <p>When you update to the VS Code 1.97 release, the publishers of currently installed extensions are automatically trusted. You can manage the trusted extension publishers with the <strong>Extensions: Manage Trusted Extensions Publishers</strong> command. This command allows you to reset or revoke trust for publishers you have previously trusted.</p> <p><img src="/assets/updates/1_97/manage-trusted-publishers.png" alt="Screenshot that shows the Quick Pick list of trusted publishers, enabling unchecking publishers to make them untrusted." loading="lazy"></p> <p><strong>Note</strong>: When no VS Code window is open and you install an extension from the CLI (<code>code-insiders --install-extension pub.name</code>), the extension is installed, but the publisher is not added to the trusted list.</p> <p>For more information, you can visit the <a href="https://aka.ms/vscode-extension-security" class="external-link" target="_blank">learn more</a> link.</p> <h3 id="_output-panel-filtering" data-needslink="_output-panel-filtering">Output panel filtering</h3> <p>You can now filter the contents of the Output panel, which can greatly improve managing and analyzing logs, especially when you have to deal with large volumes of log data.</p> <p><img src="/assets/updates/1_97/output-view-filtering.png" alt="Screenshot of the Output panel, highlighting the filtering dropdown." loading="lazy"></p> <ul> <li><strong>Filter by Log Level:</strong> Filter logs based on their severity level (for example, Error, Warning, Info). This helps you focus on the most critical issues first.</li> <li><strong>Filter by Category:</strong> Narrow down logs by specific categories, allowing you to isolate logs from particular sources or components. The categories are picked up automatically from the log data.</li> <li><strong>Filter by Text:</strong> Search for specific text within the logs to quickly locate relevant entries.</li> </ul> <h3 id="_compound-logs" data-needslink="_compound-logs">Compound logs</h3> <p>Sometimes you find that information is spread across multiple logs, and you need to view them together to get a complete picture. You can now view multiple logs in a single compound log view. Combine this with the new <a href="#_output-panel-filtering">filtering</a> functionality and analyzing logs has just become much better!</p> <p>To create a custom compound log, use the <strong>Create Compound Log...</strong> action in the overflow menu of the Output panel.</p> <p><video src="/assets/updates/1_97/compound-log.mp4" title="Video showing how to create a compound log that combines the log messages from two other logs." autoplay loop controls muted></video></p> <p>You can also open compound logs in an editor or a new VS Code window for flexible monitoring and analysis. This feature improves your ability to diagnose issues by providing a consolidated view of related logs.</p> <blockquote><p><strong>Note:</strong> Compound log views are currently not persisted across VS Code restarts.</p> </blockquote><h3 id="_export-and-import-logs" data-needslink="_export-and-import-logs">Export and import logs</h3> <p>You can now export and import logs using the actions in the overflow menu of the Output view. This feature enhances collaboration and log management by making it easy to share and review logs.</p> <p>Select the corresponding <strong>Export Logs</strong> or <strong>Import Log</strong> action in the overflow menu of the Output panel to export or import logs.</p> <h3 id="_settings-editor-search-fixes" data-needslink="_settings-editor-search-fixes">Settings editor search fixes</h3> <p>This iteration, we fixed a regression where search queries with missing letters were not showing expected results. For example, the Settings editor was not finding the <span class="setting"><a href="vscode://settings/editor.formatOnPaste" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'editor.formatOnPaste' in Settings Editor"></span></a>editor.formatOnPaste</span> setting when you searched for "editor formonpast".</p> <p>We also fixed an issue where the Settings editor would reveal the table of contents during a search even when it was in a narrow editor group.</p> <p><img src="/assets/updates/1_97/settings-editor-search.png" alt="Screenshot of a narrow-width Settings editor, with a search for 'edtor cursstyle' that shows the 'editor.cursorStyle' setting and does not reveal the settings table of contents." loading="lazy"></p> <h3 id="_extension-filter-enhancements" data-needslink="_extension-filter-enhancements">Extension filter enhancements</h3> <p>To help you keep track of extensions that have updates available and to find extensions that were recently updated, you now have two new filter options in the Extensions view: <code>@outdated</code> and <code>@recentlyUpdated</code>.</p> <p><img src="/assets/updates/1_97/extension-filters.png" alt="Screenshot of the filtering options in the Extension view, highlighting the 'outdated' and 'recentlyUpdated' options." loading="lazy"></p> <h3 id="_svg-image-preview-support" data-needslink="_svg-image-preview-support">SVG image preview support</h3> <p>The built-in image preview now has basic support for previewing SVG files.</p> <p><img src="/assets/updates/1_97/image-svg-preview.png" alt="Screenshot that shows the default preview of an SVG image in VS Code." loading="lazy"></p> <p>Check out the <a href="https://marketplace.visualstudio.com/" class="external-link" target="_blank">Visual Studio Marketplace</a> for more advanced SVG preview extensions.</p> <h3 id="_remove-a-root-folder-from-a-workspace-from-the-cli" data-needslink="_remove-a-root-folder-from-a-workspace-from-the-cli">Remove a root folder from a workspace from the CLI</h3> <p>Previously, you could already add a root folder to a <a href="https://code.visualstudio.com/docs/editor/workspaces/multi-root-workspaces">multi-root workspace</a> by using the <code>--add</code> <a href="https://code.visualstudio.com/docs/editor/command-line#_advanced-cli-options">command-line</a> option.</p> <p>We've now also added the ability to remove a root folder from a multi-root workspace with the new <code>--remove</code> command-line option.</p> <pre class="shiki" style="background-color: #1e1e1e"><code><span class="line"><span style="color: #BBBBBB">code --remove /path/to/rootfolder</span></span> <span class="line"></span></code></pre> <h2 id="_editor" data-needslink="_editor">Editor</h2> <h3 id="_persist-find-and-replace-history" data-needslink="_persist-find-and-replace-history">Persist find and replace history</h3> <p>Last milestone, we introduced history persistence to the editor find control. In this milestone, we are extending that further to the replace input control, so that you can maintain both separately across multiple sessions. The replace history is stored per workspace and can be disabled via the <span class="setting"><a href="vscode://settings/editor.find.replaceHistory" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'editor.find.replaceHistory' in Settings Editor"></span></a>editor.find.replaceHistory</span> setting.</p> <p><video src="/assets/updates/1_97/replace-history.mp4" title="Video showing the persistence of editor replace history across VS Code reloads." autoplay loop controls muted></video></p> <h3 id="_comments" data-needslink="_comments">Comments</h3> <h4 id="_confirmation-when-closing-an-unsubmitted-comment" data-needslink="_confirmation-when-closing-an-unsubmitted-comment">Confirmation when closing an un-submitted comment</h4> <p>A confirmation dialog will show when you <code>esc</code> or otherwise close a comment control that has un-submitted comments. You can disable this confirmation with the setting <span class="setting"><a href="vscode://settings/comments.thread.confirmOnCollapse" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'comments.thread.confirmOnCollapse' in Settings Editor"></span></a>comments.thread.confirmOnCollapse</span>.</p> <h4 id="_quick-actions-in-the-comment-editor" data-needslink="_quick-actions-in-the-comment-editor">Quick actions in the comment editor</h4> <p>Quick actions can be used from the comments editor.</p> <p><img src="/assets/updates/1_97/quick-actions-in-comment.gif" alt="Screenshot that shows Quick actions in the Comments editor." loading="lazy"></p> <h2 id="_source-control" data-needslink="_source-control">Source Control</h2> <h3 id="_git-blame-information" data-needslink="_git-blame-information">Git blame information</h3> <p>This milestone, we continued to polish the feature to display git blame information in the editor and in the Status Bar. We have also improved the information that is shown when you hover over the editor decoration or the Status Bar item.</p> <p><img src="/assets/updates/1_97/scm-git-blame.png" alt="Screenshot that shows Git blame information when hovering over the git blame item in the Status Bar." loading="lazy"></p> <p>The git blame Status Bar item is now enabled by default, and you can disable it by using the <span class="setting"><a href="vscode://settings/git.blame.statusBarItem.enabled" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'git.blame.statusBarItem.enabled' in Settings Editor"></span></a>git.blame.statusBarItem.enabled</span> setting. Enable the git blame editor decoration with the <span class="setting"><a href="vscode://settings/git.blame.editorDecoration.enabled" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'git.blame.editorDecoration.enabled' in Settings Editor"></span></a>git.blame.editorDecoration.enabled</span> setting.</p> <p>We have also added commands to easily toggle the git blame information by using the Command Palette or by using keybindings: <strong>Git: Toggle Git Blame Editor Decoration</strong> and <strong>Git: Toggle Git Blame Status Bar Item</strong>.</p> <h3 id="_github-repositories" data-needslink="_github-repositories">GitHub repositories</h3> <p>For repositories that are hosted on GitHub, we have added a new command, <strong>Open on GitHub</strong>, to the timeline context menu and hover, the Source Control Graph context menu and hover, and the git blame editor decoration and Status Bar item hover.</p> <p><img src="/assets/updates/1_97/scm-graph-hover.png" alt="Screenshot of the Source Control history item hover, highlighting the Open on GitHub link." loading="lazy"></p> <p>GitHub issue and pull request references are rendered as links in the timeline, Source Control Graph, and git blame editor decoration and Status Bar item hovers, so that they can be easily opened in a browser.</p> <p>Last but not least, we also added the GitHub avatar in the timeline, Source Control Graph, and git blame editor decoration and Status Bar item hovers. Disable the rendering of the GitHub avatar by using the <span class="setting"><a href="vscode://settings/github.showAvatar" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'github.showAvatar' in Settings Editor"></span></a>github.showAvatar</span> setting.</p> <h3 id="_source-control-graph-actions" data-needslink="_source-control-graph-actions">Source Control Graph actions</h3> <p>We have expanded the functionality of the Source Control Graph view by adding actions scoped to a history item reference (for example, branch tag) to the context menu. The first actions that we added are <strong>Checkout</strong>, <strong>Delete Branch</strong>, and <strong>Delete Tag</strong> that allow you to easily check out a branch/tag, delete a branch, and delete a tag directly from the Source Control Graph view.</p> <p>We are planning to add more actions in the upcoming milestones.</p> <h2 id="_notebooks" data-needslink="_notebooks">Notebooks</h2> <h3 id="_inline-values-upon-cell-execution" data-needslink="_inline-values-upon-cell-execution">Inline values upon cell execution</h3> <p>The notebook editor now supports showing inline values after cell execution with the setting <span class="setting"><a href="vscode://settings/notebook.inlineValues" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'notebook.inlineValues' in Settings Editor"></span></a>notebook.inlineValues</span>. When enabled, after a successful cell execution, inline values are displayed according to the results of a registered <code>InlineValueProvider</code>.</p> <p>If there's no provider, the fallback approach matches values found in the kernel against the cell document via simple regex matching. It's recommended to use a provider from a language extension to ensure more accurate results.</p> <p><img src="/assets/updates/1_97/nb-inline-values.png" alt="Screenshot that shows inline values after cell execution in the notebook editor." loading="lazy"></p> <h3 id="_custom-font-family-for-markdown-cells" data-needslink="_custom-font-family-for-markdown-cells">Custom font family for Markdown cells</h3> <p>The notebook editor now supports setting a custom font family for rendered Markdown cells. This can be controlled with the <span class="setting"><a href="vscode://settings/notebook.markup.fontFamily" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'notebook.markup.fontFamily' in Settings Editor"></span></a>notebook.markup.fontFamily</span> setting. When left blank, the default workbench font family is used.</p> <p><img src="/assets/updates/1_97/markdown-cell-font-family.png" alt="Screenshot that shows a custom font for rendered Markdown cells." loading="lazy"></p> <h2 id="_terminal" data-needslink="_terminal">Terminal</h2> <h3 id="_ligature-support" data-needslink="_ligature-support">Ligature support</h3> <p>This feature is now considered stable. Here is a summary of the changes since the last version:</p> <ul> <li>The enablement setting changed from <code>terminal.integrated.fontLigatures</code> to <span class="setting"><a href="vscode://settings/terminal.integrated.fontLigatures.enabled" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'terminal.integrated.fontLigatures.enabled' in Settings Editor"></span></a>terminal.integrated.fontLigatures.enabled</span>.</li> <li>Ligatures are now temporarily disabled while the cursor or the selection is within the ligature.</li> <li>Use <span class="setting"><a href="vscode://settings/terminal.integrated.fontLigatures.featureSettings" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'terminal.integrated.fontLigatures.featureSettings' in Settings Editor"></span></a>terminal.integrated.fontLigatures.featureSettings</span> to set ligature sets and variants. This is passed on to the <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/font-feature-settings" class="external-link" target="_blank"><code>font-feature-settings</code></a> CSS property behind the scenes.</li> <li>Use <span class="setting"><a href="vscode://settings/terminal.integrated.fontLigatures.fallbackLigatures" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'terminal.integrated.fontLigatures.fallbackLigatures' in Settings Editor"></span></a>terminal.integrated.fontLigatures.fallbackLigatures</span> to set ligature sequences manually when the library that we use to parse ligatures is not supported.</li> </ul> <h3 id="_support-for-conemus-progress-escape-sequences" data-needslink="_support-for-conemus-progress-escape-sequences">Support for ConEmu's progress escape sequences</h3> <p>The <code>ESC ] 9 ; 4</code> escape sequence pioneered by ConEmu that reports progress in the terminal is now supported. This is used by some CLI tools such as <code>winget</code> to report progress. To view the progress in terminal tabs, add <code>${progress}</code> to either <span class="setting"><a href="vscode://settings/terminal.integrated.tabs.title" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'terminal.integrated.tabs.title' in Settings Editor"></span></a>terminal.integrated.tabs.title</span> or <span class="setting"><a href="vscode://settings/terminal.integrated.tabs.description" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'terminal.integrated.tabs.description' in Settings Editor"></span></a>terminal.integrated.tabs.description</span>. This typically shows as a progress spinner or as a percentage.</p> <p><video src="/assets/updates/1_97/terminal-progress.mp4" title="Video showing a progress indicator in the terminal title while running a 'winget' command." autoplay loop controls muted></video></p> <h3 id="_sticky-scroll-for-truncated-commands" data-needslink="_sticky-scroll-for-truncated-commands">Sticky Scroll for truncated commands</h3> <p>Sticky Scroll in the terminal (<span class="setting"><a href="vscode://settings/terminal.integrated.stickyScroll.enabled" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'terminal.integrated.stickyScroll.enabled' in Settings Editor"></span></a>terminal.integrated.stickyScroll.enabled</span>) now shows when a command is truncated with an ellipsis at the end:</p> <p><img src="/assets/updates/1_97/terminal-sticky-scroll-ellipsis.png" alt="Screenshot that shows an ellipsis at the end of a command in Sticky Scroll when it is truncated." loading="lazy"></p> <h3 id="_configure-the-behavior-when-the-last-terminal-closes" data-needslink="_configure-the-behavior-when-the-last-terminal-closes">Configure the behavior when the last terminal closes</h3> <p>The new <span class="setting"><a href="vscode://settings/terminal.integrated.hideOnLastClosed" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'terminal.integrated.hideOnLastClosed' in Settings Editor"></span></a>terminal.integrated.hideOnLastClosed</span> setting allows configuring whether the panel will be closed when the last terminal has been closed. Along with this, the experience when there is no terminal open has been improved.</p> <h2 id="_tasks" data-needslink="_tasks">Tasks</h2> <h3 id="_column-number-variable" data-needslink="_column-number-variable">Column number variable</h3> <p>The new <code>${columnNumber}</code> variable can be used in <a href="https://code.visualstudio.com/docs/editor/tasks"><code>tasks.json</code></a> and <a href="https://code.visualstudio.com/docs/editor/debugging#_launch-configurations"><code>launch.json</code></a> to refer to the column number of the cursor position. See the full list of <a href="https://code.visualstudio.com/docs/editor/variables-reference">variables</a> in the VS Code documentation.</p> <h2 id="_debug" data-needslink="_debug">Debug</h2> <h3 id="_filter-and-search-on-values" data-needslink="_filter-and-search-on-values">Filter and search on values</h3> <p>You can now search within a view (<span class="dynamic-keybinding" data-commandId="list.find" data-osx="⌥⌘F" data-win="Ctrl+Alt+F" data-linux="Ctrl+Alt+F"><span class="keybinding">⌥⌘F</span> (Windows, Linux <span class="keybinding">Ctrl+Alt+F</span>)</span>) in the Variables and Watch views to filter on variable and expression values, rather than just names.</p> <p><img src="/assets/updates/1_97/debug-search-values.png" alt="Screenshot that shows the search control in the Variables view when debugging." loading="lazy"></p> <h3 id="_select-in-the-debug-console" data-needslink="_select-in-the-debug-console">Select in the Debug Console</h3> <p>The Debug Console now supports longer and more reliable content selection, allowing easier copy and paste.</p> <h3 id="_javascript-debugger" data-needslink="_javascript-debugger">JavaScript debugger</h3> <p>Scripts can now be <em>pretty printed</em> by using the <strong>Debug: Pretty print for debugging</strong> command from the command palette or editor actions, even when they are not the source the debugger is currently paused in.</p> <h2 id="_languages" data-needslink="_languages">Languages</h2> <h3 id="_typescript-573" data-needslink="_typescript-573">TypeScript 5.7.3</h3> <p>This release includes the <a href="https://github.com/microsoft/typescript/issues?q=is%3Aissue%20state%3Aclosed%20%20milestone%3A%22TypeScript%205.7.3%22" class="external-link" target="_blank">TypeScript 5.7.3</a> recovery release. This minor update fixes a few import bugs and regressions.</p> <h3 id="_right-click-to-open-images-from-the-markdown-preview" data-needslink="_right-click-to-open-images-from-the-markdown-preview">Right click to open images from the Markdown preview</h3> <p>You can now right click on a workspace image in the Markdown preview and select <strong>Open Image</strong> to open it in a new editor.</p> <p><img src="/assets/updates/1_97/md-preview-open-image.png" alt="Screenshot that shows the context menu option to open an image in the Markdown preview." loading="lazy"></p> <p>This is supported for any images that are part of the current workspace.</p> <h3 id="_markdown-link-validation-status-item" data-needslink="_markdown-link-validation-status-item">Markdown link validation status item</h3> <p>VS Code's built-in Markdown features support automatically <a href="https://code.visualstudio.com/docs/languages/markdown#_link-validation">validating local links to files and images</a>. This is a great way to catch common mistakes, such as linking to a header that was renamed or to a file that no longer exists on disk.</p> <p>To help you discover this feature, we've added a new language status item for link validation:</p> <p><img src="/assets/updates/1_97/md-link-status-item.png" alt="Screenshot that shows the Markdown link validation language status item." loading="lazy"></p> <p>With a Markdown file open, select the <code>{}</code> in the Status Bar to view the link validation status. You can also use the status item to quickly toggle link validation off and on.</p> <h3 id="_new-ruby-syntax-highlighting-grammar" data-needslink="_new-ruby-syntax-highlighting-grammar">New Ruby syntax highlighting grammar</h3> <p>We've moved away from the old, unmaintained, Ruby grammar from <code>textmate/ruby.tmbundle</code> and now get our Ruby grammar from <code>Shopify/ruby-lsp</code>.</p> <h2 id="_remote-development" data-needslink="_remote-development">Remote Development</h2> <p>The <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack" class="external-link" target="_blank">Remote Development extensions</a> allow you to use a <a href="https://code.visualstudio.com/docs/devcontainers/containers">Dev Container</a>, remote machine via SSH or <a href="https://code.visualstudio.com/docs/remote/tunnels">Remote Tunnels</a>, or the <a href="https://learn.microsoft.com/windows/wsl" class="external-link" target="_blank">Windows Subsystem for Linux</a> (WSL) as a full-featured development environment.</p> <p>Highlights include:</p> <ul> <li>Migration path for connecting to Linux legacy servers</li> <li>SSH Chat participant improvements</li> <li>SSH configuration improvements</li> <li>Default remote extensions for SSH</li> </ul> <p>You can learn more about these features in the <a href="https://github.com/microsoft/vscode-docs/blob/main/remote-release-notes/v1_97.md" class="external-link" target="_blank">Remote Development release notes</a>.</p> <h2 id="_contributions-to-extensions" data-needslink="_contributions-to-extensions">Contributions to extensions</h2> <h3 id="_microsoft-account" data-needslink="_microsoft-account">Microsoft Account</h3> <h4 id="_microsoft-account-now-uses-msal-with-wam-support-on-windows" data-needslink="_microsoft-account-now-uses-msal-with-wam-support-on-windows">Microsoft Account now uses MSAL (with WAM support on Windows)</h4> <blockquote><p>NOTE: Last month's rollout of an MSAL-based authentication for Microsoft needed to be rolled back due to a critical bug. This bug has been squashed and we are proceeding with the rollout.</p> </blockquote><p>In order to ensure a strong security baseline for Microsoft authentication, we've adopted the <a href="https://github.com/AzureAD/microsoft-authentication-library-for-js" class="external-link" target="_blank">Microsoft Authentication Library</a> in the Microsoft Account extension.</p> <p>One of the stand out features of this work is WAM (Web Account Manager... also known as <a href="https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-node/docs/brokering.md" class="external-link" target="_blank">Broker</a>) integration. Put simply, rather than going to the browser for Microsoft authentication flows, we now talk to the OS directly, which is the recommended way of acquiring a Microsoft authentication session. Additionally, it's faster since we're able to leverage the accounts that you're already logged into on the OS.</p> <p><img src="/assets/updates/1_97/showingBrokerOSDialog.png" alt="Screenshot that shows an authentication popup that the OS shows over VS Code." loading="lazy"></p> <p>Let us know if you see any issues with this new flow. If you do see a major issue and need to revert back to the old Microsoft authentication behavior, you can do so with <span class="setting"><a href="vscode://settings/microsoft-authentication.implementation" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'microsoft-authentication.implementation' in Settings Editor"></span></a>microsoft-authentication.implementation</span> (setting it to <code>classic</code>, and restarting VS Code) but do keep in mind that this setting won't be around for much longer. So, open an issue if you are having trouble with the MSAL flow.</p> <h3 id="_python" data-needslink="_python">Python</h3> <h4 id="_launch-native-repl-from-the-terminal" data-needslink="_launch-native-repl-from-the-terminal">Launch native REPL from the terminal</h4> <p>You are now able to launch a VS Code Native REPL from your REPL in the terminal. Setting <span class="setting"><a href="vscode://settings/python.terminal.shellIntegration.enabled" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'python.terminal.shellIntegration.enabled' in Settings Editor"></span></a>python.terminal.shellIntegration.enabled</span> to <code>true</code> should display a clickable link in the Python REPL in the terminal, allowing you to directly open the VS Code Native REPL from the terminal.</p> <p><video src="/assets/updates/1_97/native-repl-link.mp4" title="Video showing the Native REPL entry point link in terminal REPL." autoplay loop controls muted></video></p> <h4 id="_no-config-debug" data-needslink="_no-config-debug">No config debug</h4> <p>You are now able to debug a Python script or module without setup, right from the terminal as part of the new no-config debug feature! Check out the <a href="https://github.com/microsoft/vscode-python-debugger/wiki/No%E2%80%90Config-Debugging" class="external-link" target="_blank">wiki page</a> on the feature for all the details and troubleshooting tips.</p> <p><video src="/assets/updates/1_97/no-config-debug.mp4" title="Video showing the no-config debug feature for Python." autoplay loop controls muted></video></p> <h4 id="_test-discovery-cancellation" data-needslink="_test-discovery-cancellation">Test discovery cancellation</h4> <p>When triggering test discovery from the Test Explorer UI, you can now cancel an ongoing test discovery call. Use the Cancel button, which appears in replacement of the Refresh button during discovery.</p> <p><img src="/assets/updates/1_97/test-discovery-cancelation.png" alt="Screenshot that shows the Test Explorer, highlighting the Cancel button to cancel the test discovery." loading="lazy"></p> <h4 id="_go-to-implementation" data-needslink="_go-to-implementation">Go to Implementation</h4> <p><a href="https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance" class="external-link" target="_blank">Pylance</a> now has support for <strong>Go to Implementation</strong>, which allows you to more quickly navigate to the implementation of a function or method directly from its usage. This is a particularly helpful feature when working with inherited classes.</p> <p><img src="/assets/updates/1_97/pylance-go-to-implementation.png" alt="Screenshot that shows the Go to Implementation displayed via the context menu" loading="lazy"></p> <h4 id="_ai-code-action-generate-symbol-experimental" data-needslink="_ai-code-action-generate-symbol-experimental">AI Code Action: Generate Symbol (Experimental)</h4> <p>There's a new experimental AI Code Action for generating symbols with Pylance and Copilot. To try it out, you can enable the following setting:</p> <pre class="shiki" style="background-color: #1e1e1e"><code><span class="line"><span style="color: #bbbbbb">"python.analysis.aiCodeActions": {"generateSymbol": true}</span></span> <span class="line"><span style="color: #bbbbbb"></span></span></code></pre> <p>Then once you define a new symbol, for example, a class or a function, you can select the <strong>Generate Symbol with Copilot</strong> Code Action and let Copilot handle the implementation! If you want, you can then leverage Pylance's <strong>Move Symbol</strong> Code Actions to move it to a different file.</p> <p><video src="/assets/updates/1_97/pylance-create-symbol-with-copilot.mp4" title="Video showing invoking a new class that doesn't exist and then selecting the 'Create Class With Copilot' code action to implement a new class." autoplay loop controls muted></video></p> <h3 id="_github-pull-requests-and-issues" data-needslink="_github-pull-requests-and-issues">GitHub Pull Requests and Issues</h3> <p>There has been more progress on the <a href="https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github" class="external-link" target="_blank">GitHub Pull Requests</a> extension, which enables you to work on, create, and manage pull requests and issues. New features include:</p> <ul> <li>Global pull request queries, with a variable to specify a time range relative to today (<code>${today-7d}</code>).</li> <li><code>:<emoji-name>:</code> style emojis are now supported in comments.</li> <li>All non-outdated comments will show in the Comments panel when you open the description of an un-checked out pull request.</li> </ul> <p>Review the <a href="https://github.com/microsoft/vscode-pull-request-github/blob/main/CHANGELOG.md#01040" class="external-link" target="_blank">changelog for the 0.104.0</a> release of the extension to learn about the other highlights.</p> <h2 id="_preview-features" data-needslink="_preview-features">Preview Features</h2> <h3 id="_agent-mode-experimental" data-needslink="_agent-mode-experimental">Agent mode (Experimental)</h3> <p>We've been working on a new <em>agent mode</em> for Copilot Edits. When in agent mode, Copilot can automatically search your workspace for relevant context, edit files, check them for errors, and run terminal commands (with your permission) to complete a task end-to-end.</p> <p><img src="/assets/updates/1_97/agent-mode.png" alt="Screenshot that shows agent mode in the Copilot Edits view." loading="lazy"></p> <p>You can switch between the current edit mode that we've had for a few months and agent mode with the dropdown in the Copilot Edits view. To see the dropdown, enable the <span class="setting"><a href="vscode://settings/chat.agent.enabled" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'chat.agent.enabled' in Settings Editor"></span></a>chat.agent.enabled</span> setting. You can start using agent mode in <a href="https://code.visualstudio.com/insiders/">VS Code Insiders</a> today. We will gradually be rolling it out to VS Code Stable users. If the setting doesn't show up for you in Stable, then it isn't enabled for you yet.</p> <p><img src="/assets/updates/1_97/agent-setting.png" alt="Screenshot of the agent mode setting in the Settings editor." loading="lazy"></p> <p>In agent mode, Copilot runs autonomously, but it can only edit files within your current workspace. When it wants to run a terminal command, it shows you the command and waits for you to review it and select Continue before proceeding.</p> <blockquote><p><strong>Note</strong>: Copilot Edits may use many chat requests in agent mode, so it will periodically pause and ask you whether to continue. You can customize this with <span class="setting"><a href="vscode://settings/chat.agent.maxRequests" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'chat.agent.maxRequests' in Settings Editor"></span></a>chat.agent.maxRequests</span>. This defaults to 15 for Copilot paid users, and 5 for Copilot Free users.</p> </blockquote><p>Learn more about <a href="https://code.visualstudio.com/docs/copilot/copilot-customization#_use-agent-mode-preview">agent mode in Copilot Edits</a> in the VS Code documentation.</p> <h3 id="_agentic-codebase-search-preview" data-needslink="_agentic-codebase-search-preview">Agentic codebase search (Preview)</h3> <p>You can add <code>#codebase</code> to your query and Copilot Edits will discover relevant files for your task. We've added experimental support for discovering relevant files using additional tools like file and text search, Git repository state, and directory reads. Previously, <code>#codebase</code> only performed semantic search.</p> <p>You can enable it with <span class="setting"><a href="vscode://settings/github.copilot.chat.edits.codesearch.enabled" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'github.copilot.chat.edits.codesearch.enabled' in Settings Editor"></span></a>github.copilot.chat.edits.codesearch.enabled</span>, and please <a href="https://github.com/microsoft/vscode-copilot-release" class="external-link" target="_blank">share any feedback</a> with us.</p> <h3 id="_copilot-vision-in-vs-code-insiders-preview" data-needslink="_copilot-vision-in-vs-code-insiders-preview">Copilot Vision in VS Code Insiders (Preview)</h3> <p>We're introducing end-to-end vision support in the pre-release version of GitHub Copilot Chat in <a href="https://code.visualstudio.com/insiders/">VS Code Insiders</a>. This lets you attach images and interact with images in Copilot Chat prompts. For example, if you're encountering an error while debugging, quickly attach a screenshot of VS Code and ask Copilot to help you resolve the issue.</p> <p><img src="/assets/updates/1_97/image-attachments.gif" alt="Screenshot that shows an attached image in a Copilot Chat prompt. Hovering over the image shows a preview of it." loading="lazy"></p> <p>You can now attach images using several methods:</p> <ul> <li>Drag and drop images from your OS or from the Explorer view</li> <li>Paste an image from the clipboard</li> <li>Attach a screenshot of the VS Code window (select Attach > Screenshot Window)</li> </ul> <p>A warning is shown if the selected model currently does not have the capability to handle images. The only supported model at the moment will be <code>GPT 4o</code>. Currently, the supported image types are <code>JPEG/JPG</code>, <code>PNG</code>, <code>GIF</code>, and <code>WEBP</code>.</p> <h3 id="_reusable-prompts-experimental" data-needslink="_reusable-prompts-experimental">Reusable prompts (Experimental)</h3> <p>This feature lets you build, store, and share reusable prompts. A prompt file is a <code>.prompt.md</code> Markdown file that follows the same format used for writing prompts in Copilot Chat, and it can link to other files or even other prompts. You can attach prompt files for task-specific guidance, aid with code generation, or keep complete prompts for later use.</p> <p>To enable prompt files, set <span class="setting"><a href="vscode://settings/chat.promptFiles" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'chat.promptFiles' in Settings Editor"></span></a>chat.promptFiles</span> to <code>true</code>, or use the <code>{ "/path/to/folder": boolean }</code> notation to specify a different path. The <code>.github/prompts</code> folder is used by default to locate prompt files (<code>*.prompt.md</code>), if no other path is specified.</p> <p>Learn more about <a href="https://aka.ms/vscode-ghcp-prompt-snippets" class="external-link" target="_blank">prompt files</a> in the VS Code documentation.</p> <h3 id="_custom-title-bar-on-linux-experimental" data-needslink="_custom-title-bar-on-linux-experimental">Custom title bar on Linux (Experimental)</h3> <p>This milestone, we are starting an experiment to enable the custom title bar for a subset of Linux users.</p> <p><img src="/assets/updates/1_97/custom-title.png" alt="Screenshot that shows the custom VS Code title bar on Linux." loading="lazy"></p> <p>If you are not part of the experiment, you can manually configure <span class="setting"><a href="vscode://settings/window.titleBarStyle" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'window.titleBarStyle' in Settings Editor"></span></a>window.titleBarStyle</span> as <code>custom</code> to try it out.</p> <p>You can always revert back to the native title decorations, either from the custom title context menu or by configuring <span class="setting"><a href="vscode://settings/window.titleBarStyle" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'window.titleBarStyle' in Settings Editor"></span></a>window.titleBarStyle</span> to <code>native</code>.</p> <p><img src="/assets/updates/1_97/restore-title.png" alt="Screenshot that shows the content menu option to disable the custom title bar on Linux." loading="lazy"></p> <h3 id="_typescript-58-beta-support" data-needslink="_typescript-58-beta-support">TypeScript 5.8 beta support</h3> <p>This release includes support for the TypeScript 5.8 beta release. Check out the <a href="https://devblogs.microsoft.com/typescript/announcing-typescript-5-8-beta/" class="external-link" target="_blank">TypeScript 5.8 blog post</a> for details on what's in store for this release.</p> <p>To start using preview builds of TypeScript 5.8, install the <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-typescript-next" class="external-link" target="_blank">TypeScript Nightly extension</a>. Share your feedback and let us know if you run into any bugs with TypeScript 5.8.</p> <h3 id="_terminal-completions-for-more-shells" data-needslink="_terminal-completions-for-more-shells">Terminal completions for more shells</h3> <p>We have iterated on the general terminal completions that <a href="https://code.visualstudio.com/updates/v1_96#_terminal-completions-for-more-shells">were introduced in the last version</a> that are built on our new proposed API. Once enabled with <span class="setting"><a href="vscode://settings/terminal.integrated.suggest.enabled" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'terminal.integrated.suggest.enabled' in Settings Editor"></span></a>terminal.integrated.suggest.enabled</span>, the new completions now replace the previous built-in provider for PowerShell but can now be customized with <span class="setting"><a href="vscode://settings/terminal.integrated.suggest.providers" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'terminal.integrated.suggest.providers' in Settings Editor"></span></a>terminal.integrated.suggest.providers</span>.</p> <p>Here are the key updates this release:</p> <ul> <li>Enhanced widget styling and configuration to align with the editor's suggest widget.</li> <li>A configurable status bar (<span class="setting"><a href="vscode://settings/terminal.integrated.suggest.showStatusBar" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'terminal.integrated.suggest.showStatusBar' in Settings Editor"></span></a>terminal.integrated.suggest.showStatusBar</span>) provides contextual actions and information.</li> <li>Improved argument awareness for commands, including: <code>code</code>, <code>code-insiders</code>, <code>cd</code>, <code>ls</code>, <code>rm</code>, <code>echo</code>, <code>mkdir</code>, <code>rmdir</code>, <code>touch</code>.</li> <li>Displays command or resource paths as additional details.</li> <li>Added support for directory navigation shortcuts like <code>.</code>, <code>..</code>, and <code>../../</code>.</li> <li>Enabled screen reader usage.</li> <li>Entries pulled from the <code>$PATH</code> will now only show when they are executable files. Since Windows does not have the concept of an executable bit in file metadata, the list of extensions can be configured with <span class="setting"><a href="vscode://settings/terminal.integrated.suggest.windowsExecutableExtensions" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'terminal.integrated.suggest.windowsExecutableExtensions' in Settings Editor"></span></a>terminal.integrated.suggest.windowsExecutableExtensions</span>. These now also use the actual shell environment when available using an upcoming proposed API.</li> <li>Enhanced keyboard support to toggle details, <span class="dynamic-keybinding" data-commandId="workbench.action.terminal.suggestToggleDetails" data-osx="⌃Space" data-win="Ctrl+Space" data-linux="Ctrl+Space"><span class="keybinding">⌃Space</span> (Windows, Linux <span class="keybinding">Ctrl+Space</span>)</span> and toggle suggest details focus <span class="dynamic-keybinding" data-commandId="workbench.action.terminal.suggestToggleDetailsFocus" data-osx="⌃⌥Space" data-win="Ctrl+Alt+Space" data-linux="Ctrl+Alt+Space"><span class="keybinding">⌃⌥Space</span> (Windows, Linux <span class="keybinding">Ctrl+Alt+Space</span>)</span>.</li> <li>Suggestions will now always be on every type, aligning closer to how quick suggestions work in the editor.</li> <li>PowerShell-specific global completions such as <code>Get-ChildItem</code>, <code>Write-Host</code>, etc. will now be suggested.</li> </ul> <h3 id="_treesitter-based-syntax-highlighting-for-typescript" data-needslink="_treesitter-based-syntax-highlighting-for-typescript">Tree-Sitter based syntax highlighting for typescript</h3> <p>Since many of our Textmate grammars are no longer maintained, we've been investigating using Tree-Sitter for syntax highlighting. We've started with TypeScript so the team can selfhost it and provide feedback. You can try out an early preview it out with the <span class="setting"><a href="vscode://settings/editor.experimental.preferTreeSitter" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'editor.experimental.preferTreeSitter' in Settings Editor"></span></a>editor.experimental.preferTreeSitter</span> setting.</p> <h2 id="_extension-authoring" data-needslink="_extension-authoring">Extension Authoring</h2> <h3 id="_document-paste-api" data-needslink="_document-paste-api">Document paste API</h3> <p>The document paste API allows extensions to hook into copy/paste operations in text documents. Using this API, your extension can:</p> <ul> <li> <p>On copy, write data to the clipboard. This includes writing metadata that the can be picked up on paste.</p> </li> <li> <p>On paste, generate a custom edit that applies the paste. This can change the text content being pasted or make more complex workspace edits, such as creating new files.</p> </li> <li> <p>Provide multiple ways that content can be pasted. Users can select how content should be pasted using the paste control or with the <code>editor.pasteAs.preferences</code> setting.</p> </li> </ul> <p>VS Code uses the document paste API to implement features such as <a href="https://code.visualstudio.com/updates/v1_95#_update-imports-on-paste-for-javascript-and-typescript">updating imports on paste for JavaScript and TypeScript</a> and <a href="https://code.visualstudio.com/updates/v1_81#_markdown-paste-urls-as-formatted-links">automatically creating Markdown links when pasting URLs</a>.</p> <p>To get started with the document paste API, check out the <a href="https://github.com/microsoft/vscode-extension-samples/tree/main/document-paste" class="external-link" target="_blank">document paste extension sample</a>. For a more complex example, check out how the built-in Markdown extension <a href="https://github.com/microsoft/vscode/blob/8237317c2ff4d0a3dadfaeb67cd35630cf1a6b75/extensions/markdown-language-features/src/languageFeatures/copyFiles/dropOrPasteResource.ts#L31" class="external-link" target="_blank">implements pasting of image files</a> to insert images into Markdown documents.</p> <h3 id="_file-openlabel-shows-in-the-simple-file-picker" data-needslink="_file-openlabel-shows-in-the-simple-file-picker">File <code>openLabel</code> shows in the simple file picker</h3> <p>The <code>openLabel</code> property in the <code>OpenDialogOptions</code> is now supported in the <a href="https://code.visualstudio.com/docs/getstarted/tips-and-tricks#_simple-file-dialog">simple file picker</a> (in addition to the system file picker, where it was previously exclusively supported). This allows you to provide a custom label for the button in the file picker.</p> <h3 id="_filelevel-comments-api" data-needslink="_filelevel-comments-api">File-level comments API</h3> <p>The comments API supports making and showing file-level comments. File-level comments show at the top of the file, before the first line. They are not attached to a specific line or range in the file. To show a file-level comment, set the <code>range</code> of the comment to <code>undefined</code>. To support leaving file-level comments from your commenting range provider, set the <code>enableFileComments</code> property on your <code>CommentingRangeProvider</code> to <code>true</code>.</p> <h2 id="_proposed-apis" data-needslink="_proposed-apis">Proposed APIs</h2> <h3 id="_terminal-completion-provider" data-needslink="_terminal-completion-provider">Terminal completion provider</h3> <p>You can now <a href="https://github.com/microsoft/vscode/blob/8d5f6f0050af2abde8c9977f1a269ef6eade6915/src/vscode-dts/vscode.proposed.terminalCompletionProvider.d.ts#L79-L87" class="external-link" target="_blank">register a terminal completion provider</a> and let us know what you think <a href="https://github.com/microsoft/vscode/issues/226562" class="external-link" target="_blank">in this GitHub issue</a>.</p> <p>An example of this can be found in our terminal suggest extension, which provides completions when enabled via <span class="setting"><a href="vscode://settings/terminal.integrated.suggest.enabled" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'terminal.integrated.suggest.enabled' in Settings Editor"></span></a>terminal.integrated.suggest.enabled</span>.</p> <h3 id="_terminal-shell-type" data-needslink="_terminal-shell-type">Terminal shell type</h3> <p>Extensions will be able to <a href="https://github.com/microsoft/vscode/blob/8d5f6f0050af2abde8c9977f1a269ef6eade6915/src/vscode-dts/vscode.proposed.terminalShellType.d.ts" class="external-link" target="_blank">access currently active shell type information</a>. The <code>shellType</code> field will be part of <code>TerminalState</code>.</p> <p>Use this shell type information to perform shell-specific operations that you need.</p> <h2 id="_engineering" data-needslink="_engineering">Engineering</h2> <h3 id="_housekeeping" data-needslink="_housekeeping">Housekeeping</h3> <p>As part of our annual housekeeping efforts in December, we focused on cleaning up our GitHub issues and pull requests across all repositories. This year, we achieved a net reduction of 3,821 issues and pull requests, ensuring that our backlog remains relevant and manageable.</p> <p>By following our issue cleanup guide, we reviewed and triaged outdated, duplicated, and no longer relevant issues. This helps us maintain an efficient development workflow and focus on improving Visual Studio Code for our users.</p> <p>We appreciate the community’s continued engagement and feedback — your contributions make VS Code better every day! 🚀</p> <p><img src="/assets/updates/1_97/housekeeping.png" alt="Chart that shows the trend of the number of open issues over the last years. The chart shows a steep decline each year during December, the housekeeping month." loading="lazy"></p> <h3 id="_resource-optimization-for-file-watching-in-typescript-workspaces" data-needslink="_resource-optimization-for-file-watching-in-typescript-workspaces">Resource optimization for file watching in TypeScript workspaces</h3> <p>A couple of optimizations have been made to reduce the overhead that file watching has in large TypeScript workspaces (thousands of TypeScript files or projects). Specifically, when opening such a workspace and initializing the watcher, you should no longer see CPU spikes or CPU usage should settle quickly.</p> <p>See this <a href="https://github.com/microsoft/vscode/issues/237351" class="external-link" target="_blank">VS Code issue</a> for more details.</p> <h2 id="_notable-fixes" data-needslink="_notable-fixes">Notable fixes</h2> <ul> <li><a href="https://github.com/microsoft/vscode/issues/160325" class="external-link" target="_blank">160325</a> Suppress terminal launch failure after ctrl+D is pressed</li> <li><a href="https://github.com/microsoft/vscode/issues/230438" class="external-link" target="_blank">230438</a> Support for code page <code>1125</code> aka <code>cp866u</code></li> <li><a href="https://github.com/microsoft/vscode/issues/238577" class="external-link" target="_blank">238577</a> Increase default window size</li> <li><a href="https://github.com/microsoft/vscode/issues/197377" class="external-link" target="_blank">197377</a> workspaceFolder variable substitution in launch.json or tasks.json should use URI for virtual filesystems</li> <li><a href="https://github.com/microsoft/vscode/issues/229857" class="external-link" target="_blank">229857</a> a11y view is blank after running <code>focus comment on line</code></li> </ul> <h2 id="_thank-you" data-needslink="_thank-you">Thank you</h2> <p>Last but certainly not least, a big <em><strong>Thank You</strong></em> to the contributors of VS Code.</p> <h3 id="_issue-tracking" data-needslink="_issue-tracking">Issue tracking</h3> <p>Contributions to our issue tracking:</p> <ul> <li><a href="https://github.com/gjsjohnmurray" class="external-link" target="_blank">@gjsjohnmurray (John Murray)</a></li> <li><a href="https://github.com/IllusionMH" class="external-link" target="_blank">@IllusionMH (Andrii Dieiev)</a></li> <li><a href="https://github.com/RedCMD" class="external-link" target="_blank">@RedCMD (RedCMD)</a></li> <li><a href="https://github.com/albertosantini" class="external-link" target="_blank">@albertosantini (Alberto Santini)</a></li> <li><a href="https://github.com/starball5" class="external-link" target="_blank">@starball5 (starball)</a></li> </ul> <h3 id="_pull-requests" data-needslink="_pull-requests">Pull requests</h3> <p>Contributions to <code>vscode</code>:</p> <ul> <li><a href="https://github.com/Abrifq" class="external-link" target="_blank">@Abrifq (Arda Aydın)</a>: Change <code>Create New Terminal</code> to focus accordingly to the terminal location <a href="https://github.com/microsoft/vscode/pull/237404" class="external-link" target="_blank">PR #237404</a></li> <li><a href="https://github.com/adrianstephens" class="external-link" target="_blank">@adrianstephens</a>: custom editor preview <a href="https://github.com/microsoft/vscode/pull/235533" class="external-link" target="_blank">PR #235533</a></li> <li><a href="https://github.com/andrewsuzuki" class="external-link" target="_blank">@andrewsuzuki (Andrew Suzuki)</a>: Fix 'new Color' string typo for editorBracketHighlight.unexpectedBracket.foreground <a href="https://github.com/microsoft/vscode/pull/237236" class="external-link" target="_blank">PR #237236</a></li> <li><a href="https://github.com/aslezar" class="external-link" target="_blank">@aslezar (Shivam Garg)</a> <ul> <li>Fix incorrect GLIBC version parsing <a href="https://github.com/microsoft/vscode/pull/236082" class="external-link" target="_blank">PR #236082</a></li> <li>feat: support custom js switch-case indentation <a href="https://github.com/microsoft/vscode/pull/237069" class="external-link" target="_blank">PR #237069</a></li> </ul> </li> <li><a href="https://github.com/atreids" class="external-link" target="_blank">@atreids (Aaron Donaldson)</a>: chore: fix typo in VSIX progress notification <a href="https://github.com/microsoft/vscode/pull/238845" class="external-link" target="_blank">PR #238845</a></li> <li><a href="https://github.com/BABA983" class="external-link" target="_blank">@BABA983 (BABA)</a>: Resolve custom editor with canonical resource <a href="https://github.com/microsoft/vscode/pull/226614" class="external-link" target="_blank">PR #226614</a></li> <li><a href="https://github.com/congyuandong" class="external-link" target="_blank">@congyuandong (scott)</a>: fix: remove duplicate <code>!**/*.mk</code> entry in dependenciesSrc <a href="https://github.com/microsoft/vscode/pull/236683" class="external-link" target="_blank">PR #236683</a></li> <li><a href="https://github.com/DetachHead" class="external-link" target="_blank">@DetachHead</a>: remove <code>javascript.inlayHints.enumMemberValues.enabled</code> because javascript does not have enums <a href="https://github.com/microsoft/vscode/pull/236297" class="external-link" target="_blank">PR #236297</a></li> <li><a href="https://github.com/devm33" class="external-link" target="_blank">@devm33 (Devraj Mehta)</a>: Use Electron fetch or Node fetch for github-authentication to support proxies <a href="https://github.com/microsoft/vscode/pull/238149" class="external-link" target="_blank">PR #238149</a></li> <li><a href="https://github.com/dmitrysonder" class="external-link" target="_blank">@dmitrysonder (Dmitry Sonder)</a>: refactor: use EventType constants for events <a href="https://github.com/microsoft/vscode/pull/236941" class="external-link" target="_blank">PR #236941</a></li> <li><a href="https://github.com/fa0311" class="external-link" target="_blank">@fa0311 (ふぁ)</a>: Fix ${unixTime} Placeholder to Use Full Millisecond Timestamp in markdown.copyFiles.destination <a href="https://github.com/microsoft/vscode/pull/239061" class="external-link" target="_blank">PR #239061</a></li> <li><a href="https://github.com/g122622" class="external-link" target="_blank">@g122622</a>: Scrollbar for File menu is displaying over Open Recent <a href="https://github.com/microsoft/vscode/pull/236998" class="external-link" target="_blank">PR #236998</a></li> <li><a href="https://github.com/gjsjohnmurray" class="external-link" target="_blank">@gjsjohnmurray (John Murray)</a>: Add a Configure option to overflow menu of Open Editors view <a href="https://github.com/microsoft/vscode/pull/237678" class="external-link" target="_blank">PR #237678</a></li> <li><a href="https://github.com/goodmind" class="external-link" target="_blank">@goodmind (andretshurotshka)</a>: Fixes #44237: Add column number in tasks <a href="https://github.com/microsoft/vscode/pull/65264" class="external-link" target="_blank">PR #65264</a></li> <li><a href="https://github.com/HD787" class="external-link" target="_blank">@HD787 (Henry)</a> <ul> <li>Add ${unixTime} Placeholder for markdown.copyFiles.destination Option <a href="https://github.com/microsoft/vscode/pull/238027" class="external-link" target="_blank">PR #238027</a></li> <li>enable typescript commands when only config files are open <a href="https://github.com/microsoft/vscode/pull/238630" class="external-link" target="_blank">PR #238630</a></li> </ul> </li> <li><a href="https://github.com/iamdereky" class="external-link" target="_blank">@iamdereky (Derek Yang)</a>: Fix CSS errors when using HTML escaped quotes <a href="https://github.com/microsoft/vscode/pull/235367" class="external-link" target="_blank">PR #235367</a></li> <li><a href="https://github.com/jakebailey" class="external-link" target="_blank">@jakebailey (Jake Bailey)</a>: Remove paths from tsconfig.base.json <a href="https://github.com/microsoft/vscode/pull/238475" class="external-link" target="_blank">PR #238475</a></li> <li><a href="https://github.com/janajar" class="external-link" target="_blank">@janajar (Jawad Najar)</a>: Fix: When no results in search editor it throws an error <a href="https://github.com/microsoft/vscode/pull/235031" class="external-link" target="_blank">PR #235031</a></li> <li><a href="https://github.com/jaymroy" class="external-link" target="_blank">@jaymroy</a>: Issue: #214481 Add Option to Ignore Code Blocks in Text-to-Speech <a href="https://github.com/microsoft/vscode/pull/235697" class="external-link" target="_blank">PR #235697</a></li> <li><a href="https://github.com/jogibear9988" class="external-link" target="_blank">@jogibear9988 (Jochen Kühner)</a>: support svg's in image preview <a href="https://github.com/microsoft/vscode/pull/237217" class="external-link" target="_blank">PR #237217</a></li> <li><a href="https://github.com/Jules-Bertholet" class="external-link" target="_blank">@Jules-Bertholet (Jules Bertholet)</a>: Support back and forward keys in default shortcuts <a href="https://github.com/microsoft/vscode/pull/237701" class="external-link" target="_blank">PR #237701</a></li> <li><a href="https://github.com/Legend-Master" class="external-link" target="_blank">@Legend-Master (Tony)</a>: Reland fix custom task shell doesn't work without manually passing in "run command" arg/flag <a href="https://github.com/microsoft/vscode/pull/236058" class="external-link" target="_blank">PR #236058</a></li> <li><a href="https://github.com/LemmusLemmus" class="external-link" target="_blank">@LemmusLemmus</a>: Add $ to surrounding pairs in markdown <a href="https://github.com/microsoft/vscode/pull/233981" class="external-link" target="_blank">PR #233981</a></li> <li><a href="https://github.com/leopardracer" class="external-link" target="_blank">@leopardracer (leopardracer)</a>: fix: typos in documentation files <a href="https://github.com/microsoft/vscode/pull/235968" class="external-link" target="_blank">PR #235968</a></li> <li><a href="https://github.com/misode" class="external-link" target="_blank">@misode (Misode)</a>: Fix missing uri to file path conversion when loading json schema <a href="https://github.com/microsoft/vscode/pull/237275" class="external-link" target="_blank">PR #237275</a></li> <li><a href="https://github.com/mohankumarelec" class="external-link" target="_blank">@mohankumarelec (mohanram)</a>: Fixes #236973 <a href="https://github.com/microsoft/vscode/pull/236974" class="external-link" target="_blank">PR #236974</a></li> <li><a href="https://github.com/notoriousmango" class="external-link" target="_blank">@notoriousmango (Seong Min Park)</a>: Add 'open image' context in markdown preview <a href="https://github.com/microsoft/vscode/pull/234649" class="external-link" target="_blank">PR #234649</a></li> <li><a href="https://github.com/numbermaniac" class="external-link" target="_blank">@numbermaniac</a>: Fix typo in InlayHintKind docs <a href="https://github.com/microsoft/vscode/pull/238032" class="external-link" target="_blank">PR #238032</a></li> <li><a href="https://github.com/oltolm" class="external-link" target="_blank">@oltolm (oltolm)</a>: debug: ignore error when stopping a process <a href="https://github.com/microsoft/vscode/pull/236009" class="external-link" target="_blank">PR #236009</a></li> <li><a href="https://github.com/oxcened" class="external-link" target="_blank">@oxcened (Alen Ajam)</a> <ul> <li>fix: set _lastFocusedWidget as undefined on widget blur <a href="https://github.com/microsoft/vscode/pull/234610" class="external-link" target="_blank">PR #234610</a></li> <li>fix: check whether lastFocusedList is valid when assigned <a href="https://github.com/microsoft/vscode/pull/238765" class="external-link" target="_blank">PR #238765</a></li> </ul> </li> <li><a href="https://github.com/pankajk07" class="external-link" target="_blank">@pankajk07 (Pankaj Khandelwal)</a>: fix: synchronous script loading from web workers of extensions <a href="https://github.com/microsoft/vscode/pull/233175" class="external-link" target="_blank">PR #233175</a></li> <li><a href="https://github.com/Parasaran-Python" class="external-link" target="_blank">@Parasaran-Python (Parasaran)</a> <ul> <li>fix 227150: Added a recursive git clone button <a href="https://github.com/microsoft/vscode/pull/232497" class="external-link" target="_blank">PR #232497</a></li> <li>fix 235221: Sanitizing the html content by closing the unclosed tags <a href="https://github.com/microsoft/vscode/pull/236145" class="external-link" target="_blank">PR #236145</a></li> </ul> </li> <li><a href="https://github.com/r3m0t" class="external-link" target="_blank">@r3m0t (Tomer Chachamu)</a>: Fix revealing a notebook cell from the debugger stopping and revealing active statement (Fixes #225290) <a href="https://github.com/microsoft/vscode/pull/225292" class="external-link" target="_blank">PR #225292</a></li> <li><a href="https://github.com/rcjsuen" class="external-link" target="_blank">@rcjsuen (Remy Suen)</a>: Fix typo in the help text of the icon extension point <a href="https://github.com/microsoft/vscode/pull/238393" class="external-link" target="_blank">PR #238393</a></li> <li><a href="https://github.com/RedCMD" class="external-link" target="_blank">@RedCMD (RedCMD)</a> <ul> <li>Fix extension preview codeblock language getter <a href="https://github.com/microsoft/vscode/pull/235880" class="external-link" target="_blank">PR #235880</a></li> <li>Add <code>outdated</code> and <code>recentlyUpdated</code> suggestions to extension filter <a href="https://github.com/microsoft/vscode/pull/235884" class="external-link" target="_blank">PR #235884</a></li> </ul> </li> <li><a href="https://github.com/remcohaszing" class="external-link" target="_blank">@remcohaszing (Remco Haszing)</a> <ul> <li>Mark bun.lock as jsonc <a href="https://github.com/microsoft/vscode/pull/235917" class="external-link" target="_blank">PR #235917</a></li> <li>Allow the .ndjson extension for the jsonl language <a href="https://github.com/microsoft/vscode/pull/235921" class="external-link" target="_blank">PR #235921</a></li> </ul> </li> <li><a href="https://github.com/RiskyMH" class="external-link" target="_blank">@RiskyMH (Michael H)</a>: <code>bun.lock</code> as package manager lockfile <a href="https://github.com/microsoft/vscode/pull/236012" class="external-link" target="_blank">PR #236012</a></li> <li><a href="https://github.com/sunnylost" class="external-link" target="_blank">@sunnylost (sunnylost)</a>: fix(settings-editor): ensure the width of the key name does not shrink <a href="https://github.com/microsoft/vscode/pull/229919" class="external-link" target="_blank">PR #229919</a></li> <li><a href="https://github.com/tcostew" class="external-link" target="_blank">@tcostew</a>: Allow Github Copilot chat to appear in QuickAccess <a href="https://github.com/microsoft/vscode/pull/210805" class="external-link" target="_blank">PR #210805</a></li> <li><a href="https://github.com/tmm1" class="external-link" target="_blank">@tmm1 (Aman Karmani)</a> <ul> <li>build: update to include more tsc boilerplate <a href="https://github.com/microsoft/vscode/pull/238422" class="external-link" target="_blank">PR #238422</a></li> <li>build: switch <code>build/tsconfig.json</code> to <code>module: nodenext</code> <a href="https://github.com/microsoft/vscode/pull/238426" class="external-link" target="_blank">PR #238426</a></li> </ul> </li> <li><a href="https://github.com/tobil4sk" class="external-link" target="_blank">@tobil4sk</a>: Merge diverging findExecutable functions <a href="https://github.com/microsoft/vscode/pull/228373" class="external-link" target="_blank">PR #228373</a></li> <li><a href="https://github.com/zWingz" class="external-link" target="_blank">@zWingz (zWing)</a>: fix(git-ext): fix limitWarning block the git status progress <a href="https://github.com/microsoft/vscode/pull/226577" class="external-link" target="_blank">PR #226577</a></li> </ul> <p>Contributions to <code>vscode-eslint</code>:</p> <ul> <li><a href="https://github.com/ShahinSorkh" class="external-link" target="_blank">@ShahinSorkh (Shahin Sorkh)</a>: clarify where to set <code>eslint.runtime</code> and <code>eslint.execArgv</code> options <a href="https://github.com/microsoft/vscode-eslint/pull/1973" class="external-link" target="_blank">PR #1973</a></li> </ul> <p>Contributions to <code>vscode-extension-samples</code>:</p> <ul> <li><a href="https://github.com/IsBenben" class="external-link" target="_blank">@IsBenben</a>: Fixes cannot find module 'semver' <a href="https://github.com/microsoft/vscode-extension-samples/pull/1129" class="external-link" target="_blank">PR #1129</a></li> </ul> <p>Contributions to <code>vscode-js-debug</code>:</p> <ul> <li><a href="https://github.com/mdh1418" class="external-link" target="_blank">@mdh1418 (Mitchell Hwang)</a>: Update BlazorDebugger telemetry report event <a href="https://github.com/microsoft/vscode-js-debug/pull/2158" class="external-link" target="_blank">PR #2158</a></li> </ul> <p>Contributions to <code>vscode-jupyter</code>:</p> <ul> <li><a href="https://github.com/gy-mate" class="external-link" target="_blank">@gy-mate (Máté Gyöngyösi)</a>: Capitalize 'URL' <a href="https://github.com/microsoft/vscode-jupyter/pull/16340" class="external-link" target="_blank">PR #16340</a></li> <li><a href="https://github.com/pwang347" class="external-link" target="_blank">@pwang347 (Paul)</a>: Add <code>waitUntil</code> for <code>onDidStart</code> event <a href="https://github.com/microsoft/vscode-jupyter/pull/16375" class="external-link" target="_blank">PR #16375</a></li> </ul> <p>Contributions to <code>vscode-loc</code>:</p> <ul> <li><a href="https://github.com/NicoWeio" class="external-link" target="_blank">@NicoWeio (Nicolai Weitkemper)</a>: improve grammar in README <a href="https://github.com/microsoft/vscode-loc/pull/1367" class="external-link" target="_blank">PR #1367</a></li> </ul> <p>Contributions to <code>vscode-prompt-tsx</code>:</p> <ul> <li><a href="https://github.com/atxtechbro" class="external-link" target="_blank">@atxtechbro (Morgan Joyce)</a> <ul> <li>docs: fix typo in Passing Priority description <a href="https://github.com/microsoft/vscode-prompt-tsx/pull/140" class="external-link" target="_blank">PR #140</a></li> <li>docs: fix grammar in budget allocation description <a href="https://github.com/microsoft/vscode-prompt-tsx/pull/141" class="external-link" target="_blank">PR #141</a></li> </ul> </li> </ul> <p>Contributions to <code>vscode-pull-request-github</code>:</p> <ul> <li><a href="https://github.com/mikeseese" class="external-link" target="_blank">@mikeseese (Mike Seese)</a>: Add opt-in to always prompt for repo for issue creation and add comment to issue file specifying the repo <a href="https://github.com/microsoft/vscode-pull-request-github/pull/6115" class="external-link" target="_blank">PR #6115</a></li> <li><a href="https://github.com/NellyWhads" class="external-link" target="_blank">@NellyWhads (Nelly Whads)</a>: Remove the python language user mention exception <a href="https://github.com/microsoft/vscode-pull-request-github/pull/6525" class="external-link" target="_blank">PR #6525</a></li> <li><a href="https://github.com/Ronny-zzl" class="external-link" target="_blank">@Ronny-zzl (Zhang)</a>: Don't show hover cards for @-mentioned users in JSDocs in jsx and tsx files <a href="https://github.com/microsoft/vscode-pull-request-github/pull/6531" class="external-link" target="_blank">PR #6531</a></li> </ul> <p>Contributions to <code>vscode-pylint</code>:</p> <ul> <li><a href="https://github.com/DetachHead" class="external-link" target="_blank">@DetachHead</a>: workaround for memory leak caused by pylint bug <a href="https://github.com/microsoft/vscode-pylint/pull/585" class="external-link" target="_blank">PR #585</a></li> </ul> <p>Contributions to <code>vscode-python-debugger</code>:</p> <ul> <li><a href="https://github.com/rchiodo" class="external-link" target="_blank">@rchiodo (Rich Chiodo)</a> <ul> <li>Update to 1.8.11 <a href="https://github.com/microsoft/vscode-python-debugger/pull/536" class="external-link" target="_blank">PR #536</a></li> <li>Support the clientOS property in VS code <a href="https://github.com/microsoft/vscode-python-debugger/pull/550" class="external-link" target="_blank">PR #550</a></li> <li>Update <code>debugpy</code> to 1.8.12 <a href="https://github.com/microsoft/vscode-python-debugger/pull/558" class="external-link" target="_blank">PR #558</a></li> </ul> </li> </ul> <p>Contributions to <code>vscode-ripgrep</code>:</p> <ul> <li><a href="https://github.com/fiji-flo" class="external-link" target="_blank">@fiji-flo (Florian Dieminger)</a>: fix long download <a href="https://github.com/microsoft/vscode-ripgrep/pull/62" class="external-link" target="_blank">PR #62</a></li> <li><a href="https://github.com/tmm1" class="external-link" target="_blank">@tmm1 (Aman Karmani)</a>: Fix for arm64 windows <a href="https://github.com/microsoft/vscode-ripgrep/pull/63" class="external-link" target="_blank">PR #63</a></li> </ul> <p>Contributions to <code>vscode-test</code>:</p> <ul> <li><a href="https://github.com/kamaal111" class="external-link" target="_blank">@kamaal111 (Kamaal Farah)</a>: docs: update Github Actions link to point to sample <a href="https://github.com/microsoft/vscode-test/pull/297" class="external-link" target="_blank">PR #297</a></li> </ul> <p>Contributions to <code>language-server-protocol</code>:</p> <ul> <li><a href="https://github.com/asukaminato0721" class="external-link" target="_blank">@asukaminato0721 (Asuka Minato)</a>: cython-lsp <a href="https://github.com/microsoft/language-server-protocol/pull/2064" class="external-link" target="_blank">PR #2064</a></li> <li><a href="https://github.com/catwell" class="external-link" target="_blank">@catwell (Pierre Chapuis)</a>: Add Teal LSP <a href="https://github.com/microsoft/language-server-protocol/pull/2078" class="external-link" target="_blank">PR #2078</a></li> <li><a href="https://github.com/Enaium" class="external-link" target="_blank">@Enaium (Enaium)</a> <ul> <li>Add Jimmer DTO <a href="https://github.com/microsoft/language-server-protocol/pull/2070" class="external-link" target="_blank">PR #2070</a></li> <li>Change Maintainer <a href="https://github.com/microsoft/language-server-protocol/pull/2071" class="external-link" target="_blank">PR #2071</a></li> </ul> </li> <li><a href="https://github.com/g-plane" class="external-link" target="_blank">@g-plane (Pig Fang)</a>: New language server: wasm-language-tools <a href="https://github.com/microsoft/language-server-protocol/pull/2065" class="external-link" target="_blank">PR #2065</a></li> <li><a href="https://github.com/jcs090218" class="external-link" target="_blank">@jcs090218 (Jen-Chieh Shen)</a>: chore(_implementors/servers.md): Update Ellsp link <a href="https://github.com/microsoft/language-server-protocol/pull/2073" class="external-link" target="_blank">PR #2073</a></li> <li><a href="https://github.com/kbwo" class="external-link" target="_blank">@kbwo (Kodai Kabasawa)</a>: Add testing-language-server in servers.md <a href="https://github.com/microsoft/language-server-protocol/pull/2076" class="external-link" target="_blank">PR #2076</a></li> <li><a href="https://github.com/kylebonnici" class="external-link" target="_blank">@kylebonnici (Kyle Micallef Bonnici)</a>: Add Devicetree LSP to list <a href="https://github.com/microsoft/language-server-protocol/pull/2085" class="external-link" target="_blank">PR #2085</a></li> <li><a href="https://github.com/ribru17" class="external-link" target="_blank">@ribru17 (Riley Bruins)</a>: Add ts_query_ls (Tree-sitter query language server) <a href="https://github.com/microsoft/language-server-protocol/pull/2068" class="external-link" target="_blank">PR #2068</a></li> </ul> <p><a id="scroll-to-top" role="button" title="Scroll to top" aria-label="scroll to top" href="#"><span class="icon"></span></a></p> <div class="feedback"></div> </main> <!-- medium right nav --> <div class="col-sm-3 col-md-2 hidden-xs docs-subnavbar-container"> <nav id="docs-subnavbar" aria-label="On Page" data-spy="affix" data-offset-top="20"> <h4><span class="sr-only">In this update, there are 18 sections</span><span aria-hidden="true">In this update</span></h4> <ul class="nav"> <li><a href="#_github-copilot">GitHub Copilot</a></li> <li><a href="#_accessibility">Accessibility</a></li> <li><a href="#_workbench">Workbench</a></li> <li><a href="#_editor">Editor</a></li> <li><a href="#_source-control">Source Control</a></li> <li><a href="#_notebooks">Notebooks</a></li> <li><a href="#_terminal">Terminal</a></li> <li><a href="#_tasks">Tasks</a></li> <li><a href="#_debug">Debug</a></li> <li><a href="#_languages">Languages</a></li> <li><a href="#_remote-development">Remote Development</a></li> <li><a href="#_contributions-to-extensions">Contributions to extensions</a></li> <li><a href="#_preview-features">Preview Features</a></li> <li><a href="#_extension-authoring">Extension Authoring</a></li> <li><a href="#_proposed-apis">Proposed APIs</a></li> <li><a href="#_engineering">Engineering</a></li> <li><a href="#_notable-fixes">Notable fixes</a></li> <li><a href="#_thank-you">Thank you</a></li> </ul> <div class="connect-widget"></div> </nav> </div> <!-- end of page connect widget --> <div class="col-xs-12 visible-xs"> <div class="connect-widget"></div> </div> </div> </div> </div> </div> <footer role="contentinfo" class="container"> <div class="footer-container"> <div class="footer-row"> <div class="footer-social"> <ul class="links"> <li> <a href="https://go.microsoft.com/fwlink/?LinkID=533687"><img src="/assets/icons/x-icon.svg" class="x-icon" alt="Follow us on X"></a> </li> <li> <a href="https://github.com/microsoft/vscode"><img src="/assets/icons/github-icon.svg" alt="VS Code on Github"></a> </li> <li> <a href="https://www.youtube.com/@code"><img src="/assets/icons/youtube-icon.svg" alt="VS Code on YouTube"></a> </li> <script> function manageConsent() { if (siteConsent && siteConsent.isConsentRequired) { siteConsent.manageConsent(); } } </script> </ul> <a id="footer-microsoft-link" class="microsoft-logo" href="https://www.microsoft.com"> <img src="/assets/icons/microsoft.svg" alt="Microsoft homepage" /> </a> </div> </div> <div class="footer-row"> <ul class="links"> <li><a id="footer-support-link" href="https://support.serviceshub.microsoft.com/supportforbusiness/create?sapId=d66407ed-3967-b000-4cfb-2c318cad363d" target="_blank" rel="noopener">Support</a></li> <li><a id="footer-privacy-link" href="https://go.microsoft.com/fwlink/?LinkId=521839" target="_blank" rel="noopener">Privacy</a></li> <li style="display: none;"><a id="footer-cookie-link" style="cursor: pointer;" onclick="manageConsent()" target="_blank" rel="noopener">Manage Cookies</a></li> <li><a id="footer-terms-link" href="https://www.microsoft.com/legal/terms-of-use" target="_blank" rel="noopener">Terms of Use</a></li> <li><a id="footer-license-link" href="/License" target="_blank" rel="noopener">License</a></li> </ul> </div> </div> </footer> <script type="module"> document.addEventListener('DOMContentLoaded', () => { const copilotDeepLinks = document.querySelectorAll('.copilot-deep-link'); if (copilotDeepLinks.length === 0) { return; } if (window.innerWidth < 992) { for (const link of copilotDeepLinks) { link.href = 'https://aka.ms/vscode-activatecopilotfree'; } } }); </script> <script src="/dist/index.js"></script> <script type="application/ld+json"> { "@context" : "http://schema.org", "@type" : "SoftwareApplication", "name" : "Visual Studio Code", "softwareVersion": "1.97", "offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD" }, "applicationCategory": "DeveloperApplication", "applicationSubCategory": "Text Editor", "alternateName": "VS Code", "datePublished": "2021-11-03", "operatingSystem": "Mac, Linux, Windows", "logo": "https://code.visualstudio.com/assets/apple-touch-icon.png", "screenshot": "https://code.visualstudio.com/assets/home/home-screenshot-win.png", "releaseNotes": "https://code.visualstudio.com/updates", "downloadUrl": "https://code.visualstudio.com/download", "license": "https://code.visualstudio.com/license", "softwareRequirements": "https://code.visualstudio.com/docs/supporting/requirements", "url" : "https://code.visualstudio.com", "author": { "@type": "Organization", "name": "Microsoft" }, "publisher": { "@type": "Organization", "name": "Microsoft" }, "maintainer": { "@type": "Organization", "name": "Microsoft" }, "potentialAction": { "@type": "SearchAction", "target": "https://code.visualstudio.com/Search?q={search_term_string}", "query-input": "required name=search_term_string" }, "sameAs" : [ "https://en.wikipedia.org/wiki/Visual_Studio_Code", "https://twitter.com/code", "https://www.youtube.com/code", "https://www.tiktok.com/@vscode", "https://github.com/microsoft/vscode" ] } </script> </body> </html>