4af77fb
docs: Remove outdated reference to simple-completion-language-server (#50732)
Click to expand commit body
Closes #46811
Release Notes:
- N/A
Finn Evers
created
f3e4c15
project_panel: Fix scrolling in empty area below file list (#50683)
Click to expand commit body
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>
Viraj Bhartiya
and
MrSubidubi
created
74e747a
repl: Support kernel language aliases in REPL (#49762)
Click to expand commit body
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
Kyle Kelley
created
55ae7b0
Increase timeout for `test_random_blocks` (#50724)
Click to expand commit body
See https://github.com/zed-industries/zed/actions/runs/22679055818
Release Notes:
- N/A
Cole Miller
created
83b05f1
Fix terminal path click failing when path is prefixed with '0:' (#50663)
Click to expand commit body
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)
87bc2aa
Add support for streaming tool input to more providers (#50682)
Click to expand commit body
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
Bennet Bo Fenner
created
0394341
ep: Collapse whitespace in deltaChrF (#50716)
Click to expand commit body
Release Notes:
- N/A
Oleksiy Syvokon
created
731a800
repl: Bump `runtimed` ecosystem packages and add support for V3 Jupyter Notebooks (#49914)
Click to expand commit body
- 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
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
866ec42
Remove deprecated Gemini 3 Pro Preview (#50503)
Click to expand commit body
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.
Richard Feldman
created
9b8ad01
ep: Option to configure custom Baseten environment (#50706)
Click to expand commit body
Release Notes:
- N/A
Oleksiy Syvokon
created
a1d4037
cloud_api_client: Send the organization ID in LLM token requests (#50517)
Click to expand commit body
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
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
Gaauwe Rombouts
created
d5137d7
git: Add trusted worktree support to git integrations (#50649)
Click to expand commit body
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
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
Dino
created
932981f
editor: Prevent underlines from appearing in minimap (#48510)
Click to expand commit body
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 ...
ᴀᴍᴛᴏᴀᴇʀ
created
90ddd58
agent: Move file_read_times logic to ActionLog instead of Thread (#50688)
Click to expand commit body
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>
Ben Brandt
,
Bennet Bo Fenner
, and
MrSubidubi
created
de10776
Add .cppm (C++20 module interface) to C++ file extensions (#50667)
Click to expand commit body
`.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
moleium
created
007e3ec
docs: Update docs for the subagent tool (#50689)
Click to expand commit body
Adds the actual tool name so people can turn it off if they want.
Release Notes:
- N/A
Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Co-authored-by: MrSubidubi <dev@bahn.sh>
Ben Brandt
,
Bennet Bo Fenner
, and
MrSubidubi
created
4668dbc
agent: Allow for expanding the subagent thread when permissions are requested (#50684)
Click to expand commit body
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>
Ben Brandt
,
Bennet Bo Fenner
, and
MrSubidubi
created
f0abcd8
More fixes for OpenGL initialization on Intel HD 4000 (#50680)
Click to expand commit body
Release Notes:
- N/A
John Tur
created
f023109
docs: Fix incorrect IAM terminology under Bedrock section (#50546)
Click to expand commit body
IAM users cannot be assumed; only IAM roles can be.
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
john
created
152d3ea
project_panel: Fix Reveal in File Manager for WSL projects (#50610)
Click to expand commit body
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).
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>
Casper van Elteren
and
MrSubidubi
created
e51cd49
doc: Improve documentation for language server `...` expansion (#50672)
Click to expand commit body
Hi! The `...` entry in the `language_servers` setting was only explained
in a single bullet point, which led users to misconfigure their setup,
particularly when overriding defaults that disable certain servers with
`!`.
Add a detailed explanation of how `...` works and a table of examples
using Ruby's real server configuration to illustrate the override
behavior.
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
Vitaly Slobodin
created
cdb34c3
python: Register LSP adapters directly to the LanguageRegistry (#50662)
Click to expand commit body
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/9c9337a8021f74511625517c3f4fa021106609eb/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 ...
Xin Zhao
created
9a6046c
Change miniprofiler file extension to `.miniprof.json` (#50429)
Click to expand commit body
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`
Kunall Banerjee
created
9c9337a
Add cmd-y binding for agent::Keep in agent diff review (#50656)
Click to expand commit body
Release Notes:
- Added `cmd-y` keybinding for accepting changes in the agent diff
review, matching the git diff review shortcut.
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
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 ...
Ben Kunkle
created
a5a1977
ep: API keys for OpenAI compatible (#50615)
Click to expand commit body
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
Ben Kunkle
created
3d3a66d
collab: Fix unable to rejoin shared project after leaving a call (#50630)
Click to expand commit body
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")
Anthony Eid
created
09e178d
ep: Predict by querying Baseten directly (#50626)
Click to expand commit body
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
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
Anthony Eid
created
d312312
Add ctrl-enter keybind (macOS) to type newline in search bars (#50420)
Click to expand commit body
I've been using
https://github.com/zed-industries/zed/issues/15046#issuecomment-3259286451
for half a year now, and it seems worthy of inclusion in the default
keymap.
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:
- Added `ctrl-enter` keybind on macOS to type a newline in search bars
e20905f
Only use `StreamingEditFileTool` when streaming is available (#50616)
Click to expand commit body
Release Notes:
- N/A
Bennet Bo Fenner
created
6195b70
Try to fix auto-updates when Explorer.exe holds Zed.exe (#50332)
Click to expand commit body
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>
Conrad Irwin
and
Jakub Konka
created
d2a71b0
auto_update_helper: Rollback for all errors including FileNotFound (#50607)
Click to expand commit body
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>
Jakub Konka
and
Miguel Raz Guzman Macedo
created
c19cc4c
Fix Linux watcher cleanup for recreated directories (#50412)
Click to expand commit body
## 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.
Chriss4123
created
38c7e63
git: Fix commit message buffer header not being disabled after cloning commit view (#50606)
Click to expand commit body
Release Notes:
- Fixed extraneous buffer header when splitting the commit view.
Cole Miller
created
7c9a9d4
Add "Start Thread in New Worktree" (#49141)
Click to expand commit body
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>
Richard Feldman
,
Oleksiy Syvokon
,
Ben Brandt
,
Anthony Eid
,
Remco Smits
,
morgankrey
,
Danilo Leal
,
Ben Kunkle
,
Finn Evers
,
Bennet Bo Fenner
,
Zed Zippy
,
MostlyK
,
cameron
,
Max Brunsfeld
,
John Tur
,
Conrad Irwin
,
Wuji Chen
,
Claude
,
Smit Barmase
,
Cole Miller
,
Kasper Nyhus
,
dino
,
Anthony Eid
,
Josh Robson Chase
,
ozacod
,
ozacod
,
Xiaobo Liu
,
Lena
,
0x2CA
,
Joseph T. Lyons
,
Albab Hasan
,
KyleBarton
,
Kunall Banerjee
,
Lukas Wirth
,
Tom Houlé
,
Nikhil Pandey
,
Mikayla Maki
,
dancer
,
Kirill Bulatov
, and
Danilo Leal
created
62b9a98
agent_ui: Make file mention chips clickable to open files (#46751)
Click to expand commit body
### 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>