Stable releases

July

Zed 0.144.3

07/17/2024

Enhancements

General

  • Extensions can now provide snippets by including snippets.json file next to the extension manifest.
  • Move snippet support into the core editor deprecating the snippet extension. Snippets are now available in any buffer including plain text (#13937).
  • Improved contrast between some items in the One Dark theme.
  • Added support for filtering in the outline panel (#13984).
  • Added dynamic [un]registration for LSP formatting capabilities (#12661).
  • Improved prettier detection to pick up its installation from transitive dependencies (#12731).
  • Improved Zed logic for sending textDocument/didSave request (#14286).

Languages

  • Added support for setting classAttributes in the configuration for tailwindcss-language-server. Example:
{
  "lsp": { 
    "tailwindcss-language-server": { 
      "settings": { 
        "classAttributes": [ "class", "className", "ngClass", "styles" ] 
      }
    }
  }
}

Vim

  • Fixed vim undo and redo commands not taking counts (#13950, thanks mattfbacon).
  • Fixed an issue with start of line anchor in regex search (#13920, thanks rokob).

Bug Fixes

  • Fixed auto close for single quotes in Python (#13972).
  • Fixed telemetry putting temporary files in config_dir (#7155).
  • Fixed origin packages not being surfaced in Rust completions (#13494).
  • Fixed honoring of the terminal.font_weight user setting (thanks hron).
  • Fixed selections being cleared when right-click was performed outside of a selection (#4267, thanks WeetHet).
  • Fixed Go shell escaping for tasks (#14054, thanks DanielMSchmidt).
  • Fixed undocumented system dependency on unzip to extract .zip files downloaded by extensions.
  • Fixed some issues with restoring the state of some panels after a restart (#9638, #12954, thanks yongkangchen).
  • Nix's flake.lock files are now automatically identified as JSON.
  • Linux: Changed editor::JoinLines to ctrl-shift-j (#14136).
  • Linux: Fixed overflow in xkbcommon-rs (#14571).
  • Linux: Fixed the issue where text appears twice in the editor after Chinese Character input (linux: Fix IME on fcitx, #14558).
  • Linux: Fixed opening urls/directories on systems where the xdg desktop portal doesn't handle those requests (#14359).
  • Linux: Fixed IME under fcitx5 (#14192, #14508).

Zed 0.143.7

07/12/2024

  • linux: Fix more panics on launch when GPU is mis-configured. Also link to the docs in the error message.
  • linux: Fix panic when failing to parse a keystroke from xkbcommon
  • linux: Fix panic when setting cursor to a kind that the platform does not support

Zed 0.143.6

07/10/2024

Linux Support

Linux when? Linux now. 🎉🐧

For the last 6 months, our team and our open source community have been working hard to bring Zed to Linux.

As of today, we've released our first, official, stable build of Zed on Linux!

Enhancements

AI

  • Added new assistant: insert into editor Action. Default keybinding: cmd-< on macOS, ctrl-< on Linux (#13467).

General

  • Changed the default fonts to IBM Plex Sans and IBM Plex Mono. If you'd like to go back to using Zed Sans/Zed mono you need to download them and install them (#13596).
  • Default to a light theme during the day (#9627)
  • Add keyboard shortcuts for scrolling in terminal (#4917, #12231).
  • Changed the default key bindings for pageup/pageup on Mac and Linux so that it moves the cursor (editor::MovePageDown). Previous scroll only behavior (editor::PageDown) is now available via cmd-pagedown on MacOS and alt-pagedown on Linux (#13389)
  • Added updated window controls on Linux (#13751)
  • Added recognizing *.markdown files as Markdown (#13608).
  • Added duplicate line shortcut to Sublime Text shortcuts (#13640)
  • Added shift shift as a default binding to open the command palette in the JetBrains keymap (#13556).

Performance

  • Improve editor's performance with large undo histories (#13656)
  • Improved performance of "replace all" in buffer search and project search (#13654).
  • Improved power consumption on Intel Macs by preferring integrated GPUs over the discrete GPUs. (#5124).

Vim

  • vim: Support for macros (q and @) to record and replay (#1506, #4448).
  • vim: Fix undo after repeated insert/replace mode (#13573).
  • vim: Fix 'r' repeating too much (#13566).
  • vim: Fixed : in empty diagnostics view (#13624)
  • vim: Fixed g/ outside of an editor (#13624).
  • vim: Add vim bindings for outline panel (#13763).

Bug Fixes

Breaking Changes

  • Renamed editor::RevealInFinder to editor::RevealInFileManager.

Zed 0.142.6

07/05/2024

Bug fixes

  • Fixed delay when changing scrolling direction (#13867).
  • Fixed Atom keymap in ProjectPanel (#13655).

Zed 0.142.5

07/04/2024

  • Improved inline assistant code generation when using Claude or GPT-4o.

Zed 0.142.4

07/03/2024

Enhancements

AI

  • Added support for Claude 3.5 Sonnet (#13357). To use Claude Sonnet with the Zed assistant add the following to your settings (full docs):
"assistant": {
  "version": "1",
  "provider": {
    "default_model": "claude-3-5-sonnet",
    "name": "anthropic"
  }
},

General

  • Added the ability to remove multi-cursors by clicking on them again. (#13058).
  • Added package version tooltips when hovering over package.json dependency entries (#13303).
    image
    image
  • Added vertical scrollbar to project panel (#4865).
  • Added editor: select enclosing symbol command based on tree-sitter outline. This is useful when combined with inline assist to rewrite a function.
  • Added a mouse context action to copy permalink to line. (#13247)
    Copy Permalink screenshot
    Copy Permalink screenshot
  • Added ability to bind to shift or other modifier keys (#6460).
  • Added an active_line_width to configure the line width of the active indent guide (#12312).
  • Added a scroll_beyond_last_line setting (#4962).
  • Added a gutter.runnables setting that controls whether runnable indicators are displayed in the gutter (#13280).
  • Added Markdown Preview shortcut for the Atom keymap.
  • Added the workspace: clear all notifications command to clear notifications (#10761).

Vim

  • Added support for auto_surround (#12898).
    • Check it out here.
  • Fixed a panic when searching after focusing search bar with mouse (#13487).
  • Added action to surround text in visual mode (no default binding) (#13122).
  • Fixed vim "r" action to accept a count argument (#13287).
  • Fixed vim "shift-r" action to accept a count argument and allow repetition (#13287).
  • Fixed switching to normal mode after g c(vim::ToggleComments) in visual mode (#4439).

Bug Fixes

  • Fixed a bug where project settings were not loaded from .zed/settings.json if they were .gitignored (#4432).
  • Fixed inline assist button not being hidden when assistant is disabled (#13289).
  • Fixed crate names not being shown in Rust completions menu (#13494).
  • Improved Atom, JetBrains, TextMate compatibile keybindings (#13326).
  • Fixed an issue where provider settings were lost when switching between Ollama models (#13399).
  • Fixed an edge case where some indent guides would disappear when a folded line is the first visible line on screen.
  • Fixed a bug that caused unnecessary computations to happen on every file-system event.
  • Fixed too-small windows on MacOS by adding minimum window size.
  • Fixed deleting the last character during IME composition would mistakenly delete other characters (#12862).
  • Improved organization in the Quick Action Bar (#13476).
  • Fixed autosave settings in project-specific settings file being ignored (#13316).
  • Improved code folding to exclude folding line breaks in whitespace-sensitive languages (#11614).

June

Zed 0.141.3

06/28/2024

  • Fixed a bug that was causing system prompts to be dropped for Anthropic models.
  • Fixed a panic when editing HTML near the end of a file.
  • Fixed a panic when editing settings.json from inside the .zed directory.

Zed 0.141.2

06/26/2024

Breaking changes

SETTINGS DEPRECATION NOTICE

In your settings.json the following keys will need to be renamed:

  • language_overrides -> languages
  • copilot -> inline_completions
  • show_copilot_suggestions -> show_inline_completions

Previously, we were supporting the old keys as an alias for the new keys, but this let to unintended/confusing failure modes. As a result we have deprecated the old keys.

See: Settings Deprecation Notice 2024-06-17 for more information.

Enhancements

General

  • Added an outline panel to show a "map" of the active editor. Toggle the outline panel via outline panel: toggle focus.

Pair the outline panel with the search multi-buffer to get a better overview of your search results!

outline panel
outline panel
  • Added support for dropping files from the finder onto the project panel (#7386).
  • Added a 'selection and movement' tool to the Editor's toolbar, as well as controls to toggle it and a setting to remove it ("toolbar": {"selections_menu": true/false }).
  • Changed the behavior of the + menu in the tab bar to use standard actions and keybindings. Replaced New Center Terminal with New Terminal, and New Search, with the usual Deploy Search. Also added item-creating actions to this menu.
  • Improved performance of project panel in large worktrees (#13202).
  • Improved the look of code action and run indicators in the gutter (#12803).
  • Improved the style of disclosure controls throughout the UI.

AI

  • Improved the behavior of inline assist so that it no longer closes when an editor loses focus (e.g., from switching tabs) and then gains focus again. Instead, it only closes when you move the cursor outside of it, e.g., by clicking somewhere else in its parent editor.

Languages

  • VTSLS is now a default language server for TypeScript, TSX, and JavaScript.

If you would like to continue using typescript-language-server, use the following setting in your settings.json:

"JavaScript": {
  "language_servers": ["!vtsls", "typescript-language-server", "..."]
},
  • Added a more detailed message in place of the generic checking... messages when Rust-analyzer is running.

  • Added a rate limit for language server status messages, to reduce noisiness of those updates.

  • Added a cancel language server work action which will cancel long-running language server tasks.

  • Added the ability to cancel a cargo check by clicking on the status bar item.

Vim

  • Added pending keys to the mode indicator in Vim mode.
    • See it in action here.
  • Added support for register selection "a-"z, "0-"9, "-. "_ and "% (#11511).
  • Added support for multicursor registers (#11687).
  • Added support for the "/ register.
  • Added gv to restore previous visual selection (#12888).
  • Added support for ctrl-r X to paste in insert mode (#4308).
  • Fixed home and end in visual mode (#13068).
  • Fixed inserting a 0 in insert mode with a count (#9383).
  • Fixed gi when the insert ended at the end of a line (#12162).
  • Fixed gl when the first match is at the end of a line.
  • Fixed behavior of dw at the end of a soft wrapped line.
  • Fixed ci" on keyboards where typing a " requires the IME (#12523).
  • Fixed an issue where held-down modifier keys (such as Shift) would interrupt continuous key events, affecting navigation and selection behavior (#12566).

Bug Fixes

  • Fixed some syntax highlighting bug in Python (#12578).
Before
Before
After
After
  • Fixed auxiliary details in completions returned by VTSLS (#13043).
  • Fixed a bug where the selected tab was not always shown when cycling between tabs with ctrl-tab.
  • Fixed a bug where the command palette was not scrolling down to the last element.
  • Fixed a bug where "Find all references" editor had cursor placed on the first line of the first excerpt in the multibuffer instead of having it on the first reference.
  • Fixed a possible hang when opening a worktree in a .git directory.
  • Fixed snippet completions sometimes being treated as plain text completions when using VTSLS (#12920).
  • Fixed the Hide Copilot context menu item to modify the appropriate setting.
  • Fixed a panic when editing C code (#13128).

Zed 0.140.5

06/19/2024

Enhancements

General

  • Added an Ollama Provider for the assistant. If you have Ollama running locally on your machine, you can enable it in your settings under:
"assistant": {
    "version": "1",
    "provider": {
      "name": "ollama",
      // Recommended setting to allow for model startup
      "low_speed_timeout_in_seconds": 30,
    }
}

Chat like usual

image
image

Interact with any model from the Ollama Library

image
image

Open up the terminal to download new models via ollama pull:

image
image
  • Added support for snippets via simple-completion-language-server (#4611). To begin using snippets, install the snippets extension from the extension store:
snippets
snippets

Place your snippet files in ~/.config/zed/snippets. For instance, in your ~/.config/zed/snippets/snippets.json file, you may have:

{
  "my snippet": {
    "prefix": "log",
    "body": ["console.log(\"$1\")"],
    "description": "Expand `log` to `console.log()`"
  }
}

For more configuration information, see the simple-completion-language-server instructions.

  • Added the ability to search inside of selections (#8617).
  • Improved the performance of the project panel in large directories
  • Added the editor: toggle tab bar action.
  • Improved performance when handling large responses from language servers.

AI

  • Added search for saved assistant history.
  • Added /now command to the Assistant for getting the current date and time.
  • Improved the handling of JSON response bodies in the /fetch command in the Assistant.

Languages

  • Added runnable tests for TSX files. Runnable tests can be customized via tsx-test tag.
  • Added support for linked editing ranges LSP request. Editing opening tags in HTML/TSX files (with vtsls) performs the same edit on the closing tag as well (and vice versa) (#4535).
  • Added auto-completion support for package.json files (#12792).
  • Added support for looking up the rust-analyzer binary in $PATH. This allows using such tools as asdf and nix to configure per-folder rust installations. To enable this behavior, use the path_lookup key when configuring the rust-analyzer binary: {"lsp": {"rust-analyzer": {"binary": {"path_lookup": true }}}}.
  • Added inl to cpp config (#12605).

Vim

  • Allowed scrolling the currently-open information overlay using ctrl-{u,d,e,y} etc (#11883).
  • Added g/ for project search.
  • Added gu/gU/g~ for changing case (#12565).

Bug Fixes

  • Fixed some runnables in JavaScript/Typescript.
  • Fixed an issue where the IME pre-edit could desynchronize from the editor on macOS (#11829).
  • Fixed runnable for package.json, so it will work in any directory.
  • Fixed a bug that caused titles generate by the LLM to be longer than one line.
  • Fixed an issue where file icons were displayed in the project panel during a rename even when project_panel.file_icons was set to false (#12905).
  • Fixed a panic when opening the diagnostics view.
  • Fixed a crash that could happen when using certain cursor-motion bindings with a pending mouse selection.
  • Fixed a panic when worktree paths are incorrectly relative.
  • Fixed a panic when going to next search result when there are none.
  • Fixed the wrong icon being used in the assistant setup instructions.
  • Fixed tailwindcss-language-server not being activated inside Ruby strings (inside .erb) (#12728).
    • Check the video here.
  • Fixed tailwind-language-server not working in attributes inside of *.astro files (#12402).
    • Check the video here.
  • Fixed folder expansion when all items are closed (#12729).
  • Vim: Fixed indent via < and > not being repeatable with . (#12351).
  • Vim: Fixed f/t etc. for keys that require IME (#12522).

Breaking changes

  • Renamed the workspace::Restart action to workspace::Reload to avoid accidentally restarting Zed when trying to restart language servers (#12609).