Commit log

17db7b0 Add keymap field to bug report issue template (#44564)

Click to expand commit body
Update the issue template used for "Report a bug" to include a field
specifically for the user's keymap file, as we've seen multiple cases
where we end up asking the users for their custom keymap, to ensure that
they're not overriding existing defaults.

Release Notes:

- N/A

Dino created

1afe294 Move servers back from the background thread (#44696)

Click to expand commit body
Partial revert of https://github.com/zed-industries/zed/pull/44631

With this and `sccache` enabled, I get 
<img width="3456" height="1096" alt="image"
src="https://github.com/user-attachments/assets/937760fb-8b53-49f8-ae63-4df1d31b292b"
/>

and r-a infinitely hangs waiting on this.

Release Notes:

- N/A

Kirill Bulatov created

a8aa762 util: Fix shell builder quoting regressions (#44685)

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

Release Notes:

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

Lukas Wirth created

a66854e commit view: Reuse avatar asset (#44554)

Agus Zubiaga created

12073e1 Fix missing buffer font features in Blame UI, Hover Popover and Markdown Preview (#44657)

Click to expand commit body
- Fix missing font features in 
  `git_ui::blame_ui::GitBlameRenderer.render_blame_entry`
- Fix missing buffer font features in
`markdown_preview::markdown_renderer`
- Update the way that the markdown style is built for hover popovers so
  that, for code blocks, the buffer font features are used.
- Introduce `gpui::Styled.font_features` to allow callers to also set
  the font's features, similar to how `gpui::Styled.font_family` already
  exists.

Relates to #44209

Release Notes:

- Fixed wrong font features in Blame UI, Hover Popover and Markdown
Preview

Dino created

1186b50 git_ui: Fix commit and amend not working via keybinds in commit modal (#44690)

Click to expand commit body
Closes #41567

We were using the git panel editor to check the focus where the commit
modal has its only editor.

Release Notes:

- Fixed an issue where commit and amend actions wouldn’t trigger when
using keybinds in the commit modal.

Smit Barmase created

65130a9 windows: Fix more VSCode keybinds (#44684)

Click to expand commit body
Release Notes:

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

Lukas Wirth created

23d18fd git_ui: Always use latest commit message on amend (#44553)

Click to expand commit body
Update the behavior of `git::Amend` to ensure that the latest head
commit message, if available, is always loaded into the commit message
editor, regardless of its state. The previous text, if any, is now also
restored after the amend is finished.

- Update `FakeGitRepository.show` to include a message in the returned
`CommitDetails` so we can assert that this specific commit message is
set in the commit message editor.
- Add default implementation for `FakeGitRepository.commit` and
`FakeGitRepository.run_hook` to ensure that tests are able to run and
don't panic on `unimplemented!()`
- Refactor `GitPanel.load_last_commit_message_if_empty` to
`GitPanel.load_last_commit_message`, ensuring that the head commit
message is always loaded, regardless of whether the commit message
editor is empty.
- Update `GitPanel.commit_changes` to ensure that the pending amend
state is only updated if the editor managed to actually commit the
changes. This also ensures that we don't restore the commit message
editor's contents when amending a commit, before the amend is actually
processed.
- Update `CommitModal.amend`, removing the call to
`GitPanel.set_amend_pending` as that is now handled by the background
task created in `GitPanel.commit_changes`.
- Split the `commit` and `amend` methods from the event handlers so that
the methods can be called directly, as is now being done by
`CommitModal.on_commit` and `CommitModal.on_amend`.

Release Notes:

- Updated the ‎`git: amend` command to always load the latest head
commit message, and to restore any previously entered text in the commit
message editor after the amend completes

Dino created

332c0d0 Terminal regex perf improvements (#44679)

Click to expand commit body
Closes #44510

Release Notes:

- Improve performance of terminal link matching even more

Conrad Irwin created

b871130 Restructure concurrency in EP CLI to allow running many examples in big rust repos (#44673)

Click to expand commit body
Release Notes:

- N/A

Max Brunsfeld created

0a1e5f9 Allow triggering after release workflow manually (#44671)

Click to expand commit body
Release Notes:

- N/A

Conrad Irwin created

8d0fff6 rust: Change cwd of `cargo run`-esque tasks to use package root, not dirname of current file as cwd (#44672)

Click to expand commit body
This also applies to `cargo clean` one.

Closes #20873

Release Notes:

- rust: Changed cwd of tasks that spawn a binary target to the root of a
current package (which used to be a directory of the current source
file).

Piotr Osiewicz created

717d898 Show an underlying reason on file opening (#44664)

Click to expand commit body
Based on the debug attempt from
https://github.com/zed-industries/zed/issues/44370

Release Notes:

- N/A

Kirill Bulatov created

1cd7563 Add ep distill command, for generating edit prediction training examples (#44670)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Oleksiy Syvokon <oleksiy@zed.dev>
Co-authored-by: Agus Zubiaga <agus@zed.dev>

Max Brunsfeld , Oleksiy Syvokon , and Agus Zubiaga created

fc6ca38 edit prediction cli: Improve language server reliability (#44666)

Click to expand commit body
We weren't waiting for ALL language servers of a buffer to start, only
the first one.

Release Notes:

- N/A

Agus Zubiaga created

1029a8f Add support for manual spans, expand instrumentation (#44663)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Cameron <cameron@zed.dev>

Yara 🏳️‍⚧️ and Cameron created

07748b7 Add scrolling functionality to markdown preview mode (#44585)

Click to expand commit body
Closes #21324

Adds four new commands:
- `markdown::MoveUp`, `markdown::MoveDown` - these scroll up and down in
markdown preview mode, by no more than the height of a large headline.

- `markdown::MoveUpByItem`, and `markdown::MoveDownByItem` - these
scroll up and down by the height of the item at the top of the markdown
preview window. So headlines and large codeblocks, for instance, scroll
further than individual paragraph lines.

Also attempts to create sensible defaults:
`down` -> `markdown::ScrollDown`
`up` -> `markdown::ScrollUp`
`alt-down` -> `markdown::ScrollDownByItem`
`alt-up` -> `markdown::ScrollUpByItem`

And in Vim:

`ctrl-u` -> `markdown::ScrollPageUp`
`ctrl-d` -> `markdown::ScrollPageDown`
`ctrl-e` -> `markdown::ScrollDown`
`ctrl-y` -> `markdown::ScrollUp`


Release Notes:

- Added commands `markdown::ScrollUp`, `markdown::ScrollDown`,
`markdown::ScrollUpByItem`, and `markdown::ScrollDownByItem`
- Changed commands `markdown::MovePageUp` to `markdown::ScrollPageUp`
and `markdown::MovePageDown` to `markdown::ScrollPageDown`

KyleBarton created

37f2ac2 edit prediction cli: Skip worktree scan (#44658)

Click to expand commit body
Release Notes:

- N/A

Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>

Agus Zubiaga and Max Brunsfeld created

b5a0a33 Add GPT-5.2 support (#44656)

Click to expand commit body
<img width="429" height="188" alt="Screenshot 2025-12-11 at 3 45 26 PM"
src="https://github.com/user-attachments/assets/fe9f1b86-7268-4c63-a8c2-75ac671012c9"
/>


Release Notes:

- Added GPT-5.2 support when using your own OpenAI key

Richard Feldman created

eb7da26 Disable word completions in markdown and plaintext files (#44654)

Click to expand commit body
Reformat on save had also added trailing commas.

Release Notes:

- Disable word completions in plaintext and markdown files, see
https://zed.dev/docs/configuring-zed?highlight=word%20completio#words on
how to enable it back in the language settings

Kirill Bulatov created

9c099e7 Update file vs folder open keymaps on macos/linux to match windows (#44598)

Click to expand commit body
Closes #44597

Matches what was done here:

https://github.com/zed-industries/zed/pull/44409/commits/55dfbaca685fc466efedace55527b9d12ab67950#diff-cc832e840d61526768bb4acec7645a71e8b160a65a30e7ce9e9c51762b58199a

Release Notes:

- Standardize Cmd-O = open file, Cmd-K Cmd-O = open folder across
operating systems.

---------

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

Zachiah Sawyer and Lukas Wirth created

7669b05 image viewer: Make image metadata not a button (#44651)

Click to expand commit body
Tiny thing I noticed; the image metadata showing on the status bar was
previously a button, but given that nothing happens when you click it,
it doesn't need to be one. Having hover, active, and all other states
was confusing.

Release Notes:

- N/A

Danilo Leal created

2098b67 edit prediction: Respect enabled settings when refreshing from diagnostics (#44640)

Click to expand commit body
Release Notes:

- N/A

Agus Zubiaga created

5a6198c language: Spawn language servers on background threads (#44631)

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

Leverages a new `await_on_background` API that spawns the future on the
background but blocks the current task, allowing to borrow from the
surrounding scope.

Release Notes:

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

Lukas Wirth created

cda78c1 git: Make permalinks aware of current diffs (#41915)

Click to expand commit body
Addressing #22546, we want git permalinks to be aware of the current
changes within the buffer.

This change calculates how many lines have been added/deleted between
the start and end of the selection and uses those values to offset the
selection.

This is done within `Editor::get_permalink_to_line` so that it can be
passed to any git_store.

Example:

<img width="284" height="316" alt="image"
src="https://github.com/user-attachments/assets/268043a0-2fc8-41c1-b094-d650fd4e0ae0"
/>

Where this selections permalink would previously return L3-L9, it now
returns L2-L7.

Release Notes:

- git: make permalinks aware of current diffs

Closes #22546

---

This is my first PR into the zed repository so very happy for any
feedback on how I've implemented this. Thanks!

Siame Rafiq created

f437867 editor: Fix auto-indent cases in Markdown (#44616)

Click to expand commit body
Builds on https://github.com/zed-industries/zed/pull/40794 and
https://github.com/zed-industries/zed/pull/44381

- Fixes the case where creating a new line inside a nested list puts the
cursor correctly under that nested list item.
- Fixes the case where typing a new list item at the expected indent no
longer auto-indents or outdents incorrectly.

Release Notes:

- Fixed an issue in Markdown where new list items weren’t respecting the
expected indentation on type.

Smit Barmase created

ecb8d3d Revert "Multiple priority scheduler" (#44637)

Click to expand commit body
Reverts zed-industries/zed#44575

Yara 🏳️‍⚧️ created

95dbc0e Multiple priority scheduler (#44575)

Click to expand commit body
Improves the scheduler by allowing tasks to have a set priority which
will significantly improve responsiveness.

Release notes:

- N/A

---------

Co-authored-by: Yara <git@yara.blue>

localcc and Yara created

8572c19 Improve TS/TSX/JS syntax highlighting for parameters, types, and punctuation (#44532)

Click to expand commit body
Relands https://github.com/zed-industries/zed/pull/43437

Release Notes:

- Refined syntax highlighting in JavaScript and TypeScript for better
visual distinction of types, parameters, and JSDoc elements

---------

Co-authored-by: MrSubidubi <dev@bahn.sh>
Co-authored-by: Clay Tercek <30105080+claytercek@users.noreply.github.com>

Gaauwe Rombouts , MrSubidubi , and Clay Tercek created

045c145 util: Honor shell args for shell env fetching on windows (#44615)

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

Release Notes:

- Fixed shell environment fetching on windows discarding specified
arguments in settings

Lukas Wirth created

0ff3b68 windows: Fix incorrect cursor insertion keybinds (#44608)

Click to expand commit body
Release Notes:

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

Lukas Wirth created

a6b9524 gpui: Retain maximized and fullscreen state for new windows derived from previous windows (#44605)

Click to expand commit body
Release Notes:

- Fixed new windows underflowing the taskbar on windows
- Improved new windows spawned from maximized or fullscreened windows by
copying the maximized and fullscreened states

Lukas Wirth created

7ed5d42 git: Fix git hook hang with `prek` (#44212)

Click to expand commit body
Fix git hook hang when using with `prek`. Can see
[comments](https://github.com/zed-industries/zed/issues/44057#issuecomment-3606837089),
this is easy test, should using release build, debug build sometimes not
hang.

The issue existing long time, see issue #37293 , and then in commit
#42239 this issue had fixed. but in commit #43285 broken again. So I
reference the implementation in #42239, then this code work.

I MUST CLAIM, I really don't known what happend, and why this code work.
But it worked.

Release Notes:

- N/A

---------

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

CharlesChen0823 and Cole Miller created

25d7448 Rework edit prediction CLI (#44562)

Click to expand commit body
This PR restructures the commands of the Edit Prediction CLI (now called
`ep`), to support some flows that are important for the training
process:
* generating zeta2 prompt and expected output, without running
predictions
* scoring outputs that are generated by a system other than the
production code (to evaluate the model during training)

To achieve this, we've restructured the CLI commands so that they all
take as input, and produce as output, a consistent, uniform data format:
a set of one or more `Example` structs, expressible either as the
original markdown format, or as a JSON lines. The `Example` struct
starts with the basic fields that are in human-readable eval format, but
contain a number of optional fields that are filled in by different
steps in the processing pipeline (`context`, `predict`, `format-prompt`,
and `score`).

### To do

* [x] Adjust the teacher model output parsing to use the full buffer
contents
* [x] Move udiff to cli
* [x] Align `format-prompt` with Zeta2's production code
* [x] Change score output to assume same provider
* [x] Move pretty reporting to `eval` command
* [x] Store cursor point in addition to cursor offset
* [x] Rename `edit_prediction_cli2` -> `edit_prediction_cli` (nuke the
old one)

Release Notes:

- N/A

---------

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

Max Brunsfeld , Oleksiy Syvokon , Agus Zubiaga , and Ben Kunkle created

37077a8 git: Avoid calling `git help -a` on every commit (#44586)

Click to expand commit body
Updates #43993 

Release Notes:

- N/A

Cole Miller created

7c4a85f ci: Explicitly set git committer information in protobuf check (#44582)

Click to expand commit body
This should hopefully fix the flakes for good.

Release Notes:

- N/A

Finn Evers created

d21628c Revert "Increase askpass timeout for git operations (#42946)" (#44578)

Click to expand commit body
This reverts commit a74aac88c95738b1e1c95ac583b116a253920fbf.

cc @11happy, we need to do a bit more than just running `git hook
pre-push` before pushing, as described
[here](https://github.com/zed-industries/zed/pull/42946#issuecomment-3550570438).
Right now this is also running the pre-push hook twice.

Release Notes:

- N/A

Cole Miller created

9e62850 git: Add tree view support to Git Panel (#44089)

Click to expand commit body
Closes #35803

This PR adds tree view support to the git panel UI as an additional
setting and moves git entry checkboxes to the right. Tree view only
supports sorting by paths behavior since sorting by status can become
noisy, due to having to duplicate directories that have entries with
different statuses.

### Tree vs Flat View
<img width="358" height="250" alt="image"
src="https://github.com/user-attachments/assets/c6b95d57-12fc-4c5e-8537-ee129963e50c"
/>
<img width="362" height="152" alt="image"
src="https://github.com/user-attachments/assets/0a69e00f-3878-4807-ae45-65e2d54174fc"
/>


#### Architecture changes

Before this PR, `GitPanel::entries` represented all entries and all
visible entries because both sets were equal to one another. However,
this equality isn't true for tree view, because entries can be
collapsed. To fix this, `TreeState` was added as a logical indices field
that is used to filter out non-visible entries. A benefit of this field
is that it could be used in the future to implement searching in the
GitPanel.

Another significant thing this PR changed was adding a HashMap field
`entries_by_indices` on `GitPanel`. We did this because `entry_by_path`
used binary search, which becomes overly complicated to implement for
tree view. The performance of this function matters because it's a hot
code path, so a linear search wasn't ideal either. The solution was
using a hash map to improve time complexity from O(log n) to O(1), where
n is the count of entries.

#### Follow-ups
In the future, we could use `ui::ListItem` to render entries in the tree
view to improve UI consistency.
 
Release Notes:

- Added tree view for Git panel. Users are able to switch between Flat
and Tree view in Git panel.

---------

Co-authored-by: Anthony Eid <anthony@zed.dev>
Co-authored-by: Remco Smits <djsmits12@gmail.com>

Xipeng Jin , Anthony Eid , and Remco Smits created

3a84ec3 Introduce MVP Dev Containers support (#44442)

Click to expand commit body
Partially addresses #11473 

MVP of dev containers with the following capabilities:

- If in a project with `.devcontainer/devcontainer.json`, a pop-up
notification will ask if you want to open the project in a dev
container. This can be dismissed:
<img width="1478" height="1191" alt="Screenshot 2025-12-08 at 3 15
23 PM"
src="https://github.com/user-attachments/assets/ec2e20d6-28ec-4495-8f23-4c1d48a9ce78"
/>
- Similarly, if a `devcontainer.json` file is in the project, you can
open a devcontainer (or go the devcontainer.json file for further
editing) via the `open remote` modal:


https://github.com/user-attachments/assets/61f2fdaa-2808-4efc-994c-7b444a92c0b1

*Limitations*

This is a first release, and comes with some limitations:
- Zed extensions are not managed in `devcontainer.json` yet. They will
need to be installed either on host or in the container. Host +
Container sync their extensions, so there is not currently a concept of
what is installed in the container vs what is installed on host: they
come from the same list of manifests
- This implementation uses the [devcontainer
CLI](https://github.com/devcontainers/cli) for its control plane. Hence,
it does not yet support the `forwardPorts` directive. A single port can
be opened with `appPort`. See reference in docs
[here](https://github.com/devcontainers/cli/tree/main/example-usage#how-the-tool-examples-work)
- Editing devcontainer.json does not automatically cause the dev
container to be rebuilt. So if you add features, change images, etc, you
will need to `docker kill` the existing dev container before proceeding.
- Currently takes a hard dependency on `docker` being available in the
user's `PATH`.


Release Notes:

- Added ability to Open a project in a DevContainer, provided a
`.devcontainer/devcontainer.json` is present

---------

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

KyleBarton , Danilo Leal , and Danilo Leal created

a61bf33 Fix label copy for file history menu items (#44569)

Click to expand commit body
Buttons and menu items should preferably always start with an infinitive
verb that describes what will happen when you trigger them. Instead of
just "File History", we should say "_View_ File History".

Release Notes:

- N/A

Danilo Leal created

d832012 Use shell to launch MCP and ACP servers (#42382)

Click to expand commit body
`npx`, and any `npm install`-ed programs, exist as batch
scripts/PowerShell scripts on the PATH. We have to use a shell to launch
these programs.

Fixes https://github.com/zed-industries/zed/issues/41435
Closes https://github.com/zed-industries/zed/pull/42651


Release Notes:

- windows: Custom MCP and ACP servers installed through `npm` now launch
correctly.

---------

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

John Tur and Lukas Wirth created

8ee85ea vim: Remove `ctrl-6` keybinding alias for `pane::AlternateFile` (#44560)

Click to expand commit body
Closes #ISSUE

It seems that `ctrl-6` is used exclusively as an alias, as can be seen
in the [linked section of the vim
docs](https://vimhelp.org/editing.txt.html#CTRL-%5E) from the initial PR
that added it. This however conflicts with the `ctrl-{n}` bindings for
`pane::ActivateItem` on macOS, leading to confusing file selection when
`ctrl-6` is pressed.

Release Notes:

- vim(BREAKING): Removed a keybinding conflict between the default macOS
bindings for `pane::ActivateItem` and the `ctrl-6` alias
for`pane::AlternateFile` which is primarily bound to `ctrl-^`. `ctrl-6`
is no longer treated as an alias for `ctrl-^` in vim mode. If you'd like
to restore `ctrl-6` as a binding for `pane::AlternateFile`, paste the
following into your `keymap.json` file:
```
  {
    "context": "VimControl && !menu",
    "bindings": {
      "ctrl-6": "pane::AlternateFile"
    }
  }
```

Ben Kunkle created

5b309ef acp: Better telemetry IDs for ACP agents (#44544)

Click to expand commit body
We were defining these in multiple places and also weren't leveraging
the ids the agents were already providing.

This should make sure we use them consistently and avoid issues in the
future.

Release Notes:

- N/A

Ben Brandt created

326ebb5 git: Fix failing commits when hook command is not available (#43993)

Mayank Verma created

f5babf9 agent_ui: Fix `project path not found` error when pasting code from other project (#44555)

Click to expand commit body
The problem with inserting the absolute paths is that the agent will try
to read them. However, we don't allow the agent to read files outside
the current project. For now, we will only insert the crease in case the
code that is getting pasted is from the same project

Release Notes:

- Fixed an issue where pasting code into the agent panel from another
window would show an error

Bennet Bo Fenner created

f48aa25 Bump Zed to v0.218 (#44551)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

4106c8a Disable OmniSharp by default for C# files (#44427)

Click to expand commit body
In preparation for https://github.com/zed-extensions/csharp/pull/11. Do
not merge before that PR is published.

Release Notes:

- Added support for Roslyn in C# files. Roslyn will now be the default
language server for C#

Finn Evers created

21f7e6a commit view: Fix layout shift while loading commit (#44548)

Click to expand commit body
Fixes a few cases where the commit view would layout shift as the diff
loaded. This was caused by:
- Adding the commit message buffer after all the diff files
- Using the gutter dimensions from the last frame for the avatar spacing

Release Notes:

- commit view: Fix layout shift while loading commit

---------

Co-authored-by: MrSubidubi <dev@bahn.sh>

Agus Zubiaga and MrSubidubi created

dd43163 editor: Ensure completion menu scrollbar does not become stale (#44536)

Click to expand commit body
Only by reusing the previous scroll handle, we can ensure that both the
scrollbar remains usable and also that the scrollbar does not flicker.
Previously, the scrollbar would hold the reference to an outdated
handle.

I tried invalidating the handle the scrollbar uses, but that leads to
flickering, which is worse. Hence, let's just reuse the scrollbar here.

Release Notes:

- Fixed an issue where the scrollbar would become stale in the code
completions menu after the items were updated.

Finn Evers created

511e51c text: Replace some more release panics with graceful fallbacks (#44542)

Click to expand commit body
Fixes ZED-3P7

Release Notes:

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

Lukas Wirth created