Commit log

d340670 Ensure rejecting a hunk dismisses the diff (#27919)

Click to expand commit body
Release Notes:

- N/A

Antonio Scandurra created

ad42a8a agent: Adjust permission card design (#27911)

Click to expand commit body
<img
src="https://github.com/user-attachments/assets/76ae380c-6d5b-4ed6-9b47-9a4c44b00042"
width="500" />

Release Notes:

- N/A

Danilo Leal created

2846c55 agent: Account for tool use messages without any corresponding text (#27917)

Click to expand commit body
This PR makes it so if we receive a tool use from the model without any
corresponding text, we'll insert some placeholder text to keep the
conversation in a well-structured format.

This aims to fix an error that Antonio was seeing:


![image](https://github.com/user-attachments/assets/eeba95ef-9b67-41d7-bce3-afe84bcdc7b1)

Release Notes:

- N/A

Marshall Bowers created

5dcd0d3 language_models: Denote Copilot Chat as not supporting tools (#27909)

Click to expand commit body
This PR updates the Copilot Chat language model to indicate it does not
yet support tool use in Zed.

Release Notes:

- N/A

Marshall Bowers created

a70daa4 agent: Update tool names in default profiles to reflect snake_cased rename (#27907)

Click to expand commit body
This PR updates the tool names in the default profiles, as they were not
updated after the tool names were changed to snake_case in #27903.

Release Notes:

- N/A

Marshall Bowers created

b158ee6 Fix Gemini function calling (#27905)

Click to expand commit body
This seems to improve the performance of `gemini-2.5-pro-exp-03-25`
significantly.
We know define a single `Tool` that has multiple `FunctionDeclaration`s,
instead of defining multiple `Tool`s with a single
`FunctionDeclaration`.
Oddly enough the `flash` models seemed to work perfectly fine with the
multiple `Tool { ... }` definitions

Release Notes:

- N/A

Bennet Bo Fenner created

9b7b4a9 assistant2: Use snake_case for tool names (#27903)

Click to expand commit body
The [Gemini
docs](https://ai.google.dev/gemini-api/docs/function-calling?example=weather#function_declarations)
state that function names should be in `snake_case` or `camelCase`.

Release Notes:

- N/A

Bennet Bo Fenner created

c1d6dfd Update selection when keeping/rejecting hunks (#27902)

Click to expand commit body
Release Notes:

- N/A

Antonio Scandurra created

57d7bc2 vim: Add `g?` convert to `Rot13`/`Rot47` (#27824)

Click to expand commit body
Release Notes:

- Added `g?` convert to `Rot13`/`Rot47`

---------

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>

0x2CA and Conrad Irwin created

7bc0dd1 Don't unwrap on bad zstd data (#27891)

Click to expand commit body
Closes #ISSUE

Release Notes:

- N/A

Conrad Irwin created

dc83f1a Rename `assistant2` to `agent` (#27887)

Click to expand commit body
This PR renames the `assistant2` crate to `agent`.

Release Notes:

- N/A

Marshall Bowers created

8e0f70f Bump revision for `livekit-rust-sdks` (#27886)

Click to expand commit body
This PR bumps the revision of the `livekit-rust-sdks` crate.

I was running into issue where Cargo was stuck on "Updating git
submodule `https://chromium.googlesource.com/libyuv/libyuv`".

I resolved the issue by forking `libyuv` to
https://github.com/zed-industries/libyuv and updating our
`livekit-rust-sdks` fork to use it in
https://github.com/zed-industries/livekit-rust-sdks/pull/4.

Release Notes:

- N/A

Marshall Bowers created

6262a46 Fix a bug that prevented repositories from being deduplicated (#27884)

Click to expand commit body
Closes #ISSUE

Release Notes:

- Ensure that only one repository is shown in the git UI when two
subdirectories of a repository root are open in Zed

Cole Miller created

8321e65 Bump tree-sitter-rust to 0.24 (#27875)

Click to expand commit body
Release Notes:

- Added correct syntax highlighting for use bounds and async closures in
Rust.

Max Brunsfeld created

4110928 nix: Clean up build (#27881)

Click to expand commit body
- bump our livekit version to include a fix for a crane bug (TODO: add
link when an issue is filed on crane)
- switch to a clang stdenv for both linux and macos
- manually unify versions of our notify crate
- remove old linker flags which were only needed for livekit
- fix an issue where RUSTFLAGS shadowed the rustflags from cargo configs

Release Notes:

- N/A

Julia Ryan created

a1b53e9 git: Use doc comments for `ResetMode` variants (#27882)

Click to expand commit body
This PR updates the `ResetMode` enum to use doc comments for its
variants instead of line comments.

Release Notes:

- N/A

Marshall Bowers created

4a25251 Improve tracking for agent edits (#27857)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Nathan Sobo <nathan@zed.dev>
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>

Antonio Scandurra , Nathan Sobo , and Max Brunsfeld created

d26c477 assistant2: Summarize threads in context and continue long ones (#27851)

Click to expand commit body
We'll now prompt the user to start a new thread when the active one gets
too long.

<img width=500
src="https://github.com/user-attachments/assets/91445bc0-3e81-422f-aa4a-b8f0741f9d9a"></img>


When they click "Start New Thread", will create a new one with the
previous one added as context.

<img width=500
src="https://github.com/user-attachments/assets/c3b4223f-5bdd-4ba4-956f-5a5880d5e2c3"></img>

Instead of including the full thread text, we'll now add summarized
versions of threads to the context, allowing you to continue the
conversation even if it was near the token limit.

- Thread summaries are cached and persisted. 
- A cached summary is invalidated if the thread is continued.
- We start generating the thread summary as soon as it's selected from
the picker. Most times, the summary will be ready by the time the user
sends the message.
- If the summary isn't ready by the time a message is sent, the user
message will be displayed in the thread immediately, and a "Summarizing
context..." indicator will appear. After the summaries are ready, we'll
start generating the response and show the usual "Generating..."
indicator.

Release Notes:

- N/A

---------

Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Co-authored-by: Marshall Bowers <git@maxdeviant.com>

Agus Zubiaga , Danilo Leal , and Marshall Bowers created

16f625b Add persistence to command palette history (#26948)

Click to expand commit body
Closes #20391

### Summary
This adds a persistence layer to the command palette so that usages can
persist after Zed is closed and re-opened.

The current "usage" algorithm is unchanged, e.g.:
- Sorts by number of usages descending (no recency preference)
- Once a user's query is active, removes these suggestions in favor of
fuzzy matching

There are some additional considerations in order to keep the DB from
growing uncontrollably (and to make long-term use ergonomic):
- The "invocations" count handles max values (though at u16, it seems
unlikely a user will deal with this)
- If a command is un-invoked for more than a month, it stops being
considered a recent usage, and its next update will update its usages
back to 1

### Future Considerations
- Could make the "command expiry" configurable in settings, so the user
can decide how long to hold onto recent usages
- Could make a more sophisticated algorithm which balances recency and
total invocations - e.g. if I've used COMMAND_A 100 times in the last
month, but COMMAND_B 10 times today, should COMMAND_B actually be
preferred?
- Could do preferential fuzzy-matching against these matches once the
user starts a query.

Release Notes:

- Added persistent history of command palette usages.

---------

Co-authored-by: Peter Finn <mastion11@gmail.com>
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>

KyleBarton , Peter Finn , and Conrad Irwin created

9bc4697 Use new multibuffer excerpts in find-all-references and friends (#27876)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Kirill Bulatov <mail4score@gmail.com>

Conrad Irwin and Kirill Bulatov created

e7290df Finish removing git repository state and scanning logic from worktrees (#27568)

Click to expand commit body
This PR completes the process of moving git repository state storage and
scanning logic from the worktree crate to `project::git_store`.

Release Notes:

- N/A

---------

Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Co-authored-by: Conrad <conrad@zed.dev>

Cole Miller , Max Brunsfeld , and Conrad created

8f25251 assistant2: Rename `assistant2` actions to `agent` (#27877)

Click to expand commit body
This PR renames the `assistant2` actions to `agent`.

Note that any `assistant` actions have been left as-is for now so that
there aren't any changes to users not in the feature flag.

Release Notes:

- N/A

Marshall Bowers created

1567967 nix: Separate debug output (#27871)

Click to expand commit body
This makes it easier to iterate on the nix flake by adding a package
which builds zed in debug mode rather than release

Release Notes:

- N/A

Julia Ryan created

2d05537 assistant2: Fix notification max width (#27872)

Click to expand commit body
<img width=400
src="https://github.com/user-attachments/assets/4132e075-3f2a-4c65-8c06-c3428f3ad477">

<img width=400
src="https://github.com/user-attachments/assets/95908b32-a9b9-45c3-9db9-dcbeedffc5e7">

Release Notes:

- N/A

Agus Zubiaga created

95b963c vim: Add :Git (#27874)

Click to expand commit body
Just adding to the existing https://zed.dev/docs/vim#ex-commands

Captial G is not used by vim commands.

Release Notes:

- N/A

5brian created

5d1695e assistant2: Add affordances for when the selected model does not support tools (#27870)

Click to expand commit body
This PR adds some affordances for when the currently-selected model does
not support tools.

We disable the profile selector and put it into a "No Tools" state:

<img width="1394" alt="Screenshot 2025-04-01 at 3 58 00 PM"
src="https://github.com/user-attachments/assets/de6ecb0f-7657-4e16-9d5d-7bbfbc2b0a5c"
/>

We will also only attach tools to the request to the model if the model
supports it.

Release Notes:

- N/A

Marshall Bowers created

192097f assistant2: Ensure errors are also displayed in populated new thread view (#27869)

Click to expand commit body
Follow-up to https://github.com/zed-industries/zed/pull/27812

This PR makes sure these errors cases also show up in the panel's empty
state even when there is past data.

| No ToS | Missing Provider |
|--------|--------|
| ![CleanShot 2025-04-01 at 4  49
36@2x](https://github.com/user-attachments/assets/6da6bdc9-daa6-4a7b-a224-989eb845e205)
| ![CleanShot 2025-04-01 at 4  50
04@2x](https://github.com/user-attachments/assets/bddf62cb-3727-44b5-b115-9a88313c6d85)
|

Release Notes:

- N/A

Danilo Leal created

9205980 find-replace tool: Return diff in output (#27868)

Click to expand commit body
This should help the model maintain an accurate picture of the file as
it makes changes

Release Notes:

- N/A

Agus Zubiaga created

5880271 language_model: Add `supports_tools` method to `LanguageModel` (#27867)

Click to expand commit body
This PR adds a new `supports_tools` method to the `LanguageModel` trait
to indicate whether a given model supports tool use.

Release Notes:

- N/A

Marshall Bowers created

4ff07bf Fix restore button (#27866)

Click to expand commit body
ID collision!

Release Notes:

- N/A

Cole Miller created

b59967b Don't allow open excerpts in commit view for now (#27862)

Click to expand commit body
Follow-up to https://github.com/zed-industries/zed/pull/27636

Release Notes:

- N/A

Max Brunsfeld created

133d3f0 assistant2: Update some text to use "agent" nomenclature (#27864)

Click to expand commit body
This PR updates some text in the Agent Panel to use the "agent"
nomenclature.

Release Notes:

- N/A

Marshall Bowers created

0934cb5 Don't prompt twice when trashing added files from git panel (#27863)

Click to expand commit body
Closes #ISSUE

Release Notes:

- N/A

Cole Miller created

bda33ec vim: Fix space forward bug with non-ASCII characters at EOL (#27860)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/27619

Fixes issue with right wrapped movement when a multi-byte character is
at the end of the line. This is done by grabbing the last character on
the current row and using that characters size to calculate the
`max_column` variable, which is used to decide if the next right
movement should move down the line or not.

We did notice a bit of code that could be an issue that we wanted to
call out.
[Here](https://github.com/zed-industries/zed/blob/main/crates/editor/src/display_map.rs#L1070)
inside of `clip_at_line_end` it also does a saturating_sub(1), assuming
a single byte character. We didn't run into any issues due to this line
but felt like a similar bug. We can apply a similar fix if wanted to
pose the question first.

Test case: Moving to next line when eol is a multi-byte character


https://github.com/user-attachments/assets/1021ab1f-f49d-4986-8f9a-8cfc7e5c91bc


Release Notes:

- Fixed issue in vim forward spacing when a multi-byte character is at
the eol

---------

Co-authored-by: KyleBarton <kjbarton4@gmail.com>

Peter Finn and KyleBarton created

64ef3ab ui: Introduce Banner component (#27853)

Click to expand commit body
This PR adds a new, generic `Banner` component so that we can
potentially replace the multiple, isolated implementations of it
throughout some places of the app.

<img
src="https://github.com/user-attachments/assets/a268f745-1747-48e6-9461-2732eb7c0be4"
width="750"/>

Release Notes:

- N/A

Danilo Leal created

ac5a2b2 python: Add recognition of worktree -> venv links (#26759)

Click to expand commit body
Python envs created with virtualenvwrapper have the ability to link to
the project directory (via the `.project` file in the virtualenv).
`python-environment-tools` supports this and reports the project path.

Additionally, some tools (e.g virtualfish) recognize special
"environment activation" files in project directories (`.venv` by
default)
[1].

Use the above information to sort reported Python toolchains so that the
correct env for a given worktree is at the top.

[1]
https://virtualfish.readthedocs.io/en/latest/plugins.html#auto-activation-auto-activation

Release Notes:

- python: Improved detection of virtualenvwrapper environments in work
trees

Elvis Pranskevichus created

ada8b0f Show commit author, not committer (#27856)

Click to expand commit body
Release Notes:

- Fixed a bug where the git panel displayed a commit's committer in
place of its author.

Max Brunsfeld created

7687105 Preserve cursor position when resetting excerpts (#27850)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Nathan Sobo <nathan@zed.dev>
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>

Antonio Scandurra , Nathan Sobo , and Conrad Irwin created

f859b32 assistant2: Use "Agent Panel" nomenclature for panel tooltip (#27858)

Click to expand commit body
This PR updates the Agent Panel tooltip in the status to use "Agent
Panel" instead of "Assistant Panel".

Also changes the name we use in workspace serialization.

Release Notes:

- N/A

Marshall Bowers created

e63df58 assistant2: Rename key context to `AgentPanel` (#27859)

Click to expand commit body
This PR renames the key context for the Agent Panel from
"AssistantPanel2" to "AgentPanel".

Release Notes:

- N/A

Marshall Bowers created

0ad4656 assistant_settings: Show JSON schema for profile settings (#27855)

Click to expand commit body
This PR makes it so we include the `default_profile` and `profiles`
settings in the JSON schema.

This provides completions when editing the `settings.json`.

Release Notes:

- N/A

Marshall Bowers created

992831c workspace: Do not call set_active when deserializing a dock if that dock was not visible (#27852)

Click to expand commit body
This unblocks work on new debugger UI, where we don't want the
set_active function to be called unconditionally.

Release Notes:

- N/A

---------

Co-authored-by: Anthony Eid <hello@anthonyeid.me>

Piotr Osiewicz and Anthony Eid created

7257053 Update docs for some settings (#27474)

Click to expand commit body
Fix incorrect defaults or descriptions and add missing content.

Release Notes:

- N/A

---------

Co-authored-by: Peter Tripp <peter@zed.dev>

Junseong Park and Peter Tripp created

feb1d37 assistant2: Allow clicking on `@mentions` (#27846)

Click to expand commit body
https://github.com/user-attachments/assets/f6f7c115-5c40-48f9-a099-2b691993967b

Release Notes:

- N/A

Bennet Bo Fenner created

12037dc assistant2: Allow profiles to enable all context servers (#27847)

Click to expand commit body
This PR adds a new `enable_all_context_servers` field to agent profiles
to allow them to enable all context servers without having to opt into
them individually.

The "Write" profile will now have all context servers enabled out of the
box.

Release Notes:

- N/A

Marshall Bowers created

ab31eb5 edit prediction: Show display mode options just for Zed (#27844)

Click to expand commit body
Eager and Subtle modes are only supported for Zed as an edit prediction
provider and they were visible if your provider is Copilot, which is
misleading.

Release Notes:

- N/A

Danilo Leal created

7d67bd4 assistant2: Remove check icon from successful tool calls (#27840)

Click to expand commit body
Just to streamline the UI more.

Release Notes:

- N/A

Danilo Leal created

a24fc5a Use pagination for GitHub issue response script (#27838)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

0079771 Use symmetric padding in signature popovers (#27734)

Click to expand commit body
Release Notes:

- Fixed padding issue with the signature popovers

------

Before:
<img width="372" alt="Screenshot 2025-03-29 at 20 30 39"
src="https://github.com/user-attachments/assets/36d1555d-bccb-4fca-b6ad-514cf11d024f"
/>

After:
<img width="375" alt="Screenshot 2025-03-29 at 20 31 13"
src="https://github.com/user-attachments/assets/6566d0e9-9dae-47dc-bfa0-526bf35f3cf0"
/>

Stanislav Alekseev created

d1db6d6 assistant2: Fix issue with included directories in context picker (#27833)

Click to expand commit body
Release Notes:

- N/A

Bennet Bo Fenner created