Commit log

557d393 docs: Add sidebar title collapse functionality and design facelift (#43754)

Click to expand commit body
This PR adds the ability to collapse section in the docs sidebar (which
are persistent until you close the tab), and some design facelift to the
docs, which makes its design close to the site as well as polishing up
many elements and interactions (like moving the search to a modal and
making the table of content visible in smaller breakpoints).

<img width="600" height="2270" alt="Screenshot 2025-11-28 at 5  26@2x"
src="https://github.com/user-attachments/assets/3a8606c6-f74f-4bd2-84c8-d7a67ff97564"
/>

Release Notes:

- N/A

Danilo Leal created

1cc3a4c settings ui: Add tab_bar.show_tab_bar_buttons to settings UI (#43746)

Click to expand commit body
Release Notes:

- Added "Show Tab Bar Buttons" setting to Settings UI to control
visibility of New, Split Pane, and Zoom buttons in the tab bar.


<img width="899" height="750" alt="Screenshot 2025-11-28 at 12 37 08 PM"
src="https://github.com/user-attachments/assets/9894da7b-9702-4b37-9adb-ae0e43c87edf"
/>

David Baldwin created

f6ab730 Allow opening settings.json file from Settings UI with keybinding (#43747)

Click to expand commit body
Release Notes:

- Added a keybinding to open the `settings.json` file when the Settings
UI is in focus: `cmd-,` (macOS) / `ctrl-,` (Windows / Linux).
- A tooltip was added to the `Edit in settings.json` button to show this
keybinding.

Joseph T. Lyons created

6c98003 Tweak the issue template for bugs (#43719)

Click to expand commit body
- shorten some phrases to (hopefully) retain attention better
- move the required field up to not bore people with scrolling
- call it a bug and not an issue to further emphasize we want feature
requests in Discussions where the product managers are
- remove the default from the WSL question since not everyone does
WSL or even Windows

Release Notes:

- N/A

---------

Co-authored-by: Miguel Raz Guzmán Macedo <miguel@zed.dev>
Co-authored-by: Kunall Banerjee <hey@kimchiii.space>

Lena , Miguel Raz Guzmán Macedo , and Kunall Banerjee created

7b4e050 Use test db for command palette under vim tests (#43731)

Agus Zubiaga created

7c967b8 language: Allow support for ESLint working directories (#43677)

Click to expand commit body
Closes #9648 #9755

Release Notes:

- Added way to configure ESLint's working directories in settings. For
example:
`{"lsp":{"eslint":{"settings":{"workingDirectories":["./client","./server"]}}}}`

---------

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

Smit Barmase and Piotr Osiewicz created

478bcea docs: Add configuration explanation in git section (#43637)

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

Release Notes:

- Added configuration documentation for git-commit settings including preferred-line-length in the git panel

---------

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

Matthew Chisolm and Jakub Konka created

c18481e git: Add UI for deleting branches (#42703)

Click to expand commit body
Closes #42641

Release Notes:

- Added UI for deleting Git branches

---------

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

Mayank Verma and Jakub Konka created

87e3d6e git: Check push config before falling back to branch remote (#41700)

Click to expand commit body
Closes #26649

Release Notes:

- Improved git support for remotes handling. Git will now check pushRemote and pushDefault configurations before
falling back to branch remote.

---------

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

Mayank Verma and Jakub Konka created

d877e56 Add a script to label untriaged GH issues (#43711)

Click to expand commit body
Release Notes:

- N/A

Lena created

b89bcbe editor: Speed up `colorize_brackets` slightly in large multibuffers (#43713)

Click to expand commit body
There is still room for improvement here as `anchor(s)_in_excerpt` is
generally a bad API here due to it reseeking the entire excerpt tree
from the start on every call which we don't really need. But this at
least cuts the seeks down by a factor of 4 for now.

Release Notes:

- Improved performance of bracket colorization in large multibuffers

Lukas Wirth created

8f8a92c editor: Reduce amount of sumtree traversals in `header_and_footer_blocks` (#43709)

Click to expand commit body
Introduces new "mapping point cursors" for the different display map
layers allowing one to map multiple points in increasing order more
efficiently than using the one shot operations.

This is used in the `BlockMap::sync` for `header_and_footer_blocks`
which spends a significant time in sumtree traversal due to repeatedly
transforming points between the different layers. This effectively turns
the complexity of those operations from quadratic in the number of
excerpts to linear, as we only go through the respective sumtrees once
instead of restarting from the start over and over again.

Release Notes:

- Improved performance for editors of large multibuffers with many
different files

Lukas Wirth created

fc213f1 git_ui: Introduce explicit yield points for project diff (#43706)

Click to expand commit body
These are long running foreground tasks that tend to not have pending
await points, meaning once we start executing them they will never
reschedule themselves, starving the foreground thread.

Release Notes:

- Improved git project diff responsiveness

Lukas Wirth created

f856a3c askpass: Use double quotes for script name in helper command (#43689)

Click to expand commit body
Replace single quotes with double quotes when referencing the askpass
script name in the helper command. The Windows command processor
(cmd.exe) requires double quotes for proper string handling, as single
quotes are treated as literal characters.

Error I get when trying to open remote project:
<img width="396" height="390" alt="image"
src="https://github.com/user-attachments/assets/1538ee10-8efc-4f80-a867-b367908091b6"
/>

```
Zed Nightly 0.216.0 
c2281779af56bd52c829ccd31aae4eb82b682ebc
0.216.0+nightly.1965.c2281779af56bd52c829ccd31aae4eb82b682ebc
```

Release Notes:

- N/A

Maokaman1 created

65e224c agent panel: Improve keybindings on Windows (#43692)

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

Release Notes:

- agent: Fixed keybinding for allowing a command to run in the agent
panel on Windows.

Danilo Leal created

b17b903 Enhance color logic for phantom elements to improve visual distinction based on collision status (#42710)

Click to expand commit body
This change modifies the color assignment for phantom elements in the
editor. If a phantom element collides with existing elements, it now
uses a custom color based on the theme's debugger accent with reduced
opacity. Otherwise, it defaults to the hint color.

BEFORE:
![20251114-0939-17
9919633](https://github.com/user-attachments/assets/4ec56f03-4708-4b35-b1ab-abdfd41c763e)

AFTER:
![20251114-0942-38
8596606](https://github.com/user-attachments/assets/6e9a98f1-a34d-4676-9dc6-b3e2b9f967bc)


Release Notes:

- Enhanced color logic for phantom elements to improve visual
distinction based on collision status.

---------

Co-authored-by: Danilo Leal <daniloleal09@gmail.com>

Libon and Danilo Leal created

77656a4 sweep: Set `use_bytes` flag (#43687)

Click to expand commit body
Without this new flag, the Sweep API will actually produce a combination
of UTF-16 and char indices, leading to incorrect edit positions.

Release Notes:

- N/A

Agus Zubiaga created

05b999b git: Move git-blame outside of git job queue (#43565)

Click to expand commit body
We restructured `struct Repository` a bit so that it now stores a shared
task of `enum RepositoryState`. This way, we can now re-use it outside
of the git job queue when spawning a git job a standalone bg task. An
example here would be `git-blame` that does not require any file locks
and is not susceptible to git job ordering.

As a result of this change, loading (and modifying) a file that contains
a huge git history will no longer block other git operations on the repo
such as staging/unstaging/committing.

Release Notes:

- Improved overall git experience when loading buffers with massive git
history where they would block other git jobs from running (such as
staging/unstaging/commiting). Now, git-blame will run separately from
the git job queue on the side and the buffer with blame hints when
finished thus unblocking other git operations.

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

Jakub Konka and Cole Miller created

d099ea0 docs: Improve content about text threads vs. threads (#43688)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

518ea71 agent_ui: Truncate file path in context completions (#42682)

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

Followed some prior art here: [a similar calculation
](https://github.com/zed-industries/zed/blob/e80b490ac00bfb5c206d3eb3f5c2dec10e742678/crates/file_finder/src/file_finder.rs#L1105)
in `file_finder.rs`

Release Notes:

- improved visibility of long path names in context completions by
truncating on the left when space is insufficient to render the full
path

Before:
<img width="544" height="251" alt="Screenshot of overflowing file paths"
src="https://github.com/user-attachments/assets/8440710d-3f59-4273-92bb-3db85022b57c"
/>

After: 
<img width="544" height="251" alt="Screenshot of truncated file paths"
src="https://github.com/user-attachments/assets/e268ba87-7979-4bc3-8d08-9198b4baea02"
/>

Scott Churchley created

20b5843 checkbox: Fix showing cursor pointer for edge of the checkbox when it's disabled (#43577)

Click to expand commit body
This PR fixes that you saw the cursor pointer for disabled checkbox.
This is only for the edge of the checkbox component, because we didn't
check for the disabled case.

**Before**


https://github.com/user-attachments/assets/cfebad01-533b-4515-b8d9-4bcb839eaec4

**After**


https://github.com/user-attachments/assets/969600de-081b-42df-a288-ca3db5758d12

Release Notes:

- N/A

Remco Smits created

28dde14 ui: Fix custom size preview example of vector component (#43633)

Click to expand commit body
In the vector component custom size preview example, the image will
overflow the content box.

| Before | After |
| - | - |
| <img width="1235" height="1042" alt="Before"
src="https://github.com/user-attachments/assets/1c4ff772-2578-41b2-94e8-9e2d625484f8"
/> | <img width="1234" height="1044" alt="After"
src="https://github.com/user-attachments/assets/19d6ab1a-d169-417e-b550-1e422358288e"
/> |

Release Notes:

- N/A

---------

Co-authored-by: Danilo Leal <daniloleal09@gmail.com>

Floyd Wang and Danilo Leal created

f10afd1 component_preview: Pin the filter input at the top (#43636)

Click to expand commit body
When I scroll the page after selecting a component, the filter input
disappears. It would be more helpful if it stayed fixed at the top.

## Before


https://github.com/user-attachments/assets/e26031f1-d6e7-4ae2-a148-88f4c548a5cf

## After


https://github.com/user-attachments/assets/f120355c-74d3-4724-9ffc-71fb7e3a4586

Release Notes:

- N/A

Floyd Wang created

45285ee settings ui: Fix debugger step granularity setting (#43686)

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

Release Notes:

- N/A

Danilo Leal created

fa070c5 editor: Show "Toggle Excerpt Unfold" tooltip when buffer is fold (#43626)

Click to expand commit body
Release Notes:

- N/A

---------

Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>

Xiaobo Liu and Danilo Leal created

d97d4f3 ui: Remove early return after painting existing menu (#43631)

Click to expand commit body
Release Notes:

- Fixed right-click context menu UX issues

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

Xiaobo Liu created

64633ba gpui(windows): Prioritize system messages when exceeding main thread task budget (#43682)

Click to expand commit body
Release Notes:

- Improved responsiveness on windows when there is a lot of tasks
running in the foreground

Lukas Wirth created

d82be97 acp: Support using @mentions after typing slash command (#43681)

Click to expand commit body
Release Notes:

- acp: Allow using @mentions after typing slash command

Bennet Bo Fenner created

aa899f6 gpui: Give windows message loop processing chances when we overload the main thread with tasks (#43678)

Click to expand commit body
This reduces hangs on windows when we have many tasks queued up on the
main thread that yield a lot.

Release Notes:

- Reduced hangs on windows in some situations

Lukas Wirth created

5f0212d Better promote edit prediction when signed out (#43665)

Click to expand commit body
Introducing this little popover here that's aimed at better
communicating what Zed's built-in edit prediction feature is and how
much people can get of it for free by purely just signing in.

<img width="600" height="1914" alt="Screenshot 2025-11-27 at 9  50@2x"
src="https://github.com/user-attachments/assets/a7013292-f662-4cae-9a6f-0e69a4a4fa1d"
/>

Release Notes:

- N/A

Danilo Leal created

c228177 auto_update: Tentatively prevent auto-update loop on Nightly again (#43670)

Click to expand commit body
Release Notes:

- N/A

Piotr Osiewicz created

02fbafc release_version: Do not use prerelease field (#43669)

Click to expand commit body
- **release_channel: Do not use prerelease channel for build id**
Prerelease channel specifiers always compare as less than to
non-prerelease, which led to 2 auto-update bugs fixed in
https://github.com/zed-industries/zed/pull/43595 and
https://github.com/zed-industries/zed/pull/43611.
We'll use a dot-delimited build specifiers in form:
release-channel.build_number.sha1 instead
- **auto_update: Do not display full build metadata in update
notification**

Release Notes:

- N/A

Piotr Osiewicz created

007d648 acp: Add a timeout when initializing an ACP agent so the user isn't waiting forever (#43663)

Click to expand commit body
Sometimes we are unable to receive messages at all from an agent. This
puts on upper bound on the `initialize` call so we can at least give a
message to the user that something is wrong here.

30s might feel like too long, but I wanted to avoid some false positives
in case there was something an agent needed to do at startup. This will
still communicate to the user at some point that something is wrong,
rather than leave them waiting forever with no signal that something is
going wrong.

Release Notes:

- agent: Show an error message to the user if we are unable to
initialize an ACP agent in a reasonable amount of time.

Ben Brandt created

bbdbfe3 Auto-label new bugs/crashes with 'needs triage' (#43658)

Click to expand commit body
Release Notes:

- N/A

Lena created

ab96155 buffer_search: Fix replace buttons not working if search bar is not focused (#43569)

Click to expand commit body
Update the way that both
`search::buffer_search::BufferSearchBar.replace_next` and
`search::buffer_search::BufferSearchBar.replace_all` are registered as
listeners, so that we don't require the replacement editor to be focused
in order for these listeners to be active, only requiring the
replacement mode to be active in the buffer search bar.

This means that, even if the user is focused on the buffer editor, if
the "Replace Next Match" or "Replace All Matches" buttons are clicked,
the replacement will be performed.

Closes #42471 

Release Notes:

- Fixed issue with buffer search bar where the replacement buttons
("Replace Next Match" & "Replace All Matches") wouldn't work if search
bar was not focused

Dino created

8e04706 editor: Fix panic in wrap_map (#43650)

Click to expand commit body
Fixes ZED-3P9

We only clamped the end which for a completely wrong input could cause
us to construct a reversed range which will end up underflowing later
on.

Release Notes:

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

Lukas Wirth created

99d7b2f zeta2: Compute diff-aware chrF metric (#43485)

Click to expand commit body
Zeta evals now include a character n-gram metric adapted for multi-edit diffs (“delta chrF”). It works as follows:

1. Reconstruct the original, golden (expected), and actual texts from unified diffs.
   - "original": the text before any edits
   - "golden": the text after applying the expected edits
   - "actual": the text after applying the actual edits

2. Compute n-gram count deltas between original→golden and original→actual.
   - n-grams are computed as in chrF (max n=6, whitespace ignored).

3. Compare these deltas to assess how well the actual edits match the expected edits.
   - As in standard chrF, classify n-grams as true positives, false positives, and false negatives, and report the F-beta score with beta=2.

Release Notes:

- N/A

Oleksiy Syvokon created

91400e7 Do not color html tags and other "long" "bracket pairs" (#43644)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/43621
Follow-up of https://github.com/zed-industries/zed/pull/43172

Release Notes:

- (Preview only) Fixed html tags incorrectly colorized

Kirill Bulatov created

82b7682 remote: Do not include prerelease and build meta in asset queries (#43611)

Click to expand commit body
Closes #43580

Release Notes:

- (Preview only) Fixed failures to fetch remoting server (needed to run
remoting).

Piotr Osiewicz created

8c355b5 Improve `extension_bump` workflow (#43612)

Click to expand commit body
This extends the extension CI workflow to create a tag once the version
is bumped on main.

Release Notes:

- N/A

Finn Evers created

54309f4 Account for greedy tree-sitter bracket matches (#43607)

Click to expand commit body
Current approach is to colorize brackets based on their depth, which was
broken for markdown:

<img width="388" height="50" alt="image"
src="https://github.com/user-attachments/assets/bd8b6c2f-5a26-4d6b-a301-88675bf05920"
/>

Markdown grammar, for bracket queries
https://github.com/zed-industries/zed/blob/00e93bfa113a3daed6e4a97a7244ad04d58453ee/crates/languages/src/markdown/brackets.scm#L1-L8

and markdown document `[LLM-powered features](./ai/overview.md), [bring
and configure your own API
keys](./ai/llm-providers.md#use-your-own-keys)`, matches first bracket
(offset 0) with two different ones:

* `[LLM-powered features]`

* `[LLM-powered features](./ai/overview.md), [bring and configure your
own API keys]`

which mix and add different color markers.

Now, in case multiple pairs exist for the same first bracket, Zed will
only colorize the shortest one:
<img width="373" height="33" alt="image"
src="https://github.com/user-attachments/assets/04b3f7af-8927-4a8b-8f52-de8b5bb063ac"
/>


Release Notes:

- Fixed bracket colorization mixing colors in markdown files

Kirill Bulatov created

958f109 editor: Consider experimental theme overrides for colorized bracket invalidation (#43602)

Click to expand commit body
Release Notes:

- Fixed a small issue where bracket colors would not be immediately
updated if `experimental_theme_overrides.accents` was changed.

Finn Evers created

c366627 auto-update: Fix auto-update loop with non-nightly channels (#43595)

Click to expand commit body
There are 3 factors:
1. The Preview channel endpoint does not propagate versions with build
identifier (which we oh-so-conveniently store in pre-release field of
semver).
2. Preview build, once fetched, sees it's version *with* build
identifier (as that's baked into the binary).
3. Auto update logic treats versions with pre-release version as less
than versions without pre-release version.

This in turn makes any Preview client see itself as versioned like
0.214.4-123-asdf1234455311, whereas the latest version on the endpoint
is 0.214.4. Thus, the endpoint version is always more recent than the
client version, causing an update loop.

The fix is to ignore build identifier when comparing versions of
non-nightly channels. This should still let us introduce changes to
auto-update behavior in minor releases in the future.

Closes #43584

Release Notes:

- (Preview only): Fixed an update loop with latest Preview update.

Piotr Osiewicz created

ae649c6 Make key repeat rate on Wayland more precise (2) (#43589)

Click to expand commit body
CLOSES  #39042

This is a reopening of #34985+. 

_Original descrioption_:

In Wayland, the client implement key repeat themself. In Zed this is
ultimately handled by the gpui crate by inserting a timer source into
the event loop which repeat itself if the key is still held down [1].

But it seems the processing of the repeated key event happen
synchronously inside the timer source handler, meaning the effective
rate become slightly lower (since the repeated timer is scheduled using
the 1/rate as delay).

I measured the event processing time on my laptop and it's typically
around 3ms, but sometimes spiking at 10ms. At low key repeat rates this
is probably not _very_ noticeable. I see the default in Zed is set to a
(measly) 16/s, but I assume most systems will use something closer to
25, which is a 40ms delay. So ~3ms is around 7.5% of the delay. At
higher rate the discrepancy become worse of course.

I can visible notice the spikes, and doing some crude stopwatch
measurements using gedit as a reference I can reproduce around 5-10%
slower rates in Zed.

IMO this is significant enough to warrant improving, especially since
some people can get quite used the repeat rate and might feel something
being "off" in Zed.

~~The suggested fix simply subtract the processing time from the next
delay timer.~~


[1] https://github.com/olejorgenb/zed/blob/32df726f3b7fa83e7399f6629c59e0a3f3fff125/crates/gpui/src/platform/linux/wayland/client.rs#L1355

Release Notes:

- Improved Wayland (Linux) key repeat rate precision

Ole Jørgen Brønner created

36a3b41 edit prediction: Request trigger (#43588)

Click to expand commit body
Adds a `trigger` field to the zeta1/zeta2 prediction requests so that we
can distinguish between editor, diagnostic, and zeta-cli requests.

Release Notes:

- N/A

Agus Zubiaga created

f89e530 edit prediction: Report early-rejected predictions and fix cancel bug (#43585)

Click to expand commit body
Many prediction requests end up being rejected early without ever being
set as the current prediction. Before this change, those cases weren’t
reported as rejections because the `request_prediction_with_*` functions
simply returned `Ok(None)`.

With this update, whenever we get a successful response from the
provider, we will return at least the `id`, allowing it to be properly
reported. The request now also includes a “reject reason,” since the
different variants carry distinct implications for prediction quality.

All of these scenarios are now covered by tests. While adding them, I
also found and fixed a bug where some cancelled predictions were
incorrectly being set as the current one.

Release Notes:

- N/A

---------

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

Agus Zubiaga and MrSubidubi created

61a414d Fix language server renaming when parent directory does not exist (#43499)

Click to expand commit body
Update the `fs::RenameOptions` used by
`project::lsp_store::LocalLspStore.deserialize_workspace_edit` in order
to always set `create_parents` to `true`. Doing this ensures that we'll
always create the folders for the new file path provided by the language
server instead of failing to handle the request in case the parent

- Introduce `create_parents` field to `fs::RenameOptions`
- Update `fs::RealFs.rename` to ensure that the `create_parents` option
is respected

Closes #41820 

Release Notes:

- Fixed a bug where using language server's file renaming actions could
fail if the parent directory of the new file did not exist

Dino created

233b976 Add WSL Linux choice and settings.json prompt for GitHub issue template (#43479)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Kunall Banerjee <hey@kimchiii.space>

Miguel Raz Guzmán Macedo and Kunall Banerjee created

6b92c1a workspace: Fix broken main build after #43518 (#43570)

Click to expand commit body
*cough* merge queue *cough*

Release Notes:

- N/A

Piotr Osiewicz created

1a23115 gpui: Unify `track_scroll` method to receive a reference type (#43518)

Click to expand commit body
Release Notes:

- N/A

This PR to change the `track_scroll` method to receive a reference type
like the
[Div#track_scroll](https://docs.rs/gpui/latest/gpui/trait.StatefulInteractiveElement.html#method.track_scroll),
[Div#track_focus](https://docs.rs/gpui/latest/gpui/trait.InteractiveElement.html#method.track_focus).


```diff
- .track_scroll(self.scroll_handle.clone())
+ .track_scroll(&self.scroll_handle)

- .vertical_scrollbar_for(self.scroll_handle.clone(), window, cx)
+ .vertical_scrollbar_for(&self.scroll_handle, window, cx)
```


https://github.com/zed-industries/zed/blob/56a2f9cfcf0c6a3c38f596b58002953763cd890f/crates/gpui/src/elements/div.rs#L1088-L1093


https://github.com/zed-industries/zed/blob/56a2f9cfcf0c6a3c38f596b58002953763cd890f/crates/gpui/src/elements/div.rs#L613-L620

Jason Lee created