Commit log

03bfbf2 zed 0.221.5

Anthony Eid created

2a223c1 copilot: Fix references to uninitialized CopilotAuth global (#47954)

Click to expand commit body
Closes: #46593 #32635 #47924

Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Co-authored-by: Cole Miller <cole@zed.dev>

Release Notes:

- Fixed issues with signing into Copilot via the Settings UI

---------

Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Co-authored-by: Cole Miller <cole@zed.dev>
Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
Co-authored-by: Anthony Eid <anthony@zed.dev>

Piotr Osiewicz , Anthony Eid , Cole Miller , Zed Zippy , and Anthony Eid created

185f016 client: Fix ACP registry blog post URL (#47881) (cherry-pick to stable) (#47893)

Click to expand commit body
Cherry-pick of #47881 to stable

----
Closes #47882

Release Notes:

- Fixed a typo in the link to the ACP registry URL blog post

---------

Co-authored-by: MrSubidubi <finn@zed.dev>

Co-authored-by: O. Bennett <illogic-al@users.noreply.github.com>
Co-authored-by: MrSubidubi <finn@zed.dev>

zed-zippy[bot] , O. Bennett , and MrSubidubi created

1284786 v0.221.x stable

Joseph T. Lyons created

ad22412 acp: Registry fixes (#47867)

Click to expand commit body
- **extensions_ui: Fix duplicated button element IDs preventing
uninstall (#47745)**
- **acp: Add agent server extension deprecation banner (#47817)**
- **acp: Add upsell banner for built-in agents in registry page
(#47853)**

Release Notes:

- Fixed extension uninstall button not working when an upgrade is
available.

---------

Co-authored-by: Dream <42954461+eureka928@users.noreply.github.com>
Co-authored-by: Marshall Bowers <git@maxdeviant.com>
Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com>

Ben Brandt , Dream , Marshall Bowers , and Danilo Leal created

2f297c3 debugger: Fix crash when splitting a pane by dragging a pane item that originated from that pane (#46806)

Click to expand commit body
Closes #46784

This panic was caused by a double borrow when the pane an item was moved too is the same pane the item originate from. The fix was using a window.defer to avoid the double lease, instead of updating in a Context<Pane>

Release Notes:

---------

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

xcb3d and Anthony Eid created

15488c9 Fix typing emoji (#47835) (cherry-pick to preview) (#47836)

Click to expand commit body
Cherry-pick of #47835 to preview

----
- **Revert "ui: Dismiss context menus when window loses focus
(#46866)"**
- **Revert "Preserve and restore focus across window activation cycles
(#47044)"**

Closes #ISSUE

Release Notes:

- (preview only) Fixed typing emoji using the macOS system palette
(cmd-ctrl-space)

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

zed-zippy[bot] and Conrad Irwin created

caf39c5 Bump to 0.221.4 for @probably-neb

Zed Zippy created

9ce27d9 acp: Improve the ACP registry UI (#47788) (cherry-pick to preview) (#47794)

Click to expand commit body
Cherry-pick of #47788 to preview

----
This PR adds some UI improvements to the ACP registry UI, already
including the URL for the soon-to-be-released blog post. I'm also
renaming the action to open the page from `zed: agent registry` to `zed:
acp registry`.

Release Notes:

- N/A

Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com>

zed-zippy[bot] and Danilo Leal created

9f9a34c git: Avoid unwrapping active repository in panel rendering (#47700) (cherry-pick to preview) (#47793)

Click to expand commit body
Cherry-pick of #47700 to preview

----
Closes ZED-43V
Closes ZED-3VK

Release Notes:

- N/A

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

zed-zippy[bot] and Cole Miller created

26699ff Fix language injections sticking after language comment removed (#46134) (cherry-pick to preview) (#47790)

Click to expand commit body
Cherry-pick of #46134 to preview

----
Closes #46104

Release Notes: 

- Fixed language injections sticking after language comment removed

---

This is working well for the Python SQL comments


![comment_sync_demo](https://github.com/user-attachments/assets/ba5160ce-4867-4b49-9f44-141ddc2730a1)

```python
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()

# sql
cmd = "SELECT col1, col2 FROM tbl"

df = spark.sql(  # sql
    """
    WITH cte AS (
        SELECT col1, col2, COUNT(*) AS n
        FROM tbl
        GROUP BY ALL
    )
    SELECT * FROM cte
    """
)
```


And go comments


![comment_sync_demo_go_updated](https://github.com/user-attachments/assets/73e81a94-e8fc-4dc3-82f8-09e966d35bc9)


```go
package main

func test() {
    var _ = /* sql */ `SELECT id, name FROM products`
    var _ = /* sql */ "SELECT id, name FROM products"

    var _ = /* sql */ `SELECT id, name FROM products`

    var _ = /* sql*/ "SELECT id, name FROM products"
}
```

Note: `f04b252dd9` was a simpler implementation that worked for
non-inline comments in Python, but produced the following Go behavior


![comment_sync_demo_go](https://github.com/user-attachments/assets/40336705-9799-4b0a-b457-4974d172e1c8)

---------

Co-authored-by: Joseph T. Lyons <JosephTLyons@gmail.com>

Co-authored-by: Jeff Brennan <42007840+jeffbrennan@users.noreply.github.com>
Co-authored-by: Joseph T. Lyons <JosephTLyons@gmail.com>

zed-zippy[bot] , Jeff Brennan , and Joseph T. Lyons created

5446339 zeta2: Remove `experimental_edit_prediction_context_retrieval` setting (#47783) (cherry-pick to preview) (#47787)

Click to expand commit body
Cherry-pick of #47783 to preview

----
Closes #ISSUE

Release Notes:

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

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

zed-zippy[bot] and Ben Kunkle created

e50615d zeta2: Remove `experimental_edit_prediction_context_retrieval` setting (#47783)

Click to expand commit body
Closes #ISSUE

Release Notes:

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

Ben Kunkle created

417dde6 askpass: Fix ssh auth not updating entered password on windows (#47755) (cherry-pick to preview) (#47760)

Click to expand commit body
Cherry-pick of #47755 to preview

----
Release Notes:

- Fixed mistyping the ssh password in the askpass prompt on windows
locking you out of retyping the correct one

Co-authored-by: Lukas Wirth <lukas@zed.dev>

zed-zippy[bot] and Lukas Wirth created

2084dbe Send some traffic to zeta2 for testing (#47710)

Click to expand commit body
Release Notes:

- N/A

Max Brunsfeld created

648ea40 remote_server: Avoid panic when writing to stderr (#47683) (cherry-pick to preview) (#47685)

Click to expand commit body
Cherry-pick of #47683 to preview

----
Closes ZED-4JM

Release Notes:

- N/A

---------

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

zed-zippy[bot] and Cole Miller created

c256bac Cap number of saved hang traces at 3 (#47674) (cherry-pick to preview) (#47693)

Click to expand commit body
Cherry-pick of #47674 to preview

----
Prevents unbounded grown of the `hang_traces` directory.

Release Notes:

- Fixed excessive disk space usage from the `hang_traces` directory.

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

zed-zippy[bot] and Cole Miller created

1b0cbb1 Fix remote server exit timeout (#47660) (cherry-pick to preview) (#47662)

Click to expand commit body
Cherry-pick of #47660 to preview

----
Was changed by mistake

Release Notes:

- N/A

Co-authored-by: Lukas Wirth <me@lukaswirth.dev>

Co-authored-by: John Tur <john-tur@outlook.com>
Co-authored-by: Lukas Wirth <me@lukaswirth.dev>

zed-zippy[bot] , John Tur , and Lukas Wirth created

846f3e1 acp: Check for claude login message in terminal-auth as well (#47642) (cherry-pick to preview) (#47643)

Click to expand commit body
Cherry-pick of #47642 to preview

----
Allows for the acp adapter to use terminal auth for this as well

Release Notes:

- N/A

Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>

zed-zippy[bot] and Ben Brandt created

b4df75d terminal: Fix double quoting of commands on Windows cmd.exe (#47534) (cherry-pick to preview) (#47627)

Click to expand commit body
Cherry-pick of #47534 to preview

----
Closes #47303 

The command quoting for `cmd` shell was first introduced (at least in
this case) in PR #41216 three months ago:


https://github.com/zed-industries/zed/blob/3d4582d4dc9145270650e12f9ce5a534b888f4a2/crates/project/src/terminals.rs#L202-L210

And a month ago, PR #42382 added command quoting for `cmd` in a
different place:


https://github.com/zed-industries/zed/blob/3d4582d4dc9145270650e12f9ce5a534b888f4a2/crates/util/src/shell.rs#L413-L434

As a result, the command is now quoted twice when using `cmd`. `cmd`
interprets the entire double-quoted string (e.g., ""command & args"") as
a single (invalid) executable name, and this would lead to an error like
“The system cannot find the path specified” in #47303 .

The solution is to remove the redundant manual quoting in `terminals.rs`
and rely on the centralized logic in `util/src/shell.rs`.

/cc @Veykril @reflectronic 

Release Notes:

- Fixed a bug where terminal tasks failed to start on Windows when using
`cmd.exe`.

Co-authored-by: Xin Zhao <zx0@mail.ustc.edu.cn>

zed-zippy[bot] and Xin Zhao created

0e10cea Bump to 0.221.3 for @osiewicz

Zed Zippy created

35eb5f6 copilot_chat: Fix Anthropic models not appearing in model picker (#47549) (cherry-pick to preview) (#47591)

Click to expand commit body
Cherry-pick of #47549 to preview

----
## Summary

Fixes #47540 - Anthropic Claude models not appearing in GitHub Copilot
Chat model picker.

## Problem

Users reported that Anthropic Claude models (Claude Sonnet 4, Claude
Opus 4, etc.) were not appearing in the model picker when using GitHub
Copilot Chat, even though:
- The GitHub Copilot API returns these models
- The models have `model_picker_enabled: true`
- Users have valid Copilot subscriptions with access to these models

## Root Cause

The issue was in the `ModelSupportedEndpoint` enum deserialization. The
enum only defined two variants:

```rust
pub enum ModelSupportedEndpoint {
    #[serde(rename = "/chat/completions")]
    ChatCompletions,
    #[serde(rename = "/responses")]
    Responses,
}
```

Anthropic Claude models use the `/v1/messages` endpoint, which wasn't
defined. When deserializing the API response, serde failed with:

```
Error("unknown variant `/v1/messages`, expected `/chat/completions` or `/responses`")
```

Because the crate uses resilient deserialization via
`deserialize_models_skip_errors()`, the entire Claude model was silently
skipped rather than causing a hard failure. This meant users saw no
error - the models simply didn't appear.

## Solution

### 1. Added `/v1/messages` endpoint variant

```rust
pub enum ModelSupportedEndpoint {
    #[serde(rename = "/chat/completions")]
    ChatCompletions,
    #[serde(rename = "/responses")]
    Responses,
    #[serde(rename = "/v1/messages")]
    Messages,  // NEW: Anthropic models use this endpoint
    #[serde(other)]
    Unknown,   // NEW: Future-proofing for unknown endpoints
}
```

### 2. Removed incorrect `dedup_by()` call

The previous code deduplicated models by family:

```rust
.dedup_by(|a, b| a.capabilities.family == b.capabilities.family)
```

This incorrectly filtered out model variants that share the same family
(e.g., `claude-sonnet-4` and `claude-sonnet-4-thinking`). Removed this
call to preserve all model variants.

### 3. Removed unused import

Removed `use itertools::Itertools;` which was only used for the
now-removed `dedup_by()`.

## Changes

| File | Change |
|------|--------|
| `crates/copilot_chat/src/copilot_chat.rs` | Added `Messages` and
`Unknown` variants to `ModelSupportedEndpoint` enum |
| `crates/copilot_chat/src/copilot_chat.rs` | Removed `.dedup_by()` call
that incorrectly filtered models |
| `crates/copilot_chat/src/copilot_chat.rs` | Removed unused
`itertools::Itertools` import |
| `crates/copilot_chat/src/copilot_chat.rs` | Added 8 new unit tests |

## Test Coverage

Added 8 new unit tests to ensure the fix works and prevent regression:

| Test | Purpose |
|------|---------|
| `test_models_with_pending_policy_deserialize` | Verifies models with
non-"enabled" policy states deserialize correctly (they're filtered
later) |
| `test_multiple_anthropic_models_preserved` | Verifies multiple Claude
models are not incorrectly deduplicated |
| `test_models_with_same_family_both_preserved` | Verifies models
sharing the same family (e.g., thinking variants) are both preserved |
| `test_mixed_vendor_models_all_preserved` | Verifies models from
different vendors (OpenAI, Anthropic, Google) are all preserved |
| `test_model_with_messages_endpoint_deserializes` | **Critical test**:
Verifies `/v1/messages` endpoint deserializes correctly |
| `test_model_with_unknown_endpoint_deserializes` | Verifies unknown
future endpoints deserialize to `Unknown` variant |
| `test_model_with_multiple_endpoints` | Verifies models with multiple
endpoints deserialize correctly |
| `test_supports_response_method` | Verifies the `supports_response()`
method logic for endpoint routing |

### Test Results

```
running 10 tests
test tests::test_model_with_messages_endpoint_deserializes ... ok
test tests::test_model_with_multiple_endpoints ... ok
test tests::test_model_with_unknown_endpoint_deserializes ... ok
test tests::test_models_with_pending_policy_deserialize ... ok
test tests::test_models_with_same_family_both_preserved ... ok
test tests::test_mixed_vendor_models_all_preserved ... ok
test tests::test_multiple_anthropic_models_preserved ... ok
test tests::test_resilient_model_schema_deserialize ... ok
test tests::test_supports_response_method ... ok
test tests::test_unknown_vendor_resilience ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
```

## How to Test Manually

1. Sign in to GitHub Copilot in Zed
2. Open the model picker (Agent panel → model selector dropdown)
3. Verify that Anthropic Claude models appear in the list:
   - Claude Sonnet 4
   - Claude Opus 4
   - Other Claude variants (if enabled in your GitHub Copilot settings)

## Checklist

- [x] Code compiles without errors
- [x] `./script/clippy --package copilot_chat` passes with no warnings
- [x] All unit tests pass
- [x] Change is focused on a single bug fix
- [x] No unrelated refactoring or feature additions


<img width="320" height="400" alt="Screenshot 2026-01-24 at 11 57 21 PM"

src="https://github.com/user-attachments/assets/d5e17e1b-da80-4f4d-a218-d50d35114a21"
/>


Release Notes:

- Fixed Anthropic models not appearing in the Copilot Chat model picker

---------

Co-authored-by: Piotr Osiewicz
<24362066+osiewicz@users.noreply.github.com>

Co-authored-by: Anil Pai <anilpai@users.noreply.github.com>
Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>

zed-zippy[bot] , Anil Pai , and Piotr Osiewicz created

a0f862a acp: Use the official ACP registry URL (#47564) (cherry-pick to preview) (#47566)

Click to expand commit body
Cherry-pick of #47564 to preview

----
Release Notes:

- N/A

Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>

zed-zippy[bot] and Ben Brandt created

68e98a5 zed 0.221.2

Anthony Eid created

957e0ab acp: Add one more registry ID to filter out (#47496) (cherry-pick to preview) (#47504)

Click to expand commit body
Cherry-pick of #47496 to preview

----
Release Notes:

- N/A

Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>

zed-zippy[bot] and Ben Brandt created

0d3f7e3 editor: Fix panics that could occur when content mask had negative bounds (#47327) (cherry-pick to preview) (#47502)

Click to expand commit body
Cherry-pick of #47327 to preview

----
Closes #47157

This panic happened because the editor was using `window.content_mask`
to get the visible bounds, which had a negative value for its height in
some cases.

This happened for three reasons:

1. `Bounds::from_corners` returns a negative size if callers pass in
corners where `bottom_right < top_left`. I originally wanted to add
error checking to this function but didn't, because it might be better
to move the error checking higher up. For now I'm going to push a fix
and figure out a better solution later

2. `Bounds::intersect` could return negative-sized bounds when the two
bounds didn't overlap, instead of returning a zero sized bounds.

3. `Style::paint` sometimes passed invalid corner values to
`Bounds::from_corners` (where the computed bottom-right was above/left
of the top-left).

Release Notes:

- editor: Fix a crash that could happen when editor visible line height
is zero

---------

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

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

zed-zippy[bot] , Anthony Eid , and Zed Zippy created

ac55cb8 copilot: Decouple authentication from the lifetime of any single Copilot instance (#47473) (cherry-pick to preview) (#47492)

Click to expand commit body
Cherry-pick of #47473 to preview

----
Users had trouble signing in due to us relying on the Copilot::global
being set, which was never the case. We've decided to use a dedicated
LSP instance just for handling auth of Copilot Chat and other goodies.
That instance is subscribed to by local Copilot instances for projects.
When the Auth instance changes it's state, local instances are prompted
to re-check their own sign in status.

Closes #47352

Co-authored-by: dino <dinojoaocosta@gmail.com>

Release Notes:

- Fixed authentication issues with Copilot.

---------

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

Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
Co-authored-by: dino <dinojoaocosta@gmail.com>
Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>

zed-zippy[bot] , Piotr Osiewicz , dino , and Zed Zippy created

4c37db6 copilot: Rename enabled_next_edit_suggestions setting to enable_next_edit_suggestions (#47484) (cherry-pick to preview) (#47490)

Click to expand commit body
Cherry-pick of #47484 to preview

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

Closes #ISSUE

Release Notes:

- N/A

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

Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
Co-authored-by: Marshall Bowers <marshall@zed.dev>

zed-zippy[bot] , Piotr Osiewicz , and Marshall Bowers created

4904fac copilot: Add the option to disable Next Edit Suggestions (#47438) (cherry-pick to preview) (#47481)

Click to expand commit body
Cherry-pick of #47438 to preview

----
Adds a new setting to GitHub Copilot to toggle the Next Edit Suggestions
feature, it is enabled by default.

## Motivations
Due to some current usability issues with this feature, see #46880, and
some personal anecdotes of using it, it is currently rough to utilize,
so this gives the option to disable it.

## Related
- #47071 
- #30124
- #44486
## Release Notes
- Adds the ability to disable GitHub Copilot's Next Edit Suggestions
feature.
## User Interface


![image](https://github.com/user-attachments/assets/5a3d7166-68dd-4f5b-a220-0a9bd9282cd5)
## Text Example
The text example will be adding a `z` variable to a `Point3D` class in
TypeScript.
### With Next Edit Suggestions
In this example I am able to just press auto-complete (press TAB) 3x.
```ts
class Point3D {
    x: number;
    y: number;
    z: number; // <-- Cursor before z: suggested

    constructor(x: number, 
                y: number
                , z: number // <-- Next Suggestion
                ) { 
        this.x = x;
        this.y = y;
        this.z = z; // <-- Last Suggestion
    }
}
```
### Without Next Edit Suggestions
```ts
class Point3D {
    x: number;
    y: number;
    z: number; // <-- Cursor before z: the only suggestion

    constructor(x: number, y: number) {
        this.x = x;
        this.y = y;
    }
}
```

Co-authored-by: André Eriksson <andreeriksson444@gmail.com>

zed-zippy[bot] and André Eriksson created

ae5eb75 acp: Promote registry as default way of installing new agents (#47464) (cherry-pick to preview) (#47470)

Click to expand commit body
Cherry-pick of #47464 to preview

----
Release Notes:

- acp: Add the ability to install new Agents via the ACP Registry

Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>

zed-zippy[bot] and Ben Brandt created

2def683 Bump to 0.221.1 for @cole-miller

Zed Zippy created

0623642 Add "Agent Panel Error Shown" telemetry with ACP error details (#46848) (cherry-pick to preview) (#47428)

Click to expand commit body
Cherry-pick of #46848 to preview

----
Adds a new "Agent Panel Error Shown" telemetry event that fires when
users see errors in the agent panel. For errors from external ACP agents
(like Claude Code), we capture additional details.

Previously, we had no visibility into what errors users were
encountering in the agent panel. This made it difficult to diagnose
issues, especially with external agents.

The new telemetry event includes:
- `agent` — The agent telemetry ID
- `session_id` — The session ID
- `kind` — Error category (payment_required, authentication_required,
refusal, other, etc.)
- `acp_error_code` — The ACP error code when available (e.g.,
"InternalError")
- `acp_error_message` — The ACP error message when available

Release Notes:

- N/A

---------

Co-authored-by: Michael Benfield <mbenfield@zed.dev>

Co-authored-by: Katie Geer <katie@zed.dev>
Co-authored-by: Michael Benfield <mbenfield@zed.dev>

zed-zippy[bot] , Katie Geer , and Michael Benfield created

80814ad agent: Clearer distinction that we are in Text Thread history (#47295) (cherry-pick to preview) (#47380)

Click to expand commit body
Cherry-pick of #47295 to preview

----
Some users were a bit confused that the history between zed agent + text
threads is split up now. Making it a bit clearer for the users still
using text threads which history they are currently looking at.

Release Notes:

- N/A

Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>

zed-zippy[bot] and Ben Brandt created

6eb5e1c acp: Add beta label to ACP registry (#47369) (cherry-pick to preview) (#47373)

Click to expand commit body
Cherry-pick of #47369 to preview

----
Release Notes:

- N/A

Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>

zed-zippy[bot] and Ben Brandt created

fbfdf62 acp: Optimize registry refresh (#47367) (cherry-pick to preview) (#47368)

Click to expand commit body
Cherry-pick of #47367 to preview

----
Before we were checking it even if you weren't using registry agents.
Now happens less frfrequently, and only when you are actually using
registry agents.

Release Notes:

- N/A

Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>

zed-zippy[bot] and Ben Brandt created

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