Zed 1.20 Shrinks Installs by 25% and Closes a 274-Vote Feature Request
Zed's weekly release adds animated cursors, Emmet wrap-with-abbreviation, configurable window titles, and Markdown files that open straight into rendered preview.
- Zed 1.20 ships an optional animated cursor via
cursor_animation.enabled, closing a 274-upvote request. Details - Emmet wrap-with-abbreviation now available through
editor: wrap with abbreviationwith the Emmet extension installed. - Configurable window titles with variables like
${projectName},${branch}, and VS Code settings import. - New
markdown_preview.open_markdown_files_in_previewsetting opens .md files directly in rendered preview. - Binaries ~25% smaller on macOS and Linux after stripping debug symbols; multi-cursor performance improved.
- Critical fix: private files were being leaked to collaborators through project search; also fixed settings.json corruption bug.
Zed 1.20 turns long-running requests into settings
Zed, the Rust-based code editor, continues its weekly release cadence with version 1.20. The stable release adds an optional animated cursor, direct Markdown preview, configurable window titles, and Emmet wrapping. The cursor change closes one of the project’s oldest feature requests, which had collected 274 thumbs-up reactions.
Community contributors supplied most of the user-facing additions, with individual authors credited throughout the changelog.
Cursor animation closes a 274-reaction issue
Zed keeps its instant cursor movement by default. Setting cursor_animation.enabled to true interpolates movement between cursor positions, producing a visible transition when navigating or editing. Contributor tiny-paris implemented the feature.
{
"cursor_animation": {
"enabled": true
}
}Markdown can open fully rendered
Setting markdown_preview.open_markdown_files_in_preview to true opens .md files directly in the rendered preview, skipping the source view.
Preview typography settings now live under markdown_preview as font_size, font_family, and code_font_family. Zed migrates existing values automatically.
Window titles become composable
Window title templates can combine project, file, Git, remote, and application data through the following placeholders:
| Source | Placeholders |
|---|---|
| Project | ${projectName} |
| Active file | ${fileName}, ${filePath}, ${relativePath} |
| Git | ${branch} |
| Remote environment | ${remoteName}, ${remoteHost} |
| Application | ${appName} |
| Formatting | ${separator} |
A minimal configuration can show the project and current branch:
{
"window_title_format": "${projectName}${separator}${branch}",
"window_title_separator": " , "
}The VS Code settings importer populates these options when window.title and window.titleSeparator are present, preserving existing title formats during migration.
Emmet wraps existing selections
With the Emmet extension installed, the editor: wrap with abbreviation command wraps selected HTML or JSX in a generated structure. Selecting content and entering div.container>ul>li*3, for example, creates a container with a list and three list items around that selection.
Lean binaries and fewer workspace stalls
- Smaller installations: Stripping debug symbols from release binaries reduces installed size by roughly 25% on macOS and Linux.
- Faster multi-cursor editing: Internal changes reduce the work required when editing through multiple cursors.
- Quicker worktree scans: The scanner now skips redundant executable checks.
On Unix systems, including macOS, Zed now raises the default soft limit for open file descriptors at startup. File descriptors are operating-system handles for files, sockets, and watchers; large workspaces can exhaust the default allocation and produce an EMFILE or “Too many open files” error.
The new dev: Debug Filesystem Watching command displays filesystem watcher events and exports diagnostic captures as JSON. Those captures provide maintainers with a concrete event trace when investigating file-watching failures, particularly on Linux.
Agent copies change format
AI updates add Gemini 3.8 Flash to the Google AI model list and improve recovery from OpenAI HTTP 404 responses.
The Agent Panel now copies plain text when users press Cmd+C or Ctrl+C. Copying as Markdown remains available through the context menu. Paste workflows that depend on Markdown formatting will need to use that menu command.
Privacy and correctness fixes land together
- Collaboration privacy: Project search no longer shares private files with collaborators.
- Settings integrity: Keys containing quotes or backslashes no longer corrupt
settings.json. - Language servers: Zed fixes a BasedPyright memory leak caused by incorrect workspace diagnostics polling.
- Diagnostics: Files no longer retain diagnostics from a previous language server after their language changes.
- Debugger: Copy Value now copies the full underlying value even when the displayed preview is truncated.
- Agent resources: A project-resource leak tied to the Agent Panel has been fixed.
- Agent Skills: Length validation now accepts valid multibyte descriptions that previously exceeded a byte-based limit.
- ChatGPT limits: Subscription usage limits are now distinguished from temporary throttling.
Version 1.20.2 removes two regressions
Zed published 1.20.2 patch notes the day after 1.20.1. The patch prevents payment errors from external model providers from triggering an incorrect Zed Pro upgrade prompt. It also allows multiple snippet extensions for the same language to operate together without cancelling one another.
What changes after updating
Zed installs stable updates automatically, so existing users receive the fixes without a manual migration. Cursor animation and direct Markdown preview remain opt-in, while font-setting migrations and the corrected runtime behavior apply automatically.
For teams comparing Zed with VS Code, Cursor, or JetBrains editors, version 1.20 closes concrete gaps in cursor behavior, window title customization, and Emmet workflows. The stable releases page includes the complete changelog, downloads, contributor credits, and links to the underlying pull requests.