Commit log

628a9cd thread view: Add link to docs in the toolbar plus menu (#36883)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

ad25aba remote_server: Improve error reporting (#33770)

Click to expand commit body
Closes #33736

Use `thiserror` to implement error stack and `anyhow` to report is to
user.
Also move some code from main to remote_server to have better crate
isolation.

Release Notes:

- N/A

---------

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

Gwen Lg and Kirill Bulatov created

99cee87 tab_switcher: Add support for diagnostics (#34547)

Click to expand commit body
Support to show diagnostics on the tab switcher in the same way they are
displayed on the tab bar. This follows the setting
`tabs.show_diagnostics`.

This will improve user experience when disabling the tab bar and still
being able to see the diagnostics when switching tabs

Preview:

<img width="768" height="523" alt="Screenshot From 2025-07-16 11-02-42"
src="https://github.com/user-attachments/assets/308873ba-0458-485d-ae05-0de7c1cdfb28"
/>


Release Notes:

- Added diagnostics indicators to the tab switcher

---------

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

Alvaro Parker and Kirill Bulatov created

823a001 acp: Show output for read_file tool in a code block (#36900)

Click to expand commit body
Release Notes:

- N/A

Cole Miller created

9cc006f acp: Update error matching (#36898)

Click to expand commit body
Release Notes:

- N/A

Conrad Irwin created

0470bac open_ai: Remove `model` field from ResponseStreamEvent (#36902)

Click to expand commit body
Closes #36901

Release Notes:

- Fixed use of Open WebUI as an LLM provider.

Michael Sloan created

4605b96 Fix constant thread creation on Windows (#36779)

Click to expand commit body
See
https://github.com/zed-industries/zed/issues/36057#issuecomment-3215808649

Fixes https://github.com/zed-industries/zed/issues/36057

Release Notes:

- N/A

John Tur created

949398c thread view: Fix some design papercuts (#36893)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Co-authored-by: Matt Miller <mattrx@gmail.com>

Danilo Leal , Conrad Irwin , Ben Brandt , and Matt Miller created

79e74b8 workspace: Allow disabling of padding on zoomed panels (#31913)

Click to expand commit body
Screenshot:

| Before | After |
| -------|------|
|
![image](https://github.com/user-attachments/assets/629e7da2-6070-4abb-b469-3b0824524ca4)
|
![image](https://github.com/user-attachments/assets/99e54412-2e0b-4df9-9c40-a89b0411f6d8)
|
|
![image](https://github.com/user-attachments/assets/e99da846-f39b-47b5-808e-65c22a1af47b)
|
![image](https://github.com/user-attachments/assets/ccd4408f-8cce-44ec-a69a-81794125ec99)
|


Release Notes:

- Added `zoomed_padding` to allow disabling of padding around zoomed
panels

Co-authored-by: Mikayla Maki <mikayla@zed.dev>

Cretezy and Mikayla Maki created

59af2a7 acp: Add telemetry (#36894)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>

Bennet Bo Fenner and Conrad Irwin created

c786c01 agent: Add section for agent servers in settings view (#35206)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Cole Miller <cole@zed.dev>

Danilo Leal and Cole Miller created

5fd29d3 acp: Model-specific prompt capabilities for 1PA (#36879)

Click to expand commit body
Adds support for per-session prompt capabilities and capability changes
on the Zed side (ACP itself still only has per-connection static
capabilities for now), and uses it to reflect image support accurately
in 1PA threads based on the currently-selected model.

Release Notes:

- N/A

Cole Miller created

f1204df Revert "workspace: Disable padding on zoomed panels" (#36884)

Click to expand commit body
Reverts zed-industries/zed#36012

We thought we didn't need this UI, but it turns out it was load bearing
:)

Release Notes:

- Restored the zoomed panel padding

Mikayla Maki created

2e1ca47 Make fields of `AiUpsellCard` private (#36888)

Click to expand commit body
This PR makes the fields of the `AiUpsellCard` private, for better
encapsulation.

Release Notes:

- N/A

Marshall Bowers created

5c346a4 kotlin: Specify default language server (#36871)

Click to expand commit body
As of
https://github.com/zed-extensions/kotlin/commit/db52fc3655df8594a89b3a6b539274f23dfa2f28,
the Kotlin extension has two language servers. However, following that
change, no default language server for Kotlin was configured within this
repo, which led to two language servers being activated for Kotlin by
default.

This PR makes `kotlin-language-server` the default language server for
the extension. This also ensures that the [documentation within the
repository](https://github.com/zed-extensions/kotlin?tab=readme-ov-file#kotlin-lsp)
matches what is actually the case.


Release Notes:

- kotlin: Made `kotlin-language-server` the default language server.

Finn Evers created

a102b08 Require confirmation for fetch tool (#36881)

Click to expand commit body
Using prompt injection, the agent may be tricked into making a fetch
request that includes unexpected data from the conversation in the URL.

As agent conversations may contain sensitive information (like private
code, or
potentially even API keys), this seems bad.

The easiest way to prevent this is to require the user to look at the
URL
before the model is allowed to fetch it.

Thanks to @ant4g0nist for bringing this to our attention.

Release Notes:

- agent panel: The fetch tool now requires confirmation.

Conrad Irwin created

2dc4f15 Revert "Capture `shorthand_field_initializer` and modules in Rust highlights (#35842)" (#36880)

Click to expand commit body
This PR reverts https://github.com/zed-industries/zed/pull/35842, as it
broke the syntax highlighting for `crate`:

### Before Revert

<img width="367" height="70" alt="Screenshot 2025-08-25 at 11 29 50 AM"
src="https://github.com/user-attachments/assets/ce9b8b59-4e89-43ed-84c7-95c0156b9168"
/>

### After Revert

<img width="353" height="69" alt="Screenshot 2025-08-25 at 11 32 17 AM"
src="https://github.com/user-attachments/assets/b6df5a21-64db-4abf-aa76-f085236da0c4"
/>

This reverts commit 896a35f7befce468427a30489adf88c851b9507d.

Release Notes:

- Reverted https://github.com/zed-industries/zed/pull/35842.

Marshall Bowers created

557753d acp: Add Reauthenticate to dropdown (#36878)

Click to expand commit body
Release Notes:

- N/A

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>

Bennet Bo Fenner and Conrad Irwin created

65fb17e acp: Remember following state (#36793)

Click to expand commit body
A beta user reported that following was "lost" when asking for
confirmation, I
suspect they moved their cursor in the agent file while reviewing the
change.
Now we will resume following when the agent starts up again.

Release Notes:

- N/A

Conrad Irwin created

2fe3dbe project: Remove redundant Option from parse_register_capabilities (#36874)

Click to expand commit body
Release Notes:

- N/A

Smit Barmase created

fda5111 Add CSS language injections for calls to `styled` (#33966)

Click to expand commit body
…emotion).

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

Release Notes:

- Added CSS language injection support for styled-components and emotion
in JavaScript, TypeScript, and TSX files.

Zach Riegel created

69127d2 acp: Simplify control flow for native agent loop (#36868)

Click to expand commit body
Release Notes:

- N/A

Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>

Antonio Scandurra and Bennet Bo Fenner created

db94954 agent2: Less noisy logs (#36863)

Click to expand commit body
Release Notes:

- N/A

Bennet Bo Fenner created

2b5a302 thread view: Prevent user message controls to be cut-off (#36865)

Click to expand commit body
In the thread view, when focusing on the user message, we display the
editing control container absolutely-positioned in the top right.
However, if there are no rules items and no restore checkpoint button
_and_ it is the very first message, the editing controls container would
be cut-off. This PR fixes that by giving it a bit more top padding.

Release Notes:

- N/A

Danilo Leal created

4c0ad95 acp: Show retry button for errors (#36862)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Antonio Scandurra <me@as-cii.com>

Bennet Bo Fenner and Antonio Scandurra created

8c83281 acp: Fix read_file tool flickering (#36854)

Click to expand commit body
We were rendering a Markdown link like `[Read file x.rs (lines
Y-Z)](@selection)` while the tool ran, but then switching to just `x.rs`
as soon as we got the file location from the tool call (due to an
if/else in the UI code that applies to all tools). This caused a
flicker, which is fixed by having `initial_title` return just the
filename from the input as it arrives instead of a link that we're going
to stop rendering almost immediately anyway.

Release Notes:

- N/A

Cole Miller created

dfc99de thread view: Add a few UI tweaks (#36845)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

fe5e812 Fix macOS arch reporting from `arch_ios` to `arch_arm` (#36217)

Click to expand commit body
```xml 
<key>arch_kind</key> 
<string>arch_arm</string> 
```

Closes #36037

Release Notes:

- N/A

versecafe created

c48197b util: Fix edge case when parsing paths (#36025)

Click to expand commit body
Searching for files broke a couple releases ago. It used to be possible
to start typing part of a file name, then select a file (not confirm it
yet) and then type in `:` and a line number to navigate directly to that
line.
The current behavior can be seen in the following screenshots. When the
`:` is typed, the selection is lost, since no files match any more.
<img width="552" height="370" alt="Screenshot From 2025-08-12 10-36-08"
src="https://github.com/user-attachments/assets/e4b4b613-7f0c-40d7-94c9-04d8ab541656"
/>
<img width="553" height="124" alt="Screenshot From 2025-08-12 10-36-25"
src="https://github.com/user-attachments/assets/843e9ecf-9e08-4fa6-9340-0388a957cbb2"
/>
<img width="549" height="370" alt="Screenshot From 2025-08-12 10-36-47"
src="https://github.com/user-attachments/assets/4a1bbbd8-268a-4ea8-999f-6cef1eb34a45"
/>

---

With this PR, the previous behavior is restored and can be seen in these
screenshots:

<img width="552" height="370" alt="Screenshot From 2025-08-12 10-36-08"
src="https://github.com/user-attachments/assets/466e1906-4735-47ae-a699-117bdd6490ca"
/>
<img width="549" height="370" alt="Screenshot From 2025-08-12 10-47-07"
src="https://github.com/user-attachments/assets/17f3acda-662d-4962-9eb8-4b494f211d26"
/>
<img width="549" height="370" alt="Screenshot From 2025-08-12 10-47-21"
src="https://github.com/user-attachments/assets/d98447fe-7377-4f4f-b3da-f690cd44c141"
/>

---

Release Notes:

- Adjusted the file finder to show matching file paths when adding the
`:row:column` to the query

Hendrik Müller created

11545c6 Add file icons to multibuffer view (#36836)

Click to expand commit body
<img width="1988" height="1420" alt="multi-buffer-icons-git-diff"
src="https://github.com/user-attachments/assets/48f9722f-ca09-4aa7-ad7a-0b7e85f440d9"
/>

Unfortunately, `cargo format` decided to reformat everything. Probably,
because of hitting the right margin, no idea. The essence of this change
is the following:

```rust
.map(|path_header| {
    let filename = filename
        .map(SharedString::from)
        .unwrap_or_else(|| "untitled".into());
    let path = path::Path::new(filename.as_str());
    let icon =
        FileIcons::get_icon(path, cx).unwrap_or_default();
    let icon = Icon::from_path(icon).color(Color::Muted);

    let label = Label::new(filename).single_line().when_some(
        file_status,
        |el, status| {
            el.color(if status.is_conflicted() {
                Color::Conflict
            } else if status.is_modified() {
                Color::Modified
            } else if status.is_deleted() {
                Color::Disabled
            } else {
                Color::Created
            })
            .when(status.is_deleted(), |el| el.strikethrough())
        },
    );

    path_header.child(icon).child(label)
})
``` 

Release Notes:

- Added file icons to multi buffer view

Aleksei Gusev created

a79aef7 acp: Never build a request with a tool use without its corresponding result (#36847)

Click to expand commit body
Release Notes:

- N/A

Antonio Scandurra created

d8bffd7 acp: Cancel editing when focus is lost and message was not changed (#36822)

Click to expand commit body
Release Notes:

- N/A

Bennet Bo Fenner created

54c7d9d Fix crash when opening inspector on Windows debug build (#36829)

Chuqiao Feng created

dd6fce6 multi_buffer: Pre-allocate IDs when editing (#36819)

Click to expand commit body
Something I came across when looking at `edit_internal`. Potentially
saves multiple re-allocations on an edit

Release Notes:

- N/A

tidely created

de5f87e languages: Add `module` to TS/JS keywords (#36830)

Click to expand commit body
<img width="376" height="166" alt="image"
src="https://github.com/user-attachments/assets/ae32d74c-387b-4809-a0d6-cfa97888347d"
/>


Release Notes:

- Improved syntax highlights for `module` keyword in TS/JS

versecafe created

1b91f3d acp: Fix accidentally reverted thread view changes (#36825)

Click to expand commit body
Merge conflict resolution for #36741 accidentally reverted the changes
in #36670 to allow expanding terminals individually and in #36675 to
allow collapsing edit cards. This PR re-applies those changes, fixing
the regression.

Release Notes:

- N/A

Cole Miller created

1976479 acp: Animate loading context creases (#36814)

Click to expand commit body
- Add pulsating animation for context creases while they're loading
- Add spinner in message editors (replacing send button) during the
window where sending has been requested, but we haven't finished loading
the message contents to send to the model
- During the same window, ignore further send requests, so we don't end
up sending the same message twice if you mash enter while loading is in
progress
- Wait for context to load before rewinding the thread when sending an
edited past message, avoiding an empty-looking state during the same
window

Release Notes:

- N/A

Cole Miller created

d49409c docs: Update settings in diagnostics.md (#36806)

Click to expand commit body
For project_panel, the diagnostics key seems to be `show_diagnostics`
not `diagnostics`
([source](https://github.com/zed-industries/zed/blob/main/crates/project_panel/src/project_panel_settings.rs#L149-L152)).
Updating the docs accordingly

Release Notes:

- N/A

itsaphel created

60ea475 project: Fix dynamic registration for textDocument/documentColor (#36807)

Click to expand commit body
From:
https://github.com/microsoft/vscode-languageserver-node/blob/d90a87f9557a0df9142cfb33e251cfa6fe27d970/protocol/src/common/protocol.colorProvider.ts#L50

Release Notes:

- N/A

Smit Barmase created

61bc1cc acp: Support launching custom agent servers (#36805)

Click to expand commit body
It's enough to add this to your settings:

```json
{
    "agent_servers": {
        "Name Of Your Agent": {
            "command": "/path/to/custom/agent",
            "args": ["arguments", "that", "you", "want"],
        }
    }
}
```

Release Notes:

- N/A

Antonio Scandurra created

70575d1 Remove redundant Cargo diagnostics settings (#36795)

Click to expand commit body
Removes `diagnostics.cargo.fetch_cargo_diagnostics` settings as those
are not needed for the flycheck diagnostics to run.
This setting disabled `checkOnSave` in rust-analyzer and allowed to
update diagnostics via flycheck in the project diagnostics editor with
the "refresh" button.

Instead, `"checkOnSave": false,` can be set manually as
https://zed.dev/docs/languages/rust#more-server-configuration example
shows and flycheck commands can be called manually from anywhere,
including the diagnostics panel, to refresh the diagnostics.

Release Notes:

- Removed redundant `diagnostics.cargo.fetch_cargo_diagnostics` settings

Kirill Bulatov created

ea42013 acp: Eagerly load all kinds of mentions (#36741)

Click to expand commit body
This PR makes it so that all kinds of @-mentions start loading their
context as soon as they are confirmed. Previously, we were waiting to
load the context for file, symbol, selection, and rule mentions until
the user's message was sent. By kicking off loading immediately for
these kinds of context, we can support adding selections from unsaved
buffers, and we make the semantics of @-mentions more consistent.

Loading all kinds of context eagerly also makes it possible to simplify
the structure of the MentionSet and the code around it. Now MentionSet
is just a single hash map, all the management of creases happens in a
uniform way in `MessageEditor::confirm_completion`, and the helper
methods for loading different kinds of context are much more focused and
orthogonal.

Release Notes:

- N/A

---------

Co-authored-by: Conrad <conrad@zed.dev>

Cole Miller and Conrad created

5da31fd acp: Remove ACP v0 (#36785)

Click to expand commit body
We had a few people confused about why some features weren't working due
to the fallback logic.

It's gone.

Release Notes:

- N/A

Conrad Irwin created

f48a8f2 thread view: Simplify tool call & improve required auth state UIs (#36783)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

d24cad3 Be more lenient when dealing with rust-analyzer's flycheck commands (#36782)

Click to expand commit body
Flycheck commands are global and makes sense to fall back to looking up
project's rust-analyzer even if the commands are run on a non-rust
buffer. If multiple rust-analyzers are found in the project, avoid
ambiguous commands and bail (as before).

Closes #ISSUE

Release Notes:

- Made it possible to run rust-analyzer's flycheck actions from anywhere
in the project

Kirill Bulatov created

153724a Clean up handling of serialized ssh connection ids (#36781)

Click to expand commit body
Small follow-up to #36714

Release Notes:

- N/A

Max Brunsfeld created

bc566fe agent2: Tweak usage callout border (#36777)

Click to expand commit body
Release Notes:

- N/A

Bennet Bo Fenner created

91b2a84 Add a few more testing features (#36778)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Marshall <marshall@zed.dev>

Mikayla Maki and Marshall created

e6267c4 Ensure `pane: swap item right` does not panic (#36765)

Click to expand commit body
This fixes a panic I randomly ran into whilst mistyping in the command
palette: I accidentally ran `pane: swap item right`in a state where no
items were opened in my active pane. We were checking for `index + 1 ==
self.items.len()` there when it really should be `>=`, as otherwise in
the case of no items this panics.

This PR fixes the bug, adds a test for both the panic as well as the
actions themselves (they were untested previously). Lastly (and mostly),
this also cleans up a bit around existing actions to update them with
how we generally handle actions now.

Release Notes:

- Fixed a panic that could occur with the `pane: swap item right`
action.

Finn Evers created

f649c31 Restructure persistence of remote workspaces to make room for WSL and other non-ssh remote projects (#36714)

Click to expand commit body
This is another pure refactor, to prepare for adding direct WSL support.

###  Todo

* [x] Represent `paths` in the same way for all workspaces, instead of
having a completely separate SSH representation
* [x] Adjust sqlite tables
    * [x] `ssh_projects` -> `ssh_connections` (drop paths)
    * [x] `workspaces.local_paths` -> `paths`
    * [x] remove duplicate path columns on `workspaces`
* [x] Add migrations for backward-compatibility

Release Notes:

- N/A

---------

Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>

Max Brunsfeld and Mikayla Maki created