Commit log

9249919 Write `{result_count}.diff` and `last.diff` eval run outputs (#29181)

Click to expand commit body
These are only written when the diff has changed. `patch.diff` has been
removed as its redundant with `last.diff`.

It can be convenient to open `last.diff` and use undo/redo to navigate
its history.

Release Notes:

- N/A

Michael Sloan created

9fe4a14 Add a brief description of GPUI 2->GPUI 3 changes to `.rules` (#29180)

Click to expand commit body
Release Notes:

- N/A

Michael Sloan created

7cc3c03 editor: Fix hang when scrolling over single line input fields (#28471)

Click to expand commit body
Closes #21684
Closes #28463
Closes #28264 

This PR fixes Zed hanging when scrolling over single line input fields
with `scroll_beyond_last_line` set to `vertical_scroll_margin`. The
change here is to fix the calculations of available lines.

The issue only arises with the setting present because with all
overscroll settings and `max_row` being 1 for single-line editors, the
calculation would still return the correct value of available lines,
which is 1. However, with overscrolling set to `vertical_scroll_margin`
and that set to any value greater than 0, the calculation would return
that the single-line editor has more than one line, which caused the
issues described above (Actually, setting `vertical_scroll_margin` to 1
works for some reason, overscrolls "properly" and does not cause a
crash. But I really did not want to investigate this buggy behavior
further).

This PR fixes this by always reporting the number of available lines as
the line number value for single line editors, which will (mostly) be 1
(for more context see the discussion in this PR).

Release Notes:

- Fixed an issue where Zed would crash when scrolling over single line
input fields and `scroll_beyond_last_line` set to
`vertical_scroll_margin`.

Finn Evers created

4f2f9ff Streaming tool calls (#29179)

Click to expand commit body
https://github.com/user-attachments/assets/7854a737-ef83-414c-b397-45122e4f32e8



Release Notes:

- Create file and edit file tools now stream their tool descriptions, so
you can see what they're doing sooner.

---------

Co-authored-by: Marshall Bowers <git@maxdeviant.com>

Richard Feldman and Marshall Bowers created

7aa0fa1 Add ability to attach rules as context (#29109)

Click to expand commit body
Release Notes:

- agent: Added support for adding rules as context.

Michael Sloan created

3b31860 Add to `.rules`: Avoid creating `mod.rs` paths (#29174)

Click to expand commit body
Release Notes:

- N/A

Michael Sloan created

733cd6b agent: Remove non-rust examples from evals (#29139)

Click to expand commit body
Release Notes:

- N/A

Thomas Mickley-Doyle created

e8fe0eb debugger: Fix restarting terminated child sessions (#29173)

Click to expand commit body
This fixes a bug where terminated child session failed to restart
because they were using the wrong configuration/binary to start a new
session

Release Notes:

- N/A

Anthony Eid created

0f3ac38 Agent eval: Copy `.rules` file into eval worktree for examples based on Zed (#29116)

Click to expand commit body
Also reverts #29108, which cherry-picked the rules file for an eval
example.

Release Notes:

- N/A

Michael Sloan created

32e9757 Fix ctrl-c in vim normal mode (#29167)

Click to expand commit body
This was broken when we added helix keybindings because we populate the
menu's shortcut based on the "last" seen binding for an action ignoring
context.

Release Notes:

- Fix `ctrl-c` in vim normal mode

Conrad Irwin created

be76942 agent: Migrate tool names in settings (#29168)

Click to expand commit body
Release Notes:

- agent: Add migration to rename `find_replace_file` tool to
`edit_file`, and `regex_search` to `grep`.

Agus Zubiaga created

942d4eb agent: Add additional fields to `Agent Tool Finished` telemetry event (#29163)

Click to expand commit body
This PR adds additional fields to the `Agent Tool Finished` telemetry
event:

- `model`
- `model_provider`
- `thread_id`
- `prompt_id`

Release Notes:

- N/A

Marshall Bowers created

9d35f03 debugger: More tidy up for SSH (#28993)

Click to expand commit body
Split `locator` out of DebugTaskDefinition to make it clearer when
location needs to happen.

Release Notes:

- N/A

---------

Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Co-authored-by: Anthony <anthony@zed.dev>
Co-authored-by: Cole Miller <m@cole-miller.net>

Conrad Irwin , Anthony Eid , Anthony , and Cole Miller created

d13cd00 zlog: Module-level configuration and other improvements (#29161)

Click to expand commit body
Various improvements to `zlog` including:

- Enable filtering by module (reproducing `env_logger` behavior) both
through env and settings.
- Note: filtering by module currently does not account for parent module
configuration, but does account for crate configuration.
i.e. `crate=trace` will enable `TRACE` messages in `crate::a` and
`crate::a::b` modules, but `crate::a=trace` will not enable trace
messages in module `crate::a::b`
- Implementing the `Log` trait for `zlog::Logger` to support gradual
transition and evaluate tradeoffs of always going through `log` crate.
- Added the ability to turn off logging for a specific filter (module or
scope) completely by setting it to `off` (in env: `crate::a=off`, in
settings: `"project.foo": "off"`)
- Made it so the `zlog::scoped!` macro can be used in constant
expressions, so scoped loggers can be declared as global constants

Release Notes:

- N/A

Ben Kunkle created

f8ac6ee terminal: Add right-click in terminal to create a new selection if none is present (#29131)

Click to expand commit body
This PR adds functionality to right click in terminal create new
selection if none present. The selection is identical with double click
a text in terminal, plus the logic is moved from the double-click in the
terminal::mouse_down.

Closes #28237 

Release Notes:
- Adds functionality to right click in terminal create new selection if
none present

Ho Chun Lau created

6d2bdc3 editor: Hide mouse context menu when modal is opened (#29127)

Click to expand commit body
Closes #28787 

The context menu appears before the modal because it is a Deferred
element, which is always displayed above normal elements.

Release Notes:

Previously, the editor context menu appeared before the Command Palette.
This commit ensures the editor context menu is hidden when a modal,
including the Command Palette, is opened.

redforks created

9a3434e component preview: Focus search input immediately upon opening (#29155)

Click to expand commit body
Just a quick quality of life improvement to make keyboard navigation in
this view a bit better. When you open the Component Preview view now,
the "filter" search input will be focused right off the bat.

Release Notes:

- N/A

Danilo Leal created

333de5d agent: Update Switch color in the settings view (#29154)

Click to expand commit body
Just using the color method for the Switch component added in
https://github.com/zed-industries/zed/pull/29074.

Release Notes:

- N/A

Danilo Leal created

97ab098 Start tracking tool failure rates in eval (#29122)

Click to expand commit body
This pull request will print all the used tools and their failure rates.
The objective goal should be to minimize that failure rate.

@tmickleydoyle: this also changes the telemetry event to report
`tool_metrics` as opposed to `tool_use_counts`. Ideally I'd love to be
able to plot failure rates by tool and hopefully see that percentage go
down. Can we do that with the data we're tracking with this pull
request?

Release Notes:

- N/A

Antonio Scandurra created

3a27e8c edit tool: Handle over-indentation in `replace_with_flexible_indent` (#29153)

Click to expand commit body
Release Notes:

- agent: Correct over-indentation in search/replace strings from model

Agus Zubiaga created

bfb2ed3 ui: Add `.color` method to the Switch (#29074)

Click to expand commit body
This allows to pass, for example, `.color(SwitchColor::Accent)` to the
Switch component and have it render differently.

<img
src="https://github.com/user-attachments/assets/c60bac8a-c5ae-4693-912a-c754e5081f45"
width="550"/>

Release Notes:

- N/A

Danilo Leal created

9db0c4f editor: Hide signature popover on editor scroll (#29149)

Click to expand commit body
Closes #27845

This is also how VSCode tackles this issue. I think this should be
applicable to even more popovers across the editor and context menu, but
it can be addressed later.

Release Notes:

- Fixed the signature popover not hiding on editor scroll.

Smit Barmase created

a4f5c4f windows: Fix `window_min_size` (#29118)

Click to expand commit body
Closes #29117

This makes `window_min_size` work by using the `WM_GETMINMAXINFO` window
message.


Release Notes:

- N/A

---------

Co-authored-by: 张小白 <364772080@qq.com>

angelrecovery and 张小白 created

4dcfe0c Omit duplicate LSP data when generating completion item labels (#29137)

Click to expand commit body
Before: 
<img width="875" alt="before"
src="https://github.com/user-attachments/assets/eec34f4e-3665-47e1-a224-16f1b98d5b29"
/>

After:
<img width="769" alt="after"
src="https://github.com/user-attachments/assets/4ce6a24b-6fd0-4043-b67c-c92105c1501a"
/>

Release Notes:

- N/A

Kirill Bulatov created

4473b45 inline assistant: Fix model picker (#29136)

Click to expand commit body
Release Notes:

- inline assistant: Fixed a bug where the default model would be used
even when a specific inline assistant model was configured

Agus Zubiaga created

ceeae79 eval: Improve lang server idle detection (#29135)

Click to expand commit body
Brings back #29013 after it was accidentally reverted by
https://github.com/zed-industries/zed/pull/28961/commits/e9bb15b9063615762c866c30aaf646acb12af1f3.

Release Notes:

- N/A

Agus Zubiaga created

107d8ca Rename regex search tool to grep and accept an include glob pattern (#29100)

Click to expand commit body
This PR renames the `regex_search` tool to `grep` because I think it
conveys more meaning to the model, the idea of searching the filesystem
with a regular expression. It's also one word and the model seems to be
using it effectively after some additional prompt tuning.

It also takes an include pattern to filter on the specific files we try
to search. I'd like to encourage the model to scope its searches more
aggressively, as in my testing, I'm only seeing it filter on file
extension.

Release Notes:

- N/A

Nathan Sobo created

4278d89 Update `find_and_replace_diff_card` eval example to include `.rules` file (#29108)

Click to expand commit body
Release Notes:

- N/A

Michael Sloan created

a91948a agent: Reorder some linux keybindings to match mac keybindings (#29107)

Click to expand commit body
Release Notes:

- Made keybindings for agent panel closer to the precedence order used
on Mac. This fixes use of `enter` to add context from the menu triggered
by `@` referencing.

Michael Sloan created

2178b36 Add eval worktrees and repos to file_scan_exclusions in zed project settings (#29106)

Click to expand commit body
Release Notes:

- N/A

Michael Sloan created

0fb0059 Switch from `open-codestral-mamba` to `codestral-latest` for default mistral model (#29104)

Click to expand commit body
Couldn't find mistral cloud pricing for open-codestral-mamba on the
mistral site, but codestral-latest is newer and appears to be cheaper
based on
https://sdk.vercel.ai/playground/mistral:codestral-mamba-latest,mistral:codestral-2501

Release Notes:

- N/A

Michael Sloan created

fbf7caf Default to fast model for thread summaries and titles + don't include system prompt / context / thinking segments (#29102)

Click to expand commit body
* Adds a fast / cheaper model to providers and defaults thread
summarization to this model. Initial motivation for this was that
https://github.com/zed-industries/zed/pull/29099 would cause these
requests to fail when used with a thinking model. It doesn't seem
correct to use a thinking model for summarization.

* Skips system prompt, context, and thinking segments.

* If tool use is happening, allows 2 tool uses + one more agent response
before summarizing.

Downside of this is that there was potential for some prefix cache reuse
before, especially for title summarization (thread summarization omitted
tool results and so would not share a prefix for those). This seems fine
as these requests should typically be fairly small. Even for full thread
summarization, skipping all tool use / context should greatly reduce the
token use.

Release Notes:

- N/A

Michael Sloan created

d48152d Don't send dummy user text with tool results (#29099)

Click to expand commit body
Previously, we were including the dummy text "Here are the tool
results." whenever reporting tool call results. I'm worried this is
adding noise and confusing the model, because the user didn't actually
say anything. This inserts an empty message to be populated later. My
preference would be something less stateful, where tool results (or
batches of them requested simultaneously) would be sent to the model as
soon as they were ready, without bothering to do this message
association dance. But for now, this seems to work.

Release Notes:

- N/A

Nathan Sobo created

bafc086 agent: Preserve thinking blocks between requests (#29055)

Click to expand commit body
Looks like the required backend component of this was deployed.

https://github.com/zed-industries/monorepo/actions/runs/14541199197

Release Notes:

- N/A

---------

Co-authored-by: Antonio Scandurra <me@as-cii.com>
Co-authored-by: Agus Zubiaga <hi@aguz.me>
Co-authored-by: Richard Feldman <oss@rtfeldman.com>
Co-authored-by: Nathan Sobo <nathan@zed.dev>

Bennet Bo Fenner , Antonio Scandurra , Agus Zubiaga , Richard Feldman , and Nathan Sobo created

f737c4d editor: Improve selection highlights speed (#29097)

Click to expand commit body
Before, we used to debounce selection highlight because it needed to
search the whole file to show gutter line highlights, etc. This
experience felt extremely laggy.

This PR introduces a new approach where:
1. We query only visible rows without debounce. The search function
itself is async and runs in a background thread, so it's not blocking
anything. With no debounce and such a small search space, highlights
feel realtime.
2. In parallel, we also query the whole file (still debounced, like
before). Once this query resolves, it updates highlights across the
file, making scrollbar markers visible.

This hybrid way gives the feeling of realtime, while keeping the same
functionality.


https://github.com/user-attachments/assets/432b65f1-89d2-4658-ad5e-048921b06a23

P.S. I have removed the user setting for custom debounce delay, because
(one) now it doesn't really make sense to configure that, and (two) the
whole logic is based on the assumption that the fast query will resolve
before the debounced query. A static debounce time makes sure of that.
Configuring it might lead to cases where the fast query resolves after
the debounced query, and we end up only seeing visible viewport
highlights.

Release Notes:

- Improved selection highlight speed.

Smit Barmase created

8f308d8 Add `zed` to Flatpak config and data directories (#28952)

Click to expand commit body
Closes #28944 

Release Notes:

- linux: Fixed incorrect config directory being used when Zed is
installed via Flatpak

Signed-off-by: Marko Kungla <marko.kungla@gmail.com>

Marko Kungla created

703a68e docs: Add more examples of existing MCP extensions (#29090)

Click to expand commit body
Also linking to the zed.dev site, which now includes a filter for MCP
(i.e., "Context Servers") servers in the Extensions page.

Release Notes:

- N/A

Danilo Leal created

cc2fcb2 agent: Add item to add custom MCP server in the panel's menu (#29091)

Click to expand commit body
This is based on user feedback that the Agent Panel menu was only
linking to extensions as a way to add MCP servers while we also support
adding "custom" servers, too, which don't go through the extensions
flow.

Release Notes:

- N/A

Danilo Leal created

f0ef311 gpui: Introduce `PlatformKeyboardLayout` trait for human-friendly keyboard layout names (#29049)

Click to expand commit body
This PR adds a new `PlatformKeyboardLayout` trait with two methods:
`id(&self) -> &str` and `name(&self) -> &str`. The `id()` method returns
a unique identifier for the keyboard layout, while `name()` provides a
human-readable name. This distinction is especially important on
Windows, where the `id` and `name` can be quite different. For example,
the French layout has an `id` of `0000040C`, which is not
human-readable, whereas the `name` would simply be `French`. Currently,
the existing `keyboard_layout()` method returns what's essentially the
same as `id()` in this new design.

This PR implements the `name()` method for both Windows and macOS. On
Linux, for now, `name()` still returns the same value as `id()`.

Release Notes:

- N/A

张小白 created

0454e7a terminal: Add Alt+. keybinding passthrough for last-argument recall (#29088)

Click to expand commit body
Alt+. is a useful terminal/readline feature that cycles through the last
arguments of previous commands in history. Unlike many other shortcuts,
it doesn't conflict with anything important globally, so it can be
safely enabled by default.

Release Notes:

- N/A

Oleksiy Syvokon created

d88b06a Simplify language model registry + only emit change events on change (#29086)

Click to expand commit body
* Now only does default fallback logic in the registry

* Only emits change events when there is actually a change

Release Notes:

- N/A

Michael Sloan created

98ceffe Pretty tool inputs in eval output markdown + numbered assistant messages (#29082)

Click to expand commit body
Release Notes:

- N/A

Michael Sloan created

bab2856 Systematically optimize agentic editing performance (#28961)

Click to expand commit body
Now that we've established a proper eval in tree, this PR is reboots of
our agent loop back to a set of minimal tools and simpler prompts. We
should aim to get this branch feeling subjectively competitive with
what's on main and then merge it, and build from there.

Let's invest in our eval and use it to drive better performance of the
agent loop. How you can help: Pick an example, and then make the outcome
faster or better. It's fine to even use your own subjective judgment, as
our evaluation criteria likely need tuning as well at this point. Focus
on making the agent work better in your own subjective experience first.
Let's focus on simple/practical improvements to make this thing work
better, then determine how we can craft our judgment criteria to lock
those improvements in.

Release Notes:

- N/A

---------

Co-authored-by: Max <max@zed.dev>
Co-authored-by: Antonio <antonio@zed.dev>
Co-authored-by: Agus <agus@zed.dev>
Co-authored-by: Richard <richard@zed.dev>
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Co-authored-by: Antonio Scandurra <me@as-cii.com>
Co-authored-by: Michael Sloan <mgsloan@gmail.com>

Nathan Sobo , Max , Antonio , Agus , Richard , Max Brunsfeld , Antonio Scandurra , and Michael Sloan created

8102a16 agent: Make copy button show while hovering the codeblock container (#29075)

Danilo Leal created

9875521 language_models: Fix passing of `thread_id` and `prompt_id` (#29071)

Click to expand commit body
This PR is a follow-up to
https://github.com/zed-industries/zed/pull/29069 that fixes an issue
where the thread ID and prompt ID were not being sent up correctly.

Release Notes:

- N/A

Marshall Bowers created

8c55063 Fix zed sometimes stopping by using setsid on interactive shells (#29070)

Click to expand commit body
For some reason `SIGTTIN` sometimes gets sent to the process group,
causing it to stop when run from a terminal. This solves that issue by
putting the shell in a new session + progress group.

This allows removal of a workaround of using `exit 0;` to restore
handling of ctrl-c after exit. In testing this appears to no longer be
necessary.

Closes #27716

Release Notes:

- Fixed Zed sometimes becoming a stopped background process when run
from a terminal.

Michael Sloan created

7abe2c9 agent: Attach thread ID and prompt ID to telemetry events (#29069)

Click to expand commit body
This PR attaches the thread ID and the new prompt ID to telemetry events
for completions in the Agent panel.

Release Notes:

- N/A

---------

Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>

Marshall Bowers and Mikayla Maki created

73a767f Add hidden `prompt_to_focus` field to `OpenPromptLibrary` action (#29062)

Click to expand commit body
Release Notes:

- N/A

Michael Sloan created

327fee4 Init prompt store in agent eval (#29068)

Click to expand commit body
Needed after #28915

Release Notes:

- N/A

Michael Sloan created

b1d5918 Fix reset_db script (#29067)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created