# April 2023 (version 1.78)
Welcome to the April 2023 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
* **[Accessibility improvements](#accessibility)** - Better screen reader support, new audio cues.
* **[New color themes](#new-default-color-themes)** - "Modern" light and dark color theme defaults.
* **[Profile templates](#profile-templates)** - Built-in templates for Python, Java, Data Science, and more.
* **[Drag and drop selector](#drop-selector)** - Choose how you'd like item links placed into the editor.
* **[Standalone color picker](#standalone-color-picker)** - Color picker UI to insert or modify color formats.
* **[Quick Fixes for Source Control input](#source-control)** - Fix spelling and other errors right in the input box.
* **[Markdown drag and drop videos](#drag-and-drop-videos-into-markdown-files)** - Easily add video tags in Markdown files.
* **[Notebooks insert images as attachments](#drop-image-files-into-notebooks-to-create-attachments)** - Choose between an image link, path, or attachment.
* **[Git LFS and VS Code for the Web](#commit-files-to-git-large-file-storage)** - Use vscode.dev for repos with Git Large File Storage.
* **[VS Code Day 2023](#vs-code-day)** - Catch up on the sessions in the YouTube playlist.
>If you'd like to read these release notes online, go to [Updates](https://code.visualstudio.com/updates) on [code.visualstudio.com](https://code.visualstudio.com).
**Insiders:** Want to try new features as soon as possible? You can download the nightly [Insiders](https://code.visualstudio.com/insiders) build and try the latest updates as soon as they are available.
## Accessibility
### Aria verbosity settings
Screen reader users can exclude hints from a feature's `aria-label` to decrease redundancy via the `"accessibility.verbosity.diff-editor"` and `"accessibility.verbosity.terminal"` settings.
### Improved and aligned Quick Pick experience
Previously, users of accessibility mode experienced different behavior when working with the Command Palette and other Quick Picks. In accessibility mode, the first item of the Quick Pick wasn't selected in order to be fully accessible. This iteration, we've introduced new behavior that allows you to have the best of both worlds: an accessible **and** fast Quick Pick workflow allowing you to hit `kbstyle(Enter)` right away.
>**Note**: One tradeoff with this approach is that if an item in the Quick Pick is selected, you are not able to hear ARIA changes to the Quick Pick input box, due to an ARIA limitation. To hear these changes, you can press `kbstyle(Shift + Tab)` until no item of the list is selected.
### Terminal
#### Terminal accessible buffer improvements
* Jump between commands using `kb(workbench.action.terminal.accessibleBufferGoToNextCommand)` and `kb(workbench.action.terminal.accessibleBufferGoToPreviousCommand)`.
* Use **Set Selection Anchor**, **Select from Anchor to Cursor**, and page navigation via `kb(cursorPageUpSelect)` and `kb(cursorPageDownSelect)`.
* Preview the position when using **Terminal: Navigate Accessible Buffer** (`kb(workbench.action.terminal.navigateAccessibleBuffer)`) before accepting a command to go to a new location.
* Engage with the output while dynamic updates occur.
#### Terminal Accessibility Help menu
The terminal's **Accessibility Help** menu can now be navigated using arrow keys.
### Diff editor audio cue improvements
VS Code now caches audio cues so they only have to be loaded once, yielding better responsiveness, and have improved the tones used for the diff editor.
### Go to Line/Column announcement
When **Go to Line/Column...** (`kb(workbench.action.gotoLine)`) is invoked, the screen reader now reads the associated line content.
## Workbench
### New default Color Themes
New 'Dark Modern' and 'Light Modern' themes replace 'Dark+' and 'Light+' as the new default dark and light color themes.

### Profile templates
[Profiles](https://code.visualstudio.com/docs/editor/profiles) let you quickly switch your editor extensions, settings, and UI layout depending on your current project or task. To help you get started with profiles, we are shipping [Profile Templates](https://code.visualstudio.com/docs/editor/profiles#_profile-templates), which are curated profiles for different programming languages and scenarios. You can use a profile template as is or use it as a starting point to customize further for you own workflows.
You select a profile template through the **Profiles** > **Create Profile...** dropdown:

Once you select a profile template, you can review the settings, extensions, and other data, and remove individual items if you don't want to include them in your new Profile.

After you create the new profile based on a template, changes made to settings, extensions, or UI are persisted to your profile.
### Glyph margin decoration rendering improvements
This month, we've improved the rendering of decorations that appear in the editor margin. Debugging-related decorations such as breakpoints and stack frame pointers will always render next to the editor line numbers. Additional decorations render to the left of any debugging-related decorations. This allows you to view your breakpoints even if there are other decorations on the same line, such as test decorations or bookmarks. Note that clicks are not yet scoped to individual decorations.

### Copy images from the image preview
You can now copy images from the built-in image preview using `kb(editor.action.clipboardCopyAction)` or by right-clicking in the preview and selecting **Copy**. The copied image data can be pasted back into VS Code or into other applications.
## Editor
### Drop selector
VS Code lets you drop files and content into text editors by holding `kbstyle(Shift)` before dropping. In this update, we've added UI that lets you change how this content is inserted into the file. After you drop an image into a Markdown file for example, this control lets you switch between inserting a Markdown image, a workspace relative path to the image, and the full path to the image:
The drop selector control appears whenever you drop content and there is more than one possible way it could be inserted. You can open the control by clicking on it or using `kb(editor.changeDropType)`. The drop selector goes away as soon as you start typing or move the cursor outside of the inserted text. You can also fully disable the drop selector control using `"editor.dropIntoEditor.showDropSelector": "never"`.
VS Code includes a few built-in ways to drop common content formats. Extensions can also add their own drop options using the `DocumentDropEditProvider` API.
### Standalone color picker
It is now possible to launch a standalone color picker in order to insert and replace colors. To open the color picker, select **Show or Focus Standalone Color Picker** from the Command Palette.

When no colors or color formats are provided by extensions, the color-picker falls back to CSS-formatted colors. It is also now possible to visualize inline color decorators for CSS-formatted colors in all file types. To display these decorators, enable the **Editor: Default Color Decorators** (`editor.defaultColorDecorators`) setting.
### New snippet variable for timezone offset
A new snippet variable, `CURRENT_TIMEZONE_OFFSET`, is now available. This variable returns the current timezone offset in the format `+HHMM` or `-HHMM` (for example `-0700`). This complements other time-related snippet variables such as `CURRENT_YEAR`, `CURRENT_MONTH`, `CURRENT_DAY_NAME`, etc.
### Diff algorithm improvements
We continued improving the new diff algorithm in VS Code and deprecated the old algorithm. While the old algorithm is still the default for the diff editor, we will slowly change the default to the new algorithm and measure its performance.
You can override the default by setting `diffEditor.diffAlgorithm` to `advanced` (new diff algorithm) or `legacy` (default).
The new algorithm produces better diffs in many cases, but might be slower for some documents.
Here are some examples (legacy vs. advanced):
* Improved line insertion diffs by considering indentation:


* Improved word insertion diffs by considering space and separator characters:


* More natural diffs by minimizing not just the length of the diff, but also the number of chunks:


* Less noise by extending character level diffs to entire words if a part of the word changed significantly:


Diffing source code and even just evaluating the quality of a diff are hard problems and there is still room for improvement. If you encounter a diff where you think the algorithm could do better, try out our [diff playground](https://microsoft.github.io/monaco-editor/playground.html#XQAAAAJHAwAAAAAAAABBqQkHQ5NjdMjwa-jY7SIQ9S7DNlzs5W-mwj0fe1ZCDRFc9ws9XQE0SJE1jc2VKxhaLFIw9vEWSxW3yscw4B1FRgmSatbNyrNa50VLHWwDOn0YI7IfU0xJ0CGYU1vRtgnKPmZzQcQ1L9J7fCG48SpY2EIkpDE0S8hEos9yyee90RGD-wBeHe7sW88RInZzrk_ZW3jyJzSW_Xvd-X5Sb5qqa6C8CKmDej_-_rDHLSJRRYNrE9HyxNbsCq1E93qQGHETd9ab7kMGiL8C5K8AOGxTe69PiKFFKajiC0j4Vmv_8EEfs-kOqhfKi5-X4HhOM4OwOJEjvadYmtKTyTolnK5yDmgxV1Etg5Hj5Qzi10tewXOIWFf08DQcNm2YhOo-glAabugpGHC9BTZaUBH07kPrbyZjbuiKTPyoABP5oLEiuPLZjj7zFa4LAZCoHZ4WZLUhEbnWGkhiQE2tpW9j_GN7Ig) and share your feedback and ideas in our issue tracker!
### Inline completion improvements
This iteration we rewrote the inline completion feature and fixed [a lot of bugs](https://github.com/microsoft/vscode/issues?q=is%3Aclosed+is%3Aissue+milestone%3A%22April+2023%22+label%3Ainline-completions).
Most notably, **Accept Word** now works across lines and there is a new command **Accept Line**. To support this feature, accepting the next word/line does not ask the extension again, as inline completion provider extensions would often report entirely different suggestions when asking for inline completions of the next line.
## Extensions
### Improved extension recommendations notification
The extension recommendations notification now shows the publisher of the recommended extension. This helps you make a more informed decision before installing the extension. The following images show the new notification when there are recommendations for both a single extension and multiple extensions.


### Informing about installed deprecated extensions
If you have an extension installed that has been deprecated, you will now receive a notification informing you about it and suggesting alternatives. This is shown only once per deprecated extension.

## Source Control
### Quick Fixes in the Source Control input
Code Actions and Quick Fixes are now supported in the Source Control message box:
The [Code Spell Checker](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker) extension, for example, adds spelling fixes to the Source Control input. Extensions can contribute additional fixes and Code Actions.
### GitHub repository rulesets
VS Code already lets you define branch protection using the `git.branchProtection` setting. This milestone we added a new experimental feature that uses the recently announced [GitHub repository rulesets](https://docs.github.com/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets) to determine whether a branch is protected. If you are using GitHub repository rulesets, you can enable this feature using the `github.branchProtection` setting.
## Notebooks
### Drop image files into notebooks to create attachments
You can now drag and drop image files into notebook Markdown cells to create attachments. When you drop the image, use [the new drop selector control](#drop-selector) to select **Insert Image as Attachment**:

This adds the image to the notebook as an attachment instead of simply adding a link to the image:

### Toggle notebook output scrolling
You can now toggle individual cells to display output in a scrollable region either by command **Notebook: Toggle Scroll Cell Output** (`kb(notebook.cell.toggleOutputScrolling)`) or the link in the truncation message.
### Find control improvements
The notebook Find control now searches keywords on what's visually presented by default. Users can change the search scope (Markdown source, Markdown preview, code source, and code outputs) through setting `notebook.find.scope`. Additionally, when replacing matches, the Markdown cell is converted to an editable cell so you can make the replacement. When you're done, the cell is converted back to Markdown, and the preview is restored.
## Languages
### Drag and drop videos into Markdown files
Want to insert a video into your Markdown? Just drag it into the editor and then hold `kbstyle(Shift)` to drop it into the file:
This inserts a `