🍂🎉 We squashed some bugs during last week's Quality Week, and half of these fixes have made their way into this week's stable release! 🐛🐞🐜 + 🔨💥 = 😵⚰️!
Enhancements
General
- Added scrollbar to info popovers in editor (#20184).
- Added auto-scrolling to project panel when a vertical edge of a panel is hovered with a dragged entry (#20207).
- Added option to dim inactive panes (#18968; thanks aexvir).
- Added option to highlight active pane with a border (#18968; thanks aexvir).
- Added
auto_indent_on_paste
setting, which can be used on a per-language basis, to configure whether indentation should be adjusted when pasting. This setting is enabled by default for languages other than YAML and Markdown (#20193). - Added a new reveal option for tasks:
"no_focus"
. If used, the tasks terminal panel will be opened and shown, but not focused (#19901). - Added a new
editor: spawn nearest task
action that spawns the task with a run indicator icon nearest to the cursor. It can be configured to also use areveal
strategy (#19901).
{
"context": "EmptyPane || SharedScreen || vim_mode == normal",
"bindings": {
", r t": ["editor::SpawnNearestTask", { "reveal": "no_focus" }],
}
}
- Improved editor performance with large # of diagnostics (#20189).
- Improved sort order in completions to show relevant matches first (#20145; thanks 80avin).
- Improved project search functionality by reusing the query from the focused buffer's local search (#20253).
- Improved large project search performance (#20211).
- Improved
workspace::SendKeystrokes
to support re-binding keys. For example you can now do:"x": ["workspace::SendKeystrokes", "\" _ x"]
in vim mode to ensure thatx
does not clobber your clipboard (#20277). - Improved outline panel keyboard navigation (#20385).
- Updated the settings schema to allow
null
as a value for optional settings instead of showing a warning (#20192). - Added
debug: open theme preview
action to the command palette to preview the current theme's styles (#20039). - Added optional
ignore_indent
parameter toeditor::ToggleComments
to place comment characters at the left margin. You can make this the default by adding"ctrl-/": ["editor::ToggleComments", { "ignore_indent": true }]
to your keymap.json in theEditor
context (#19746; thanks NichtJens). - Added
debug: Open Key Context View
action to command palette to help debug custom key bindings (#19872). - Added scrollbars to outline panel (#19969).
- Added
\u2028
and\u2029
as invisible characters. Previously these were treated as\n
(#19712). - Markdown Preview: Added button to copy code blocks (#19312; thanks Irilith).
- Markdown Preview: Added detection to update when file was changed outside of the editor (#20175).
- Disabled REPL buttons and actions for remote projects and collaboration (#20397).
AI
- Improved memory footprint for inline transformations (#20296).
- Moved the text selection action to a slash command (
/selection
) in the assistant panel (#19988; thanks marechaux). - Diagnostics are no longer automatically attached as context to
/tab
,/file
slash commands in the Assistant Panel. Use/diagnostics
to include them if desired (#20297).
SSH Remoting
- Improved latency of connecting (#20220).
- Improved keyboard navigation in SSH modal (#19894).
- Fixed duplicated SSH Remote Projects (#20271; thanks AidanV).
Languages
- Added support for autoclosing braces
{}
and single quotes''
in Shell Scripts (#20278). - Added support for git worktrees. Zed can now open git worktrees and the git status in them is correctly handled (#20164).
- Go: Improved
go test ./...
andgo generate ./...
commands to run in the go module directory rather than the current package directory (#20190; thanks rpadaki). - Go: Added runnable and tasks for
go generate
commands (#19987; thanks rpadaki). - C/C++: Fixed info popups from clangd missing information (#20090).
Vim
- Added
r
anda
as aliases for[
and<
text objects (copying vim-surround) (#20104; thanks mike-lloyd03). - Added :noh[lsearch] (#20056).
- Added
ctrl-v
/ctrl-q
to type any unicode code point. For examplectrl-v escape
inserts an escape character(U+001B), orctrl-v u 1 0 E 2
types ტ (U+10E2). As in vimctrl-v ctrl-j
inserts U+0000 not U+000A. Zed does not yet implement insertion of the vim-specific representation of the typed keystroke for other keystrokes (#19585). - Added
ctrl-shift-v
as an alias for paste on Linux (#19585). - Extended
ctrl-w
to work in non-editor contexts. E.g. markdown preview and screen shares (#20058). - Fixed
r
,~
etc. appearing to modify readonly buffers (#20264). - Fixed some shortcuts to render correctly in Command (#20254).
- Fixed
q
and@
in visual mode (#20261). - Fixed paragraph object in the presence of softwrap (#20259).
- Fixed search in the assistant panel (#20258).
- Fixed
d G
in not deleting until the actual end of the document if soft-wrap is turned on (#20160). - Fixed
o
not scrolling new head into view (#20054). - Fixed
gu$
missing last character of the line (#20057). - Fixed surrounds to allow
b
/B
/r
/a
anywhere you could use(
,{
,[
,<
(#20104; thanks mike-lloyd03).
Bug Fixes
- Fixed a crash that could happen when closing a workspace with pinned untitled buffers (#20294).
- Fixed undo and redo macOS menu items being always disabled (#20293).
- Fixed project panel losing focus after file creation attempt (#20273).
- Fixed an issue that prevented removing key bindings for actions used in the macOS application menu (#20268).
- Fixed a bug where rewrapping with a long word at the start of the line would cause a new line to be inserted (#20256).
- Fixed a bug where Zed would create a new temporary file on each boot for telemetry logs (#20209).
- Fixed python toolchain detection when worktree local path is set (#20229; thanks WeetHet).
- Fixed mouse cursor shape flickering in project and outline panels when crossing items (#20202; thanks stippi).
- Fixed an issue where single quotation marks were spuriously auto-closed when typing in line comments (#20206).
- Fixed extend/shrink selection on JetBrains keymap (#20199; thanks trin94).
- Fixed an issue in TypeScript where
@vtsls/language-server
may not have been updated to the latest version (#20197). - Fixed unhelpful auto-indent suggestions in markdown (#20193).
- Fixed a bug in macOS Sequoia where you couldn't save a new file as
*.sql
, as it would rename to.sql.s
(#20195). As a side effect you can no longer save a new file as*sql.s
. We hope to remove this workaround when the operating system fixes its bug; in the meantime you can either set"use_system_path_prompts": false
in your settings file to skip the macOS dialogues, or create new files by right clicking in the project panel. - Fixed an inconsistency in the recent project picker, where different keybindings would determine whether to reuse the window or not (#20176).
- Rewrap Command: Fixed a bug in handling of text wrapping for some ideographic writing systems (#20218).
- Rewrap Command: Fixed the command to consider the width of each tab character at the beginning of the line to be the configured tab size (#20196).
- Rewrap Command: The command now considers the width of each tab character at the beginning of the line to be the configured tab size (#20196).
- SSH Remoting: Fixed opening multiple folders on one server (#20281).
- SSH Remoting: Fixed remoting when the remote runs
tcsh
(#20220). - Outline Panel: Improved performance during large project searches (#20171).
- Image Viewer: Added file path to breadcrumbs toolbar for images (#20155).
- Project Panel: Fixed an issue where single-clicking on a file would not focus the editor with
preview_tabs
disabled (#20154). - Fixed an issue where the multibuffer hint was shown when terminal was in centered mode (#20137; thanks tekikaito).
- Fixed preview tabs being disabled in code, even if they were enabled in the settings (#20416).
- Fixed a regression where key binding symbols weren't shown in certain pickers (#20367).
- Linux: Fixed duplicate font loading (#19374; thanks AlvaroParker).
Breaking Changes and Notices
active_pane_magnification
value is no longer used, it should be migrated toactive_pane_modifiers.magnification
.- Vim: Rebound the function argument text object to
g
(#20104; thanks mike-lloyd03).