Commit log

53eb35f Add GPT 5.1 to Zed BYOK (#43492)

Click to expand commit body
Release Notes:

- Added support for OpenAI's GPT 5.1 model to BYOK

Mikayla Maki created

877763b More tweaks to collaboration docs (#43494)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

d490443 Refresh collaboration docs (#43489)

Click to expand commit body
Most of the features for collab were previously listed in the section
that was written for private calls. Most of this PR is moving that
content over to the channel documentation and adapting it slightly.
Private calls have similar collaboration, so we can just point back to
the channels doc in that section and keep it pretty thin / DRY.

Release Notes:

- N/A

Joseph T. Lyons created

1f9d5ef Always display terminal cursor when blinking is disabled (#43487)

Click to expand commit body
Fixes an issue where the terminal cursor wouldn't always be displayed in
the default `blink: "terminal_controlled"` mode unless the terminal
requested cursor blinking.

Release Notes:

- N/A

Agus Zubiaga created

83f0a3f Redact sensitive environment variables in LSP Logs: Server Info (#43480)

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

The changes in #42831 resulted in a regression where environment
variables in the Server Info view were no longer redact. The changes in
#43436 were insufficient as I was still seeing sensitive values in
Nightly e6fe95b4f2f676c7fc4a5f951ba7c721e7d22e8a (which includes
#43436).

CC: @SomeoneToIgnore (Hi! 👋 Thanks for keeping this redaction
functionality alive)

Release Notes:

- N/A

Peter Tripp created

7ecbf8c zeta2: Remove expected context from evals (#43430)

Click to expand commit body
Closes #ISSUE

Release Notes:

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

Ben Kunkle created

fb0fcd8 Add missing update of last_prediction_refresh (#43483)

Click to expand commit body
Fixes a regression introduced in
https://github.com/zed-industries/zed/pull/43284 where edit predictions
stopped being throttled at all 😬

Release Notes:

- N/A

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

Max Brunsfeld and Ben Kunkle created

36708c9 Separate experimental edit prediction jumps feature from the Sweep AI prediction provider (#43481)

Click to expand commit body
Release Notes:

- N/A

---------

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

Max Brunsfeld and Ben Kunkle created

388fda2 editor: Fix package version completion partial accept and improve sorting (#43473)

Click to expand commit body
Closes #41723

This PR fixes an issue with accepting partial semver completions by
including `.` in the completion query. This makes the editor treat the
entire version string as the query, instead of breaking segment at last
`.` .

This PR also adds a test for sorting semver completions. The actual
sorting fix is handled in the `package-version-server` by having it
provide `sort_text`. More:
https://github.com/zed-industries/package-version-server/pull/10

<img width="600" alt="image"
src="https://github.com/user-attachments/assets/7657912f-c6da-4e05-956b-1c044918304f"
/>

Release Notes:

- Fixed an issue where accepting a completion for a semver version in
package.json would append the suggestion to the existing text instead of
replacing it.
- Improved the sorting of semver completions in package.json so the
latest versions appear at the top.

Smit Barmase created

94f9b85 acp: Only pass enabled MCP servers to agent (#43467)

Click to expand commit body
Release Notes:

- Fix an issue where ACP agents would start MCP servers that were
disabled in Zed

Bennet Bo Fenner created

1c07201 git: Make the version_control.{deleted/added} colors more accessible (#43475)

Click to expand commit body
The new colors are easier to tell apart for people that are colorblind

cc: @mattermill 

## One Dark
### Before
<img width="723" height="212" alt="Screenshot 2025-11-25 at 12 13 14 PM"
src="https://github.com/user-attachments/assets/cea67b08-5662-4afa-8119-dbfcef53ada7"
/>

### After
<img width="711" height="109" alt="Screenshot 2025-11-25 at 12 14 16 PM"
src="https://github.com/user-attachments/assets/a42d88ea-1a85-4f48-8f5e-b9bedf321c62"
/>

## One Light
### Before
<img width="724" height="219" alt="Screenshot 2025-11-25 at 12 15 13 PM"
src="https://github.com/user-attachments/assets/c0176b8c-12bf-451c-8a2c-a2efd15463d1"
/>
### After
<img width="723" height="209" alt="Screenshot 2025-11-25 at 12 15 45 PM"
src="https://github.com/user-attachments/assets/b8858a11-29e2-4309-b1a6-c734f89f6d5e"
/>

Release Notes:

- N/A

Anthony Eid created

8a99270 Add Gemini 3 support to Copilot (#43096)

Click to expand commit body
Closes #43024

Release Notes:

- Add support for Gemini 3 to Copilot

Richard Feldman created

2053fea Add collaboration redirects (#43471)

Click to expand commit body
Redirect:

https://zed.dev/docs/collaboration ->
https://zed.dev/docs/collaboration/overview
https://zed.dev/docs/channels ->
https://zed.dev/docs/collaboration/channels

Release Notes:

- N/A

Joseph T. Lyons created

552bc02 git: Bring back auto-commit suggestions (#43470)

Click to expand commit body
This got accidentally regressed in
https://github.com/zed-industries/zed/pull/42149.

Release Notes:

- Fixed displaying auto-commit suggestions for single staged entries.

Jakub Konka created

fafe1af multi_buffer: Remove redundant buffer id field (#43459)

Click to expand commit body
It is easy for us to get the two fields out of sync causing weird
problems, there is no reason to have both here so.

Release Notes:

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

Co-authored by: Antonio Scandurra <antonio@zed.dev>

Lukas Wirth created

ab80ef1 mcp: Fix `source` property showing up as undefined in settings (#43417)

Click to expand commit body
Follow up to #39021.

<img width="576" height="141" alt="image"
src="https://github.com/user-attachments/assets/c89885a4-e664-4614-9bb0-86442dff34ee"
/>

- Add migration to remove `source` tag because `ContextServerSettings`
is now untagged
- Fix typos in context server modal
- PR seems to have removed the `test_action_namespaces` test, which I
brought back in this PR

Release Notes:

- Fixed an issue where the `source` property of MCP settings would show
up as unrecognised

Bennet Bo Fenner created

9cae394 Restructure collaboration docs (#43464)

Click to expand commit body
Overview
    - Channels
    - Private calls

---

Up next would be to 

- [ ] Update any zed.dev links to point to items in this structure
- [ ] Update content in these docs (would prefer to do that in a
separate PR from this one)

Release Notes:

- N/A

Joseph T. Lyons created

f58de21 miniprofiler_ui: Improve MiniProfiler to use uniform list (#43457)

Click to expand commit body
Release Notes:

- N/A

---

- Apply uniform_list for timing list for performance.
- Add paddings for window.
- Add space to `ms`, before: `100ms` after `100 ms`.

## Before 

<img width="1392" height="860" alt="image"
src="https://github.com/user-attachments/assets/9706a96f-7093-4d4f-832f-306948a9b17b"
/>

## After 

<img width="1392" height="864" alt="image"
src="https://github.com/user-attachments/assets/38df1b71-15e7-4101-b0c9-ecdcdb7752d7"
/>

Jason Lee created

1cbb498 document how to do flamecharts in an easy way (#43461)

Click to expand commit body
Release Notes:

- N/A

David Kleingeld created

f896531 multi_buffer: Fix up some anchor checks (#43454)

Click to expand commit body
Release Notes:

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

Lukas Wirth created

a359a5a Add performance doc (#43265)

Click to expand commit body
Release Notes:

- N/A

David Kleingeld created

7651854 ci: Do not show output of failed tests at the end too (#43449)

Click to expand commit body
This reverts #39643, effectively

For the record, @SomeoneToIgnore found it quite cumbersome to scroll
through logs just to see which tests have failed. I kinda see the
argument. At the same time, I wish nextest could do both: it could
aggregate logs of failed tests and then print out the summary.

Release Notes:

- N/A

Piotr Osiewicz created

5139cc2 helix: Fix `Vim::NextWordEnd` off-by-one in `HelixSelect` (#43234)

Click to expand commit body
Closes #43209
Closes #38121

Starting on the first character.
Running `v e` before changes: 
<img width="410" height="162" alt="image"
src="https://github.com/user-attachments/assets/ee13fa29-826c-45c0-9ea0-a598cc8e781a"
/>

Running `v e` after changes:
<img width="483" height="166" alt="image"
src="https://github.com/user-attachments/assets/24791a07-97df-47cd-9ef2-171522adb796"
/>

Change Notes:

- Added helix selection sanitation code that directly mirrors the code
in the Vim
[`visual_motion`](https://github.com/AidanV/zed/blob/b6728c080c5d14ded7002d0276deb5c19d42ed8a/crates/vim/src/visual.rs#L237)
method. I kept the comments from the Vim section that explains its
purpose.
- The above change converted the problem from fixing `v e` to fixing `v
w`. Since `w` is treated differently in Helix than in Vim (i.e. `w` in
Vim goes to the first character of a word and `w` in Helix goes to the
character before a word. Commented
[here](https://github.com/AidanV/zed/blob/b6728c080c5d14ded7002d0276deb5c19d42ed8a/crates/vim/src/helix.rs#L132)),
the code treats `w` in `HelixSelect` as a motion that differs from the
Vim motion in the same way that the function
[`helix_move_cursor`](https://github.com/AidanV/zed/blob/b6728c080c5d14ded7002d0276deb5c19d42ed8a/crates/vim/src/helix.rs#L353)
separates these behaviors.
- Added a regression test

Release Notes:

- Fixes bug where `Vim::NextWordEnd` in `HelixSelect` would not select
whole word.

AidanV created

c0e8548 lsp: Fix potential double didClose notification when renaming a file (#43448)

Click to expand commit body
Closes #42709

Release Notes:

- N/A

Piotr Osiewicz created

e6fe95b Only show ssh logs when toggled (#43445)

Click to expand commit body
Same as in collab projects.

Release Notes:

- N/A

Kirill Bulatov created

303c23c Fix first window open not focusing the modals (#43180)

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

Release Notes:

- Fixed modals not getting focus on window reopen

---------

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

Kirill Bulatov and Conrad Irwin created

0e2041d multi_buffer: Fix `editor::ExpandExcerpts` failing when cursor is at excerpt start (#42324)

Click to expand commit body
The bug is easily verified by:

1. open any multi-buffer
2. place the cursor at the beginning of an excerpt
3. run the editor::ExpandExcerpts / editor: expand excerpts action
4. The excerpt is not expanded

Since the `buffer_ids_for_range` function basically did the same and had
even been changed the same way earlier I DRYed these functions as well.

Note: I'm a rust novice, so keep an extra eye on rust technicalities
when reviewing :)

---

Release Notes:

- Fix editor: expand excerpts failing when cursor is at excerpt start

---------

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

Ole Jørgen Brønner and Lukas Wirth created

9122dd2 Combine zeta and zeta2 edit prediction providers (#43284)

Click to expand commit body
We've realized that a lot of the logic within an
`EditPredictionProvider` is not specific to a particular edit prediction
model / service. Rather, it is just the generic state management
required to perform edit predictions at all in Zed. We want to move to a
setup where there's one "built-in" edit prediction provider in Zed,
which can be pointed at different edit prediction models. The only logic
that is different for different models is how we construct the prompt,
send the request, and parse the output.

This PR also changes the behavior of the staff-only `zeta2` feature flag
so that in only gates your *ability* to use Zeta2, but you can still use
your local settings file to choose between different edit prediction
models/services: zeta1, zeta2, and sweep.

This PR also makes zeta1's outcome reporting and prediction-rating
features work with all prediction models, not just zeta1.

To do:
* [x] remove duplicated logic around sending cloud requests between
zeta1 and zeta2
* [x] port the outcome reporting logic from zeta to zeta2.
* [x] get the "rate completions" modal working with all EP models
   * [x] display edit prediction diff
   * [x] show edit history events
* [x] remove the original `zeta` crate.

Release Notes:

- N/A

---------

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

Max Brunsfeld , Agus Zubiaga , and Ben Kunkle created

17d7988 Redact environment variables in server info view (#43436)

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

Release Notes:

- N/A

Kirill Bulatov created

8fd2e21 Fix remote project snippet duplication (#43429)

Click to expand commit body
Closes #43311

Release Notes:

- N/A

---------

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

Julia Ryan and John Tur created

e499f15 Keep single default PHP language server (#43432)

Click to expand commit body
https://github.com/zed-extensions/php/blob/9a119b18eeb247072964a19ce46fab54bbd1bb30/extension.toml
provides 3 language servers for `php`, so `...` will always include all
3 if those are not excluded or included explicitly.

Change the configs and docs so, that only one php language server is
used.

Release Notes:

- N/A

Kirill Bulatov created

f75e758 Fix zed cli in NixOS WSL instances (#43433)

Click to expand commit body
This fixes running `zed <path>` inside nixos wsl instances. We're
copying the approach used elsewhere which is to try using `--exec`
first, and if that fails use an actual shell which should cover the
nixos case because it only puts binaries on your PATH inside the
`/etc/profile` script which is sourced on shell startup.

Release Notes:

- N/A

---------

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

Julia Ryan and John Tur created

9e69ac8 editor: Fix copy file actions not working in remote environments (#43362)

Click to expand commit body
Closes #42500

Release Notes:

- Fixed all three editor actions not working in remote environments
  - `editor: copy file name`
  - `editor: copy file location`
  - `editor: copy file name without extension`

Here's the before/after:




https://github.com/user-attachments/assets/bfb03e99-2e1a-47a2-bd26-280180154fe3

Mayank Verma created

7694647 vim: Fix cursor shape after deactivation (#42834)

Click to expand commit body
Update the `Vim.deactivate` method to ensure that the cursor shape is
reset to the one available in the user's settings, in the `cursor_shape`
setting, instead of simply defaulting to `CursorShape::Bar`.

In order to test this behavior, the `Editor.cursor_shape` method was
also introduced.

Release Notes:

- Fixed the cursor shape reset in vim mode deactivation, ensuring that
the user's `cursor_shape` setting is used

---------

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

Lennart and dino created

342eba6 project: Send LSP metadata to remote ServerInfo (#42831)

Click to expand commit body
Closes #39582

Release Notes:

- Added LSP metadata to remote ServerInfo

Here's the before/after:


https://github.com/user-attachments/assets/1057faa5-82af-4975-abad-5e10e139fac1

---------

Co-authored-by: Kirill Bulatov <mail4score@gmail.com>

Mayank Verma and Kirill Bulatov created

bd2c102 Add support for Opus 4.5 (#43425)

Click to expand commit body
Adds support for Opus 4.5
- [x] BYOK
- [x] Amazon Bedrock

Release Notes:

- Added support for Opus 4.5

Co-authored-by: Richard Feldman <oss@rtfeldman.com>

Mikayla Maki and Richard Feldman created

d295ff4 Improve Windows path canonicalization (#43423)

Click to expand commit body
Path canonicalization on windows will now favor keeping the drive letter
intact when canonicalizing paths. This helps some lsps with mapped
network drive compatibility.

Closes #41336 

Release Notes:

- N/A

localcc created

7ce4f2a Opus 4.5 and Gemini 3 to docs (#43424)

Click to expand commit body
Add Opus 4.5 and Gemini 3 to docs

Release Notes:

- N/A

morgankrey created

092250b Rework and consolidate issue templates (#43403)

Click to expand commit body
We’re reworking our triage process and in doing so, reworking our issue
templates is worth looking into. We have multiple issue templates, for
arbitrary categories, and not enough enforcement. The plan is to
consolidate the issue templates (maybe all into one) and drop the
others.

Release Notes:

- N/A

Kunall Banerjee created

b577f8a Passthrough env to npm subcommands when using the system node runtime (#43102)

Click to expand commit body
Closes #39448
Closes #37866

This PR expands the env-clearing fix from #42587 to include the
SystemNodeRuntime, which covers Node.js installations managed by Mise.
When running under the system runtime, npm subcommands were still
launched with a cleared environment, preventing variables such as
MISE_DATA_DIR from reaching the shim or the mise binary itself. As a
result, Mise finds the npm binary in the default MISE_DATA_DIR,
consistent with the behavior described in
https://github.com/zed-industries/zed/issues/39448#issuecomment-3433644569.

This change ensures that environment variables are passed through for
npm subcommands when using the system Node runtime, restoring expected
behavior for Mise-managed Node installations. This also fixes cases
where envs are used by npm itself.

Release Notes:

- Enable environment passthrough for npm subcommands

Yeoh Joer created

4329a81 ui: Update `ThreadItem` component design (#43421)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

6631d8b Fix Gemini 3 on OpenRouter (#43416)

Click to expand commit body
Release Notes:

- Gemini 3 now works on OpenRouter in the Agent Panel

Richard Feldman created

a7fff59 Add each panel to the workspace as soon as it's ready (#43414)

Click to expand commit body
We'll now add panels to the workspace as soon as they're ready rather
than waiting for all the rest to complete. We should strive to make all
panels fast, but given that their load tasks are fallible and do IO,
this approach seems more resilient.

Additionally, we'll now start loading the agent panel at the same time
as the rest.

Release Notes:

- workspace: Add panels as soon as they are ready

Agus Zubiaga created

4a36f67 vim: Fix bug where `d . .` freezes the editor (#42145)

Click to expand commit body
This bug seems to be caused by pushing an operator (i.e. `d`) followed
by a repeat (i.e. `.`) so the recording includes the push operator and
the repeat. When this is repeated (i.e. `.`) it causes an infinite loop.

This change fixes this bug by pushing a ClearOperator action if there is
an ongoing recording when repeat is called.

Release Notes:

- Fixed bug where pressing `d . .` in Vim mode would freeze the editor.

---------

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

AidanV and dino created

47e8946 Attempt to fix `go to the end of the line` when using helix mode (#41575)

Click to expand commit body
Closes #41550

Release Notes:

- Fixed `<g-l>` behavior in helix mode which will now correctly go to the last charactor of the line.
- Fixed not switching to helix normal mode when in default vim context and pressing escape.

---------

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

HuaGu-Dragon and Jakub Konka created

ea7568c zeta2: Support experimental 1120-seedcoder model (#43411)

Click to expand commit body
1. Introduce a common `PromptFormatter` trait
2. Let models define their generation params.
3. Add support for the experimental 1120-seedcoder prompt format


Release Notes:

- N/A

Oleksiy Syvokon created

e6b42a2 Use a proper name for highlights.scm (#43412)

Click to expand commit body
Release Notes:

- N/A

Kirill Bulatov created

7bbc65e auto_updater: Fix `upload-nightly.ps1` and auto-update check (#43404)

Click to expand commit body
Release Notes:

- N/A

Piotr Osiewicz created

d6c550c debugger_ui: Add button to close the panel when docked to bottom (#43409)

Click to expand commit body
This PR adds a button to close the panel when it is docked to the
bottom. Effectively, the button triggers the same `ToggleBottomDock`
action that clicking on the button that opened the panel triggers, but I
think having it there just makes it extra obvious how to close it, which
is beneficial.

As a bonus, also fixed the panel controls container height when it is
docked to the sides, so it perfectly aligns with the panel tabbar
height.

| Perfectly Aligned Header | Close Button |
|--------|--------|
| <img width="2620" height="2010" alt="Screenshot 2025-11-24 at 12  01
2@2x"
src="https://github.com/user-attachments/assets/08a50858-1b50-4ebd-af7a-c5dae32cf4f6"
/> | <img width="2620" height="2010" alt="Screenshot 2025-11-24 at 12 
01@2x"
src="https://github.com/user-attachments/assets/17a6eee0-9934-4949-8741-fffd5b106e95"
/> |

Release Notes:

- N/A

Danilo Leal created

eff592c agent_ui: Refine "reject"/"keep" behavior when regenerating previous prompts (#43347)

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

Consider the following flow: you submit prompt A. Prompt A generates
some edits. You don't click on either "reject" or "keep"; they stay in a
pending state. You then submit prompt B, but before the agent outputs
any response, you click to edit prompt B, thus submitting a
regeneration.

Before this PR, the above flow would make the edits originated from
prompt A to be auto-rejected. This feels very incorrect and can surprise
users when they see that the edits that were pending got rejected. It
feels more correct to only auto-reject changes if you're regenerating
the prompt that directly generated those edits in the first place. Then,
it also feels more correct to assume that if there was a follow-up
prompt after some edits were made, those edits were passively
"accepted".

So, this is what this PR is doing. Consider the following flow to get a
picture of the behavior change:
- You submit prompt A. 
- Prompt A generates some edits. 
- You don't click on either "reject" or "keep"; they're pending. 
- You then submit prompt B, but before the agents outputs anything, you
click to edit prompt B, submitting a regeneration.
- Now, edits from prompt A will be auto-kept.

Release Notes:

- agent: Improved the "reject"/"keep" behavior when regenerating older
prompts by auto-keeping pending edits that don't originate from the
prompt to-be-regenerated.

Danilo Leal created