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
2026-01-22 23:57:26 +05:30
WIP
2023-12-14 09:25:14 -07:00
2024-09-30 17:46:21 -04:00
2026-02-03 20:31:02 -07:00
2025-02-04 09:02:59 -05:00
2025-02-04 09:02:59 -05:00
2026-01-06 12:49:51 -08:00
2025-10-27 13:27:59 -04:00
2025-10-17 18:58:14 +00:00
2026-02-26 18:36:50 +01:00

Zed

Zed CI

Welcome to Zed, a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.


Installation

On macOS, Linux, and Windows you can download Zed directly or install Zed via your local package manager (macOS/Linux/Windows).

Other platforms are not yet available:

Developing Zed

Contributing

See CONTRIBUTING.md for ways you can contribute to Zed.

Also... we're hiring! Check out our jobs page for open roles.

Licensing

License information for third party dependencies must be correctly provided for CI to pass.

We use cargo-about to automatically comply with open source licenses. If CI is failing, check the following:

  • Is it showing a no license specified error for a crate you've created? If so, add publish = false under [package] in your crate's Cargo.toml.
  • Is the error failed to satisfy license requirements for a dependency? If so, first determine what license the project has and whether this system is sufficient to comply with this license's requirements. If you're unsure, ask a lawyer. Once you've verified that this system is acceptable add the license's SPDX identifier to the accepted array in script/licenses/zed-licenses.toml.
  • Is cargo-about unable to find the license for a dependency? If so, add a clarification field at the end of script/licenses/zed-licenses.toml, as specified in the cargo-about book.

Sponsorship

Zed is developed by Zed Industries, Inc., a for-profit company.

If you’d like to financially support the project, you can do so via GitHub Sponsors. Sponsorships go directly to Zed Industries and are used as general company revenue. There are no perks or entitlements associated with sponsorship.

S
Description
No description provided
Readme
411 MiB
0 Stars 1 Watchers 0 Forks
Languages
Rust 94.9%
JSON-with-Comments 2.7%
Python 0.8%
Inno Setup 0.3%
Tree-sitter Query 0.3%
Other 0.5%