ed37220
agent: Handle tool use without text (#28030)
Click to expand commit body
### Context
The Anthropic API fails if a request message contains a tool use and no
`Text` segments or it only contains empty `Text` segments. These are
cases that the model itself produces, but the API doesn't support
sending them back.
#27917 fixed this by appending "Using tool..." in the thread's message,
but this causes the actual conversation to include it, so it would
appear in the UI (we would actually display a gap because we never
rendered its markdown, but "Using tool..." would show up when the thread
was restored).
### Solution
We'll now only append this placeholder when we build the request, so the
API still sees it, but the UI/Thread doesn't.
Another issue we found is that the model starts mimicking these
placeholders in later tool uses which is undesirable. So unfortunately,
we had to add logic to filter them out.
Release Notes:
- agent: Improved rendering of tool uses without text
---------
Co-authored-by: Bennet <bennet@zed.dev>
Agus Zubiaga
and
Bennet
created
ece4a1c
debugger: Start on tabless design (#27837)
Click to expand commit body

Release Notes:
- N/A
---------
Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Co-authored-by: Anthony <anthony@zed.dev>
Piotr Osiewicz
,
Anthony Eid
, and
Anthony
created
9986a21
agent: Add button to continue iterating once all reviews are done (#28027)
Click to expand commit body
This PR adds a button on the review tab empty state that toggles the
focus back to the agent panel so that users can keep iterating on the
thread that's active in the panel.
<img
src="https://github.com/user-attachments/assets/ace5cf93-8869-49bb-8106-e03a9e3c90f2"
width="700"/>
Release Notes:
- N/A
Danilo Leal
created
c674e8d
Clear path-based excerpt data properly (#28026)
e5e3e9a
rust: Improve runnable detection for test modules (#28024)
Click to expand commit body
Closes #28002
This PR updates the `runnabless.scm` for Rust to improve detection of
test modules with non-standard names. Instead of matching on the module
name, we now check for the `#[cfg(test)]`-attribute above test modules.
This allows for generic matching whilst not regressing the previous
behaviour.
| `main` | <img width="922" alt="main"
src="https://github.com/user-attachments/assets/34fc4443-13a2-4e18-b806-7e14771c3df4"
/> |
| --- | --- |
| This PR | <img width="922" alt="PR"
src="https://github.com/user-attachments/assets/13e6a6d8-e177-4a83-89ab-24c0a69ade27"
/> |
Release Notes:
- Improved runnable detection for test modules in Rust.
Finn Evers
created
399d192
Temporarily disable flaky conflicted-cherry-pick test (#27950)
Click to expand commit body
Closes #ISSUE
Release Notes:
- N/A
Cole Miller
created
c98bcc7
agent: Fix thinking step showing up as pending when completion is cancelled (#28019)
Click to expand commit body
Previously the "Thinking..." step would show up as pending, even though
the user cancelled the generation:
<img width="672" alt="image"
src="https://github.com/user-attachments/assets/c9cdce0a-d827-4e23-96f5-b150465911a7"
/>
Release Notes:
- Fixed an issue where the thinking step would show up as pending even
when the generation was cancelled
Bennet Bo Fenner
created
fe27d11
agent: Include active file in recent history (#27914)
Click to expand commit body
This happened because of two reasons:
- `Workspace::recent_navigation_history` didn't include the current file
- The context picker added the current file to a exclude list
The latter was actually intentional because we already show the file in
the suggested context, but now that we actually have mentions, it's just
inconvenient not to have it there.
Release Notes:
- N/A
Agus Zubiaga
created
9693eab
editor: Fix active line number highlighting regression (#28015)
Click to expand commit body
This PR resolves a small regression introduced by the
debugger-introduction, which causes the active line number to no longer
be highlighted in the gutter as long as it is not part of a selection. A
user reported this issue [on
Discord](https://discord.com/channels/869392257814519848/995403703894954060/1357153291913662567).
Prior to the debugger-commit, an active line number was highlighted if
it was part of the editor active line numbers:
https://github.com/zed-industries/zed/blob/ed4e654fdf66fb886414198ac6db1a2f24d729a5/crates/editor/src/element.rs#L4295-L4303
With the debugger-introduction, the code was changed to only highlight
lines which are part of a selection:
https://github.com/zed-industries/zed/blob/e2aaf9b7046dd8d8430ff82554fe13d69431e443/crates/editor/src/element.rs#L2411-L2422
However, the check whether it is within a selection is not neccesary, as
the line is an active line as long as it is within the map of active
lines.
This PR restores the previous behavior.
| `main` | <img width="922" alt="main"
src="https://github.com/user-attachments/assets/486a548d-fe09-450e-922e-1feb4366fb4f"
/> |
| --- | --- |
| This PR | <img width="922" alt="PR"
src="https://github.com/user-attachments/assets/80517880-14b5-4861-bf83-8364f7831c46"
/> |
Release Notes:
- Fixed an issue where the active line number in the editor was not
always highlighted.
Release Notes:
- N/A
---------
Co-authored-by: Michael Sloan <michael@zed.dev>
Thomas Mickley-Doyle
and
Michael Sloan
created
d3e4de7
workspace-hack: remove openssl from remote_server (#27990)
Click to expand commit body
This was accidentally getting added due to increased feature
unification. We've manually excluded reqwest to go back to the desired
behavior: remote_server, doesn't depend on openssl.
Release Notes:
- N/A
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Julia Ryan
and
Mikayla Maki
created
ee950f5
Debugger: Add pretty printers for Cargo-located tasks (#27979)
Click to expand commit body
Closes #ISSUE
Release Notes:
- N/A
Piotr Osiewicz
created
501b539
gpui: Fix background for WrappedLine (#27980)
Click to expand commit body
https://github.com/zed-industries/zed/pull/26454 In this PR, we
separated painting for text line into two parts: `paint` and
`paint_background`. This allows selections to appear in front of the
text background but behind the text itself in the editor.
The `paint_background` method was implemented for `ShapedLine` but not
for `WrappedLine`. This PR adds that, fixing the background rendering
for inline code blocks in Markdown, as they use `WrappedLine`.
Before:
<img width="160" alt="image"
src="https://github.com/user-attachments/assets/81466c63-6835-4128-ba22-1b63f5fd7b1f"
/>
After:
<img width="160" alt="image"
src="https://github.com/user-attachments/assets/3b7044d7-265b-45db-904c-3b70fdf421fe"
/>
Release Notes:
- Fixed missing background for inline code blocks in the editor hover
tooltip.
Smit Barmase
created
444b7b8
renovate: Ignore `Cargo.toml` for `workspace-hack` (#27976)
Click to expand commit body
This PR adds the `Cargo.toml` for the `workspace-hack` crate to the
ignore list for Renovate, as it is opening a number of PRs against it
that will interfere with it.
Release Notes:
- N/A
Marshall Bowers
created
8a6ed4a
Use new multibuffer excerpts in project search (#27893)
Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/27876
Closes https://github.com/zed-industries/zed/issues/13513
Release Notes:
- Improved multi buffer excerpts to merge when expanded
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Kirill Bulatov
and
Conrad Irwin
created
b4af5b2
agent: Update thread label to use plural form (#27971)
Click to expand commit body
Update thread label to match the other contexts.
|Before|After|
|--|--|
|||
Release Notes:
- N/A
This PR adds the ability to edit previous user messages in the thread.
Release Notes:
- Agent: Added the ability to edit previous user messages
(Preview-only).
Marshall Bowers
created
0a13277
agent: Change loading label if command is waiting on permission (#27955)
Click to expand commit body
If there's a command pending confirmation, the label changes from
"Generating" to "Waiting for confirmation".
<img
src="https://github.com/user-attachments/assets/d804e382-5315-40b0-9588-c257cca2430c"
width="600"/>
Release Notes:
- N/A
b9f10c0
Fix redundant FS file watches due to LSP path watching (#27957)
Click to expand commit body
Release Notes:
- Fixed a bug where Zed sometimes added multiple redundant FS watchers
when language servers requested to watch paths. This could cause saves
and git operations to fail if Zed exceeded the file descriptor limit.
---------
Co-authored-by: Piotr <piotr@zed.dev>
Max Brunsfeld
and
Piotr
created
9f97468
editor: Fix typing closing bracket skips it even when `use_autoclose` is disabled (#27960)
Click to expand commit body
Closes #27769
When adding snippet we were not respecting autoclose setting, before
creating AutocloseRegion. This leads to cursor to skip over instead of
typing that character. This PR fixes it.
Release Notes:
- Fixed certain case where typing closing bracket would skip it when
auto close setting is turned off.
This adds a "workspace-hack" crate, see
[mozilla's](https://hg.mozilla.org/mozilla-central/file/3a265fdc9f33e5946f0ca0a04af73acd7e6d1a39/build/workspace-hack/Cargo.toml#l7)
for a concise explanation of why this is useful. For us in practice this
means that if I were to run all the tests (`cargo nextest r
--workspace`) and then `cargo r`, all the deps from the previous cargo
command will be reused. Before this PR it would rebuild many deps due to
resolving different sets of features for them. For me this frequently
caused long rebuilds when things "should" already be cached.
To avoid manually maintaining our workspace-hack crate, we will use
[cargo hakari](https://docs.rs/cargo-hakari) to update the build files
when there's a necessary change. I've added a step to CI that checks
whether the workspace-hack crate is up to date, and instructs you to
re-run `script/update-workspace-hack` when it fails.
Finally, to make sure that people can still depend on crates in our
workspace without pulling in all the workspace deps, we use a `[patch]`
section following [hakari's
instructions](https://docs.rs/cargo-hakari/0.9.36/cargo_hakari/patch_directive/index.html)
One possible followup task would be making guppy use our
`rust-toolchain.toml` instead of having to duplicate that list in its
config, I opened an issue for that upstream: guppy-rs/guppy#481.
TODO:
- [x] Fix the extension test failure
- [x] Ensure the dev dependencies aren't being unified by Hakari into
the main dependencies
- [x] Ensure that the remote-server binary continues to not depend on
LibSSL
Release Notes:
- N/A
---------
Co-authored-by: Mikayla <mikayla@zed.dev>
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Julia Ryan
,
Mikayla
, and
Mikayla Maki
created
07a7779
Add `completions.lsp_insert_mode` setting to control what ranges are replaced when a completion is inserted (#27453)
Click to expand commit body
This PR adds `completions.lsp_insert_mode` and effectively changes the
default from `"replace"` to `"replace_suffix"`, which automatically
detects whether to use the LSP `replace` range instead of `insert`
range.
`"replace_suffix"` was chosen as a default because it's more
conservative than `"replace_subsequence"`, considering that deleting
text is usually faster and less disruptive than having to rewrite a long
replaced word.
Fixes #27197
Fixes #23395 (again)
Fixes #4816 (again)
Release Notes:
- Added new setting `completions.lsp_insert_mode` that changes what will
be replaced when an LSP completion is accepted. The default is
`"replace_suffix"`, but it accepts 4 values: `"insert"` for replacing
only the text before the cursor, `"replace"` for replacing the whole
text, `"replace_suffix"` that acts like `"replace"` when the text after
the cursor is a suffix of the completion, and `"replace_subsequence"`
that acts like `"replace"` when the text around your cursor is a
subsequence of the completion (similiar to a fuzzy match). Check [the
documentation](https://zed.dev/docs/configuring-zed#LSP-Insert-Mode) for
more information.
---------
Co-authored-by: João Marcos <marcospb19@hotmail.com>
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
frederik-uni
,
João Marcos
, and
Max Brunsfeld
created
108ae0b
debugger: Add args argument to debugger launch config (#27953)
Click to expand commit body
This also fixes a bug where debug cargo test code actions would debug
all tests in a mod instead of a specific test
Release Notes:
- N/A
Anthony Eid
created
500964a
docs: Add example of Ruby plain minitest task (#27607)
Click to expand commit body
Via
https://github.com/zed-industries/zed/issues/12579#issuecomment-2143972765
Release Notes:
- N/A
0ba8432
Debugger: Add stop on entry support to debug adapter configs (#27942)
Click to expand commit body
This PR adds passing in `stop_on_entry` to debug configs in debug.json
instead of going through initialization args.
This has two benefits:
1. It's more streamlined to a user since every internal adapter supports
`stop_on_entry` for launch requests and Go's adapter supports it for
attach requests too.
2. It will allow @osiewicz `NewSesssionModal` PR to use this field for
the stop on entry checkbox.
Release Notes:
- N/A
Anthony Eid
created
e1a8a31
Fix flickering when staging and unstaging files (#27931)
Click to expand commit body
This fixes a bug in #27568 that caused flickering in the git panel's
checkbox state when staging and unstaging entire files. The problem is
that that stage/unstage action first saves the target path (if it's open
as a buffer), and we do a targeted git status scan in response to that
filesystem event, which makes its way to the git panel and causes it to
clear its pending state before the actual stage or unstage has gone
through.
The fix is to not clear the panel's pending state for git repository
events that originated from a targeted scan (i.e. one that was triggered
by FS events for repo paths, as opposed to events inside `.git` which
cause all statuses to be recomputed).
Release Notes:
- N/A
This PR makes the command permission prompt part of the tool card and
allow users to straight away change the `always_allow_tool_actions`
setting via the "Always Allow" button from that card. If that button is
clicked, that setting is turned on, and any command that requires
permission from that point on will auto-run.
Additionally, if a bash command spans multiple lines, we show the line
count at the end of the command string. (Note: this is not perfect yet
because it can likely be not visible by default, but we didn't think
this was a major blocker for now. We'll work on improving this next).
### Thread View
<img
src="https://github.com/user-attachments/assets/00f93c39-990f-4b79-84ec-0427b997167f"
width="500"/>
### Settings View
<img
src="https://github.com/user-attachments/assets/52d32435-7c8d-4ab4-a319-6cabc007267b"
width="500"/>
Release Notes:
- N/A
---------
Co-authored-by: Thomas Mickley-Doyle <tmickleydoyle@gmail.com>
Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Co-authored-by: Nathan Sobo <nathan@zed.dev>
Co-authored-by: Antonio Scandurra <me@as-cii.com>
Danilo Leal
,
Thomas Mickley-Doyle
,
Bennet Bo Fenner
,
Nathan Sobo
, and
Antonio Scandurra
created
3e2ac3e
Log error and proceed when failing to load repo environment (#27938)
Click to expand commit body
Closes #ISSUE
Release Notes:
- N/A
Cole Miller
created
646f655
agent: Add newtype for profile IDs (#27939)
Click to expand commit body
This PR adds an `AgentProfileId` newtype for profile IDs that we can use
instead of `Arc<str>` everywhere.
Release Notes:
- N/A
Marshall Bowers
created
b2904e5
file_finder: Prioritize file name matches over path matches (#27937)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/27936
Adds additional comparison after the existing history-based comparison.
This comparison checks whether the first position matched via fuzzy
search is in the file name. If so, we prioritize this match over one in
the path. If both items match either the file name or the path, the
existing comparison logic is used.
- [x] Tests
Before:
<img width="580" alt="image"
src="https://github.com/user-attachments/assets/011fdd01-3dfa-4950-abb1-dfda10885664"
/>
After:
<img width="614" alt="image"
src="https://github.com/user-attachments/assets/9c4944b0-83dc-4611-94bb-aae1758fab23"
/>
Release Notes:
- Fixed an issue where fuzzy matching in file finder did not properly
prioritize matches in file names.
Smit Barmase
created
45e7cd1
Add comment box to negative feedback reaction (#27934)
Click to expand commit body
Release Notes:
- N/A
Thomas Mickley-Doyle
created
889bc13
language_model: Remove `use_any_tool` method from `LanguageModel` (#27930)
Click to expand commit body
This PR removes the `use_any_tool` method from the `LanguageModel`
trait.
It was not being used anywhere, and doesn't really fit in our new tool
use story.
Release Notes:
- N/A
Marshall Bowers
created
da3383b
agent: Fix thinking step showing up as pending even though it is completed (#27926)
Click to expand commit body
Release Notes:
- N/A
Bennet Bo Fenner
created
9c4e61e
agent: Add more guidelines to system prompt (#27927)
Click to expand commit body
Release Notes:
- N/A
Agus Zubiaga
created
b413605
Fix bug that prevented deletion-only hunks from being kept correctly (#27921)
Click to expand commit body
Release Notes:
- N/A
Antonio Scandurra
created
961bfad
agent: Return an error to the model when trying to use a tool that is disabled (#27928)
Click to expand commit body
This PR makes it so we return an error to the model if it tries to use a
tool that is not currently enabled:
<img width="628" alt="Screenshot 2025-04-02 at 11 10 55 AM"
src="https://github.com/user-attachments/assets/e4bdf01c-f0ea-4c9c-805a-11868bd9c771"
/>
This allows the model to adapt based on that:
<img width="637" alt="Screenshot 2025-04-02 at 11 08 38 AM"
src="https://github.com/user-attachments/assets/41016b47-933c-4dcb-b791-847be0548c8a"
/>
Release Notes:
- N/A
Marshall Bowers
created
2eed94f
agent: Include context with first message that introduced it (#27925)
Click to expand commit body
We were including the context at the end which meant it never got
cached. We'll now include it with the first message that introduced it
so it's cached as long as it doesn't change.
This is an improvement, but we probably still need to think of ways to
optimize caching for cases where files in context change.
Release Notes:
- N/A
Agus Zubiaga
created
7a54dd7
Avoid requiring confirmation for tools that edit buffers (#27923)
Click to expand commit body
It's super easy to undo those changes. In a future PR, we should also
avoid requiring confirmation in the batch tool if all the underlying
tools don't require confirmation.
Release Notes:
- N/A
Antonio Scandurra
created
8ac4cbc
Don't create repos for invisible worktrees (#27894)
Click to expand commit body
Closes #ISSUE
Release Notes:
- Fixed git repositories being added for files outside the project
Cole Miller
created
d82bf13
agent: Remove unneeded branch in `use_pending_tools` (#27922)
Click to expand commit body
This PR removes an unneeded `else if` branch that was the same as the
previous branch in the conditional.
Doesn't seem necessary to run this twice.
Release Notes:
- N/A