Commit log

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

ca05ff8 agent2: More efficent read file tool (#38407)

Click to expand commit body
Before we were always reading the entire file into memory as a string.
Now we only read the range that is actually requested.

Release Notes:

- N/A

Ben Brandt created

9f9e806 workspace: Pop a toast if manually spawning a task fails (#38405)

Click to expand commit body
Release Notes:

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

Lukas Wirth created

32c868f acp: Fix behavior of read_text_file for ACP agents (#38401)

Click to expand commit body
We were incorrectly handling the line number as well as stripping out
line breaks when returning portions of files.

It also makes sure following is updated even when we load a snapshot
from cache, which wasn't the case before.

We also are able to load the text via a range in the snapshot, rather
than allocating a string for the entire file and then another after
iterating over lines in the file.

Release Notes:

- acp: Fix incorrect behavior when ACP agents requested to read portions
of files.

Ben Brandt created

ed46e2c helix: Apply modification (e.g. switch case) on a single character only in helix mode (#38119)

Click to expand commit body
Closes #34192

Without selection, only current character would be affected.

Also if #38117 is merged too, then transformations in SelectMode behave
correctly too and selection is not collapsed.

Release Notes:

- helix: Implemented `~`, `` ` ``, `` Alt-` `` correctly in normal and
select modes

---------

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

Romans Malinovskis and Jakub Konka created

d85a6db git_ui: Use margin instead of padding for blame entries (#38397)

Click to expand commit body
This makes the hover background change keep a visible border element
between the gutter and blame entries

Release Notes:

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

Lukas Wirth created

4b1e78c terminal: Fix COLORTERM regression for true color support (#38379)

Click to expand commit body
Closes #38304 

Release Notes:

- Fixed true color detection regression by setting `COLORTERM=truecolor`

---

Reason:

The regression is possibly introduced in [pr#36576: Inject venv
environment via the
toolchain](https://github.com/zed-industries/zed/pull/36576/files#diff-6f30387876b79f1de44f8193401d6c8fb49a2156479c4f2e32bc922ec5d54d76),
where `alacritty_terminal::tty::setup_env();` is removed.

The `alacritty_terminal::tty::setup_env();` does 2 things, which sets
`TERM` & `COLORTERM` envvar.
```rs
/// Setup environment variables.
pub fn setup_env() {
    // Default to 'alacritty' terminfo if it is available, otherwise
    // default to 'xterm-256color'. May be overridden by user's config
    // below.
    let terminfo = if terminfo_exists("alacritty") { "alacritty" } else { "xterm-256color" };
    unsafe { env::set_var("TERM", terminfo) };

    // Advertise 24-bit color support.
    unsafe { env::set_var("COLORTERM", "truecolor") };
}
```

Miao created

eaa1cb0 acp: Add a basic test for ACP remoting (#38381)

Click to expand commit body
Tests that the downstream project can see custom agents configured in
the remote server's settings, and that it constructs an appropriate
`AgentServerCommand`.

Release Notes:

- N/A

Cole Miller created

ea473ee acp: Fix agent servers sometimes not being registered when Zed starts (#38330)

Click to expand commit body
In local projects, initialize the list of agents in the agent server
store immediately. Previously we were initializing the list only after a
delay, in an attempt to avoid sending the `ExternalAgentsUpdated`
message to the downstream client (if any) before its handlers were
initialized. But we already have a separate codepath for that situation,
in the `AgentServerStore::shared`, and we can insert the delay in that
place instead.

Release Notes:

- acp: Fixed a bug where starting an external agent thread soon after
Zed starts up would show a "not registered" error.

---------

Co-authored-by: Michael <michael@zed.dev>
Co-authored-by: Agus <agus@zed.dev>

Cole Miller , Michael , and Agus created

4912096 collab: Remove unused feature flag queries (#38360)

Click to expand commit body
This PR removes the feature flag queries, as they were no longer used.

Release Notes:

- N/A

Marshall Bowers created

3c69144 Update release URLs in release actions (#38361)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

96111c6 extension_host: Sanitize cwd path for ResolvedTask (#38357)

Click to expand commit body
Ensures build task's CWD paths use POSIX-friendly path separator on
Windows host so that `std::path::Path` ops work as expected within the
Wasm guest.

Release Notes:

- N/A

Jakub Konka created

f6d08fe Remove `/cargo-workspace` slash command (#38354)

Click to expand commit body
This PR removes the `/cargo-workspace` slash command.

We never fully shipped this—with it requiring explicit opt-in via a
setting—and it doesn't seem like the feature is needed in an agentic
world.

Release Notes:

- Removed the `/cargo-workspace` slash command.

Marshall Bowers created

86a2649 docs: Add whitespace_map (#38355)

Click to expand commit body
Adds docs for settings introduced in:
- https://github.com/zed-industries/zed/pull/37704

Release Notes:

- N/A

Peter Tripp created

f0b2150 editor: Properly layout expand toggles with git blame enabled (#38349)

Click to expand commit body
Release Notes:

- Fixed an issue where expand toggles were too large with the git blame
deployed.

Finn Evers created

3968b9c Add open WSL shortcut (#38342)

Click to expand commit body
Adds a shortcut to add a WSL distro for better wsl feature
discoverability.

- [x] Open wsl from open remote
- [x] Open local folder in wsl action
- [x] Open wsl shortcut (shortcuts to open remote)

Release Notes:

- N/A

localcc created

43f40c6 rope: Fix spelling of `peek_with_bitmaps` (#38341)

Click to expand commit body
This PR fixes the spelling of the `peek_with_bitmaps` method.

Release Notes:

- N/A

Marshall Bowers created

824f695 Rename Windows GitHub Issue template (#38339)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

50326dd project_panel: Collapse top-level entries in `Collapse all entries` command (#38310)

Click to expand commit body
Closes #11760

The command `project panel: collapse all entries` currently does not
collapse top-level entries (the workspaces themselves). I think this
should be expected behaviour if you only have a single workspace in your
project. However, if you have multiple workspaces, we should collapse
their top-level folders as well. This is the expected behaviour in the
screenshots in #11760.

For more context: Atm the `.retain` function empties the
`self.expanded_dir_ids` Hash Map, because the `expanded_entries` Vec is
(almost) never empty - it contains the id of the `root_entry` of the
workspace.


https://github.com/zed-industries/zed/blob/d48d6a745409a8998998ed59c28493a1aa733ebb/crates/project_panel/src/project_panel.rs#L1148-L1152

We then update the `self.expanded_dir_ids` in the
`update_visible_entries` function, and since the Hash Map is empty, we
execute the `hash_map::Entry::Vacant` arm of the following match
statement.


https://github.com/zed-industries/zed/blob/d48d6a745409a8998998ed59c28493a1aa733ebb/crates/project_panel/src/project_panel.rs#L3062-L3073

This change makes sure that we do not clear the `expanded_dir_ids`
HashMap and always keep the keys for all visible workspaces and
therefore we run the `hash_map::Entry::Occupied` arm, which does not
override the `expanded_dir_ids` anymore.



https://github.com/user-attachments/assets/b607523b-2ea2-4159-8edf-aed7bca05e3a

cc @MrSubidubi 

Release Notes:

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

---------

Co-authored-by: Finn Evers <finn.evers@outlook.de>

Nils Koch and Finn Evers created

52521ef acp: update to v0.4 of Rust library (#38336)

Click to expand commit body
Release Notes:

- N/A

Ben Brandt created