b77fb29
Fix feature request guidelines link in discussion template (#49129)
Click to expand commit body
Seems like a small oversight, or rather, we didn’t have this discussion
at that point? Either way @JosephTLyons feel free to merge once you
confirm this is the intended URL.
Closes #49119.
Release Notes:
- N/A
Kunall Banerjee
created
16dfc60
util: Always use posix_spawn on macOS even with pre_exec hooks (#49090)
Click to expand commit body
Here's some backstory:
* on macOS, @cole-miller and I noticed that since roughly Oct 2025, due
to some changes to latest macOS Tahoe, for any spawned child process we
needed to reset Mach exception ports
(https://github.com/zed-industries/zed/issues/36754 +
https://github.com/RemiKalbe/zed/commit/6e8f2d2ebe5a93753625a3026aeb996de8cb436b)
* the changes in that PR achieve that via `pre_exec` hook on
`std::process::Command` which then abandons `posix_spawn` syscall for
`fork` + `execve` dance on macOS (we tracked it down in Rust's std
implementation)
* as it turns out, `fork` + `execve` is pretty expensive on macOS
(apparently way more so than on other OSes like Linux) and `fork` takes
a process-wide lock on the allocator which is bad
* however, since we wanna reset exception ports on the child, the only
official way supported by Rust's std is to use `pre_exec` hook
* posix_spawn on macOS exposes this tho via a macOS specific extension
to that syscall `posix_spawnattr_setexceptionports_np` but there is no
way to use that via any standard interfaces in `std::process::Command`
* thus, it seemed like a good idea to instead create our own custom
Command wrapper that on non-macOS hosts is a zero-cost wrapper of
`smol::process::Command`, while on macOS we reimplement the minimum to
achieve `smol::process::Command` with `posix_spawn` under-the-hood
Notably, this changeset improves git-blame in very large repos
significantly.
Release Notes:
- Fixed performance spawning child processes on macOS by always forcing
`posix_spawn` no matter what.
---------
Co-authored-by: Cole Miller <cole@zed.dev>
Jakub Konka
and
Cole Miller
created
4f54c3e
settings: Get available audio devices lazily when first required (#49115)
Click to expand commit body
Release Notes:
- Get available audio devices lazily when first required.
Jakub Konka
created
630aadb
Fix thinking models when using non-zed providers (#49117)
Click to expand commit body
This PR #47407 broke thinking models for non-zed providers (Nightly
only) because we set `thinking_allowed` to `thinking_enabled`
(previously `true`)
[here](https://github.com/zed-industries/zed/blob/b671c8cdc5a73d49d158a84f386f8fecbfbae65a/crates/agent/src/thread.rs#L2400).
The value of `thinking_enabled` eventually comes from the
`LanguageModel::supports_thinking` function, which returns `false` for
all models except the ones coming from Zed.
This PR implements `thinking_enabled` for other providers.
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
Closes #47854
Move `disable_ai` from root settings to `ProjectSettingsContent` to
enable per-project AI configuration via `.zed/settings.json`.
- Update settings UI to allow viewing/editing at both user and project
level
- Update editor to check project-level settings for edit predictions and
context menus
- Prevent MCP servers from starting when AI is disabled at project level
Note: SaturatingBool ensures that if user globally disables AI, projects
cannot re-enable it. Projects can only further restrict AI, not grant
it.
Release Notes:
- added support for disabling AI in project settings
---------
Co-authored-by: Ben Kunkle <ben.kunkle@gmail.com>
Oliver Azevedo Barnes
and
Ben Kunkle
created
88e3954
lsp: Sanitize newlines in document and workspace symbol names (#49092)
Click to expand commit body
LSP servers may return symbol names containing newlines. Since outline
panel, breadcrumbs, and project search modal all expect single-line
items, collapse newlines before display.
- Document symbols: collapse newlines to spaces in name
- Workspace symbols: collapse newlines with `↵ ` separator for name and
container_name, preserving visual hint of original structure
Closes #ISSUE
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: Claude Opus 4.6 <noreply@anthropic.com>
Shuhei Kadowaki
and
Claude Opus 4.6
created
fc6f8d5
terminal: Fix hyperlinks not being detected correctly when preceded by box-drawing chars (#48447)
Click to expand commit body
Closes #46795
This PR aims to correctly detect the hyperlinks in cases like the
following, where box-drawing characters immediately precede the path
(without spaces in between).
```
╭─[Cargo.toml:55:1]
...
╰────
```
The only false negative with the fix in this PR would be that a file
path really contains leading box drawing characters which I think is
very unlikely.
---
Release Notes:
- Fixed an issue where the hyperlinks would not be properly detected in
the terminal if they were preceded by box-drawing characters (like ─, │,
┌, ┐)
Signed-off-by: Charlie-XIAO <yx2436@nyu.edu>
Yao Xiao
created
abaabce
file_finder: Remove project's root name from the file finder history (#46957)
Click to expand commit body
Closes #45135
Since neither the project search nor file finder search was showing
project's root name, including it in the history was unnecessary,
especially when the user had `project_panel.hide_root` set to `true`.
Release Notes:
- Made file finder to respect `project_panel.hide_root` settings
---------
Co-authored-by: Kirill Bulatov <kirill@zed.dev>
Giorgi Merebashvili
and
Kirill Bulatov
created
fee42e1
Add search_on_input setting to Project Search (#42889)
Click to expand commit body
I was really missing the ability to instantly see search results while
typing in the Project Search and decided to try and implement it.
As this may not be a feature that _everyone_ wants, I made it
toggle-able via the settings (or the settings.json)
### Settings
Set to false by default
<img width="911" height="618" alt="Screenshot 2025-11-17 at 16 17 09"
src="https://github.com/user-attachments/assets/8eaaab65-684e-4c5f-9a3c-9cb62cff0925"
/>
### settings.json
Set to false by default
<img width="396" height="193" alt="Screenshot 2025-11-17 at 16 18 21"
src="https://github.com/user-attachments/assets/90ebda95-c454-4bc5-8423-5da593832fd2"
/>
### Video demo:
https://github.com/user-attachments/assets/715d6b77-3a61-45f8-8e1a-9bd880c697c3
- Search input is debounced with 250ms in this mode (cool?)
The desire for this feature has been expressed here too:
https://github.com/zed-industries/zed/discussions/30843
Release Notes:
- Enabled project search on input. Can be turned off with
`search.search_on_input` settings toggle.
We had a call to `BlockMap::unfold_intersecting` that ended up
recomputing the entire block map for the RHS _without_ spacers, only to
throw it away in favor of the version with spacers a few lines down. Now
we only sync each block map once in `set_companion`.
Release Notes:
- Improved performance when toggling from the unified diff to the split
diff.
Co-authored-by: Jakub <jakub@zed.dev>
Co-authored-by: Cameron McLoughlin <cameron.studdstreet@gmail.com>
Cole Miller
,
Jakub
, and
Cameron McLoughlin
created
3cd051a
terminal: Normalize path-like targets with leading `..` (#47289)
Click to expand commit body
Fixes #28339
## What
- Normalize cwd-relative path-like targets that include leading `..`
before worktree lookup.
- Update issue #28339 tests to expect `WorktreeExact` for local and
remote resolution.
## Why
- Prevent terminal links like `../foo/bar.txt` from creating invalid
entries; resolve to the correct worktree file instead.
## How to test
- `cargo test -p terminal_view issue_28339 -- --nocapture`
- Manual: open a workspace, run `echo ../foo/bar.txt` from a subdir in
the terminal, then cmd/ctrl-click and confirm the correct file opens.
## Risk
- Low: only changes terminal path-like resolution for `..` paths;
expected to match normalized behavior.
## Checklist
- [x] Tests run (`cargo test -p terminal_view issue_28339 --
--nocapture`)
- [x] Docs updated (not needed)
- [x] Backwards compatibility considered
Release Notes:
- Fixed an issue where relative paths starting with `..` would not resolve correctly when clicking the link in the terminal
---------
Co-authored-by: Ben Kunkle <ben.kunkle@gmail.com>
Thanh Nguyen
and
Ben Kunkle
created
b50de99
linux: Fix desktop entry pointing to wrong binary in manual install docs (#49109)
Click to expand commit body
Follow-up to #21137
The manual install instructions in `linux.md` set `Exec=` to
`libexec/zed-editor` (main binary) instead of `bin/zed` (cli).
Using `zed-editor` directly throws "zed is already running" error and
files won't open from the file explorer. The "Open a new workspace"
right-click option on the desktop entry also doesn't work correctly.
Release Notes:
- N/A
Smit Barmase
created
46b986c
Fix 'no thread found' error when restoring agent thread on workspace open (#49045)
Click to expand commit body
When the multi-workspace thread restoration feature serializes the
active thread's session ID, it includes empty threads that were never
persisted to the database (because `NativeAgent::save_thread` skips
empty threads). On restart, `AgentPanel::load()` tries to restore this
thread by calling `load_agent_thread()`, which queries the SQLite DB.
Since the empty thread was never saved, the query returns `None`, which
becomes the error: "no thread found with ID: SessionId(...)". This shows
as "Error Loading Zed Agent" / "Failed to Launch" in the UI.
**Fix:**
Before attempting to restore a serialized thread on panel load, query
the DB to verify the thread actually exists. If it doesn't, log an error
and skip restoration (the panel falls back to creating a new thread as
normal).
Closes AI-19
Release Notes:
- Fixed an "Error Loading Zed Agent" error that could appear when
opening a workspace where the previous agent thread was empty.
Richard Feldman
created
b17ffdb
git: Fix misalignment in the split diff when inlays fall at the end of an excerpt (#49078)
Click to expand commit body
- [x] Tests or screenshots needed?
- [ ] Code Reviewed
- [x] Manual QA
Release Notes:
- Fixed misalignment of lines in the split diff when using inlay hints.
Opening project settings now selects active project instead of any open
one by using worktree id matching the behavior of opening project
settings file.
<details>
<summary>Before</summary>
https://github.com/user-attachments/assets/8bf9a6cb-06e4-48fc-bf47-429e51ef9d27
</details>
<details>
<summary>After</summary>
https://github.com/user-attachments/assets/d8f5c69d-796c-4eb6-90c7-4ecb8951a1d1
</details>
Release Notes:
- Fixed an issue where the active project would not be opened in the
settings UI with `zed: open project settings`
Accidentally committed the feature flag change in
https://github.com/zed-industries/zed/pull/49100 as I had it turned to
true for local testing. This PR makes it turned off to staff again,
sorry!
Release Notes:
- N/A
Danilo Leal
created
337311b
linux: Name desktop file correctly during bundle (#45508)
Click to expand commit body
Closes #45507
There have been 5+ PRs attempting to fix Linux desktop icon association
by adding `StartupWMClass` back to the `.desktop.in` template (#15763,
#20644, #23459, #33019, #37962), all closed because `StartupWMClass` is
an X11-specific key that GNOME happens to misuse on Wayland, and the
correct fix per the FreeDesktop spec is to name the `.desktop` file to
match the app's Wayland `app_id` / X11 `WM_CLASS`. Refer:
https://github.com/zed-industries/zed/issues/12707#issuecomment-2168742761
The root cause is that `bundle-linux` was never updated to produce the
correct filename in the tarball. The only consumers of the tarball's
desktop file are `install.sh` and manual extractors. So this fix is for
people who download the tarball and extract it without `install.sh`. The
docs already tell them to rename, but as @wcbing points out, not
everyone reads that carefully.
We are now making `bundle-linux` produce the correctly named desktop
file from the start.
Release Notes:
- N/A
---------
Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
This PR adds a `CircularProgress` component, soon to be used in the
agent panel!
<img width="500" height="434" alt="Screenshot 2026-02-13 at 10 59@2x"
src="https://github.com/user-attachments/assets/3e64aa93-f63e-4abc-bf88-063e10a02389"
/>
Release Notes:
- N/A
Danilo Leal
created
81ec5b7
workspace: Fix remote project buttons sharing same element ID on welcome page (#49096)
Click to expand commit body
Closes #49083
This issue was caused by remote projects on the welcome page sharing the
same ID, as they all used the "Remote Project" label. Additionally, the
tab size was hardcoded to 10, which caused the tab navigation to break.
This PR assigns unique IDs and removes the hardcoded limitation.
- [x] locally checked the click behavior
- [x] self-review done
Release Notes:
- Fixed Welcome page remote projects not responding correctly when
clicked.
Xin Zhao
created
8afc673
git_ui: Fix graph icon button design in the panel (#49099)
Click to expand commit body
Adding the Git Graph icon and adjusting button sizing, spacing, and
positioning within the Git panel.
Release Notes:
- N/A
Danilo Leal
created
51d34a5
agent_ui: Fix max tokens error not being shown (#49098)
Click to expand commit body
Closes #ISSUE
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:
- Fixed an issue where no error was shown when an LLM request exceeded
the maximum tokens supported by the model
Bennet Bo Fenner
created
c093590
ep: Fix panic when merging events from different buffers (#49097)
Click to expand commit body
Release Notes:
- N/A
Oleksiy Syvokon
created
771457f
workspace: Enable adding a recent project to current workspace from modal (#49094)
Click to expand commit body
This PR adds the ability to, within the Recent Projects modal/popover,
quickly add a project in the recent projects section to the current
workspace. Note that this is currently limited to local projects only.
https://github.com/user-attachments/assets/6b72af11-9c94-45d3-a7df-76869b942727
Release Notes:
- Workspace: Enabled quickly adding a recent project to the current
workspace.
Mistral Vibe, the official coding agent from Mistral, sets the
x-affinity header to the session ID to enable prompt caching. This patch
implements the same mechanism, resulting in a faster agent loop.
Release Notes:
- Added prompt caching for Mistral AI.
Vianney le Clément de Saint-Marcq
created
7687e1f
settings: Await config worktree before opening settings.json (#47199)
Click to expand commit body
Closes #47007
Release Notes:
- Fixed await config worktree before opening settings.json
ensures that the worktree creation is awaited before attempting to open
the settings file.
Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
Xiaobo Liu
created
49dee40
agent: Skip empty assistant messages for Mistral provider (#47579)
Click to expand commit body
This small change *may* help with #39211, #35025 or #39031 although I'm
not positive it will fix it entirely. At a minimum, it should prevent
sending invalid requests to the Mistral API, which return a 400 error
and can prevent the thread from progressing if it gets stuck in a retry
loop.
This should prevent sending a message like `{ "role": "assistant",
"content": "" }` if for some reason the thread contains a message with
an empty text content and no tool calls.
Some users (including myself) have encountered this with the Devstral 2
models, although it doesn't seem trivial to reproduce:
https://github.com/zed-industries/zed/issues/37021#issuecomment-3728902562
When it occurs, error logs look something like this:
```
2026-01-24T19:53:35-08:00 ERROR [crates/agent/src/thread.rs:984] invalid type: string "Failed to connect to Mistral API: 400 Bad Request {\"object\":\"error\",\"message\":\"Assistant message must have either content or tool_calls, but not none.\",\"type\":\"invalid_request_assistant_message\",\"param\":null,\"code\":\"3240\"}", expected struct EditFileToolOutput
2026-01-24T19:53:35-08:00 ERROR [crates/agent/src/thread.rs:984] invalid type: string "Failed to connect to Mistral API: 400 Bad Request {\"object\":\"error\",\"message\":\"Assistant message must have either content or tool_calls, but not none.\",\"type\":\"invalid_request_assistant_message\",\"param\":null,\"code\":\"3240\"}", expected struct EditFileToolOutput
2026-01-24T19:53:35-08:00 ERROR [crates/agent/src/thread.rs:984] invalid type: string "Failed to connect to Mistral API: 400 Bad Request {\"object\":\"error\",\"message\":\"Assistant message must have either content or tool_calls, but not none.\",\"type\":\"invalid_request_assistant_message\",\"param\":null,\"code\":\"3240\"}", expected struct EditFileToolOutput
```
Release Notes:
- Fixed agent sometimes sending invalid messages to Mistral API
Ian Chamberlain
created
c981245
ep: Don't run predictions for excerpts with special tokens (#49040)
Click to expand commit body
Release Notes:
- N/A
Oleksiy Syvokon
created
13a9386
language_models: Add image support for Bedrock (#47673)
Click to expand commit body
Closes #N/A (no existing issue - implemented to enable image input for
Bedrock models)
This PR enables the "@" image mention feature for Bedrock models that
support vision capabilities.
**Changes:**
- Added `supports_images()` method to Bedrock `Model` enum
- Wired up image support in the Bedrock language model provider
- Added `MessageContent::Image` handling to convert base64 images to
Bedrock's expected format
- Added tool result image support
**Supported models:** Claude 3/3.5/4 family, Amazon Nova Pro/Lite, Meta
Llama 3.2 Vision, Mistral Pixtral
Release Notes:
- Added image input support for Amazon Bedrock models with vision
capabilities
gitarth
created
c131713
Fix Conda activation error appearing during task execution (#48736)
Click to expand commit body
Closes #48732
- [X] Tests or screenshots needed?
- [X] Code Reviewed
- [X] Manual QA
The fix enables interactive mode during task execution, resolving the
Conda activation error. However, enabling this mode adds some overhead.
In my environment, the task startup time increased by approximately 1
seconds due to the loading of ~/.zshrc.
[录屏 2026-02-08
23-49-53.webm](https://github.com/user-attachments/assets/4064e366-b0d2-4a8c-9599-c4108e76af9f)
Release Notes:
- Fixed conda activation error appears during task execution.
feeiyu
created
a6653f0
language: Respect combined injection sub-ranges for language queries (#48522)
Click to expand commit body
Follow-up to https://github.com/zed-industries/zed/pull/41111.
PR #41111 introduced combined injection handling, but cursor language
queries still relied on layer range selection alone. For combined
injections this can surface a language from the outer combined layer
even when the cursor is outside that language's actual included
sub-range. So, we just need to add sub-range filtering based on
anchor-aware boundary checks in the same way we did in the previous PR.
That means: apply it in `Buffer::language_at`,
`Buffer::languages_at`, and `BufferSnapshot::language_scope_at`. All
places that rely on the described behavior.
I also added some additional test cases for the `HTML+ERB` lang to
verify language resolution for HTML and Ruby positions.
Thank you!
Closes https://github.com/zed-industries/zed/issues/48358
Release Notes:
- Respect combined injection sub-ranges for language queries
Vitaly Slobodin
created
0c29a09
editor: Fix soft wrap premature wrapping with certain fonts (#45206)
Click to expand commit body
Closes #45107
Release Notes:
- Fixed soft wrap prematurely wrapping with certain fonts
---------
Co-authored-by: Lukas Wirth <lukas@zed.dev>
Mayank Verma
and
Lukas Wirth
created
856ba20
markdown_preview: Add Mermaid Diagram Support (#49064)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/10696
Adds support for rendering Mermaid diagrams in the markdown preview
using
[mermaid-rs-renderer](https://github.com/1jehuang/mermaid-rs-renderer)
(with [a
patch](https://github.com/1jehuang/mermaid-rs-renderer/pull/35)).
- Renders mermaid diagrams on background task
- Shows the previously cached image while re-computing
- Supports a scale parameter i.e. default 100
- Falls back to raw mermaid source code when render fails
<img width="1512" height="897" alt="image"
src="https://github.com/user-attachments/assets/9157625d-bb62-402f-8a8b-517f28d43f95"
/>
Release Notes:
- Added mermaid diagram rendering support to the markdown preview panel.
---------
Co-authored-by: oscarvarto <contact@oscarvarto.mx>
Co-authored-by: oscarvarto <oscarvarto@users.noreply.github.com>
Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
Smit Barmase
,
oscarvarto
,
oscarvarto
, and
Piotr Osiewicz
created
Release Notes:
- N/A
---------
Co-authored-by: Lena <241371603+zelenenka@users.noreply.github.com>
Mikayla Maki
and
Lena
created
e4ea8ae
docs: Add note about escaping `$` in snippets (#48710)
Click to expand commit body
In writing PHP snippets, I ran into this issue and only discovered this
has to be done through reviewing examples of other PHP snippets.
I think it would be useful to include some mention of this behavior in
the documentation - although I'm not great at writing docs and not sure
if this is the best place or way to write this out.
Open to any feedback on this or perfectly okay if maintainers find this
unnecessary.
Release Notes:
- N/A
---------
Co-authored-by: Kunall Banerjee <hey@kimchiii.space>
CJ Pokowitz
and
Kunall Banerjee
created
9081af8
Tweak stalebot (words, number of days) (#48603)
Click to expand commit body
While the 60 days of inactivity works for a lot of the issues, with
other (more stubborn and popular) bugs it's too noisy to nag people
every eight weeks.
Also changing days-before-close after seeing a few cases of people
getting back to us after more than two weeks since the bot's question.
Release Notes:
- N/A
Lena
created
af8ea0d
gpui: Remove blade, reimplement linux renderer with wgpu (#46758)
Click to expand commit body
The blade graphics library is a mess and causes several issues for both
Zed users as well as other 3rd party apps using GPUI. This PR removes
blade and implements the linux platform using `wgpu` which is the
de-facto standard in the rust UI and graphics ecosystem. This will not
just fix [issues that Zed users have
today](https://github.com/YaLTeR/niri/issues/2335), but also profit from
wgpu improvements in the futures, from other projects contributing (such
as the bevy game engine, Iced, or pretty much every other relevant
project).
This will close several related issues on the zed repo as well. See
https://github.com/zed-industries/zed/issues?q=frozen%20nvidia%20linux
(probably not all of them, have only tested the freeze on nvidia and
Smithay-based wayland compositors).
Some related issues:
https://github.com/zed-industries/zed/issues/44814
https://github.com/zed-industries/zed/issues/40481
https://github.com/YaLTeR/niri/issues/2335
https://github.com/zortax/zlaunch/issues/15
Would appreciate feedback if this is something the zed maintainers would
be interested in.
Release Notes:
- N/A
---------
Co-authored-by: John Tur <john-tur@outlook.com>
Leonard Seibold
and
John Tur
created
8249ef5
repl: Initial stdin support for kernels (#48851)
Click to expand commit body
Support stdin from Jupyter kernels AKA `input()` and `getpass()` in
IPython.
<img width="460" height="380" alt="image"
src="https://github.com/user-attachments/assets/3b26457f-d651-4514-94b4-8cbb6ff52003"
/>
<img width="391" height="243" alt="image"
src="https://github.com/user-attachments/assets/255bd388-5622-4521-ab93-f9ef7fe861aa"
/>
Closes #22746
Release Notes:
- Added STDIN support (`input` / `raw_input`) to REPL
Kyle Kelley
created
0b8424a
Remove deprecated GPT-4o, GPT-4.1, GPT-4.1-mini, and o4-mini (#49082)
Click to expand commit body
Remove GPT-4o, GPT-4.1, GPT-4.1-mini, and o4-mini from BYOK model
options in Zed before OpenAI retires these models.
These models are being retired by OpenAI (ChatGPT workspace support ends
April 3, 2026), so they have been removed from the available models list
in Zed's BYOK provider.
Closes AI-4
Release Notes:
- Removed deprecated GPT-4o, GPT-4.1, GPT-4.1-mini, and o4-mini models
from OpenAI BYOK provider
Richard Feldman
created
20ed142
Revert "Default agent panel to left dock when multi-workspace is enabled" (#49080)
Click to expand commit body
Reverts zed-industries/zed#49034
This proved to be a bit disruptive, we should re-land once we have more
of the pieces together.
Release Notes:
- N/A
Mikayla Maki
created
69a2ea3
Fix document highlight data issues (#49079)
Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/48780
Fixes incorrect multi byte characters treatment in the symbol range when
highlighting:
<img width="1728" height="507" alt="image"
src="https://github.com/user-attachments/assets/c6639220-f08a-4ea8-bf99-926566e356ae"
/>
Fixes multiple language servers' duplicate data display:
<img width="1726" height="925" alt="image"
src="https://github.com/user-attachments/assets/ca98ee29-732e-4c8e-adf4-21a9523a5a9c"
/>
Release Notes:
- N/A
Kirill Bulatov
created
4fefc6f
Fix discard not reloading buffer from disk (#48936)
Click to expand commit body
Closes #48308.
Before:

After:

Release Notes:
- Fixed file changes not being discarded when closing a tab with "Don't
Save" or "Discard all".
Tom Planche
created
1a49170
devcontainer: Fix OpenDevContainer action panic due to double workspace entity lease (#49058)
Click to expand commit body
Closes #49055
**Heads up**: This might be a naïve solution. I ran into the issue after
merging latest main into
https://github.com/zed-industries/zed/pull/48896, and confirming that it
was unrelated to that PR and incoming from upstream.
Agent one-shot the fix, it works and tests pass. But I'm still wrapping
my head around the changes that led to the bug. I figured the breakage
is bad enough (I couldn't open devcontainers at all) to submit a
possibly naïve fix.
## Fix
Hoists the `find_devcontainer_configs` call out of `new_dev_container`
and into the call site, where we already have a direct `&mut Workspace`
reference that doesn't go through the entity map. The computed configs
are passed into `new_dev_container` as an argument.
## What was happening
After #48800 ("Re-add MultiWorkspace"), `with_active_or_new_workspace`
nests a `Workspace` entity lease inside a `MultiWorkspace` entity lease.
The `OpenDevContainer` handler was also changed from async to sync in
the same PR, so `RemoteServerProjects::new_dev_container` now runs while
`Workspace` is leased. Inside `new_dev_container`, a
`WeakEntity<Workspace>::read_with` call tries to read `Workspace`
through the entity map, finds it already leased, and panics.
Release Notes:
- Fixed a panic when opening the dev container modal via the
`OpenDevContainer` action.
Oliver Azevedo Barnes
created
aa4e1b4
Separate accepted edit predictions in edit history (#49056)
Click to expand commit body
Release Notes:
- N/A
---------
Co-authored-by: Ben Kunkle <ben@zed.dev>
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Oleksiy Syvokon
,
Ben Kunkle
, and
Max Brunsfeld
created
This PR uses the already-existing `ListSubHeader` component for the
section subheader as opposed to a custom label.
<img width="350" height="942" alt="Screenshot 2026-02-12 at 8 30@2x"
src="https://github.com/user-attachments/assets/a86ce59d-9d3b-4b10-87c8-69da1469743d"
/>
- [x] Code Reviewed
- [x] Manual QA
Release Notes:
- N/A
Danilo Leal
created
cabf404
git_graph: Open graph from Git Panel and Commit Historic view from Git Graph rows (#48842)
Click to expand commit body
Release Notes:
- N/A (still featured flag)
Operations as follows:
1. Click to select
2. Double-click to open diff
Operation demo:
https://github.com/user-attachments/assets/15e583c1-37ea-4166-972d-d2247b9c5fff
---------
Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
Co-authored-by: Anthony Eid <anthony@zed.dev>
Xiaobo Liu
and
Anthony Eid
created
d453d95
Suppress agent popup notification when status is already visible (#49044)
Click to expand commit body
If you have Zed open and the sidebar open, don't show a notification
when a thread finishes.
Closes AI-18
(No release notes because multi-agent is still feature-flagged.)
Release Notes:
- N/A
Richard Feldman
created
f39e3fb
Fix agent panel closing unexpectedly when zoomed (#49037)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/33430
Two changes:
1. Fix `observe_global_in` to not permanently remove observers when the
window is transiently unavailable (e.g. temporarily taken during a
nested update). Previously this returned false and silently removed the
observer from the subscriber set. Now it checks whether the entity is
actually dropped before removing — if the entity is alive but the window
is just unavailable, it keeps the observer alive.
2. Extend `dock_to_preserve` in `handle_pane_focused` to also preserve
docks whose active panel has focus, not just docks whose panel's inner
pane matches the focused pane. Panels like `AgentPanel` don't implement
`pane()` (only panels like `TerminalPanel` that contain panes do), so
the existing preservation logic never identified the agent panel's dock
as needing protection. This meant that when the agent panel was zoomed
and a center pane received focus (e.g. during macOS window activation
events), `dismiss_zoomed_items_to_reveal` would close the dock, making
the panel disappear unexpectedly.
Closes AI-16
Release Notes:
- Fixed agent panel unexpectedly closing when zoomed and the window
regains focus.
Richard Feldman
created
9446eef
Preserve panel zoom state across workspace switches (#49069)
Click to expand commit body
When the agent panel (or any dock panel) is open and
fullscreened/zoomed, switching to a different workspace in the sidebar
and then switching back caused the panel to close. It should remain both
open and zoomed.
The root cause was in `MultiWorkspace::focus_active_workspace()` — it
always focused the center pane of the active workspace. This triggered
`dismiss_zoomed_items_to_reveal(None)`, which closed any zoomed dock
panel (the same behavior as when a user intentionally clicks away from a
zoomed panel).
The fix checks if any dock has a zoomed panel before deciding what to
focus. If a zoomed panel exists, it focuses that panel instead of the
center pane, preventing the dismiss logic from firing.
Closes AI-22
Release Notes:
- Fixed panels losing their fullscreen state when switching between
workspaces.
Richard Feldman
created
65027dd
Handle newlines better in parse_edits (#48960)
Click to expand commit body
Release Notes:
- Fix a potential crash around multibyte characters in edit predictions
---------
Co-authored-by: Ben Kunkle <ben@zed.dev>
Eric Holk
and
Ben Kunkle
created
44015e0
Fix semantic highlights not cleared when disabled in settings (#49066)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/49060
Release Notes:
- Fixed semantic highlights not cleared when disabled in settings