Commit Graph
31406 Commits
Author SHA1 Message Date
Max Brunsfeld 2ed143dab0 Include repo_url in edit prediction requests when data collection is enabled (#50745)
Release Notes:

- N/A
2026-03-04 13:14:44 -08:00
Bennet Bo Fenner a3e971fbe1 agent: Cleanup StreamingEditFileTool (#50725)
- Adds logging if tool fails
- Reduces boilerplate in test 
- Simplified code in a bunch of places

Release Notes:

- N/A
2026-03-04 21:02:54 +00:00
Oliver Azevedo BarnesandMrSubidubi 58eac50e17 editor: Add support for no auto-indent on enter (#47751)
Closes #47550

Changes the `auto_indent` setting from a boolean to an enum with three
modes:

- **`full`** (default): Adjusts indentation based on syntax context when
typing (previous `true` behavior)
- **`preserve_indent`**: Preserves the current line's indentation on new
lines, but doesn't adjust based on syntax
- **`none`**: No automatic indentation - new lines start at column 0
(previous `false` behavior)

This gives users more control over indentation behavior. Previously,
setting `auto_indent: false` would still preserve indentation on new
lines, which was unexpected.

Includes:
- Settings migration from boolean to enum values
- Settings UI dropdown renderer

Release Notes:

- Changed `auto_indent` setting from boolean to enum with `full`,
`preserve_indent`, and `none` options

<img width="1373" height="802" alt="Screenshot 2026-01-27 at 16 32 10"
src="https://github.com/user-attachments/assets/b629e1d8-7359-4853-8222-abfa71d6ebe2"
/>

---------

Co-authored-by: MrSubidubi <finn@zed.dev>
2026-03-04 20:29:20 +00:00
Conrad IrwinandMiguel Raz Guzmán Macedo 4b6bde8e9d Fix crash metrics ID (#50728)
Before this change the crash handler uploaded crashes before sign-in had
happened.

Now we get the metrics_id correctly. This allows for us to tie crashes
reported
on Github to users who have opted into telemetry (users who have opted
into
crash reporting but not telemetry will not have a metrics_id).

Release Notes:

- Fixed crash reporter metadata collection

---------

Co-authored-by: Miguel Raz Guzmán Macedo <miguel@zed.dev>
2026-03-04 13:04:48 -07:00
Conrad IrwinandNikolas Gauder 9888f753c3 debugger: Reverse Python repr escaping (#50554)
Closes #37168

Authored-By: @ngauder

Release Notes:

- debugger: Unescape Python strings

Co-authored-by: Nikolas Gauder <nikolas.gauder@tum.de>
2026-03-04 12:55:20 -07:00
Anthony Eid dee5cc0000 git: Move diff num stat calculation to repository snapshot layer (#50645)
Follow up on: https://github.com/zed-industries/zed/pull/49519

This PR reworks how Zed calculates diff num stats by moving the
calculation to the `RepositorySnapshot` layer, instead of the
`GitPanel`. This has a couple of benefits:

1. Snapshot recalculations are already set up to recompute on file
system changes and only update the affected files. This means that diff
stats don't need to manage their own subscription or states anymore like
they did in the original PR.
2. We're able to further separate the data layer from the UI. Before,
the git panel owned all the subscriptions and tasks that refreshed the
diff stat, now the repository does, which is more inline with the code
base.
3. Integration tests are cleaner because `FakeRepository` can handle all
the data and calculations of diff stat and make it accessible to more
tests in the codebase. Because a lot of tests wouldn't initialize the
git panel when they used the git repository.
4. This made implementing remote/collab support for this feature
streamline. Remote clients wouldn't get the same buffer events as local
clients, so they wouldn't know that the diff stat state has been updated
and invalidate their data.
5. File system changes that happened outside of Zed now trigger the diff
stat refresh because we're using the `RepositorySnapshot`.

I added some integration tests as well to make sure collab support is
working this time. Finally, adding the initial diff calculation to
`compute_snapshot` didn't affect performance for me when checking
against chromium's diff with HEAD~1000. So this should be a safe change
to make.

I decided to add diff stats on the status entry struct because it made
updating changed paths and the collab database much simpler than having
two separate SumTrees. Also whenever the UI got a file's status it would
check its diff stat as well, so this change makes that code more
streamlined as well.

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.

Release Notes:

- N/A
2026-03-04 18:54:23 +00:00
Viraj BhartiyaandMrSubidubi 905cee2dc0 project_panel: Fix scrolling in empty area below file list (#50683)
Closes #50624

The empty bottom section of the project panel showed a horizontal
scrollbar on hover, but scrolling didn't work there. Added a scroll
wheel handler to the blank area that forwards scroll events to the
uniform list's scroll handle, making both horizontal and vertical
scrolling work from anywhere in the panel.

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/zedindustries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- Fixed project panel empty area showing a non-functional scrollbar;
scrolling now works from anywhere in the panel

---------

Co-authored-by: MrSubidubi <finn@zed.dev>
2026-03-04 19:13:32 +01:00
Kyle Kelley 557ca4ea79 repl: Support kernel language aliases in REPL (#49762)
Add a `kernel_language_names` field to `LanguageConfig` that allows
languages to declare alternative names that Jupyter kernels may use.
This fixes REPL matching for cases where a kernel reports a different
language identifier than Zed's language name.

For example, the Nu extension would set `kernel_language_names =
["nushell", "nu"]` in its config.toml, enabling REPL support for
nu-jupyter-kernel which reports `"language": "nushell"` in its
kernelspec.

The change consolidates kernel language matching logic into a single
`Language::matches_kernel_language()` method that checks the code fence
block name, language name, and the new aliases list (all
case-insensitive).

- [x] Done a self-review taking into account security and performance
aspects

Release Notes:

- Added `kernel_language_names` field for extensions to self identify
REPL mappings
2026-03-04 11:58:51 -06:00
xcb3d f0b29b16d9 Fix terminal path click failing when path is prefixed with '0:' (#50663)
The path hyperlink regex's middle-char pattern
[[:(][^0-9()]](cci:2://file:///d:/zed/crates/fs/src/fs.rs:89:0-157:1)
allowed colon+space because space was not in the exclusion set. This
caused `0: foo/bar.txt` to be matched as a single path instead of just
`foo/bar.txt`.

Fix: add space to the exclusion class: [[:(][^0-9()\\
]](cci:2://file:///d:/zed/crates/fs/src/fs.rs:89:0-157:1)

Closes #50531

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

Release Notes:

- Fixed terminal Ctrl-click path detection failing when path is preceded
by a prefix like `0:` (#50531)
2026-03-04 17:42:14 +01:00
Bennet Bo Fenner d52e449e05 Staff-ship streaming edit file tool (#50720)
Release Notes:

- N/A
2026-03-04 16:41:34 +00:00
Bennet Bo Fenner 1814a449f8 Add support for streaming tool input to more providers (#50682)
To test:
- [x] Bedrock
- [x] Copilot Chat
- [x] Deepseek
- [x] Open AI
- [x] Open Router
- [x] Vercel
- [x] Vercel AI Gateway
- [x] xAI
- [x] Mistral

Release Notes:

- N/A
2026-03-04 17:36:25 +01:00
Oleksiy Syvokon c20a66bcad ep: Collapse whitespace in deltaChrF (#50716)
Release Notes:

- N/A
2026-03-04 16:28:48 +00:00
MostlyK 5057d60cbc repl: Bump runtimed ecosystem packages and add support for V3 Jupyter Notebooks (#49914)
- Add support for v3 Jupyter Notebooks ( nbformat 1.2.0 <->
https://github.com/runtimed/runtimed/pull/275 )
- This means that we can now open notebooks like [Signal Processing for
Python](https://nbviewer.org/github/unpingco/Python-for-Signal-Processing/tree/master/)
and much more.

 

Release Notes:

- N/A
2026-03-04 10:14:32 -06:00
Piotr Osiewicz 07a8119c14 workspace: Remove superfluous call dependency (#50713)
Closes #50701

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:

- N/A
2026-03-04 16:02:26 +00:00
Joseph T. Lyons b8cf2949f1 Bump Zed to v0.228 (#50710)
Release Notes:

- N/A
2026-03-04 15:54:11 +00:00
Richard Feldman 97d1a11809 Remove deprecated Gemini 3 Pro Preview (#50503)
Gemini 3 Pro Preview has been deprecated in favor of Gemini 3.1 Pro.
This removes the `Gemini3Pro` variant from the `Model` enum and all
associated match arms, updates eval model lists, docs, and test
fixtures.

A serde alias (`"gemini-3-pro-preview"`) is kept on `Gemini31Pro` so
existing user settings gracefully migrate to the replacement model.

Closes AI-66

Release Notes:

- Removed deprecated Gemini 3 Pro Preview model; existing configurations
automatically migrate to Gemini 3.1 Pro.
2026-03-04 15:53:26 +00:00
Oleksiy Syvokon b2eaa5b760 ep: Option to configure custom Baseten environment (#50706)
Release Notes:

- N/A
2026-03-04 14:56:56 +00:00
Tom Houlé be23e13237 cloud_api_client: Send the organization ID in LLM token requests (#50517)
This is already expected on the cloud side. This lets us know under
which organization the user is logged in when requesting an llm_api
token.

Closes CLO-337

Release Notes:

- N/A
2026-03-04 15:45:33 +01:00
Gaauwe Rombouts 5eeb0bc8ac docs: Add consent banner (#50302)
Adds a consent banner, similar to the one on zed.dev

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
2026-03-04 15:38:31 +01:00
Anthony Eid 53b6118f3a git: Add trusted worktree support to git integrations (#50649)
This PR cleans up the git command spawning by wrapping everything in
GitBinary instead to follow a builder/factory pattern. It also extends
trusted workspace support to git commands.

I also added a `clippy.toml` configuration to our git crate that warns
against using `Command` struct to spawn git commands instead of going
through `GitBinary`. This should help us maintain the factory pattern in
the future

Before you mark this PR as ready for review, make sure that you have:
- [x] Added solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects

Release Notes:

- git: Add trusted workspace support for Zed's git integration
2026-03-04 12:19:13 +00:00
Dino 97cfc94694 editor: Refactor excerpts removed event handling (#50695)
Refactor the changes introduced in
https://github.com/zed-industries/zed/pull/50525, in order to remove the
`DisplayMap.clear_folded_buffer` method and update the editor's handling
of `multi_buffer::Event::ExcerptsRemoved` to actually call
`DisplayMap.unfold_buffers`, which correctly updates the `BlockMap`
using its `BlockMapWriter`, ensuring that the block map is synced.

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
2026-03-04 13:11:40 +01:00
ᴀᴍᴛᴏᴀᴇʀ 31dcfded35 editor: Prevent underlines from appearing in minimap (#48510)
I noticed that the minimap seems to render underlines with the same
thickness as the main editor, which looks a bit off. This becomes much
more noticeable when enabling `semantic_token_rules` (due to the
increased number of underlines):

```json
"global_lsp_settings": {
  "semantic_token_rules": [
    {
      "token_modifiers": ["mutable"],
      "underline": true,
    },
  ],
}
```
Looking at the existing code, I found that diagnostic underlines already
check `editor_style.show_underlines` to ensure they are only displayed
in the main editor. To maintain consistency, I applied the same
filtering logic to `chunk_highlight` so that these underlines are no
longer rendered in the minimap.

Before:
<img alt="CleanShot 2026-02-06 at 02 28 31@2x"
src="https://github.com/user-attachments/assets/16401154-23f5-43ef-a7a8-b1035c19e076"
/>
After:
<img alt="CleanShot 2026-02-06 at 02 31 36@2x"
src="https://github.com/user-attachments/assets/979a04be-e585-44be-9c42-4dfab7b89186"
/>

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-03-04 11:59:08 +00:00
6e07d2a20c agent: Move file_read_times logic to ActionLog instead of Thread (#50688)
Since the read times always correspond to an action log call anyway, we
can let the action log track this internally, and we don't have to
provide a reference to the Thread in as many tools.

Release Notes:

- N/A

---------

Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Co-authored-by: MrSubidubi <dev@bahn.sh>
2026-03-04 10:31:29 +00:00
moleium a6beb28e5e Add .cppm (C++20 module interface) to C++ file extensions (#50667)
`.cppm` is the widely used extension for C++20 module interface units,
supported by MSVC, Clang, and GCC. Currently Zed doesn't recognize it as
C++, so users get no syntax highlighting or LSP support.

Changes:
`crates/languages/src/cpp/config.toml`: add cppm to path_suffixes
`crates/theme/src/icon_theme.rs`: add cppm to the C++ icon matcher

https://github.com/search?q=path%3A*.cppm&type=code

Release Notes:

- N/A
2026-03-04 10:30:33 +00:00
30f9c2c2a2 agent: Allow for expanding the subagent thread when permissions are requested (#50684)
Previously, there was no way to view the full thread context

Release Notes:

- N/A

Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Co-authored-by: MrSubidubi <dev@bahn.sh>
2026-03-04 09:38:42 +00:00
Sarthak Mishra 4e49453f4d project_panel: Fix Reveal in File Manager for WSL projects (#50610)
Closes #46767

## Summary

The "Reveal in File Manager" action was shown in the context menu for
WSL projects (guarded by `is_via_wsl_with_host_interop`), but the action
handler in `Render` was only registered when `project.is_local()` —
which returns `false` for WSL. Dispatching the action without a handler
caused a crash.

Adds the same `is_via_wsl_with_host_interop(cx)` check to the handler
registration.

## Testing

- Ran `cargo test -p project_panel` — 78 passed, 0 failed
- Manual testing: connected to WSL Ubuntu, right-clicked a file in the
project panel, used "Reveal in File Manager" — Windows Explorer opened
correctly without crashing

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 a crash when using "Reveal in File Manager" on files in WSL
projects (#46767).
2026-03-04 07:37:50 +00:00
Casper van ElterenandMrSubidubi 95a8fd8e6f repl: Fix image scaling (#48435)
Continues #47114

Release Notes:

- Fixed REPL output width clamping to apply to the content area so
images don’t get clipped by controls

---------

Co-authored-by: MrSubidubi <finn@zed.dev>
2026-03-04 07:33:40 +00:00
Xin Zhao f0ee8bfee6 python: Register LSP adapters directly to the LanguageRegistry (#50662)
The purpose of `register_available_lsp_adapter()` is to allow language
servers to be reused across multiple languages. Since adapters like
`ty`, `pylsp`, and `pyright` are specific to Python, there is no need to
register them for other languages. Additionally, registering them
directly to the global `LanguageRegistry` results in negligible resource
consumption.

We can then use the default settings to control the default language
server for Python, as referenced here:


https://github.com/zed-industries/zed/blob/2cc3d382bb669629471886c2ea9b43311c525099/assets/settings/default.json#L2119-L2130

Additionally, the documentation for Python has been updated to clarify
that the `"..."` syntax does not mean "keep the rest at default," but
rather "include all other available servers."

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 (no sure how to add test for this)
- [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 *or* Added/Fixed/Improved ...
2026-03-04 07:31:27 +00:00
Kunall Banerjee 0b39e529e4 Change miniprofiler file extension to .miniprof.json (#50429)
The main intention behind this change is to support uploading these
files
to GitHub. `.miniprof` is not a supported extension by GitHub, but
`.json` is.

The only “downside” to this change is that the cleanup process will have
to look
for `.miniprof` files AND `.miniprof.json` files. Maybe we can remove
that change
at a later date?

Ref:
https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/attaching-files

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:

- Changed miniprofiler file extension to `.miniprof.json`
2026-03-04 07:18:52 +00:00
Conrad Irwin db763af144 Fix panic in remote workspaces (#50647)
Fixes ZED-4JD

Release Notes:

- Fix a panic when opening the remote server modal
2026-03-03 22:32:57 +00:00
Eric Holk 31f38f4764 Persist token count and scroll position across agent restarts (#50620)
Release Notes:

- Token counts and scroll position are restored when loading a previous
agent thread
2026-03-03 22:20:12 +00:00
John TurandConrad Irwin 844028e341 Fix handling of surface.configure on Linux (#50640)
Closes #50574

Release Notes:

- Fixed Zed not being responsive on some Linux configurations

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
2026-03-03 21:47:57 +00:00
Ben Brandt 9d5668b759 agent: Fix subagent error display (#50638)
Since we were no longer just returning a string, we need to update the
content in both success and error modes to get a nice rendering
experience.

Release Notes:

- N/A
2026-03-03 21:32:11 +00:00
Max Brunsfeld 290b88ffeb Remove zeta2 feature flag (#50618)
Release Notes:

- N/A
2026-03-03 21:21:52 +00:00
Ben Kunkle 46f2623512 zeta2: Hashlines prompt format (#50623)
Closes #ISSUE

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

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-03-03 16:11:32 -05:00
Ben Kunkle 8b96c323f1 ep: API keys for OpenAI compatible (#50615)
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:

- Added support for providing an API key to OpenAI-compatible edit
prediction providers
2026-03-03 15:28:48 -05:00
Anthony Eid 4579b10b77 collab: Fix unable to rejoin shared project after leaving a call (#50630)
When a downstream project was disconnected from the host (e.g. the guest
left the call), `disconnected_from_host_internal` did not clear
`client_subscriptions`. These subscriptions hold entries in the
`Client`'s entity subscription map, so a subsequent
`join_remote_project` with the same project ID would fail with "already
subscribed to entity".

The fix adds `self.client_subscriptions.clear()` to
`disconnected_from_host_internal`, matching what `unshare_internal`
already does for the host side.

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

Release Notes:

- collab: Fix unable to rejoin project bug ("already subscribed to
entity")
2026-03-03 19:46:08 +00:00
Oleksiy Syvokon b5c4e81489 ep: Predict by querying Baseten directly (#50626)
This can be used like `ep predict --provider
baseten:V0131GitMergeMarkersPrefix`. Since it doesn't require
load_project, it can be used with captured requests.


Release Notes:

- N/A
2026-03-03 21:09:26 +02:00
Anthony Eid ff0a927e6b git: Fix remote worktree support (#50614)
The main issue is that we weren't forwarding the proto messages through
the collab server to the host. After fixing that I added integration
tests to cover local worktrees, remote worktrees, and ssh worktrees.

I also fixed a bug with FakeRepository where it wouldn't name its
current branch as a worktree when calling git worktree, which doesn't
match the behavior of the git binary.

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

Release Notes:

- git: Fix bug that caused the git worktree picker from displaying and
creating worktrees over collab
2026-03-03 19:01:28 +01:00
Oleksiy Syvokon 7c2dc5b249 ep: Fix fetching rated-after (#50617)
Release Notes:

- N/A
2026-03-03 17:27:52 +00:00
Bennet Bo Fenner 553b1617d4 Only use StreamingEditFileTool when streaming is available (#50616)
Release Notes:

- N/A
2026-03-03 17:16:42 +00:00
Conrad IrwinandJakub Konka af2d39d1a9 Try to fix auto-updates when Explorer.exe holds Zed.exe (#50332)
Release Notes:

- Windows: make auto-update more robust in the face of apps holding the
Zed.exe handle

---------

Co-authored-by: Jakub Konka <kubkon@jakubkonka.com>
2026-03-03 17:47:35 +01:00
Jakub KonkaandMiguel Raz Guzman Macedo c3af177a7c auto_update_helper: Rollback for all errors including FileNotFound (#50607)
We would mark `FileNotFound` as success and progress the update loop
which does not make much sense.

Release Notes:

- Do not skip update roll back in presence of FileNotFound errors on Windows.

Co-authored-by: Miguel Raz Guzman Macedo <raz@zed.dev>
2026-03-03 17:12:51 +01:00
Chriss4123 c3f05a7060 Fix Linux watcher cleanup for recreated directories (#50412)
## Problem
- On Linux, non-recursive watcher registrations remained path-cached
after deleting and recreating a directory in the same session.
- The recreated directory was not re-watched, so newly created child
entries under that path could be missing.

## Summary
- Remove directory watcher registrations when worktree paths are removed
from snapshot state.
- Ensure recreated directories can be watched again on Linux by allowing
`scan_dir` to re-add fresh watches.
- Add a Linux integration regression test for directory delete/recreate
path reuse and child file creation.

## Testing
- `cargo test -p project --features test-support --test integration
test_recreated_directory_receives_child_events -- --exact`
- `cargo test -p project --features test-support --test integration
test_rescan_and_remote_updates -- --exact`

## Related
- #46709

Release Notes:

- Fixed Linux worktree file watching so child entries appear after
deleting and recreating a directory at the same path.
2026-03-03 10:11:51 -06:00
Cole Miller 5d5793ba6a git: Fix commit message buffer header not being disabled after cloning commit view (#50606)
Release Notes:

- Fixed extraneous buffer header when splitting the commit view.
2026-03-03 15:52:00 +00:00
+30 3a7db9852c Add "Start Thread in New Worktree" (#49141)
Add the thread target selector in the agent panel behind the
`agent-git-worktrees` flag:

<img width="590" height="121" alt="Screenshot 2026-03-02 at 11 50 47 PM"
src="https://github.com/user-attachments/assets/17ee3303-7e01-4e40-bb84-1e7e748a3196"
/>

- Add a "Start Thread In..." dropdown to the agent panel toolbar, gated
behind `AgentV2FeatureFlag`
- Options: "Local Project" (default) and "New Worktree"
- The "New Worktree" option is disabled when there's no git repository
or in collab mode

Closes AI-34

Release Notes:

- N/A

---------

Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
Co-authored-by: Oleksiy Syvokon <oleksiy@zed.dev>
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Co-authored-by: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com>
Co-authored-by: Remco Smits <djsmits12@gmail.com>
Co-authored-by: morgankrey <morgan@zed.dev>
Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com>
Co-authored-by: Ben Kunkle <ben@zed.dev>
Co-authored-by: Finn Evers <finn@zed.dev>
Co-authored-by: Bennet Bo Fenner <bennet@zed.dev>
Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
Co-authored-by: MostlyK <135974627+MostlyKIGuess@users.noreply.github.com>
Co-authored-by: cameron <cameron.studdstreet@gmail.com>
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Co-authored-by: John Tur <john-tur@outlook.com>
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Co-authored-by: Wuji Chen <chenwuji2000@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
Co-authored-by: Cole Miller <cole@zed.dev>
Co-authored-by: Kasper Nyhus <kanyhus@gmail.com>
Co-authored-by: dino <dinojoaocosta@gmail.com>
Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Co-authored-by: Josh Robson Chase <josh@robsonchase.com>
Co-authored-by: ozacod <47009516+ozacod@users.noreply.github.com>
Co-authored-by: ozacod <ozacod@users.noreply.github.com>
Co-authored-by: Xiaobo Liu <cppcoffee@gmail.com>
Co-authored-by: Lena <241371603+zelenenka@users.noreply.github.com>
Co-authored-by: 0x2CA <2478557459@qq.com>
Co-authored-by: Joseph T. Lyons <JosephTLyons@gmail.com>
Co-authored-by: Albab Hasan <155961300+Albab-Hasan@users.noreply.github.com>
Co-authored-by: KyleBarton <kjb@initialcapacity.io>
Co-authored-by: Kunall Banerjee <hey@kimchiii.space>
Co-authored-by: Lukas Wirth <lukas@zed.dev>
Co-authored-by: Tom Houlé <13155277+tomhoule@users.noreply.github.com>
Co-authored-by: Nikhil Pandey <nikhil@nikhil.com.np>
Co-authored-by: Mikayla Maki <mikayla@zed.dev>
Co-authored-by: dancer <144584931+dancer@users.noreply.github.com>
Co-authored-by: Kirill Bulatov <kirill@zed.dev>
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
2026-03-03 15:25:36 +00:00
Daniel LlamasandClaude Opus 4.6 f00d8f030c agent_ui: Make file mention chips clickable to open files (#46751)
### Summary

Makes file mention chips in the AI chat input clickable to open the
referenced files. Previously, chips like `@README.md` were purely visual
indicators with no interaction.

### Changes
- **Clickable mention chips**: Users can now click on file mentions in
the chat input to open those files in the editor
- **Support for all mention types**:
  - Files → Opens in editor
  - Files with line numbers → Opens and scrolls to line
  - Directories → Reveals in project panel
  - Threads → Navigates to thread
  - Rules → Opens rules library
  - URLs → Opens in browser
- **Handles files outside workspace**: Falls back to `open_abs_path()`
for files not in the current workspace

### Implementation

Threads `MentionUri` and `WeakEntity<Workspace>` through the crease
rendering pipeline:

1. Updated `insert_crease_for_mention()` to accept mention URI and
workspace references
2. Added click handler to `MentionCrease` component using `.when()` for
conditional attachment
3. Implemented file opening helpers that mirror the existing
`thread_view.rs::open_link()` logic

### Demo


https://github.com/user-attachments/assets/21b2afb7-7a86-4a0a-aba1-e24bb1b650c2

### Testing

Manually tested:

- [x] Clicking `@README.md` opens file
- [x] Clicking file with line numbers navigates correctly
- [x] Clicking directory reveals in project panel
- [x] Files outside workspace open via absolute path

### Files Changed

- `crates/agent_ui/src/mention_set.rs` - Thread URI/workspace through
pipeline
- `crates/agent_ui/src/ui/mention_crease.rs` - Add click handler and
file opening logic
- `crates/agent_ui/src/acp/message_editor.rs` - Update call sites

### Review feedback addressed

- Replaced `.when()` + `unwrap()` with `.when_some()` + `Option::zip()`
(`0e36efb4eb`)
- De-duplicated `open_file` and `open_file_at_line` into a single
function with `Option<RangeInclusive<u32>>` (`dbcbb69a4b`)
  - Rebased onto latest `main` and resolved conflicts

  Also update item 2 under Implementation from:
_Added click handler to MentionCrease component using `.when()` for
conditional attachment_

  to:
_Added click handler to MentionCrease component using `.when_some()`
with `Option::zip()` for conditional attachment_

### Release Notes:

- agent: File mention chips in the chat input are now clickable and will
open the referenced files in the editor.

Closes  #46746

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 16:06:22 +01:00
Oleksandr KholiavkoandAnthony Eid d4634441e2 Add CSV preview with live table view and interactive features (#48207)
## **Description:**

**Context:**
This PR introduces an initial CSV preview feature for Zed, building upon
two previously merged infrastructure PRs:
- [#46341](https://github.com/zed-industries/zed/pull/46341) - Data
table dynamic column support (removed const generics)
- [#46190](https://github.com/zed-industries/zed/pull/46190) - Variable
row height mode for data tables

This implementation is based on the [original draft PR
#44344](https://github.com/zed-industries/zed/pull/44344), which has
been carefully decomposed into smaller, reviewable pieces.

---

#### **Features Included:**

**Core Infrastructure:**
- Live CSV parsing with smart debouncing (200ms cooldown)
- Performance monitoring with built-in timing metrics (not displayed in
UI yet)
- Automatic file change detection and re-parsing
- Support for quoted fields, multiline cells, and escaped characters

**Table Display:**
- Variable row height rendering with fallback to uniform mode
(switchable via settings)
- Draggable column resizing (reusing existing data table infrastructure)
- Row identifiers supporting both source line numbers and sequential row
numbers
- Configurable font rendering (UI font vs monospace)
- Tooltips showing full cell content on hover

**Interactive Features:**
- Column sorting (ascending/descending) with visual indicators

**Settings Panel:**
- Toggle between variable/uniform row rendering
- Font type selection (UI/monospace)
- Row identifier type configuration
- Debug information display
- Multiline cell rendering options

---

#### **Features Intentionally Removed for This PR:**

To reduce complexity and review scope, the following features were
temporarily reverted and will be reintroduced in subsequent PRs:

- ❌ Settings pannel with performance metrics overlay
- ❌ Cell selection (single, multiple, and range selections)
- ❌ Keyboard navigation with arrow keys and selection extension
- ❌ Copy functionality supporting CSV, TSV, and Markdown table formats
- ❌ Inline cell editing with file persistence
- ❌ Viewport following for large datasets
- ❌ Column filtering and search capabilities

These removals were done via "time-machine" commits that cleanly nuked
vertical slices of functionality from the complete implementation.

---

**Technical Implementation:**

The feature is organized into a dedicated `csv_preview` crate with the
following structure:

```
crates/csv_preview/
├── src/
│   ├── csv_preview.rs          # Main view and coordination logic
│   ├── parser.rs               # CSV parsing and editor integration
│   ├── settings.rs             # Configuration types and defaults
│   ├── table_data_engine.rs    # Data transformation logic
│   ├── renderer/               # UI rendering modules
│   │   ├── preview_view.rs     # Main render implementation
│   │   ├── render_table.rs     # Table component assembly
│   │   ├── table_cell.rs       # Individual cell rendering
│   │   ├── table_header.rs     # Header with sorting controls
│   │   └── row_identifiers.rs  # Line number column
│   └── types/                  # Core data structures
│       ├── table_like_content.rs
│       ├── coordinates.rs      # Display vs data coordinate systems
│       └── table_cell.rs
```

**Key architectural decisions:**
- **Dual coordinate system**: Separates data indices from display
indices to support sorting/filtering
- **Component reuse**: Leverages existing `data_table` infrastructure
from the keymap editor

---

**Integration:**
- Registers `csv::OpenPreview` action (currently without default
keybindings)
- Follows the same workspace integration pattern as `markdown_preview`
and `svg_preview`
- Automatically detects `.csv` file extensions
- Tab integration with appropriate icons and naming

---

**Code Structure Note:**
Some code structures, types, and documentation may appear redundant or
over-engineered in this initial implementation. This is intentional -
the feature was developed as a complete system and then decomposed by
functionality rather than being built incrementally. The "extra"
infrastructure supports features that were removed for this PR but will
be reintroduced in subsequent ones.

This approach was chosen over extensive refactoring because:
1. The complete feature took 200+ commits to develop with significant
rewrites
2. Clean extraction of vertical slices was more feasible than rebuilding
incrementally
3. The end state will utilize all these components, making current
"redundancy" temporary

I apologize for any inconvenience this may cause during review, but the
alternative would have required significant refactoring effort just to
make intermediate states "prettier," which seemed counterproductive.

---

**Future Work:**
This lays the groundwork for upcoming PRs that will reintroduce the
removed features:
- Cell selection and keyboard navigation
- Copy functionality with multiple output formats
- Inline editing capabilities with undo/redo
- Column filtering and search
- TSV and other delimiter support
- Improved horizontal scrolling behavior
- Settings persistence

**Testing:**
Includes test fixtures demonstrating multiline cell handling, various
column counts, and edge cases.

---

**Release Notes:**

- N/A This is feature flagged

---------

Co-authored-by: Anthony Eid <anthony@zed.dev>
2026-03-03 15:49:40 +01:00
Umesh Yadav 2c08098390 language_models: Handle usage-only events with empty choices in OpenRouter (#50603)
Closes #50569

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)

Previously, OpenRouter responses containing only usage data (without any
choices) would cause an error. Now the mapper properly emits usage
updates
for these events without failing.

Release Notes:

- Fixed an error when OpenRouter returns a usage-only event with empty
choices.
2026-03-03 13:58:47 +00:00
Tom ZaspelandDanilo Leal 03942eb249 Add file icons for YAML, Helm and GitLab (#50529)
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)

I used the icons from here:
- GitLab: https://about.gitlab.com/press/press-kit/
- Helm: https://www.svgrepo.com/svg/330624/helm
- Yaml: https://icons.getbootstrap.com/icons/filetype-yml/

FYI: I'm not familiar with Rust please review the rust code.

Release Notes:

- Added file icons for YAML, Helm and GitLab files, and used the Docker
icon for `Containerfile`.

---------

Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
2026-03-03 12:58:13 +00:00