c5c190e
zed 0.197.4
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
- Fixes environment variable ingestion for Nushell. Closes #35056 Release Notes: - N/A
Todd L Smith created
b06f843
Fix environment loading with nushell (#35002)
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)
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)
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)
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)
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)
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)
Release Notes: - N/A
Joseph T. Lyons created
b8849d8
Fix some bugs with `editor: diff clipboard with selection` (#34999)
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)
See also: #34983 Release Notes: - Added magistral support to ollama
versecafe created
ece9dd2
mistral: Add support for magistral-small and magistral-medium (#34983)
Release Notes: - mistral: Added support for magistral-small and magistral-medium
Peter Tripp created
c60f37a
mistral: Add support for Mistral Devstral Medium (#34888)
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)
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)
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)
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)
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)
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)
See https://github.com/zed-industries/zed/pull/34912#issuecomment-3108802582 Release Notes: - N/A
Michael Sloan created
986b446
keymap ui: Resizable column follow up (#34955)
I cherry picked a small fix that didn't get into the original column resizable branch PR because I turned on auto merge. Release Notes: - N/A
Anthony Eid created
8713c55
keymap_ui: Dim keybinds that are overridden by other keybinds (#34952)
This change dims rows in the keymap editor for which the corresponding keybind is overridden by other keybinds coming from higher priority sources. Release Notes: - N/A
Finn Evers created
326fe05
Resizable columns (#34794)
This PR adds resizable columns to the keymap editor and the ability to double-click on a resizable column to set a column back to its default size. The table uses a column's width to calculate what position it should be laid out at. So `column[i]` x position is calculated by the summation of `column[..i]`. When resizing `column[i]`, `column[i+1]`’s size is adjusted to keep all columns’ relative positions the same. If `column[i+1]` is at its minimum size, we keep seeking to the right to find a column with space left to take. An improvement to resizing behavior and double-clicking could be made by checking both column ranges `0..i-1` and `i+1..COLS`, since only one range of columns is checked for resize capacity. Release Notes: - N/A --------- Co-authored-by: Anthony <anthony@zed.dev> Co-authored-by: Remco Smits <djsmits12@gmail.com>
Mikayla Maki , Anthony , and Remco Smits created
1f4c9b9
language: Update block_comment and documentation comment (#34861)
As suggested in https://github.com/zed-industries/zed/pull/34418, this proposes various changes to language configs to make block comments and doc-block-style comments more similar. In doing so, it introduces some breaking changes into the extension schema. This change is needed to support the changes I'm working on in #34418, to be able to support `rewrap` in block comments like `/* really long comment ... */`. As is, we can do this in C-style doc-block comments (eg `/** ... */`) because of the config in `documentation`, but we can't do this in regular block comments because we lack the info about what the line prefix and indentation should be. And while I was here, I did various other clean-ups, many of which feel nice but are optional. I would love special attention on the changes to the schema, version and related changes; I'm totally unfamiliar with that part of Zed. **Summary of changes** - break: changes type of `block_comment` to same type as `documentation_comment` (**this is the important change**) - break: rename `documentation` to `documentation_comment` (optional, but improves consistency w/ `line_comments` and `block_comment`) - break/refactor?: removes some whitespace in the declaration of `block_comment` delimiters (optional, may break things, need input; some langs had no spaces, others did) - refactor: change `tab_size` from `NonZeroU32` to just a `u32` (some block comments don't seem to need/want indent past the initial delimiter, so we need this be 0 sometimes) - refactor: moves the `documentation_comment` declarations to appear next to `block_comment`, rearranges the order of the fields in the TOML for `documentation_comment`, rename backing `struct` (all optional) **Future scope** I believe that this will also allow us to extend regular block comments on newline – as we do doc-block comments – but I haven't looked into this yet. (eg, in JS try pressing enter in both of these: `/* */` and `/** */`; the latter should extend w/ a `*` prefixed line, while the former does not.) Release Notes: - BREAKING CHANGE: update extension schema version from 1 to 2, change format of `block_comment` and rename `documentation_comment` /cc @smitbarmase
claytonrcarter created
14171e0
collab: Add `POST /users/:id/update_plan` endpoint (#34953)
This PR adds a new `POST /users/:id/update_plan` endpoint to Collab to allow Cloud to push down plan updates to users. Release Notes: - N/A
Marshall Bowers created