Commit log

7671f34 agent: Create checkpoint before/after every edit operation (#36253)

Click to expand commit body
1. Previously, checkpoints only appeared when an agent's edit happened
immediately after a user message. This is rare (agent usually collects
some context first), so they were almost never shown. This is now fixed.

2. After this change, a checkpoint is created after every edit
operation. So when the agent edits files five times in a single dialog
turn, we will now display five checkpoints.

As a bonus, it's now possible to undo only a part of a long agent
response.

Closes #36092, #32917

Release Notes:

- Create agent checkpoints more frequently (before every edit)

Oleksiy Syvokon created

7993ee9 Suggest unsaved buffer content text as the default filename (#35707)

Click to expand commit body
Closes #24672

This PR complements a feature added earlier by @JosephTLyons (in
https://github.com/zed-industries/zed/pull/32353) where the text is
considered as the tab title in a new buffer. It piggybacks off that
change and sets the title as the suggested filename in the save dialog
(completely mirroring the same functionality in VSCode):

![2025-08-05 11 50
28](https://github.com/user-attachments/assets/49ad9e4a-5559-44b0-a4b0-ae19890e478e)

Release Notes:

- Text entered in a new untitled buffer is considered as the default
filename when saving

Igal Tabachnik created

485802b collab: Remove endpoints for issuing notifications from Cloud (#36249)

Click to expand commit body
This PR removes the `POST /users/:id/refresh_llm_tokens` and `POST
/users/:id/update_plan` endpoints from Collab.

These endpoints were added to be called by Cloud in order to push down
notifications over the Collab RPC connection.

Cloud now sends down notifications to clients directly, so we no longer
need these endpoints.

All calls to these endpoints have already been removed in production.

Release Notes:

- N/A

Marshall Bowers created

1e41d86 agent2: Set thread_id, prompt_id, temperature on request (#36246)

Click to expand commit body
Release Notes:

- N/A

Bennet Bo Fenner created

10a2426 agent2: Port profile selector (#36244)

Click to expand commit body
Release Notes:

- N/A

Bennet Bo Fenner created

91e6b38 Log agent servers stderr (#36243)

Click to expand commit body
Release Notes:

- N/A

Agus Zubiaga created

f630365 agent2: Implement prompt caching (#36236)

Click to expand commit body
Release Notes:

- N/A

Bennet Bo Fenner created

846ed6a search: Fix project search not rendering matches count (#36238)

Click to expand commit body
Follow up to https://github.com/zed-industries/zed/pull/36103/

Release Notes:

- N/A

Lukas Wirth created

708c434 workspace: Highlight where dragged tab will be dropped (#34740)

Click to expand commit body
Closes #18565

I could use some advice on the color palette / theming. A couple
options:

1. The `drop_target_background` color could be used for the border if we
didn't use it for the background of the tab. In VSCode, the background
color of tabs doesn't change as you're dragging, there's just a border
between tabs. My only concern with this option is that the current
`drop_target_background` color is a bit subtle when used for a small
area like a border.

2. Another option could be to add a `drop_target_border` theme color,
but I don't know how much complexity this adds to implementation
(presumably all existing themes would need to be updated?).

Demo:


https://github.com/user-attachments/assets/0b7c04ea-5ec5-4b45-adad-156dfbf552db

Release Notes:

- Highlight where a dragged tab will be dropped between two other tabs

---------

Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>

Daniel Sauble and Smit Barmase created

6f3cd42 agent2: Port Zed AI features (#36172)

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

f8b0105 project: Fix LSP TextDocumentSyncCapability dynamic registration (#36234)

Click to expand commit body
Closes #36213

Use `textDocument/didChange`
([docs](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_synchronization))
instead of `textDocument/synchronization`.

Release Notes:

- Fixed an issue where Dart projects were being formatted incorrectly by
the language server.

smit created

2a57b16 openai: Don't send prompt_cache_key for OpenAI-compatible models (#36231)

Click to expand commit body
Some APIs fail when they get this parameter

Closes #36215

Release Notes:

- Fixed OpenAI-compatible providers that don't support prompt caching
and/or reasoning

Oleksiy Syvokon created

d891348 search: Simplify search options handling (#36233)

Click to expand commit body
Release Notes:

- N/A

Lukas Wirth created

4f0b00b Add component NotificationFrame & CaptureAudio parts for testing (#36081)

Click to expand commit body
Adds component NotificationFrame. It implements a subset of MessageNotification as a Component and refactors MessageNotification to use NotificationFrame. Having some notification UI Component is nice as it allows us to easily build new types of notifications.

Uses the new NotificationFrame component for CaptureAudioNotification. 

Adds a CaptureAudio action in the dev namespace (not meant for
end-users). It records 10 seconds of audio and saves that to a wav file.

Release Notes:

- N/A

---------

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

David Kleingeld and Mikayla created

a3dcc76 openai: Don't send reasoning_effort if it's not set (#36228)

Click to expand commit body
Release Notes:

- N/A

Oleksiy Syvokon created

8d6982e search: Fix some inconsistencies between project and buffer search bars (#36103)

Click to expand commit body
- project search query string now turns red when no results are found
matching buffer search behavior
- General code deduplication as well as more consistent layout between
the two bars, as some minor details have drifted apart
- Tab cycling in buffer search now ends up in editor focus when cycling
backwards, matching forward cycling
- Report parse errors in filter include and exclude editors

Release Notes:

- N/A

Lukas Wirth created

23d0433 linux: Fix keyboard events not working on first start in X11 (#36224)

Click to expand commit body
Closes #29083

On X11, `ibus-x11` crashes on some distros after Zed interacts with it.
This is not unique to Zed, `xim-rs` shows the same behavior, and there
are similar upstream `ibus` reports with apps like Blender:

- https://github.com/ibus/ibus/issues/2697

I opened an upstream issue to track this:

- https://github.com/ibus/ibus/issues/2789

When this crash happens, we don’t get a disconnect event, so Zed keeps
sending events to the IM server and waits for a response. It works on
subsequent starts because IM server doesn't exist now and we default to
non-XIM path.

This PR detects the crash via X11 events and falls back to the non-XIM
path so typing keeps working. We still need to investigate whether the
root cause is in `xim-rs` or `ibus-x11`.

Release Notes:

- Fixed an issue on X11 where keyboard input sometimes didn’t work on
first start.

smit created

4d27b22 remote server: Use env flag to opt out of musl remote server build (#36069)

Click to expand commit body
Closes #ISSUE

This will allow devs to opt out of the musl build when developing zed by
running `ZED_BUILD_REMOTE_SERVER=nomusl cargo r` which also fixes remote
builds on NixOS.

Release Notes:

- Add a env flag (`ZED_BUILD_REMOTE_SERVER=nomusl`) to opt out of musl
builds when building the remote server

Alvaro Parker created

8366b6c workspace: Disable padding on zoomed panels (#36012)

Click to expand commit body
Continuation of https://github.com/zed-industries/zed/pull/31913

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


Release Notes:

- Disable padding on zoomed panels

Cretezy created

b1e8064 Support images in agent2 threads (#36152)

Click to expand commit body
- Support adding ImageContent to messages through copy/paste and through
path completions
- Ensure images are fully converted to LanguageModelImageContent before
sending them to the model
- Update ACP crate to v0.0.24 to enable passing image paths through the
protocol

Release Notes:

- N/A

---------

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

Cole Miller and Conrad Irwin created

e2ce787 editor: Limit target names in hover links multibuffer titles (#36207)

Click to expand commit body
Release Notes:

- N/A

Lukas Wirth created

b7c562f Bump `async-trait` (#36201)

Click to expand commit body
The latest release has span changes in it which prevents rust-analyzer
from constantly showing `Box` and `Box::pin` on hover as well as those
items polluting the go to definition feature on every identifier.

See https://github.com/dtolnay/async-trait/pull/293

Release Notes:

- N/A

Lukas Wirth created

3a711d0 Remove onboarding script (#36203)

Click to expand commit body
Just use `ZED_STATELESS=1 zed` instead!

Release Notes:

- N/A *or* Added/Fixed/Improved ...

Joseph T. Lyons created

b65e9af Add [f/]f to follow the next collaborator (#36191)

Click to expand commit body
Release Notes:

- vim: Add `[f`/`]f` to go to the next collaborator

Conrad Irwin created

eb9bbaa Add onboarding reset restore script (#36202)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

43ee604 acp: Clean up entry views on rewind (#36197)

Click to expand commit body
We were leaking diffs and terminals on rewind, we'll now clean them up.
This PR also introduces a refactor of how we mantain the entry view
state to use a `Vec` that's kept in sync with the thread entries.

Release Notes:

- N/A

Agus Zubiaga created

2acfa5e copilot: Fix Copilot fails to sign in on newer versions (#36195)

Click to expand commit body
Follow-up for #36093 and
https://github.com/zed-industries/zed/pull/36138

Since v1.355.0, `@github/copilot-language-server` has stopped responding
to `CheckStatus` requests if a `DidChangeConfiguration` notification
hasn’t been sent beforehand. This causes `CheckStatus` to remain in an
await state until it times out, leaving the connection stuck for a long
period before finally throwing a timeout error.

```rs
let status = server
    .request::<request::CheckStatus>(request::CheckStatusParams {
        local_checks_only: false,
    })
    .await
    .into_response() // bails here with ConnectionResult::Timeout
    .context("copilot: check status")?;
````

This PR fixes the issue by sending the `DidChangeConfiguration`
notification before making the `CheckStatus` request. It’s just an
ordering change i.e. no other LSP actions occur between these two calls.
Previously, we only updated our internal connection status and UI in
between.

Release Notes:

- Fixed an issue where GitHub Copilot could get stuck and fail to sign
in.

smit created

1a169e0 git: Clear set of dirty paths when doing a full status scan (#36181)

Click to expand commit body
Related to #35780 

Release Notes:

- N/A

---------

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

Cole Miller and Kirill Bulatov created

5a9546f Add alt-s to helix mode (#33918)

Click to expand commit body
Closes #31562

Release Notes:

- Helix: bind alt-s to SplitSelectionIntoLines

---------

Co-authored-by: Ben Kunkle <ben@zed.dev>

Mostafa Khaled and Ben Kunkle created

9a2b7ef helix: Change f and t motions (#35216)

Click to expand commit body
In vim and zed (vim and helix modes) typing "tx" will jump before the
next `x`, but typing it again won't do anything. But in helix the cursor
just jumps before the `x` after that. I added that in helix mode.
This also solves another small issue where the selection doesn't include
the first `x` after typing "fx" twice. And similarly after typing "Fx"
or "Tx" the selection should include the character that the motion
startet on.

Release Notes:

- helix: Fixed inconsistencies in the "f" and "t" motions

fantacell created

20be133 helix: Allow yank without a selection (#35612)

Click to expand commit body
Related https://github.com/zed-industries/zed/issues/4642

Release Notes:
- Helix: without active selection, pressing `y` in helix mode will yank
a single character under cursor.

---------

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

Romans Malinovskis and Conrad Irwin created

528d56e keymap_ui: Add open keymap JSON button (#36182)

Click to expand commit body
Closes #ISSUE

Release Notes:

- Keymap Editor: Added a button in the top left to allow opening the
keymap JSON file. Right clicking the button provides shortcuts to
opening the default Zed and Vim keymaps as well.

Ben Kunkle created

f514c7c Emit a `BreadcrumbsChanged` event when associated settings changed (#36177)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/36149

Release Notes:

- Fixed a bug where changing the `toolbar.breadcrumbs` setting didn't
immediately update the UI when saving the `settings.json` file.

Joseph T. Lyons created

ba2c45b Add FutureExt::with_timeout and use it for for Room::maintain_connection (#36175)

Click to expand commit body
Release Notes:

- N/A

---------

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

David Kleingeld and Antonio Scandurra created

e5402d5 Allow editing Agent2 messages (#36155)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Antonio Scandurra <me@as-cii.com>
Co-authored-by: Agus Zubiaga <agus@zed.dev>

Conrad Irwin , Antonio Scandurra , and Agus Zubiaga created

ffac8c5 editor: Render all targets in go to def multbuffer title (#36167)

Click to expand commit body
Release Notes:

- N/A

Lukas Wirth created

b3d048d Add back `DeletePathTool` to agent2 (#36168)

Click to expand commit body
This was probably removed accidentally as a result of a merge conflict.

Release Notes:

- N/A

Antonio Scandurra created

8e4f30a project: Print error causes when failing to spawn lsp command (#36163)

Click to expand commit body
cc https://github.com/zed-industries/zed/issues/34666

Display printing anyhow errors only renders the error itself, but not
any of its causes so we've been dropping the important context when
showing the issue to the users.

Release Notes:

- N/A

Lukas Wirth created

0291db0 git: Add handler to get default branch on remote (#36157)

Click to expand commit body
Closes #36150 

Release Notes:

- Fixed `git: branch` action not worked with ssh workflow

Alvaro Parker created

5bbdd1a docs: Update information in MSYS2 section (#36158)

Click to expand commit body
- we are about to drop Zed for MINGW64 because `crash-handler` uses a
symbol which is not presented in `msvcrt.dll`
- mention MSYS2 docs page and CLANGARM64 environment

Release Notes:

- N/A

Maksim Bondarenkov created

ab9fa03 UI for checkpointing (#36124)

Click to expand commit body
Co-authored-by: Antonio Scandurra <me@as-cii.com>

Release Notes:

- N/A

---------

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

Conrad Irwin and Antonio Scandurra created

5a6df38 docs: Add example of controlling reasoning effort (#36135)

Click to expand commit body
Release Notes:

- N/A

Oleksiy Syvokon created

32f9de6 Add grid support to GPUI (#36153)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Anthony <anthony@zed.dev>

Mikayla Maki and Anthony created

e67b2da Make alphabetical sorting the default (#32315)

Click to expand commit body
Follow up of this pr: #25148

Release Notes:

- Improved file sorting.
As described in #20126, I was fed up with lexicographical file sorting
in the project panel. The current sorting behavior doesn't handle
numeric segments properly, leading to unintuitive ordering like
`file_1.rs`, `file_10.rs`, `file_2.rs`.


## Example Sorting Results
Using `lexicographical` (default):
```
.
β”œβ”€β”€ file_01.rs
β”œβ”€β”€ file_1.rs
β”œβ”€β”€ file_10.rs
β”œβ”€β”€ file_1025.rs
β”œβ”€β”€ file_2.rs
```

Using alphabetical (natural) sorting:
```
.
β”œβ”€β”€ file_1.rs
β”œβ”€β”€ file_01.rs
β”œβ”€β”€ file_2.rs
β”œβ”€β”€ file_10.rs
β”œβ”€β”€ file_1025.rs
```

Tom Planche created

293992f In auto-update-helper, fix parsing of `--launch false` (#36148)

Click to expand commit body
This fixes an issue introduced in
https://github.com/zed-industries/zed/pull/34303 where, after an
auto-update was downloaded, quitting Zed would always restart Zed.

Release Notes:

- N/A

Max Brunsfeld created

665006c Move the cursor on search in Terminal if ViMode is active (#33305)

Click to expand commit body
Currently, the terminal search function doesn't work well with ViMode.
It matches the search terms, scrolls the active match in the view, but
it doesn't move the cursor to the match, which makes it useless for
navigating the scrollback in vimode.

With this improvement, if a user activates ViMode before the search Zed
moves the cursor to the active search terms. So, when the search dialog
is dismissed the cursor is places on the latest active search term and
it's possible to navigate the scrollback via ViMode using this place as
the starting point.


https://github.com/user-attachments/assets/63325405-ed93-4bf8-a00f-28ded5511f31

Release Notes:

- Improved the search function in the terminal when ViMode is activated

Aleksei Gusev created

09e90fb Use trace log level for potentially high-volume vsync duration log (#36147)

Click to expand commit body
This is an attempt to fix
https://github.com/zed-industries/zed/issues/36125

Release Notes:

- N/A

Max Brunsfeld created

8452532 agent2: Iterate on "new thread" selector in the toolbar (#36144)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

1d2eaf2 editor: Fix first `cmd-left` target for cursor in leading whitespace (#36145)

Click to expand commit body
Closes #35805

If the cursor is between column 0 and the indent size, pressing
`cmd-left` jumps to the indent. Pressing it again moves to the true
column 0. Further presses toggle between indent and column 0.

This PR changes the first `cmd-left` to go to column 0 instead of
indent. Toggling between is unaffected.

Release Notes:

- Fixed issue where pressing `cmd-left` with the cursor in the leading
spaces moved to the start of the text first. It now goes to the
beginning of the line first, then the start of the text.

smit created

a6e2e0d onboarding: Fix minimap typo on editing page (#36143)

Click to expand commit body
This PR fixes a small typo on the onboarding editing page where it
should be "Minimap" instead of "Mini Map"

Release Notes:

- N/A

Finn Evers created