Commit log

de75e2d extension_host: Expand supported extension API range to include v0.7.0 (#38529)

Click to expand commit body
This PR updates the version range for v0.6.0 of the extension API to
include v0.7.0.

Since we bumped the `zed_extension_api` crate's version to v0.7.0, we
need to expand this range in order for Zed clients to be able to install
extensions built against v0.7.0 of `zed_extension_api`.

Currently no extensions that target `zed_extension_api@0.7.0` can be
installed.

Release Notes:

- N/A

Marshall Bowers created

4e316c6 macos: Fix panic when `NSWindow::screen` returns `nil` (#38524)

Click to expand commit body
Closes #ISSUE

Release Notes:

- mac: Fixed an issue where Zed would panic if the workspace window was
previously off screen

Ben Kunkle created

1afbfcb git: Docs-based workaround for GitHub/git auth confusion (#38479)

Click to expand commit body
Closes #ISSUE

Release Notes:

- git: Added a link to Github's authentication help if you end up in Zed
trying to type a password in for https auth

Conrad Irwin created

be75755 Fix theme overrides (#38512)

Click to expand commit body
Release Notes:

- N/A

Conrad Irwin created

30a29ab Fix server settings (#38477)

Click to expand commit body
In the settings refactor I'd assumed server settings were like project
settings. This is not the case, they are in fact the normal user
settings;
but just read from the server.

Release Notes:

- N/A

Conrad Irwin created

b9188e0 collab: Fix screen share aspect ratio on non-Mac platforms (#38517)

Click to expand commit body
It was just a bunch of finnickery around UI layout. It affected Linux
too.



Release Notes:

* Fixed aspect ratio of peer screen share when using Linux/Windows
builds.

Piotr Osiewicz created

df6f0bc Fix markdown list in `bump-zed-minor-versions` (#38515)

Click to expand commit body
This fixes a small markdown issue in the `bump-zed-minor-versions`
script that bugged me for too long ๐Ÿ˜…

Release Notes:

- N/A

Finn Evers created

4743fe8 vim: Fix regression in surround behavior (#38344)

Click to expand commit body
Fix an issue introduced in
https://github.com/zed-industries/zed/pull/37321 where vim's surround
wouldn't work as expected when replacing quotes with non-quotes, with
whitespace always being added, regardless of whether the opening or
closing bracket was used. This is not the intended, or previous,
behavior, where only the opening bracket would trigger whitespace to be
added.

Closes #38169 

Release Notes:

- Fixed regression in vim's surround plugin that ignored whether the
opening or closing bracket was being used when replacing quotes, so
space would always be added

Dino created

0f4bdca Update icon theme fallback to use default theme (#38485)

Click to expand commit body
https://github.com/zed-industries/zed/pull/38367 introduced panic:

```
thread 'main' panicked at crates/theme/src/settings.rs:812:18:
called `Option::unwrap()` on a `None` value
```

In this PR I restored fallback logic from the original code - before
settings refactor.

Release Notes:

- N/A

Jan ฤŒeลกpivo created

154b01c Dismiss agent panel when `disable_ai` is toggled to `true` (#38461)

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

This fixes an issue where we would not dismiss the panel once the user
toggled the setting, leaving them in an awkward state where closing the
panel would become hard.

Also takes care of one more check for the `Fix with assistant` action
and consolidates some of the `AgentSettings` and `DisableAiSetting`
checks into one method to make the code more readable.

Release Notes:

- N/A

Finn Evers created

b6944d0 docs: Fix duplicate postgresql package and punctuation error (#38478)

Click to expand commit body
Found duplicate `postgresql` package in installation command. Uncertain
whether it should be `postgresql-contrib` or `postgresql-client`, but
neither appears necessary.


Release Notes:

- N/A

้€ƒ็”Ÿ่ˆฑ created

94fcbb4 docs: Update invalid property in a configuration example (#38466)

Click to expand commit body
Just install Zed for the first time and got a warning from the first
config example i copied from docs.
Great design btw, immediately able to see that this is a well thought
out app. seems like i'll stick with zed and make it my new dev
'sanctuary'.

Release Notes:

- N/A

Dimas Ari created

2e97ef3 Revert "Audio fixes and mic denoise" (#38509)

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

Release Notes:

- N/A

David Kleingeld created

aa5b99d Fully qualify images in Docker Compose (#38496)

Click to expand commit body
This enables podman-compose (easier to install and run on linux) as drop
in replacement for docker-compose

Release Notes:

- N/A

David Kleingeld created

3217bcb docs: Add Kotlin JAVA_HOME example (#38507)

Click to expand commit body
Closes: https://github.com/zed-extensions/kotlin/issues/46

Release Notes:

- N/A

Peter Tripp created

a3da66c editor: Correct "Toggle Excerpt Fold" tip on macOS (#38487)

Click to expand commit body
Show `"Option+click to toggle all"` instead of `"Alt+click to toggle
all" on macOS.

<img width="546" height="212" alt="Screenshot 2025-09-19 at 10 16 11"
src="https://github.com/user-attachments/assets/b1052b7c-349f-4a11-892b-988cfd2ff365"
/>

Release Notes:

- N/A

Bartosz Kaszubowski created

9e6f1d5 python: Fix ty binary path and required args (#38458)

Click to expand commit body
Closes #38347

Release Notes:

- Fixed path and args to ty lsp binary


When attempting to use the new ty lsp integration in the preview, I
noticed issues related to accessing the binary. After deleting the
downloaded archive and adding the following changes that:

- downloads the archive with the correct `AssetKind::TarGz`
- uses the correct path to the extracted binary
- adds the `server` argument to initialize the lsp (like ruff)

After the above changes the LSP starts correctly
```bash
2025-09-18T16:17:03-05:00 INFO  [lsp] starting language server process. binary path: "/Users/dereknguyen/Library/Application Support/Zed/languages/ty/ty-0.0.1-alpha.20/ty-aarch64-apple-darwin/ty", working directory: "/Users/dereknguyen/projects/test-project", args: ["server"]
```
<img width="206" height="98" alt="image"
src="https://github.com/user-attachments/assets/8fcf423f-40a0-4cd9-a79e-e09666323fe2"
/>

---------

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

Derek Nguyen and Cole Miller created

430ac51 python: Install basedpyright with npm instead of pip (#38471)

Click to expand commit body
Closes #ISSUE

Release Notes:

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

Cole Miller created

5f728ef agent: Show custom MCP servers in agent configuration (#38500)

Click to expand commit body
Fixes a regression introduced in #38419

Release Notes:

- N/A

Bennet Bo Fenner created

194a13f Add denoising & prepare for migrating to new samplerate & channel count (#38493)

Click to expand commit body
Uses the previously merged denoising crate (and fixes a bug in it that snug in during refactoring) in the microphone input. The experimental audio path now picks the samplerate and channel count depending on a setting. It can handle incoming streams with both the current (future legacy) and new samplerate & channel count. These are url-encoded into the livekit track name.

David Kleingeld created

66f2fda helix: Initial support for helix-mode paste (#37963)

Click to expand commit body
This is a redo of #29776. I went for a separate function -- instead of
adding a bunch of conditions to `vim::Paste` -- because there were quite
a few differences.

Release Notes:

- Added a `vim::HelixPaste` command that imitates Helix's paste behavior

---------

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

jneem and Jakub Konka created

e62dd2a Tighten up MergeFrom trait (#38473)

Click to expand commit body
Release Notes:

- N/A

Conrad Irwin created

c826ce6 markdown: Use the faster hasher (#38469)

Click to expand commit body
Micro-optimisation in the markdown crate to use the faster hasher.

Release Notes:

- N/A

Nia created

e5e308b fuzzy: Fixup atomic ordering (#38468)

Click to expand commit body
Hopefully partially addresses some crashes that can be triggered in this
code.

Release Notes:

- N/A

Nia created

166b235 Respect user's font-smoothing setting (#38467)

Click to expand commit body
#37622 was incorrectly forcing font smoothing to be enabled on macos
even when the user had disabled that setting at the OS level. See [this
comment](https://github.com/zed-industries/zed/pull/37622#issuecomment-3310030659)
for an example of the difference that font smoothing makes.

Release Notes:

- N/A

Julia Ryan created

f18b19a http_client: Relax lifetime bounds and add fluent builder methods (#38448)

Click to expand commit body
`HttpClient`: Relaxes the lifetime bound to `&self` in `get`/`post`
by returning the `self.send` future directly. This makes both
methods return `'static` futures without extra boxing.

`HttpRequestExt`: Added fluent builder methods to `HttpRequestExt`
inspired by the `gpui::FluentBuilder` trait.

Release Notes:

- N/A

tidely created

b09764c settings: Use a derive macro for refine (#38451)

Click to expand commit body
When we refactored settings to not pass JSON blobs around, we ended up
needing
to write *a lot* of code that just merged things (like json merge used
to do).

Use a derive macro to prevent typos in this logic.

Release Notes:

- N/A

Conrad Irwin created

5f4f0a8 Fix wierd rust-analyzer error (#38431)

Click to expand commit body
Release Notes:

- N/A

Conrad Irwin created

82e1e5b Fix panic in vim mode (#38437)

Click to expand commit body
Release Notes:

- vim: Fixed a rare panic in search

Conrad Irwin created

530225a python: Remove a redundant pip install call (#38449)

Click to expand commit body
I confirmed that the pip packages match for:
```sh
pip install python-lsp-server && pip install 'python-lsp-server[all]'
pip install 'python-lsp-server[all]'
```

Originally introduced here:
- https://github.com/zed-industries/zed/pull/20358 

Release Notes:

- N/A

Peter Tripp created

11212b8 docs: Improve Elixir HEEX language server documentation (#38363)

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

Release Notes:

- N/A

Peter Tripp created

e3e0522 debugger: Fix debug scenario picker showing history in reverse order (#38452)

Click to expand commit body
Closes #37859

Release Notes:

- debugger: Fix sort order of pasted launched debug sessions in debugger
launch modal

Anthony Eid created

fc0eb88 debugger_ui: Update new process modal to include more context about its source (#36650)

Click to expand commit body
Closes #36280

Release Notes:
  - Added additional context to debug task selection

Adding additional context when selecting a debug task to help with
projects that have multiple config files with similar names for tasks.

I think there is room for improvement, especially adding context for a
LanguageTask type. I started but it looked like it would need to add a
path value to that and wanted to make sure this was a good idea before
working on that.

Also any thoughts on the wording if you do like this format? 

---

<img width="1246" height="696" alt="image"
src="https://github.com/user-attachments/assets/b42e3f45-cfdb-4cb1-8a7a-3c37f33f5ee2"
/>

---------

Co-authored-by: Anthony <anthony@zed.dev>
Co-authored-by: Anthony <hello@anthonyeid.me>

Matt , Anthony , and Anthony created

6b8ed5b docs: Fix typo in Python configuration example (#38434)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Marshall Bowers <git@maxdeviant.com>

Jaeyong Sung and Marshall Bowers created

5fccde9 python: Install basedpyright if the basedpyright-langserver binary is missing (#38426)

Click to expand commit body
Potential fix for #38377 

Release Notes:

- N/A

---------

Co-authored-by: Peter Tripp <petertripp@gmail.com>

Cole Miller and Peter Tripp created

c58763a git_ui: Reduce spacing between action icon and label (#38445)

Click to expand commit body
# Why

Opinionated change: A bit uneven spacing between Git action icon and
label, in comparison to the border on the right in the segmented action
button was triggering my UI OCD a bit. ๐Ÿ˜…

# How

Remove the right margin from icon and icon + counter children of the
segmented Git action button in Git Panel. The default spacing from the
button layout seems to be enough to separate them from the left-side
label.

# Release Notes

- Reduced spacing between Git action icon and label in Git Panel

# Test plan

I have tested few cases, and made sure that the spacing is still
present, but icon (or icon and counter) does not feel too
separated/detached from the label.

### Before

<img width="384" height="186" alt="Screenshot 2025-09-18 at 20 11 16"
src="https://github.com/user-attachments/assets/8f353b8f-8e43-466d-88a9-567a82100b5f"
/>
<img width="384" height="186" alt="Screenshot 2025-09-18 at 20 13 19"
src="https://github.com/user-attachments/assets/1ecb4e1a-8a60-45b6-988e-966fb2b27ff5"
/>


### After

<img width="392" height="168" alt="Screenshot 2025-09-18 at 19 53 14"
src="https://github.com/user-attachments/assets/388d9b83-9906-4eac-82ed-13d2ae78c990"
/>
<img width="392" height="168" alt="Screenshot 2025-09-18 at 19 53 34"
src="https://github.com/user-attachments/assets/a179239b-ac09-479e-b688-f895ba75ca33"
/>
<img width="392" height="168" alt="Screenshot 2025-09-18 at 19 56 23"
src="https://github.com/user-attachments/assets/6ca10cf1-d46d-43b7-b847-832555823b8a"
/>

Bartosz Kaszubowski created

a6a2465 edit prediction: Fix sub overflow in identifiers_in_range (#38438)

Click to expand commit body
Release Notes:

- N/A

Co-authored-by: Bennet <bennet@zed.dev>

Agus Zubiaga and Bennet created

439d31e Add branch rename action to Git panel (#38273)

Click to expand commit body
Reopening #35136, cc @launay12u

Release Notes:

- git: added `git: rename branch` action to rename a branch (`git branch
-m`)

---------

Co-authored-by: Guillaume Launay <guillaume.launay@paylead.fr>
Co-authored-by: Peter Tripp <petertripp@gmail.com>

Cole Miller , Guillaume Launay , and Peter Tripp created

df50b5c edit prediction: Context debug view (#38435)

Click to expand commit body
Adds a `dev: open edit prediction context` action that opens a new
workspace pane that displays the excerpts and snippets that would be
included in the edit prediction request.

Release Notes:

- N/A

---------

Co-authored-by: Bennet <bennet@zed.dev>

Agus Zubiaga and Bennet created

55d130a Fix chunks peek_with_bitmaps panic (#38430)

Click to expand commit body
This panic only happened in debug builds because of a left shift
overflow. The slice range has bounds between 0 and 128. The 128 case
caused the overflow.

We now do an unbounded shift and a wrapped sub to get the correct
bitmask. If the slice range is 128 left, it should make 1 zero. Then the
wrapped sub would flip all bits, which is expected behavior.

Release Notes:

- N/A

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

Anthony Eid and Nia created

fcdab16 Settings refactor (#38367)

Click to expand commit body
Co-Authored-By: Ben K <ben@zed.dev>
Co-Authored-By: Anthony <anthony@zed.dev>
Co-Authored-By: Mikayla <mikayla@zed.dev>

Release Notes:

- settings: Major internal changes to settings. The primary user-facing
effect is that some settings which did not make sense in project
settings files are no-longer read from there. (For example the inline
blame settings)

---------

Co-authored-by: Ben Kunkle <ben@zed.dev>
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Co-authored-by: Anthony <anthony@zed.dev>

Conrad Irwin , Ben Kunkle , Mikayla Maki , and Anthony created

0a9023b ui: Use hoverable tooltips for Badge component to fix tooltip behavior (#38387)

Click to expand commit body
## Summary

Fixes #38362 - Privacy tooltip behavior issues in AI Setup onboarding

## Problem
The Privacy tooltip in AI Setup onboarding had incorrect behavior:
1. Tooltip remained visible after mouse left the Privacy button
2. Clicking the button didn't toggle tooltip properly
3. Clicking in intersection area between tooltip and button didn't work

## Root Cause
Badge component used `tooltip()` instead of `hoverable_tooltip()`,
causing:
- Immediate tooltip hiding when mouse left triggering element
- No support for tooltip content interaction
- Poor intersection area click handling

## Solution
**Single line change** in `crates/ui/src/components/badge.rs:61`:
```rust
// Before:
this.tooltip(move |window, cx| tooltip(window, cx))

// After:
this.hoverable_tooltip(move |window, cx| tooltip(window, cx))
```

## Technical Details
- Leverages existing GPUI `hoverable_tooltip()` infrastructure
- Enables 500ms grace period before tooltip hiding
- Allows hovering over tooltip content without disappearing
- Uses proper tooltip bounds detection for click handling
- Affects all Badge tooltips system-wide (positive improvement)
- Full backward compatibility - no API changes

## Test Plan
- [x] Hover over Privacy badge โ†’ tooltip appears
- [x] Move mouse away โ†’ tooltip stays visible for 500ms
- [x] Move mouse to tooltip content โ†’ tooltip remains visible
- [x] Click on tooltip content โ†’ properly handled
- [x] Move mouse completely away โ†’ tooltip hides after delay
- [x] Verify no regression in other Badge tooltip usage

Release Notes:

- N/A

Devdatta Talele created

fb60f71 Make scrollbars auto-hide by default (#38340)

Click to expand commit body
With this, scrollbars across the app will now auto-hide unless it is
specified that they should follow a specific setting.

Optimally, we would just track the user preference by default. However,
this is currently not possible. because the setting we would need to
read lives in `editor` and we cannot read that from within the `ui`
crate.

Release Notes:

- N/A

Finn Evers created

589e2c0 agent: Make settings view more consistent across different sections (#38419)

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

This PR makes sections in the AI settings UI more consistent with each
other and also just overall simpler. One of the main changes here is
adding the tools from a given MCP server in a modal (as opposed to in a
disclosure within the settings view). That's mostly an artifact of
wanting to make all of the items within sections look more of the same.
Then, in the process of doing so, also changed the logic that we were
using to display MCP servers; previously, in the case of extension-based
servers, we were only showing those that were _configured_, which felt
wrong because you should be able to see everything you have _installed_,
despite of its status (configured or not).

However, there's still a bit of a bug (to be solved in a follow-up PR),
which already existed but it was just not visible given we'd only
display configured servers: an MCP server installed through an extension
stays as a "custom server" until it is configured. If you don't
configure it, you can't also uninstall it from the settings view (though
it is possible to do so via the extensions UI).

Release Notes:

- agent: Improve settings view UI and solve issue where MCP servers
would get unsorted upon turning them on and off (they're all
alphabetically sorted now).

Danilo Leal created

21d8b19 dap: Add more debug logs for child's stderr (#38418)

Click to expand commit body
Without this, I would never have converged on @cole-miller's patch
https://github.com/zed-industries/zed/pull/38380 when debugging codelldb
not spawning in WSL!

Release Notes:

- N/A

Jakub Konka created

82686bf Start working on refreshing Python docs (#37880)

Click to expand commit body
- Reflect that basedpyright is the new primary language server
- Discuss Ruff
- Deemphasize manual venv configuration for language servers

Release Notes:

- N/A

---------

Co-authored-by: Katie Geer <katie@zed.dev>
Co-authored-by: Piotr <piotr@zed.dev>

Cole Miller , Katie Geer , and Piotr created

f562e7e edit predictions: Initial Tree-sitter context gathering (#38372)

Click to expand commit body
Release Notes:

- N/A

Co-authored-by: Agus <agus@zed.dev>
Co-authored-by: Oleksiy <oleksiy@zed.dev>
Co-authored-by: Finn <finn@zed.dev>

Michael Sloan , Agus , Oleksiy , and Finn created

202dcb1 remote: Remove excess quoting in WSL `build_command` (#38380)

Click to expand commit body
The built-up command for the WSL remote connection looks like

```
wsl.exe --distribution Ubuntu --user cole --cd /home/cole -- bash -c SCRIPT
```

Where `SCRIPT` is a command itself. We don't need extra quotes around
`SCRIPT` because we already pass it whole as a separate argument to
`wsl.exe`.

This isn't yet enough to get ACP servers working in WSL projects
(#38332), but it removes one roadblock.

Release Notes:

- windows: Fixed an issue that could prevent running binaries in WSL
remote projects.

Cole Miller created

b1aa272 editor: Reverse range of pending selection if required (#38410)

Click to expand commit body
cc https://github.com/zed-industries/zed/issues/38129

Release Notes:

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

Lukas Wirth created

59a609c Partially revert "project: Fix terminal activation scripts failing on Windows for new shells (#37986) (#38406)

Click to expand commit body
This partially reverts commit 4002602a8926b7fe799acf50fcee6bcffb36d376.
Specifically the parts that closes
https://github.com/zed-industries/zed/issues/38343

Release Notes:

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

Lukas Wirth created