Commit log

a8d0cdb project_panel: Improve wording around file deletion (#43801)

Click to expand commit body
Make it clear in the UI that "Delete" of file or folder is permanent
action.
For example in windows explorer and VS Code "Delete" means move to
trash.

Or maybe also remove permanent delete from the context menu completely
and allow it only through keyboard shortcut, like it's in Windows
Explorer, VS Code and KDE Dolphin file manager.

Release Notes:

- Improved wording within file deletion prompts in the projetct panel.

---------

Co-authored-by: MrSubidubi <finn@zed.dev>

AdamJedl and MrSubidubi created

4bd1a09 editor: Fix bracket colorization with folds and large functions (#51108)

Click to expand commit body
Closes #47846

`visible_excerpts` computed the visible buffer range by adding display
line count directly to the buffer start row:

```rust
// Before
multi_buffer_visible_start + Point::new(visible_line_count, 0)
```
This ignores folds entirely. When a 700-line function is folded into one
display line, content after the fold is visible on screen but falls
outside the computed buffer range, so its brackets are never colorized.

The fix converts through display coordinates so the fold/wrap layers are
respected:

```rust
// After
let display_end = DisplayPoint::new(display_start.row + visible_line_count, 0);
let multi_buffer_visible_end = display_end.to_point(&display_snapshot);
```

### Results

**Before Fix**
<img width="852" height="778" alt="스크린샷 2026-03-10 오후 8 29 10"
src="https://github.com/user-attachments/assets/a0d2d81f-a8b2-4cf4-b1f3-cf5f8288a696"
/>

**After Fix**
<img width="1031" height="794" alt="스크린샷 2026-03-10 오후 8 32 27"
src="https://github.com/user-attachments/assets/2b0496b1-8302-4248-b73a-c31f5d0b0c4b"
/>

Before you mark this PR as ready for review, make sure that you have:
- [X] Added a solid test coverage and/or screenshots from doing manual
testing
- [ ] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- Fixed bracket colorization not working for content after folded
regions and for functions with large bodies.

---------

Co-authored-by: Kirill Bulatov <kirill@zed.dev>

Lee ByeongJun and Kirill Bulatov created

86b5e92 docs: Fix incorrect binary name for `visual_test_runner` (#51153)

Click to expand commit body
Fix binary name in macOS's development guide.

Closes #51151

Release Notes:

- N/A

Anikesh kumar created

2ddb1e6 agent_ui: Add archive view to the sidebar (#51336)

Click to expand commit body
This PR adds a button to the bottom of the sidebar that opens the
archive view, which at the moment, only shows the same, uncategorized
thread list available in the regular agent panel's history view.

Release Notes:

- N/A

---------

Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Co-authored-by: Bennet Bo Fenner <53836821+bennetbo@users.noreply.github.com>
Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>

Danilo Leal , Bennet Bo Fenner , Bennet Bo Fenner , and Zed Zippy created

edc8255 docs: Add Vue language server configuration (#51356)

Click to expand commit body
Follow-up to https://github.com/zed-extensions/vue/pull/87.

Release Notes:

- N/A

Kunall Banerjee created

4842e09 editor: Skip `stop_at_indent` for single-line editors (#50681)

Click to expand commit body
In single-line editors like the Find bar, MoveToBeginningOfLine with
stop_at_indent should go directly to column 0 instead of stopping at the
indentation level.

Closes #50634

Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zedindustries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- Fixed `MoveToBeginningOfLine` stopping at indentation in single-line
editors like the Find bar instead of moving to column 0.

Viraj Bhartiya created

7b69324 Truncate long diagnostic messages in the status bar (#51031)

Click to expand commit body
Closes #50186

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)

## Screenshots:
### Before:
<img width="2543" height="39" alt="image"
src="https://github.com/user-attachments/assets/5e9fb7c5-0ba6-44b5-a0f6-1f63b35550f6"
/>

### After:
<img width="1165" height="581" alt="image"
src="https://github.com/user-attachments/assets/903bc637-7d38-48c5-9207-30e12eaa40de"
/>

Release Notes:

- Fixed long diagnostic messages in the status bar pushing right-side
buttons (terminal, agent, etc.) off screen

João Soares created

8e78b9f Fix window drags when dragging button/input on titlebar in macOS (#51400)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/27500

This PR fixes an issue on macOS where dragging title bar buttons and
other UI elements would drag the window instead of no-op, like in native
Mac apps. That made interactions like selecting text with the mouse
impossible in those areas, including the title input in Rules Library.

We don't want to handle this at GPUI level, since you might still want
this dragging behavior while having no native titlebar for some apps,
and without implementing your own handler. So, we just handle this for
Zed.

On macOS, we now set `is_movable: false` on all windows, which disables
that drag-anything behavior and relies on the native window drag handler
for window dragging instead.

This also meant implementing a platform title bar for the sidebar in
Rules Library, since dragging there was previously handled by the
`is_movable` behavior. We already had a full-width platform title bar
there on other platforms. On macOS, it is sidebar-only to keep existing
design.
  
Release Notes:

- N/A

Smit Barmase created

9ddf672 project: Fix semantic tokens coloring deleted diff hunks (#51386)

Click to expand commit body
Release Notes:

- N/A *or* Added/Fixed/Improved ...

Lukas Wirth created

47cc0ba agent_ui: Add keybinding to cycle through new thread location options & settings (#51384)

Click to expand commit body
This PR adds the ability to save in the settings whether new threads
should start in the current project or in a new Git worktree.
Additionally, it also adds a keybinding that allows cycling through the
menu options easily, with the ability to use cmd-click/enter to choose
which one is set as the default.

No release notes because this feature/settings depends on a feature flag
that isn't out yet.

Release Notes:

- N/A

Danilo Leal created

314b7e5 debugger: Fix restart only working once per session (#51247)

Click to expand commit body
`Session::restart_task` is set to `Some` when a restart is initiated but
never cleared back to `None`. The guard at the top of `restart()` checks
`self.restart_task.is_some()` and returns early, so only the first
restart attempt succeeds.

This primarily affects debug adapters that advertise
`supportsRestartRequest` dynamically via a `CapabilitiesEvent` after
launch, such as the Flutter debug adapter.

Related: https://github.com/zed-extensions/dart/issues/45

Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
(N/A — no UI changes)

Release Notes:

- debugger: Fixed debug session restart only working once when the
adapter supports DAP restart requests.

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Anthony Eid <anthony@zed.dev>

Nelson Campos , Claude Opus 4.6 (1M context) , and Anthony Eid created

e0881e3 python: Add `label_for_symbol` for ty adapter (#51355)

Click to expand commit body
Ported `label_for_symbol` logic directly from the basedpyright adapter
without adjustments.

Given Python's dynamic nature, the current implementation provides
sufficient coverage. No further modifications are needed for now.

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:

- Fixed missing syntax highlighting in symbol search when using the ty
language server.

Xin Zhao created

d28fc4e agent_ui: Register native agent when creating agent panel (#51379)

Click to expand commit body
This ensures that in places like the inline assist we can just rely on
it being available.

Release Notes:

- N/A

Bennet Bo Fenner created

3bcef8b agent_ui: Rename `ExternalAgent` to `Agent` (#51377)

Click to expand commit body
Name is confusing, since the `NativeAgent` variant is not an external
agent

Release Notes:

- N/A

Bennet Bo Fenner created

efc6b0c gpui: Add `aspect-ratio` builder method to `Styled` (#48751)

Click to expand commit body
# Summary
This PR simply adds the missing `aspect_ratio` and `aspect_square`
helper functions to the `Styled` trait.

Release Notes:

- N/A

Co-authored-by: MrSubidubi <finn@zed.dev>

Sebastian Kootz and MrSubidubi created

3972104 Add missing ctrl-shift-g binding for editor::UndoSelection to the JetBrains/IntelliJ keymap on macOS (#51130)

Click to expand commit body
## Description:

This PR adds the missing `ctrl-shift-g` binding for
editor::UndoSelection to the JetBrains/IntelliJ keymap on macOS.

## Problem

In IntelliJ IDEA, when using multiple cursors:
- ctrl+g (macOS) adds the next occurrence to the selection
- ctrl+shift+g (macOS) removes the last added occurrence from the
selection

The current Zed JetBrains keymap has `ctrl-g` for SelectNext but is
missing the corresponding `ctrl-shift-g` for undoing/removing the last
selection.

## Reference

- Press Ctrl+G (macOS) to find and select the next occurrence
[link](https://www.jetbrains.com/help/idea/multicursor.html#multiple_words)

- To remove selection from the last selected occurrence, press
Ctrl+Shift+G (macOS)
[link](https://www.jetbrains.com/help/idea/multicursor.html#multiple_words)


This change improves parity with IntelliJ for users transitioning to
Zed.


### Demo 

https://github.com/user-attachments/assets/0c7f699f-697d-4b81-a929-53f765d254d8

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
- [X] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- JetBrains macOS bindings: added the missing `ctrl-shift-g` binding for
`editor::UndoSelection`

Daniel Eichman created

9e50ee0 agent: Thread switcher sticky workspace header (#51372)

Cameron Mcloughlin created

1fd8ee7 Fix Tree-sitter link in documentation (#51370)

Henrique Ferreiro created

ff89bcf Fix hidden files in remote Open Folder dialog (#50846)

Click to expand commit body
Fixes https://github.com/zed-industries/zed/issues/48457

Hidden files (like .config, .ssh, etc.) were not showing in the Open
Folder dialog when browsing remote servers via SSH. This was because the
`OpenPathDelegate` was not configured to show hidden files.

This fix adds .show_hidden() when creating the delegate for remote
project picker.


Release Notes:

- Fixed the hidden files not showing in remote project's open folder
action

Dibash Thapa created

eeb034c agent: Fix race condition when loading threads (#51366)

Click to expand commit body
This fixes a race condition that could occur when using the sidebar:
`Failed to launch: project state not found`

We were accessing/creating the project state before an await point,
meaning that we could remove the state if session/close was called in
the meantime.

- [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

Bennet Bo Fenner created

4d5e25f editor: Add line range support to editor::CopyFileLocation command (#51328)

Click to expand commit body
Closes #51309

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:

- Improved `editor::CopyFileLocation` command to include the full
selected line range (e.g. 'src/main.rs:12-18') when multiple lines are
selected, rather than only the first line number.

Shashank Suresh created

5ebdbe2 agent_ui: No global thread history (#51362)

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

Bennet Bo Fenner created

81da953 helix: Always offset cursor on selection (#46311)

Click to expand commit body
https://github.com/zed-industries/zed/pull/42837 added the
`cursor_offset_on_selection` field, which displays the cursor *after*
the end of the selection unless a vim visual mode is enabled, in which
case it gets displayed *at* the end of the selection.

However, the real helix is effectively *always* in select mode, and will
always display the cursor at the end of the selection, whether that
selection is made via its visual mode, a movement key, or with the
mouse.

This makes it so that the helix mode setting is taken into account
regardless of the visual-ness of the vim mode in the `sync_vim_settings`
method.

I also considered simply moving `Mode::HelixNormal` up to the `true` arm
of the match in the `is_visual` method since helix is kinda *always* in
visual mode, but I figured that could have some unintended consequences
and chose to err on the side of caution.

Possibly related to #20121

Closes #46998

Release Notes:

- Fixed the cursor offset in non-visual helix selections

Co-authored-by: Nils Koch <mail@nilskch.dev>

Josh Robson Chase and Nils Koch created

f627c43 languages: Prevent `bsn` macro from injecting rust layer (#51353)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/51240

We don’t parse bsn as embedded Rust anymore. We expect bsn to get its
own Tree-sitter implementation in the future, which should improve this.
This fixes broken syntax highlighting for string literals. See line 66
in the comparison below.

<img width="2560" height="1440" alt="image"
src="https://github.com/user-attachments/assets/230ae057-f315-4290-8f51-bcd21e6557d7"
/>

Release Notes:

- N/A

Co-authored-by: Christopher Biscardi <chris@christopherbiscardi.com>

Smit Barmase and Christopher Biscardi created

6034961 ai_onboarding: Add student plan examples to component preview (#51338)

Click to expand commit body
This PR adds examples for the student plan to the component preview.

Release Notes:

- N/A

Marshall Bowers created

bb4f771 client: Populate plans for organizations (#51334)

Click to expand commit body
This PR makes it so we populate the `plans_by_organization` collection
with the plans returned from the server.

Release Notes:

- N/A

Marshall Bowers created

becb24c cloud_api_types: Add `ZedBusiness` variant to `Plan` (#51329)

Click to expand commit body
This PR adds a `ZedBusiness` variant to the `Plan` enum.

Closes CLO-480.

Release Notes:

- N/A

Marshall Bowers created

3dff4c5 agent_ui: Add timestamp to thread item in the sidebar (#51327)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

9d2e2c8 agent_ui: Add more UI refinements to the sidebar (#51325)

Click to expand commit body
Adjust the settings view and removes the new empty state from text
threads.

Release Notes:

- N/A

Danilo Leal created

9fb57b0 language_model: Centralize LlmApiToken to a singleton (#51225)

Click to expand commit body
The edit prediction, web search and completions endpoints in Cloud all
use tokens called LlmApiToken. These were independently created, cached,
and refreshed in three places: the cloud language model provider, the
edit prediction store, and the cloud web search provider. Each held its
own LlmApiToken instance, meaning three separate requests to get these
tokens at startup / login and three redundant refreshes whenever the
server signaled a token update was needed.

We already had a global singleton reacting to the refresh signals:
RefreshLlmTokenListener. It now holds a single LlmApiToken that all
three services use, performs the refresh itself, and emits
RefreshLlmTokenEvent only after the token is fresh. That event is used
by the language model provider to re-fetch models after a refresh. The
singleton is accessed only through `LlmApiToken::global()`.

I have tested this manually, and it token acquisition and usage appear
to be working fine.

Edit: I've tested it with a long running session, and refresh seems to
be working fine too.

Release Notes:

- N/A

---------

Co-authored-by: Marshall Bowers <git@maxdeviant.com>

Tom Houlé and Marshall Bowers created

56b2eae audio: Run webrtc receiver task on the realtime-priority thread as well (#51315)

Click to expand commit body
Co-authored-by: Jakub Konka <jakub@zed.dev>

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:

- Fixed issues with tremendous audio latency in long-running collab
calls.

Co-authored-by: Jakub Konka <jakub@zed.dev>

Piotr Osiewicz and Jakub Konka created

546dacc nix: Correctly handle commitSha == null in nix devshell (#51319)

Click to expand commit body
Release Notes:

- N/A

Jakub Konka created

4507210 languages: Exclude angle brackets from rainbow bracket colorization for TSX (#51311)

Click to expand commit body
## Summary

Angle brackets in TSX (`<`, `>`, `/>`, `</`) are always paired with JSX
tag syntax — they don't indicate bracket nesting depth — so rainbow
colorization adds noise without useful information.

This mirrors #46808, which applied the same fix to the HTML extension.

## Changes

- Added `(#set! rainbow.exclude)` to all three angle bracket patterns in
`crates/languages/src/tsx/brackets.scm`

## Before / After

Before: angle brackets in JSX tags receive rainbow colors alongside
`{}`, `()`, `[]`, making every tag visually noisy.

After: only `{}`, `()`, and `[]` receive rainbow colors — angle brackets
are excluded, matching the HTML extension behavior.

> Screenshots: I don't have a built copy of Zed handy to attach — happy
to add one if a maintainer needs it before merging.

Release Notes:

- Removed rainbow bracket colorization for angled brackets within TSX.

Jack created

480e269 agent_ui: Add UI refinements to the sidebar (#51307)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

ac2f097 image_viewer: Add pinch event support (#47351)

Click to expand commit body
This change implements pinch / magnification gesture handling.

This uses the following wayland
[protocol](https://wayland.app/protocols/pointer-gestures-unstable-v1).
And the following
[API](https://developer.apple.com/documentation/appkit/nsevent/magnification)
for mac.

- Original: https://github.com/gpui-ce/gpui-ce/pull/11

Release Notes:

- Zooming works with pinching in and out inside Image Viewer

MostlyK created

f713373 editor: Persist multi-line diagnostic hovers in whitespace areas (#47471)

Click to expand commit body
When the mouse cursor moves into the whitespace of a line within a
multi-line diagnostic range, the hover popover would previously
disappear. This change adds a check to keep the diagnostic hover visible
if the mouse row intersects with the active diagnostic's range.

Fixes #46841

Release Notes:

- Improved hover behavior for multi-line diagnostics to persist when
hovering over whitespace.


https://github.com/user-attachments/assets/0965cb25-6207-4d4a-9165-0d51157fc6e4

daydalek created

34407d6 Delete unused workspace dependencies (#51285)

Click to expand commit body
Just a small opportunistic cleanup.

Release Notes:

- N/A

Tom Houlé created

dfc3a7c agent_ui: Move UI logic from `ThreadHistory` to separate component (#51301)

Click to expand commit body
This is just a re-factor. We'll make use of this once we make thread
history non-global (storing one history per ACP connection).

Release Notes:

- N/A

Bennet Bo Fenner created

2b425aa Limit editors' refresh runnables (#51299)

Click to expand commit body
Before, both rust-analyzer's LSPext tasks and tree-sitter tasks were
queried on the entire multi buffer range.

The PR moves all runnable-related logic into a submodule, and reworks
the logic to consider only the visible buffers.
Singleton buffers have their tasks resolved for the entire range still
(same as LSPext tasks work), multi buffers have their buffers' data
cached and reused.

Release Notes:

- Improved multi buffer's runnables resolution performance

Kirill Bulatov created

a8def21 agent: Add thread git stats to sidebar (#51287)

Cameron Mcloughlin created

bee94e7 Bump Zed to v0.229 (#51292)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

3c82ddf git_ui: Fix "resolve with agent" merge conflict notification (#51290)

Click to expand commit body
Follow up to https://github.com/zed-industries/zed/pull/49807

This PR fixes the merge conflict notification by making it appear only
once per a given set of conflicted paths, as opposed to showing every
time the `ConflictsUpdated` or `StatusesChanged` even would fire.

Release Notes:

- N/A

Danilo Leal created

db9d975 agent: Support providers streaming edits out of order (#51286)

Click to expand commit body
Release Notes:

- N/A

Bennet Bo Fenner created

8d49131 acp: Update to `0.10.2` (#51280)

Click to expand commit body
Updates to `0.10.2`, most notable change is implementing
`session/close`.

Release Notes:

- N/A

Bennet Bo Fenner created

cbb7982 docs: Allow navigating search results with arrow keys (#50901)

Click to expand commit body
Closes #50604


https://github.com/user-attachments/assets/8a85b39e-e463-4fee-bc1f-2a03fe193ce3


https://github.com/user-attachments/assets/8290bb06-1eaf-4852-9568-97654e30211e

### Results: 
Now, you can scroll the search results with the arrow keys.

### Suggestion:
While this is working, I like to propose some better UX.

When you scroll with the arrow keys, the whole search results are
scrolling along with the search bar. But, I think it would be better if
we keep the search bar fixed on top and only the results scroll. Here is
an example:


https://github.com/user-attachments/assets/af9dce73-27c6-407b-8180-2f771a85303b

If you think this will be better, please let me know, and I will update
this PR.

Thank you.

Release Notes:

- Fixed docs search results scrolling with arrow keys

---------

Co-authored-by: Gaauwe Rombouts <mail@grombouts.nl>

Abinash and Gaauwe Rombouts created

a540b7c livekit_client: Always use output device's reported channels num (#51276)

Click to expand commit body
Fixes a panic in livekit's process_reverse_stream for non-matching
channel counts, e.g., upmixing 2->4, or downmixing 2->1.

Release Notes:

- Fixed a panic in livekit when joining a channel using legacy audio
using a device with less or more than 2 channels.

Jakub Konka created

0c49aaa extension_rollout: Fix workflow file path (#51273)

Click to expand commit body
Release Notes:

- N/A

Finn Evers created

e5fb57c extension_rollout: Add incremental rollout (#51264)

Click to expand commit body
This will allow us to test changes against just a subset of extensions.
Another advantage is that extension workflows will be pinned, which
allows for easier debugging and better predictability.

Release Notes:

- N/A

Finn Evers created

2c59990 Do not load runnables and diagnostics in git panel (#51270)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Jakub Konka <kubkon@jakubkonka.com>

Kirill Bulatov and Jakub Konka created

deccb78 agent_ui: Fix thread summarization not working (#51259)

Click to expand commit body
Release Notes:

- N/A

Bennet Bo Fenner created