Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [x] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
Release Notes:
- N/A
---------
Co-authored-by: Eric <eric@zed.dev>
Co-authored-by: cameron <cameron.studdstreet@gmail.com>
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Co-authored-by: Anthony Eid <anthony@zed.dev>
Co-authored-by: John Tur <john-tur@outlook.com>
Mikayla Maki
,
Eric
,
cameron
,
Danilo Leal
,
Anthony Eid
, and
John Tur
created
0e5b4e1
language_models: Defer fetching models for the Zed provider until fully signed-in (#50857)
Click to expand commit body
This PR updates the model-fetching behavior for the Zed provider to wait
until the user is fully signed-in before we attempt to fetch the models.
We now subscribe to the `UserStore` and listen for the
`PrivateUserInfoUpdated` event. If we receive that event and the user is
not currently signed out, then we should be all set to fetch the models.
Closes CLO-424.
Release Notes:
- N/A
Marshall Bowers
created
1f918fb
Remove agent git worktree feature flag (#50778)
Click to expand commit body
Remove the separate `AgentGitWorktreesFeatureFlag` and replace all its
checks with the existing `AgentV2FeatureFlag`. The git worktree
functionality is now gated behind the same flag as agent v2.
Changes:
- Removed `AgentGitWorktreesFeatureFlag` from `feature_flags`
- Replaced all `has_flag::<AgentGitWorktreesFeatureFlag>()` checks with
`has_flag::<AgentV2FeatureFlag>()`
- Simplified toolbar condition that was redundantly checking both flags
- Updated tests accordingly
Closes AI-73
Release Notes:
- N/A
Richard Feldman
created
94154aa
picker: Prevent clicking non-selectable entries from confirming selection (#50705)
Click to expand commit body
Closes #50627
Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
### Videos:
Before:
https://drive.google.com/file/d/1PahGhfx-wq9cyNqqMlctb9Np7M1Meo71/view?usp=sharing
After:
https://drive.google.com/file/d/135W6MQ9hKBurw5Z7YpHQQhoQwkh1NvUb/view?usp=sharing
Release Notes:
- Fixed clicking on non-selectable picker entries (e.g. section headers)
confirming the currently selected item.
João Soares
created
8e5356c
ep: Fix infinite loop of EP requests in some cases (#50833)
Click to expand commit body
When a diagnostic-triggered prediction returns no edits, don't fall back
to requesting another diagnostic prediction. This was causing an
infinite loop that burned through the API rate limit until hitting 429
errors.
Release Notes:
- N/A
Oleksiy Syvokon
created
27a9b60
ep: Fix race condition resulting in duplicate requests (#50830)
Click to expand commit body
When multiple `queue_prediction_refresh` calls land in the same
synchronous frame, all spawned tasks would read the same throttle state
and each send an identical cloud request.
Now the second task would see that the first request has been sent and
would quit.
Release Notes:
- N/A
See these screenshots:
<img width="832" height="564" alt="image"
src="https://github.com/user-attachments/assets/64d04fe7-4be7-4fbf-8536-b4b7a2ea62ed"
/>
<img width="836" height="1094" alt="image"
src="https://github.com/user-attachments/assets/247b215c-8e7e-4eff-8e08-b1b9ee8894b9"
/>
Release Notes:
- Fixed some error messages in OpenAI/Copilot Chat conversations that
were using the Debug representation.
Closes #50170.
Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [x] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
Release Notes:
- Enable parser options individually to avoid rendering issues
Kunall Banerjee
created
3572071
agent: Add debug logging to `StreamingEditFileTool` (#50826)
Click to expand commit body
Add some debug logging to the streaming edit file tool, to make it
easier to debug errors.
Can be enabled with
```
"log": {
"agent": "debug",
}
```
Release Notes:
- N/A
Bennet Bo Fenner
created
493611a
docs: Fix typo in consent banner hide check (#50823)
Click to expand commit body
Fixes a typo in the consent banner check on docs pages, which makes the
opt-out logic work correctly.
Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [x] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
Release Notes:
- N/A
Gaauwe Rombouts
created
38e7f41
agent: Fix deadlock when LLM API returns an error while streaming tool input (#50813)
Click to expand commit body
Nightly only since no tool is using streaming on Preview.
Tools that used streaming could deadlock when the upstream LLM API
stream exited early without ever sending a ToolUse with `input_complete`
set to `true`. This is now fixes by manually dropping the tool input
channels.
Release Notes:
- N/A
Bennet Bo Fenner
created
3fb377b
git: Side by side spacer mouse cursor (#50814)
Cameron Mcloughlin
created
783a526
ep: Add V0304SeedNoEdits prompt format (#50809)
Click to expand commit body
Release Notes:
- N/A
Oleksiy Syvokon
created
1a8005f
editor: Respect `read_only` in `newline_below` (#50804)
Click to expand commit body
Turns out `Editor::newline_below` was not respecting the `read_only`
flag because it uses buffer.edit. `Editor::newline` and
`Editor::newline_above` behaved correctly because they used
`editor.edit` which ignores edits if `read_only` is true.
Added an early return if the editor is read only, also added it to
newline/newline_above for clarity.
Release Notes:
- Fixed an issue where newlines could be inserted into read-only editors
Bennet Bo Fenner
created
b5881c9
workspace: Fix autosave on buffer change in multibuffer (#50686)
Click to expand commit body
Fixes #50526
Fixes https://github.com/zed-industries/zed/issues/42841
Fixes https://github.com/zed-industries/zed/issues/49875
### Summary
Fix `autosave: on_focus_change` not firing reliably when leaving editors
with nested focus targets (e.g. multibuffer/search flows).
### Root cause
Autosave on focus change was wired to `on_blur` of the item focus
handle.
`on_blur` only fires when that exact handle is the focused leaf, which
misses common descendant-to-outside focus transitions.
## Fix
In `crates/workspace/src/item.rs`, switch autosave subscription from:
- `cx.on_blur(&self.read(cx).focus_handle(cx), ...)`
to:
- `cx.on_focus_out(&self.read(cx).focus_handle(cx), ...)`
Autosave behavior and guards remain unchanged:
- only for `AutosaveSetting::OnFocusChange`
- only when focus truly left the item (`!contains_focused`)
- skipped when modal is active (`!has_active_modal`)
### Impact
- Fixes missed autosaves when moving focus from item descendants to
other UI (terminal, file tree, search inputs, etc.).
- No behavior change for other autosave modes (`off`, `after_delay`,
`on_window_change`).
### Video
[Screencast from 2026-03-04
15-23-07.webm](https://github.com/user-attachments/assets/81135999-320f-40f3-9673-7c0460e5a14a)
Release Notes:
- Fixed an issue where `"autosave": "on_focus_change"` would not
reliably work in multibuffers.
---------
Co-authored-by: MrSubidubi <finn@zed.dev>
c091c90
util: Fix env load issues on Windows due to quoting (#50782)
Click to expand commit body
Closes #47823
Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [x] No UI changes
Release Notes:
- Solves the issue where env variables failed to load when a project
with dir path had `'`(single quote) in them, for example:
`C:\Temp\O'Brien\project_1`.
- added a zed pre-quote for directory paths and zed executable
- handled pwsh, nushell, cmd, fish, posix, csh, tcsh, rc, xonsh, elvish
based terminals
- uses `try_quote` for quoting shell paths
Amaan
created
df0b3de
agent: Simplify EditPipeline state in StreamingEditFileTool (#50792)
Click to expand commit body
Release Notes:
- N/A
Bennet Bo Fenner
created
2991b05
ep: Make --repetitions work with Anthropic and OpenAI batches (#50789)
Click to expand commit body
Release Notes:
- N/A
Oleksiy Syvokon
created
33c78fa
Use historical typewriter names for agent branch names (#50611)
Click to expand commit body
Replace the auto-generated `agent-[hash]` branch naming scheme with
names based on historical typewriter models (e.g. `olivetti-a3f9b2c1`,
`selectric-7d2e4f01`).
A static list of 49 typewriter names is used as the pool. When selecting
a name, existing branch names are checked—each branch is split on its
last `-` to extract the typewriter prefix, and any taken prefixes are
excluded from the candidate set. A random name is then picked from the
remaining candidates and suffixed with an 8-character alphanumeric hash.
The name selection logic accepts injected RNG and a list of disallowed
names, making it straightforward to test deterministically with
`#[gpui::test]` and `StdRng`.
Closes AI-71
(No release notes because this is feature-flagged.)
Release Notes:
- N/A
Richard Feldman
created
c0f5d21
lsp: Add semantic token rules for Go (#50641)
Click to expand commit body
gopls reports Go `const` declarations as `variable` with the `readonly`
modifier. Add a Go-specific semantic token rule to map this to the
`constant` theme style, matching VS Code's behavior.
<img width="465" height="32" alt="image"
src="https://github.com/user-attachments/assets/e0bc8a60-2275-4f81-9185-8b86c51d3d08"
/>
Closes #50642
Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [x] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
Release Notes:
- N/A *or* Added/Fixed/Improved ...
Nianyu Shen
created
3959921
Fix OpenGL initialization on Intel HD 4000 (#50772)
Click to expand commit body
For real this time?
Release Notes:
- N/A
John Tur
created
608185b
fix: Implement raw-window-handle traits for X11Window (#50768)
Click to expand commit body
I'm embedding a 3D viewport inside GPUI by creating a child window with
its own surface that fits the bounds of a GPUI element, and I need
access to the raw window handle of the current window to manage it.
Right now on X11 this is stubbed as unimplemented and results in a
panic. I've copied most of the same implementation from the associated
`RawWindow` into `X11Window`.
Small clip of a Bevy app embedded inside GPUI with a popover that draws
above the 3d surface to show testing was done:
[Screencast_20260304_182657.webm](https://github.com/user-attachments/assets/829f9197-1613-41a7-af83-d377f3154751)
Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [ ] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
Release Notes:
- Added implementations of `rwh::HasDisplayHandle` and
`rwh::HasWindowHandle` for `X11Window`
Gary Tierney
created
5418013
agent_ui: Add "Paste as Plain Text" to message editor context menu (#50625)
Click to expand commit body
Add the existing `PasteRaw` action to the right-click context menu in
the message editor, making it more discoverable. Previously it was only
available via the keyboard shortcut (Cmd+Shift+V / Ctrl+Shift+V) or
the command palette.
Release Notes:
- Added "Paste as Plain Text" to the agent panel message editor
right-click menu
Eric Holk
created
1fec1ca
ci: Clean up some of our workflows (#50499)
Click to expand commit body
Release Notes:
- N/A
Finn Evers
created
0c43ce8
nix: Hide pipewire lazy trampolines in libwebrtc when linking as SO (#50743)
Click to expand commit body
This would cause a null pointer dereference when trying to open an audio
device in Zed. More context:
https://github.com/NixOS/nixpkgs/pull/478907/changes#r2885943326
cc @cameron1024
Release Notes:
- Fixed crash when trying to join a channel/test audio on Nix-built Zed
on Linux.
Jakub Konka
created
53fca25
git_ui: Add ability to delete git worktrees from picker (#50015)
Click to expand commit body
Adds the ability to delete a git worktree directly from the worktree
picker, inspired by the existing branch delete functionality.
(`cmd-shift-backspace` on macOS, `ctrl-shift-backspace` on
Linux/Windows).
Screenshot:
<img width="1288" height="466" alt="Screenshot 2026-02-24 at 16 01 05"
src="https://github.com/user-attachments/assets/6ca5048d-63fa-4295-a578-358904bb92eb"
/>
Release Notes:
- Added the ability to delete a git worktree from the worktree picker
---------
Co-authored-by: Anthony Eid <anthony@zed.dev>
David Alecrim
and
Anthony Eid
created
e717268
git: Allow committing in restrictive worktrees (#50749)
Click to expand commit body
follow up on: https://github.com/zed-industries/zed/pull/50649
When committing in a restrictive workspace we avoid running git hooks
instead of failing the commit because hooks aren't allowed. I also
passed in more git cli hardening configurations to use when Zed spawns
git commands
Before you mark this PR as ready for review, make sure that you have:
- [ ] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
Release Notes:
- N/A
Anthony Eid
created
67c2c34
Include repo_url in edit prediction requests when data collection is enabled (#50745)
- Adds logging if tool fails
- Reduces boilerplate in test
- Simplified code in a bunch of places
Release Notes:
- N/A
Bennet Bo Fenner
created
9938ebe
editor: Add support for no auto-indent on enter (#47751)
Click to expand commit body
Closes #47550
Changes the `auto_indent` setting from a boolean to an enum with three
modes:
- **`full`** (default): Adjusts indentation based on syntax context when
typing (previous `true` behavior)
- **`preserve_indent`**: Preserves the current line's indentation on new
lines, but doesn't adjust based on syntax
- **`none`**: No automatic indentation - new lines start at column 0
(previous `false` behavior)
This gives users more control over indentation behavior. Previously,
setting `auto_indent: false` would still preserve indentation on new
lines, which was unexpected.
Includes:
- Settings migration from boolean to enum values
- Settings UI dropdown renderer
Release Notes:
- Changed `auto_indent` setting from boolean to enum with `full`,
`preserve_indent`, and `none` options
<img width="1373" height="802" alt="Screenshot 2026-01-27 at 16 32 10"
src="https://github.com/user-attachments/assets/b629e1d8-7359-4853-8222-abfa71d6ebe2"
/>
---------
Co-authored-by: MrSubidubi <finn@zed.dev>
Oliver Azevedo Barnes
and
MrSubidubi
created
4d42d3a
docs: Remove Preview callouts for stable release (#50736)
Click to expand commit body
This PR removes Preview callouts from documentation for features that
are now in Stable.
## Files Updated
• docs/src/collaboration/overview.md
• docs/src/debugger.md
• docs/src/configuring-languages.md
• docs/src/troubleshooting.md
• docs/src/outline-panel.md
• docs/src/getting-started.md
• docs/src/tasks.md
• docs/src/ai/edit-prediction.md
• docs/src/ai/llm-providers.md
## What This Does
Removes callouts like:
```markdown
> **Preview:** This feature is available in Zed Preview. It will be included in the next Stable release.
```
And:
```markdown
> **Changed in Preview (v0.XXX).** See [release notes](/releases#0.XXX).
```
These features are now in Stable, so the callouts are no longer needed.
Release Notes:
- N/A
Before this change the crash handler uploaded crashes before sign-in had
happened.
Now we get the metrics_id correctly. This allows for us to tie crashes
reported
on Github to users who have opted into telemetry (users who have opted
into
crash reporting but not telemetry will not have a metrics_id).
Release Notes:
- Fixed crash reporter metadata collection
---------
Co-authored-by: Miguel Raz Guzmán Macedo <miguel@zed.dev>
5c91ebf
git: Move diff num stat calculation to repository snapshot layer (#50645)
Click to expand commit body
Follow up on: https://github.com/zed-industries/zed/pull/49519
This PR reworks how Zed calculates diff num stats by moving the
calculation to the `RepositorySnapshot` layer, instead of the
`GitPanel`. This has a couple of benefits:
1. Snapshot recalculations are already set up to recompute on file
system changes and only update the affected files. This means that diff
stats don't need to manage their own subscription or states anymore like
they did in the original PR.
2. We're able to further separate the data layer from the UI. Before,
the git panel owned all the subscriptions and tasks that refreshed the
diff stat, now the repository does, which is more inline with the code
base.
3. Integration tests are cleaner because `FakeRepository` can handle all
the data and calculations of diff stat and make it accessible to more
tests in the codebase. Because a lot of tests wouldn't initialize the
git panel when they used the git repository.
4. This made implementing remote/collab support for this feature
streamline. Remote clients wouldn't get the same buffer events as local
clients, so they wouldn't know that the diff stat state has been updated
and invalidate their data.
5. File system changes that happened outside of Zed now trigger the diff
stat refresh because we're using the `RepositorySnapshot`.
I added some integration tests as well to make sure collab support is
working this time. Finally, adding the initial diff calculation to
`compute_snapshot` didn't affect performance for me when checking
against chromium's diff with HEAD~1000. So this should be a safe change
to make.
I decided to add diff stats on the status entry struct because it made
updating changed paths and the collab database much simpler than having
two separate SumTrees. Also whenever the UI got a file's status it would
check its diff stat as well, so this change makes that code more
streamlined as well.
Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing.
- [x] Done a self-review taking into account security and performance
aspects.
Release Notes:
- N/A
Anthony Eid
created
4af77fb
docs: Remove outdated reference to simple-completion-language-server (#50732)
Click to expand commit body
Closes #46811
Release Notes:
- N/A
Finn Evers
created
f3e4c15
project_panel: Fix scrolling in empty area below file list (#50683)
Click to expand commit body
Closes #50624
The empty bottom section of the project panel showed a horizontal
scrollbar on hover, but scrolling didn't work there. Added a scroll
wheel handler to the blank area that forwards scroll events to the
uniform list's scroll handle, making both horizontal and vertical
scrolling work from anywhere in the panel.
Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [x] Aligned any UI changes with the [UI
checklist](https://github.com/zedindustries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
Release Notes:
- Fixed project panel empty area showing a non-functional scrollbar;
scrolling now works from anywhere in the panel
---------
Co-authored-by: MrSubidubi <finn@zed.dev>
Viraj Bhartiya
and
MrSubidubi
created
74e747a
repl: Support kernel language aliases in REPL (#49762)
Click to expand commit body
Add a `kernel_language_names` field to `LanguageConfig` that allows
languages to declare alternative names that Jupyter kernels may use.
This fixes REPL matching for cases where a kernel reports a different
language identifier than Zed's language name.
For example, the Nu extension would set `kernel_language_names =
["nushell", "nu"]` in its config.toml, enabling REPL support for
nu-jupyter-kernel which reports `"language": "nushell"` in its
kernelspec.
The change consolidates kernel language matching logic into a single
`Language::matches_kernel_language()` method that checks the code fence
block name, language name, and the new aliases list (all
case-insensitive).
- [x] Done a self-review taking into account security and performance
aspects
Release Notes:
- Added `kernel_language_names` field for extensions to self identify
REPL mappings
Kyle Kelley
created
55ae7b0
Increase timeout for `test_random_blocks` (#50724)
Click to expand commit body
See https://github.com/zed-industries/zed/actions/runs/22679055818
Release Notes:
- N/A
Cole Miller
created
83b05f1
Fix terminal path click failing when path is prefixed with '0:' (#50663)
Click to expand commit body
The path hyperlink regex's middle-char pattern
[[:(][^0-9()]](cci:2://file:///d:/zed/crates/fs/src/fs.rs:89:0-157:1)
allowed colon+space because space was not in the exclusion set. This
caused `0: foo/bar.txt` to be matched as a single path instead of just
`foo/bar.txt`.
Fix: add space to the exclusion class: [[:(][^0-9()\\
]](cci:2://file:///d:/zed/crates/fs/src/fs.rs:89:0-157:1)
Closes #50531
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
(N/A)
Release Notes:
- Fixed terminal Ctrl-click path detection failing when path is preceded
by a prefix like `0:` (#50531)
87bc2aa
Add support for streaming tool input to more providers (#50682)
Click to expand commit body
To test:
- [x] Bedrock
- [x] Copilot Chat
- [x] Deepseek
- [x] Open AI
- [x] Open Router
- [x] Vercel
- [x] Vercel AI Gateway
- [x] xAI
- [x] Mistral
Release Notes:
- N/A
Bennet Bo Fenner
created
0394341
ep: Collapse whitespace in deltaChrF (#50716)
Click to expand commit body
Release Notes:
- N/A
Oleksiy Syvokon
created
731a800
repl: Bump `runtimed` ecosystem packages and add support for V3 Jupyter Notebooks (#49914)
Click to expand commit body
- Add support for v3 Jupyter Notebooks ( nbformat 1.2.0 <->
https://github.com/runtimed/runtimed/pull/275 )
- This means that we can now open notebooks like [Signal Processing for
Python](https://nbviewer.org/github/unpingco/Python-for-Signal-Processing/tree/master/)
and much more.
Release Notes:
- N/A
Closes #50701
Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
Release Notes:
- N/A
866ec42
Remove deprecated Gemini 3 Pro Preview (#50503)
Click to expand commit body
Gemini 3 Pro Preview has been deprecated in favor of Gemini 3.1 Pro.
This removes the `Gemini3Pro` variant from the `Model` enum and all
associated match arms, updates eval model lists, docs, and test
fixtures.
A serde alias (`"gemini-3-pro-preview"`) is kept on `Gemini31Pro` so
existing user settings gracefully migrate to the replacement model.
Closes AI-66
Release Notes:
- Removed deprecated Gemini 3 Pro Preview model; existing configurations
automatically migrate to Gemini 3.1 Pro.
Richard Feldman
created
9b8ad01
ep: Option to configure custom Baseten environment (#50706)
Click to expand commit body
Release Notes:
- N/A
Oleksiy Syvokon
created
a1d4037
cloud_api_client: Send the organization ID in LLM token requests (#50517)
Click to expand commit body
This is already expected on the cloud side. This lets us know under
which organization the user is logged in when requesting an llm_api
token.
Closes CLO-337
Release Notes:
- N/A
Adds a consent banner, similar to the one on zed.dev
Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [x] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
Release Notes:
- N/A