Commit log

b60e705 Fix auto update not defaulting to true (#38022)

Click to expand commit body
#37337 Made `AutoUpdateSetting` `FileContent =
AutoUpdateSettingsContent` which caused a deserialization bug to occur
because the field it was wrapping wasn't optional. Thus serde would
deserialize the wrapped type `bool` to its default value `false`
stopping the settings load function from reading the correct default
value from `default.json`

I also added a log message that states when the auto updater struct is
checking for updates to make this easier to test.

Release Notes:

- fix auto update defaulting to false

Anthony Eid created

2bb50ac Add action to send good first issues to discord (#38021)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

87f5e72 python: Add built-in support for Ty (#37580)

Click to expand commit body
- **Rename PythonLSPAdapter to PyrightLspAdapter**
- **ah damn**
- **Ah damn x2**

Release Notes:

- Python: Added built-in support for [ty](https://docs.astral.sh/ty/)
language server (disabled by default).

---------

Co-authored-by: Lukas Wirth <lukas@zed.dev>
Co-authored-by: Zsolt Dollenstein <zsol.zsol@gmail.com>
Co-authored-by: Cole Miller <cole@zed.dev>

Piotr Osiewicz , Lukas Wirth , Zsolt Dollenstein , and Cole Miller created

11b7913 Refactor/optimize tree-sitter utilities for finding nodes enclosing ranges (#37943)

Click to expand commit body
#35053 split out these utility functions. I found the names / doc
comments a bit confusing so this improves that. Before that PR there was
also a mild inefficiency - it would walk the cursor all the way down to
a leaf and then back up to an ancestor.

Release Notes:

- N/A

Michael Sloan created

ff2eebf settings ui: Add basic support for drop down menus (#38019)

Click to expand commit body
Enums with six or less fields can still use toggle groups by adding a
definition.

I also renamed the `OpenSettingsEditor` action to `OpenSettingsUi`

Release Notes:

- N/A

Anthony Eid created

c4d75ea Windows: Fix issues with paths in extensions (#37811)

Click to expand commit body
### Background

Zed extensions use WASI to access the file-system. They only have
read-write access to one specific folder called their work dir. But
extensions do need to be able to *refer* to other arbitrary files on the
user's machine. For instance, extensions need to be able to look up
existing binaries on the user's `PATH`, and request that Zed invoke them
as language servers. Similarly, extensions can create paths to files in
the user's project, and use them as arguments in commands that Zed
should run. For these reasons, we pass *real* paths back and forth
between the host and extensions; we don't try to abstract over the
file-system with some virtualization scheme.

On Windows, this results in a bit of mismatch, because `wasi-libc` uses
*unix-like* path conventions (and thus, so does the Rust standard
library when compiling to WASI).

### Change 1 - Fixing `current_dir`

In order to keep the extension API minimal, extensions use the standard
library function`env::current_dir()` to query the location of their
"work" directory. Previously, when initializing extensions, we used the
`env::set_current_dir` function to set their work directory, but on
Windows, where absolute paths typically begin with a drive letter, like
`C:`, the [`wasi-libc` implementation of
`chdir`](https://github.com/WebAssembly/wasi-libc/blob/d1793637d8afcdc730408e7b6a19a050c3336ce7/libc-bottom-half/sources/chdir.c#L21)
was prepending an extra forward slash to the path, which caused
`current_dir()` to return an invalid path.

See https://github.com/bytecodealliance/wasmtime/issues/10415

In this PR, I've switched our extension initialization function to
*bypass* wasi-libc's `chdir` function, and instead write directly to
wasi-libc's private, internal state. This is a bit of a hack, but it
causes the `current_dir()` function to do what we want on Windows
without any changes to extensions' source code.

### Change 2 - Working around WASI's relative path handling

Once `current_dir` was fixed (giving us correct absolute paths on
Windows), @kubkon and I discovered that without the spurious leading `/`
character, windows absolute paths were no longer accepted by Rust's
`std::fs` APIs, because they were now recognized as relative paths, and
were being appended to the working directory.

We first tried to override the `__wasilibc_find_abspath` function in
`wasi-libc` to make it recognize windows absolute paths as being
absolute, but that functionality is difficult to override. Eventually
@kubkon realized that we could prevent WASI-libc's CWD handling from
being linked into the WASM file by overriding the `chdir` function.
wasi-libc is designed so that if you don't use their `chdir` function,
then all paths will be interpreted as relative to `/`. This makes
absolute paths behave correctly. Then, in order to make *relative* paths
work again, we simply add a preopen for `.`. Relative paths will match
that.

### Next Steps

This is a change to `zed-extension-api`, so we do need to update every
Zed extension to use the new version, in order for them to work on
windows.

Release Notes:

- N/A

---------

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

Max Brunsfeld and Jakub Konka created

d5d30b5 python: Add built-in support for Ruff (#37804)

Click to expand commit body
Release Notes:

- python: The Ruff native language server is now available without
installing an extension.

---------

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

Cole Miller and Piotr Osiewicz created

7655e22 Fix panics from unicode slicing in license detection (#38015)

Click to expand commit body
Closes #37954

Release Notes:

- N/A

Michael Sloan created

7a83a7f Fix congratsbot (#38013)

Click to expand commit body
We need a PAT to have permission to check team information. Also, the
COAUTHOR_TEMPLATES didn't feel quite right. Skipping this for now.

Release Notes:

- N/A

Joseph T. Lyons created

3cb3f01 languages: Pass fs into the init function (#38007)

Click to expand commit body
Release Notes:

- N/A

---------

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

Piotr Osiewicz and Cole Miller created

46aa05e Fix regex syntax in matching os-release (#38010)

Click to expand commit body
From
https://github.com/zed-industries/zed/pull/37712#issuecomment-3281970712,
thank you @zywo

Release Notes:

- N/A

Martin Pool created

a33af4e Remove legacy panic handling (#37947)

Click to expand commit body
@maxdeviant We can eventually turn down the panic telemetry endpoint,
but should probably leave it up while there's still a bunch of stable
users hitting it.

@maxbrunsfeld We're optimistic that this change also fixed the macos
crashed-thread misreporting. We think it was because the
`CrashContext::exception` was getting set to `None` only on macos, while
on linux it was getting a real exception value from the sigtrap. Now
we've unified and it uses `SIGABRT` on both platforms (I need to double
check that this works as expected for windows).

We unconditionally set `RUST_BACKTRACE=1` for the current process so
that we see backtraces when running in a terminal by default. This
should be fine but I just wanted to note it since it's a bit abnormal.

Release Notes:

- N/A

---------

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

Julia Ryan and Conrad Irwin created

116c654 project_panel: Make rest of the project panel drag and drop target (#38008)

Click to expand commit body
Closes #25854

You can now drag-and-drop on the remaining space in the project panel to
drop entries/external paths in the last worktree.


https://github.com/user-attachments/assets/a7e14518-6065-4b0f-ba2c-823c70f154f4

Release Notes:

- Added support for drag-and-drop files and external paths into the
empty space of the project panel, placing them in the last folder you
have added to the project.

Smit Barmase created

da8c7a1 Polish congratsbot (#38005)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

2b04186 Only run congratsbot for non-staff (#38000)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

4622936 editor: Re-use multibuffers when opening the same locations again (#37994)

Click to expand commit body
A very primitive attempt, we just key the editor with the locations and
re-use the editor if we open a new buffer with the same initial
locations and title.

Release Notes:

- Added reusing of reference search buffers when applicable

Lukas Wirth created

e5c0373 Make rodio audio input compile under windows (#37999)

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

adds conditional cmp removing use of libwebrtc on windows/freebsd

They cant compile livekit yet. This removes microphone and echo
cancellation on those platforms however they can not join calls due to
the same cause so it does not matter.

Documentation and error handing improvements

Release Notes:

- N/A

---------

Co-authored-by: Richard <richard@zed.dev>

David Kleingeld and Richard created

a066794 Document two task rerun modes better (#37996)

Click to expand commit body
Part of https://github.com/zed-industries/zed/issues/37720

Release Notes:

- N/A

Kirill Bulatov created

f6b6d4a Add congratsbot (#37998)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

238dab4 Adjust release notes Discord webhook name (#37997)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

d1c6c9d Remove old LSP definitions (#37995)

Click to expand commit body
Last time MultiLspQuery was used in Zed was 0.201.x and Nightly is of
0.205.x version, hence it's time to clean up the old code.

Release Notes:

- N/A

Kirill Bulatov created

d7f3d08 editor: Ensure placeholder text wraps properly after font size change (#37992)

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

This fixes an issue where the placeholder text in editors would not wrap
properly in cases where the font size was changed.

Before:


https://github.com/user-attachments/assets/479c919f-5815-4164-b46d-75f31b5dc56f

After:


https://github.com/user-attachments/assets/9f63ab9f-eac2-4f3e-864c-2b96b58f2d71


Release Notes:

- N/A

Finn Evers created

4db19a3 search: Fix buffer search history navigation (#37924)

Click to expand commit body
Closes #36109 

Adds an additional option to `search` and `update_matches` to specify
whether the update should affect the search history.

Release Notes:

- Fix navigating buffer search history

tidely created

c4e8fe1 theme: Ensure opaque for overlay fallback (#37987)

Click to expand commit body
Closes #37965

Release Notes:

- N/A

Smit Barmase created

4002602 project: Fix terminal activation scripts failing on Windows for new shells (#37986)

Click to expand commit body
Tasks are still disabled as there seem to be more issues with it

Release Notes:

- N/A

Lukas Wirth created

6ae83b4 Support indent regex with inline comments in Python (#37903)

Click to expand commit body
Closes #36491

This issue is caused by the Python language configuration treating
compound statements (such as for loops and if statements) that end with
an inline comment as not requiring an increased indent.

Release Notes:

- python: Correctly indent lines starting the blocks (for, finally, if,
else, try) that have trailing comments.

ImFeH2 created

eec6bfe extension_host: Fix operation status whilst installing dev extension (#37985)

Click to expand commit body
This fixes a minor issue where we would show "Removing extension ..." in
the status bar when we would actually be installing it.

Release Notes:

- Fixed an issue where installing a dev extension would show the
installation status as "removing" in the activity indicator.

Finn Evers created

9875969 editor: Allow no context for the `excerpt_context_lines` setting (#37982)

Click to expand commit body
Closes #37980

There seems to be no reason to hard limit this to 1, and we even have
existing UX for this case already:

<img width="1530" height="748" alt="Bildschirmfoto 2025-09-11 um 11 22
57"
src="https://github.com/user-attachments/assets/d6498318-c905-4d3c-90ab-60e4f2bb6c48"
/>

(Notice the different arrows in the gutter area for single lines)

Hence, allowing the value to honor the request from the issue

Release Notes:

- Allowed `0` as a value for the `excerpt_context_lines` setting

Finn Evers created

5950228 Document Tailwind CSS language server configuration (#37970)

Click to expand commit body
Added configuration instructions for Tailwind CSS language server.

Release Notes:

- N/A

David Matter created

f764077 Change keymap precedence to favor user (#37557)

Click to expand commit body
Closes #35623 

Previously if a base keymap had a `null` set to an action, leading to a
`NoAction` being assigned to the keymap, if a user wanted to take
advantage of that keymap (in this particular case, `cmd-2`), the keymap
binding check would favor the `NoAction` over the user, since
technically the context depth matched better. Instead, we should always
prefer the user's settings over whatever base or default.

Release Notes:

- Fixed keymap precedence by favoring user settings over base keymap /
configs.

Mitch (a.k.a Voz) created

9708c8d feature_flags: Move feature flag definitions to their own module (#37956)

Click to expand commit body
This PR moves the feature flag definitions to their own module so that
they aren't intermingled with the feature flag infrastructure itself.

Release Notes:

- N/A

Marshall Bowers created

f205732 feature_flags: Remove unused `llm-closed-beta` feature flag (#37955)

Click to expand commit body
This PR removes the `llm-closed-beta` feature flag, as it is no longer
used.

Release Notes:

- N/A

Marshall Bowers created

aee21ca Allow for commit amends with no file changes (#37256)

Click to expand commit body
This will users to change the wording of the most recent commit,
something they might want to do if they realize they made a small typo
of some kind or if the formatting of their commit message is wrong, but
don't have any other changes they need to make.

Release Notes:

- Commit messages can now be amended in the UI without any other changes
needing to be made.

---------

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

Ryan Hawkins and Cole Miller created

816c481 Fix code actions menu item font size (#37951)

Click to expand commit body
Follow up to https://github.com/zed-industries/zed/pull/37824, which
made items be cut-off in the _editor_ instance of the code actions menu.
This PR applies the default UI font size for the code action menu items
only when the origin is the quick actions bar.

Release Notes:

- Fix code actions menu items being cut-off in the editor.

Danilo Leal created

0f9232a Fix wrong cursor shape description in Configuring Zed page (#37933)

Click to expand commit body
It was previously copied incorrectly from `Terminal: Copy On Select`.

Release Notes:

- Fixed wrong description in `Terminal: Cursor Shape` in `Configuring
Zed` document

Dima created

db367cc scheduler: Add missing constructs for Cloud (#37948)

Click to expand commit body
This PR adds some missing constructs that are needed by Cloud to the
scheduler.

Release Notes:

- N/A

Marshall Bowers created

2ce0641 settings_ui: Handle enums with fields (#37945)

Click to expand commit body
Closes #ISSUE

Adds handling for Enums with fields (i.e. not `enum Foo { Yes, No }`) in
Settings UI. Accomplished by creating default values for each element
with fields (in the derive macro), and rendering a toggle button group
with a button for each variant where switching the active variant sets
the value in the settings JSON to the default for the new active
variant.

Release Notes:

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

---------

Co-authored-by: Conrad <conrad@zed.dev>

Ben Kunkle and Conrad created

95ccce3 Rodio audio (#37786)

Click to expand commit body
Adds input to the experimental rodio_audio pipeline.

Enable with:
```json
"audio": {
  "experimental.rodio_audio": true
}
```

Additionally enables automatic volume 
control for incoming audio:
```json
"audio": {
  "experimental.control_output_volume": true
}
```

Release Notes:

- N/A

David Kleingeld created

14de161 Compress minidumps (#37797)

Click to expand commit body
@notpeter this should fix that issue you were seeing where a generated
minidump was too big to upload with the sentry api.

Release Notes:

- N/A

Julia Ryan created

b8c30f4 Improve Tab Map performance (#32243)

Click to expand commit body
## Context

While looking into: #32051 and #16120 with instruments, I noticed that
`TabSnapshot::to_tab_point` and `TabSnapshot::to_fold_point` are a
common bottleneck between the two issues. This PR takes the first steps
into closing the stated issues by improving the performance of both
those functions.

### Method

`to_tab_point` and `to_fold_point` iterate through each character in
their rows to find tab characters and translate those characters into
their respective transformations. This PR changes this iteration to take
advantage of the tab character bitmap in the `Rope` data structure and
goes directly to each tab character when iterating.

The tab bitmap is now passed from each layer in-between the `Rope` to
the `TabMap`.

### Testing 

I added several randomized tests to ensure that the new `to_tab_point`
and `to_fold_point` functions have the same behavior as the old methods
they're replacing. I also added `test_random_chunk_bitmap` on each layer
the tab bitmap is passed up to the `TabMap` to make sure that the bitmap
being passed is transformed correctly between the layers of
`DisplayMap`.

`test_random_chunk_bitmap` was added to these layers:
- buffer
- multi buffer
- custom_highlights
- inlay_map
- fold_map

## Benchmarking 

I setup benchmarks with criterion that is runnable via `cargo bench -p
editor --profile=release-fast`. When benchmarking I had my laptop
plugged in and did so from the terminal with a minimal amount of
processes running. I'm also on a m4 max

### Results 

#### To Tab Point

Went from completing 6.8M iterations in 5s with an average time of
`736.13 ns` to `683.38 ns` which is a `-7.1875%` improvement

#### To Fold Point

Went from completing 6.8M iterations in 5s with an average time of
`736.55 ns` to `682.40 ns` which is a `-7.1659%` improvement

#### Editor render 

Went from having an average render time of `62.561 µs` to `57.216 µs`
which is a `-8.8248%` improvement

#### Build Buffer with one long line

Went from having an average buffer build time of `3.2549 ms` to `3.2635
ms` which is a `+0.2151%` regression within the margin of error

#### Editor with 1000 multi cursor input 

Went from having an average edit time of `133.05 ms` to `122.96 ms`
which is a `-7.5776%` improvement

Release Notes:

- N/A

---------

Co-authored-by: Remco Smits <djsmits12@gmail.com>
Co-authored-by: Cole Miller <cole@zed.dev>
Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>

Anthony Eid , Remco Smits , Cole Miller , and Piotr Osiewicz created

cb75c2a Make plans backwards compatible (#37941)

Click to expand commit body
This PR fixes the backwards compatibility of the new `Plan` variants.

We can't add new variants to the wire representation, as old clients
won't be able to understand them.

Release Notes:

- N/A

Marshall Bowers created

2c29eac Fetch all staff in get-preview-channel-changes script (#37940)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

a94b093 editor: Fix cuts on end of line cutting whole line (#34553)

Click to expand commit body
Closes #19816

Release Notes:

- Improved `ctrl-k` (`editor::CutToEndOfLine`) behavior when used at the
end of lines
- Add option to make `editor::CutToEndOfLine` not gobble newlines.
   ```json
   {
     "context": "Editor",
"bindings": { "ctrl-k": ["editor::CutToEndOfLine", { "stop_at_newlines":
true }] }
   },
   ```

---------

Co-authored-by: Peter Tripp <peter@zed.dev>

AidanV and Peter Tripp created

441a934 Remove unnecessary `Option` from functions querying buffer outline (#37935)

Click to expand commit body
`None` case wasn't being used

Release Notes:

- N/A

Michael Sloan created

b28c979 language_settings: Add whitespace_map setting (#37704)

Click to expand commit body
This setting controls which visible characters are used to render
whitespace when the show_whitespace setting is enabled.

Release Notes:

- Added `whitespace_map` setting to control which visible characters are
used to render whitespace when the `show_whitespace` setting is enabled.

---------

Co-authored-by: Nia Espera <nia@zed.dev>

Ilija Tovilo and Nia Espera created

22e31a0 Fix crash when filtering items in Picker (#37929)

Click to expand commit body
Closes #37617

We're already using `get` in a bunch of places, this PR updates the
remaining spots to follow the same pattern. Note that the `ix` we read
in `render_match` can sometimes be stale.

The likely reason is that we run the match-update logic asynchronously
(see
[here](https://github.com/zed-industries/zed/blob/138117e0b15664079f5526cb56168750382b49b9/crates/picker/src/picker.rs#L643)).
That means it's possible to render items after the list's [data
update](https://github.com/zed-industries/zed/blob/138117e0b15664079f5526cb56168750382b49b9/crates/picker/src/picker.rs#L652)
but before the [list
reset](https://github.com/zed-industries/zed/blob/138117e0b15664079f5526cb56168750382b49b9/crates/picker/src/picker.rs#L662),
in which case the `ix` can be greater than that of our updated data.

Release Notes:

- Fixed crash when filtering MCP tools.

Smit Barmase created

c0b583c keymap_editor: Move OpenKeymapEditor action into zed_actions (#37928)

Click to expand commit body
This lets us remove title_bar's dependency on keymap_editor, which in
turns improves dev build times by ~0.5s for me

Release Notes:

- N/A

Piotr Osiewicz created

6441099 gpui: Fix blending of colors in `HighlightStyle::highlight` (#37666)

Click to expand commit body
Whilst looking into adding support for RainbowBrackes, we stumbled upon
this: Whereas for all properties during this blending, we take the value
of `other` if it is set, for the color we actually take `self.color`
instead of `other.color` if `self.color` is at full opacity.
`Hsla::blend` returns the latter color if it is at full opacity, which
seems wrong for this case. Hence, this PR swaps these.

Will not merge before the next release, to ensure that we don't break
something somewhere unexpected.

Release Notes:

- N/A

Finn Evers created

611b966 Fix typo in development docs for Windows and Linux (#37925)

Click to expand commit body
Fixes same typo ("collabortation") as #37607 but for the Windows and
Linux dev docs.

Release Notes:

- N/A

Andy Brauninger created

630340d agent: Fix mention completion sometimes not dismissing on space (#37922)

Click to expand commit body
Previously we would still show a completion menu even when the user
typed an unrecognised mode with an argument,
e.g. `@something word`.
This PR ensures that we only show the completion menu, when the part
after the `@` is a known mode (e.g. `file`/`symbol`/`rule`/...)

Release Notes:

- Fix an issue where completions for `@mentions` in the agent panel
would sometimes not be dismissed when typing a space

Bennet Bo Fenner created