A beta user reported that following was "lost" when asking for
confirmation, I
suspect they moved their cursor in the agent file while reviewing the
change.
Now we will resume following when the agent starts up again.
Release Notes:
- N/A
Conrad Irwin
created
2fe3dbe
project: Remove redundant Option from parse_register_capabilities (#36874)
Click to expand commit body
Release Notes:
- N/A
Smit Barmase
created
fda5111
Add CSS language injections for calls to `styled` (#33966)
Click to expand commit body
…emotion).
Closes: https://github.com/zed-industries/zed/issues/17026
Release Notes:
- Added CSS language injection support for styled-components and emotion
in JavaScript, TypeScript, and TSX files.
Zach Riegel
created
69127d2
acp: Simplify control flow for native agent loop (#36868)
Click to expand commit body
Release Notes:
- N/A
Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
2b5a302
thread view: Prevent user message controls to be cut-off (#36865)
Click to expand commit body
In the thread view, when focusing on the user message, we display the
editing control container absolutely-positioned in the top right.
However, if there are no rules items and no restore checkpoint button
_and_ it is the very first message, the editing controls container would
be cut-off. This PR fixes that by giving it a bit more top padding.
Release Notes:
- N/A
Danilo Leal
created
4c0ad95
acp: Show retry button for errors (#36862)
Click to expand commit body
Release Notes:
- N/A
---------
Co-authored-by: Antonio Scandurra <me@as-cii.com>
We were rendering a Markdown link like `[Read file x.rs (lines
Y-Z)](@selection)` while the tool ran, but then switching to just `x.rs`
as soon as we got the file location from the tool call (due to an
if/else in the UI code that applies to all tools). This caused a
flicker, which is fixed by having `initial_title` return just the
filename from the input as it arrives instead of a link that we're going
to stop rendering almost immediately anyway.
Release Notes:
- N/A
c48197b
util: Fix edge case when parsing paths (#36025)
Click to expand commit body
Searching for files broke a couple releases ago. It used to be possible
to start typing part of a file name, then select a file (not confirm it
yet) and then type in `:` and a line number to navigate directly to that
line.
The current behavior can be seen in the following screenshots. When the
`:` is typed, the selection is lost, since no files match any more.
<img width="552" height="370" alt="Screenshot From 2025-08-12 10-36-08"
src="https://github.com/user-attachments/assets/e4b4b613-7f0c-40d7-94c9-04d8ab541656"
/>
<img width="553" height="124" alt="Screenshot From 2025-08-12 10-36-25"
src="https://github.com/user-attachments/assets/843e9ecf-9e08-4fa6-9340-0388a957cbb2"
/>
<img width="549" height="370" alt="Screenshot From 2025-08-12 10-36-47"
src="https://github.com/user-attachments/assets/4a1bbbd8-268a-4ea8-999f-6cef1eb34a45"
/>
---
With this PR, the previous behavior is restored and can be seen in these
screenshots:
<img width="552" height="370" alt="Screenshot From 2025-08-12 10-36-08"
src="https://github.com/user-attachments/assets/466e1906-4735-47ae-a699-117bdd6490ca"
/>
<img width="549" height="370" alt="Screenshot From 2025-08-12 10-47-07"
src="https://github.com/user-attachments/assets/17f3acda-662d-4962-9eb8-4b494f211d26"
/>
<img width="549" height="370" alt="Screenshot From 2025-08-12 10-47-21"
src="https://github.com/user-attachments/assets/d98447fe-7377-4f4f-b3da-f690cd44c141"
/>
---
Release Notes:
- Adjusted the file finder to show matching file paths when adding the
`:row:column` to the query
Hendrik Müller
created
11545c6
Add file icons to multibuffer view (#36836)
Click to expand commit body
<img width="1988" height="1420" alt="multi-buffer-icons-git-diff"
src="https://github.com/user-attachments/assets/48f9722f-ca09-4aa7-ad7a-0b7e85f440d9"
/>
Unfortunately, `cargo format` decided to reformat everything. Probably,
because of hitting the right margin, no idea. The essence of this change
is the following:
```rust
.map(|path_header| {
let filename = filename
.map(SharedString::from)
.unwrap_or_else(|| "untitled".into());
let path = path::Path::new(filename.as_str());
let icon =
FileIcons::get_icon(path, cx).unwrap_or_default();
let icon = Icon::from_path(icon).color(Color::Muted);
let label = Label::new(filename).single_line().when_some(
file_status,
|el, status| {
el.color(if status.is_conflicted() {
Color::Conflict
} else if status.is_modified() {
Color::Modified
} else if status.is_deleted() {
Color::Disabled
} else {
Color::Created
})
.when(status.is_deleted(), |el| el.strikethrough())
},
);
path_header.child(icon).child(label)
})
```
Release Notes:
- Added file icons to multi buffer view
Aleksei Gusev
created
a79aef7
acp: Never build a request with a tool use without its corresponding result (#36847)
Click to expand commit body
Release Notes:
- N/A
Antonio Scandurra
created
d8bffd7
acp: Cancel editing when focus is lost and message was not changed (#36822)
Click to expand commit body
Release Notes:
- N/A
Bennet Bo Fenner
created
54c7d9d
Fix crash when opening inspector on Windows debug build (#36829)
Chuqiao Feng
created
dd6fce6
multi_buffer: Pre-allocate IDs when editing (#36819)
Click to expand commit body
Something I came across when looking at `edit_internal`. Potentially
saves multiple re-allocations on an edit
Release Notes:
- N/A
tidely
created
de5f87e
languages: Add `module` to TS/JS keywords (#36830)
Click to expand commit body
<img width="376" height="166" alt="image"
src="https://github.com/user-attachments/assets/ae32d74c-387b-4809-a0d6-cfa97888347d"
/>
Release Notes:
- Improved syntax highlights for `module` keyword in TS/JS
Merge conflict resolution for #36741 accidentally reverted the changes
in #36670 to allow expanding terminals individually and in #36675 to
allow collapsing edit cards. This PR re-applies those changes, fixing
the regression.
Release Notes:
- N/A
- Add pulsating animation for context creases while they're loading
- Add spinner in message editors (replacing send button) during the
window where sending has been requested, but we haven't finished loading
the message contents to send to the model
- During the same window, ignore further send requests, so we don't end
up sending the same message twice if you mash enter while loading is in
progress
- Wait for context to load before rewinding the thread when sending an
edited past message, avoiding an empty-looking state during the same
window
Release Notes:
- N/A
Cole Miller
created
d49409c
docs: Update settings in diagnostics.md (#36806)
Click to expand commit body
For project_panel, the diagnostics key seems to be `show_diagnostics`
not `diagnostics`
([source](https://github.com/zed-industries/zed/blob/main/crates/project_panel/src/project_panel_settings.rs#L149-L152)).
Updating the docs accordingly
Release Notes:
- N/A
itsaphel
created
60ea475
project: Fix dynamic registration for textDocument/documentColor (#36807)
Removes `diagnostics.cargo.fetch_cargo_diagnostics` settings as those
are not needed for the flycheck diagnostics to run.
This setting disabled `checkOnSave` in rust-analyzer and allowed to
update diagnostics via flycheck in the project diagnostics editor with
the "refresh" button.
Instead, `"checkOnSave": false,` can be set manually as
https://zed.dev/docs/languages/rust#more-server-configuration example
shows and flycheck commands can be called manually from anywhere,
including the diagnostics panel, to refresh the diagnostics.
Release Notes:
- Removed redundant `diagnostics.cargo.fetch_cargo_diagnostics` settings
Kirill Bulatov
created
ea42013
acp: Eagerly load all kinds of mentions (#36741)
Click to expand commit body
This PR makes it so that all kinds of @-mentions start loading their
context as soon as they are confirmed. Previously, we were waiting to
load the context for file, symbol, selection, and rule mentions until
the user's message was sent. By kicking off loading immediately for
these kinds of context, we can support adding selections from unsaved
buffers, and we make the semantics of @-mentions more consistent.
Loading all kinds of context eagerly also makes it possible to simplify
the structure of the MentionSet and the code around it. Now MentionSet
is just a single hash map, all the management of creases happens in a
uniform way in `MessageEditor::confirm_completion`, and the helper
methods for loading different kinds of context are much more focused and
orthogonal.
Release Notes:
- N/A
---------
Co-authored-by: Conrad <conrad@zed.dev>
d24cad3
Be more lenient when dealing with rust-analyzer's flycheck commands (#36782)
Click to expand commit body
Flycheck commands are global and makes sense to fall back to looking up
project's rust-analyzer even if the commands are run on a non-rust
buffer. If multiple rust-analyzers are found in the project, avoid
ambiguous commands and bail (as before).
Closes #ISSUE
Release Notes:
- Made it possible to run rust-analyzer's flycheck actions from anywhere
in the project
Kirill Bulatov
created
153724a
Clean up handling of serialized ssh connection ids (#36781)
e6267c4
Ensure `pane: swap item right` does not panic (#36765)
Click to expand commit body
This fixes a panic I randomly ran into whilst mistyping in the command
palette: I accidentally ran `pane: swap item right`in a state where no
items were opened in my active pane. We were checking for `index + 1 ==
self.items.len()` there when it really should be `>=`, as otherwise in
the case of no items this panics.
This PR fixes the bug, adds a test for both the panic as well as the
actions themselves (they were untested previously). Lastly (and mostly),
this also cleans up a bit around existing actions to update them with
how we generally handle actions now.
Release Notes:
- Fixed a panic that could occur with the `pane: swap item right`
action.
Finn Evers
created
f649c31
Restructure persistence of remote workspaces to make room for WSL and other non-ssh remote projects (#36714)
Click to expand commit body
This is another pure refactor, to prepare for adding direct WSL support.
### Todo
* [x] Represent `paths` in the same way for all workspaces, instead of
having a completely separate SSH representation
* [x] Adjust sqlite tables
* [x] `ssh_projects` -> `ssh_connections` (drop paths)
* [x] `workspaces.local_paths` -> `paths`
* [x] remove duplicate path columns on `workspaces`
* [x] Add migrations for backward-compatibility
Release Notes:
- N/A
---------
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Max Brunsfeld
and
Mikayla Maki
created
639417c
thread_view: Adjust empty state and error displays (#36774)
Click to expand commit body
Also changes the message editor placeholder depending on the agent.
Release Notes:
- N/A
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Danilo Leal
and
Conrad Irwin
created
896a35f
Capture `shorthand_field_initializer` and modules in Rust highlights (#35842)
Click to expand commit body
Currently shorthand field initializers are not captured the same way as
the full initializers, leading to awkward and mismatching highlighting.
This PR addresses this fact, in addition to capturing new highlights:
- Tags the `!` as part of a macro invocation.
- Tags the identifier part of a lifetime as `@lifetime`.
- Tag module definitions as a new capture group, `@module`.
- Shorthand initializers are now properly tagged as `@property`.
Here's what the current version of Zed looks like:
<img width="596" height="683" alt="image"
src="https://github.com/user-attachments/assets/c9e52d8e-03dc-426b-8545-4fe872b803e0"
/>
With the new highlighting applied:
<img width="596" height="683" alt="image"
src="https://github.com/user-attachments/assets/b7bd9391-9910-456b-8198-6871174d0f4f"
/>
Release Notes:
- Improved highlighting of Rust files, including new highlight groups
for modules and shorthand initializers.
Jonathan Andersson
created
4560d1e
Use a better message for the InvalidBufferView (#36770)
Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/36764
Release Notes:
- N/A
Adds a new "acp: open debug tools" action that opens a new workspace
item with a log of ACP messages for the active connection.
Release Notes:
- N/A
Agus Zubiaga
created
72bd248
editor: Fix multi buffer header context menu not handling absolute paths (#36769)
Click to expand commit body
Release Notes:
- N/A
Lukas Wirth
created
42ae330
Show file open error view instead of the modal (#36764)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/36672
Before:
either
<img width="966" height="642" alt="image"
src="https://github.com/user-attachments/assets/7263ea3c-3d48-4f4d-be9e-16b24ca6f60b"
/>
(when opening from the project panel)
or
<img width="959" height="1019" alt="image"
src="https://github.com/user-attachments/assets/834041d4-f4d6-46db-b333-803169ec4803"
/>
(for the rest of the cases)
After:
<img width="2032" height="1167" alt="Screenshot 2025-08-22 at 19 34 10"
src="https://github.com/user-attachments/assets/1aa4530b-69f6-4c3a-8ea1-d4035dbb28da"
/>
(the unified error view)
Release Notes:
- Improved unsupported file opening in Zed
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Kirill Bulatov
and
Conrad Irwin
created
eb0f9dd
themes: Implement Bright Black and Bright White colors (#36761)
Click to expand commit body
Before:
<img width="356" height="50" alt="image"
src="https://github.com/user-attachments/assets/c4f4ae53-8820-4f22-b306-2e5062cfe552"
/>
After:
<img width="340" height="41" alt="image"
src="https://github.com/user-attachments/assets/8e69d9dc-5640-4e41-845d-f299fc5954e3"
/>
Release Notes:
- Fixed ANSI Bright Black and Bright White colors
Oleksiy Syvokon
created
ac9fdaa
onboarding: Improve Windows/Linux keyboard shortcuts; example ligature (#36712)
Click to expand commit body
Small fixes to onboarding.
Correct ligature example.
Replace`ctrl-escape` and `alt-tab` since they are reserved on windows
(and often on linux) and so are caught by the OS.
Release Notes:
- N/A
Peter Tripp
created
8204ef1
onboarding: Remove accept AI ToS from within Zed (#36612)
Click to expand commit body
Users now accept ToS from Zed's website when they sign in to Zed the
first time. So it's no longer possible that a signed in account could
not have accepted the ToS.
Release Notes:
- N/A
---------
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Anthony Eid
and
Mikayla Maki
created
3d2fa72
Make word completions less intrusive (#36745)
Click to expand commit body
Introduce `min_words_query_len` threshold for automatic word completion
display, and set it to 3 by default.
Re-enable word completions in Markdown and Plaintext.
Release Notes:
- Introduced `min_words_query_len` threshold for automatic word
completion display, and set it to 3 by default to make them less
intrusive
Kirill Bulatov
created
92bbcde
workspace: Do not prompt for hanging up current call when replacing last visible project (#36697)
Click to expand commit body
This fixes a bug where in order to open a new project in a call (even if
it's not shared), you need to hang up.
Release Notes:
- N/A
Piotr Osiewicz
created
54df43e
Fix cursor movement in protected files on backspace/delete (#36753)
Click to expand commit body
## Summary
Fixes cursor movement behavior in protected files (like Default
Settings) when pressing backspace or delete keys.
Previously, these keys would cause unwanted cursor movement instead of
being ignored as expected in read-only files.
## Changes
- Added read-only checks to `backspace()` and `delete()` methods in the
editor
- Consistent with existing pattern used by other editing methods
(`indent()`, `outdent()`, `undo()`, etc.)
## Test Plan
1. Open Default Settings in Zed
2. Place cursor at arbitrary position (not at start/end of file)
3. Press backspace - cursor should remain in place (no movement)
4. Press delete - cursor should remain in place (no movement)
Fixes #36302
Release Notes:
- Fixed backspace and delete keys moving caret in protected files
Co-authored-by: Claude <noreply@anthropic.com>
Sarah Price
and
Claude
created
4f0fad6
acp: Support calling tools provided by MCP servers (#36752)
Click to expand commit body
Release Notes:
- N/A
Antonio Scandurra
created
3b7c174
thread view: Add more UI improvements (#36750)
Click to expand commit body
Release Notes:
- N/A
Danilo Leal
created
27a26d5
thread view: Inform when editing previous messages is unavailable (#36727)
Click to expand commit body
Release Notes:
- N/A
Danilo Leal
created
d88fd00
acp: Fix panic with edit file tool (#36732)
Click to expand commit body
We had a frequent panic when the agent was using our edit file tool. The
root cause was that we were constructing a `BufferDiff` with
`BufferDiff::new`, then calling `set_base_text`, but not waiting for
that asynchronous operation to finish. This means there was a window of
time where the diff's base text was set to the initial value of
`""`--that's not a problem in itself, but it was possible for us to call
`PendingDiff::update` during that window, which calls
`BufferDiff::update_diff`, which calls
`BufferDiffSnapshot::new_with_base_buffer`, which takes two arguments
`base_text` and `base_text_snapshot` that are supposed to represent the
same text. We were getting the first of those arguments from the
`base_text` field of `PendingDiff`, which is set immediately to the
target base text without waiting for `BufferDiff::set_base_text` to run
to completion; and the second from the `BufferDiff` itself, which still
has the empty base text during that window.
As a result of that mismatch, we could end up adding `DeletedHunk` diff
transforms to the multibuffer for the diff card even though the
multibuffer's base text was empty, ultimately leading to a panic very
far away in rendering code.
I've fixed this by adding a new `BufferDiff` constructor for the case
where the buffer contents and the base text are (initially) the same,
like for the diff cards, and so we don't need an async diff calculation.
I also added a debug assertion to catch the basic issue here earlier,
when `BufferDiffSnapshot::new_with_base_buffer` is called with two base
texts that don't match.
Release Notes:
- N/A
---------
Co-authored-by: Conrad <conrad@zed.dev>
The event has two fields
1. name: The name of the panel being clicked
2. toggle_state: true if clicking to open, otherwise false
cc @katie-z-geer
Release Notes:
- N/A