Closes https://github.com/zed-industries/zed/issues/12091
Proper redo of https://github.com/zed-industries/zed/pull/32603
Release Notes:
- Fixed formatting effects not triggered when saving unmodified
singleton buffers
---------
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Co-authored-by: Cole Miller <m@cole-miller.net>
Kirill Bulatov
,
Max Brunsfeld
, and
Cole Miller
created
cd018da
docs: Fix headings in debugger docs (#32641)
Click to expand commit body
Reported by calebmeyer on Discord.
Closes #ISSUE
Release Notes:
- N/A
Piotr Osiewicz
created
d725371
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
7d708c1
Use `git config --global user.email` for email address in automatic `Co-authored-by` (#32624)
Click to expand commit body
Release Notes:
- Automatic population of `Co-authored-by` now uses `git config --global
user.email`
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Co-authored-by: Conrad <conrad@zed.dev>
Michael Sloan
,
Conrad Irwin
, and
Conrad
created
e56a027
Store `result_id`s per language server (#32631)
Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/32403
Release Notes:
- N/A
Kirill Bulatov
created
1e244f4
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
c13be16
Add `git: open modified files` action (#32347)
Click to expand commit body
Ported over a vscode/cursor command that I like using : )
Release Notes:
- Added "open modified files" command
Follow-up of https://github.com/zed-industries/zed/pull/32329
Release Notes:
- N/A
Kirill Bulatov
created
4236c9e
gpui: Fix data_table example overflow subtracting crash error (#32617)
Click to expand commit body
Release Notes:
- N/A
Just make a simple change to avoid crash.
```
thread 'main' panicked at library\std\src\time.rs:436:33:
overflow when subtracting duration from instant
stack backtrace:
0: std::panicking::begin_panic_handler
at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library\std\src\panicking.rs:697
1: core::panicking::panic_fmt
at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library\core\src\panicking.rs:75
2: core::panicking::panic_display
at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library\core\src\panicking.rs:261
3: core::option::expect_failed
at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library\core\src\option.rs:2024
4: core::option::Option::expect
at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library\core\src\option.rs:933
5: std::time::impl$3::sub
at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library\std\src\time.rs:436
6: data_table::Quote::random
at .\crates\gpui\examples\data_table.rs:54
```
Jason Lee
created
5923ba4
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
bb5a763
title_bar: Use theme colors for window controls on Windows (#32400)
Click to expand commit body
Release Notes:
- N/A
----
Fix Windows title bar window button color by use theme colors.
The `ghost_element_hover` and `ghost_element_active` is same color as
the Buttons in title bar.
## Before
https://github.com/user-attachments/assets/e38a4f9c-7e5c-4d50-b578-608baebaf03c
## After
https://github.com/user-attachments/assets/a32e4d88-1e64-407e-a601-716ca7584111
Jason Lee
created
f541294
editor: Improve completions sort order for Tailwind classes (#32612)
dc8eb55
agent: Scroll to first diff hunk when clicking on edit tool card header (#32611)
Click to expand commit body
Release Notes:
- agent: Clicking on header of an edit file card now takes you to the
first modified hunk
Bennet Bo Fenner
created
f14a923
agent: Allow to see the review button while generating (#32610)
Click to expand commit body
I think we mistakenly added an early return for the review multibuffer
button if `has_pending_edit_tool_uses` is true. It is totally fine _to
access_ the review multibuffer while that's happening. It's another
thing to _accept and reject_ changes while they're still ongoing!
Release Notes:
- agent: Fixed access to the review multibuffer from the agent panel.
Danilo Leal
created
47af72b
project_panel: Don't add extra margin-left to file name labels (#32602)
Click to expand commit body
In this PR I want to improve the UI of the project panel's files tree.
Currently, the project panel renders an extra gap between file icons and
the file name, making it visually unpleasant. The changes in the PR
remove the gap, bringing the labels closer to their icon:
_Before/After_
<img width="647" alt="zed-before-after"
src="https://github.com/user-attachments/assets/d815c075-f1f8-4a77-a3b3-d1275988a5dc"
/>
Also, this extra gap between the icon and the label seems inconsistent
with how other similar components, which are based on the `ListItem`,
are used.
Release Notes:
- Fixed an extra gap between the file icon and the file name label in
the project panel.
Vladimir Varankin
created
c7ee489
agent: Don't stop following after edits (#32606)
Click to expand commit body
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>
Ben Brandt
and
Bennet Bo Fenner
created
5e07d0f
Trigger formatting effects when saving unmodified singleton buffers (#32603)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/12091
Use `"save_non_dirty_buffers": false` editor settings to disable this
behavior.
Release Notes:
- Fixed formatting effects not triggered when saving unmodified
singleton buffers
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.
Release Notes:
- openai: Remove support for deprecated o1-preview and o1-mini models
- openai: Support streaming for o1 model
Ben Brandt
created
4e4856f
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
Closes #32217
Follow up of https://github.com/zed-industries/zed/pull/32301, sorry
about the messy rebase in the previous PR.
Release Notes:
- Fixed `max_tabs` setting not applying immediately when changed
TODO:
- [x] Fix the off-by-one bug (currently closing one more tab than the
max_tabs setting) while perserving "+1 Tab Allowance" feature.
- [x] Investigate Double Invocation of `settings_changed`
- [x] Write test that:
- Sets max_tabs to `n`
- Opens `n` buffers
- Changes max_tabs to `n-1`
- Asserts we have exactly `n-1` buffers remaining
---------
Co-authored-by: Joseph T. Lyons <JosephTLyons@gmail.com>
vipex
and
Joseph T. Lyons
created
c7ee635
Deploy code runner menu from correct display row (#32594)
Click to expand commit body
This fixes a bug introduced in #32579 where the code runner menu would
be deployed from the most recent cursor position instead of the row that
the runner icon was rendered on.
Release Notes:
- N/A
Anthony Eid
created
106b98f
workspace: Persist centered layout across project switches (#32299)
Click to expand commit body
Closes #32297
Changes:
- Added restoration of `workspace.centered_layout` from
`serialized.centered_layout`
- Ensures the centered layout state persists across project switches
Release Notes:
- Fixed centered layout not persisting when switching between projects
vipex
created
1a321b5
Rewrite documentation comment for right movement (#32547)
Click to expand commit body
I don't think the documentation comment is saying the right thing. This
version is more similar to the comment of the left movement function.
Release Notes:
- N/A
fantacell
created
242af86
Use ch-width (`0`) instead of em-width (`m`) for gutter width calculation (#32548)
Click to expand commit body
Closes #21860
Release Notes:
- Added `ch_width` and `ch_advance` function alongside their `em_*`
counterparts
- Use `ch_*` version to calculate gutter layouts
- Update a stale comment from changes in #31959
The ch units refer to the width of the number `0` whereas em is the
width of `m` and the actual font size (e.g. 16px means 16 px width of
`m`).
This change has no effect for monospaced fonts but can be drastic for
proportional ones as seen below for "Zed Plex Sans" with a
`"min_line_number_width" = 4`.
<img width="726" alt="Screenshot 2025-06-11 at 15 47 35"
src="https://github.com/user-attachments/assets/aa73f4d4-32bc-42cf-a9f6-7e25fee68c9a"
/>
Max Mynter
created
f428d54
task: Don't show VSCode worktree tasks when Zed ones exist (#32590)
Click to expand commit body
Fixes #23110
Similar to #32589, we may eventually want to merge instead of making
these lists mutually exclusive.
Release Notes:
- N/A
Julia Ryan
created
3850da6
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
13ee78c
editor: Add delay for selection drag to prevent accidental drag over attempt for new selection (#32586)
Click to expand commit body
- Add `300ms` delay for it to consider it as selection drag instead of
an attempt to make a new selection.
- Add cursor icon while dragging the selection.
This is same as what chromium does:
https://chromium.googlesource.com/chromium/blink/+/master/Source/core/input/EventHandler.cpp#142
Release Notes:
- Fixed issue where you accidentally end up dragging the selection where
intent was to make a new one instead. To drag selection now, you need to
hold just a little longer before dragging.
Smit Barmase
created
04223f3
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
1083c0a
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
Now if you click the triangle you get runnables, if you click the
lightning bolt you get code actions, if you trigger the code actions
menu with the mouse/keyboard you still get both.
Release Notes:
- Fixed the run/code actions menu to not duplicate content when opened
from the respective icons.
---------
Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Conrad Irwin
and
Anthony Eid
created
9032ea9
Use buffer's main language when fetching language tasks (#32580)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/32465
Release Notes:
- Fixed language tasks fetched incorrectly for certain selections
Kirill Bulatov
created
8cc5b04
open_ai: Remove redundant serde aliases and add model limits (#32572)
Click to expand commit body
Remove unnecessary alias attributes from Model enum variants and add
max_output_tokens limits for all OpenAI models. Also fix
supports_system_messages to explicitly handle all model variants.
Release Notes:
- N/A
Ben Brandt
created
c427768
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
717bf35
agent: Remove context server settings when uninstalling MCP extension (#32560)
Click to expand commit body
Release Notes:
- agent: Automatically remove context server settings when uninstalling
MCP extension
Bennet Bo Fenner
created
e8ba8bb
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
83eb6ff
Apply TypeScript test improvements to tsx files (#32477)
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
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