Commit Graph
39175 Commits
Author SHA1 Message Date
Piotr Osiewicz 8c8a0d9c4d collab: Extract tests into integration tests crate (#47668)
Reduces time needed to build collab tests from 48s to 38s.

Release Notes:

- N/A
2026-01-26 20:28:09 +01:00
Cole Miller 5a234bec6e remote_server: Avoid panic when writing to stderr (#47683)
Closes ZED-4JM

Release Notes:

- N/A
2026-01-26 19:15:33 +00:00
Ben Brandt 2cd55dc611 acp: Dedupe session/list calls (#47677)
Noticed we were calling session/list twice now, this makes sure it only
happens once on load

Release Notes:

- N/A
2026-01-26 19:10:30 +00:00
Finn Evers 5ead67d9be ci: Notify on more release workflow events (#47565)
This improves the messaging around triggered releases and hopefully
should help with what needs to be done there.

Closes TRA-82.

Release Notes:

- N/A
2026-01-26 18:31:34 +00:00
Michael Benfield 757a1bd897 StreamingEditFileTool: Disable for now (#47658)
Release Notes:

- N/A
2026-01-26 08:06:53 -08:00
John TurandLukas Wirth 767c074bc8 Fix remote server exit timeout (#47660)
Was changed by mistake

Release Notes:

- N/A

Co-authored-by: Lukas Wirth <me@lukaswirth.dev>
2026-01-26 15:30:12 +00:00
John TurandLukas Wirth c5c396ef2d Fix Zed not entering disconnected state when remote proxy dies (#47659)
When I kill the remote proxy, it seems like `ssh` exits with code -1.
Since that's less than or equal to 0, this means we don't try to restart
the connection. The proxy really shouldn't exit for any reason, so let's
get rid of this check altogether.

Release Notes:

- N/A

Co-authored-by: Lukas Wirth <me@lukaswirth.dev>
2026-01-26 15:23:35 +00:00
Finn Evers 7ea04b7b00 extension_cli: Improve snippet error logging (#47653)
Follow-up to #47649

Release Notes:

- N/A
2026-01-26 14:24:02 +00:00
Andrew CurrierandGaauwe Rombouts 98ce623ead Improve TypeScript keyword syntax highlighting (#47435)
Improve syntax highlighting of keywords by creating groups for
declarations and import/export.

### Release Notes:
- Highlight declarations with `keyword.declaration`:
  - const
  - let
  - var
  - function
  - class
  - enum
  - interface
  - type

- Highlight imports and exports with `keyword.import`:
  - export
  - from
  - import

---------

Co-authored-by: Gaauwe Rombouts <mail@grombouts.nl>
2026-01-26 15:16:51 +01:00
Gaauwe Rombouts fb9d5baad8 docs: Remove preview indicator for Tailwind CSS Mode (#47651)
Removes the preview indicator from the docs, since this is available in
stable

Release Notes:

- N/A
2026-01-26 15:12:49 +01:00
Cameron McloughlinandZed Zippy 27c2354505 agent: Cancel subagents (#47647)
Allows cancelling subagents

Release Notes:

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

---------

Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
2026-01-26 14:00:42 +00:00
Finn Evers 6f993eb8f7 extension_cli: Validate that all snippets can be parsed (#47649)
With this, we can now ensure that snippet extensions we publish actually
only contain valid snippets.

Release Notes:

- N/A
2026-01-26 13:49:26 +00:00
Smit Barmase fecc7b5124 project_panel: Fix alignment of folded directory path components (#47648)
The padding on folded directory path components was causing the first
component to be misaligned with regular entry labels. This adds a
negative margin to the first component to compensate for the left
padding while preserving the hover background.

Before:
<img height="180" alt="before-1"
src="https://github.com/user-attachments/assets/5be234a6-4fca-4940-a979-4cfb767875bb"
/> <img height="180" alt="before-2"
src="https://github.com/user-attachments/assets/1825e12b-eb55-48fe-9b3c-ac52e552581b"
/>

After:
<img height="180" alt="after-1"
src="https://github.com/user-attachments/assets/03b1029d-6664-49bd-9371-680fc912c67c"
/> <img height="180" alt="after-2"
src="https://github.com/user-attachments/assets/fa4954d7-796c-48f3-8f77-6aaee7bfc35c"
/>

Release Notes:

- Fixed alignment of folded directory names in project panel.
2026-01-26 13:30:43 +00:00
Jake Leahy 0968b99a8f Update nim entry with additional file suffixes (#47616)
Expanded the nim entry to include `nims` and `nimble` files

- [nims](https://nim-lang.org/docs/nims.html) is a subscript of Nim that
runs in a VM
- [nimble](https://github.com/nim-lang/nimble) files are project files
for Nim that are written in Nim

Release Notes:

- Updated Nim file aliases so icon is shown for nims/nimble files
2026-01-26 13:02:05 +00:00
Oleksiy Syvokon 06dbab208b Add ep repair command to address judge feedback (#47646)
Release Notes:

- N/A
2026-01-26 12:49:54 +00:00
Ben Brandt ccd29356d1 agent: Encourage more parallel tool use (#47644)
Also standardizes the list format in the prompt

Release Notes:

- N/A
2026-01-26 12:14:46 +00:00
Ben Brandt 72e8f9420f acp: Check for claude login message in terminal-auth as well (#47642)
Allows for the acp adapter to use terminal auth for this as well

Release Notes:

- N/A
2026-01-26 12:41:26 +01:00
Finn Evers face88b14b syntax_tree_view: Fix highlights persisting after view was closed (#47638)
Also ensured that we clear only the highlights of the current view
(which probably would have been the the case almost always anyway).

Release Notes:

- Fixed a small issue where highlights of the syntax tree view would
persist after the view was closed.
2026-01-26 11:07:01 +00:00
Max Brunsfeld 44df5c6a85 Allow EP cli to fetch rejections from snowflake (#47628)
Release Notes:

- N/A
2026-01-26 10:49:44 +00:00
Lukas Wirth f5d13701d7 project: Do not send UpdateProject message on remote server spawn (#47633)
The client has not yet setup its own side of things so the message will
always error as being unhandled anyways.

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-01-26 09:21:12 +00:00
Finn Evers 4462e34e8f Revert "Fix link for Ownership and data flow in GPUI's README.md" (#47630)
Reverts zed-industries/zed#47599

The link here was intentional and linking to a file within GPUI, hence
reverting.

Release Notes: 

- N/A
2026-01-26 08:30:33 +00:00
Xiaobo Liu 90d3e2f1c1 gpui: Add action_schema_by_name for O(1) action schema lookup (#47180)
Release Notes:

- N/A


Avoids iterating through all registered actions when looking up a single
action's schema in json_schema_store.

---------

Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
2026-01-26 08:25:18 +00:00
Xin Zhao 4198e60e61 terminal: Fix double quoting of commands on Windows cmd.exe (#47534)
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/b3e3a23a5e8fa85e6fdb9f0458185f71ba100ed3/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/b3e3a23a5e8fa85e6fdb9f0458185f71ba100ed3/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`.
2026-01-26 07:26:12 +00:00
Xiaobo Liu fc79ea1d64 remote: Add configurable remote server cache retention (default 5) (#47202)
Release Notes:

- Zed now removes older cached remote server downloads

---------

Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
2026-01-26 07:25:51 +00:00
Cole Miller 695f008aa3 git: Fix incorrect diff transforms being computed for side-by-side diff LHS (#47515)
`compare_hunks` was emitting an incorrectly small range for
`base_text_byte_range` in some cases.

Release Notes:

- N/A
2026-01-25 22:08:48 -05:00
Cole MillerandZed Zippy 16ba7dd58b git: Fix incorrect spacers for added or deleted files at the end of the multibuffer (#47525)
Release Notes:

- N/A

---------

Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
2026-01-25 22:05:04 -05:00
Cole Miller 92c8bdcf1c git: Fix missing spacers in side-by-side diff when editing inside an addition hunk (#47568)
Release Notes:

- N/A
2026-01-25 21:38:18 -05:00
Cole MillerandZed Zippy 94b8641b57 git: Ensure folded buffers are synced when deploying side-by-side diff (#47498)
Release Notes:

- N/A

---------

Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
2026-01-25 21:25:02 -05:00
Piotr OsiewiczandZed Zippy 69532da41c project: Move tests to integration layer (#47596)
Building project tests takes 6.5s instead of 18s that way.

Release Notes:

- N/A

---------

Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
2026-01-25 21:35:32 +01:00
Khalid 3b01fb3fed Fix link for Ownership and data flow in GPUI's README.md (#47599)
old link redirects to a non-existing page showing '404 - page not
found', probably referring to `src/_ownership_and_data_flow.rs`. anyway
I put the official article link

Release Notes:
- N/A
2026-01-25 19:37:34 +00:00
Anil PaiandPiotr Osiewicz e0470eee3e copilot_chat: Fix Anthropic models not appearing in model picker (#47549)
## 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>
2026-01-25 13:10:22 +01:00
Marco Mihai Condrache aaed3769db build: Re-enable incremental compilation (#47586) 2026-01-25 10:35:01 +00:00
Smit Barmase 7fa0cfd608 terminal: Fix terminal freeze when child process is killed by signal (#47420)
Closes #38168
Closes #42414

We were already using `ExitStatusExt::from_raw()` to construct an
`ExitStatus`, but we were passing in the exit code from
alacritty_terminal's `ChildExit` event. This worked fine on Windows
where `from_raw()` expects an exit code, but on Unix, `from_raw()`
([read
more](https://doc.rust-lang.org/std/os/unix/process/trait.ExitStatusExt.html#tymethod.from_raw))
expects a raw wait status from `waitpid()` and not an exit code.

When a child process was killed by a signal (e.g., SIGSEGV),
`ExitStatus::code()` returns `None` since only normal exits have an exit
code. This caused the terminal to hang because we weren't properly
detecting the exit.

One fix would have been to remove the dependency on `ExitStatus`
entirely, but using the raw wait status gives us more information, we
can now detect exit codes, signal terminations, and more.

The actual fix was upstream in `alacritty_terminal` to send the raw wait
status instead of just the exit code.

Currently using forked patch
https://github.com/zed-industries/alacritty/tree/v0.16-child-exit-patch
which is based on v0.25.1.

Upstream PR: https://github.com/alacritty/alacritty/pull/8825

Release Notes:

- Fixed terminal hanging when a child process is killed by a signal
(e.g., SIGSEGV from null pointer dereference).
2026-01-25 15:02:29 +05:30
Jakub Konka 89ad1efb23 acp: Skip setting language on secondary diff buffer (#47526)
Mirrors
https://github.com/zed-industries/zed/commit/b3e3a23a5e8fa85e6fdb9f0458185f71ba100ed3.
We skip setting language on the secondary diff buffer which is not
needed and will improve performance and memory usage.

Release Notes:

- Improved memory usage of large ACP thread diff multibuffers.
2026-01-25 09:08:05 +01:00
Max Brunsfeld d706d56b48 Apply common prefix/suffix stripping to zeta2 and mercury (#47530)
Fixes an issue where edits would be shown like this:

<img width="1262" height="1072" alt="image"
src="https://github.com/user-attachments/assets/f3ec865a-4bf2-423c-8465-62a54a21a882"
/>

When they should be like this:

<img width="1260" height="388" alt="image"
src="https://github.com/user-attachments/assets/ac555a25-f222-48aa-b922-0ae5b9f4e260"
/>


Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-01-24 18:07:59 -08:00
Ben Brandt 6048664305 acp: Use the official ACP registry URL (#47564)
Release Notes:

- N/A
2026-01-24 22:00:09 +00:00
John TurandLukas Wirth a0d20995c5 Add SSH remote server for Windows (#47460)
Closes https://github.com/zed-industries/zed/issues/33748

Release Notes:

- Windows is now supported as a target platform for SSH remoting.

---------

Co-authored-by: Lukas Wirth <me@lukaswirth.dev>
2026-01-24 13:15:01 -05:00
Conashimi 04eac7da45 gpui: Map diagonal resize cursor styles on Windows (#47477)
- Adds missing diagonal resize cursor mappings (NWSE/NESW) on Windows.
- Fixes `CursorStyle::ResizeUpLeftDownRight` and `ResizeUpRightDownLeft`
falling back to Arrow.

Release Notes:

- N/A
2026-01-24 16:30:06 +00:00
Rocky Shi c09b88d415 Hide block cursor text when the cursor is within a redacted range (#45549)
Closes [#ISSUE](https://github.com/zed-industries/zed/issues/20696)

Release Notes:

- Hide block cursor text when the cursor is within a redacted range

Screenshot:

<img width="434" height="174" alt="image"
src="https://github.com/user-attachments/assets/5d9dc140-7abe-49a8-823a-58deb0e170dc"
/>
2026-01-24 08:55:53 +00:00
Jakub Konka b3e3a23a5e git: Skip setting language on git index buffer (#47524)
Skipping setting the language on the git index text buffer improves
snappiness for (very) large git diff multibuffers and also significantly
lower peak and steady-state RSS. When tested on the chromium repo with
`git reset HEAD~1000` and *all* language extensions installed we notice:
* current `main`: peak RSS ~45GB, ss RSS ~39GB
* this patch: peak RSS ~30GB, ss RSS ~27GB

Release Notes:

- Improved memory usage of large git diff multibuffers.
2026-01-23 23:43:25 +00:00
Danilo Leal a5d70922a3 agent: Add setting for controlling terminal tool stop button behavior (#47521)
Addressing the feedback left on a previous PR of mine:
https://github.com/zed-industries/zed/pull/46663. I feel like this is
worthy of a setting. Note, however, that this does not apply to typing
`ctrl-c` in the terminal from within the agent panel; this is purely
controlling what happens when you click on the "Stop" button in the
terminal tool call card.

Release Notes:

- Agent: Added a setting for controlling the behavior of the stop button
in the terminal tool call card (between cancelling the command to run
and the thread, or just the command).
2026-01-23 20:41:07 -03:00
Max Brunsfeld 435947af60 Send EP trigger as part of zeta2 prediction request (#47523)
Release Notes:

- N/A
2026-01-23 23:40:49 +00:00
Oleksiy Syvokon ddd2d6a12b ep: Add qa subcommand to check predictions quality (#47520)
Release Notes:

- N/A
2026-01-23 23:28:12 +00:00
Ben KunkleandZed Zippy ff556c5c22 zeta2: Include context in captured examples (#47516)
Closes #ISSUE

Release Notes:

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

---------

Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
2026-01-23 17:18:50 -05:00
ozacod 3073eaef72 languages: Add structs, unions and enums to outline in C (#46125)
Before:
<img width="1179" height="739" alt="before"
src="https://github.com/user-attachments/assets/de594de2-ac70-40cf-8813-bb8c02e95014"
/>


After:
<img width="1009" height="696" alt="after"
src="https://github.com/user-attachments/assets/b68b9f84-7f15-4baf-99ed-a259ca07e815"
/>

Release Notes:

- Fixed struct union enum outline issues for c
2026-01-23 13:46:41 -08:00
32664c17c4 git_graph: Add resizable columns (#47485)
Release Notes:

- N/A

Signed-off-by: Marco Mihai Condrache <52580954+marcocondrache@users.noreply.github.com>
Co-authored-by: Anthony Eid <anthony@zed.dev>
Co-authored-by: Remco Smits <djsmits12@gmail.com>
2026-01-23 21:43:35 +00:00
526e701ba1 git_graph: Add loading icon when loading initial commit chunk (#47514)
Release Notes:

- N/A

Co-authored-by: Remco Smits <djsmits12@gmail.com>
Co-authored-by: Marco Mihai Condrache <52580954+marcocondrache@users.noreply.github.com>
2026-01-23 21:26:12 +00:00
KyleBarton 5c6f174cfd Clean up error handling for some edge cases to prevent panic (#47513)
Release Notes:

- Improved error handling in the dev container crate to prevent panics
2026-01-23 13:22:08 -08:00
Conrad IrwinandJohn Tur 08d1d84a4c Reduce intensity of refreshing pull diagnostics (#47510)
Before this change we'd spawn N tasks in parallel on every keystroke,
afterwards
we only allow 1 background diagnostic refresh in flight at a time.

This also fixed a bug where we'd send O(n*2) pull diagnostic requests
when
re-opening a workspace with n editors.

Co-authored-by: John Tur <john-tur@outlook.com>

Closes #ISSUE

Release Notes:

- Improved performance when a large number of files were open by making
background diagnostics more efficient

---------

Co-authored-by: John Tur <john-tur@outlook.com>
2026-01-23 21:08:56 +00:00
Marshall Bowers b44e15f9a2 Add support for refreshing outdated LLM tokens (#47512)
This PR adds support for refreshing LLM tokens that are "outdated"—that
is, that are missing some required claims.

Release Notes:

- Fixed some instances of authentication errors with the Zed API that
could be resolved automatically by refreshing the token.
2026-01-23 21:03:28 +00:00