Commit log

9b0cb4e text: Store fragment's deletions on stack (#49726)

Click to expand commit body
Helps #38927

- In the common case, each fragment has at most one deletion, so we can
skip the heap allocation
- SmallVec is smaller than an empty HashSet
- Makes cloning cheaper
- From my analysis of the code it's not possible to have duplicate ticks
(I may be wrong tho)

Before you mark this PR as ready for review, make sure that you have:
- [ ] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- N/A

Marco Mihai Condrache created

40c159c git: Prevent panic when updating excerpts in split diff (#49725)

Click to expand commit body
When using the split view, if the project diff inserts excerpts for the
same buffer using two different `PathKey`s, we panic inside
`LhsEditor::update_path_excerpts_from_rhs` because of an implicit
assumption that `excerpts_for_path()` and `excerpts_for_buffer()` return
the same number of values. This PR addresses that by ignoring any
excerpts for the given buffer that have a different path key from the
provided one.

Release Notes:

- Fixed a crash when using the split diff view.

Co-authored-by: Jakub Konka <kubkon@jakubkonka.com>
Co-authored-by: Eric <eric@zed.dev>

Cole Miller , Jakub Konka , and Eric created

d05ea29 ep_cli: Delete sync-deployments command (#49728)

Click to expand commit body
Closes #ISSUE

Before you mark this PR as ready for review, make sure that you have:
- [ ] Added a solid test coverage and/or screenshots from doing manual
testing
- [ ] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

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

Ben Kunkle created

0823cac multi_buffer: Fix outdated anchors resolving incorrectly in diff hunks in `resolve_summary_for_anchor` (#49719)

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

Release Notes:

- Fixed panics with selection handling in expanded diff hunk

Lukas Wirth created

fd32e31 editor: Add copy button for project diagnostics messages (#49671)

Click to expand commit body
| Before | After |
|---|---|
| <img width="734" height="178" alt="before"
src="https://github.com/user-attachments/assets/1cea5854-e1b5-45a5-92ee-ed66bde06cc6"
/> | <img width="834" height="186" alt="after"
src="https://github.com/user-attachments/assets/bddb9280-89b3-4800-b9c9-08e456bc9ed8"
/> |

Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [x] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- Added copy button for project diagnostics messages

---------

Co-authored-by: ozacod <ozacod@users.noreply.github.com>
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>

ozacod , ozacod , and Danilo Leal created

46d11d2 agent: Allow tools to have structured output (#49722)

Click to expand commit body
Previously we only had the ability to return anyhow errors, which
limited the amount of structured data we could send the model.

Now tools can also return structured data in the error cases, which is
super helpful for subagents in particular

Release Notes:

- N/A

Ben Brandt created

366d5fa collab_ui: Add a loading state when signing in (#49713)

Click to expand commit body
| Before      | After      |
| ------------- | ------------- |
| <video
src="https://github.com/user-attachments/assets/ad5892f8-1fb9-4ea4-ba97-e1f2dc778f9e">
| <video
src="https://github.com/user-attachments/assets/f932dfd7-90a7-4536-b42e-f5508412e5d8">
|

Before you mark this PR as ready for review, make sure that you have:
- [ ] Added a solid test coverage and/or screenshots from doing manual
testing
- [ ] Done a self-review taking into account security and performance
aspects
- [x] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- N/A

Marco Mihai Condrache created

989887c Add ETW profile recorder action (#49712)

Click to expand commit body
https://github.com/user-attachments/assets/8b0be641-625e-410f-b7c1-abe549504c11

Before you mark this PR as ready for review, make sure that you have:
- [X] Added a solid test coverage and/or screenshots from doing manual
testing
- [X] Done a self-review taking into account security and performance
aspects
- [X] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- Added a `zed: record etw profile` action that can be used to collect
performance profiles on Windows.

John Tur created

f22f4db agent: Make agent::addSelectionToThread use current line when no selection (#48045)

Click to expand commit body
When there is no selection, make `cmd->` (`agent::addSelectionToThread`)
use the current line containing the cursor instead of doing nothing.

Supports both Zed Agent and Zed Assistant.
Works with multiple-cursors and a mix of selections and cursors.

Authored by Claude Opus 4.5, tested by me.

Release Notes:

- agent: Make `agent::addSelectionToThread` (`cmd->`) use the current
line of the cursor when there is no selection.

---------

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

Peter Tripp and Bennet Bo Fenner created

b1366c3 git_ui: Refine display of the "Review Diff" button (#49710)

Click to expand commit body
This PR makes the "Review Diff" button show up only if the multibuffer
_isn't_ empty and if AI is enabled. It was previously just checking for
the AI setting.

Release Notes:

- N/A

Danilo Leal created

9cefb04 gpui_linux: Fix cargo test on wayland (#49686)

Click to expand commit body
Ensures we can run tests for just `gpui_linux` on Linux/Wayland like so:

```
$ cargo test -p gpui_linux
```

Release Notes:

- N/A

Jakub Konka created

be6f27c remote: Fix wsl interop detection failing on some setups (#49708)

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

Release Notes:

- Fixed interop detection on WSL not working on newer setups

Lukas Wirth created

10a7987 agent: Use default tool behavior for subagents (#49706)

Click to expand commit body
Looking at this more, the map of tools is just for what is available and
all of the filtering happens at runtime. So we can just rely on the
current behavior for the list of tools (it was already a matching set)
and we can simplify all of the code paths again where we were adding
this filtered list.

Release Notes:

- N/A

Ben Brandt created

35f9c64 agent: Change max subagent depth to 1 for now (#49704)

Click to expand commit body
There are some UI concerns, especially for permission requests, that get
extremely complicated for recurisve subagents.

We'll move this to 1 for now to reduce complexity, and revisit once we
have a better way for representing all current permission requests.

Release Notes:

- N/A

Ben Brandt created

d9ece42 text: Inline `text::Anchor`'s timestamp field, shrinking its size (#49703)

Click to expand commit body
This shrinks the size of `text::Anchor` from 32 bytes to 24 and
`multi_buffer::Anchor` from 72 bytes to 56

Release Notes:

- Improved the memory usage of Zed a bit

Lukas Wirth created

0899b82 gpui: Fix visual_test.rs feature-gating screen-capture import (#49701)

Click to expand commit body
Closes #ISSUE

Before you mark this PR as ready for review, make sure that you have:
- [ ] Added a solid test coverage and/or screenshots from doing manual
testing
- [ ] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- N/A

Piotr Osiewicz created

11bccbc Fix stale folded buffers in split diff view (#49699)

Click to expand commit body
When a buffer is folded in the split diff view and then removed from the
multibuffer (via `remove_excerpts_for_path`), the block map's
`folded_buffers` set retains a stale entry for that buffer ID. Later,
when the split view syncs folded state from the RHS display map to the
LHS, it tries to look up the companion mapping for this stale buffer and
fails because the companion no longer tracks a buffer that's been
removed from the multibuffer.

This originally caused a panic via `.expect()`. This PR:

1. Converts the panic into graceful handling by skipping unmapped
buffers.
2. Actively removes stale entries from `folded_buffers` so they don't
persist as ghost state β€” ensuring that if the same buffer is later
re-added, it won't incorrectly appear as folded.
3. Adds a regression test covering the full lifecycle: fold β†’ remove β†’
split β†’ re-add β†’ assert both LHS and RHS report the buffer as not
folded.

Release Notes:

- Fixed a crash in split diff view when a folded buffer was removed and
re-added.

Antonio Scandurra created

325e941 anthropic: Support alternative provider SSE formatting (#47847)

Click to expand commit body
The issue I ran into was that responses from anthropic compatible
providers, like Kimi for Coding, have no space after `data:`. This
change just adds a quick check to also allow for those providers to
work.

Before it just resolved but did not show any output:
<img width="50%" alt="CleanShot 2026-01-28 at 12 50 31@2x"
src="https://github.com/user-attachments/assets/c3c8fe27-348e-4b21-a5f1-25bcc82f3774"
width=50%/>

Now it returns the proper result:
<img width="50%" alt="CleanShot 2026-01-28 at 12 56 30@2x"
src="https://github.com/user-attachments/assets/4e524c1e-78ab-4956-bd65-a919d46adc59"
width=50%/>

Normal Anthropic models still work as expected:
<img width="50%" alt="CleanShot 2026-01-28 at 12 58 37@2x"
src="https://github.com/user-attachments/assets/5a2906aa-1183-45b6-939b-01a6830f3385"
/>

Config to test
```json
 "language_models": {
    "anthropic": {
      "api_url": "https://api.kimi.com/coding",
      "available_models": [
          {
            "name": "kimi-for-coding",
            "display_name": "Kimi 2.5 Coding",
            "max_tokens": 262144,
            "max_output_tokens": 32768,
          },
      ],
    },
}
```


TLDR:
- Accepts SSE data:{...} lines (no space) emitted by some alternative
Anthropic providers, in addition to the standard data: {...} format.

Release Notes:

- Fixed Anthropic streaming for alternative providers by accepting SSE data:{...} (no space) lines.

---------

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

Raphael LΓΌthy and Ben Brandt created

fb82b11 ep: Fix panic when switching to a non-store provider (#49698)

Click to expand commit body
The `unreachable()` assumption at `queue_prediction_refresh` could be
violated by an async race condition:

1. `request_prediction_internal` spawns an async task
2. The task awaits a prediction request
3. If the prediction returns `None`, it calls `queue_prediction_refresh`
4. Between the time the prediction was initiated (when the provider was
an EP-store provider) and when the async callback runs, the user can
change their edit prediction provider setting to a non-EP-store provider
5. `queue_prediction_refresh` re-reads the settings and hits the
`unreachable!()

Release Notes:

- N/A

Oleksiy Syvokon created

ae9bb6a repl: Add WSL and SSH remote kernel support (#47891)

Click to expand commit body
Closes #15196, #46918 

- fix: notebook_ui, use buffer so that notebooks open in remote/WSL
settings.
- fix: add musl in nix for cross-compilation, without this remote server
doesn't build inside NixOS


Release Notes:

- Implement WSL and SSH remote kernels (crates/repl/src/kernels/*) and
wire up spawn/kill kernel proto messages and client requests.

MostlyK created

7e4eb4f agent_ui: Fix panic in load/copy thread to/from clipboard (#49694)

Click to expand commit body
Fixes ZED-4VW

Release Notes:

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

Lukas Wirth created

d54dbe9 editor: Fix panic in minimap selection rendering (#49692)

Click to expand commit body
Fixes ZED-50Z

Release Notes:

- Fixed a crash when using the editor minimal

Lukas Wirth created

aa91fd4 Reduce amount of closure monomorphizations part 2 (#49688)

Click to expand commit body
Release Notes:

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

Lukas Wirth created

a7df04c repl: Add clear output(s) command (#49631)

Click to expand commit body
Closes #15947

This adds `repl:ClearCurrentOutput` and `repl:ClearOutputs` commands. No
keybindings are set for this. Just an action people can bind.

Release Notes:

- Added ability to clear outputs by action

Kyle Kelley created

19404e4 repl: Support HTML outputs through `html_to_markdown` (#49646)

Click to expand commit body
Closes #15555

Adds a super basic render of html output from jupyter kernels.

<img width="1061" height="1207" alt="image"
src="https://github.com/user-attachments/assets/1bfb8c71-0e38-4bff-9f0c-bec12721232a"
/>

Obviously not as full featured as #48157

Release Notes:

- Added basic handling of HTML in REPL outputs

Kyle Kelley created

3a00810 editor: Prevent comment extension on REPL separators (#48174)

Click to expand commit body
Closes #47691

Release Notes:

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

Xin Zhao created

5342a38 extension: Stream wasi-sdk download (#49679)

Click to expand commit body
Release Notes:

- N/A



The WASI-SDK is several hundred megabytes in size; using streaming
downloads is network-friendly and can reduce memory usage.

Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>

Xiaobo Liu created

8caebe6 git: Replace some unwraps with `expect` (#49683)

Click to expand commit body
Release Notes:

- N/A

Cole Miller created

85ca795 ep_store: Don't handle project events for non-`EditPredictionStore` providers (#49678)

Click to expand commit body
Closes #ISSUE

Release Notes:

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

Ben Kunkle created

d896bf7 ep_cli: Don't filter rated predictions by Zed version (#49609)

Click to expand commit body
Closes #ISSUE

Before you mark this PR as ready for review, make sure that you have:
- [ ] Added a solid test coverage and/or screenshots from doing manual
testing
- [ ] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

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

Ben Kunkle created

42202ed Sign out upon receiving an Unauthorized response when acquiring an LLM token (#49673)

Click to expand commit body
This PR makes it so the user gets signed out upon receiving an
Unauthorized response when acquiring an LLM token.

This is a re-landing of #49661.

Closes CLO-324.

Release Notes:

- N/A

Marshall Bowers created

ee636bc git: Mitigate panic in split diff spacer calculation (#49674)

Click to expand commit body
Release Notes:

- N/A

Cole Miller created

02ba2be collab: Remove unneeded `Arc::get_mut` (#49672)

Click to expand commit body
This PR removes an unneeded `Arc::get_mut` from the Collab tests.

Release Notes:

- N/A

Marshall Bowers created

1bfd77b Fix docs validation to detect unknown keys (#49660)

Click to expand commit body
Closes #ISSUE

Release Notes:

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

---------

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

Ben Kunkle and Zed Zippy created

c06aab8 Fix Windows build (#49665)

Click to expand commit body
Fix regressions from https://github.com/zed-industries/zed/pull/49277:

- The fusion manifest was not being embedded for Zed.exe, making it
non-functional.
- The relative path used to load shaders in debug mode was incorrect.

Release Notes:

- N/A

Co-authored-by: Marshall Bowers <git@maxdeviant.com>

John Tur and Marshall Bowers created

bba415b ci: Make filter script less error-prone (#49670)

Click to expand commit body
The failure in #49661 was caused by a broken pipe, which then led to
tests not being ran.

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

Before you mark this PR as ready for review, make sure that you have:
- [ ] Added a solid test coverage and/or screenshots from doing manual
testing
- [ ] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- N/A

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

Piotr Osiewicz and Marshall Bowers created

94b9628 Revert "Sign out upon receiving an Unauthorized response when acquiring an LLM token (#49661) (#49669)

Click to expand commit body
This PR reverts #49661, as the Collab tests are failing (but were not
caught in CI).

This reverts commit 2f9350bb6bc4abe10530fc42bb262493e1525bfb.

Release Notes:

- N/A

Marshall Bowers created

2f9350b Sign out upon receiving an Unauthorized response when acquiring an LLM token (#49661)

Click to expand commit body
This PR makes it so the user gets signed out upon receiving an
Unauthorized response when acquiring an LLM token.

Closes CLO-324.

Release Notes:

- N/A

Marshall Bowers created

41c007f Fix subagent card buttons getting clipped by long titles (#49648)

Click to expand commit body
When a subagent title is long, the header buttons (expand/collapse,
maximize, stop) were pushed out of view because the title area grew
unconstrained.

## Fix

- Add `min_w_0()` and `overflow_hidden()` to the title container so it
can shrink below its content width
- Add `truncate()` to the title label so it shows an ellipsis when
clipped
- Add `flex_shrink_0()` to the buttons container so it never gets
squeezed out
- Add a tooltip on the title area showing the full text on hover

Release Notes:

- N/A

Eric Holk created

90d8c26 Fix visual test screenshot functionality (#49649)

Click to expand commit body
After #49277 was merged, all visual tests failed to run with the error
"FAILED - render_to_image not implemented for this platform".

Release Notes:

- N/A

claire created

be26e1a editor: Fix relative line numbering with deleted blocks present (#49656)

Click to expand commit body
This tackles another issue where we would incorrectly show two absolute
line numbers with relative line numbering enabled when it really should
only have been the current active line number.

Sadly, no tests rn for this as we would need a better test infra for
that to properly catch/test this bug. But with the refactored logic, I
think this is easier to understand at glance, so at least theres that

Release Notes:

- Fixed an issue with relative line numbers where some rows would be
missing their relative line number with deleted hunks showing.

Finn Evers created

6a9d259 gpui_linux: Fix headless build (#49652)

Click to expand commit body
Closes #ISSUE

Before you mark this PR as ready for review, make sure that you have:
- [ ] Added a solid test coverage and/or screenshots from doing manual
testing
- [ ] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- N/A

Piotr Osiewicz created

62af5b8 Allow using Zeta through an arbitrary OpenAI-compatible self-hosted API (#49554)

Click to expand commit body
Release Notes:

- Added the ability to use a self-hosted OpenAI-compatible server for
edit predictions.

---------

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

Max Brunsfeld , Ben Kunkle , and Zed Zippy created

e07d0ba Add telemetry for stack trace view (#49642)

Click to expand commit body
Release Notes:

- N/A

Cole Miller created

04bdd17 Fix JS syntax error in docs_suggestions cherry-pick job (#49643)

Click to expand commit body
## Summary

Fixes the `SyntaxError: Unexpected identifier 'gemini'` error in the
cherry-pick documentation suggestions workflow.

## Problem

The 'Post suggestions as PR comment' step was directly interpolating
markdown content into a JavaScript template literal:

```javascript
const suggestions = `${{ steps.analyze.outputs.suggestions }}`;
```

When the suggestions contained backticks, `${}` sequences, or other
special characters (like the `gemini-3.1-pro-preview` model name in
markdown code blocks), it broke the JavaScript syntax.

## Solution

Write suggestions to a file in `$RUNNER_TEMP` and read it using
`fs.readFileSync()` in the script step. This avoids all GitHub Actions
template interpolation and JavaScript string parsing issues.

## Testing

This should fix the failed run:
https://github.com/zed-industries/zed/actions/runs/22194396124/job/64190762087

Release Notes:

- N/A

morgankrey created

1e847c1 Fix panic involving growing and shrinking selections while buffer size changes (#48898)

Click to expand commit body
Repro steps:

1. Make a Rust file and check it in to git
2. Delete a lot of the file
3. Expand all the diffs (cmd+")
4. Select larger syntax node (ctrl+cmd+right)
5. Collapse all the diffs
6. Select smaller syntax node (ctrl+cmd+left)
7. Panic!

The problem was we were using byte offsets instead of anchors so after
we shrank the buffer by collapsing diffs we'd be pointing past the end
of it.

Release notes:
- N/A

Eric Holk created

32f05ac Add Gemini 3.1 Pro to model documentation (#49640)

Click to expand commit body
## Summary

- Added Gemini 3.1 Pro to the pricing table, context windows table, and
page metadata in `docs/src/ai/models.md`
- Listed alongside existing Gemini 3 Pro (both remain available)

Release Notes:

- N/A

morgankrey created

17abde7 Add gemini-3.1-pro-preview model (#49622)

Click to expand commit body
Closes AI-48

Release Notes:

- Added support for Gemini 3.1 Pro

Richard Feldman created

85c23d0 agent: Improve the subagent task structure (#49629)

Click to expand commit body
Removes tool filtering since this was throwing off certain models, and
also allows for more generic task prompts that don't always require
summaries. Since the models usually provide a wrap-up message, we don't
have to wait for another turn.

This also sets us up to allow the agent to re-interact with an existing
subagent thread.

Release Notes:

- N/A

---------

Co-authored-by: Jakub Konka <kubkon@jakubkonka.com>

Ben Brandt and Jakub Konka created

bc31ad4 gpui: Extract gpui_platform out of gpui (#49277)

Click to expand commit body
#2874 on steroids

Before you mark this PR as ready for review, make sure that you have:
- [ ] Added a solid test coverage and/or screenshots from doing manual
testing
- [ ] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- N/A

---------

Co-authored-by: Eric Holk <eric@zed.dev>

Piotr Osiewicz and Eric Holk created