a5113d8
debugger: Fix running JS tests when worktree root and package root do not coincide (#32644)
Click to expand commit body
- construct the correct path to the test library based on the location
of package.json
- run scripts from the package root where they were defined
- run tests in the directory of the defining file
Release Notes:
- Debugger Beta: fixed running JS tests when the worktree root is above
the location of package.json.
---------
Co-authored-by: Anthony <anthony@zed.dev>
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Cole Miller
,
Anthony
, and
Conrad Irwin
created
66427e5
debugger: Add an action to copy debuggee info and initialization args (#32647)
Click to expand commit body
Release Notes:
- Debugger Beta: added the `dev: copy debug adapter arguments` action to
help troubleshoot debug configurations.
Cole Miller
created
112a11d
debugger: Pass --nocapture to cargo tests when building debug tasks with locator (#32633)
Click to expand commit body
Release Notes:
- Add --nocapture as a default argument when debugging rust tests
Co-authored-by: Cole Miller <m@cole-miller.net>
Anthony Eid
and
Cole Miller
created
631b643
debugger: Do not swallow `port` property when converting launch.json (#32621)
Click to expand commit body
with JavaScript scenarios.
Closes #32187
Release Notes:
- Fixed `port` property not being respected in debug scenarios converted
from VSC's launch.json
Co-authored-by: Ben Kunkle <ben.kunkle@gmail.com>
Piotr Osiewicz
and
Ben Kunkle
created
89f0c72
client: Fix an issue where non-IP proxy URLs didn’t resolve correctly (cherry-pick #32664) (#32679)
Click to expand commit body
Cherry-picked client: Fix an issue where non-IP proxy URLs didn’t
resolve correctly (#32664)
If the proxy URL is in the form of `example.com` instead of a raw IP
address, and `example.com` isn't a well-known domain, then the default
URL resolution can fail.
The test setup:
A Linux machine runs a CoreDNS server with a custom entry: `10.254.7.38
example.com`. On a Windows machine, if the proxy URL is set to
`example.com`, the resolved address does **not** end up being
`10.254.7.38`.
Using `hickory_resolver` for more advanced DNS resolution fixes this
issue.
Release Notes:
- Fixed proxy URL resolution when using custom DNS entries.
Co-authored-by: 张小白 <364772080@qq.com>
gcp-cherry-pick-bot[bot]
and
张小白
created
85b6ca1
Use `git config --global user.email` for email address in automatic `Co-authored-by` (cherry-pick #32624) (#32639)
Click to expand commit body
Release Notes:
- Automatic population of `Co-authored-by` now uses `git config --global
user.email`
Co-authored-by: Conrad <conrad@zed.dev>
8124758
debugger: Allow use of externally-managed Delve for Go debugging (#32613)
Click to expand commit body
Closes #ISSUE
Release Notes:
- Go debug scenarios can now use an externally-managed Delve instance.
Use `tcp_connection` in your debug scenario definition to provide
adapter's address.
Piotr Osiewicz
created
441d738
debugger: Handle session restart failures instead of hanging (#32595)
Click to expand commit body
I also enabled the `Restart` action even for sessions that don't support
restarting because we have a restart fallback now.
Closes #31408
Release Notes:
- Fix bug where a debugger session would never be shutdown on a failed
restart attempt
Anthony Eid
created
fa00379
debugger: Don't show VSCode worktree tasks when Zed ones exist (#32589)
Click to expand commit body
Fixes #31699
Eventually we might want to merge the lists and deduplicate based on the
command and args that it's running. For now we'll just use the presence
of _any_ worktree local zed debug tasks to disable all VSCode ones.
Release Notes:
- N/A
Julia Ryan
created
38e00a7
debugger: Fix DebugAdapterDelegate::worktree_root always using the first visible worktree (#32585)
Click to expand commit body
Closes #32577
Release Notes:
- Fixed debugger malfunctioning when using ZED_WORKTREE_ROOT env
variable in multi-worktree workspaces.
Piotr Osiewicz
created
c14c370
debugger: Special-case `npm` et al. as `program` field for JS debug definitions (#32549)
Click to expand commit body
Send `runtimeExecutable` and `runtimeArgs` instead of `program` and
`args` to avoid the DAP implicitly wrapping the command in `node`.
This means that putting `pnpm vitest <file>` as the command in the
launch modal will work, as will this in debug.json:
```
[
{
"adapter": "JavaScript",
"type": "pwa-node",
"label": "Label",
"request": "launch",
"program": "pnpm",
"args": ["vitest", "<file>"],
"cwd": "/Users/name/project"
}
]
```
Release Notes:
- Debugger Beta: made it possible to use commands like `pnpm
<subcommand> <args>` in the launch modal and debug.json
Cole Miller
created
bc6d75b
debugger: Fix issues with launch.json handling (#32563)
Click to expand commit body
After this PR we can run all the in-tree launch.json examples from [this
repo](https://github.com/microsoft/vscode-recipes).
Things done:
- Fill in default cwd at a lower level for all adapters
- Update launch.json parsing for DebugScenario changes
- Imitate how VS Code normalizes the `type` field for JS debug tasks
- Make version field optional
- Extend the variable replacer a bit
Release Notes:
- Debugger Beta: fixed issues preventing loading and running of debug
tasks from VS Code's launch.json.
---------
Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Co-authored-by: Anthony <anthony@zed.dev>
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Cole Miller
,
Anthony Eid
,
Anthony
, and
Conrad Irwin
created
Release Notes:
- debugger: Remove "Deserializing N breakpoints" from the Zed log
Conrad Irwin
created
2562daa
Rerun debug scenario now uses latest definition from JSON (#32569)
Click to expand commit body
Co-authored-by: Piotr Osiewicz <piotr@zed.dev>
Closes #ISSUE
Release Notes:
- debugger: Re-running a debug scenario that has been edited on disk now
uses the latest version
Co-authored-by: Piotr Osiewicz <peterosiewicz@gmail.com>
Conrad Irwin
and
Piotr Osiewicz
created
10d00e1
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
720fe2f
agent: Don't stop following after edits (cherry-pick #32606) (#32608)
Click to expand commit body
Cherry-picked agent: Don't stop following after edits (#32606)
This is reverting a change from #32071 which caused agent following to
stop after the file was edited.
This will reintroduce the behavior that the keyboard shortcuts don't
work until the model is done generating, but we will revisit that
afterwards.
Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Release Notes:
- agent: Fix a regression in agent following behavior after file edits
Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
gcp-cherry-pick-bot[bot]
,
Ben Brandt
, and
Bennet Bo Fenner
created
Cherry-picked gpui: Fix window cursor style flickering (#32596)
Closes #32592
Follow-up to #31965
This PR fixes the cursor style flickering on Linux systems. The issue
arose since the window cursor style was not reused anymore for
subsequent frames after the changes in #31965. This works on MacOS for
hiding cursors, since they are hidden until the next mouse movement
occurs, which is not the case for other systems.
This PR re-adds this whilst keeping the fixes applied in #31965. We now
determine the first cursor style that is hovered and continue searching
for a cursor style that should be applied globally. If one to apply for
the whole window is found, we return that cursor style early instead.
Alternatively, we could store window cursor style request in a vector
similar to normal cursor styles. That would require more memory in
exchange for fewer checks which cursor style to apply. I preferred the
approach here, though, but can change this should the other method be
preferred.
CC @smitbarmase since you assigned yourself that issue.
Release Notes:
- Fixed an issue where the cursor would flicker whilst typing.
Co-authored-by: Finn Evers <dev@bahn.sh>
gcp-cherry-pick-bot[bot]
and
Finn Evers
created
ff66620
Use buffer's main language when fetching language tasks (cherry-pick #32580) (#32582)
Click to expand commit body
Cherry-picked Use buffer's main language when fetching language tasks
(#32580)
Closes https://github.com/zed-industries/zed/issues/32465
Release Notes:
- Fixed language tasks fetched incorrectly for certain selections
Co-authored-by: Kirill Bulatov <kirill@zed.dev>
gcp-cherry-pick-bot[bot]
and
Kirill Bulatov
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.

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>
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
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
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
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
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
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