2d62837
sidebar: Ensure the projects menu is dismissed (#52494)
Danilo Leal created
2d62837
sidebar: Ensure the projects menu is dismissed (#52494)
Danilo Leal created
be6cd3e
helix: Fix insert line above/below with selection (#46492)
Fix Helix `o`/`O` behavior when a selection is active. This updates `InsertLineAbove` and `InsertLineBelow` to use the selection bounds correctly for Helix selections, including line selections whose end is represented at column 0 of the following line. It also adds Helix select-mode keybindings for `o` and `O`, and adds tests covering both line selections and selections created via `v`. Closes #43210 Release Notes: - helix: Fixed insert line above/below behavior when a full line is selected --------- Co-authored-by: dino <dinojoaocosta@gmail.com>
Josh Robson Chase and dino created
260280d
docs: Improve image display aspect ratio (#52511)
## Context Updates the image heights to auto on the docs pages, so that they don't get squishy and keep their correct aspect ratio. ## Self-Review Checklist - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - N/A
Gaauwe Rombouts created
dd0d87f
eval: Improve `StreamingEditFileTool` performance (#52428)
## Context | Eval | Score | |------|-------| | eval_delete_function | 1.00 | | eval_extract_handle_command_output | 0.96 | | eval_translate_doc_comments | 0.96 | Porting the rest of the evals is still a todo. ## Self-Review Checklist <!-- Check before requesting review: --> - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - N/A --------- Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Bennet Bo Fenner and Ben Brandt created
12bdc20
zed_agent: Pick rules file in order described in docs (#52495)
## Context This makes zed-agent prioritize rules files in the same order as is described in the docs. My order of experience was - saw in my zed agent thread `Using project "CLAUDE.md" file. - went to settings to see if I can make it use `AGENTS.md` instead. - went to [the docs](https://zed.dev/docs/ai/rules) where it specifies that AGENTS.md is be picked over CLAUDE.md. - went to source to see what went wrong ## How to Review I'm changing the order of filenames in an array - the only two places where the order matters is when picking which rules file to use. The last place it's used with an `.iter().any()`. ## Self-Review Checklist - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [ ] Tests cover the new/changed behavior - If you want the behavior tested I can, but I think it's equally hard keeping docs and tests and docs and this codepath in sync. - [x] Performance impact has been considered and is acceptable Release Notes: -Fixed agent rules files are prioritized as described in docs
Erik Funder Carstensen created
15d8660
collab_ui: Fix "lost session" visual bug in Collab Panel (#52486)
## Context
This PR fixes a UX issue ("visual bug") in the collaboration panel
documented in issue
[#51800](https://github.com/zed-industries/zed/issues/51800), where
users who had already signed in were still seeing the "Sign In" screen
after restarting the editor. As I mentioned in my response there ([Link
to comment
#4132366441](https://github.com/zed-industries/zed/issues/51800#issuecomment-4132366441)),
I have investigated the problem thoroughly and found that the session is
not actually lost.
What I discovered is that in Zed, only "staff" users automatically
connect to the collaboration servers when opening the editor (by design,
this logic is in `crates/client/src/client.rs` starting at line `962`).
Therefore, regular users keep their saved session and `Authenticated`
status, but since they don't automatically connect upon startup, the UI
didn't detect this correctly. It erroneously showed the GitHub account
request and the "Sign in to enable collaboration" text, giving the false
impression that the user had been logged out.
### Screenshots
Before (Bug)
<img width="1918" height="1031" alt="image"
src="https://github.com/user-attachments/assets/f8d2a018-14c3-41da-bd12-c5de06f0e453"
/>
After (Fix)
<img width="1918" height="511" alt="image"
src="https://github.com/user-attachments/assets/ac09f908-2ad6-44c2-8816-fd95a37db43b"
/>
**Note:** This PR specifically addresses the visual issue in the
**Collab Panel**. Similar behaviors might exist in other parts of the
editor, but this change focuses on correcting the collaboration
interface.
This current PR:
1. Improves the `render_signed_out` function in
`crates/collab_ui/src/collab_panel.rs`.
2. Simplifies the connection check using
`self.client.user_id().is_some()`, which is more robust against volatile
network states and perfectly covers connection transitions.
3. During rendering, it detects existing credentials and shows the
correct message "Connect" / "Connecting...", replacing the GitHub icon
with the appropriate network icon (`SignalHigh`).
## How to Review
- Review the cleaner and simplified code in
`crates/collab_ui/src/collab_panel.rs:render_signed_out`.
- Verify that instead of verbose validations on the `Status` enum,
simply checking the user ID correctly captures any subsequent subtype,
properly differentiating between account authorization and a simple
network reconnection.
## Self-Review Checklist
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- Fixed an issue (#51800) in the Collab Panel where the UI appeared to
log users out. Implemented improvements to properly differentiate
between "Sign In" and "Connect," avoiding false authentication prompts
when users are already logged in but not automatically connected to the
servers.
---------
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Jose Garcia and Danilo Leal created
ec6c4ed
docs: Update keybindings in `webstorm.md` (#49583)
- add Linux/Windows keybindings - use consistent spacing around the `+` in key combos Release Notes: - I don't have access to a Mac, so I haven't verified any of the macOS keybindings. I suspect some may be out of date. Please verify. - All other migration guides should be updated with Linux/Windows shortcuts, and should use consistent spacing around the `+`: - https://zed.dev/docs/migrate/vs-code#differences-in-keybindings - https://zed.dev/docs/migrate/intellij#differences-in-keybindings - https://zed.dev/docs/migrate/pycharm#differences-in-keybindings - https://zed.dev/docs/migrate/rustrover#differences-in-keybindings --------- Co-authored-by: MrSubidubi <finn@zed.dev>
Ted Robertson and MrSubidubi created
5d0934b
workspace: Show file path in bottom bar (#52381)
Context: if the toolbar and tab bar are both disabled, the current filename is not visible. This adds it to the bottom bar, similar to vim. Behind a setting, disabled by default Release Notes: - N/A or Added/Fixed/Improved ...
Cameron Mcloughlin created
a3d72e5
agent_ui: Make thread generation top-down (#52440)
Ever since we introduced the agent panel the way it is right now back in May 2025, we wanted to make the thread generation be top-down. Now, with the changes we're planning to launch very soon revolving around parallel agents, doing this become even more important for a better experience. Particularly because in the agent panel's new empty state, the message editor is full screen. We want to minimize as much as possible layout shift between writing your first prompt and actually submitting it. So this means that content will stream down from your first prompt and auto-scroll you if it goes beyond the viewport. To pull this off, we added a `follow_tail` feature directly to the GPUI list so that we could only call it in the thread view layer as opposed to doing it all there. https://github.com/user-attachments/assets/99961819-6a79-40e0-b482-dca68c829161 Release Notes: - Agent: Made the thread generation be top-down instead of bottom-up. Agent content now streams from the top and auto-scroll as they go beyond the viewport. --------- Co-authored-by: Richard Feldman <oss@rtfeldman.com>
Danilo Leal and Richard Feldman created
b7c64e5
settings_content: Fix hover descriptions for newtype wrapper settings (#51705)
Happened to notice it when debugging some stuff. I initially only caught `git_hosting_providers`, but AI found another instance. | `disable_ai` | `git_hosting_providers` | |--------|--------| | <img width="596" height="125" alt="image" src="https://github.com/user-attachments/assets/1f829a9f-9e6e-45c0-8fb1-585d3bb3cfc3" /> | <img width="634" height="207" alt="image" src="https://github.com/user-attachments/assets/be2504f4-0b52-45a5-a859-b7609a366d0e" /> | Release Notes: - Fixed an issue where some settings used the wrong documentation in LSP hover documentation
Kunall Banerjee created
ef46b31
editor: Fix `fade_out` styling for completion labels without highlights (#45936)
LSP's `CompletionItemKind` is defined by the protocol and may not have a corresponding highlight name in a language's `highlights.scm`. For example, Julia's grammar defines `@function.call` but not `@function`, so completions with `Method` kind cannot resolve a highlight. Since the mapping from `CompletionItemKind` to highlight names is an internal implementation detail that is not guaranteed to be stable, the fallback behavior should provide consistent styling regardless of grammar definitions. Bundled language extensions (e.g., Rust, TypeScript) apply `fade_out` or muted styling to the description portion of completion labels, so the fallback path and extension-provided labels should match this behavior. Previously, the description portion could fail to receive the expected `fade_out` styling in several independent cases: 1. When `runs` was empty (grammar lacks the highlight name), the `flat_map` loop never executed 2. When theme lacked a style for the `highlight_id`, early return skipped the `fade_out` logic 3. When extensions used `Literal` spans with `highlight_name: None`, `HighlightId::default()` was still added to `runs`, preventing `fade_out` from being applied The fix ensures description portions consistently receive `fade_out` styling regardless of whether the label portion can be highlighted, both for fallback completions and extension-provided labels. Closes #ISSUE Release Notes: - N/A *or* Added/Fixed/Improved ... --------- Co-authored-by: MrSubidubi <finn@zed.dev>
Shuhei Kadowaki and MrSubidubi created
d3a362c
Do not congratulate bots for their merged PRs (#52477)
I appreciate its efforts and it helps me a lot, but I do not think thanking zed-zippy in Discord is the right move to acknowledge its work. Release Notes: - N/A
Finn Evers created
4e83c75
Fix issue in `StreamingEditFileTool` with incomplete last line (#51747)
<img width="927" height="368" alt="image" src="https://github.com/user-attachments/assets/05de37f7-3034-4060-96b6-49c426170f39" /> 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: Antonio Scandurra <me@as-cii.com>
Bennet Bo Fenner and Antonio Scandurra created
c3d1f79
ci: Update workflows to prepare for Node.js 20 deprecation (#52443)
The workflow run at https://github.com/zed-industries/zed/actions/runs/23557683707 succeeded but threw some warnings for a rather-soon Node.js 20 deprecation (June 2nd). Hence, this PR updates in that context mentioned workflows to newer versions from which on the actions will use Node.js 24. Namely, this updates - `actions/checkout` - `actions/create-github-app-token` and - `peter-evans/create-pull-request` to their latest version which includes said updates. As for their most recent versions, all of these actions just updated their versions to account for said deprecation. Release Notes: - N/A
Finn Evers created
9efe3c5
markdown_preview: Refactor to use shared markdown crate (#52008)
We now use the parser and renderer from the `markdown` crate for Markdown Preview, instead of maintaining two separate code paths. How it works: `markdown_preview_view.rs` is now a consumer of `MarkdownElement`. It acts as a thin wrapper, handling things like resolving URL clicks and image URLs, which can vary between consumers. It also handles syncing the editor selection with the active block in the preview. The APIs for this are provided by `MarkdownElement`. All the heavy lifting like parsing HTML, rendering block markers on hover, handling the active block, etc. is done by `MarkdownElement`. Everything is opt-in. For example, markdown in the Agent Panel can choose not to enable block marker rendering or HTML parsing, while Markdown Preview opts into those features. Final outcome: For Markdown Preview View: - Added: - Selection support in the preview - Stays: - Syncing between editor and preview - Autoscroll - Hover and active block markers - Checkbox toggling - Image rendering - Mermaid rendering For the `markdown` crate: - No changes for existing consumers like the Agent Panel - Consumers can now opt into: - HTML rendering - Block marker rendering - Click event handling - Custom image resolvers - Mermaid rendering Release Notes: - N/A
Smit Barmase created
8eb8624
Add a setting for moving the sidebar to the right (#52457)
## Context This adds a setting for controlling the sidebar side ## Self-Review Checklist <!-- Check before requesting review: --> - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - N/A --------- Co-authored-by: Eric <eric@zed.dev>
Mikayla Maki and Eric created
efb73d7
agent_ui: Add agent connection restart controls (#52401)
Track agent connection status in the configuration UI, show a restart action for connected custom agents, and only render the External Agents menu section when entries exist. <img width="505" height="218" alt="image" src="https://github.com/user-attachments/assets/117edd94-dd06-4b1f-a530-308b7219404b" /> Release Notes: - acp: Allow for restarting agent servers from the Agent Settings panel. --------- Co-authored-by: MrSubidubi <dev@bahn.sh> Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Ben Brandt , MrSubidubi , and Danilo Leal created
3ce0cd1
Extract `language_core` and `grammars` crates from `language` (#52238)
This extracts a `language_core` crate from the existing `language`
crate, and creates a `grammars` data crate. The goal is to separate
tree-sitter grammar infrastructure, language configuration, and LSP
adapter types from the heavier buffer/editor integration layer in
`language`.
## Motivation
The `language` crate pulls in `text`, `theme`, `settings`, `rpc`,
`task`, `fs`, `clock`, `sum_tree`, and `fuzzy` — all of which are needed
for buffer integration (`Buffer`, `SyntaxMap`, `Outline`,
`DiagnosticSet`) but not for grammar parsing or language configuration.
Extracting the core types lets downstream consumers depend on
`language_core` without pulling in the full integration stack.
## Dependency graph after extraction
```
language_core ← gpui, lsp, tree-sitter, util, collections
grammars ← language_core, rust_embed, tree-sitter-{rust,python,...}
language ← language_core, text, theme, settings, rpc, task, fs, ...
languages ← language, grammars
```
## What moved to `language_core`
- `Grammar`, `GrammarId`, and all query config/builder types
- `LanguageConfig`, `LanguageMatcher`, bracket/comment/indent config
types
- `HighlightMap`, `HighlightId` (theme-dependent free functions
`highlight_style` and `highlight_name` stay in `language`)
- `LanguageName`, `LanguageId`
- `LanguageQueries`, `QUERY_FILENAME_PREFIXES`
- `CodeLabel`, `CodeLabelBuilder`, `Symbol`
- `Diagnostic`, `DiagnosticSourceKind`
- `Toolchain`, `ToolchainScope`, `ToolchainList`, `ToolchainMetadata`
- `ManifestName`
- `SoftWrap`
- LSP data types: `BinaryStatus`, `ServerHealth`,
`LanguageServerStatusUpdate`, `PromptResponseContext`, `ToLspPosition`
## What stays in `language`
- `Buffer`, `BufferSnapshot`, `SyntaxMap`, `Outline`, `DiagnosticSet`,
`LanguageScope`
- `LspAdapter`, `CachedLspAdapter`, `LspAdapterDelegate` (reference
`Arc<Language>` and `WorktreeId`)
- `ToolchainLister`, `LanguageToolchainStore` (reference `task` and
`settings` types)
- `ManifestQuery`, `ManifestProvider`, `ManifestDelegate` (reference
`WorktreeId`)
- Parser/query cursor pools, `PLAIN_TEXT`, point conversion functions
## What the `grammars` crate provides
- Embedded `.scm` query files and `config.toml` files for all built-in
languages (via `rust_embed`)
- `load_queries(name)`, `load_config(name)`,
`load_config_for_feature(name, grammars_loaded)`, and `get_file(path)`
functions
- `native_grammars()` for tree-sitter grammar registration (behind
`load-grammars` feature)
## Pre-cleanup (also in this PR)
- Removed unused `Option<&Buffer>` from
`LspAdapter::process_diagnostics`
- Removed unused `&App` from `LspAdapter::retain_old_diagnostic`
- Removed `fs: &dyn Fs` from `ToolchainLister` trait methods
(`PythonToolchainProvider` captures `fs` at construction time instead)
- Moved `Diagnostic`/`DiagnosticSourceKind` out of `buffer.rs` into
their own module
## Backward compatibility
The `language` crate re-exports everything from `language_core`, so
existing `use language::Grammar` (etc.) continues to work unchanged. The
only downstream change required is importing `CodeLabelExt` where
`.fallback_for_completion()` is called on the now-foreign `CodeLabel`
type.
Release Notes:
- N/A
---------
Co-authored-by: Agus Zubiaga <agus@zed.dev>
Co-authored-by: Tom Houlé <tom@tomhoule.com>
Nathan Sobo , Agus Zubiaga , and Tom Houlé created
3684b5a
vim/helix: Use grapheme count on replace (#51776)
Update vim and helix replace to repeat based on grapheme count instead of
byte length or Unicode scalar count.
This fixes cases where a single visible character is made up of multiple
bytes or scalars, such as decomposed characters like `e\u{301}` and emoji.
Closes #51772
Release Notes:
- Fixed vim/helix's replace action to take into consideration grapheme
count
---------
Co-authored-by: dino <dinojoaocosta@gmail.com>
Finn Eitreim and dino created
ce0848a
gpui: Fix bottom-aligned scroll bar disappearing (#51223)
Closes #51198
This actually doesn't effect any of the scrollbars in Zed, as they have
a separate handler that prevents this issue from occurring
in `crates/ui/src/components/scrollbar.rs`, line 856
```rust
let current_offset = current_offset
.along(axis)
.clamp(-max_offset, Pixels::ZERO)
.abs();
```
so it is gpui specific. I still added a test case and I have a manual
test script:
<details><summary>Details</summary>
<p>
```rust
//! Reproduction of the scrollbar-offset bug in bottom-aligned `ListState`.
//!
//! Run with: cargo run -p gpui --example list_bottom_scrollbar_bug
//!
//! The list starts pinned to the bottom. Before the fix, the red scrollbar
//! thumb was pushed off the bottom of the track (invisible).
use gpui::{
App, Bounds, Context, ListAlignment, ListState, Window, WindowBounds, WindowOptions, div, list,
prelude::*, px, rgb, size,
};
use gpui_platform::application;
const ITEM_COUNT: usize = 40;
const COLORS: [u32; 4] = [0xE8F0FE, 0xFCE8E6, 0xE6F4EA, 0xFEF7E0];
struct BugRepro {
list_state: ListState,
}
impl BugRepro {
fn new() -> Self {
let list_state = ListState::new(ITEM_COUNT, ListAlignment::Bottom, px(5000.));
Self { list_state }
}
}
impl Render for BugRepro {
fn render(&mut self, _window: &mut Window, _cx: &mut Context<Self>) -> impl IntoElement {
let state = &self.list_state;
let max_offset = state.max_offset_for_scrollbar().y;
let raw_offset = -state.scroll_px_offset_for_scrollbar().y;
let viewport_h = state.viewport_bounds().size.height;
let content_h = max_offset + viewport_h;
let thumb_h = if content_h > px(0.) {
((viewport_h / content_h) * viewport_h).max(px(20.))
} else {
viewport_h
};
let thumb_top = if max_offset > px(0.) {
(raw_offset / max_offset) * (viewport_h - thumb_h)
} else {
px(0.)
};
div()
.size_full()
.flex()
.flex_row()
.bg(rgb(0xffffff))
.text_color(rgb(0x333333))
.text_xl()
.child(
div().flex_1().h_full().child(
list(state.clone(), |ix, _window, _cx| {
let height = if ix % 4 == 0 { px(70.) } else { px(40.) };
let bg = COLORS[ix % COLORS.len()];
div()
.h(height)
.w_full()
.bg(rgb(bg))
.border_b_1()
.border_color(rgb(0xcccccc))
.px_2()
.flex()
.items_center()
.child(format!("Item {ix}"))
.into_any()
})
.h_full()
.w_full(),
),
)
.child(
div()
.w(px(14.))
.h_full()
.bg(rgb(0xe0e0e0))
.relative()
.child(
div()
.absolute()
.right(px(0.))
.top(thumb_top)
.h(thumb_h)
.w(px(14.))
.rounded_sm()
.bg(rgb(0xff3333)),
),
)
}
}
fn main() {
application().run(|cx: &mut App| {
let bounds = Bounds::centered(None, size(px(400.), px(500.)), cx);
cx.open_window(
WindowOptions {
window_bounds: Some(WindowBounds::Windowed(bounds)),
..Default::default()
},
|_, cx| cx.new(|_| BugRepro::new()),
)
.unwrap();
cx.activate(true);
});
}
```
</p>
</details>
where I was able to test it out, here is a video of the new working
behavior.
https://github.com/user-attachments/assets/02e26308-da18-418b-97fc-dd52a3325dab
Release Notes:
- gpui: fixed a bug where the scollbar would disappear when using a
bottom aligned list.
---------
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Finn Eitreim and Mikayla Maki created
0a4dfe3
sidebar: Fix space not working in the search editor (#52444)
We were using space as an alternative to `enter` for selecting thread items even while the search editor was focused. The solution here was to create a dynamic key context based on the search editor focus state. Release Notes: - N/A
Danilo Leal created
8315950
sidebar: Use last used agent when creating a new thread from it (#52446)
The "new thread" buttons as well as the `cmd-n` keybinding were resetting the agent to the Zed one instead of following the agent panel's behavior to use whatever agent was recently selected, as per the key-value store. Release Notes: - N/A
Danilo Leal created
e061fba
call: Update call location when active multi workspace changes (#52441)
## Context This fixes a participant location out of sync bug when the active workspace changes in a multi workspace. It wouldn't update the project id, which breaks following. ## Self-Review Checklist <!-- Check before requesting review: --> - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - N/A
Anthony Eid created
5f1fe65
docs: Rework Elixir docs (#52421)
## Context - Mention support for EEx templates - Rearranges a few sections (HEEx, `elixir-ls` workspace configuration) - Corrects naming of HEEx and mention that language server configurations also need to be applied to it (and EEx) - Removes unnecessary instructions for how to install `elixir-ls` - the extension has been able to do this on its own for a long time; additionally, these instructions were very macOS-specific - Demonstrates how to pass initialization options to `next-ls` and workspace configuration options to `expert` - Rewords the formatting with Mix section - all language servers already use Mix for code formatting, so these instructions are only useful if you work _without_ a language server - Adjust Tailwind LSP configuration instructions ## How to Review Check for typos and that the wording/structure of the new/reworded sections is also good. Release Notes: - N/A --------- Co-authored-by: Finn Evers <finn.evers@outlook.de>
AltCode and Finn Evers created
3183c04
extension_ci: Bump extension CLI version to `1fa7f1a` (#52437)
This PR bumps the extension CLI version used in the extension workflows to `1fa7f1a3ec28ea1eae6db2e937d7a538fb10c0c7`. Release Notes: - N/A Co-authored-by: zed-zippy[bot] <234243425+zed-zippy[bot]@users.noreply.github.com>
zed-zippy[bot] and zed-zippy[bot] created
f84af03
Remove search_on_input from docs (#52435)
## Context <img width="1610" height="394" alt="CleanShot 2026-03-25 at 15 32 24@2x" src="https://github.com/user-attachments/assets/704753d5-17c0-4857-8599-718b310211c8" /> Although search_on_input is a merged feature, it doesn't look like it's live yet. As a result, some people might be trying to activate the feature without success. This commit removes its reference from the docs. ## How to Review - Check if the feature is live before merging ## Self-Review Checklist <!-- Check before requesting review: --> - [X] I've reviewed my own diff for quality, security, and reliability - [X] Unsafe blocks (if any) have justifying comments - [X] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [X] Tests cover the new/changed behavior - [X] Performance impact has been considered and is acceptable Release Notes: - N/A
Hilder Santos created
1fa7f1a
ci: Bump runner size for extension CLI publishing job (#52433)
As of https://github.com/zed-industries/zed/pull/50750, the runner size for building the extension CLI is no longer sufficient due to the addition of the `settings_content` crate as a dependency. The [most recent workflow run](https://github.com/zed-industries/zed/actions/runs/23554506504/job/68577404831) fails while building that crate due to insufficient RAM availlable during the build. Removing the dependency is not an option, as we do want to have the validation here and need structs from the settings content crate to do so. Thus, changing the job here to a larger runner to fix the build and also build it faster. Release Notes: - N/A
Finn Evers created
7be004c
Remove some outdated comments (#52432)
These comments come from the scaffolding script for new crates, yet are no longer relevant in the given files. Thus, just removing them here to do some 🧹 Release Notes: - N/A
Finn Evers created
46120c9
Sidebar and git cleanups (#52431)
A few minor cleanups in sidebar.rs and some related areas. Release notes: - N/A
Eric Holk created
d954f78
extension_cli: Ensure extension that provide themes do not provide further features (#52272)
We generally enforce this policy already and also want this to be this way, so better to be error than sorry here. Release Notes: - N/A
Finn Evers created
72540bb
docs: Update ep docs for new bindings (#52326)
## Context Split out from https://github.com/zed-industries/zed/pull/52258, because #50136 isn't ready yet :( Need to add descriptions of how to do each example binding in the Keymap UI ## How to Review - Ensure wording/structure is good - Ensure no missing examples ## Self-Review Checklist <!-- Check before requesting review: --> - [ ] I've reviewed my own diff for quality, security, and reliability - [ ] Unsafe blocks (if any) have justifying comments - [ ] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [ ] Tests cover the new/changed behavior - [ ] Performance impact has been considered and is acceptable Release Notes: - N/A or Added/Fixed/Improved ... --------- Co-authored-by: Max <max@zed.dev> Co-authored-by: Katie Geer <katie@zed.dev>
Ben Kunkle , Max , and Katie Geer created
e63bd1a
language: Improve highlight map resolution (#52183)
This PR refactors the highlight map capture name resolution to be faster
and more predictable. Speficically,
- it changes the capture name matching to explicit prefix matching
(e.g., `function.call.whatever.jsx` will now be matched by only
`function`, `function.call`, `function.call.whatever` and
`function.call.whatever.jsx`). This matches the behavior VSCode has
- resolving highlights is now much more efficient, as we now look up
captures in a BTreeMap as opposed to searching in a Vector for these.
This substantially improves the performance for resolving capture names
against themes. With the benchmark added here for creating the
HighlightMap, we see quite some improvements:
```
Running benches/highlight_map.rs (target/release/deps/highlight_map-f99da68650aac85b)
HighlightMap::new/small_captures/small_theme
time: [161.90 ns 162.70 ns 163.55 ns]
change: [-39.027% -38.352% -37.742%] (p = 0.00 < 0.05)
Performance has improved.
Found 3 outliers among 100 measurements (3.00%)
3 (3.00%) high mild
HighlightMap::new/small_captures/large_theme
time: [231.37 ns 233.02 ns 234.70 ns]
change: [-91.570% -91.516% -91.464%] (p = 0.00 < 0.05)
Performance has improved.
HighlightMap::new/large_captures/small_theme
time: [991.82 ns 994.94 ns 998.50 ns]
change: [-50.670% -50.443% -50.220%] (p = 0.00 < 0.05)
Performance has improved.
Found 5 outliers among 100 measurements (5.00%)
5 (5.00%) high mild
HighlightMap::new/large_captures/large_theme
time: [1.6528 µs 1.6650 µs 1.6784 µs]
change: [-91.684% -91.637% -91.593%] (p = 0.00 < 0.05)
Performance has improved.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) low mild
```
For large themes and many capture names, the revised approach is much
faster.
With that in place, we can also add better fallbacks whenever we change
tokens, since e.g. a change from `@variable` to `@preproc` would
previously cause tokens to not be highlighted at all, whereas now we can
add fallbacks for such cases more efficiently. I'll add this later on to
this PR.
## Self-Review Checklist
<!-- Check before requesting review: -->
- [X] I've reviewed my own diff for quality, security, and reliability
- [ ] Unsafe blocks (if any) have justifying comments
- [ ] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [X] Tests cover the new/changed behavior
- [X] Performance impact has been considered and is acceptable
Release Notes:
- Improved resolution speed of theme highlight capture names. This might
change highlighting in some rare edge cases, but should overall make
highlighting more predicatable. Theme captures will now follow a strict
prefix matching, so e.g. function.call.decorator.jsx` will now be
matched by only `function`, `function.call`, `function.call.decorator`
and `function.call.decorator.jsx` with the most specific capture always
taking precedence.
---------
Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
Co-authored-by: Gaauwe Rombouts <mail@grombouts.nl>
Finn Evers , Piotr Osiewicz , and Gaauwe Rombouts created
b955424
Add a button to remove the plan UI (#52360)
## Context This PR adds a button to remove the plan UI, if the user wants. ## Self-Review Checklist <!-- Check before requesting review: --> - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - N/A
Mikayla Maki created
6aaf08d
ep: Change beta in deltaChrF to favor precision over recall (#52422)
Also store and print more detailed information related to this metric (precision, recall, tp/fp/fn counts) Release Notes: - N/A
Oleksiy Syvokon created
4ad582a
acp_tools: Only toggle ACP log expansion from header clicks (#50981)
Release Notes: - Added only toggle ACP log expansion from header clicks This change limits expand/collapse in open acp logs to header clicks only, instead of the entire message row. It prevents accidental expand/zoom toggles when users click or drag inside log text, making it easier to select and copy debug information. before: https://github.com/user-attachments/assets/ceea7a6c-9b6a-4a38-8926-3c43f2bfb74e after: https://github.com/user-attachments/assets/f07537b1-70f1-4537-b38a-4148a84b41c7 Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
Xiaobo Liu created
0512b72
Fix flaky terminal kill test (#52370)
## Context This test was bugging me, so I had claude take a look at it. ## Self-Review Checklist <!-- Check before requesting review: --> - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - N/A
Mikayla Maki created
a48bcf2
Bump Zed to v0.231 (#52420)
Release Notes: - N/A
Joseph T. Lyons created
f31b069
Remove Sweep Integration (#52348)
Closes #52115 ## Context Removes the third party edit prediction integration for Sweep AI ahead of their servers shutting down. This PR will not affect those who are already use or plan to use their open weighted models. The code removed by this PR was required for integrating with their proprietary API. ## Self-Review Checklist <!-- Check before requesting review: --> - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - Removed support for using the Sweep AI edit prediction provider through their proprietary API, as the servers are shutting down https://discord.com/channels/1100625416022138902/1100625417272045639/1480644297903575142, https://x.com/wwzeng1/status/2033302698360180949
Ben Kunkle created
28e521f
elixir: Fix `HEEx` name and add `EEx` defaults (#49812)
- zed-extensions/elixir#61 renames `HEEX` to `HEEx`; to prevent any disruptions from that change, this adds the correct name alongside a settings migration - zed-extensions/elixir#101 adds support for `EEx` templates; this sets the default language server to be the same as that of `Elixir` and `HEEx` This also adds a few more extensions that should be recognized as `HEEx` files Release Notes: - N/A --------- Co-authored-by: Finn Evers <finn@zed.dev>
AltCode and Finn Evers created
dbd95ea
gpui_linux: Force scene rebuild after GPU device recovery (#52389)
After GPU device recovery clears the atlas, the next frame could re-present a stale scene via the needs_present path (which skips scene rebuilding). The stale scene references texture IDs that no longer exist in the cleared atlas, causing an index-out-of-bounds panic. Fix this by setting a force_render_after_recovery flag when device recovery completes. The platform refresh loop reads this flag and passes force_render: true in RequestFrameOptions, ensuring GPUI rebuilds the scene before presenting. Fixes ZED-5QT Release Notes: - N/A or Added/Fixed/Improved ...
Lukas Wirth created
9973a34
project_panel: Add Git status indicators (#50216)
This PR adds Git status badges next to file names in the Project Panel, following my older PR #49802 These are enabled by having "git_status" true. Screenshot <img width="343" height="320" alt="image" src="https://github.com/user-attachments/assets/b2c208bf-5027-4947-a5ee-eeb74fadb02b" /> I'd love to hear feedback about any of this :) Especially feedback on these: - File name colour is determined only by Git status, the diagnostic badges remain separate. Should diagnostics also affect the filename colour? - (Unstaged) Modified files and staged modifications share the same colour, in vscode staged modifications use a brownish colour by default which I could not find the colours. I think differentiating them is definetely something to add. Release Notes - Added git status indicators in Project Panel. It can be enabled by setting `git_status_indicator` to `true` in `project_panel` settings. --------- Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
Davide Scaccia and Smit Barmase created
9f58770
agent: Add a regression test to ensure title updates do not loop (#52395)
## Context
Follow up to #52388
## How to Review
<!-- Help reviewers focus their attention:
- For small PRs: note what to focus on (e.g., "error handling in
foo.rs")
- For large PRs (>400 LOC): provide a guided tour — numbered list of
files/commits to read in order. (The `large-pr` label is applied
automatically.)
- See the review process guidelines for comment conventions -->
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
Bennet Bo Fenner created
90fa50a
go: Add semantic token rule for format string interpolations (#52394)
## Context Closes #52391 gopls sends semantic tokens for format args with [format] modifier. Without a simple support for there is no special highlighting for format args like `%s`. Its a simple change inside `go/semantic_token_rules.json` that makes this a default behavior. Currently (on 0.229 preview): <img width="1136" height="675" alt="Screenshot 2026-03-25 at 11 34 57" src="https://github.com/user-attachments/assets/cd3d9a52-6740-47b5-8f05-02514cb4f9df" /> After fix: <img width="1136" height="675" alt="Screenshot 2026-03-25 at 11 58 37" src="https://github.com/user-attachments/assets/5ec4277b-39c1-4fe1-bed5-8a6fa63c18c9" /> ## Self-Review Checklist <!-- Check before requesting review: --> - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [ ] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - gopls: Add semantic token rule for format string interpolations
Marat Fattakhov created
6d9e285
zed: Add `track-project-leak` feature for easier leak debugging (#52172)
Release Notes: - N/A or Added/Fixed/Improved ...
Lukas Wirth created
a667d9c
agent: Reduce DB load in ThreadMetadataStore (#52313)
## Context We now batch multiple db operations together if they happen very frequently (similar to how we handle it in `thread_history.rs`) ## Self-Review Checklist <!-- Check before requesting review: --> - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - N/A --------- Co-authored-by: Gaauwe Rombouts <mail@grombouts.nl>
Bennet Bo Fenner and Gaauwe Rombouts created
d09cc53
acp: Clean up archive download code (#52331)
Follow up to bzip support to clean up some of this code ## Self-Review Checklist <!-- Check before requesting review: --> - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - N/A
Ben Brandt created
b67c162
agent: Fix issues when editing thread title (#52388)
## Context Follow up to #52193 We changed this code in #52193, but moving the thread title read outside of the spawn, causes a loop of title updated events ## Self-Review Checklist <!-- Check before requesting review: --> - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [ ] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - N/A
Bennet Bo Fenner created
3d5ec54
Add .tar.bz2 archive support for ACP agent server downloads (#52188)
## Summary - Added `TarBz2` variant to `AssetKind` enum for `.tar.bz2` / `.tbz2` archives - Implemented `extract_tar_bz2` using the `bzip2` feature of `async-compression` (already a workspace dependency, just enabled the feature flag) - Wired up both streaming and file-based extraction paths in `github_download.rs` - Added `.tar.bz2` / `.tbz2` URL detection in both `LocalExtensionArchiveAgent` and `LocalRegistryArchiveAgent` This unblocks ACP registry entries (like Goose) that only ship `.tar.bz2` archives. Reference: https://github.com/block/goose/issues/8047 ## Test plan - [ ] Verify `cargo check` and `clippy` pass (confirmed locally) - [ ] Test downloading an ACP agent that ships a `.tar.bz2` archive (e.g., Goose) - [ ] Verify existing `.tar.gz` and `.zip` agent downloads still work Release Notes: - Added support for `.tar.bz2` archives in ACP agent server downloads, unblocking registry entries like Goose that only ship bzip2-compressed tarballs. --------- Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Vincenzo Palazzo and Ben Brandt created
3216126
agent: Disable update_plan for staff (#52386)
Needs some more work. Release Notes: - N/A
Ben Brandt created
72bc4dc
cloud_llm_client: Move `CompletionIntent` to `language_model` (#52359)
This PR moves the `CompletionIntent` enum from the `cloud_llm_client` crate to the `language_model` crate, as it is no longer part of the Cloud interface. Release Notes: - N/A
Marshall Bowers created