Commit log

8aea362 v0.221.x preview

Joseph T. Lyons created

099650f ep: Check whether predictions worsen brace balance (#47301)

Click to expand commit body
Release Notes:

- N/A

Oleksiy Syvokon created

40fe799 Use arithmetic expansion instead of `expr` in `./script/clear-target-dir-if-larger-than` (#47298)

Click to expand commit body
Fixes CI failures when the target dir is 0GB in size, which causes
`expr` to output a non-zero exit code per the posix spec.

See exit status section of
https://www.man7.org/linux/man-pages/man1/expr.1p.html

Release Notes:

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

Ben Kunkle created

8fb5587 agent_ui: Alphabetically sort edited files in the panel & review view (#47300)

Click to expand commit body
This makes the ordering of files consistent with the Git diff view.

Release Notes:

- N/A

Danilo Leal created

1b0771e agent_ui: Improve UI for subagent calls (#47299)

Click to expand commit body
- Improves spacing between consecutive calls
- Only show disclosure button (i.e., ability to expand the card) when
there's actual content
- Fix font size being bigger than the actual thread
- Add gradient overlay to communicate that you can't scroll within the
card (expanding the subagent call will allow that in the near future)

Here's the result of it all, roughly:

<img width="600" height="890" alt="Screenshot 2026-01-21 at 12  26@2x"
src="https://github.com/user-attachments/assets/e5e4a544-611d-48f5-b00d-f69e869726c5"
/>

Release Notes:

- N/A

Danilo Leal created

1103f3b acp: Allow running NPM agents from registry (#47291)

Click to expand commit body
Release Notes:

- N/A

Ben Brandt created

69ea59d agent_servers: Don't fill in unneeded fields in settings when auto-adding new agent servers (#47293)

Click to expand commit body
Adding some serde magic to avoid adding a bunch of empty fields to the
settings file.

Release Notes:

- N/A

Ben Brandt created

db37fb0 themes: Fix One Light terminal cyan color (#45691)

Click to expand commit body
Closes #45075

The cyan terminal colors in One Light were incorrectly set to the same
values as green, making them indistinguishable. This was introduced in
https://github.com/zed-industries/zed/pull/44912

Release Notes:

- Fixed terminal cyan color displaying as green in One Light theme

Mateo Kruk created

5e1b7ae agent_ui: Fix keybinding conflict with editing queued messages (#47290)

Click to expand commit body
This PR fixes `shift-e` being used for triggering edits in queued
messages, which breaks writing simple capital E in the editor.

Release Notes:

- N/A

Danilo Leal created

5751aeb languages: Fix `poetry` environment discovery on Linux (#47100)

Click to expand commit body
Closes #47098 

The root cause of this issue is related to how `Poetry` (and the
upstream `pet-poetry` library) handles path hashing. While perhaps it's
an upstream behavior, we can easily fix it on the Zed side.

The related code are

https://github.com/zed-industries/zed/blob/7ce845210d3af82a57a7518e0abe8c167d60cc6a/crates/languages/src/python.rs#L1181-L1211

In my debugging, I found that `worktree_root` takes the form
`/home/user/project`, but `config.workspace_directories` often ends up
as `/home/user/project/`(with a trailing slash). Normally this wouldn't
be an issue, but `Poetry` generates environment names based on the hash
of the absolute path. Since the hashes for `/home/user/project` and
`/home/user/project/` are different, `pet-poetry` fails to find the
environment.

The fix is straightforward: we just need to ensure the trailing `/` is
removed so the hashes match.

Release Notes:

- Fixed poetry environment not discovered on linux

Xin Zhao created

ed29b46 project_panel: Fix "Add Folder to Project" menu hidden on remote projects (#47283)

Click to expand commit body
Fixes an unintended behavioral change from #40838.

Release Notes:

- Fixed "Add Folder to Project" and "Remove from Project" menu items
being incorrectly hidden on remote projects.

Smit Barmase created

a53017c ep: Don't compute n-grams for regions that match exactly (#47281)

Click to expand commit body
This makes delta-chrF computation ~50 faster.

Release Notes:

- N/A

Oleksiy Syvokon created

a608ee6 remote_server: Fix remote project search include/exclude filters for multiple worktrees (#47280)

Click to expand commit body
Closes #45772

Release Notes:

- Fixed project search include/exclude filters not working correctly in
remote project with multiple folders.

Smit Barmase created

b22d129 acp: Filter out built-in agents from the registry (#47279)

Click to expand commit body
Release Notes:

- N/A

Ben Brandt created

6ab03c6 onboarding: Fix theme picker always updating theme based on system appearance (#47245)

Click to expand commit body
The settings store separate themes for Light and Dark modes. When the
user clicks a theme, the code uses the system appearance to decide which
to update, rather than the mode the user selected in the UI. This causes
the wrong theme to be saved when the system appearance differs from the
selected mode.

<img width="746" height="324" alt="image"
src="https://github.com/user-attachments/assets/b8f8d937-172d-4da8-b572-4f3db7f1de9a"
/>

Release Notes:

- Fixed onboarding page sometimes rendering the wrong theme

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: MrSubidubi <finn@zed.dev>

Michael Hackner , Claude Opus 4.5 , and MrSubidubi created

7bd3075 open_ai: Support reasoning content (#43662)

Click to expand commit body
Support for Kimi K2 Thinking

Release Notes:

- Added support for thinking traces when using OpenAI-API-compatible AI providers

---------

Co-authored-by: Bennet Bo Fenner <bennet@zed.dev>

Aero and Bennet Bo Fenner created

5731066 ep: Fix in-place processing (#47274)

Click to expand commit body
Release Notes:

- N/A

Oleksiy Syvokon created

67d3804 agent: Allow env overrides for extension and registry agents (#47275)

Click to expand commit body
Align the behavior with built-in and custom agents

Release Notes:

- N/A

Ben Brandt created

8c8639f git: Fix buffer diff crash that could occur during the stage all operation (#47265)

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

This crash happened because we were incorrectly merging pending and
unstaged hunks together by always using the pending hunk end offset as
the merged hunk bound instead of the max of both hunks.

The fix is to use `max()` when updating `buffer_offset_range.end` during
pending hunk merging, matching the behavior used for unstaged hunk
merging.

Release Notes:

- N/A

Anthony Eid created

a191444 gpui: Preserve rem_size context for deferred draws (#47263)

Click to expand commit body
Closes #46328

Release Notes:

- Fixed agent model selector cutting off models at the end of the list.

Smit Barmase created

21050e2 Fix nested request rate limiting deadlock for subagent edit_file (#47232)

Click to expand commit body
## Problem

When subagents use the `edit_file` tool, it creates an `EditAgent` that
makes its own model request to get the edit instructions. These "nested"
requests compete with the parent subagent conversation requests for rate
limiter permits.

The rate limiter uses a semaphore with a limit of 4 concurrent requests
per model instance. When multiple subagents run in parallel:

1. 3 subagents each hold 1 permit for their ongoing conversation streams
(3 permits used)
2. When all 3 try to use `edit_file` simultaneously, their edit agents
need permits too
3. Only 1 edit agent can get the 4th permit; the other 2 block waiting
4. The blocked edit agents can't complete, so their parent subagent
conversations can't complete
5. The parent conversations hold their permits, so the blocked edit
agents stay blocked
6. **Deadlock**

## Solution

Added a `bypass_rate_limit` field to `LanguageModelRequest`. When set to
`true`, the request skips the rate limiter semaphore entirely. The
`EditAgent` sets this flag because its requests are already "part of" a
rate-limited parent request.

(No release notes because subagents are still feature-flagged.)

Release Notes:
- N/A

---------

Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>

Richard Feldman and Zed Zippy created

ff35da2 agent_ui: Fix keybinding conflict with action to clean up the queue (#47254)

Click to expand commit body
This PR frees up `shift-backspace` to work as it did before. Now, the
action to remove the first queued message is now assigned to the
`cmd-shfit-backspace` keybinding, whereas the action to clear the entire
message queue is assigned to `cmd-alt-backspace`.

Release Notes:

- N/A

Danilo Leal created

aa4e94f docs: Replace ellipsis with proper character (#47250)

Click to expand commit body
Ultra nit PR to test some end-to-end PR creation workflow with AI.

Release Notes:

- N/A

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>

Danilo Leal and Claude Haiku 4.5 created

ece66be docs: Big reorganize (#45276)

Click to expand commit body
Release Notes:

- N/A 

Overview

Restructures the documentation navigation to be organized by user goals
rather than feature lists. Introduces a new "Working with Code" section
and reorganizes existing content into clearer groupings.

### Navigation Changes

**New top-level sections:**
- **Working with Code** — Groups editing, navigation, and execution
features by workflow
- **Reference** — Dedicated section for lookup-only content (settings,
actions, CLI)
- **Coming From...** — Migration guides grouped together

**Reorganized sections:**
- **Customization** — Renamed from "Configuration," focused on
appearance and keybindings
- **Account & Privacy** — Consolidated auth, privacy, and telemetry
pages

New Files

| File | Purpose |
|------|---------|
| `editing-code.md` | Overview page for editing features |
| `finding-navigating.md` | Overview page for navigation tools with
quick reference |
| `running-testing.md` | Overview page for tasks, debugger, and REPL |
| `reference/all-settings.md` | Settings reference (moved/renamed) |
| `reference/cli.md` | CLI reference (moved) |

### Content Moves

| Page | From | To |
|------|------|-----|
| Snippets | Customization | Working with Code → Editing Code |
| Code Completions | (flat) | Working with Code → Editing Code |
| Diagnostics | (flat) | Working with Code → Editing Code |
| Multibuffers | (flat) | Working with Code → Editing Code |
| Command Palette | (flat) | Working with Code → Finding & Navigating |
| Outline Panel | (flat) | Working with Code → Finding & Navigating |
| Tab Switcher | (flat) | Working with Code → Finding & Navigating |
| Tasks | (flat) | Working with Code → Running & Testing |
| Debugger | (flat) | Working with Code → Running & Testing |
| REPL | (flat) | Working with Code → Running & Testing |
| All Settings | Configuration | Reference |
| CLI | (various) | Reference

---------

Co-authored-by: Marshall Bowers <git@maxdeviant.com>
Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>

Katie Geer , Marshall Bowers , and Zed Zippy created

9c3dc21 Use `anyOf` instead of `oneOf` in keymap schema (#47248)

Click to expand commit body
Closes #ISSUE

Resolves some spurious warnings we were seeing in the keymap file due to
keybind declarations matching multiple possible shapes which is not
allowed with `oneOf` per the json-schema spec

Release Notes:

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

Ben Kunkle created

cd0b373 ep_cli: Add filter languages subcommand (#47242)

Click to expand commit body
Closes #ISSUE

Release Notes:

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

Ben Kunkle created

d630677 Fix config file watch task leak (#47246)

Click to expand commit body
Follow-Up-For:  #47243

Previously, we would detach tasks spawned to watch config files.
However, the task blocked on receiving a file event before checking if
the receiver for the updates channel was dropped, causing the task to
never exit. The fix here was to return the task explicitly, so that it
can be dropped instead of calling `.detach()` on it. There is definitely
a way to `select!` between the receiver being dropped and the next file
system event, but I couldn't figure it out in a reasonable amount of
time and decided it wasn't worth it.

Release Notes:

- Fixed an issue where a few file descriptors would be leaked each time
a project was closed

Ben Kunkle created

37185ea ep_cli: Fix "Too many open files" errors (#47243)

Click to expand commit body
Closes #ISSUE

Release Notes:

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

Ben Kunkle created

2ccca66 agent_ui: Add support for editing queued messages (#47234)

Click to expand commit body
This PR adds the ability to edit a queued message, which you can now do
by hitting `cmd-e` from the message editor, which will focus the first
queued message. To pull that off, I'm also making the queued messages
render as an editor, the same way we do with regular user messages. That
way, we ensure less layout shift when focusing in and out of the queued
message for editing and gain the ability to render context
buttons/creases the same way we do in the main message editor.


https://github.com/user-attachments/assets/fb68fd48-c0cd-491f-a7d9-5065a9151b0b

Note that in the video, I show the state in which you're still editing
in the moment in which the queued message would be sent. If that
happens, your queued message won't be sent even if you unfocus the
queued message editor. In this case, you need to explicitly hit "Send
Now".

Release Notes:

- Agent: Added the ability to edit queued messages.

Danilo Leal created

4731000 settings_ui: Remote project setting files support (#45292)

Click to expand commit body
Closes #ISSUE

Release Notes:

- settings_ui: Added support for viewing and updating project settings
files in remote projects

---------

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

Ben Kunkle and Mikayla created

a0728db Add --offset flag to ep cli (#47175)

Click to expand commit body
Release Notes:

- N/A

---------

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

Max Brunsfeld and Ben Kunkle created

a8bf82c debugger: Fix crash when dragging pane items to split view (#46806)

Click to expand commit body
## Summary

Fixes crash when dragging debugger panel items
(terminal/console/variables/frames) to another pane as split view.

  **Root causes:**
1. Double borrow panic - `pane_group.split()` was called synchronously
inside a `Context<Pane>` update, causing "cannot update Pane while it is
already being updated"
2. `unwrap()` calls that panic when items are in transition during drag
operations
3. `debug_assert!` in `pane_at_pixel_position` fails when `members` and
`bounding_boxes` are temporarily out of sync after deferred split

  **Fixes:**
- Defer entire split+move operation via `cx.spawn_in()` to avoid double
borrow
- Replace `unwrap()` with graceful early returns in `activate_item` and
`run_in_terminal`
- Handle `members.len() != bounding_boxes.len()` gracefully in
`pane_at_pixel_position`

Closes #46784

Closes #ISSUE

Release Notes:

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

---------

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

xcb3d and Anthony Eid created

9fce075 ep: Make --provider optional, skip prediction when results exist (#47225)

Click to expand commit body
When --provider is not provided, `ep` will now use whatever provider is
recorded in the data.

Release Notes:

- N/A

Oleksiy Syvokon created

8e48a16 Add `ep parse-output` command (#47220)

Click to expand commit body
This command takes raw LLM outputs (`predictions.actual_output`) that
could be generated elsewhere and parses them into a canonical unified
diff (`predictions.actual_patch`).

This is useful for simplifying the evaluation pipeline and for rerunning
the parser without having to generate LLM outputs.

Release Notes:

- N/A

Oleksiy Syvokon created

8870bd9 acp: Allow installing ACP agents from the registry (#47218)

Click to expand commit body
This is still behind a feature flag as the registry is still WIP, but
allows downloading binary agents from the registry on github.

Release Notes:

- N/A

Ben Brandt created

9a97c5c ep: Add a prompt with git-style merge markers (#47215)

Click to expand commit body
Release Notes:

- N/A

Oleksiy Syvokon created

d71fe4c agent_ui: Add `@diagnostics` mention to the thread (#42270)

Click to expand commit body
Closes #31351

# Diagnostics Mention in New Threads

## Overview

Adds the `@diagnostics` mention to the new Agent Panel threads so users
can inject current LSP diagnostics (errors by default) without switching
to a text thread. The diagnostics mention is fully integrated into ACP
mention parsing, the context picker, and the message-editor pipeline so
it round-trips cleanly and shows up in the standard `@` menu.

## Context

- **Request:** bring `/diagnostics` parity to the “New Thread” assistant
experience.
- **Scope:** diagnostics only; `/terminal` mention would be implemented
in a separate PR.
- **Docs:** updated Agent Panel docs + changelog.

## Implementation Details

1. **Mention plumbing**
- Added `MentionUri::Diagnostics` to `acp_thread`, including parsing
(`zed:///agent/diagnostics?include_warnings=true`) and icon/name
metadata.
- Tests ensure diagnostics links round-trip via Markdown mention
serialization.

2. **Context picker / completion**
- New `ContextPickerMode::Diagnostics` exposes an `@diagnostics` entry
in the mention menu.
- Completions turn `@diagnostics` into a fully fledged mention, reusing
the existing confirmation pipeline.

3. **Message editor + thread serialization**
- Resolving the mention calls the existing diagnostics collector from
`assistant_slash_commands`, embedding the tool output inline with other
context blocks (`<diagnostics>…</diagnostics>`).
- Thread-link handling ignores diagnostics backlinks so clicking them
doesn’t try to reopen nonexistent resources.
   

# How it looks
<img width="800" height="480" alt="image"
src="https://cf5gpe8lxo.ufs.sh/f/EmJ5Xl877qJO1mzC9Zrn8AmJZHeShC4RoUwvTMlF2tfPzj06"
/>

Release Notes:

- Allow mentioning diagnostics in the agent panel via `@diagnostics`

---------

Co-authored-by: Bennet Bo Fenner <bennet@zed.dev>

Mikhail Pertsev and Bennet Bo Fenner created

58051d6 languages: Fix symbol label for enum variants (#47210)

Click to expand commit body
Release Notes:

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

Lukas Wirth created

1ca5279 rope: Fix an unintentional panic (#47019)

Click to expand commit body
Avoids the panic in #46974

But should be solved by using `saturating_sub` on the `start_overshoot`
calculation, ref:
https://github.com/zed-industries/zed/pull/47046#issuecomment-3762855786


https://github.com/zed-industries/zed/blob/37715d5a50666baaa824eafec2131ee6d80f8e0b/crates/rope/src/chunk.rs#L403C5-L415C6

This function gets called with PANIC = false from `slice`. But if the
offset is outside the text, `log_err_char_boundary` will still panic,
because the first `if` doesn’t bail out early.

Release Notes:

- N/A

Signed-off-by: Marco Mihai Condrache <52580954+marcocondrache@users.noreply.github.com>

Marco Mihai Condrache created

164e37e remote: Bring back docker exit status mapping (#47206)

Click to expand commit body
cc https://github.com/zed-industries/zed/pull/45584, was removed in
#47200 fully due to breaking ssh
Also makes ZED_BUILD_REMOTE_SERVER a bit easier to use

Release Notes:

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

Lukas Wirth created

8d55527 remote: Fix connecting to remote with running server failing (#47203)

Click to expand commit body
Follow up to https://github.com/zed-industries/zed/pull/47200, fixing an
edge case where if the heartbeat failure disconnects us we get stuck in
an unconnectable state

Release Notes:

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

Lukas Wirth created

02a19f7 remote: Fix being unable to reconnect when the remote server dies (#47200)

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

Release Notes:

- Fixed remote connections getting stuck in limbo when the server side
dies unexpectedly

Lukas Wirth created

89e9ab9 project: Implement range formatting for remoting (#47194)

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

Release Notes:

- Added support for language range formatting in remoting setups

Lukas Wirth created

46b275b rope: Add missing early return in `log_err_char_boundary` (#47191)

Click to expand commit body
Closes ZED-465

Release Notes:

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

Lukas Wirth created

09ceec0 settings_ui: Prevent panic when trying to configure edit prediction providers for language (#47162)

Click to expand commit body
Closes #46502

The issue here was that we were not looking into the sub page stack when
looking headers up, resulting in an out of bounds index. This PR fixes
this.

Due to me also fixing another small bug in the UI (and adding proper
support for the breadcrumbs), I had to move quite some stuff around here
to get this to work. Namely, I made the `sub_page_stack` a field on the
`SettingsWindow` and now only store the `active_language` in a global to
ensure that we store scroll positions properly for all sub pages. For
that to work with the edit prediction provider page, I had to remove the
struct there and could just move that into a method, which was a nice
side effect there I suppose.

Release Notes:

- Fixed a crash that could occur when trying to edit edit prediction
providers in the settings UI.

Finn Evers created

4e06656 docs: Update some AI-related content (#47178)

Click to expand commit body
Clean up some writing and add content about newer features.

Release Notes:

- N/A

Danilo Leal created

0102848 Remove the unused file (#47176)

Click to expand commit body
Release Notes:

- N/A

Kirill Bulatov created

c1da016 agent: Patch image format bug (#45978)

Click to expand commit body
Closes #44694

Release Notes:

- Fixed images being converted to png but retaining old format

## Before:
<img width="574" height="327" alt="Screenshot 2026-01-02 at 5 34 24 PM"
src="https://github.com/user-attachments/assets/92331939-cebc-4f53-99fc-10d5181cf87e"
/>

## After:
<img width="638" height="489" alt="Screenshot 2026-01-02 at 5 34 36 PM"
src="https://github.com/user-attachments/assets/47c05906-fa56-4a53-abd4-790c42230772"
/>

---------

Co-authored-by: versecafe <147033096+versecafe@users.noreply.github.com>
Co-authored-by: MrSubidubi <finn@zed.dev>

Mason Palmer , versecafe , and MrSubidubi created

3e309ab ep: Fix teacher prompt formatting (#47172)

Click to expand commit body
Release Notes:

- N/A

Oleksiy Syvokon created

6265305 extension_host: Fix extension rebuild building in release mode (#47165)

Click to expand commit body
Release Notes:

- Fixed an issue where rebuilding a dev extension would compile the
extension in release and not debug mode.

Finn Evers created