Commit log

83eb6ff Apply TypeScript test improvements to tsx files (#32477)

Click to expand commit body
relates-to: #32467
relates-to: #31499

Release Notes:

- N/A

Alexander created

027ce68 Fix parsing of `direnv export json` to support unset of environment variables + better logging (#32559)

Click to expand commit body
Release Notes:

- Fixed parsing of `direnv export json` output to support unset of
environment variables.

Michael Sloan created

65a1d09 editor: Use fuzzy crate in code completions tests instead of hard coded values (#32565)

Click to expand commit body
This PR makes it a lot cleaner to write code completion tests. It
doesn't contain any logical changes, just refactoring.

Before, we used to depend on hard-coded values of fuzzy score and its
positions for tests. Now we don't need them, as fuzzy crate will handle
that for us. This is possible because fuzzy match score isn't dependent
on relative candidates or the number of candidates; rather, it's just a
one-to-one mapping for each candidate and its score.

This also makes it test robust for future purposes if there are changes
in fuzzy score logic.

Before:
```rs
  SortableMatch {
            string_match: StringMatch {  // -> whole struct provided by fuzzy crate
                candidate_id: 1115,
                score: 1.0,
                positions: vec![],
                string: "Item".to_string(),
            },
            is_snippet: false,  // -> changed to snippet kind
            sort_text: Some("16"),
            sort_kind: 3, // -> changed to function, constant, variable kind
            sort_label: "Item",
        },
```

After:
```rs
  CompletionBuilder::function("Item", "16")
```

Release Notes:

- N/A

Smit Barmase created

7f150f7 debugger: Fix preselection of debug adapters to not pick CodeLLDB by default (#32557)

Click to expand commit body
Closes #ISSUE

Release Notes:

- debugger: Fix preselection of debug adapters to not pick CodeLLDB by
default

Piotr Osiewicz created

ebd745c Bump Zed to v0.192 (#32552)

Click to expand commit body
Release Notes:

-N/A

Joseph T. Lyons created

06f7d79 debugger: Fix a couple of issues with vitest (#32543)

Click to expand commit body
- Pass the right test name filter
- Limit the number of forks used by the testing pool in the spirit of
#32473

Release Notes:

- Debugger Beta: switched to running vitest tests serially when
debugging.

Cole Miller created

2ecc24e eval: Add jitter to retry attempts (#32542)

Click to expand commit body
Adds some jitter to avoid the issue that all requests will retry at
roughly the same time in eval where we have a lot of concurrent
requests.

Release Notes:

- N/A

Ben Brandt created

6c4728f debugger: Mark DebugAdapterBinary::program as optional (#32534)

Click to expand commit body
This allows us to support debugging with a debug adapter not managed by
Zed. Note that this is not a user facing change, as DebugAdapterBinary
is used to determine how to spawn a debugger. Thus, this should not
break any configs or anything like that.

Closes #ISSUE

Release Notes:

- N/A

Piotr Osiewicz created

a3cc063 windows: Show error messages when zed failed to lanuch (#32537)

Click to expand commit body
Now, if either `WindowsPlatform` or `BladeRenderer` fails to initialize,
a window will pop up to notify the user.


![image](https://github.com/user-attachments/assets/40fe7f1d-5218-4ee2-b4ec-0945fed2b743)


Release Notes:

- N/A

张小白 created

7d5a5d0 Make minimum width for line numbers in gutter configurable (#31959)

Click to expand commit body
Closes #7334

# Changes
This PR makes the minimum width allocated for line numbers in the side
gutter configurable in units of character width via the
`"line_number_base_width"` attribute in `gutter` settings. Set the
previously hard coded value of `4` as default.

Together with other settings (`"folds"`, `"breakpoints"`,...) this gives
the user control over the gutter width.

If the number of lines exceedes the base width, the number of digits in
the largest line number is chosen instead. This is consistent with
previous behaviour.

Screenshot for reference:
<img width="1104" alt="Screenshot 2025-06-03 at 12 15 29"
src="https://github.com/user-attachments/assets/77c869ad-164b-4b74-8e39-8be43d740ad4"
/>


P.S.: This is my first time contributing to zed (yay!🎉). Let me know if
i'm missing something.

Release Notes:

- Make minimum line number width in gutter configurable

Max Mynter created

4c3ada5 windows: Add back `hide_title_bar` checks (#32427)

Click to expand commit body
These `if` condition checks were removed in #30828, and this PR adds
them back. This is especially important in the handling of
`WM_NCHITTEST`, where all the calculations are based on the assumption
that `hide_title_bar = true`.


Release Notes:

- N/A

张小白 created

b3a8816 agent: Add completion cancellation when editing messages (#32533)

Click to expand commit body
When editing a message, cancel any in-progress completion before
starting a new request to prevent overlapping model responses.

Release Notes:

- agent: Fixed previous completion not cancelling when editing a
previous message

Ben Brandt created

6d9bcdb editor: Fix certain unwanted pre-emptive keys been shown in buffer (#32528)

Click to expand commit body
Closes #32456

https://github.com/zed-industries/zed/pull/32007 added showing
pre-emptive keys for multi-key bindings. But for certain keys like
"control", "backspace", "escape", "shift", "f1", etc., shouldn't be
shown as these keys would not end up in buffer after pending input
delay. This PR changes it to use just `key_char`, as it represents
actual text that will end up in buffer and is `None` for all mentioned
keys.


https://github.com/zed-industries/zed/blob/fad4c17c97927626792228bfbf92494b4cd35c40/crates/gpui/src/platform/keystroke.rs#L14-L21

cc @ConradIrwin 

Release Notes:

- Fixed issue where triggering multi-key binding like "shift",
"control", etc. would write them to the buffer for a short time.

Smit Barmase created

0852912 language_models: Add image support to OpenRouter models (#32012)

Click to expand commit body
- [x] Manual Testing(Tested this with Qwen2.5 VL 32B Instruct (free) and
Llama 4 Scout (free), Llama 4 Maverick (free). Llama models have some
issues in write profile due to one of the in built tools schema, so I
tested it with minimal profile.

Closes #ISSUE

Release Notes:

- Add image support to OpenRouter models

---------

Signed-off-by: Umesh Yadav <umesh4257@gmail.com>
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>

Umesh Yadav and Ben Brandt created

47ac018 ci: Fix cachix secrets (#32259)

Julia Ryan created

5b22994 Log error instead of panics in `InlineAssistant::scroll_to_assist` (#32519)

Click to expand commit body
Leaving release notes blank as it's not very actionable to know that a
rare crash might be fixed.

Release Notes:

- N/A

Michael Sloan created

6c0ea88 debugger: Make sure debuggees are killed when quitting Zed (#32186)

Click to expand commit body
Closes #31373 

We kill the DAP process in our `on_app_quit` handler, but the debuggee
might not be killed. Try to make this more reliable by making the DAP
process its own process group leader, and killing that entire process
group when quitting Zed.

I also considered going through the normal DAP shutdown sequence here,
but that seems dicey in a quit handler. There's also the DAP
`ProcessEvent` but it seems we can't rely on that as e.g. the JS DAP
doesn't send it.

Release Notes:

- Debugger Beta: Fixed debuggee processes not getting cleaned up when
quitting Zed.

Cole Miller created

fc4ca34 editor: Adjust scope for prefer label for snippet workaround (#32515)

Click to expand commit body
Closes #32159

This PR refines the scope to match just the function name with **the
type argument** instead of the whole call expression.

Matching to whole call expression prevented methods from expanding
inside the function argument. For example, `const foo =
bar(someMethod(2)^);` instead of `const foo = bar(someMethod^)`;

Follow-up for https://github.com/zed-industries/zed/pull/30312,
https://github.com/zed-industries/zed/pull/30351. Mistakenly regressed
since https://github.com/zed-industries/zed/pull/31872 when we stopped
receiving `insert_range` for this particular case and fallback to
`replace_range`.

Release Notes:

- Fixed issue where code completion in TypeScript function arguments
sometimes omitted the dot separator, for example resulting in
`NumberparseInt` instead of `Number.parseInt(string)`.

---------

Co-authored-by: Michael Sloan <michael@zed.dev>
Co-authored-by: Michael Sloan <mgsloan@gmail.com>

Smit Barmase , Michael Sloan , and Michael Sloan created

e9570ee Fix go stop on panic (#32512)

Click to expand commit body
Release Notes:

- debugger: Fix stopping on a panic

Conrad Irwin created

72de314 Add a test demonstrating ERB language loading bug (#32278)

Click to expand commit body
Fixes https://github.com/zed-industries/zed/issues/12174

Release Notes:

- Fixed a bug where ERB files were not parsed correctly when the
languages were initially loaded.

Max Brunsfeld created

ad206a6 Recenter current stack frame on click (#32508)

Click to expand commit body
Release Notes:

- debugger: Recenter current stack frame on click

Conrad Irwin created

1e1bc7c Fix detach (#32506)

Click to expand commit body
Release Notes:

- debugger: Fix detach to not terminate debuggee (and only be available
when detaching makes sense)

Conrad Irwin created

84eca53 Add ANSI C quoting to export env parsing (#32404)

Click to expand commit body
Follow up to #31799 to support ansi-c quoting. This is used by
nix/direnv

Release Notes:

- N/A

Stanislav Alekseev created

b4e558c Add more keymaps from helix (#32453)

Click to expand commit body
I added three additional keymaps to simulate helix behavior.

Release Notes:

- N/A

fantacell created

00a8101 Add a run menu (#32505)

Click to expand commit body
As part of this I refactored the logic that enabled/disabled actions in
the debugger to happen at action registration time instead of using
command palette filters. This allows the menu to grey out actions correctly.

Release Notes:

- Add a "Run" menu to contain tasks and debugger

Conrad Irwin created

444f797 debugger beta: Improve resolve debug scenario error message (#32504)

Click to expand commit body
When no locator or valid config is found we expose the invalid config
error message to the user now.

Closes #32067 

Release Notes:

- debugger beta: Improve error message when starting a debugger session
with an invalid configuration

Anthony Eid created

7a14987 debugger beta: Fix inline value provider panic (#32502)

Click to expand commit body
Closes #32143

Release Notes:

- debugger beta: Fix panic that could occur when generating inline
values

Anthony Eid created

5eb68f0 debugger: Fix panic when handling invalid `RunInTerminal` request (#32500)

Click to expand commit body
The new dap-types version has a default to cwd for the
RunInTerminalRequest

Closes #31695

Release Notes:

- debugger beta: Fix panic that occurred when a debug adapter sent an
invalid `RunInTerminal` request

Anthony Eid created

9c51322 Add initial `package.json` scripts task autodetection (#32497)

Click to expand commit body
Now, every JS/TS-related file will get their package.json script
contents added as tasks:

<img width="1020" alt="image"
src="https://github.com/user-attachments/assets/5bf80f80-fd72-4ba8-8ccf-418872895a25"
/>

To achieve that, `fn associated_tasks` from the `ContextProvider` was
made asynchronous and the related code adjusted.

Release Notes:

- Added initial `package.json` scripts task autodetection

---------

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

Kirill Bulatov and Piotr Osiewicz created

0c0933d debugger: Ungate locator for JS tasks (#32495)

Click to expand commit body
Closes #ISSUE

Release Notes:

- N/A

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

Cole Miller and Anthony Eid created

a4c5a2d debugger: Add 'open docs' button in the panel and mention onboarding in the docs (#32496)

Click to expand commit body
Closes #ISSUE

Release Notes:

- N/A

Piotr Osiewicz created

311e136 debugger: Reuse parent's debug terminal for child sessions (#32493)

Click to expand commit body
Closes #ISSUE

Release Notes:

- Debugger Beta: fixed an issue where the terminal pane of the debug
panel would be empty when debugging JavaScript.

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Co-authored-by: Anthony Eid <hello@anthonyeid.me>

Cole Miller , Conrad Irwin , and Anthony Eid created

4f5433a Filter language server completions even when `is_incomplete: true` (#32491)

Click to expand commit body
In #31872 I changed the behavior of completions to not filter instead of
requerying completions when `is_incomplete: false`. Unfortunately this
also stopped filtering completions when `is_incomplete: true` - we still
want to filter the incomplete completions so that the menu updates
quickly even when completions are slow. This does mean that the
completions menu will display partial results, hopefully only briefly
while waiting for fresh completions.

Thanks to @mikayla-maki for noticing the regression. Thankfully just in
time to fix it before this makes it into a stable release. Leaving off
release notes since I will cherry-pick this to the current preview
version, 190.x, and there probably won't be a preview release before the
next stable.

Release Notes:

- N/A

Michael Sloan created

295db79 debugger: Fix phantom JavaScript frames (#32469)

Click to expand commit body
JavaScript debugger is using a phantom stack frame to delineate await
points; that frame reuses a frame ID of 0, which collides with other
frames returned from that adapter.

https://github.com/microsoft/vscode-js-debug/blob/934075df8c3c9726ead99aa8ee6815b36d835c34/src/adapter/stackTrace.ts#L287

The bug has since been fixed in
https://github.com/microsoft/vscode-js-debug/issues/2234, but we'll need
to wait for a new release of node debugger for that to make a
difference. Until then..

Release Notes:

- Fixed a bug with JavaScript debugging which led to stack trace list
containing excessive amount of `await` entries.

---------

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

Piotr Osiewicz , Conrad Irwin , and Conrad Irwin created

71d5c57 debugger: Specify runtimeExecutable in output of node locator (#32464)

Click to expand commit body
This appears to fix some cases where we fail to launch JS tests under
the debugger.

Release Notes:

- N/A (node locator is still gated)

---------

Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>

Cole Miller , Anthony Eid , and Conrad Irwin created

dd17fd3 debug: Launch custom commands from start modal (#32484)

Click to expand commit body
Release Notes:

- Add custom command launching from the `debug: start` modal

---------

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

Julia Ryan and Anthony Eid created

e4f8c4f debugger: Don't spin forever when adapter disconnects unexpectedly (#32489)

Click to expand commit body
Closes #ISSUE

Release Notes:

- Debugger Beta: made the debug panel UI more helpful when an invalid
configuration is sent to the debug adapter.

---------

Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>

Cole Miller , Anthony Eid , and Conrad Irwin created

e62e9fa docs: Condense Ruby test framework docs (#32472)

Click to expand commit body
Since `tldr` and `quickdraw` use the same kind of task syntax as RSpec,
I don't think it's necessary to have separate examples.

cc @joeldrapper @vitallium 

Release Notes:

- N/A

Andy Waite created

3f419b3 docs: Update Ruby docs about `args` syntax in tasks (#32471)

Click to expand commit body
Due to https://github.com/zed-industries/zed/pull/32345

cc @vitallium 

Release Notes:

- N/A

Andy Waite created

5270844 Revert "Preserve selection direction when running `editor: open selections in multibuffer`" (#32483)

Click to expand commit body
Reverts zed-industries/zed#31399

I found that in some cases, Zed will panic when using `editor: open
selections in multibuffer` if the selection is reversed. It doesn't
happen in most cases that I've tested, but in some strange edge cases
(that I dont fully understand ATM), it does. I'm reverting for now, as
the previous behavior is better than a panic, but will re-implement this
fix to preserving selection directions in a new PR with comprehensive
testing

Release Notes:

- N/A

Joseph T. Lyons created

f567bb5 gpui: Simplify uniform list API by removing entity param (#32480)

Click to expand commit body
This PR also introduces `Context::processor`, a sibling of
`Context::listener` that takes a strong pointer to entity and allows for
a return result.

Release Notes:

- N/A

Co-authored-by: Mikayla <mikayla@zed.dev>

Ben Kunkle and Mikayla created

c556308 debugger: Run jest tests serially (#32473)

Click to expand commit body
Pass `--runInBand` to jest when debugging. This prevents jest from
creating a bunch of child processes that clutter the session list.

It might be a bit more natural to add this argument in the test
templates themselves, but I don't think we want to give up parallelism
when running via `task: spawn`.

Release Notes:

- N/A (JS locator is still gated)

Cole Miller created

e0ca427 debugger: Use JS adapter's suggested names for child sessions (#32474)

Click to expand commit body
Also introduces an extension point for other adapters to do this if it
turns out they also send this information.

Release Notes:

- N/A (JS locator is still gated)

Cole Miller created

02dfaf7 ci: Suppress evals on forks (#32479)

Click to expand commit body
Be kind to those with Zed forks.

Example [action run on
fork](https://github.com/G36maid/freebsd-ports-zed/actions/runs/15525942275)
where [this
job](https://github.com/G36maid/freebsd-ports-zed/actions/runs/15549650437/job/43777665341)
will wait forever. Sorry @G36maid

Release Notes:

- N/A

Peter Tripp created

c9972ca docs: Consolidate and improve organization of Linux GPU issue documentation (#32468)

Click to expand commit body
Closes #ISSUE

Release Notes:

- N/A *or* Added/Fixed/Improved ...

Ben Kunkle created

9334e15 Allow identifiers in TypeScript/JavaScript test names (#32467)

Click to expand commit body
Current behavior (not detected as runnable):

<img width="1105" alt="image"
src="https://github.com/user-attachments/assets/7d3b7936-43d8-4645-bbbb-e81ed5f9b35a"
/>

New behavior:



https://github.com/user-attachments/assets/524e2a56-cb30-4dc0-98ec-b34b510015e0

Release Notes:

- Improved detection of runnable TypeScript/JavaScript test cases when
they contain identifier

Alexander created

9c47c52 ci: Restore lychee link check. Only validate internal links (#32463)

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

Release Notes:

- N/A

Peter Tripp created

286b97c agent: Fix agent panel model selector layout pushing send button off screen (#32251)

Click to expand commit body
| Before | After |
|--------|-------|
| <video
src="https://github.com/user-attachments/assets/db4dcc91-9a32-4621-be78-87fe9d80b801"
controls width="400"></video> | <video
src="https://github.com/user-attachments/assets/8ee31d6d-5150-4239-a4af-eeca112d56d5"
controls width="400"></video> |

While working on something else I found this weird behaviour in message
editor of agent panel. When model names are too long, the model selector
would expand and push the send button outside the visible area. This
change fixes the flex layout to ensure the send button always remains
accessible while properly truncating long model names.

Closes #ISSUE

Release Notes:

- Fix agent panel model selector layout pushing send button off screen

---------

Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com>

Umesh Yadav , Danilo Leal , and Danilo Leal created

415d482 agent: Only show the MCP configuration modal in the active window (#32450)

Click to expand commit body
We were previously displaying this modal in all open Zed windows if
triggered. That was a bit annoying because I had to go to each window
individually to close it, which meant doing it multiple times. 😅

Release Notes:

- agent: Fixed the MCP configuration modal to show only in the active
window.

Danilo Leal created

a9d0eee docs: Add link to MCP extensions in the overview page (#32458)

Click to expand commit body
Follow up to https://github.com/zed-industries/zed/pull/32422. Missed
this one in this latest round of MCP-related docs changes.

Release Notes:

- N/A

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

Danilo Leal and Peter Tripp created