Commit log

c5d792d zed 0.197.6

Joseph T. Lyons created

fe51fc6 Add Claude Opus 4.1 (#35653)

Click to expand commit body
<img width="348" height="427" alt="Screenshot 2025-08-05 at 1 55 35 PM"
src="https://github.com/user-attachments/assets/52af17a5-0095-4ad9-9afe-ff27aab90e03"
/>

Release Notes:

- Added support for Claude Opus 4.1

Co-authored-by: Marshall Bowers <git@maxdeviant.com>

Richard Feldman and Marshall Bowers created

e1d78e6 Cherry-pick #35513 onto v0.197.x (#35590)

Click to expand commit body
Release Notes:

- N/A

Michael Sloan created

2cef0e1 Fix escape in terminal with JetBrains keymap (#35585)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/35429 Closes
https://github.com/zed-industries/zed/issues/35091 Follow-up to:
https://github.com/zed-industries/zed/pull/35230

Release Notes:

- Fix `escape` in Terminal broken in JetBrains compatability keymaps

Peter Tripp created

c0f25b7 zed 0.197.5

Joseph T. Lyons created

c5c190e zed 0.197.4

Joseph T. Lyons created

f9ac376 debugger: Send initialized event from fake server at a more realistic time (#35446)

Click to expand commit body
The spec says:

> :arrow_left: Initialized Event
> This event indicates that the debug adapter is ready to accept
configuration requests (e.g. setBreakpoints, setExceptionBreakpoints).
>
> A debug adapter is expected to send this event when it is ready to
accept configuration requests (but not before the initialize request has
finished).

Previously in tests, `intercept_debug_sessions` was just spawning off a
background task to send the event after setting up the client, so the
event wasn't actually synchronized with the flow of messages in the way
the spec says it should be. This PR makes it so that the `FakeTransport`
injects the event right after a successful response to the initialize
request, and doesn't send it otherwise.

Release Notes:

- N/A

Cole Miller created

b6ad19d Fix broken workspace_hack in v0.197.x (#35455)

Click to expand commit body
Fixes workstation_hack broken in
[v0.197.x](https://github.com/zed-industries/zed/commits/v0.197.x/) by
https://github.com/zed-industries/zed/commit/17404118de77e6cf988643d11f4993ab917e4622
cherry-picking https://github.com/zed-industries/zed/pull/35408.
See: [failing
job](https://github.com/zed-industries/zed/actions/runs/16655247386/job/47138480901)

This could've been caught by a merge queue, but only if we were to
require it for release branches too (e.g. v0.197.x). 🤷

CC: @SomeoneToIgnore

Release Notes:

- N/A

Peter Tripp created

4980f2a jetbrains: Unmap cmd-k in Jetbrains keymap (#35443)

Click to expand commit body
This only works after a delay in most situations because of the all
chorded `cmd-k` mappings in the so disable them for now.

Reported by @jer-k:
https://x.com/J_Kreutzbender/status/1951033355434336606

Release Notes:

- Undo mapping of `cmd-k` for Git Panel in default Jetbrains keymap
(thanks [@jer-k](https://github.com/jer-k))

Peter Tripp created

1740411 Fix panic with completion ranges and autoclose regions interop (#35408)

Click to expand commit body
As reported [in
Discord](https://discord.com/channels/869392257814519848/1106226198494859355/1398470747227426948)
C projects with `"` as "brackets" that autoclose, may invoke panics when
edited at the end of the file.

With a single selection-caret (`ˇ`), at the end of the file,
```c
ifndef BAR_H

int fn_branch(bool do_branch1, bool do_branch2);

```
gets an LSP response from clangd
```jsonc
{
  "filterText": "AGL/",
  "insertText": "AGL/",
  "insertTextFormat": 1,
  "kind": 17,
  "label": " AGL/",
  "labelDetails": {},
  "score": 0.78725427389144897,
  "sortText": "40b67681AGL/",
  "textEdit": {
    "newText": "AGL/",
    "range": { "end": { "character": 11, "line": 8 }, "start": { "character": 10, "line": 8 } }
  }
}
```

which replaces `"` after the caret (character/column 11, 0-indexed).
This is reasonable, as regular follow-up (proposed in further
completions), is a suffix + a closing `"`:

<img width="842" height="259" alt="image"
src="https://github.com/user-attachments/assets/ea56f621-7008-4ce2-99ba-87344ddf33d2"
/>

Yet when Zed handles user input of `"`, it panics due to multiple
reasons:

* after applying any snippet text edit, Zed did a selection change:
https://github.com/zed-industries/zed/blob/55379876301bd4dcfe054a146b66288d2e60a523/crates/editor/src/editor.rs#L9539-L9545
which caused eventual autoclose region invalidation:
https://github.com/zed-industries/zed/blob/55379876301bd4dcfe054a146b66288d2e60a523/crates/editor/src/editor.rs#L2970

This covers all cases that insert the `include""` text.

* after applying any user input and "plain" text edit, Zed did not
invalidate any autoclose regions at all, relying on the "bracket" (which
includes `"`) autoclose logic to rule edge cases out

* bracket autoclose logic detects previous `"` and considers the new
user input as a valid closure, hence no autoclose region needed.
But there is an autoclose bracket data after the plaintext completion
insertion (`AGL/`) really, and it's not invalidated after `"` handling

* in addition to that, `Anchor::is_valid` method in `text` panicked, and
required `fn try_fragment_id_for_anchor` to handle "pointing at odd,
after the end of the file, offset" cases as `false`

A test reproducing the feedback and 2 fixes added: proper, autoclose
region invalidation call which required the invalidation logic tweaked a
bit, and "superficial", "do not apply bad selections that cause panics"
fix in the editor to be more robust

Release Notes:

- Fixed panic with completion ranges and autoclose regions interop

---------

Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>

Kirill Bulatov and Max Brunsfeld created

ae1bf97 linux: Fix caps lock not working consistently for certain X11 systems (cherry-pick #35361) (#35364)

Click to expand commit body
Cherry-picked linux: Fix caps lock not working consistently for certain
X11 systems (#35361)

Closes #35316

Bug in https://github.com/zed-industries/zed/pull/34514

Turns out you are not supposed to call `update_key` for modifiers on
`KeyPress`/`KeyRelease`, as modifiers are already updated in
`XkbStateNotify` events. Not sure why this only causes issues on a few
systems and works on others.

Tested on Ubuntu 24.04.2 LTS (initial bug) and Kubuntu 25.04 (worked
fine before too).

Release Notes:

- Fixed an issue where caps lock stopped working consistently on some
Linux X11 systems.

Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>

gcp-cherry-pick-bot[bot] and Smit Barmase created

002b8b9 v0.197.x stable

Joseph T. Lyons created

268fc41 Always double reconnection delay and add jitter (#35337)

Click to expand commit body
Previously, we would pick an exponent between 0.5 and 2.5, which would
cause a lot of clients to try reconnecting in rapid succession,
overwhelming the server as a result.

This pull request always doubles the previous delay and introduces a
jitter that can, at most, double it.

As part of this, we're also increasing the maximum reconnection delay
from 10s to 30s: this gives us more space to spread out the reconnection
requests.

Release Notes:

- N/A

---------

Co-authored-by: Marshall Bowers <git@maxdeviant.com>

Antonio Scandurra and Marshall Bowers created

4d44b9f Actually disable ai for now (#35327)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/35325

* removes Supermaven actions
* removes copilot-related action
* stops re-enabling edit predictions when disabled

Release Notes:

- N/A

Kirill Bulatov created

b4b57b5 Fix racy leaked extension server adapters handling (cherry-pick #35319) (#35320)

Click to expand commit body
Cherry-picked Kb/wasm panics (#35319)

Follow-up of https://github.com/zed-industries/zed/pull/34208
Closes https://github.com/zed-industries/zed/issues/35185

Previous code assumed that extensions' language server wrappers may leak
only in static data (e.g. fields that were not cleared on deinit), but
we seem to have a race that breaks this assumption.

1. We do clean `all_lsp_adapters` field after
https://github.com/zed-industries/zed/pull/34334 and it's called for
every extension that is unregistered.
2. `LspStore::maintain_workspace_config` ->
`LspStore::refresh_workspace_configurations` chain is triggered
independently, apparently on `ToolchainStoreEvent::ToolchainActivated`
event which means somewhere behind there's potentially a Python code
that gets executed to activate the toolchian, making
`refresh_workspace_configurations` start timings unpredictable.
3. Seems that toolchain activation overlaps with plugin reload, as 
`2025-07-28T12:16:19+03:00 INFO [extension_host] extensions updated.
loading 0, reloading 1, unloading 0` suggests in the issue logs.

The plugin reload seem to happen faster than workspace configuration
refresh in



https://github.com/zed-industries/zed/blob/c65da547c9aa5d798a1a71468bf253bf55d1cb09/crates/project/src/lsp_store.rs#L7426-L7456

as the language servers are just starting and take extra time to respond
to the notification.

At least one of the `.clone()`d `adapter`s there is the adapter that got
removed during plugin reload and has its channel closed, which causes a
panic later.

----------------------------

A good fix would be to re-architect the workspace refresh approach, same
as other accesses to the language server collections.
One way could be to use `Weak`-based structures instead, as definitely
the extension server data belongs to extension, not the `LspStore`.
This is quite a large undertaking near the extension core though, so is
not done yet.

Currently, to stop the excessive panics, no more `.expect` is done on
the channel result, as indeed, it now can be closed very dynamically.
This will result in more errors (and backtraces, presumably) printed in
the logs and no panics.

More logging and comments are added, and workspace querying is replaced
to the concurrent one: no need to wait until a previous server had
processed the notification to send the same to the next one.

Release Notes:

- Fixed warm-related panic happening during startup

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

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

bfb8f24 project_panel: Fix autoscroll to treat entries behind sticky items as out of viewport (cherry-pick #35067) (#35315)

Click to expand commit body
Cherry-picked project_panel: Fix autoscroll to treat entries behind
sticky items as out of viewport (#35067)

Closes #34831

Autoscroll centers items only if they’re out of viewport. Before this
PR, entry behind sticky items was not considered out of viewport, and
hence actions like `reveal in project panel` or focusing buffer would
not autoscroll that entry into the view in that case.

This PR fixes that by using recently added `scroll_to_item_with_offset`
in https://github.com/zed-industries/zed/pull/35064.

Release Notes:

- Fixed issue where `pane: reveal in project panel` action was not
working if the entry was behind sticky items.

Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>

gcp-cherry-pick-bot[bot] and Smit Barmase created

4fd3e22 gpui: Add `scroll_to_item_with_offset` to `UniformListScrollState` (cherry-pick #35064) (#35313)

Click to expand commit body
Cherry-picked gpui: Add `scroll_to_item_with_offset` to
`UniformListScrollState` (#35064)

Previously we had `ScrollStrategy::ToPosition(usize)` which lets you
define the offset where you want to scroll that item to. This is the
same as `ScrollStrategy::Top` but imagine some space reserved at the
top.

This PR removes `ScrollStrategy::ToPosition` in favor of
`scroll_to_item_with_offset` which is the method to do the same. The
reason to add this method is that now not just `ScrollStrategy::Top` but
`ScrollStrategy::Center` can also uses this offset to center the item in
the remaining unreserved space.

```rs
// Before
scroll_handle.scroll_to_item(index, ScrollStrategy::ToPosition(offset));

// After
scroll_handle.scroll_to_item_with_offset(index, ScrollStrategy::Top, offset);

// New! Centers item skipping first x items
scroll_handle.scroll_to_item_with_offset(index, ScrollStrategy::Center, offset);
```

This will be useful for follow up PR.

Release Notes:

- N/A

Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>

gcp-cherry-pick-bot[bot] and Smit Barmase created

dd60cc2 client: Send `User-Agent` header on WebSocket connection requests (cherry-pick #35280) (#35283)

Click to expand commit body
Cherry-picked client: Send `User-Agent` header on WebSocket connection
requests (#35280)

This PR makes it so we send the `User-Agent` header on the WebSocket
connection requests when connecting to Collab.

We use the user agent set on the parent HTTP client.

Release Notes:

- N/A

Co-authored-by: Marshall Bowers <git@maxdeviant.com>

gcp-cherry-pick-bot[bot] and Marshall Bowers created

bd1cc7f Add more data to see which extension got leaked (cherry-pick #35272) (#35278)

Click to expand commit body
Cherry-picked Add more data to see which extension got leaked (#35272)

Part of https://github.com/zed-industries/zed/issues/35185

Release Notes:

- N/A

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

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

e85c466 Ensure context servers are spawned in the workspace directory (#35271)

Click to expand commit body
This fixes an issue where we were not setting the context server working
directory at all.

Release Notes:

- Context servers will now be spawned in the currently active project
root.

---------

Co-authored-by: Danilo Leal <danilo@zed.dev>

Finn Evers and Danilo Leal created

da887b0 Cache LSP code lens requests (cherry-pick #35207) (#35257)

gcp-cherry-pick-bot[bot] created

151f330 Fix tasks leaked despite workspace window close (cherry-pick #35246) (#35252)

gcp-cherry-pick-bot[bot] created

f7aa90b Bump to 0.197.3 for @probably-neb

Zed Bot created

4031bed keymap_ui: Fix bug introduced in #35208 (cherry-pick #35237) (#35240)

Click to expand commit body
Cherry-picked keymap_ui: Fix bug introduced in #35208 (#35237)

Closes #ISSUE

Fixes a bug that was cherry picked onto stable and preview branches
introduced in #35208 whereby modifier keys would show up and not be
removable when editing a keybind

Release Notes:

- (preview only) Keymap Editor: Fixed an issue introduced in v0.197.2
whereby modifier keys would show up and not be removable while recording
keystrokes in the keybind edit modal

Co-authored-by: Ben Kunkle <ben@zed.dev>

gcp-cherry-pick-bot[bot] and Ben Kunkle created

99debc2 Fix environment loading with tcsh (#35054)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/34973

Fixes an issue where environment variables were not loaded when the
user's shell was tcsh and instead a file named `0` was dumped in the
current working directory with a copy of your environment variables as
json.

Follow-up to: 
- https://github.com/zed-industries/zed/pull/35002
- https://github.com/zed-industries/zed/pull/33599

Release Notes:

- Fixed a regression with loading environment variables in nushell

Peter Tripp created

0a9e3c4 zed 0.197.2

Peter Tripp created

2ee15a7 Use zed settings to detect `.zed` folders (#35224)

Click to expand commit body
Behind-the-scenes enhancement of
https://github.com/zed-industries/zed/pull/35221

Release Notes:

- N/A

Richard Feldman created

e2b8631 Allow edit tool to access files outside project (with confirmation) (#35221)

Click to expand commit body
Now the edit tool can access files outside the current project (just
like the terminal tool can), but it's behind a prompt (unlike other edit
tool actions).

Release Notes:

- The edit tool can now access files outside the current project, but
only if the user grants it permission to.

Richard Feldman created

916eb99 keymap_ui: Additional keystroke input polish (cherry-pick #35208) (#35218)

Click to expand commit body
Cherry-picked keymap_ui: Additional keystroke input polish (#35208)

Closes #ISSUE

Fixed various issues and improved UX around the keystroke input
primarily when used for keystroke search.

Release Notes:

- Keymap Editor: FIxed an issue where the modifiers used to activate
keystroke search would appear in the keystroke search
- Keymap Editor: Made it possible to search for repeat modifiers, such
as a binding with `cmd-shift cmd`
- Keymap Editor: Made keystroke search matches match based on ordered
(not necessarily contiguous) runs. For example, searching for `cmd
shift-j` will match `cmd-k cmd-shift-j alt-q` and `cmd-i g shift-j` but
not `alt-k shift-j` or `cmd-k alt-j`
- Keymap Editor: Fixed the clear keystrokes binding (`delete` by
default) not working in the keystroke input

Co-authored-by: Ben Kunkle <ben@zed.dev>

gcp-cherry-pick-bot[bot] and Ben Kunkle created

185122d git: Touch up amend UX (cherry-pick #35114) (#35213)

Click to expand commit body
Cherry-picked git: Touch up amend UX (#35114)

Follow-up to #26114

- Ensure that the previous commit message is filled in when toggling on
amend mode from the context menu
- Fix keybinding flicker in context menu

Release Notes:

- N/A

Co-authored-by: Cole Miller <cole@zed.dev>

gcp-cherry-pick-bot[bot] and Cole Miller created

44c6382 Fix Nushell environment variables (#35166)

Click to expand commit body
- Fixes environment variable ingestion for Nushell.

Closes #35056

Release Notes:

- N/A

Todd L Smith created

b06f843 Fix environment loading with nushell (#35002)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/34739

I believe this is a regression introduced here:
- https://github.com/zed-industries/zed/pull/33599

Release Notes:

- Fixed a regression with loading environment variables in nushell

Peter Tripp created

39a4409 lmstudio: Propagate actual error message from server (#34538)

Click to expand commit body
Discovered in this issue: #34513

Previously, we were propagating deserialization errors to users when
using LMStudio, instead of the actual error message sent from the
LMStudio server. This change will help users understand why their
request failed while streaming responses.

Release Notes:

- lmsudio: Display specific backend error messaging on failure rather
than generic ones

---------

Signed-off-by: Umesh Yadav <git@umesh.dev>
Co-authored-by: Peter Tripp <peter@zed.dev>

Umesh Yadav and Peter Tripp created

c86f82b project_panel: Automatically open project panel when Rename or Duplicate is triggered from workspace (#34988)

Click to expand commit body
In project panel, `rename` and `duplicate` action further needs user
input for editing, so if panel is closed we should open it.

Release Notes:

- Fixed project panel not opening when `project panel: rename` and
`project panel: duplicate` actions are triggered from workspace.

Smit Barmase created

ceab8c1 Don't auto-retry in certain circumstances (#35037)

Click to expand commit body
Someone encountered this in production, which should not happen:

<img width="1266" height="623" alt="Screenshot 2025-07-24 at 10 38
40 AM"
src="https://github.com/user-attachments/assets/40f3f977-5110-4808-a456-7e708d953b3b"
/>

This moves certain errors into the category of "never retry" and reduces
the number of retries for some others. Also it adds some diagnostic
logging for retry policy.

It's not a complete fix for the above, because the underlying issues is
that the server is sending a HTTP 403 response and although we were
already treating 403s as "do not retry" it was deciding to retry with 2
attempts anyway. So further debugging is needed to figure out why it
wasn't going down the 403 branch by the time the request got here.

Release Notes:

- N/A

Richard Feldman created

f6f7762 ai onboarding: Add overall fixes to the whole flow (#34996)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/34979

Release Notes:

- N/A

---------

Co-authored-by: Agus Zubiaga <hi@aguz.me>
Co-authored-by: Ben Kunkle <Ben.kunkle@gmail.com>

Danilo Leal , Agus Zubiaga , and Ben Kunkle created

c015ef6 linux: Fix `ctrl-0..9`, `ctrl-[`, `ctrl-^` (#35028)

Click to expand commit body
There were two different underlying reasons for the issues with
ctrl-number and ctrl-punctuation:

1. Some keys in the ctrl-0..9 range send codes in the `\1b`..`\1f`
range. For example, `ctrl-2` sends keycode for `ctrl-[` (0x1b), but we
want to map it to `2`, not to `[`.

2. `ctrl-[` and four other ctrl-punctuation were incorrectly mapped,
since the expected conversion is by adding 0x40

Closes #35012

Release Notes:

- N/A

Oleksiy Syvokon created

d3b2f60 Differentiate between file and selection diff events (#35014)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

b8849d8 Fix some bugs with `editor: diff clipboard with selection` (#34999)

Click to expand commit body
Improves testing around `editor: diff clipboard with selection` as well.

Release Notes:

- Fixed some bugs with `editor: diff clipboard with selection`

Joseph T. Lyons created

77dda2e ollama: Add Magistral to Ollama (#35000)

Click to expand commit body
See also: #34983

Release Notes:

- Added magistral support to ollama

versecafe created

ece9dd2 mistral: Add support for magistral-small and magistral-medium (#34983)

Click to expand commit body
Release Notes:

- mistral: Added support for magistral-small and magistral-medium

Peter Tripp created

c60f37a mistral: Add support for Mistral Devstral Medium (#34888)

Click to expand commit body
Mistral released their new DevstralMedium model to be used via API:
https://mistral.ai/news/devstral-2507

Release Notes:

- Add support for Mistral Devstral Medium

Renato Lochetti created

ca646e2 zed 0.197.1

Joseph T. Lyons created

b5433a9 agent_ui: Show keybindings for NewThread and NewTextThread in new thread button (#34967)

Click to expand commit body
I believe in this PR: #34829 we moved to context menu entry from action
but the side effect of that was we also removed the Keybindings from
showing it in the new thread button dropdown. This PR fixes that. cc
@danilo-leal

| Before | After |
|--------|--------|
| <img width="900" height="1962" alt="CleanShot 2025-07-23 at 23 36
28@2x"
src="https://github.com/user-attachments/assets/760cbe75-09b9-404b-9d33-1db73785234f"
/> | <img width="850" height="1964" alt="CleanShot 2025-07-23 at 23 37
17@2x"
src="https://github.com/user-attachments/assets/24a7e871-aebc-475c-845f-b76f02527b8f"
/> |

Release Notes:

- N/A

Umesh Yadav created

4727ae3 Fix telemetry event type names (cherry-pick #34974) (#34975)

Click to expand commit body
Cherry-picked Fix telemetry event type names (#34974)

Release Notes:

- N/A

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

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

d61db1f agent: Fix follow button disabled state (#34978)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

45d211a v0.197.x preview

Joseph T. Lyons created

56b64b1 keymap ui: Improve resize columns on double click (#34961)

Click to expand commit body
This PR splits the resize logic into separate left/right propagation
methods and improve code organization around column width adjustments.
It also allows resize to work for both the left and right sides as well,
instead of only checking the right side for room

Release Notes:

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

---------

Co-authored-by: Ben Kunkle <ben@zed.dev>

Anthony Eid and Ben Kunkle created

fdcd866 ai onboarding: Add telemetry event capturing (#34960)

Click to expand commit body
Release Notes:

- N/A

Co-authored-by: Katie Geer <katie@zed.dev>
Co-authored-by: Joseph T. Lyons <JosephTLyons@gmail.com>

Danilo Leal , Katie Geer , and Joseph T. Lyons created

3b428e2 Remove `!menu` from `j k` binding in initial keymap examples (#34959)

Click to expand commit body
See
https://github.com/zed-industries/zed/pull/34912#issuecomment-3108802582

Release Notes:

- N/A

Michael Sloan created