Commit log

2143c59 svg_preview: Ensure preview properly updates in follow mode (#38081)

Click to expand commit body
This fixes an issue where we would not update neither the path nor the
editor that was listened to during follow mode, which in turn would
cause the preview to become stale.

Fix here is to update the subscription whenever the active item changes
and also update the associated path accordingly.


Release Notes:

- Fixed an issue where the SVG preview would not update when following
the active editor.

Finn Evers created

2b3ca36 Fix flicker in short context menus that have documentation aside (#38074)

Click to expand commit body
Menu items in the context menu component have the ability to display a
documentation aside popover. However, because this docs aside popover
was setup as a sibling flex container to the actual menu popover, if the
menu had a short amount of items and the docs popover is bigger than the
menu, this flickering would happen, making it essentially unusable:


https://github.com/user-attachments/assets/74956254-fff6-4c5c-9f79-02998c64a105

So, this PR makes the docs aside popover in wide window sizes
absolutely-positioned relative to the menu container, which removes all
flickering. On top of that, I'm adding a `DocumentationEdge` enum that
allows to control the edge anchor of the docs aside, which is useful in
this particular mode selector example to make the layout work well.


https://github.com/user-attachments/assets/a3e811e1-86b4-4839-a219-c3b0734532b3

When the window is small, the docs aside continue to be a sibling flex
container, which causes a super subtle shift in the items within the
menu popover. This is something I want to pursue fixing, but didn't want
to delay this PR too much.

Release Notes:

- N/A

Danilo Leal created

85f7bb6 extension_host: Replace backslashes with forward slashes for cwd on Windows (#38072)

Click to expand commit body
Instead of passing CWD verbatim from the Windows host with backslashes
and all, we now rewrite it into a more POSIX-happy format featuring
forward slashes which means `std::path::Path` operations now work within
WASI with Windows-style paths.

Release Notes:

- N/A

Jakub Konka created

7377a89 project_panel: Allow dragging folded directories onto other items (#38070)

Click to expand commit body
In https://github.com/zed-industries/zed/pull/22983 we made it possible
to drag items onto folded directories.

This PR handles the reverse: dragging folded directories onto other
items.

Release Notes:

- Improved drag-and-drop support by allowing folded directories to be
dragged onto other items in Project Panel.

Smit Barmase created

8ebe812 Format CONTRIBUTING.md (#38073)

Click to expand commit body
This PR formats `CONTRIBUTING.md` using Prettier.

Release Notes:

- N/A

Marshall Bowers created

7f1c7c1 Update CONTRIBUTING to reflect reality (#38016)

Click to expand commit body
Release Notes:

- N/A

Conrad Irwin created

503284d Update oo7 to 0.5.0 (#38043)

Click to expand commit body
Resolves Incorrect Secret error in Secret Service integration

Closes #34024 

Release Notes:

- Fixed Secret Service integration sometimes producing `Incorrect
secret` error

bemyak created

2aa564e Remove ACP feature flags (#38055)

Click to expand commit body
This removes the `gemini-and-native` and `claude-code` feature flags.
Also, I removed a bunch of unused agent1 code that we do not need
anymore.

Initially I wanted to remove much more of the `agent` code, but noticed
some things that we need to figure out first:
- The inline assistant + context strip use `Thread`/`ContextStore`
directly
- We need some replacement for `ToolWorkingSet`, so we can access
available tools (as well as context server tools) in other places, e.g.
the agent configuration and the configure profile modal

Release Notes:

- N/A

Bennet Bo Fenner created

cba9ff5 Helix Select Mode (#37748)

Click to expand commit body
Please credit @eliaperantoni, for the original PR (#34136).
Merge after (#34060) to avoid conflicts.

Closes https://github.com/zed-industries/zed/issues/33838
Closes https://github.com/zed-industries/zed/issues/33906

Release Notes:
- Helix will no longer sometimes fall out into "normal" mode, will
remain in "helix normal" (example: vv)
- Added dedicated "helix select" mode that can be targeted by
keybindings

Known issues:
- [ ] Helix motion, especially surround-add will not properly work in
visual mode, as it won't call `helix_move_cursor`. It is possible
however to respect self.mode in change_selection now.
- [ ] Some operations, such as `Ctrl+A` (increment) or `>` (indent) will
collapse selection also. I haven't found a way to avoid it.

---------

Co-authored-by: fantacell <ghub@giggo.de>
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>

Romans Malinovskis , fantacell , and Conrad Irwin created

a577128 Update acp to 0.2.1 (#38068)

Click to expand commit body
Release Notes:

- N/A

Agus Zubiaga created

687c2c8 Fix experimental audio volume being significantly too low (#38062)

Click to expand commit body
The rodio channelcount convertor halves the volume. This addresses that
in most cases by using the default channelcount for the system
microphone which is usually 2.

A proper fix will follow later as part of the de-noising PR

Release Notes:

- N/A

David Kleingeld created

2a03b6b terminal: Fix `test_basic_terminal` test (#38059)

Click to expand commit body
`echo` isn't a program on windows, so we need to spawn a shell that
executes it for the test

Release Notes:

- N/A

Lukas Wirth created

e68aa18 project: Fix task arguments being quoted incorrectly for nushell and powershell (#38056)

Click to expand commit body
Release Notes:

- Fixed task arguments being quoted incorrectly for nushell and
powershell

Co-authored-by: Piotr Osiewicz <piotr@zed.dev>

Lukas Wirth and Piotr Osiewicz created

592b013 language: Split LSP installation handling into a separate trait (#38046)

Click to expand commit body
Part of reworking our installation handling to allow for multiple
different versions to be handled

Release Notes:

- Fixed pre-release lsp fetching setting not having an affect until
restarting Zed

Lukas Wirth created

1142408 language_models: Add provider options for OpenRouter models (#37979)

Click to expand commit body
Supersedes: #34500

Also this will allow to fix this: #35386 without the UX changes but
providers can now be control through settings as well within zed.

Just rebased the latest main and docs added. Added @AurelienTollard as
co-author as it was started by him everything else remains the same from
original PR.

Release Notes:

- Added ability to control Provider Routing for OpenRouter models from
settings.

Co-authored-by: Aurelien Tollard <tollard.aurelien1999@gmail.com>

Umesh Yadav and Aurelien Tollard created

8201f3d Use \x00 representation instead of literal null characters (#38033)

Click to expand commit body
When working on the git stash picker PR (#35927) I notice that my test
was detected as a binary file on the git diff view and on GitHub. This
was due to the fact that I was using the literal char \0 (instead of a
proper representation like `\x00` or `\u{0000}`) character in my test
strings. This causes problems with git diff and GitHub's diff viewer,
and a reviewer might even assume that the file is corrupted, not
viewable or even malicious.

Looking at the rest of the codebase, only at `crates/git/src/commit.rs`
this character was used, so I replaced it with `\x00` which is a more
common representation of the null character in Rust strings.

It can also be seen that the PR that introduced this code, can't be
viewed properly on Github:
https://github.com/zed-industries/zed/pull/27636/files#diff-31114f0b22306b467482573446f71c638277510b442a10e60dd9a8667ccd93c3

Closes #ISSUE

Release Notes:

- Use `\x00` representation instead of literal null character in strings
to improve compatibility with git diff and GitHub's diff viewer.

Since the file is not viewable from the "Files changed" tab on Github,
this is the changed code:


https://github.com/zed-industries/zed/blob/dcd743aca494ec0217a2d7751150ca9e456012f4/crates/git/src/commit.rs#L66-L74

Alvaro Parker created

fcfc54c Allow SplitAndMove on panes (#38034)

Click to expand commit body
Updates #19350

Release Notes:

- Add `pane::SplitAndMove{Up,Down,Left,Right}` to allow creating a split
without cloning the current buffer.

Conrad Irwin created

ffb85d7 Update crash handling docs (#38026)

Click to expand commit body
Also removed the symbolicate script, which we could replace with a
`minidump-stackwalk` wrapper that downloaded sources/unstripped binaries
from github releases if that's helpful for folks.

Release Notes:

- N/A

Julia Ryan created

405d7d7 Don't send contents of large `@mention`-ed files (#38032)

Click to expand commit body
<img width="598" height="311" alt="Screenshot 2025-09-11 at 9 39 12 PM"
src="https://github.com/user-attachments/assets/b526e648-37cf-4412-83a0-42037b9fc94d"
/>

This is for both ACP and the regular agent. Previously we would always
include the whole file, which can easily blow the context window on huge
files.

Release Notes:

- When `@mention`ing large files, the Agent Panel now send an outline of
the file instead of the whole thing.

Richard Feldman created

bdf44e5 Prevent Discord URL preview in good first issue notifications (#38030)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

45ee132 Add handling of git's core.excludesFile (#33592)

Click to expand commit body
Taking over from #28314.

Part of https://github.com/zed-industries/zed/issues/4824

Co-authored-by: Paul Nameless <reacsdas@gmail.com>

Release Notes:

- Zed now respects git's `core.excludesFile` (~/.config/git/ignore) in
addition to .gitignore.

---------

Co-authored-by: Paul Nameless <reacsdas@gmail.com>

Cole Miller and Paul Nameless created

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