If gdb doesn't send a thread name we display the thread's process id in
the thread drop down menu instead now.
Co-authored-by: Remco Smits \<djsmits12@gmail.com\>
Release Notes:
- debugger beta: Handle bug where DAPs don't send thread names
Anthony Eid
created
8eed13c
Ensure client reconnects after erroring during the handshake (#31278)
Click to expand commit body
Release Notes:
- Fixed a bug that prevented Zed from reconnecting after erroring during
the initial handshake with the server.
Antonio Scandurra
created
12c1ce5
editor: Fix issue where newline on `*` as prefix adds comment delimiter (#31271)
Click to expand commit body
Release Notes:
- Fixed issue where pressing Enter on a line starting with * incorrectly
added comment delimiter.
---------
Co-authored-by: Piotr Osiewicz <peterosiewicz@gmail.com>
Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
smit
,
Piotr Osiewicz
, and
Piotr Osiewicz
created
918f44a
debugger: Change placeholder text for Custom/Run text input (#31264)
- Make remembering focus work with `ActivatePaneDown` as well
- Tone down the console's focus-in behavior so clicking doesn't
misbehave
Release Notes:
- N/A
Cole Miller
created
1e6412c
debugger: Detect debugpy from virtual env (#31211)
Click to expand commit body
Release Notes:
- Debugger Beta: Detect debugpy from virtual env
Remco Smits
created
2666272
Change default diagnostics_max_severity to 'hint' (cherry-pick #31229) (#31245)
Click to expand commit body
Cherry-picked Change default diagnostics_max_severity to 'hint' (#31229)
Closes https://github.com/blopker/codebook/issues/79
Recently, the setting `diagnostics_max_severity` was changed from `null`
to `warning`in this PR: https://github.com/zed-industries/zed/pull/30316
This change has caused the various spell checking extensions to not work
as expected by default, most of which use the `hint` diagnostic. This
goes against user expectations when installing one of these extensions.
Without `hint` as the default, extension authors will either need to
change the diagnostic levels, or instruct users to add
`diagnostics_max_severity` to their settings as an additional step,
neither of which is a great user experience.
This PR sets the default `hint`, which is closer to the original
behavior before the aforementioned PR.
Release Notes:
- Changed `diagnostics_max_severity` to `hint` instead of `warning` by
default
---------
Co-authored-by: Kirill Bulatov <kirill@zed.dev>
Co-authored-by: Bo Lopker <blopker@users.noreply.github.com>
Co-authored-by: Kirill Bulatov <kirill@zed.dev>
gcp-cherry-pick-bot[bot]
,
Bo Lopker
, and
Kirill Bulatov
created
Release Notes:
- AWS Bedrock: Added support for Claude 4.
Shardul Vaidya
created
9e3b485
agent: Remove last turn after a refusal (#31220)
Click to expand commit body
This is a follow-up to https://github.com/zed-industries/zed/pull/31217
that removes the last turn after we get a `refusal` stop reason, as
advised by the Anthropic docs.
Meant to include it in that PR, but accidentally merged it before
pushing these changes 🤦🏻♂️.
Release Notes:
- N/A
Marshall Bowers
created
5c68f10
Handle new `refusal` stop reason from Claude 4 models (#31217)
Click to expand commit body
This PR adds support for handling the new [`refusal` stop
reason](https://docs.anthropic.com/en/docs/test-and-evaluate/strengthen-guardrails/handle-streaming-refusals)
from Claude 4 models.
<img width="409" alt="Screenshot 2025-05-22 at 4 31 56 PM"
src="https://github.com/user-attachments/assets/707b04f5-5a52-4a19-95d9-cbd2be2dd86f"
/>
Release Notes:
- Added handling for `"stop_reason": "refusal"` from Claude 4 models.
Marshall Bowers
created
803e8ce
agent: Improve Gemini support in the edit_file tool (#31116)
Click to expand commit body
This change improves `eval_extract_handle_command_output` results for
all models:
Model | Pass rate before | Pass rate after
----------------------------|------------------|----------------
claude-3.7-sonnet | 0.96 | 0.98
gemini-2.5-pro | 0.35 | 0.86
gpt-4.1 | 0.81 | 1.00
Part of this improvement comes from more robust evaluation, which now
accepts multiple possible outcomes. Another part is from the prompt
adaptation: addressing common Gemini failure modes, adding a few-shot
example, and, in the final commit, auto-rewriting instructions for
clarity and conciseness.
This change still needs validation from larger end-to-end evals.
Release Notes:
- N/A
Oleksiy Syvokon
created
ed31f80
anthropic: Fix Claude 4 model display names to match official order (#31218)
Click to expand commit body
Release Notes:
- N/A
Umesh Yadav
created
7c9e1a3
debugger: Fix environment variables not being substituted in debug tasks (#31198)
Click to expand commit body
Release Notes:
- Debugger Beta: Fixed a bug where environment variables were not
substituted in debug tasks in some cases.
Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Co-authored-by: Remco Smits <djsmits12@gmail.com>
Cole Miller
,
Anthony Eid
, and
Remco Smits
created
2eebf7d
language_models: Update default/recommended Anthropic models to Claude Sonnet 4 (#31209)
Click to expand commit body
This PR updates the default/recommended models for the Anthropic and Zed
providers to be Claude Sonnet 4.
Release Notes:
- Updated default/recommended Anthropic models to Claude Sonnet 4.
Marshall Bowers
created
2b58f16
language_model: Allow Max Mode for Claude 4 models (#31207)
Click to expand commit body
This PR adds the Claude 4 models to the list of models that support Max
Mode.
Release Notes:
- Added Max Mode support for Claude 4 models.
Marshall Bowers
created
07e4125
mistral: Add DevstralSmallLatest model to Mistral and Ollama (#31099)
Click to expand commit body
Mistral just released a sota coding model:
https://mistral.ai/news/devstral
This PR adds support for it in both ollama and mistral
Release Notes:
- Add DevstralSmallLatest model to Mistral and Ollama
Umesh Yadav
created
4f53977
anthropic: Add support for Claude 4 (#31203)
Click to expand commit body
This PR adds support for [Claude
4](https://www.anthropic.com/news/claude-4).
Release Notes:
- Added support for Claude Opus 4 and Claude Sonnet 4.
---------
Co-authored-by: Antonio Scandurra <me@as-cii.com>
Co-authored-by: Richard Feldman <oss@rtfeldman.com>
Marshall Bowers
,
Antonio Scandurra
, and
Richard Feldman
created
38f8e5f
debugger beta: Move path resolution to resolve scenario instead of just in new session modal (#31185)
Click to expand commit body
This move was done so debug configs could use path resolution, and
saving a configuration from the new session modal wouldn't resolve paths
beforehand.
I also added an integration test to make sure path resolution happens
from an arbitrary config. The test was placed under the new session
modal directory because it has to do with starting a session, and that's
what the new session modal typically does, even if it's implicitly used
in the test.
In the future, I plan to add more tests to the new session modal too.
Release Notes:
- debugger beta: Allow configs from debug.json to resolve paths
Anthony Eid
created
c5a27c8
editor: Fix block comment incorrectly continues to next line in some cases (#31204)
Click to expand commit body
Closes #31138
Fix edge case where adding newline if there is text afterwards end
delimiter of multiline comment, would continue the comment prefix. This
is fixed by checking for end delimiter on whole line instead of just
assuming it would always be at end.
- [x] Tests
Release Notes:
- Fixed the issue where in some cases the block comment continues to the
next line even though the comment block is already closed.
smit
created
9a4e44b
debugger: Always focus the active session whenever it is stopped (#31182)
Click to expand commit body
Closes #ISSUE
Release Notes:
- debugger: Fixed child debug sessions taking precedence over the
parents when spawned.
Piotr Osiewicz
created
5f82e2c
debugger: Use integrated terminal for Python (#31190)
Click to expand commit body
Closes #ISSUE
Release Notes:
- debugger: Use integrated terminal for Python, allowing one to interact
with standard input/output when debugging Python projects.
Piotr Osiewicz
created
b126f2e
debugger beta: Update debugger docs for beta (#31192)
Click to expand commit body
The docs include basic information on starting a session but will need
to be further iterated upon once we get deeper into the beta
Release Notes:
- N/A
Anthony Eid
created
866eb9a
editor: Fix regression causing incorrect delimiter on newline in case of multiple comment prefixes (#31129)
Click to expand commit body
Closes #31115
This fixes regression caused by
https://github.com/zed-industries/zed/pull/30824 while keeping that fix.
- [x] Test
Release Notes:
- Fixed the issue where adding a newline after the `///` comment would
extend it with `//` instead of `///` in Rust and other similar
languages.
smit
created
0259938
debugger beta: Fix panic that could occur when parsing an invalid dap schema (#31175)
Click to expand commit body
Release Notes:
- N/A
Anthony Eid
created
4837d47
debugger beta: Fix dap_schema for DAP extensions (#31173)
Click to expand commit body
We now actually call dap_schema provided by extensions instead of
defaulting to a null `serde_json::Value`. We still need to update the
Json LSP whenever a new dap is installed.
Release Notes:
- N/A
Anthony Eid
created
10b8bbc
Handle `~` in debugger launch modal (#31087)
Click to expand commit body
@Anthony-Eid I'm pretty sure this maintains the behavior of #30680, and
I added some tests to be sure.
Release Notes:
- `~` now expands to the home directory in the debugger launch modal.
---------
Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
Julia Ryan
and
Piotr Osiewicz
created
b432a14
debugger: Add telemetry for new session experience (#31171)
Click to expand commit body
This includes the following data:
- Where we spawned the session from (gutter, scenario list, custom form
filled by the user)
- Which debug adapter was used
- Which dock the debugger is in
Closes #ISSUE
Release Notes:
- debugger: Added telemetry for new session experience that includes
data about:
- How a session was spawned (gutter, scenario list or custom form)
- Which debug adapter was used
- Which dock the debugger is in
---------
Co-authored-by: Joseph T. Lyons <JosephTLyons@gmail.com>
Piotr Osiewicz
and
Joseph T. Lyons
created
6f1fe2d
debugger: Use current worktree directory when spawning an adapter (#31054)
Click to expand commit body
/cc @osiewicz
I think bringing this back should fix **bloveless** his issue with go
debugger.
This is also nice, so people are not forced to give us a working
directory, because most adapters will use their **cwd** as the project
root directory. For JavaScript, you don't need to specify the **cwd**
anymore because it can already infer it
Release Notes:
- debugger beta: Fixed some adapters fail to determine the right root level of the
debug program.
Remco Smits
created
bf72cbe
debugger: Use DAP schema to configure daps (#30833)
Click to expand commit body
This PR allows DAPs to define their own schema so users can see
completion items when editing their debug.json files.
Users facing this aren’t the biggest chance, but behind the scenes, this
affected a lot of code because we manually translated common fields from
Zed's config format to be adapter-specific. Now we store the raw JSON
from a user's configuration file and just send that.
I'm ignoring the Protobuf CICD error because the DebugTaskDefinition
message is not yet user facing and we need to deprecate some fields in
it.
Release Notes:
- debugger beta: Show completion items when editing debug.json
- debugger beta: Breaking change, debug.json schema now relays on what
DAP you have selected instead of always having the same based values.
---------
Co-authored-by: Remco Smits <djsmits12@gmail.com>
Co-authored-by: Cole Miller <m@cole-miller.net>
Co-authored-by: Cole Miller <cole@zed.dev>
Anthony Eid
,
Remco Smits
,
Cole Miller
, and
Cole Miller
created
0bd0f86
Fix unzipping clangd and codelldb on Windows (#31080)
c5ac835
debugger: Update the default layout (#31057)
Click to expand commit body
- Remove the modules list and loaded sources list from the default
layout
- Move the console to the center pane so it's visible initially
Release Notes:
- Debugger Beta: changed the default layout of the debugger panel,
hiding the modules list and loaded sources list by default and making
the console more prominent.
---------
Co-authored-by: Remco Smits <djsmits12@gmail.com>
Cole Miller
and
Remco Smits
created
bd1fe6e
debugger: Add a couple more keybindings (#31103)
Click to expand commit body
- Add missing handler for `debugger::Continue` so `f5` works
- Add bindings based on VS Code for `debugger::Restart` and
`debug_panel::ToggleFocus`
- Remove breakpoint-related buttons from the debug panel's top strip,
and surface the bindings for `editor::ToggleBreakpoint` in gutter
tooltip instead
Release Notes:
- Debugger Beta: Added keybindings for `debugger::Continue`,
`debugger::Restart`, and `debug_panel::ToggleFocus`.
- Debugger Beta: Removed breakpoint-related buttons from the top of the
debug panel.
- Compatibility note: on Linux, `ctrl-shift-d` is now bound to
`debug_panel::ToggleFocus` by default, instead of
`editor::DuplicateLineDown`.
Cole Miller
created
a6757d4
debugger: Add actions and keybindings for opening the thread and session menus (#31135)
Click to expand commit body
Makes it possible to open and navigate these menus from the keyboard.
I also removed the eager previewing behavior for the thread picker,
which was buggy and came with a jarring layout shift.
Release Notes:
- Debugger Beta: Added the `debugger: open thread picker` and `debugger:
open session picker` actions.
561710e
Meter edit predictions by acceptance in free plan (#30984)
Click to expand commit body
TODO:
- [x] Release a new version of `zed_llm_client`
Release Notes:
- N/A
---------
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Co-authored-by: Antonio Scandurra <me@as-cii.com>
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Co-authored-by: Marshall Bowers <git@maxdeviant.com>
Max Brunsfeld
,
Mikayla Maki
,
Antonio Scandurra
,
Ben Brandt
, and
Marshall Bowers
created
a6c0307
copilot: Fix rate limit due to Copilot-Vision-Request header (#30989)
Click to expand commit body
Issues: #30994
I've implemented an important optimisation in response to GitHub
Copilot's recent rate limit on concurrent Vision API calls. Previously,
our system was defaulting to vision header: true for all API calls. To
prevent unnecessary calls and adhere to the new limits, I've updated our
logic: the vision header is now only sent if the current message is a
vision message, specifically when the preceding message includes an
image.
Prompt used to reproduce and verify the fix: `Give me a context for my
agent crate about. Browse my repo.`
Release Notes:
- copilot: Set Copilot-Vision-Request header based on message content
7450b78
editor: Prevent overlapping of signature/hover popovers and context menus (#31090)
Click to expand commit body
Closes #29358
If hover popovers or signature popovers ever clash with the context menu
(like code completion or code actions), they find the best spot by
trying different directions around the context menu to show the popover.
If they can’t find a good spot, they just overlap with the context menu.
Not overlapping state:
<img width="350" alt="image"
src="https://github.com/user-attachments/assets/2f1bdc4c-eb01-405c-b5fb-eb28eadc9957"
/>
Overlapping case, moves popover to bottom of context menu:
<img width="350" alt="image"
src="https://github.com/user-attachments/assets/3ce4be23-7701-4711-b604-5e29682360e1"
/>
Overlapping case, moves popover to right of context menu:
<img width="350" alt="image"
src="https://github.com/user-attachments/assets/60d47518-e412-4d64-9d17-a69a17248bdf"
/> <img width="350" alt="image"
src="https://github.com/user-attachments/assets/2a3de176-7443-46d8-99d1-b2973a0ffaa6"
/>
Overlapping case, moves popover to left of context menu:
<img width="350" alt="image"
src="https://github.com/user-attachments/assets/015b799b-8c6e-4405-aee6-e205d4caebec"
/>
Overlapping case, moves popover to top of context menu:
<img width="350" alt="image"
src="https://github.com/user-attachments/assets/fbd03d84-9a49-44eb-846b-a9852d2ff43e"
/>
Release Notes:
- Fixed an issue where hover popovers or signature popovers would
overlap with existing opened completion or code actions context menus.
The panic occurred when querying a second search in the project search
multibuffer while there were dirty buffers.
The panic only happened in Nightly so there's no release notes
Release Notes:
- N/A
Anthony Eid
created
636eff2
Revert "Allow updater to check for updates after downloading one (#30969)" (#31086)
Click to expand commit body
This reverts commit 5c4f9e57d8f919f58e39d660515e1dbec7d71483.
Release Notes:
- N/A
Joseph T. Lyons
created
6c8f400
nix: Prevent spurious bindgen rebuilds in the devshell (#31083)
Click to expand commit body
Release Notes:
- N/A
Julia Ryan
created
91bc5ae
evals: Add system prompt to edit agent evals + fix edit agent (#31082)
Click to expand commit body
1. Add system prompt: this is how it's called from threads. Previously,
we were sending
2. Fix an issue with writing agent thought into a newly created empty
file.
Release Notes:
- N/A
---------
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Co-authored-by: Antonio Scandurra <me@as-cii.com>
Oleksiy Syvokon
,
Ben Brandt
, and
Antonio Scandurra
created
2f3564b
Add icons to the built-in picker for Open (#30893)
Click to expand commit body

Release Notes:
- Added icons to the built-in picker for `Open` dialog
Currently, `search::ReplaceNext` works only first time it is executed
because Zed switches the focus to the editor. It seems
`self.editor_focus` call is unnecessary.
Closes #17466
Release Notes:
- Fixed `Replace Next Match` command. Previously it worked once, then
Zed incorrectly switched the focus to the editor
https://github.com/user-attachments/assets/66ef61d6-1efe-43ca-8d8c-6b40540a9930
Aleksei Gusev
created
8061bac
Add excluded_files to pane::DeploySearch (#30699)
Click to expand commit body
In accordance with #30327, I saw no reason for included files to get
special treatment, and I actually get use out of prefilling excluded
files because I like not to search symlinked files which, in my
workflow, use a naming convention.
This is simply implementing the same exact changes, but for excluded. It
was tested with `"space /": ["pane::DeploySearch", { "excluded_files":
"**/_*.tf" }]` and works just fine.
Release Notes:
- Added `excluded_files` to `pane::DeploySearch`.
Adam Sherwood
created
77dadfe
chore: Make terminal_view own the TerminalSlashCommand (#31070)
Click to expand commit body
This reduces 'touch crates/editor/src/editor.rs && cargo +nightly build'
from 8.9s to 8.5s. That same scenario used to take 8s less than a week
ago. :)
I'm measuring with nightly rustc, because it's compile times are better
than those of stable thanks to
https://github.com/rust-lang/rust/pull/138522
main (8.2s total):

[cargo-timing.html.zip](https://github.com/user-attachments/files/20364175/cargo-timing.html.zip)
#22be776 (7.5s total):
[cargo-timing-20250521T085303.892834Z.html.zip](https://github.com/user-attachments/files/20364391/cargo-timing-20250521T085303.892834Z.html.zip)

Release Notes:
- N/A
Missed because of lack of rebase
Release Notes:
- N/A
Ben Brandt
created
4ece4a6
extension_host: Use wasmtime incremental compilation (#30948)
Click to expand commit body
Builds on top of https://github.com/zed-industries/zed/pull/30942
This turns on incremental compilation and decreases extension
compilation times by up to another 41%
Putting us at roughly 92% improved extension load times from what is in
the app today.
Because we only have a static engine, I can't reset the cache between
every run. So technically the benchmarks are always running with a
warmed cache. So the first extension we load will take the 8.8ms, and
then any subsequent extensions will be closer to the measured time in
this benchmark.
This is also measuring the entire load process, not just the
compilation. However, since this is the loading we likely think of when
thinking about extensions, I felt it was likely more helpful to see the
impact on the overall time.
This works because our extensions are largely the same Wasm bytecode
(SDK code + std lib functions etc) with minor changes in the trait impl.
The more different that extensions implementation is, there will be less
benefit, however, there will always be a large part of every extension
that is always the same across extensions, so this should be a speedup
regardless.
I used `moka` to provide a bound to the cache. We could use a bare
`DashMap`, however if there was some issue this could lead to a memory
leak. `moka` has some slight overhead, but makes sure that we don't go
over 32mb while using an LRU-style mechanism for deciding which
compilation artifacts to keep.
I measured our current extensions to take roughly 512kb in the cache.
Which means with a cap of 32mb, we can keep roughly 64 *completely
novel* extensions with no overlap. Since our extensions will have more
overlap than this though, we can actually keep much more in the cache
without having to worry about it.
#### Before:
```
load/1 time: [8.8301 ms 8.8616 ms 8.8931 ms]
change: [-0.1880% +0.3221% +0.8679%] (p = 0.23 > 0.05)
No change in performance detected.
```
#### After:
```
load/1 time: [5.1575 ms 5.1726 ms 5.1876 ms]
change: [-41.894% -41.628% -41.350%] (p = 0.00 < 0.05)
Performance has improved.
```
Release Notes:
- N/A
Ben Brandt
created
77c2aec
Fix socks proxy local DNS resolution not respected (#30619)