Commit log

0b92375 zed 0.188.3

Joseph T. Lyons created

81ed86b Keep file permissions when extracting zip archives on Unix (#31304)

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

Stop doing

```rs
#[cfg(not(windows))]
{
    file.set_permissions(<fs::Permissions as fs::unix::PermissionsExt>::from_mode(
        0o755,
    ))
    .await?;
}
```

after extracting zip archives on Unix, and use an API that provides the
file permissions data for each archive entry.

Release Notes:

- N/A

Kirill Bulatov created

a9e1515 debugger beta: Update Javascript's DAP to allow passing in url instead of program (#31494)

Click to expand commit body
Closes #31375

Release Notes:

- debugger beta: Allow passing in URL instead of program for Javascript
launch request

Anthony Eid created

7fbd1ca debugger beta: Fix install detection for Debugpy in venv (#31339)

Click to expand commit body
Based on my report on discord when chatting with Anthony and Remco:
https://discord.com/channels/869392257814519848/1375129714645012530

Root Cause: Zed was incorrectly trying to execute a directory path
instead of properly invoking the debugpy module when debugpy was
installed via package managers (pip, conda, etc.) rather than downloaded
from GitHub releases.

Solution:

- Automatic Detection: Zed now automatically detects whether debugpy is
installed via pip/conda or downloaded from GitHub
- Correct Invocation: For pip-installed debugpy, Zed now uses python -m
debugpy.adapter instead of trying to execute file paths
- Added a `installed_in_venv` flag to differentiate the setup properly
- Backward Compatibility: GitHub-downloaded debugpy releases continue to
work as before
- Enhanced Logging: Added logging to show which debugpy installation
method is being used (I had to verify it somehow)

I verified with the following setups (can be confirmed with the debug
logs):
- `conda` with installed debugpy, went to installed instance
- `uv` with installed debugpy, went to installed instance
- `uv` without installed debugpy, went to github releases
- Homebrew global python install, went to github releases

Release Notes:

- Fix issue where debugpy from different environments won't load as
intended

Raphael Lüthy created

78fe611 debugger: Add an action to rerun the last session (#31442)

Click to expand commit body
This works the same as selecting the first history match in the new
session modal.

Release Notes:

- Debugger Beta: Added the `debugger: rerun last session` action, bound
by default to `alt-f4`.

Cole Miller created

1324691 debugger: Add missing StepOut handler (#31463)

Click to expand commit body
Closes #31317

Release Notes:

- Debugger Beta: Fixed a bug that prevented keybindings for the
`StepOut` action from working.

Cole Miller created

df7284b debugger: Fix wrong port used for SSH debugging (#31474)

Click to expand commit body
We were trying to connect on the user's machine to the port number used
by the debugger on the remote machine, instead of the randomly-assigned
local available port.

Release Notes:

- Debugger Beta: Fixed a bug that caused connecting to a debug adapter
over SSH to hang.

Cole Miller created

5241d25 language: Improve auto-indentation when using round brackets in Python (#31260)

Click to expand commit body
Follow-up to #29625 and #30902

This PR reintroduces auto-intents for brackets in Python and fixes some
cases where an indentation would be triggered if it should not. For
example, upon typing

```python
a = []
```
and inserting a newline after, the next line would be indented although
it shoud not be.

Bracket auto-indentation was tested prior to #29625 but removed there
and the test updated accordingly. #30902 reintroduced this for all
brackets but `()`. I reintroduced this here, reverted the changes to the
test so that indents also happen after typing `()`. This is frequently
used for tuples and multiline statements in Python.

Release Notes:

- Improved auto-indentation when using round brackets in Python.

Finn Evers created

d746da9 debugger: Add keyboard navigation for breakpoint list (#31221)

Click to expand commit body
Release Notes:

- Debugger Beta: made it possible to navigate the breakpoint list using
menu keybindings.

Cole Miller created

ee6a93f Allow LSP adapters to decide, which diagnostics to underline (cherry-pick #31450) (#31452)

Click to expand commit body
Cherry-picked Allow LSP adapters to decide, which diagnostics to
underline (#31450)

Closes
https://github.com/zed-industries/zed/pull/31355#issuecomment-2910439798

<img width="1728" alt="image"

src="https://github.com/user-attachments/assets/2eaa8e9b-00bc-4e99-ac09-fceb2d932e41"
/>


Release Notes:

- N/A

Co-authored-by: Kirill Bulatov <kirill@zed.dev>

gcp-cherry-pick-bot[bot] and Kirill Bulatov created

79a0f73 debugger: Fix misleading error logs (#31293)

Click to expand commit body
Release Notes:

- N/A

Cole Miller created

f4767e3 Remove the ability to book onboarding (cherry-pick #31404) (#31426)

Click to expand commit body
Cherry-picked Remove the ability to book onboarding (#31404)

Closes: https://github.com/zed-industries/zed/issues/31394

Onboarding has been valuable, but we're moving into a new phase as our
user base grows, and our ability to chat with everyone who books a call
will not scale linearly. For now, we are removing the option to book a
call from the application.

Release Notes:

- N/A

Co-authored-by: Joseph T. Lyons <JosephTLyons@gmail.com>

gcp-cherry-pick-bot[bot] and Joseph T. Lyons created

6259ba0 debugger beta: Fix regression where we sent launch args twice to any dap (#31325)

Click to expand commit body
This regression happens because our tests weren't properly catching this
edge case anymore. I updated the tests to only send the raw config to
the Fake Adapter Client.

Release Notes:

- debugger beta: Fix bug where launch args were sent twice

Anthony Eid created

033e104 debugger: Fix adapter names in initial-debug-tasks.json (#31283)

Click to expand commit body
Closes #31134

Release Notes:

- N/A

---------

Co-authored-by: Piotr <piotr@zed.dev>

Cole Miller and Piotr created

34022b7 debugger beta: Auto download Delve (Go's DAP) & fix grammar errors in docs (#31273)

Click to expand commit body
Release Notes:

- debugger beta: Go's debug adapter will now automatically download if
not found on user's PATH

Co-authored-by: Remco Smits <djsmits12@gmail.com>

Anthony Eid and Remco Smits created

682d265 Do not underline unnecessary diagnostics (cherry-pick #31355) (#31357)

Click to expand commit body
Cherry-picked Do not underline unnecessary diagnostics (#31355)

Closes
https://github.com/zed-industries/zed/pull/31229#issuecomment-2906946881

Follow

https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#diagnosticTag

> Clients are allowed to render diagnostics with this tag faded out
instead of having an error squiggle.

and do not underline any unnecessary diagnostic at all.

Release Notes:

- Fixed clangd's inactive regions diagnostics excessive highlights

Co-authored-by: Kirill Bulatov <kirill@zed.dev>

gcp-cherry-pick-bot[bot] and Kirill Bulatov created

72a0f9d Add Code Actions to the Toolbar (#31236)

Click to expand commit body
Closes issue #31120.


https://github.com/user-attachments/assets/a4b3c86d-7358-49ac-b8d9-e9af50daf671

Release Notes:

- Added a code actions icon to the toolbar. This icon can be disabled by
setting `toolbar.code_actions` to `false`.

smit created

0274625 debugger beta: Add error handling when gdb doesn't send thread names (#31279)

Click to expand commit body
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)

Click to expand commit body
Before: 

![image](https://github.com/user-attachments/assets/6cdef5bb-c901-4954-a2ec-39c59f8314db)

After:

![image](https://github.com/user-attachments/assets/c4f60a23-249c-47ab-8a9e-a39e2277dd00)


Release Notes:

- N/A

Piotr Osiewicz created

9a833d6 zed 0.188.2

Joseph T. Lyons created

774c348 debugger: More focus tweaks (#31232)

Click to expand commit body
- 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

8651123 bedrock: Support Claude 4 models (#31214)

Click to expand commit body
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)

Click to expand commit body
Closes https://github.com/zed-industries/zed/pull/30454

Release Notes:

- N/A

Kirill Bulatov created

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