The ACP monikers are left over from when we had two versions of
everything. Now that all agents, including our own, use the same UI
components, it seems silly to have all of this separation. Flattens
files and removes unneeded Acp prefixes
Release Notes:
- N/A
Ben Brandt
created
f4e65d8
agent_servers: Migrate all built-in agents to go via registry (#50094)
Click to expand commit body
This has lots of benefits, but mainly allows users to uninstall agents.
Release Notes:
- N/A
---------
Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Co-authored-by: cameron <cameron.studdstreet@gmail.com>
Ben Brandt
,
Anthony Eid
, and
cameron
created
bf6a737
vim: Add configurable yank highlight background color (#49517)
Click to expand commit body
* Add a dedicated `vim.yank.background` theme color for the yank
highlight, which was previously hardcoded to
`editor.document_highlight.read_background`.
* When a theme doesn't define `vim.yank.background`, it falls back to
`editor.document_highlight.read_background` for backwards
compatibility.
* The VS Code theme importer maps `editor.rangeHighlightBackground` to
this new color.
Release Notes:
- Added configurable `vim.yank.background` theme color for vim yank
background highlight
---------
Co-authored-by: dino <dinojoaocosta@gmail.com>
Kasper Nyhus
and
dino
created
10b33f8
agent: Stream content in `StreamingEditFileTool` (#50187)
a25d124
markdown_preview: Fix panic in mermaid diagram renderer (#50176)
Click to expand commit body
The mermaid renderer can fail to render certain diagrams, and we already
have a fallback for that. It's not worth crashing Zed over it.
Wrapping `catch_unwind` alone doesn't work because our panic hooks
terminate the process before unwinding begins (we intentionally
terminate so the crash handler subprocess can generate a minidump), so
there was no way to gracefully handle panics from third-party code until
now (in rare cases where we need it, like in this case).
To handle this gracefully, we added `crashes::recoverable_panic` which
tells the panic hook to stand down on the current thread so the unwind
can proceed and be caught. This should be used sparingly since caught
panics bypass crash reporting.
Release Notes:
- Fixed a crash when rendering mermaid diagrams in markdown preview.
Smit Barmase
created
e4b827a
agent: Detect overlapping edits in StreamingEditFileTool (#50181)
Click to expand commit body
Release Notes:
- N/A
Bennet Bo Fenner
created
7cca7bc
ssh: Fix IPv6 address formatting in port forward `-L` arguments (#49032)
Click to expand commit body
## Summary
- Fix SSH `-L` port-forward arguments to wrap IPv6 addresses in brackets
(e.g. `-L[::1]:8080:[::1]:80`), so SSH can correctly parse them
- Rewrite `parse_port_forward_spec` to support bracket-wrapped IPv6
tokens like `[::1]:8080:[::1]:80`
- Add diagnostic logging for stdin read failures in the remote server to
aid debugging connection issues
Closes #49009
## Test plan
- [x] New unit tests: `test_parse_port_forward_spec_ipv6`,
`test_port_forward_ipv6_formatting`,
`test_build_command_with_ipv6_port_forward`
- [x] Existing tests pass: `cargo test -p remote --lib
transport::ssh::tests` (6/6)
- [ ] Manual verification: connect via SSH to an IPv6 host with port
forwarding configured
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude <noreply@anthropic.com>
When `row_infos.is_empty()` (if you have very very tiny editors) we
could
end up trying to read the first item out of it.
Fixes ZED-5AT
Fixes ZED-54F
Fixes ZED-56N
Updates #49260
cc @Veykril
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
- [ ] 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:
- Fixed a panic rendering diff hunk headers in 0-height editors
Conrad Irwin
created
55a5483
lsp_button: Improve UI for LS submenu (#50160)
Click to expand commit body
This PR improves the language server submenu UI, which previously, had
its width growing way too much to fit the server message as well as some
other small inconsistencies. Now, this is all fixed and the server
message appear in full.
| Before | After |
|--------|--------|
| <img width="2312" height="1342" alt="Screenshot 2026-02-26 at 1
13@2x"
src="https://github.com/user-attachments/assets/6922a78f-75aa-4004-af34-9343998ac6c5"
/> | <img width="2312" height="1342" alt="Screenshot 2026-02-26 at 1
17@2x"
src="https://github.com/user-attachments/assets/03c6a9c9-e814-4de2-a0d6-de86a73fa1df"
/> |
Release Notes:
- N/A
More fallout from https://github.com/zed-industries/zed/pull/49277.
Closes #50149.
Release Notes:
- Fixed remote server failing to launch on Windows.
John Tur
created
2ec2b4c
Fix and improve docs automation scripts (#50120)
Click to expand commit body
## Summary
Fixes issues discovered while running the docs automation workflow for
the first time, plus improvements based on the v0.225 run where 44
suggestions overwhelmed a single Droid invocation.
### docs-suggest-publish
- Ignore untracked files when checking for clean working directory
- Add `--auto high` flag to droid exec for non-interactive use
- Add error handling to show droid output on failure
- Remove non-existent `documentation` label from PR creation
- Use `--write` flag for prettier to fix formatting
- **Batch suggestions** into groups of 10 (configurable with
`--batch-size`) to prevent Droid from dropping suggestions when context
is too large
- **Pre-PR docs build validation** — runs `generate-action-metadata` +
`mdbook build` before creating the PR to catch invalid `{#action}` and
`{#kb}` references locally instead of waiting for CI (skippable with
`--skip-validation`)
- **Prompt guardrail** — instructs Droid not to invent `{#kb}` or
`{#action}` references, only reusing action names already present in
docs files
- **Stable release detection** — at publish time, checks each queued
PR's merge commit against the latest stable release tag. PRs already in
stable get annotated "ALREADY IN STABLE" so Droid applies content
changes without adding incorrect Preview callouts
- **Feature flag detection** — parses
`crates/feature_flags/src/flags.rs` for all feature flag struct names,
then checks each PR's diff for references. PRs behind feature flags are
skipped entirely since those features aren't generally available yet
### docs-strip-preview-callouts
- Remove non-existent `documentation` label from PR creation
- Add `Release Notes: - N/A` to generated PR body (fixes Danger bot
check)
## Context
These scripts were run for the first time as part of the v0.225 release.
Issues found:
1. The `documentation` label doesn't exist in this repo
2. Droid exec needs `--auto high` for non-interactive execution
3. Prettier needs `--write` to actually fix files (was running in check
mode)
4. Untracked files should not block the workflow
5. Sending all 44 suggestions in one Droid invocation only applied 2 —
batching in groups of 10 fixed this
6. Droid hallucinated action names (`settings::OpenSettings`,
`gpui::Modifiers::secondary_key`) that broke the docs preprocessor build
7. PRs that shipped in stable v0.225 incorrectly got Preview callouts
because the queue doesn't distinguish preview-only from
already-in-stable
8. PRs behind feature flags (subagents, git graph) got documented
despite not being generally available
Release Notes:
- N/A
morgankrey
created
3da9adc
Edit prediction: add some typescript evals, fix a teacher model failure mode (#50141)
Click to expand commit body
In some evals, the teacher produced hallucinations, seemingly due to
context rot. This makes the zeta prompt crate's budgeted rendering
usable by the teacher, so that it can truncate the list of excerpts.
I've also cleaned up the implementation of zeta_prompt's
`format_related_files_within_budget`, and changed the behavior so that
it filters the the excerpts by priority but renders the files in their
original order.
Release Notes:
- N/A
Max Brunsfeld
created
72d69d1
multi_workspace: Move up action handler and modal rendering from workspace to multi workspace (#49995)
Click to expand commit body
Now that MultiWorkspace is the root view, actions bound to the
`Workspace` key context wouldn't be dispatched when `Workspace` is not
in the key context stack (e.g. when the sidebar is focused). To fix
this, the `Workspace` key context and action handlers are moved up to
the MultiWorkspace rendering layer. This avoids introducing a new key
context and the keymap migration that would require.
This PR also moves modal rendering up a layer so modals are centered
within the window (MultiWorkspace element) instead of the Workspace
element.
### Before
<img width="3248" height="2122" alt="image"
src="https://github.com/user-attachments/assets/233a0b75-47a1-423a-8394-c6a1b50fb991"
/>
### After
<img width="3248" height="2122" alt="image"
src="https://github.com/user-attachments/assets/9c51c839-e524-4ef8-afc9-9429b028def0"
/>
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: cameron <cameron.studdstreet@gmail.com>
- Render the output only when needed, fixes the duplicate output that
can happen after opening a saved notebook.
- Vim in Jupyter View with j/k navigation across notebook cells
Release Notes:
- N/A
MostlyK
created
697e71d
multiworkspace: Disable sidebar if disable_ai is enabled (#50137)
Click to expand commit body
We don't want to show the sidebar to users if they have `disable_ai`
enabled because it's an AI focused feature. In the future if we add non
AI functionality to the sidebar we'll reenable it.
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
Anthony Eid
created
a2e34cb
agent: Implement streaming for edit file tool (#50004)
Click to expand commit body
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: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
Bennet Bo Fenner
and
Zed Zippy
created
078ab61
extension_ci: Shorten SHA length in PR titles (#50135)
Click to expand commit body
This PR shortens the length of the Git SHAs in the PR titles to 7
characters, as this is the default for short SHAs.
Release Notes:
- N/A
Finn Evers
created
4bd99a0
docs: Add small fix to the MCP page (#50134)
Closes #ISSUE
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
- [ ] 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 *or* Added/Fixed/Improved ...
Ben Kunkle
created
1a43b4b
docs: Fix content in some AI pages (#50129)
Click to expand commit body
Follow-up to https://github.com/zed-industries/zed/pull/50118.
Release Notes:
- N/A
Danilo Leal
created
a18b772
Add GPT-5.3-Codex BYOK model under the OpenAI provider (#50122)
Click to expand commit body
Adds `gpt-5.3-codex` as a built-in model under the OpenAI provider for
BYOK usage.
Model specs:
- 400,000 context window
- 128,000 max output tokens
- Reasoning token support (default medium effort)
- Uses the Responses API (like other codex models)
- Token counting falls back to the gpt-5 tokenizer
Closes AI-59
Release Notes:
- Added support for GPT-5.3-Codex as a bring-your-own-key model in the
OpenAI provider.
Documentation updates for Preview release - generated by
docs-suggest-publish
Release Notes:
- N/A
morgankrey
created
646ec5e
docs: Remove Preview callouts for stable release (#50119)
Click to expand commit body
This PR removes Preview callouts from documentation for features that
are now in Stable.
Features documented with Preview callouts are now included in the stable
release.
Generated by script/docs-strip-preview-callouts
Release Notes:
- N/A
This is a follow-up on #50027
I address my comments by adding a hash map look-up to find the selected
pending commit. I also removed the limitation where we would only retry
finding the pending commit 5 times. The pending selection is removed
when the graph is fully loaded and doesn't contain the pending commit.
This PR also cleans up some internal code structure and starts work to
enable search and propagating git log error messages to the UI.
UI wise I made the git graph item show the repository name instead of
"Git Graph" in Zed.
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
- [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: Remco Smits <djsmits12@gmail.com>
Anthony Eid
and
Remco Smits
created
046b173
agent: Improve SpawnAgentTool instructions for clarity (#50114)
Click to expand commit body
Trying to keep it from reiterating instructions
Release Notes:
- N/A
Ben Brandt
created
c9aea6f
ep: Stratify by cursor_path by default (#50111)
Click to expand commit body
Also, `ep split train=100` now means 100 lines, not 100 groups (repos or
cursor_paths).
Release Notes:
- N/A
Oleksiy Syvokon
created
706faa9
project_panel: Fix selection not updating for already-visible gitignored files (#49521)
Click to expand commit body
## Summary
- Keep auto-reveal behavior for ignored files unchanged (no implicit
reveal).
- When an ignored file is already visible in the project panel, mark it
as selected on `ActiveEntryChanged`.
- Add regression coverage for switching back to a visible gitignored
file.
## Testing
- `project_panel_tests::test_autoreveal_and_gitignored_files`
- `project_panel_tests::test_gitignored_and_always_included`
- `project_panel_tests::test_explicit_reveal`
Closes #49515
Release Notes:
- Fixed project panel not updating selection when switching to a
gitignored file that was already visible.
Efe
created
6acc1a3
Remove dead AgentGitWorktreeInfo code (#50101)
Click to expand commit body
This code was part of a series of stacked diff PRs that became obsolete
because we changed the UI design, so none of this code is necessary
anymore.
Release Notes:
- N/A
Richard Feldman
created
1b2c1b4
Fix a bug where closing the workspace could skip the dirty check for other workspaces (#50105)
Click to expand commit body
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
This PR adds the small UI change of `git diff --numstat` to the git
panel so you can see the number of additions/deletions per file. There
is an option in the settings UI for this under `git_panel`.`diff_stats`.
This option is set to `false` by default.
<!-- initial version <img width="1648" height="977" alt="Screenshot
2026-02-18 at 18 42 47"
src="https://github.com/user-attachments/assets/b8b7f07c-9c73-4d06-9734-8f1cf30ce296"
/> -->
<img width="1648" height="977" alt="Screenshot 2026-02-18 at 21 25 02"
src="https://github.com/user-attachments/assets/73257854-6168-4d12-84f8-27c9e0abe89f"
/>
Release Notes:
- Added git diff stats to git panel entries
---------
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Co-authored-by: Anthony Eid <anthony@zed.dev>
Bob Mannino
,
Danilo Leal
, and
Anthony Eid
created
f4920f4
Fix Zed panicking on invalid ranges in semantic token deltas (#50106)
Click to expand commit body
Closes ZED-59J
Release Notes:
- Fixed Zed panicking on invalid ranges in semantic token deltas
Kirill Bulatov
created
c40cc0c
extension_ci: Ensure version bump does not happen too often (#50108)
f786e04
Notify after populating MCP server IDs (#50089)
Tom Houlé
created
c235d53
agent: Support streaming tool input (#50099)
Click to expand commit body
This PR introduces a `ToolInput` struct which allows tools to receive
their inputs incrementally as they stream in. Right now no tool makes
use of the streaming APIs, will be used for the streaming edit file tool
in #50004
Release Notes:
- N/A
Bennet Bo Fenner
created
3714f31
extension_ci: Fix condition comparison type (#50100)
Click to expand commit body
No comment.
No string.
And this definitely does not spark joy.
Release Notes:
- N/A
Finn Evers
created
533cdb8
gpui(linux): Fix RefCell borrow panic when callbacks register new callbacks (#49533)
Click to expand commit body
## Summary
Fixes RefCell borrow panic on Linux (Wayland and X11) when callbacks try
to register new callbacks.
**Root cause:** Linux GPUI backends invoked callbacks while still
holding a `RefCell` borrow on the `Callbacks` struct. If a callback
tried to register a new
callback (e.g., `on_window_should_close`), it would panic with "already
borrowed: BorrowMutError".
**Bug pattern:**
```rust
// Callback runs while borrow is held - panics if callback borrows
callbacks
if let Some(ref mut fun) = self.callbacks.borrow_mut().input {
fun(input);
}
Fix: Apply the take-call-restore pattern (already used in macOS
backend):
// Take callback out, release borrow, call, restore
let callback = self.callbacks.borrow_mut().input.take();
if let Some(mut fun) = callback {
let result = fun(input);
self.callbacks.borrow_mut().input = Some(fun);
}
Changes
- Wayland (window.rs): Fixed 6 callback invocations
- X11 (window.rs): Fixed 4 callback invocations
Test plan
- cargo check -p gpui compiles successfully
- Tested on Linux (Wayland) - no more RefCell panic
Release Notes:
- Fixed a crash on Linux when window callbacks attempted to register new
callbacks
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
cardinalpointstudio
and
Claude Opus 4.5
created
ea09744
zeta2: Try to fix ep disabled in buffer bugs (#50098)
Click to expand commit body
Closes #ISSUE
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
- [ ] 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 *or* Added/Fixed/Improved ...
Ben Kunkle
created
ff83f08
python: Fix warning in injections query (#49397)
Click to expand commit body
Release Notes:
- N/A
Finn Evers
created
afadd4b
agent_server: Remove root_dir from agent server connect APIs (#50093)
Click to expand commit body
This isn't necessary and allows us to potentially share processes across
threads.
Release Notes:
- N/A
Using zoom now temporarily hides the sidebar. Unzooming reopens the
sidebar
Release Notes:
- N/A *or* Added/Fixed/Improved ...
Cameron Mcloughlin
created
54ac532
agent_servers: Use agent display_name for session titles (#50092)
Click to expand commit body
Use a separate `display_name` field (distinct from `server_name`) so
that session titles show a human-readable name. For custom agents this
resolves to the configured display name; for built-ins it falls back to
the server name.
Release Notes:
- N/A
Discussed in #6668 specifically this comment from @zackangelo:
> The biggest thing keeping me from using Zed as a daily driver is error
indication in the project panel. When I'm making big project-wide
changes I can't clearly see which files have errors (in editors like
VSCode the filenames turn red).
> VSCode seems to use a letter on the right gutter to indicate git
status and a number next to it to indicate diagnostic status. The color
indicates either.
This PR implements that, I added an opt-in `diagnostic_badges` setting
(default is false) that shows error and warning counts as colored labels
on the right side of each project panel entry. Counts bubble up to
parent directories.
When `diagnostic_badges` is enabled, diagnostic severity takes priority
over git status for entry text color.
Since warnings and git-modified share the same yellow, git status with
this option on is readable through the file icon decoration and the
absence of a number badge on the right.
Example:
<img width="522" height="785" alt="image"
src="https://github.com/user-attachments/assets/2da62580-86fe-480b-9b57-ff137ea42285"
/>
<img width="884" height="580" alt="image"
src="https://github.com/user-attachments/assets/198e9a45-dacd-4f1e-a66c-f2b84fd4db63"
/>
Release Notes:
- Added diagnostic count badges to the project panel, displaying error
and warning counts next to file names. You can modify this setting using
the `diagnostic_badges` option, which is enabled by default.
---------
Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
Davide Scaccia
and
Smit Barmase
created
13eb0f6
git_ui: Improve connection between the graph and commit views (#50027)
Click to expand commit body
- Enabled opening the Git Graph, with the corresponding commit detail
drawer open, from the commit view
- Redesigned the commit view's header and toolbar to allow addition of
the Git Graph icon button
- Redesigned icons for the Git Graph and commit view
https://github.com/user-attachments/assets/8efef60a-0893-4752-9b40-838da21ceb54
---
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 (_Git Graph is still feature flagged, so no release notes for
now_)
Danilo Leal
created
bc023b3
languages: Improve completion sorting for Python-based LSPs (#47160)
Click to expand commit body
Closes #47086
This PR detects completion items ending with `=` (which typically
represent keyword arguments in function calls provided by
`Pyright`/`BasedPyright`/`pylsp`) and assigns them the highest sorting
priority.
This ensures that when a user is filling out function arguments, the
named parameters appear at the top of the list, rather than being buried
mixed with other symbols.
After fix:
<img width="786" height="460" alt="image"
src="https://github.com/user-attachments/assets/75e94b0f-a2e7-4876-b9bd-02ad98cc8c50"
/>
> **Note on Sorting:** Currently, these named arguments will be sorted
alphabetically by label. Preserving the original order of the function
definition would be ideal, but it requires information not currently
available in this logical block. Insights on how to retrieve the
definition order would be appreciated.
> **Note on other LSPs:**
> * **`ty`**: Already provides well-sorted completions natively, so no
intervention is required.
Release Notes:
- Improved completion order for Python-based LSPs
Xin Zhao
created
6fb5109
agent_ui: Refresh agent registry when reopening page (#50078)
Click to expand commit body
Make sure we get an up-to-date list whenever you actually visit the page
Release Notes:
- N/A
This adds `debug_panel::Toggle` which is the same as
`terminal_panel::Toggle` but for the debug panel. It also moves
`debug_panel::{Toggle, ToggleFocus}` to its own `pub mod` for
consistency with other keybinds.
[Related
discussion](https://github.com/zed-industries/zed/discussions/47931#discussion-9404091)
Release Notes:
- Added `debug_panel::Toggle` to show/hide debug panel like
`terminal_panel::Toggle`