CINXE.COM
Visual Studio Code October 2024
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="awa-expId" content="vscw_aaflight1016_control:103441;" /> <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 October 2024 Release (1.95)" /> <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_95" /> <meta property="og:type" content="article" /> <meta property="og:title" content="Visual Studio Code October 2024" /> <meta property="og:description" content="Learn what is new in the Visual Studio Code October 2024 Release (1.95)" /> <meta property="og:image" content="https://code.visualstudio.com/assets/updates/1_95/release-highlights.png" /> <link rel="shortcut icon" href="/favicon.ico" sizes="128x128" /> <link rel="apple-touch-icon" href="/apple-touch-icon.png"> <title>Visual Studio Code October 2024</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"><a href="/updates" id="banner-link-updates">Version 1.95</a> is now available! Read about the new features and fixes from October.</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_95" aria-label="Current Page: October 2024">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> <li > <a href="/updates/v1_74" >November 2022</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_95" selected>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> <option value="/updates/v1_74" >November 2022</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="#_workbench">Workbench</option> <option value="#_editor">Editor</option> <option value="#_vs-code-for-the-web">VS Code for the Web</option> <option value="#_contributions-to-extensions">Contributions to extensions</option> <option value="#_extension-authoring">Extension Authoring</option> <option value="#_preview-features">Preview Features</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_95.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>October 2024 (version 1.95)</h1> <p><strong>Security update</strong>: The following extensions have security updates: <a href="https://marketplace.visualstudio.com/items?itemName=ms-python.python" class="external-link" target="_blank">ms-python.python</a> and <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh" class="external-link" target="_blank">ms-vscode-remote.remote-ssh</a>.</p> <p><strong>Update 1.95.1</strong>: The update addresses these <a href="https://github.com/microsoft/vscode/issues?q=is%3Aissue+milestone%3A%22October+2024+Recovery+1%22+is%3Aclosed" class="external-link" target="_blank">issues</a>.</p> <p><strong>Update 1.95.2</strong>: The update addresses these <a href="https://github.com/microsoft/vscode/issues?q=is%3Aissue+milestone%3A%22October+2024+Recovery+2%22+is%3Aclosed" class="external-link" target="_blank">issues</a>.</p> <p><strong>Update 1.95.3</strong>: The update addresses these <a href="https://github.com/microsoft/vscode/issues?q=is%3Aissue+milestone%3A%22October+2024+Recovery+3%22+is%3Aclosed" class="external-link" target="_blank">issues</a>.</p> <p>Downloads: Windows: <a href="https://update.code.visualstudio.com/1.95.3/win32-x64-user/stable">x64</a> <a href="https://update.code.visualstudio.com/1.95.3/win32-arm64-user/stable">Arm64</a> | Mac: <a href="https://update.code.visualstudio.com/1.95.3/darwin-universal/stable">Universal</a> <a href="https://update.code.visualstudio.com/1.95.3/darwin/stable">Intel</a> <a href="https://update.code.visualstudio.com/1.95.3/darwin-arm64/stable">silicon</a> | Linux: <a href="https://update.code.visualstudio.com/1.95.3/linux-deb-x64/stable">deb</a> <a href="https://update.code.visualstudio.com/1.95.3/linux-rpm-x64/stable">rpm</a> <a href="https://update.code.visualstudio.com/1.95.3/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.95.3/linux-snap-x64/stable">snap</a></p> <hr> <p>Welcome to the October 2024 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="#_start-a-code-editing-session-with-copilot-edits">Copilot Edits</a> - Iterate quickly on large changes across multiple files</li> <li><a href="#_chat-in-the-secondary-side-bar">Copilot Chat in Secondary Side Bar</a> - Keep Copilot Chat open and ready to-go while you work</li> <li><a href="#_multiple-github-accounts">Multiple GitHub accounts</a> - Log in to multiple GitHub accounts in VS Code simultaneously</li> <li><a href="#_copilot-code-reviews">Copilot code reviews</a> - Get a quick review pass or a deeper review of uncommitted changes</li> <li><a href="#_generate-docstrings-with-pylance">Docstrings with Pylance</a> - Generate docstring templates for classes or methods</li> <li><a href="#_settings-editor-indicator-for-experimental-and-preview-settings">Preview settings indicator</a> - View experimental and preview settings in the Settings editor</li> <li><a href="#_copilot-extensions-showcase">Copilot extensibility</a> - Showcasing Copilot extensibility in VS Code</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> <p>Copilot features might go through different early access stages, which are typically enabled and configured through settings.</p> <ul> <li> <p><strong>Experimental</strong> - view the <a href="command:workbench.action.openSettings?%5B%22%40tag%3Aexperimental%20%40ext%3Agithub.copilot-chat%22%5D">experimental features</a> (<code>@tag:experimental</code>)</p> <p>This setting controls a new feature that is actively being developed and may be unstable. It is subject to change or removal.</p> </li> <li> <p><strong>Preview</strong> - view the <a href="command:workbench.action.openSettings?%5B%22%40tag%3Apreview%20%40ext%3Agithub.copilot-chat%22%5D">preview features</a> (<code>@tag:preview</code>)</p> <p>This setting controls a new feature that is still under refinement yet ready to use. Feedback is welcome.</p> </li> </ul> <h3 id="_start-a-code-editing-session-with-copilot-edits" data-needslink="_start-a-code-editing-session-with-copilot-edits">Start a code editing session with Copilot Edits</h3> <blockquote><p>Copilot Edits is currently in preview</p> </blockquote><p><strong>Setting</strong>: <span class="setting"><a href="vscode://settings/github.copilot.chat.edits.enabled" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'github.copilot.chat.edits.enabled' in Settings Editor"></span></a>github.copilot.chat.edits.enabled</span></p> <p>With Copilot Edits, you can start an AI-powered code editing session where you can quickly iterate on code changes. Based on your prompts, Copilot Edits proposes code changes across multiple files in your workspace. These edits are applied directly in the editor, so you can quickly review them in-place, with the full context of the surrounding code.</p> <p>Copilot Edits is great for iterating on large changes across multiple files. It brings the conversational flow of Copilot Chat and fast feedback from Inline Chat together in one experience. Have an ongoing, multi-turn chat conversation on the side, while benefiting from inline code suggestions.</p> <p><video src="/assets/updates/1_95/copilot-edits-hero.mp4" title="Use Copilot Edits to modify an Express app." autoplay loop controls muted></video></p> <p>Get started with Copilot Edits in just three steps:</p> <ol> <li> <p>Start an edit session by selecting <strong>Open Copilot Edits</strong> from the Chat menu, or press <span class="dynamic-keybinding" data-commandId="workbench.action.chat.openEditSession" data-osx="⇧⌘I" data-win="Ctrl+Shift+I" data-linux="Ctrl+Shift+Alt+I"><span class="keybinding">⇧⌘I</span> (Windows <span class="keybinding">Ctrl+Shift+I</span>, Linux <span class="keybinding">Ctrl+Shift+Alt+I</span>)</span>.</p> <p><img src="/assets/updates/1_95/copilot-command-center-open-edit-session.png" alt="Screenshot showing the Copilot menu in the Command Center, highlighting the Open Edit Session item" loading="lazy"></p> </li> <li> <p>Add relevant files to the <em>working set</em> to indicate to Copilot which files you want to work on.</p> </li> <li> <p>Enter a prompt to tell Copilot about the edit you want to make! For example, <code>Add a simple navigation bar to all pages</code> or <code>Use vitest instead of jest</code>.</p> </li> </ol> <p>Get more details about <a href="https://code.visualstudio.com/docs/copilot/copilot-edits">Copilot Edits</a> in our documentation. Try it out now and provide your feedback through <a href="https://github.com/microsoft/vscode-copilot-release/issues" class="external-link" target="_blank">our issues</a>!</p> <h3 id="_chat-in-the-secondary-side-bar" data-needslink="_chat-in-the-secondary-side-bar">Chat in the Secondary Side Bar</h3> <p>The new default location for the Chat view is the <a href="https://aka.ms/vscode-secondary-sidebar" class="external-link" target="_blank">Secondary Side Bar</a>. By using the Secondary Side Bar, you can have chat open at any time, while you still have other views available to you like the File Explorer or Source Control. This provides you with a more integrated AI experience in VS Code. You can quickly get to chat by using the <span class="dynamic-keybinding" data-commandId="workbench.action.chat.open" data-osx="⌃⌘I" data-win="Ctrl+Alt+I" data-linux="Ctrl+Alt+I"><span class="keybinding">⌃⌘I</span> (Windows, Linux <span class="keybinding">Ctrl+Alt+I</span>)</span> keyboard shortcut.</p> <p><img src="/assets/updates/1_95/chat-new-location.png" alt="Chat view in its new location after having moved." loading="lazy"></p> <p>With the introduction of the new Chat menu next to the Command Center, bringing up the Secondary Side Bar with chat is just a click away:</p> <p><video src="/assets/updates/1_95/chat-video.mp4" title="Chat in Secondary Side Bar." autoplay loop controls muted></video></p> <p>The chat menu gives you access to the most common tasks for Copilot Chat. If you wish to hide this menu, a new setting <span class="setting"><a href="vscode://settings/chat.commandCenter.enabled" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'chat.commandCenter.enabled' in Settings Editor"></span></a>chat.commandCenter.enabled</span> is provided.</p> <p><img src="/assets/updates/1_95/chat-menu.png" alt="Chat menu in the Command Center." loading="lazy"></p> <p><strong>Note:</strong> If you had previously installed GitHub Copilot, a view will show up at the location you had Chat before that enables you to restore the Chat view to the old location, if that works better for you.</p> <p><img src="/assets/updates/1_95/chat-old-location.png" alt="Chat view in its old location showing that Chat has moved to the Secondary Side Bar." loading="lazy"></p> <h3 id="_copilot-code-reviews" data-needslink="_copilot-code-reviews">Copilot code reviews</h3> <blockquote><p>Copilot code reviews are currently in preview</p> </blockquote><p>With GitHub Copilot code review in Visual Studio Code, you can now get fast, AI-powered feedback on your code as you write it, or request a review of all your changes before you push. GitHub Copilot code review in Visual Studio Code is currently in preview. Try it out and provide feedback through <a href="https://github.com/microsoft/vscode-copilot-release/issues" class="external-link" target="_blank">our issues</a>.</p> <p>There are two ways to use Copilot code review in VS Code:</p> <ul> <li> <p><strong>Review selection</strong>: for a quick review pass, select code in the editor and either select <strong>Copilot</strong> > <strong>Review and Comment</strong> from the editor context menu, or use the <strong>GitHub Copilot: Review and Comment</strong> command from the Command Palette. <em>(This feature is in preview.)</em></p> </li> <li> <p><strong>Review changes</strong>: for a deeper review of all uncommitted changes, select the <strong>Copilot Code Review</strong> button in the <strong>Source Control</strong> view, which you can also do in your pull request on GitHub.com. <em>(Join the <a href="https://gh.io/copilot-code-review-waitlist" class="external-link" target="_blank">waitlist</a>, open to all Copilot subscribers)</em></p> <p><img src="/assets/updates/1_95/review_diff.png" alt="Request review of uncommited changes" loading="lazy"></p> </li> </ul> <p>Copilot's feedback shows up as comments in the editor, attached to lines of your code. Where possible, the comments include actionable code suggestions, which you can apply in one action.</p> <p><img src="/assets/updates/1_95/reviewing_selection.png" alt="Screenshot showing a comment reviewing a code selection" loading="lazy"></p> <p>To learn more about Copilot code review, head to the <a href="https://gh.io/copilot-code-review-docs" class="external-link" target="_blank">GitHub code review documentation</a>.</p> <p>Copilot's quick review on code selection can provide feedback that match the specific practices of your team or project, provided you give the right context. When reviewing selections with custom review instructions, you can define those specific requirements via the <span class="setting"><a href="vscode://settings/github.copilot.chat.reviewSelection.instructions" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'github.copilot.chat.reviewSelection.instructions' in Settings Editor"></span></a>github.copilot.chat.reviewSelection.instructions</span> setting. Similar to <a href="https://code.visualstudio.com/docs/copilot/copilot-customization">code-generation and test-generation instructions</a>, you can either define the instructions directly in the setting, or you can store them in a separate file and reference it in the setting.</p> <p>The following code snippet shows an example of review instructions:</p> <pre class="shiki" style="background-color: #1e1e1e"><code><span class="line"><span style="color: #BBBBBB"> </span><span style="color: #CE9178">"github.copilot.chat.reviewSelection.instructions"</span><span style="color: #BBBBBB">: [</span></span> <span class="line"><span style="color: #BBBBBB"> {</span></span> <span class="line"><span style="color: #BBBBBB"> </span><span style="color: #9CDCFE">"text"</span><span style="color: #BBBBBB">: </span><span style="color: #CE9178">"Logging should be done with the Log4j ."</span></span> <span class="line"><span style="color: #BBBBBB"> },</span></span> <span class="line"><span style="color: #BBBBBB"> {</span></span> <span class="line"><span style="color: #BBBBBB"> </span><span style="color: #9CDCFE">"text"</span><span style="color: #BBBBBB">: </span><span style="color: #CE9178">"Always use the Polly library for fault-handling."</span></span> <span class="line"><span style="color: #BBBBBB"> },</span></span> <span class="line"><span style="color: #BBBBBB"> {</span></span> <span class="line"><span style="color: #BBBBBB"> </span><span style="color: #9CDCFE">"file"</span><span style="color: #BBBBBB">: </span><span style="color: #CE9178">"code-style.md"</span><span style="color: #BBBBBB"> </span><span style="color: #6A9955">// import instructions from file `code-style.md`</span></span> <span class="line"><span style="color: #BBBBBB"> }</span></span> <span class="line"><span style="color: #BBBBBB"> ],</span></span> <span class="line"></span></code></pre> <p>An example of the contents of the <code>code-style.md</code> file:</p> <pre class="shiki" style="background-color: #1e1e1e"><code><span class="line"><span style="color: #BBBBBB">Private fields should start with an underscore.</span></span> <span class="line"></span> <span class="line"><span style="color: #BBBBBB">A file can only contain one class declaration.</span></span> <span class="line"></span></code></pre> <h3 id="_automatic-chat-participant-detection" data-needslink="_automatic-chat-participant-detection">Automatic chat participant detection</h3> <p><strong>Setting</strong>: <span class="setting"><a href="vscode://settings/chat.experimental.detectParticipant.enabled" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'chat.experimental.detectParticipant.enabled' in Settings Editor"></span></a>chat.experimental.detectParticipant.enabled</span></p> <p>GitHub Copilot has several built-in chat participants, such as <code>@workspace</code>, and you may have installed other extensions that contribute chat participants too.</p> <p>To make it easier to use chat participants with natural language, Copilot Chat will automatically route your question to a suitable participant or chat command, when possible.</p> <p>If the automatically selected participant is not appropriate for your question, you can still select the <strong>rerun without</strong> link at the top of the chat response to resend your question to Copilot.</p> <p><img src="/assets/updates/1_93/participant-detection.png" alt="Screenshot of Chat view that shows how the '@workspace' participant is automatically detected." loading="lazy"></p> <p>This month, we also added an action to let you skip this detection behavior on a per-request basis. The default action when you enter a chat prompt is <strong>Send and dispatch</strong>, which includes participant detection. If you choose <strong>Send</strong>, the request is sent directly to Copilot Chat and it won't be automatically dispatched to a chat participant.</p> <p><img src="/assets/updates/1_95/chat-send-commands.png" alt="The list of available "send" commands in the chat view." loading="lazy"></p> <p>You can also disable automatic participant detection entirely with the <span class="setting"><a href="vscode://settings/chat.experimental.detectParticipant.enabled" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'chat.experimental.detectParticipant.enabled' in Settings Editor"></span></a>chat.experimental.detectParticipant.enabled</span> setting.</p> <h3 id="_control-current-editor-context" data-needslink="_control-current-editor-context">Control current editor context</h3> <p>Copilot Chat has always automatically included your current selection or the currently visible code as context with your chat request. Large Language Models (LLMs) are generally good at understanding whether a piece of context is relevant. But sometimes, when you ask a question that is not about your current editor, including this context might affect how the model interprets your question.</p> <p>We now show a special attachment control in the chat input that gives a hint about the editor context and which enables you to toggle whether or not to include the editor context.</p> <p><img src="/assets/updates/1_95/implicit-context.png" alt="The current editor context control in the chat input, which shows that the context is not included." loading="lazy"></p> <p>There are no changes to the behavior of the editor context. When the active editor has a selection, then just the selection is included. Otherwise, just the code that is scrolled into view is included. You can still attach other files or the full file by using the paperclip button or by typing <code>#</code> in the chat prompt.</p> <h3 id="_interactive-workspace-symbol-links" data-needslink="_interactive-workspace-symbol-links">Interactive workspace symbol links</h3> <p>A common use case of Copilot Chat is asking questions about the code in your workspace, such as using <code>/tests</code> to generate new unit tests for the selected code or asking <code>@workspace</code> to find some specific class or function in your project. This milestone, we added enhanced links for any workspace symbols that Copilot mentions in chat responses. These symbol links can help you better understand Copilot responses and learn more about the symbols used in them.</p> <p>Symbol links are rendered as little pills in the response, just like the <a href="https://code.visualstudio.com/updates/v1_94#_improved-file-links-in-chat-responses">file links</a> we added last milestone. To start learn more about a symbol, just select the symbol link to jump to that symbol's definition:</p> <p><video src="/assets/updates/1_95/copilot-symbol-links-overview.mp4" title="Symbols links being rendered in a Copilot response. Clicking on then navigates to the symbol definition." autoplay loop controls muted></video></p> <p>You can also hover over the symbol link to see which file the symbol is defined in:</p> <p><img src="/assets/updates/1_95/copilot-symbol-link-hover.png" alt="Hovering over a symbol link to see the file it's defined in." loading="lazy"></p> <p>To start exploring a symbol in more detail, just right-click on the symbol link to bring up a context menu with options, such as <strong>Go to Implementations</strong> and <strong>Go to References</strong>:</p> <p><img src="/assets/updates/1_95/copilot-symbol-link-context-menu.png" alt="Using the context menu on a symbol link to learn more about a symbol." loading="lazy"></p> <p>Basic symbol links should work for any language that supports Go to Definition. More advanced IntelliSense options, such Go to Implementations, also require support for that language. Make sure to install language extensions to get the best symbol support for any programming languages used in Copilot responses.</p> <h3 id="_fix-using-copilot-action-in-the-problem-hover" data-needslink="_fix-using-copilot-action-in-the-problem-hover">Fix using Copilot action in the Problem hover</h3> <p>When you hover over a problem in the editor, it now includes an action to fix the problem using Copilot. This action is available for problems that have a fix available, and the fix is generated by Copilot.</p> <p><img src="/assets/updates/1_95/copilot-fix-problem-hover.png" alt="The Problem hover showing a Fix using Copilot action." loading="lazy"></p> <h3 id="_workspace-indexing" data-needslink="_workspace-indexing">Workspace indexing</h3> <p><a href="https://code.visualstudio.com/docs/copilot/copilot-chat#_workspace"><code>@workspace</code></a> lets you ask questions about code in your current project. This is implemented using either <a href="https://github.blog/2023-02-06-the-technology-behind-githubs-new-code-search" class="external-link" target="_blank">GitHub's code search</a> or a smart local index that VS Code constructs. This milestone, we added a few more UI elements that let you understand how this workspace index is being used.</p> <p>First up, the new <strong>GitHub Copilot: Build Local Workspace index</strong> command lets you explicitly start indexing the current workspace. This indexing is normally kicked off automatically the first time you ask a <code>@workspace</code> question. With the new command, you can instead start indexing at any time. The command also enables indexing of larger workspaces, currently up to 2000 files (not including ignored files, such as the <code>node_modules</code> or <code>out</code> directories).</p> <p>While the index is being built, we now also show a progress item in the status bar:</p> <p><img src="/assets/updates/1_95/copilot-workspace-ui-progress.png" alt="A status bar item showing the progress of indexing the current workspace." loading="lazy"></p> <p>Indexing workspaces with many hundreds of files can take a little time. If you try to ask an <code>@workspace</code> question while indexing is being constructed, instead of waiting, Copilot will try to respond quickly by using a simpler local index that can be built up more quickly. We now show a warning in the response when this happens:</p> <p><img src="/assets/updates/1_95/copilot-workspace-ui-warning.png" alt="A warning showing on a response telling the user the Copilot index is being constructed." loading="lazy"></p> <p>Notice that Copilot was still able to answer the question in this case, even though it used the simpler local index instead of the more advanced one. That's often the case, although more ambiguous or complex questions might only be answerable once the smarter index has been constructed. Also keep in mind that if your workspace is backed by a GitHub repository, we can instead use <a href="https://github.blog/2023-02-06-the-technology-behind-githubs-new-code-search" class="external-link" target="_blank">GitHub's code search</a> to answer questions. That means that code search is used instead of the simpler local index.</p> <h3 id="_chat-followup-improvements" data-needslink="_chat-followup-improvements">Chat follow-up improvements</h3> <p><strong>Setting</strong>: <span class="setting"><a href="vscode://settings/github.copilot.chat.followUps" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'github.copilot.chat.followUps' in Settings Editor"></span></a>github.copilot.chat.followUps</span></p> <p>To make more room for chat conversations in the Chat view, we've made follow-up prompts more concise and, by default, they only appear on the first turn. Configure the <span class="setting"><a href="vscode://settings/github.copilot.chat.followUps" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'github.copilot.chat.followUps' in Settings Editor"></span></a>github.copilot.chat.followUps</span> setting to change when follow-up prompts appear:</p> <ul> <li><code>firstOnly</code> (default) - Follow-up prompts only appear on the first turn</li> <li><code>always</code> - Follow-up prompts always appear</li> <li><code>never</code> - Disable follow-up prompts</li> </ul> <h3 id="_sort-by-relevance-in-semantic-search-experimental" data-needslink="_sort-by-relevance-in-semantic-search-experimental">Sort by relevance in Semantic Search (Experimental)</h3> <p><strong>Setting</strong>: <span class="setting"><a href="vscode://settings/github.copilot.chat.search.semanticTextResults" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'github.copilot.chat.search.semanticTextResults' in Settings Editor"></span></a>github.copilot.chat.search.semanticTextResults</span></p> <p>Last milestone, we introduced the ability to perform a semantic search using Copilot to get search results that are semantically relevant to your query. We have now improved the search results by sorting them by their relevance. Keyword matches from more relevant snippets are deemed more relevant overall.</p> <h2 id="_workbench" data-needslink="_workbench">Workbench</h2> <h3 id="_multiple-github-accounts" data-needslink="_multiple-github-accounts">Multiple GitHub accounts</h3> <p>Graduating last month's feature to the default behavior, it's now possible to be logged in to multiple GitHub accounts in VS Code at the same time.</p> <p><img src="/assets/updates/1_95/multi-github-accounts.png" alt="Multiple GitHub Accounts in the Account menu." loading="lazy"></p> <p>Here are a couple of scenarios in which you might need multiple accounts:</p> <ul> <li>Use <em>Account1</em> for Settings Sync and <em>Account2</em> for the GitHub Pull Request extension</li> <li>Use <em>Account1</em> for the GitHub extension (to push) and <em>Account2</em> for GitHub Copilot</li> </ul> <p>To use this functionality, simply trigger a log in action (either with a built-in feature like Settings Sync or with an extension), and you'll be given the option to log in to a different account. This feature also pairs nicely with the <a href="#_add-additional-accounts-when-changing-account-preferences">Account Preference Quick Pick</a>, should you need to change the selected account at a later stage.</p> <p>While most things should just continue to work with your existing extensions, some behaviors might not play perfectly nice with this multi-account world just yet. If you think there's room for improvement, do open an issue on those extensions. With the help of the relatively new <code>vscode.authentication.getAccounts('github')</code> API, extensions have a lot of power to handle multiple accounts.</p> <h3 id="_add-additional-accounts-when-changing-account-preferences" data-needslink="_add-additional-accounts-when-changing-account-preferences">Add additional accounts when changing account preferences</h3> <p>Last month, we introduced the <a href="https://code.visualstudio.com/updates/v1_94#_change-an-extensions-account-preference">Account Preference Quick Pick</a>, which is useful for changing the preferred account to use for an extension should you need to change that for any reason.</p> <p>One of the pieces of feedback we received was around wanting an easy way to add an account that is not yet logged in. This milestone, we have introduced a new item in the Quick Pick that enables you to do just that. Use the <strong>Use a new account...</strong> item to start an authentication flow and set the account preference to that account in one go.</p> <p><img src="/assets/updates/1_95/use-new-account.png" alt="Use a new account option in the account preference Quick Pick." loading="lazy"></p> <h3 id="_settings-editor-indicator-for-experimental-and-preview-settings" data-needslink="_settings-editor-indicator-for-experimental-and-preview-settings">Settings editor indicator for Experimental and Preview settings</h3> <p>Previously, it wasn't always clear which settings were experimental or preview from looking at the Settings editor. To highlight experimental and upcoming features, the Settings editor now displays indicators next to experimental and preview settings. You can type <code>@tag:experimental</code> or <code>@tag:preview</code> in the Settings editor search box to filter to settings accordingly.</p> <p>Extension authors can add "experimental" or "preview" tags to their settings to show the corresponding indicator in the Settings editor.</p> <p><video src="/assets/updates/1_95/settings-editor-preview-search.mp4" title="Searching for preview settings in Settings editor" autoplay loop controls muted></video></p> <p><em>Theme: <a href="https://marketplace.visualstudio.com/items?itemName=mgwg.light-pink-theme" class="external-link" target="_blank">Light Pink</a> (preview on <a href="https://vscode.dev/editor/theme/mgwg.light-pink-theme" class="external-link" target="_blank">vscode.dev</a>)</em></p> <h3 id="_more-icons-for-profiles" data-needslink="_more-icons-for-profiles">More icons for profiles</h3> <p>In this milestone, we have added more icons for profiles. You can now choose from a wider range of icons to customize your profile.</p> <p><img src="/assets/updates/1_95/profile-icons.png" alt="Image showing all available profile icons, highlighting the newly added icons." loading="lazy"></p> <h3 id="_view-icons-in-panel" data-needslink="_view-icons-in-panel">View icons in Panel</h3> <p>In the workbench Panel area, views are typically displayed as labels in the title bar (for example, <em>TERMINAL</em> or <em>OUTPUT</em>). However, on smaller screens, these labels can exceed the available space, causing some views to overflow into a dropdown menu.</p> <p>To address this, we've added a new setting: <span class="setting"><a href="vscode://settings/workbench.panel.showLabels" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'workbench.panel.showLabels' in Settings Editor"></span></a>workbench.panel.showLabels</span>. When disabled, views are displayed as icons instead of labels, conserving horizontal space and reducing overflow.</p> <p><strong><code>workbench.panel.showLabels: true</code></strong></p> <p><img src="/assets/updates/1_95/panel-showLabels-on.png" alt="Panel area showing the labels for each panel." loading="lazy"></p> <p><strong><code>workbench.panel.showLabels: false</code></strong></p> <p><img src="/assets/updates/1_95/panel-showLabels-off.png" alt="Panel area showing an icon for each panel and no label." loading="lazy"></p> <h2 id="_editor" data-needslink="_editor">Editor</h2> <h3 id="_occurrences-highlight-delay" data-needslink="_occurrences-highlight-delay">Occurrences Highlight Delay</h3> <p>This milestone, we have introduced the setting <span class="setting"><a href="vscode://settings/editor.occurrencesHighlightDelay" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'editor.occurrencesHighlightDelay' in Settings Editor"></span></a>editor.occurrencesHighlightDelay</span> to give you control over the delay before occurrences are highlighted in the editor. Lowering this delay value can lead to an editor experience that feels more responsive when working with semantic highlighting.</p> <h2 id="_vs-code-for-the-web" data-needslink="_vs-code-for-the-web">VS Code for the Web</h2> <h3 id="_vs-code-for-the-web-supports-local-file-events" data-needslink="_vs-code-for-the-web-supports-local-file-events">VS Code for the Web supports local file events</h3> <p>When using Chrome or Edge as of version 129, opening <a href="https://insiders.vscode.dev" class="external-link" target="_blank">https://insiders.vscode.dev</a> with a local folder now supports file events. If you make changes to files and folders of the opened workspace outside the browser, these changes are reflected immediately inside the browser.</p> <p>This feature leverages the new <a href="https://chromestatus.com/feature/4622243656630272" class="external-link" target="_blank"><code>FileSystemObserver</code></a> interface that is proposed as new API for the web.</p> <h2 id="_contributions-to-extensions" data-needslink="_contributions-to-extensions">Contributions to extensions</h2> <h3 id="_copilot-extensions-showcase" data-needslink="_copilot-extensions-showcase">Copilot extensions showcase</h3> <p>This milestone, the team worked on building several extensions that showcase <a href="https://code.visualstudio.com/docs/copilot/copilot-extensibility-overview">Copilot extensibility in VS Code</a>. These extensions demonstrate the following capabilities:</p> <ul> <li><a href="https://code.visualstudio.com/api/references/vscode-api">Chat Participant & Tool APIs</a></li> <li><a href="https://github.com/microsoft/vscode-prompt-tsx" class="external-link" target="_blank">prompt-tsx</a></li> <li>How to leverage the language models provided by GitHub Copilot</li> </ul> <p>Try these extensions and see how you can extend Copilot in your own extensions.</p> <table class="table table-striped"> <thead> <tr> <th>Extension</th> <th>Links</th> </tr> </thead> <tbody> <tr> <td>GitHub Pull Requests</td> <td><a href="https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github" class="external-link" target="_blank">Marketplace</a></td> </tr> <tr> <td>Web Search for Copilot</td> <td><a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-websearchforcopilot" class="external-link" target="_blank">Marketplace</a>, <a href="https://github.com/microsoft/vscode-websearchforcopilot" class="external-link" target="_blank">source code</a></td> </tr> <tr> <td>MermAId diagram generation with Copilot</td> <td><a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.copilot-mermaid-diagram" class="external-link" target="_blank">Marketplace</a></td> </tr> <tr> <td>Data Analysis for Copilot</td> <td><a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-copilot-data-analysis" class="external-link" target="_blank">Marketplace</a>, <a href="https://github.com/microsoft/vscode-data-analysis-for-copilot" class="external-link" target="_blank">source code</a></td> </tr> <tr> <td>VS Code Commander</td> <td><a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-commander" class="external-link" target="_blank">Marketplace</a></td> </tr> <tr> <td>Vision for Copilot Preview</td> <td><a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-copilot-vision" class="external-link" target="_blank">Marketplace</a></td> </tr> </tbody> </table> <h4 id="_github-pull-requests" data-needslink="_github-pull-requests">GitHub Pull Requests</h4> <p>Version <a href="https://github.com/microsoft/vscode-pull-request-github/blob/main/CHANGELOG.md#01000" class="external-link" target="_blank">0.100.0</a> of the <a href="https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github" class="external-link" target="_blank">GitHub Pull Requests</a> extension adds Copilot integration:</p> <ul> <li>Use the <code>@githubpr</code> chat participant in the Chat view to search for issues, summarize issues/prs, and suggest fixes for issues. <code>@githubpr</code> uses a number of Language Model tools to accomplish this.</li> <li>There's also a new <strong>Notifications</strong> view that shows GitHub notifications, with an action to prioritize them with Copilot.</li> </ul> <p>To try everything out, you can set the following settings:</p> <ul> <li><span class="setting"><a href="vscode://settings/githubPullRequests.experimental.chat" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'githubPullRequests.experimental.chat' in Settings Editor"></span></a>githubPullRequests.experimental.chat</span></li> <li><span class="setting"><a href="vscode://settings/githubPullRequests.experimental.notificationsView" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'githubPullRequests.experimental.notificationsView' in Settings Editor"></span></a>githubPullRequests.experimental.notificationsView</span></li> </ul> <h5>Issue Search with Copilot</h5> <p>The new <code>@githubpr</code> Chat participant can search for issues on GitHub.</p> <p><img src="/assets/updates/1_95/copilot-issue-search-most-bugs.png" alt="Copilot issue search for most open bugs." loading="lazy"></p> <p>When displaying issues, <code>@githubpr</code> shows a Markdown table and tries to pick the best columns to show, based on the search.</p> <p><img src="/assets/updates/1_95/copilot-issue-search.png" alt="Copilot issue search for closed October issues." loading="lazy"></p> <h5>Summarizing and Fixing with Copilot</h5> <p>Each issue listed in the <strong>Issues</strong> view now has a new action, <strong>Summarize With Copilot</strong>, that opens the Chat panel and summarizes the selected issue. We also added another action, <strong>Fix With Copilot</strong>, that summarizes the selected issue and uses the workspace context to suggest a fix for it.</p> <p><video src="/assets/updates/1_95/fix-summarize-issue.mp4" title="Summarize and Fix GitHub issue" autoplay loop controls muted></video></p> <h5>Notification Prioritization with Copilot (Experimental)</h5> <p>This milestone, we added an experimental <strong>Notifications</strong> view that lists your unread notifications across repositories. By default, the notifications are sorted by most recently updated descending, but you can use the <strong>Sort by Priority using Copilot</strong> action from the view title's <code>...</code> menu to have Copilot prioritize the notifications. Selecting each notification triggers an action to summarize the notification using Copilot. The view also contains easily accessible actions to mark a notification as read, or to open the notification on GitHub.com.</p> <p><img src="/assets/updates/1_95/notifications-view.png" alt="Notifications View" loading="lazy"></p> <h4 id="_web-search-for-copilot" data-needslink="_web-search-for-copilot">Web Search for Copilot</h4> <p>This extension showcases:</p> <ul> <li>Chat Participant & Tool APIs</li> <li><a href="https://github.com/microsoft/vscode-prompt-tsx" class="external-link" target="_blank">prompt-tsx</a></li> <li>How to leverage the language models provided by GitHub Copilot</li> </ul> <p>The source code is <a href="https://github.com/microsoft/vscode-websearchforcopilot" class="external-link" target="_blank">available on GitHub here</a>.</p> <h5>Description</h5> <p>Get the most up-to-date and relevant information from the web right in Copilot.</p> <p>This is powered by one of two different search engines, configured by <span class="setting"><a href="vscode://settings/websearch.preferredEngine" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'websearch.preferredEngine' in Settings Editor"></span></a>websearch.preferredEngine</span>:</p> <ul> <li><a href="http://tavily.com" class="external-link" target="_blank">Tavily</a> (default)</li> <li><a href="https://bing.com" class="external-link" target="_blank">Bing</a></li> </ul> <p>As a user, you'll need to acquire an API key from one of these services to use this extension. Upon first use, it asks you for that key and stores it using VS Code's built-in secret storage, and can be managed via VS Code's authentication stack as well just as you would for your GitHub account.</p> <h5>Chat participant</h5> <p>This extension contributes the <code>@websearch</code> chat participant, which is capable of handling questions that likely need live information from the internet. You can invoke it manually using <code>@websearch when did Workspace Trust ship in vscode?</code></p> <p><img src="/assets/updates/1_95/websearch-participant.png" alt="The question "when did Workspace Trust ship in vscode" and the answer showing the references and details." loading="lazy"></p> <h5>Chat tool</h5> <p>This extension contributes the <code>#websearch</code> chat language model tool as well, which is similar to the participant but is useful for providing context from the web in other chat participants. For example:</p> <ul> <li><code>@workspace /new #websearch create a new web app written in Python using the most popular framework</code></li> </ul> <p><img src="/assets/updates/1_95/websearch-tool.png" alt="The question "create a new web app written in Python using the most popular framework" using the websearch variable with /new. The result is a project using Django." loading="lazy"></p> <p>Additionally, if you are working on your own Chat particpant or tool, you can consume this Chat tool via the <code>vscode.lm.invokeTool</code> API.</p> <h4 id="_mermaid-diagram-generation-with-copilot" data-needslink="_mermaid-diagram-generation-with-copilot">MermAId diagram generation with Copilot</h4> <p>The vscode-mermAId (<code>vscode:extension/ms-vscode.copilot-mermaid-diagram</code>) extension contributes a new chat participant to GitHub Copilot to build and modify visualizations for your code with Mermaid, a Markdown-inspired diagraming and charting tool.</p> <h5>Create and render diagrams</h5> <p>Create any type of Mermaid-supported diagrams through chat conversations and use the <code>/iterate</code> slash command to refine the diagram. Slash commands are available for specific diagrams to provide extra guidance to the model.</p> <p><video src="/assets/updates/1_95/iterate-on-sequence-diagram.mp4" title="Create a sequence diagram then iterate to remove a participant" autoplay loop controls muted></video></p> <p>Links are added for certain diagram types, like flow, to point back to the references that were gathered to build the diagram.</p> <p><video src="/assets/updates/1_95/diagram-with-links-short.mp4" title="Generate a diagram then click a link back to a referenced piece of code" autoplay loop controls muted></video></p> <h5>Mermaid Visual Outline view</h5> <p>Open the <strong>Visual Outline</strong> view to dynamically generate diagrams from the active editor. You can break out into chat for finer control.</p> <p><video src="/assets/updates/1_95/mermaid-outline-view-iterate.mp4" title="Uses the mermaid visual outline view to generate a diagram and then iterate on it with chat" autoplay loop controls muted></video></p> <h5>Chat tool</h5> <p>The extension contributes a tool to gather symbol information within files or the entire workspace and that can be consumed by other chat participants when this extension is installed.</p> <h4 id="_data-analysis-for-copilot" data-needslink="_data-analysis-for-copilot">Data Analysis for Copilot</h4> <p>The Data Analysis for Copilot extension empowers people in the data science field. From cleaning up a <code>.csv</code> file, to performing higher-level data analysis by leveraging different statistics measures, graphs, and predictive models, the <code>@data</code> chat participant helps make more advanced and informed decisions by offering tailored insights and interactivity for data tasks.</p> <p>The extension contributes a tool where the LLM can ask to execute Python code by using <a href="https://pyodide.org/en/stable/" class="external-link" target="_blank">Pyodide</a> and get the result of the relevant Python code execution. It is also able to smartly retry for better or more appropriate execution results in case of errors. You can also export the code that is used to perform the analysis (or generate visualizations) into a Jupyter Notebook or a Python file.</p> <p>You can download the extension from <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-copilot-data-analysis" class="external-link" target="_blank">the marketplace</a> and the source is <a href="https://github.com/microsoft/vscode-data-analysis-for-copilot" class="external-link" target="_blank">available on GitHub here</a>.</p> <h5>Data analysis and visualizations</h5> <ul> <li>Given a CSV file, enter a prompt such as <code>Analyze the file #<file name></code> or write a more specific prompt (see below recording)</li> <li>Provide follow-up prompts to request the generation of visualizations, such as charts, plots, and more</li> </ul> <p><video src="/assets/updates/1_95/data-analysis-chat-participant.mp4" title="Analyzing CSV file using data analysis chat participant in Copilot." autoplay loop controls muted></video></p> <h5>Exporting the code used to perform the data analysis</h5> <ul> <li>The Python code used to perform the analysis and generate visualizations can be viewed</li> <li>The Code can be exported in a Jupyter notebook or a Python file</li> </ul> <p><video src="/assets/updates/1_95/data-analysis-export-chat-participant.mp4" title="Exporting code used to perform data analysis and generate visualizations." autoplay loop controls muted></video></p> <h5>Editor and explorer integrations for CSV files</h5> <ul> <li>Right-click on a CSV file to analyze it</li> <li>Open a CSV file and use the Copilot icon to analyze the file</li> </ul> <p><video src="/assets/updates/1_95/data-analysis-csv-chat-participant.mp4" title="Exporting code used to perform data analysis and generate visualizations." autoplay loop controls muted></video></p> <h4 id="_vs-code-commander-extension" data-needslink="_vs-code-commander-extension">VS Code Commander extension</h4> <p>The VS Code Commander extension (<code>vscode:extension/ms-vscode.vscode-commander</code>) acts as your personal assistant within VS Code. This powerful tool enables you to configure your VS Code environment by using conversational, free-form text. With the VS Code Commander, you can:</p> <ul> <li>Discover and explore various settings and commands</li> <li>Tailor your development environment to your needs</li> </ul> <p>These actions can be performed through a simple and intuitive chat interface, making it easier than ever to manage your VS Code configuration.</p> <p><video src="/assets/updates/1_95/vscode-commander-demo.mp4" title="Showing off VS Code Commander capabilities in the copilot chat view" autoplay loop controls muted></video></p> <h4 id="_vision-for-copilot-preview-extension" data-needslink="_vision-for-copilot-preview-extension">Vision for Copilot Preview extension</h4> <p>The Vision for Copilot Preview extension (<code>vscode:extension/ms-vscode.vscode-copilot-vision</code>) enables you to attach images directly as contextual input, enriching conversations and enabling more dynamic, visually-supported responses. This extension will be eventually deprecated in favor of built-in image flow in Github Copilot Chat.</p> <h5>Vision in Chat</h5> <p>For now, you can experience the image attachment flow in the Chat view by using your own OpenAI, Azure OpenAI, Anthropic, or Gemini keys. Get started by easily attaching images from the clipboard or dragging them directly into the chat.</p> <p><img src="/assets/updates/1_95/demo.gif" alt="Screenshot of a chat exchange. A user asks for HTML and CSS for a landing page. The response provides a basic HTML structure with a header, navigation links (Home, About, Contact), and a link to an external CSS file." loading="lazy"></p> <p><em>Theme: <a href="https://marketplace.visualstudio.com/items?itemName=Tyriar.theme-sapphire" class="external-link" target="_blank">Sapphire</a> (preview on <a href="https://vscode.dev/editor/theme/Tyriar.theme-sapphire" class="external-link" target="_blank">vscode.dev</a>)</em></p> <h5>Vision with Quick Fixes</h5> <p>Additionally, you can generate or refine alt text for images in markdown, HTML, JSX, or TSX documents with the provided code actions, simplifying the process of incorporating descriptive text for better context and accessibility. Alt text quick fixes work for images in the workspace and image URLs.</p> <p><img src="/assets/updates/1_95/demo-alt-text.gif" alt="An example markdown document displays a quick fix feature for generating alt text, resulting in the automatic insertion of an alt tag and a value. The user is then prompted with a different quick fix to refine the alt text using an input box. After the user enters and submits their refined description, the alt text is updated accordingly." loading="lazy"></p> <p>This extension uses the <code>ChatReferenceBinaryData</code> proposed API. Feel free to check out an example of how it's used in the source code, <a href="https://github.com/microsoft/vscode-copilot-vision" class="external-link" target="_blank">available on GitHub here</a>.</p> <h3 id="_python" data-needslink="_python">Python</h3> <h4 id="_native-repl-variables-view" data-needslink="_native-repl-variables-view">Native REPL Variables view</h4> <p>The Native Python REPL now provides up-to-date variables for the built-in Variables view. This lets you dig into the state of the interpreter as you execute code from files or through the REPL input box.</p> <p><video src="/assets/updates/1_95/python-variable-view.mp4" title="Opening the variable view within the debug panel after executing code in the native REPL" autoplay loop controls muted></video></p> <h4 id="_generate-docstrings-with-pylance" data-needslink="_generate-docstrings-with-pylance">Generate docstrings with Pylance</h4> <p>You can now more conveniently generate documentation for your Python code with <a href="https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance" class="external-link" target="_blank">Pylance</a>'s docstrings template generation feature! You can generate a docstring template for classes or methods by typing <code>"""</code> or <code>'''</code>, pressing <span class="keybinding">Ctrl+Space</span>, or selecting the lightbulb to invoke the <strong>Generate Docstring</strong> code action. The generated docstring includes fields for the function's description, parameters, parameter types, return and return types.</p> <p><video src="/assets/updates/1_95/pylance-generate-docstring.mp4" title="Generating docstring templates for a function with Pylance by invoking Ctrl+Space inside a pair of triple quotes." autoplay loop controls muted></video></p> <p>This feature is currently behind an experimental setting, but we look forward to making it the default experience soon. You can try it out today by enabling the <span class="setting"><a href="vscode://settings/python.analysis.supportDocstringTemplate" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'python.analysis.supportDocstringTemplate' in Settings Editor"></span></a>python.analysis.supportDocstringTemplate</span> setting.</p> <h4 id="_fold-all-docstrings" data-needslink="_fold-all-docstrings">Fold all docstrings</h4> <p>Documentation strings are great for providing context and explanations for your code, but sometimes you might want to fold them to focus on the code itself. You can now more easily do so by folding docstrings with the new <strong>Pylance: Fold All Docstrings</strong> command, which can also be bound to a keybinding of your choice. To unfold them, use the <strong>Pylance: Unfold All Docstrings</strong> command.</p> <p><video src="/assets/updates/1_95/pylance-fold-docstrings.mp4" title="Folding and unfolding docstrings with Pylance's new commands." autoplay loop controls muted></video></p> <h4 id="_improved-import-suggestions" data-needslink="_improved-import-suggestions">Improved import suggestions</h4> <p>One of Pylance's powerful features is its ability to provide auto-import suggestions. By default, Pylance offers the import suggestion from where the symbol is defined, but you might want it to import it from a file where the symbol is imported (i.e. aliased). With the new <span class="setting"><a href="vscode://settings/python.analysis.includeAliasesFromUserFiles" codesetting="true"><span class="codicon codicon-settings-gear dynamic-setting-icon" title="Open 'python.analysis.includeAliasesFromUserFiles' in Settings Editor"></span></a>python.analysis.includeAliasesFromUserFiles</span> setting, you can now control whether Pylance includes alias symbols from user files in its auto-import suggestions or in the add import Quick Fix.</p> <p>Note that enabling this setting can negatively impact performance, especially in large codebases, as Pylance may need to index more symbols and monitor more files for changes, which can increase resource usage.</p> <h4 id="_experimental-ai-code-action-implement-abstract-classes" data-needslink="_experimental-ai-code-action-implement-abstract-classes">Experimental AI Code Action: Implement Abstract Classes</h4> <p>You can now get the best of both worlds with AI and static analysis with the new experimental Code Action to implement abstract classes! This feature requires both <a href="https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance" class="external-link" target="_blank">Pylance</a> and the <a href="https://marketplace.visualstudio.com/items?itemName=GitHub.copilot-chat" class="external-link" target="_blank">GitHub Copilot</a> extensions. To try it out, you can select the <strong>Implement all inherited abstract classes with Copilot</strong> Code Action when defining a class that inherits from an abstract one.</p> <p><video src="/assets/updates/1_95/pylance-ai-code-action.mp4" title="Implementing methods from an inherited abstract class with code action from Pylance and Copilot." autoplay loop controls muted></video></p> <p>You can disable this feature by setting <code>"python.analysis.aiCodeActions": {"implementAbstractClasses": false}</code> in your User settings.</p> <h2 id="_extension-authoring" data-needslink="_extension-authoring">Extension Authoring</h2> <h3 id="_tools-for-language-models" data-needslink="_tools-for-language-models">Tools for language models</h3> <p>We have finalized our <a href="https://code.visualstudio.com/api/references/vscode-api#lm.tools"><code>LanguageModelTool</code> API</a>! This API enables chat extensions to build more powerful experiences by connecting language models to external data sources, or take actions. The API comes with two major parts:</p> <ol> <li> <p>The ability for extensions to register a <em>tool</em>. A tool is a piece of functionality that is meant to be used by language models. For example, reading the Git history of a file. When a tool is registered using the <code>lm.registerTool</code> method, it's accessible to other extensions as well, in the <code>lm.tools</code> list. This will enable chat extensions to seamlessly integrate with other extensions via an ecosystem of shared tools.</p> </li> <li> <p>The mechanics for language models to support tools, such as extensions passing tools when making a request, language models requesting a tool invocation, and extensions communicating back the result of a tool invocation.</p> </li> </ol> <p>The use of language model tools is complex, and this API does not hide that complexity. If you want to register a tool or make use of tools in your chat participant, we recommend starting with the <a href="https://github.com/microsoft/vscode-extension-samples/tree/main/chat-sample" class="external-link" target="_blank">extension sample</a>.</p> <h3 id="_chat-participant-detection" data-needslink="_chat-participant-detection">Chat participant detection</h3> <p>We have finalized our API for chat participant detection, which allows GitHub Copilot to automatically select your chat participant or participant command to handle a user's question. Please check out <a href="/api/extension-guides/chat#_implement-participant-detection">our documentation</a> for a detailed tutorial and recommendations.</p> <h3 id="_vs-code-speech" data-needslink="_vs-code-speech">VS Code Speech</h3> <p>The <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-speech" class="external-link" target="_blank">VS Code Speech</a> extension is updated to the August version of the <a href="https://learn.microsoft.com/en-us/azure/ai-services/speech-service/releasenotes?tabs=speech-sdk#speech-sdk-140-2024-august-release" class="external-link" target="_blank">Azure Speech SDK</a> and comes with newer models for speech-to-text recognition. You should see improved results with this update for the <a href="https://code.visualstudio.com/docs/editor/voice">speech-to-text integrations in VS Code</a>, such as Copilot Chat.</p> <h3 id="_comment-thread-collapsiblestate" data-needslink="_comment-thread-collapsiblestate">Comment Thread <code>collapsibleState</code></h3> <p>The expand/collapse state of a <code>CommentThread</code> can be changed using the new <code>CommentThread.collapsibleState</code> property, even once the thread has already been shown. Previously, this property would only be respected the first time the comment thread was shown.</p> <h3 id="_codicons-in-welcome-views" data-needslink="_codicons-in-welcome-views">Codicons in welcome views</h3> <p>Welcome views now support the ability to render codicons. You can do so using the usual <code>$(icon-name)</code> in your welcome view.</p> <p><img src="/assets/updates/1_95/welcome-view-codicons.png" alt="A sample welcome view showing the use of text, links, buttons, and codicons." loading="lazy"></p> <h3 id="_chat-participant-access-to-model-picker" data-needslink="_chat-participant-access-to-model-picker">Chat participant access to model picker</h3> <p>You may have noticed the model picker in the Chat view, which lets you select the model that is used for a chat request.</p> <p><img src="/assets/updates/1_94/copilot-model-picker.png" alt="Copilot model picker control in the Chat view enables switching to another language model." loading="lazy"></p> <p>Your chat participant extension needs to adopt a new API in order to use this model picker. We just finalized a new <code>model</code> property on the <code>ChatRequest</code> object, which will be set to the <code>LanguageModelChat</code> instance for the model in the picker. You can use this instead of the <code>lm.selectChatModels</code> method. If your extension wants to use a particular model besides the selected one, you can still use <code>lm.selectChatModels</code> instead.</p> <h2 id="_preview-features" data-needslink="_preview-features">Preview Features</h2> <h3 id="_typescript-57" data-needslink="_typescript-57">TypeScript 5.7</h3> <p>We've continued improving our support for the upcoming TypeScript 5.7 release. Check out the <a href="https://devblogs.microsoft.com/typescript/announcing-typescript-5-7-beta/" class="external-link" target="_blank">TypeScript 5.7 beta blog post</a> and the <a href="https://github.com/microsoft/TypeScript/issues/59905" class="external-link" target="_blank">TypeScript 5.7 plan</a> for details.</p> <p>To start using preview builds of TypeScript 5.7, install the <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-typescript-next" class="external-link" target="_blank">TypeScript Nightly extension</a>.</p> <h3 id="_update-imports-on-paste-for-javascript-and-typescript" data-needslink="_update-imports-on-paste-for-javascript-and-typescript">Update imports on paste for JavaScript and TypeScript</h3> <p>Tired of having to add imports after moving code between files? Try out our experimental support for updating imports on paste! When you copy and paste code between editors, VS Code automatically adds imports when the code is pasted:</p> <p><video src="/assets/updates/1_95/jsts-update-imports-paste.mp4" title="Title" autoplay loop controls muted></video></p> <p>Notice how it not only added imports, it even added a new export for a local variable that was used in the pasted code!</p> <p>To try this out today, make sure you are using TypeScript 5.7+. Then enable <code>javascript.experimental.updateImportsOnPaste</code>/<code>typescript.experimental.updateImportsOnPaste</code>. Currently this is only supported when pasting between text editors in the same VS Code window.</p> <h2 id="_proposed-apis" data-needslink="_proposed-apis">Proposed APIs</h2> <h3 id="_chat-reference-binary-data-for-image-attachments" data-needslink="_chat-reference-binary-data-for-image-attachments">Chat Reference Binary Data for image attachments</h3> <p>We now allow images (<code>png</code>, <code>jpeg</code>, <code>bmp</code>, <code>gif</code>, and <code>tiff</code>) to be pasted in chat if there is an extension that uses the <code>ChatReferencebinaryData</code> proposed API.</p> <pre class="shiki" style="background-color: #1e1e1e"><code><span class="line"><span style="color: #C586C0">export</span><span style="color: #BBBBBB"> </span><span style="color: #569CD6">class</span><span style="color: #BBBBBB"> </span><span style="color: #4EC9B0">ChatReferenceBinaryData</span><span style="color: #BBBBBB"> {</span></span> <span class="line"><span style="color: #BBBBBB"> </span><span style="color: #6A9955">/**</span></span> <span class="line"><span style="color: #6A9955"> * The MIME type of the binary data.</span></span> <span class="line"><span style="color: #6A9955"> */</span></span> <span class="line"><span style="color: #BBBBBB"> </span><span style="color: #569CD6">readonly</span><span style="color: #BBBBBB"> </span><span style="color: #9CDCFE">mimeType</span><span style="color: #D4D4D4">:</span><span style="color: #BBBBBB"> </span><span style="color: #4EC9B0">string</span><span style="color: #BBBBBB">;</span></span> <span class="line"></span> <span class="line"><span style="color: #BBBBBB"> </span><span style="color: #6A9955">/**</span></span> <span class="line"><span style="color: #6A9955"> * Retrieves the binary data of the reference.</span></span> <span class="line"><span style="color: #6A9955"> * </span><span style="color: #569CD6">@returns</span><span style="color: #6A9955"> A promise that resolves to the binary data as a Uint8Array.</span></span> <span class="line"><span style="color: #6A9955"> */</span></span> <span class="line"><span style="color: #BBBBBB"> </span><span style="color: #DCDCAA">data</span><span style="color: #BBBBBB">()</span><span style="color: #D4D4D4">:</span><span style="color: #BBBBBB"> </span><span style="color: #4EC9B0">Thenable</span><span style="color: #BBBBBB"><</span><span style="color: #4EC9B0">Uint8Array</span><span style="color: #BBBBBB">>;</span></span> <span class="line"></span> <span class="line"><span style="color: #BBBBBB"> </span><span style="color: #6A9955">/**</span></span> <span class="line"><span style="color: #6A9955"> * </span><span style="color: #569CD6">@param</span><span style="color: #6A9955"> </span><span style="color: #9CDCFE">mimeType</span><span style="color: #6A9955"> The MIME type of the binary data.</span></span> <span class="line"><span style="color: #6A9955"> * </span><span style="color: #569CD6">@param</span><span style="color: #6A9955"> </span><span style="color: #9CDCFE">data</span><span style="color: #6A9955"> The binary data of the reference.</span></span> <span class="line"><span style="color: #6A9955"> */</span></span> <span class="line"><span style="color: #BBBBBB"> </span><span style="color: #569CD6">constructor</span><span style="color: #BBBBBB">(</span><span style="color: #9CDCFE">mimeType</span><span style="color: #D4D4D4">:</span><span style="color: #BBBBBB"> </span><span style="color: #4EC9B0">string</span><span style="color: #BBBBBB">, </span><span style="color: #DCDCAA">data</span><span style="color: #D4D4D4">:</span><span style="color: #BBBBBB"> () </span><span style="color: #569CD6">=></span><span style="color: #BBBBBB"> </span><span style="color: #4EC9B0">Thenable</span><span style="color: #BBBBBB"><</span><span style="color: #4EC9B0">Uint8Array</span><span style="color: #BBBBBB">>);</span></span> <span class="line"><span style="color: #BBBBBB">}</span></span> <span class="line"></span></code></pre> <p>Extension authors can access this after creating a chat handler via <code>request.references</code>, which can be a <code>URI</code> when images are attached via drag and drop or from the quick pick, or will be <code>ChatReferenceBinaryData</code> for pasted images.</p> <h2 id="_engineering" data-needslink="_engineering">Engineering</h2> <h3 id="_prompt-building-library-for-llms" data-needslink="_prompt-building-library-for-llms">Prompt building library for LLMs</h3> <p>This month, we open sourced our <a href="https://www.npmjs.com/package/@vscode/prompt-tsx" class="external-link" target="_blank">@vscode/prompt-tsx</a> library, which we've developed and used in Copilot Chat over the past year for crafting language model prompts. The library enables developers to create their prompts using TSX/JSX syntax, similar to React, and includes a variety of tools to make the best use of prompts' token budget.</p> <h3 id="_amd-code-removal-and-more-esm-use-in-web" data-needslink="_amd-code-removal-and-more-esm-use-in-web">AMD code removal and more ESM use in web</h3> <p>We removed the last traces of AMD (Asynchronous Module Definition) from our sources, mainly from the build scripts that we still kept for supporting AMD in case needed for a recovery release.</p> <p>In addition, <a href="https://vscode.dev" class="external-link" target="_blank">https://vscode.dev</a> is now also running 100% with ESM (ECMAScript Modules) only.</p> <h3 id="_migration-to-eslint-9" data-needslink="_migration-to-eslint-9">Migration to ESLint 9</h3> <p>We've updated both the main VS Code repo and all of our <a href="https://github.com/microsoft/vscode-extension-samples" class="external-link" target="_blank">extension samples</a> to use ESLint 9. This included migrating all of our ESLint configuration to use modern <a href="https://eslint.org/blog/2023/10/flat-config-rollout-plans/" class="external-link" target="_blank">flat configs</a>.</p> <h3 id="_electron-32-update" data-needslink="_electron-32-update">Electron 32 update</h3> <p>In this milestone, we are promoting the Electron 32 update to users on our stable release. This update comes with Chromium 128.0.6613.186 and Node.js 20.18.0. We want to thank everyone who self-hosted on Insiders builds and provided early feedback.</p> <h2 id="_notable-fixes" data-needslink="_notable-fixes">Notable fixes</h2> <ul> <li><a href="https://github.com/microsoft/vscode/issues/177046" class="external-link" target="_blank">177046</a> will crash after searching at extension panel</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> </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>window.experimentalControlOverlay</code>'s scope to application <a href="https://github.com/microsoft/vscode/pull/230593" class="external-link" target="_blank">PR #230593</a></li> <li><a href="https://github.com/asemdreibati" class="external-link" target="_blank">@asemdreibati (Asem Dreibati)</a>: handle edge case in slice function in Iterable namespace (#_230683) <a href="https://github.com/microsoft/vscode/pull/232134" class="external-link" target="_blank">PR #232134</a></li> <li><a href="https://github.com/BABA983" class="external-link" target="_blank">@BABA983 (BABA)</a> <ul> <li>Add developer action to show gpu status <a href="https://github.com/microsoft/vscode/pull/222291" class="external-link" target="_blank">PR #222291</a></li> <li>Fix debug console is cleared on style changed <a href="https://github.com/microsoft/vscode/pull/224694" class="external-link" target="_blank">PR #224694</a></li> <li>Support open in editor in git editor <a href="https://github.com/microsoft/vscode/pull/226967" class="external-link" target="_blank">PR #226967</a></li> </ul> </li> <li><a href="https://github.com/Bistard" class="external-link" target="_blank">@Bistard (SIHAN LI)</a>: Fix typo: context view anchor option might be dismissed when using <code>||</code> <a href="https://github.com/microsoft/vscode/pull/228896" class="external-link" target="_blank">PR #228896</a></li> <li><a href="https://github.com/cobey" class="external-link" target="_blank">@cobey (Cody Beyer)</a>: added mistral ai npm package <a href="https://github.com/microsoft/vscode/pull/229865" class="external-link" target="_blank">PR #229865</a></li> <li><a href="https://github.com/elias-pap" class="external-link" target="_blank">@elias-pap (Elias Papavasileiou)</a>: fix: improve settings descriptions for actions triggered on save <a href="https://github.com/microsoft/vscode/pull/230052" class="external-link" target="_blank">PR #230052</a></li> <li><a href="https://github.com/gjsjohnmurray" class="external-link" target="_blank">@gjsjohnmurray (John Murray)</a>: Correct Menu Contexts info on extension's Commands page (fix #229258) <a href="https://github.com/microsoft/vscode/pull/229260" class="external-link" target="_blank">PR #229260</a></li> <li><a href="https://github.com/hamirmahal" class="external-link" target="_blank">@hamirmahal (Hamir Mahal)</a>: style: simplify string formatting for readability <a href="https://github.com/microsoft/vscode/pull/231763" class="external-link" target="_blank">PR #231763</a></li> <li><a href="https://github.com/injust" class="external-link" target="_blank">@injust (Justin Su)</a>: Fix "in none full screen mode" typo <a href="https://github.com/microsoft/vscode/pull/229914" class="external-link" target="_blank">PR #229914</a></li> <li><a href="https://github.com/jamesharris-garmin" class="external-link" target="_blank">@jamesharris-garmin (James Harris)</a>: Fix missing __dirname in --locate-shell-integration-path <a href="https://github.com/microsoft/vscode/pull/231423" class="external-link" target="_blank">PR #231423</a></li> <li><a href="https://github.com/jeanp413" class="external-link" target="_blank">@jeanp413 (Jean Pierre)</a>: Fix if logOutputChannel is created again after being disposed, it will disappear <a href="https://github.com/microsoft/vscode/pull/225709" class="external-link" target="_blank">PR #225709</a></li> <li><a href="https://github.com/Kaidesuyoo" class="external-link" target="_blank">@Kaidesuyoo (Kaidesuyo)</a>: Performance optimization <a href="https://github.com/microsoft/vscode/pull/230804" class="external-link" target="_blank">PR #230804</a></li> <li><a href="https://github.com/kkshinkai" class="external-link" target="_blank">@kkshinkai (Kk Shinkai)</a>: Correctly trigger the <code>onDidAddListener</code> event in emitter options <a href="https://github.com/microsoft/vscode/pull/230259" class="external-link" target="_blank">PR #230259</a></li> <li><a href="https://github.com/Parasaran-Python" class="external-link" target="_blank">@Parasaran-Python (Parasaran)</a>: 228640: Hiding prelaunch task popup if the setting to hide it is enabled <a href="https://github.com/microsoft/vscode/pull/231225" class="external-link" target="_blank">PR #231225</a></li> <li><a href="https://github.com/quiple" class="external-link" target="_blank">@quiple (Minseo Lee)</a>: Change Korean font priority <a href="https://github.com/microsoft/vscode/pull/230195" class="external-link" target="_blank">PR #230195</a></li> <li><a href="https://github.com/r3m0t" class="external-link" target="_blank">@r3m0t (Tomer Chachamu)</a>: Fix scrolling of Test Results when a new test starts (fixes #229531) <a href="https://github.com/microsoft/vscode/pull/229532" class="external-link" target="_blank">PR #229532</a></li> <li><a href="https://github.com/sandersn" class="external-link" target="_blank">@sandersn (Nathan Shively-Sanders)</a>: TS extension: register call to CopilotRelated with copilot extension <a href="https://github.com/microsoft/vscode/pull/228610" class="external-link" target="_blank">PR #228610</a></li> <li><a href="https://github.com/ShadowRZ" class="external-link" target="_blank">@ShadowRZ (夜坂雅)</a>: fix: Use a proper desktop name in package.json <a href="https://github.com/microsoft/vscode/pull/231472" class="external-link" target="_blank">PR #231472</a></li> <li><a href="https://github.com/trevor-scheer" class="external-link" target="_blank">@trevor-scheer (Trevor Scheer)</a>: Marker message white-space <code>nowrap</code> -> <code>pre</code> <a href="https://github.com/microsoft/vscode/pull/229454" class="external-link" target="_blank">PR #229454</a></li> <li><a href="https://github.com/vietanhtwdk" class="external-link" target="_blank">@vietanhtwdk</a>: rerender on resize stickyscroll <a href="https://github.com/microsoft/vscode/pull/227400" class="external-link" target="_blank">PR #227400</a></li> <li><a href="https://github.com/yanglb" class="external-link" target="_blank">@yanglb (Yanblb)</a>: add type checking to decorators <a href="https://github.com/microsoft/vscode/pull/230626" class="external-link" target="_blank">PR #230626</a></li> </ul> <p>Contributions to <code>vscode-docs</code>:</p> <ul> <li><a href="https://github.com/Cecil0o0" class="external-link" target="_blank">@Cecil0o0 (hj)</a> <ul> <li>doesn't provide built-in language support in the core editor <a href="https://github.com/microsoft/vscode-docs/pull/7679" class="external-link" target="_blank">PR #7679</a></li> <li>location is restricted in a limited area for debug toolbar as <code>floating</code> <a href="https://github.com/microsoft/vscode-docs/pull/7704" class="external-link" target="_blank">PR #7704</a></li> <li>Outdated command title <a href="https://github.com/microsoft/vscode-docs/pull/7705" class="external-link" target="_blank">PR #7705</a></li> </ul> </li> <li><a href="https://github.com/echofly" class="external-link" target="_blank">@echofly</a>: Update v1_94.md <a href="https://github.com/microsoft/vscode-docs/pull/7677" class="external-link" target="_blank">PR #7677</a></li> <li><a href="https://github.com/ghosted-sound" class="external-link" target="_blank">@ghosted-sound</a> <ul> <li>Update aksextensions.md <a href="https://github.com/microsoft/vscode-docs/pull/7693" class="external-link" target="_blank">PR #7693</a></li> <li>Update package-management.md <a href="https://github.com/microsoft/vscode-docs/pull/7694" class="external-link" target="_blank">PR #7694</a></li> </ul> </li> <li><a href="https://github.com/gjsjohnmurray" class="external-link" target="_blank">@gjsjohnmurray (John Murray)</a> <ul> <li>Document the <code>hide</code> property <a href="https://github.com/microsoft/vscode-docs/pull/7643" class="external-link" target="_blank">PR #7643</a></li> <li>Fix typo <a href="https://github.com/microsoft/vscode-docs/pull/7687" class="external-link" target="_blank">PR #7687</a></li> </ul> </li> <li><a href="https://github.com/oleschri" class="external-link" target="_blank">@oleschri</a>: add argument --update-extensions <a href="https://github.com/microsoft/vscode-docs/pull/7681" class="external-link" target="_blank">PR #7681</a></li> <li><a href="https://github.com/partev" class="external-link" target="_blank">@partev</a>: fix URL redirect <a href="https://github.com/microsoft/vscode-docs/pull/7640" class="external-link" target="_blank">PR #7640</a></li> <li><a href="https://github.com/ptrptrd" class="external-link" target="_blank">@ptrptrd</a>: docs: remove double entries in theme color references <a href="https://github.com/microsoft/vscode-docs/pull/7639" class="external-link" target="_blank">PR #7639</a></li> <li><a href="https://github.com/RonakRahane" class="external-link" target="_blank">@RonakRahane</a>: Added documentation for new Code Coverage in C# Fixes #7635 <a href="https://github.com/microsoft/vscode-docs/pull/7664" class="external-link" target="_blank">PR #7664</a></li> </ul> <p>Contributions to <code>vscode-js-debug</code>:</p> <ul> <li><a href="https://github.com/marcusball" class="external-link" target="_blank">@marcusball (Marcus Ball)</a>: feat: use <code>remoteHostHeader</code> option when looking up websocket address <a href="https://github.com/microsoft/vscode-js-debug/pull/2111" class="external-link" target="_blank">PR #2111</a></li> </ul> <p>Contributions to <code>vscode-languageserver-node</code>:</p> <ul> <li><a href="https://github.com/DanTup" class="external-link" target="_blank">@DanTup (Danny Tuppeny)</a>: Add support for CompletionList "applyKind" to control how defaults and per-item commitCharacters/data are combined <a href="https://github.com/microsoft/vscode-languageserver-node/pull/1558" class="external-link" target="_blank">PR #1558</a></li> </ul> <p>Contributions to <code>vscode-mypy</code>:</p> <ul> <li><a href="https://github.com/jwhitaker-gridcog" class="external-link" target="_blank">@jwhitaker-gridcog (Jarrad)</a>: run mypy in the directory of the nearest pyproject.toml or mypy.ini <a href="https://github.com/microsoft/vscode-mypy/pull/316" class="external-link" target="_blank">PR #316</a></li> </ul> <p>Contributions to <code>vscode-vsce</code>:</p> <ul> <li><a href="https://github.com/andrewlayer" class="external-link" target="_blank">@andrewlayer</a>: Added unpublish to api.ts <a href="https://github.com/microsoft/vscode-vsce/pull/1061" class="external-link" target="_blank">PR #1061</a></li> <li><a href="https://github.com/deribaucourt" class="external-link" target="_blank">@deribaucourt (Enguerrand de Ribaucourt)</a>: Fix regression with workdir symlinks <a href="https://github.com/microsoft/vscode-vsce/pull/1053" class="external-link" target="_blank">PR #1053</a></li> <li><a href="https://github.com/dtivel" class="external-link" target="_blank">@dtivel (Damon Tivel)</a>: Quote <code>filename</code> value in <code>Content-Disposition</code> header <a href="https://github.com/microsoft/vscode-vsce/pull/1060" class="external-link" target="_blank">PR #1060</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> <ul> <li>add systemd <a href="https://github.com/microsoft/language-server-protocol/pull/2034" class="external-link" target="_blank">PR #2034</a></li> <li>add 3 lsp <a href="https://github.com/microsoft/language-server-protocol/pull/2046" class="external-link" target="_blank">PR #2046</a></li> </ul> </li> <li><a href="https://github.com/DanTup" class="external-link" target="_blank">@DanTup (Danny Tuppeny)</a>: Add support for <code>completionList.applyKind</code> to determine how values from <code>completionList.itemDefaults</code> and <code>completion</code> are combined. <a href="https://github.com/microsoft/language-server-protocol/pull/2018" class="external-link" target="_blank">PR #2018</a></li> <li><a href="https://github.com/DavyLandman" class="external-link" target="_blank">@DavyLandman (Davy Landman)</a>: Added Rascal to relevant LSP implementor sections <a href="https://github.com/microsoft/language-server-protocol/pull/2029" class="external-link" target="_blank">PR #2029</a></li> <li><a href="https://github.com/g-plane" class="external-link" target="_blank">@g-plane (Pig Fang)</a>: fix punctuation typo <a href="https://github.com/microsoft/language-server-protocol/pull/2048" class="external-link" target="_blank">PR #2048</a></li> <li><a href="https://github.com/nthykier" class="external-link" target="_blank">@nthykier (Niels Thykier)</a>: Add the <code>debputy</code> language server <a href="https://github.com/microsoft/language-server-protocol/pull/2044" class="external-link" target="_blank">PR #2044</a></li> <li><a href="https://github.com/RainCmd" class="external-link" target="_blank">@RainCmd (渴望蓝天)</a>: Add Rain language server to LSP <a href="https://github.com/microsoft/language-server-protocol/pull/2039" class="external-link" target="_blank">PR #2039</a></li> <li><a href="https://github.com/WilsonZiweiWang" class="external-link" target="_blank">@WilsonZiweiWang (ziweiwang)</a>: Add BitBake language server <a href="https://github.com/microsoft/language-server-protocol/pull/2049" class="external-link" target="_blank">PR #2049</a></li> <li><a href="https://github.com/yasmewad" class="external-link" target="_blank">@yasmewad (Yash Mewada)</a>: Add Smithy language server links to LSP <a href="https://github.com/microsoft/language-server-protocol/pull/2036" class="external-link" target="_blank">PR #2036</a></li> </ul> <p>Contributions to <code>lsprotocol</code>:</p> <ul> <li><a href="https://github.com/nobodywasishere" class="external-link" target="_blank">@nobodywasishere (Margret Riegert)</a>: Add Crystal plugin to README <a href="https://github.com/microsoft/lsprotocol/pull/403" class="external-link" target="_blank">PR #403</a></li> </ul> <p>Contributions to <code>tolerant-php-parser</code>:</p> <ul> <li><a href="https://github.com/TysonAndre" class="external-link" target="_blank">@TysonAndre (Tyson Andre)</a>: Fix php 8.4 notices about implicitly nullable parameters <a href="https://github.com/microsoft/tolerant-php-parser/pull/410" class="external-link" target="_blank">PR #410</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 11 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="#_workbench">Workbench</a></li> <li><a href="#_editor">Editor</a></li> <li><a href="#_vs-code-for-the-web">VS Code for the Web</a></li> <li><a href="#_contributions-to-extensions">Contributions to extensions</a></li> <li><a href="#_extension-authoring">Extension Authoring</a></li> <li><a href="#_preview-features">Preview Features</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 src="/dist/index.js"></script> <script type="application/ld+json"> { "@context" : "http://schema.org", "@type" : "SoftwareApplication", "name" : "Visual Studio Code", "softwareVersion": "1.95", "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>