Commit Graph
31406 Commits
Author SHA1 Message Date
JongchanandDanilo Leal 9248bd9f23 git_ui: Add file and folder icons to the Git panel (#51000)
Closes https://github.com/zed-industries/zed/discussions/49740

Adds optional file and folder icons to the Git panel so its file list is
easier to scan, especially in larger repositories.

- add folder icons for Git panel entries
- add Git panel settings for file and folder icon visibility

---

Release Notes:

  - Made the Git Panel aware of icon themes.
  - Added the ability to render file type icons in the Git panel.

---------

Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
2026-03-16 11:06:37 -03:00
Smit Barmase 12ea1394fc Revert "Fix window drags when dragging button/input on titlebar in macOS" (#51666)
Reverts zed-industries/zed#51400
2026-03-16 13:55:04 +00:00
Dong 88d27176a0 markdown_preview: Fix not re-rendering issue when editing by agent (#50583)
Closes #47900 

## Root cause

The current markdown preview only re-renders on `EditorEvent::Edited,
DirtyChanged, ExcerptsEdited`, but agent edits are implemented via
[`buffer.edit()`](https://github.com/dongdong867/zed/blob/eb3f92708b6dc67bb534c1c44a200c0cb5c4997b/crates/agent/src/edit_agent.rs#L375)
which does not guaranty to emit the `EditorEvent::Edited` event. Causing
the markdown preview stuck on the last received parsed markdown.

## Applied fix

Subscribing to `EditorEvent::BufferEdited` when initializing the
markdown preview view. This will cause the view to update when received
`BufferEdited` event including agent edits to the file.

## As is/ To be

As is | To be
--- | ---
<video
src="https://github.com/user-attachments/assets/a0b13467-7758-4572-ae01-bcbc40beff6c"
/> | <video
src="https://github.com/user-attachments/assets/3b5463f3-46ad-4fe6-8563-ceb4347035db"
/>

---

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

Release Notes:

- Fixed markdown preview not re-rendering when edited by agent
2026-03-16 14:45:58 +01:00
Om Chillure dc4dd9ac11 agent_servers: Fix Claude Agent model resetting to default (#51587)
#### Fixes #51082

#### Description :

When a user configures `default_config_options` (e.g. a specific model)
for an ACP agent, the setting was only applied when creating a new
session. Resuming or loading an existing session (e.g. from history)
skipped this step, causing the model dropdown to revert to "Default
(recommended)".

#### Fix : 

Extract the config options defaulting logic into a shared helper
apply_default_config_options and call it consistently across all three
session entry points: new_session, resume_session, and load_session
Release Notes:

#### Release notes :
Fixed model dropdown resetting to "Default (recommended)" when opening a
previous conversation from history. Configured models (via
default_config_options) are now correctly applied when resuming or
loading existing sessions.


#### Video :
[Screencast from 2026-03-15
12-55-58.webm](https://github.com/user-attachments/assets/977747b9-390c-4f78-91fc-91feace444e1)
2026-03-16 13:41:55 +00:00
Giorgi Merebashvili 6b333c6ff1 file_finder: Fix project root appearing in file paths while searching when hide_root=true (#51530)
Closes #45135

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 project root name appearing in file paths while searching in
file finder.
2026-03-16 13:27:41 +00:00
Cameron Mcloughlin 0e38684cb3 gpui: Add Unicode range for Bengali (#51659) 2026-03-16 13:03:33 +00:00
Om ChillureandKirill Bulatov 7f61f42bf5 Fix outline filtering always selecting last match (#50594)
Fixes #29774

When filtering the outline panel, matches with equal fuzzy scores
previously defaulted to the last item due to iterator `max_by_key`
semantics. This caused the bottommost match (e.g. `C::f`) to always be
pre-selected regardless of cursor position.

Changes:
- Select the match nearest to the cursor when scores are tied, using a
multi-criteria comparison: score -> cursor containment depth ->
proximity to cursor -> earlier index
- Move outline search off the UI thread (`smol::block_on` -> async
`cx.spawn_in`) to avoid blocking during filtering
- Wrap `Outline<Anchor>` in `Arc` for cheap cloning into the async task
- Add `match_update_count` to discard results from stale queries

Tests : 
Adds a regression test:
`test_outline_filtered_selection_prefers_cursor_proximity_over_last_tie`
which passes

Video : 
[Screencast from 2026-03-03
17-01-32.webm](https://github.com/user-attachments/assets/7a27eaed-82a0-4990-85af-08c5a781f269)


Release Notes:
Fixed the outline filtering always select last match

---------

Co-authored-by: Kirill Bulatov <kirill@zed.dev>
2026-03-16 12:56:29 +00:00
Ben Brandt 4da5059229 agent_ui: Disable editing and regeneration for subagent messages (#51654)
We had inconsistent handling of this read-only behavior. Now subagents
should behave the same as agents that don't support editing

Release Notes:

- agent_ui: Fix inconsistent behavior for subagent views when focusing
on previous messages.
2026-03-16 12:13:23 +00:00
Piotr OsiewiczandJakub Konka 3e3b4d1fb9 audio: Remove unbounded input queue in favor of 1-element queue (#51647)
Co-authored-by: Jakub Konka <kubkon@jakubkonka.com>

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:

- Improve recovery of audio latency after CPU-intensive period.

Co-authored-by: Jakub Konka <kubkon@jakubkonka.com>
2026-03-16 11:50:44 +01:00
Lukas Wirth 37ec6a7691 vim: Fix helix select next match panic when search wraps around (#51642)
Fixes ZED-4YP

Sort and deduplicate anchor ranges in do_helix_select before passing
them to select_anchor_ranges. When the search wraps past the end of the
document back to the beginning, the new selection is at a lower offset
than the accumulated prior selections, producing unsorted anchors that
crash the rope cursor with 'cannot summarize backward'.


Release Notes:

- Fixed a panic in helix mode with search selecting wrapping around the
document end
2026-03-16 11:14:26 +01:00
Finn Eitreimanddino db5abfe747 vim: Fix dot repeat ignoring recorded register (#50753)
When a command used an explicit register (e.g. `"_dd` or `"add`), the
subsequent dot repeat (`.`) was ignoring that register and using the
default instead.

Store the register at recording start in `recording_register_for_dot`,
persist it to `recorded_register_for_dot` when recording stops, and
restore it in `Vim::repeat` when no explicit register is supplied for
`.`. An explicit register on `.` (e.g. `"b.`) still takes precedence.

This commit also updates the dot-repeat logic to closely follow Neovim's
when using numbered registers, where each dot repeat increments the
register. For example, after using `"1p`, using `.` will repeat the
command using `"2p`, `"3p`, etc.

Closes #49867

Release Notes:

- Fixed vim's repeat . to preserve the register the recorded command
  used
- Updated vim's repeat . to increment the recorded register when using
  numbered registers

---------

Co-authored-by: dino <dinojoaocosta@gmail.com>
2026-03-16 10:05:14 +00:00
Atchyut Preetham Pulavarthi c7fadb72ef editor: Fix jumbled auto-imports when completing with multiple cursors (#50320)
When accepting an autocomplete suggestion with multiple active cursors
using `CMD+D`, Zed applies the primary completion edit to all cursors.
However, the overlap check for LSP `additionalTextEdits` only verifies
the replace range of the newest cursor.

If user has a cursor inside an existing import statement at the top of
the file and another cursor further down, Zed fails to detect the
overlap at the top of the file. When the user auto-completes the import
statement ends up jumbled.

This fix updates the completion logic to calculate the commit ranges for
all active cursors and passes them to the LSP store. The overlap check
now iterates over all commit ranges to ensure auto-imports are correctly
discarded if they intersect with any of the user's multi-cursor edits.

Closes https://github.com/zed-industries/zed/issues/50314

### Before


https://github.com/user-attachments/assets/8d0f71ec-37ab-4714-a318-897d9ee5e56b

### After


https://github.com/user-attachments/assets/4c978167-3065-48c0-bc3c-547a2dd22ac3

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 accepting an autocomplete suggestion with
multiple cursors could result in duplicated or jumbled text in import
statements.
2026-03-16 09:52:57 +00:00
Lukas Wirth 72d7fc80b4 fs: Fix wrong windows cfg (#51644)
Causes releases on windows to fail due to unused imports

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-03-16 09:03:22 +00:00
Lukas Wirth 05e1074f49 buffer_diff: Fix panic when staging hunks with stale buffer snapshot (#51641)
When the buffer is edited after the diff is computed but before staging,
anchor positions shift while diff_base_byte_range values don't. If the
primary (HEAD) hunk extends past the unstaged (index) hunk, an edit in
the extension region causes the overshoot calculation to produce an
index_end that exceeds index_text.len(), panicking in
rope::Cursor::suffix.

Fix by clamping index_end to index_text.len(). This is safe because the
computed index text is an optimistic approximation — the real staging
happens at the filesystem level via git add/git reset.

Closes ZED-5R2


Release Notes:

- Fixed a source of panics when staging diff hunks
2026-03-16 09:49:02 +01:00
Lukas Wirth 0d816905ea markdown_preview: Prevent stackoverflows in markdown parsing (#51637)
Fixes ZED-5TR

Release Notes:

- Fixed a stack overflow when parsing deeply nested html in markdown
files
2026-03-16 07:43:56 +00:00
ozacodandozacod 738482b56d lsp: Add clangd readonly token modifier to semantic token rules to highlight constant variables as constant (#49065)
Clangd uses the "readonly" token modifier instead of "constant".
Therefore, "readonly" should be mapped to highlight constant variables
as constants.

Before:
<img width="706" height="48" alt="before"
src="https://github.com/user-attachments/assets/8cc2a310-7825-490b-b868-58ea231612fa"
/>

After:
<img width="762" height="46" alt="after"
src="https://github.com/user-attachments/assets/e271d4cd-cc59-45f9-a8b4-2885857915db"
/>

- [x] Code Reviewed
- [x] Manual QA

Release Notes:

- Added clangd readonly token modifier to semantic token rules to
highlight constant variables as constant.

Co-authored-by: ozacod <ozacod@users.noreply.github.com>
2026-03-16 07:35:29 +00:00
Alex MihaiucandJohn Tur 061e583223 Remove std::fs::read_link in fs (#50974)
Closes #46307

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:

- Improved compatibility with mounted VHDs on Windows.

---------

Co-authored-by: John Tur <john-tur@outlook.com>
2026-03-14 20:02:34 -04:00
Ben Kunkle 99a5915576 ep: Ensure prompt is always within token limit (#51529)
Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-03-14 13:53:28 -04:00
Lukas Wirth 721351fd09 http_client: Fix GitHub downloads failing if the destination path exists (#51548)
cc
https://github.com/zed-industries/zed/pull/45428#issuecomment-4060334728

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-03-14 15:17:09 +01:00
Danilo Leal 9f76f5dda1 agent_ui: Add more UI refinements to sidebar (#51545)
- Move archive button to the header for simplicity
- Hook up the delete button in the archive view
- Improve how titles are displayed before summary is generated
- Hook up keybinding for deleting threads in both the sidebar and
archive view

Release Notes:

- N/A
2026-03-14 02:14:25 -03:00
Finn Eitreim c01c227288 which-key: Removed some keys from the filter list that were wrongly filtered (#51543)
Closes #49845

Follow up on #50992

Really simple, just removing some vim commands from the filter list that
are useful enough to justify not being filtered out.

tested to make sure the changes work:
<img width="944" height="1123" alt="Screenshot 2026-03-13 at 11 23
52 PM"
src="https://github.com/user-attachments/assets/23b2db73-d0e7-413b-aef7-efe62e84b542"
/>

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:

- which-key: fixed filter list for some vim commands
2026-03-14 03:29:49 +00:00
Kurian Jojo 43621bb4b5 markdown: Fix block quote continuation highlighting (#51465)
There is no highlight for block quotes continued on multiple lines

Currently, the ">" on lines 2 and 3 are not highlighted in the same way
as line 1
<img width="291" height="73" alt="image"
src="https://github.com/user-attachments/assets/7a2f2e25-6ee1-40a6-8833-f06ca7ee6ba9"
/>

After this PR,
<img width="249" height="75" alt="image"
src="https://github.com/user-attachments/assets/34a2971f-8061-4d92-ac45-a8043d5d0566"
/>


for this input
```md
> abcd
>
> abcd
```

tree-sitter produces this 
```
(document [0, 0] - [3, 0]
  (section [0, 0] - [3, 0]
    (block_quote [0, 0] - [3, 0]
      (block_quote_marker [0, 0] - [0, 2])
      (paragraph [0, 2] - [1, 1]
        (inline [0, 2] - [0, 6])
        (block_continuation [1, 0] - [1, 1]))
      (block_continuation [2, 0] - [2, 2])
      (paragraph [2, 2] - [3, 0]
        (inline [2, 2] - [2, 6])))))
```

the screenshots in #43043 also show this issue

Release Notes:

- Fixed highlighting of block quotes continued over multiple lines in
markdown files
2026-03-14 00:09:19 +01:00
Xiaobo LiuandDanilo Leal 1d7ff1cbbe agent_ui: Mask API key input in Add LLM provider modal (#50379)
Release Notes:

- Added Mask API key input in Add LLM provider modal


<img width="427" height="430" alt="截屏2026-02-28 17 35 22"
src="https://github.com/user-attachments/assets/ae628815-f7df-4ea0-90ea-a23bbd703521"
/>

---------

Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
2026-03-13 19:37:18 -03:00
Lukas Wirth 44037051a7 acp_thread: Stream in agent text in a more continous manner (#51499)
Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-03-13 22:32:18 +01:00
Danilo Leal 3e227b97a8 agent_ui: Enable deleting a thread from the sidebar (#51532)
Currently only available for native threads.

Release Notes:

- N/A
2026-03-13 17:33:57 -03:00
Conrad Irwin c05b6d3882 Fix panic in crease folding (#51531)
Fixes ZED-5BZ

Release Notes:

- N/A
2026-03-13 20:28:48 +00:00
Neel df33036d69 language_models: Make subscription text exhaustive (#51524)
Closes CLO-493.

Release Notes:

- N/A
2026-03-13 20:18:30 +00:00
Ben Kunkle 925c28be78 ep: Ensure predictions are not refreshed while following (#51489)
Release Notes:

- N/A
2026-03-13 16:18:00 -04:00
Danilo Leal 5e0f9779f7 agent_ui: Auto-expand and then collapse thinking blocks (#51525)
With these newer models that come with different thinking levels, it's
become more frequent to want to see what the thinking is outputting.
Thus far in Zed, the thinking block would show up automatically
collapsed and every time you wanted to see it, you had to expand it
manually. This PR changes that by making the thinking block
automatically _expanded_ instead, but as soon as it's done, it collapses
again.

Release Notes:

- Agent: Improved visibility of thinking blocks by making them
auto-expanded while in progress.
2026-03-13 17:01:00 -03:00
Danilo Leal 8bc3d9521a agent_ui: Fix new thread in location setting renderer and flag (#51527)
Follow up to https://github.com/zed-industries/zed/pull/51384

This PR fixes the settings UI rendering of this setting by adding a
default value and also wraps it in the feature flag (only the settings
UI rendering), given it's not widely available just yet.

Release Notes:

- N/A
2026-03-13 17:00:48 -03:00
jamarju 417d32386d gpui_macos: Skip IME for Cmd+key events on non-QWERTY layouts (#51394)
Closes #51297

On non-QWERTY layouts, all Cmd+key events are routed through the macOS
IME because `key_char` is always `None` when Cmd is held. For certain
characters (dead keys like backtick, and non-dead keys like ç), the IME
calls `insertText:` instead of `doCommandBySelector:`, consuming the
event before it reaches GPUI's keybinding system or macOS system
shortcuts.

This adds `!platform` to the IME-path condition in `handle_key_event` so
Cmd+key events bypass the IME (except when composing). GPUI handles them
if a binding matches, otherwise `performKeyEquivalent:` returns `NO` and
macOS handles them.

**This won't fully fix Cmd+backtick window cycling by itself** because
Zed's key_equivalents system maps default keybindings onto the physical
backtick key on various layouts. For example, `cmd-'`
(ToggleSelectedDiffHunks) maps to the backtick key on Spanish, `cmd-=`
(IncreaseBufferFontSize) on Scandinavian layouts, `cmd-"`
(ExpandAllDiffHunks) on German/Portuguese/Swiss, and `cmd-}`
(ActivateNextItem) on Spanish-ISO. These Zed bindings shadow the
backtick key and consume the event before macOS can cycle windows. I'd
appreciate guidance on the preferred approach to resolve these
keybinding conflicts -- IMO, Zed's default shortcuts should not be
interfering with Cmd+backtick for any layout.

Release Notes:

- Fixed Cmd+key shortcuts being consumed by the IME on non-QWERTY
keyboard layouts, preventing Zed keybindings and macOS system shortcuts
from working with special characters.
2026-03-13 12:30:01 -06:00
Danilo Leal c246737d43 ui: Refactor the Button component icon methods (#51496)
Previously, if you wanted to have a button that contains icons on both
edges, you'd need to use a `ButtonLike` component, which takes any
children. Meanwhile, the `Button` would only take one icon, where you
could control its position through the `IconPosition` enum. This has
always felt unnecessarily limiting. So, this PR removes this limitation
by adding two new methods to the button: `start_icon` and `end_icon`.

In the meantime, I have also been bothered by the unnecessary
indirection in the `IconButton` due to the existence of the `ButtonIcon`
component. So I figured I could also completely eliminate that by adding
some of its methods directly to the `IconButton` and in the Button, just
using a regular `Icon` component.

---
## Before
```rust
Button::new("id", "Label")
    .icon(IconName::Plus)
    .icon_position(IconPosition::Start)
    .icon_size(IconSize::Small)
    .icon_color(Color::Muted)
```

## After
```rust
Button::new("id", "Label")
    .start_icon(Icon::new(IconName::Check))
    .end_icon(Icon::new(IconName::ChevronDown).size(IconSize::XSmall))
```

This should have no visual impact to the UI.

Release Notes:

- N/A
2026-03-13 14:13:12 -03:00
Danilo Leal 5d420d7007 agent_ui: Insert branch diff crease when clicking on menu item (#51509)
Follow up to https://github.com/zed-industries/zed/pull/51487

The PR above added the item to the menu, and this one makes the menu
item actually insert a mention crease with the branch diff. That was
missing in the previous one.

Release Notes:

- N/A
2026-03-13 14:13:04 -03:00
Lukas Wirth 87dc6c71a5 file_finder: Put collab channel inclusion behind a setting (#51505)
Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-03-13 16:52:50 +00:00
Kirill Bulatov 093d062d05 Do not overly eagerly invalidate the runnables (#51500)
Follow-up of https://github.com/zed-industries/zed/pull/51299

Release Notes:

- N/A
2026-03-13 16:27:01 +00:00
kitt 3c36a8d80e gpui: Fix busyloop on X disconnect (#41986)
When the connection to X is broken zed will go into an infinite loop and
eat up 100% (of one core) of CPU; this change causes it to exit with an
error instead.

I encountered this behavior while running zed in
[Xephyr](https://freedesktop.org/wiki/Software/Xephyr/) for testing,
though I do sometimes terminate my X server as a way to log out or
attempt to recover from a (very) broken state, and I appreciate a
graceful exit in those situations!

Exiting in case of X server disconnect is common practice in my
observations, likely as the difficulty of recreating state stored
server-side outweighs the potential utility in attempting to recover (if
"reconnecting" to an X server is ever desired in regular usage,
[Xpra](https://xpra.org/index.html) might be able to help!).


Release Notes:

- N/A
2026-03-13 21:16:56 +05:30
K4YT3X 78cd41d15e project_panel: Add horizontal scroll setting (#51143)
This PR introduces the `project_panel.scrollbar.horizontal_scroll`
setting to allow users to toggle the horizontal scroll bar in the
project panel. This was Zed's design before PR #18513, and the default
behavior of VSCode (`workbench.list.horizontalScrolling`).


https://github.com/user-attachments/assets/f633f4e4-a585-4494-8f48-df77c6aca418

## Rationale

Zed's design used to be the same as the default behavior of VSCode.
I.e., no horizontal scrolling, and the view is always snapped to the
left, with long file names clipped of. If you want to see the content
that is out-of-frame, you'll need to drag the handle and expand the
project panel. This could be problematic, especially for large repos
with multiple levels of nested directories, as pointed out by issues
#5550 and #7001.

<img width="1398" height="992" alt="image"
src="https://github.com/user-attachments/assets/d86563f2-0f06-4e9e-818c-155ac45f0f56"
/>\
*VSCode's default setup, for reference.*

Then came PR #18513, which added horizontal scroll and addressed this
pain point, but users didn't have a choice. They're stuck with
horizontal scrolling always turned on. I, for instance, personally
prefer the old, VSCode-default behavior, for most projects I open are
small and don't need horizontal scrolling in the project panel. With
horizontal scrolling always turned on, I find it annoying to have my
project panel view accidentally scrolled to the middle, and I'll have to
grab my mouse and scroll it back. It's also visually redundant.

Thus, why not add an option like VSCode's
`workbench.list.horizontalScrolling` and let users choose? I'd love to
be able to, say, set a per-project override for the projects that need
horizontal scrolling, while having it disabled by default.

## Extra Notes

- I was originally thinking about using `ScrollbarAxes` from
`src/editor_settings.rs` and make the option
`project_panel.scrollbar.axes.horizontal` similar to the global editor
scrollbar settings, but this option is specific to the project panel and
it doesn't quite make sense to allow disabling vertical scrolling on the
project panel, so I added a standalone option for it instead, similar to
VSCode's `workbench.list.horizontalScrolling`.

- I went the conservative route and set horizontal scrolling to enabled
(current behavior) by default. Imo it might make more sense to disable
it by default instead, similar to VSCode, but I'll leave this for the
Zed team to decide.

- I named it `horizontal_scroll` instead of `horizontal_scrolling` to be
consistent with the adjacent setting `sticky_scroll`.

- As for tests, I don't see tests for the scrollbar, so I didn't add
any.

I'd be glad to update the PR if anything is not inline with the
project's requirements or conventions.

---

Release Notes:

- Added `project_panel.scrollbar.horizontal_scroll` setting to allow
toggling horizontal scrolling in the project panel

Signed-off-by: k4yt3x <i@k4yt3x.com>
2026-03-13 15:25:54 +00:00
Cole Miller 641d5151f2 git: Log some more information when opening a git repository and when git show fails (#51495)
Release Notes:

- N/A
2026-03-13 14:53:14 +00:00
Dino 7b21c3ac2e git: Fix commit message generation in untrusted projects and block external diff (#51323)
When on a untrusted project, if one was to try and use the commit
generation functionality, the command would fail because of the `-c
diff.external` configuration provided in `GitBinary::build_command`, as
git would interpret this as `""` and try to run that command.

This `-c diff.external` is a good safeguard to have on untrusted
repositories because it prevents random commands, configured in
`.git/config` from being run. For example, if one uses `git config
diff.external "touch bananas.txt"` and then run `git diff`, a new
`bananas.txt` file would be created.

However, it was still possible to bypass this safeguard using the
following strategy:

1. Specify a custom diff for a specific file format. For example, for
markdown files, with `printf '*.md diff=pwned\n' > .gitattributes`
2. Update the command run by the `pwned` diff, for example, `git config
diff.pwned.command "touch bananas.txt"`
3. Open Zed and attempt to generate a commit message in an untrusted
repository and check that a new `bananas.txt` file was created

This is only prevented by using the `--no-ext-diff` flag on the `diff`
command, so a new `GitBinary::build_diff_command` has been introduced
which simply wraps `GitBinary::build_command` and adds the
`--no-ext-diff` flag, if necessary.

As a side-effect, this also makes it so that generating a commit message
in an untrusted repository works again, which was accidentally broken on
https://github.com/zed-industries/zed/pull/50649 .

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 commit message generation in untrusted repositories
2026-03-13 15:08:12 +01:00
Danilo Leal 5122bfbb6e agent_ui: Add branch diff menu item to context menu (#51487)
This PR adds the recently introduced "branch diff" mention option to the
"Add Context" menu in the message editor:

<img width="450" height="582" alt="Screenshot 2026-03-13 at 9  58@2x"
src="https://github.com/user-attachments/assets/1f5102e7-9018-4a5b-992d-43befa55dcbe"
/>

Release Notes:

- N/A
2026-03-13 10:23:09 -03:00
Ben Kunkle 590d3e49e4 ep: Error indication when Mercury free tier limit reached (#51447)
Release Notes:

- Added an error indicator in the edit prediction menu with an error
message when the free tier limit is exceeded
2026-03-13 09:01:42 -04:00
Bennet Bo Fenner 196fc209a7 agent: Fix session close capability check (#51479)
Release Notes:

- agent: Fixed an issue where external agents would return an error
because unsupported ACP method was called
2026-03-13 12:27:13 +00:00
e99b29e789 agent_ui: Wire up archive entry loading (#51475)
Release Notes:

- N/A

---------

Co-authored-by: cameron <cameron.studdstreet@gmail.com>
Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
2026-03-13 12:16:59 +00:00
Finn Evers 046234faae editor: Remove unnecessary clone (#51470)
Release Notes:

- N/A
2026-03-13 12:12:42 +00:00
Lukas Wirth 951b9799e3 Revert "project: Support resolving paths with worktree names prefixed" (#51474)
Reverts zed-industries/zed#50692

The test here doesn't pass, unsure how this managed to even get merged
2026-03-13 11:09:37 +00:00
Lukas Wirth ea1f19183f editor: Replace BreadcrumbText with HighlightedText (#51083)
Remove the BreadcrumbText struct from workspace and use the existing
HighlightedText struct from the language crate instead. The per-segment
font field is replaced by returning an optional Font alongside the
segments from the breadcrumbs() method, since the font was always
uniform across all segments of a given item.

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-03-13 08:00:22 +00:00
Lukas Wirth 2cb8a77dbe file_finder: Show collab channels in file search (#51120)
Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-03-13 07:48:35 +00:00
Lukas Wirth 657098eeb4 project: Support resolving paths with worktree names prefixed (#50692)
Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-03-13 08:47:48 +01:00
Finn Eitreim 25b9b5b18d lsp: Fix LSP restart breaking semantic token highlighting (#51452)
Closes #51450 

When you restart the lsp, it does not sufficiently clear cached data
regarding the semantic tokens, if using semantic_tokens = "full", this
would mean that you would have no syntax highlighting. also, toggling on
and off semantic tokens in the menu would have no effect. this change
properly clears the cached state and things work again!

Before:


https://github.com/user-attachments/assets/67ac1be1-ae3d-4c84-afbc-056fd81f63f0

After:


https://github.com/user-attachments/assets/644f8297-8003-4d74-b962-81ba9bb8274c

You might notice that the syntax highlighting is quite spare in the
videos, especially compared to the non semantic token based
highlighting, and you would be correct! but thats just how it is with
`semantic_tokens: "full"`, other editors, like neovim, provide basic
syntax highlighting that zed doesn't (because it doesn't need to with
treesitter usually, but here treesitter is disabled), however if we turn
off that syntax highlighting we can see that neovim actually matches zed
here:

<img width="847" height="485" alt="Screenshot 2026-03-12 at 11 33 19 PM"
src="https://github.com/user-attachments/assets/7f90789c-dac3-41bf-9d19-640c6c7b1144"
/>


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:

- lsp: Fixed restarting the LSP breaking semantic token highlighting.
2026-03-13 06:59:07 +00:00
Oussama ELJabbari 532fc15171 Grace period for inaccessible workspaces (#50829)
Closes #49603

Release Notes:
- Added a 7-day grace period to prevent recently used local workspaces
from being deleted when their paths are temporarily unavailable. Session
workspaces are always preserved on restart.
2026-03-12 23:17:08 -06:00