Commit log

69ac003 Add escape to settings window (#39699)

Click to expand commit body
Release Notes:

- N/A

Mikayla Maki created

d615525 ui: Rename and simplify NumberField component (#39731)

Danilo Leal created

8bf37dd settings ui: Add more UX improvements (#39700)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

8cb67ec remote: Fix opening a remote terminal failing on certain systems (#39715)

Click to expand commit body
Closes #38538

Release Notes:

- Fixed an issue where opening a remote terminal failed on systems like
BusyBox, Alpine, Amazon Linux 2, some CentOS images, etc., due to an
invalid option 'C'.

Smit Barmase created

cd67941 settings_ui: Preserve selected nav entry when changing files (#39721)

Click to expand commit body
Closes #ISSUE

Release Notes:

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

Ben Kunkle created

669db62 settings ui: Move selected nav bar entry on scroll (#39633)

Click to expand commit body
This PR makes selecting a sub-entry in the settings UI nav bar scroll to
that section in the settings page. It also updates the selected
sub-entry when scrolling through a settings page to match what a user is
viewing on the page.

I also added a new helper method to `ScrollHandle` type called
`scroll_to_top_of_item` that scrolls until an item is the top element
visible.

Release Notes:

- N/A

Anthony Eid created

41f1835 project_panel: Fix clicking away to create file or directory doesn't create it (#39716)

Click to expand commit body
Closes #38919

Now, when unfocusing the filename editor while creating a file or
directory in the project panel, it will create it by default unless the
name is empty or already exists.

Release Notes:

- Improved behavior where unfocusing while creating a new file or
directory in the project panel now creates it instead of discarding it.

Smit Barmase created

791ba9c settings_ui: Soft fail on no default & fix language default loading (#39709)

Click to expand commit body
Closes #ISSUE

Release Notes:

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

Ben Kunkle created

e60a61f languages: Add comment injections for Rust (#39714)

Click to expand commit body
This PR adds comment injections for Rust.

Release Notes:

- Rust: Added comment injections.

Marshall Bowers created

b8a6180 settings_ui: Title Case Enums (#39711)

Click to expand commit body
Closes #ISSUE

Release Notes:

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

Ben Kunkle created

dfce57c Remove unused `blake3` dependency (#39677)

Click to expand commit body
Did not found any code reference or direct dependants of this package in
the workspace.

Release Notes:

- N/A

Bartosz Kaszubowski created

15580a8 windows: Fix handling of AltGr to avoid conflicts (#38925)

Click to expand commit body
The previous modifier detection treated `AltGr` presses as `Ctrl+Alt`,
which broke entering characters produced by AltGr. For example, on a
Hungarian layout `{` is typed with `AltGr+B`; our code saw that as
`Ctrl+Alt+B` and the keybind took precedence, so the character couldn’t
be entered.

On Windows, AltGr isn’t a first-class modifier. It’s emulated as a
combination of `Right Alt (VK_RMENU)` plus a synthetic `Left Ctrl
(VK_LCONTROL)` press. When users press AltGr, `GetKeyState` reports both
Ctrl and Alt as down, which makes AltGr indistinguishable from a real
`Ctrl+Alt` chord if we only look at aggregate modifier state.

Fix: detect the AltGr pattern by checking `VK_RMENU && VK_LCONTROL`.
When that pattern is present, treat it as text-entry intent and suppress
`control` and `alt` in `current_modifiers()`. This prevents
AltGr-produced characters from colliding with `Ctrl+Alt` keybinds while
keeping other modifiers intact.

Limitation: there is no Windows API to tell whether the active layout
actually has AltGr. As a result, on non-AltGr layouts (e.g. US),
pressing `Right Alt + Left Ctrl` will be interpreted as AltGr and will
not trigger `Ctrl+Alt` keybinds. This is an acceptable trade-off to
ensure AltGr layouts can reliably enter characters; users can still
invoke `Ctrl+Alt` keybinds using `Left Alt` or by choosing bindings that
avoid common AltGr pairs.

I based this on https://github.com/zed-industries/zed/pull/36115 after
trying other different approaches, but this one is a bit more specific.

Does this approach make sense, or is slightly breaking US input in favor
of fixing international input a no-go? I think the benefit - being able
to type certain characters _at all_ - outweighs the shortcomings.
Otherwise, there's a way to detect if the keyboard layout uses AltGr or
not, but it's quite hacky, and involves reading the registry to find the
current layout dll's name, opening that dll, manually declaring struct
layouts that it uses, then parsing out the AltGr flag from a function
call result. I don't think that's worth it, but if needed, I can give
that a shot, let me know.


Release Notes:

- windows: Fixed handling of AltGr to avoid keybinds preventing
character input

Antal Szabó created

f7bb22f settings ui: Add missing setting elements (#39644)

Click to expand commit body
Added the following settings to the UI

Editor Page - Scrollbar Section (9 settings)
- Show
- Cursors
- Git Diff
- Search Results
- Selected Text
- Selected Symbol
- Diagnostics
- Horizontal Scrollbar
- Vertical Scrollbar

 Editor Page - Minimap Section (6 settings)
- Show
- Display In
- Thumb
- Thumb Border
- Current Line Highlight
- Max Width Columns

Editor Page - Editor Behavior Section (3 settings)
- Expand Excerpt Lines
- Excerpt Context Lines
- Minimum Contrast For Highlights

 Debugger Page (7 settings)
- Stepping Granularity
- Save Breakpoints
- Timeout
- Dock
- Log DAP Communications
- Format DAP Log Messages
- Button

 Panels Page - Git Panel Section (3 settings)
- Button
- Dock
- Default Width

Collaboration Page - Experimental Section (4 settings)
- Auto Microphone Volume
- Auto Speaker Volume
- Denoise
- Legacy Audio Compatible

Release Notes:

- N/A

Anthony Eid created

7db7ad9 Revert "gpui: Assert validity of text runs for `StyleText`" (#39708)

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

This has done its job uncovering incorrect constructions of the
highlight ranges pretty fast. Reverting this to prevent this from
spilling into preview until I can fix the call sites next week

Lukas Wirth created

642643d language: Fix `HighlightedText::first_line_preview` creating incorrect highlight ranges (#39705)

Click to expand commit body
Fixes ZED-1XW

Release Notes:

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

Lukas Wirth created

391e304 settings_ui: Keyboard navigation (#39652)

Click to expand commit body
Closes #ISSUE

Release Notes:

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

---------

Co-authored-by: Mikayla <mikayla@zed.dev>

Ben Kunkle and Mikayla created

3106472 terminal: Escape strings with backticks rather than backslashes in PowerShell (#39657)

Click to expand commit body
Closes #39007 

Strings should be escaped with backticks in PowerShell, so the following

```
\"pwsh.exe -C pytest -m \\\"some_test\\\"\"
```

becomes

```
\"pwsh.exe -C pytest -m `\"some_test`\"\"
```

Otherwise PowerShell will misinterpret the invocation resulting in
weirdness all-around such as the issue linked above.

Release Notes:

- N/A

Jakub Konka created

d04ac86 Don't construct an agent panel when `disable_ai` is set (#39689)

Click to expand commit body
Follow-up to #39649, possible fix for #39669

This implements an alternate strategy for showing/hiding the agent panel
in response to `disable_ai`. We don't load the panel at all if AI is
disabled at startup, and when the value of `disable_ai` changes, we load
the panel or destroy it as needed.

Release Notes:

- N/A

Cole Miller created

f9a2724 Remove empty line when collapsing diagnostics (#39459)

Click to expand commit body
Closes #39028

Fixed empty lines appearing when collapsing files with diagnostic
messages in the diagnostics panel.

Added a flag to track when processing a `FoldedBuffer` and skip
`Near/Below` blocks (diagnostic messages) that immediately follow it.
This prevents diagnostics from rendering as empty lines when their file
is collapsed.

Before:
<img width="1489" height="429" alt="before"
src="https://github.com/user-attachments/assets/5e233290-1f6e-403c-a6b3-a65107586d01"
/>

After:
<img width="981" height="270" alt="after"
src="https://github.com/user-attachments/assets/a877b651-6b7f-4441-805c-38ea41e73a18"
/>

Release Notes:
- Fixed empty lines when collapsing files with diagnostics in the
diagnostics panel

Vinicius da Motta created

ded73c9 Fix an issue where scrollbars would capture too many events (#39690)

Click to expand commit body
This PR fixes an issue where scrollbars would overagressively capture
some events, which could lead to clicks being lost in the process. Also
improves how hovering of the parent is detected to lead to less false
positives.

Release Notes:

- Fixed a rare issue where scrollbars would react to and capture events
they should not react to.

Finn Evers created

41cf114 Revert "Remove cx from ThemeSettings (#38836)" (#39691)

Click to expand commit body
This reverts commit a2a7bd139a3f94202d2a050a2bc7e50dc139000b.

This caused themes to not load correctly on startup, you needed to edit
your settings.

Release Notes:

- N/A

Conrad Irwin created

e765818 agent: Remove some unused code from the `Thread` (#39688)

Click to expand commit body
This PR removes some unused code from the Agent1 `Thread`.

Release Notes:

- N/A

Co-authored-by: David Kleingeld <davidsk@zed.dev>

Marshall Bowers and David Kleingeld created

84f4888 settings ui: Review available items ordering & writing (#39682)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

85985fe git: Fix panic in git panel when `sort_by_path` is `true` (#39678)

Click to expand commit body
Fixes ZED-1NX

This panic could occur when an `bulk_staging` was set to `Some(...)` and
`sort_by_path` was set to `true`.
When setting `sort_by_path: true`, we call `update_visible_entries(...)`
which then checks if `bulk_staging ` is `Some(...)` and calls
`entry_by_path`. That function accesses `entries`, which still consists
of both headers and entries. But the code
(`entry.status_entry().unwrap()`) assumes that there are no headers in
the entry list if `sort_by_path: true`.

```rust
if GitPanelSettings::get_global(cx).sort_by_path {
    return self
        .entries
        .binary_search_by(|entry| entry.status_entry().unwrap().repo_path.cmp(path)) //This unwrap() would panic
        .ok();
}
```

This has now been fixed by clearing all the entries when `sort_by_path`
changes, as this is the only case where our assumptions are invalid. I
also added a test which 1) actually tests the sort_by_path logic 2)
ensures that we do not re-introduce this panic in the future.


Release Notes:

- Fixed a panic that could occur when using `sort_by_path: true` in the
git panel

Bennet Bo Fenner created

3bec885 relpaths: Fix repeated usages of RelPath::unix on static paths (#39675)

Click to expand commit body
- **paths: Cache away results of static construction of RelPath**
- **agent: Cache away results of converting rules file names into
relpaths**

This PR fixed a regression from relpath PR where we've started doing
more work when working with static (Rel-)Paths.

Release Notes:

- N/A

Piotr Osiewicz created

9a5034e Improve command logging and `log_err` module paths (#39674)

Click to expand commit body
Prior we only logged the crate in `log_err`, which is not too helpful.
We now assemble the module path from the file system path.

Release Notes:

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

Lukas Wirth created

64eec67 Fix floating file chooser (#39154)

Click to expand commit body
Closes #39117 

Some window managers (example: hyprland
https://github.com/hyprwm/Hyprland/issues/11229) still won't open a
floating file chooser because they don't support the XDG foreign
protocol yet: https://wayland.app/protocols/xdg-foreign-unstable-v2

Release Notes:

- Fixed file chooser not floating

---------

Co-authored-by: David Kleingeld <davidsk@zed.dev>

Alvaro Parker and David Kleingeld created

ffff56f Revert "search: Introduce more yield points in project search `pending_search` task" (#39672)

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

This seems to have had the opposite effect

Lukas Wirth created

b02b130 extensions_ui: Fix uneven horizontal padding (#39627)

Click to expand commit body
This fixes an issue where the horizontal padding on the extensions page
was uneven and where the padding on the right side would be much larger.

| Before | After |
| --- | --- |
| <img width="2550" height="1694" alt="Bildschirmfoto 2025-10-06 um 19
26 56"
src="https://github.com/user-attachments/assets/cf05b77b-4a9e-4ad9-8fa7-381f9b6b45af"
/> | <img width="2546" height="1694" alt="Bildschirmfoto 2025-10-06 um
19 25 49"
src="https://github.com/user-attachments/assets/493ba188-534a-4e7a-b2c1-2b1380be7150"
/> |

Release Notes:

- Improved the horizontal padding on the extensions tab.

Finn Evers created

41ac6a8 windows: Use nc-esque ssh askpass auth for remoting (#39646)

Click to expand commit body
This lets us avoid storing user PW in ZED_ASKPASS_PASSWORD env var.
Release Notes:

- N/A

Piotr Osiewicz created

963204c settings ui: Add new batch of settings (#39650)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

f6f11eb Avoid spawning external agent process when AI is disabled at startup (#39649)

Click to expand commit body
Closes #39645 

Release Notes:

- Fixed external agent servers sometimes being spawned when Zed started
even when AI was disabled.

Cole Miller created

c1e9171 settings_ui: Language settings UI (#39640)

Click to expand commit body
Closes #ISSUE

Release Notes:

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

Ben Kunkle created

a2a7bd1 Remove cx from ThemeSettings (#38836)

Click to expand commit body
Before this change the active theme and icon theme were retrofitted onto
the ThemeSettings.

Now they're in their own new global (GlobalTheme::theme(cx) and
GlobalTheme::icon_theme(cx))

This lets us remove cx from the settings traits, and tidy up a few other
things along the way.

Release Notes:

- N/A

Conrad Irwin created

4de13e0 askpass: Fix cli path when executed in a remote server (#39475)

Click to expand commit body
Closes #39469
Closes #39438
Closes #39458

I'm not able to test it, i would appreciate if somebody could do it. I
think this bug was present also for SSH remote projects

Release Notes:

- Fixed an issue where zed bin was not found in remote servers for
askpass

---------

Signed-off-by: Marco Mihai Condrache <52580954+marcocondrache@users.noreply.github.com>

Marco Mihai Condrache created

e680dfb git_ui: Update project diff more aggressively (#39642)

Click to expand commit body
This fixes a regression in #39557--for the project diff, we rely on
getting an event when a path inside a git repository changes, even if
the git state of the repository didn't change as a result (e.g. a new
modification to a file that already had the "modified" status).

I've also changed this code to send the `UpdateRepository` proto message
even when the git state didn't change, since otherwise we have the same
problem in SSH and collab projects.

Release Notes:

- N/A

Cole Miller created

31544d2 ci: Show output of failed tests at the end too (#39643)

Click to expand commit body
This makes it a bit easier to read GHA logs of failed CI runs.

Release Notes:

- N/A

Cole Miller created

4e93229 settings ui: Fix panic from reading `BufferLineHeight` custom variant (#39631)

Click to expand commit body
The panic happened when a user had a settings file with a buffer line
height custom variant, because the drop-down renderer only took into
account the two named variants.

The fix for this will be creating a custom element that allows a user to
manually input a line height greater than one or select either
Comfortable or Standard.

Release Notes:

- N/A

Anthony Eid created

b2f0b1b Fix Ctrl+C not working when Zed is launched from CLI (#39482)

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

Release Notes:

- N/A

John Tur created

94f1faf settings_ui: Make unimplemented helper (#39639)

Click to expand commit body
Closes #ISSUE

Release Notes:

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

Ben Kunkle created

075104a settings ui: Move settings data out of settings window (#39638)

Click to expand commit body
Moved `user_settings_data` and `project_settings_data` into their own
module because those functions just represent static data.

Release Notes:

- N/A

Anthony Eid created

c80d213 Fix infinite loop when worktree is deleted (#39637)

Click to expand commit body
Closes #39442

Release Notes:

- Fixed infinite loop when worktree is deleted

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

Andrew Farkas and Conrad Irwin created

fe9895d node_runtime: Bump minimum version for system node to match copilot's requirement (#39632)

Click to expand commit body
Copilot now requires 22.x. See the last min node version bump:
https://github.com/zed-industries/zed/pull/27912

Closes #39461

<img width="1040" height="97" alt="image"
src="https://github.com/user-attachments/assets/8f0490e3-b9b5-45fd-b7f1-321691b862f0"
/>

Release Notes:

- Zed will no longer use `node` from your `$PATH` if it's older than
22.x (previously, the minimum version was 20.x). Instead, it will fall
back to its bundled `node`. This fixes being unable to use Copilot if an
older `node` was installed system-wide.

Cole Miller created

24bc52a Remove chat from docs (#39623)

Click to expand commit body
Updates #37789

Release Notes:

- N/A

Conrad Irwin created

a65a8be Revert YankEndOfLine default (part of PR #39143) (#39626)

Click to expand commit body
Release Notes:

- N/A

David Kleingeld created

ea60a7b settings ui: Use font picker element from onboarding instead of editor for font components (#39593)

Click to expand commit body
The font picker from onboarding is a lot friendlier to interact with and
makes it impossible for a user to select an invalid font from the
settings ui.

I also moved the font picker from the onboarding crate to the ui_input
crate

## New Look
<img width="1136" height="812" alt="image"
src="https://github.com/user-attachments/assets/7436682c-6a41-4860-a18b-13e15b8f3f31"
/>

Release Notes:

- N/A

Anthony Eid created

a67a55d docs: Fix Tree-sitter casing in `vim.md` (#39527)

Click to expand commit body
The AI here in GitHub helped me find the creative ways that Tree-sitter
was incorrectly typed in the document vim.md

<img width="704" height="196" alt="Tree-sitter-bg"
src="https://github.com/user-attachments/assets/90924405-0961-4436-b6b8-2066de527ddc"
/>

Release Notes:

- N/A

warrenjokinen created

1a9f9cc Add note about `inode/directory` to Zed desktop entry (#39076)

Click to expand commit body
Release Notes:

- N/A

Hexorg created

6da5945 Optimize fs_watcher to use less RAM by doing less work (#39602)

Click to expand commit body
mac_watcher already does this so it would make more sense to also do
this on Windows and it saves ~500-600mb of ram on the chromium project.

This does not improve memory usage on linux because inotify cannot do
recursive directory monitoring

Release Notes:

- N/A

localcc created

354cc65 search: Introduce more yield points in project search `pending_search` task (#39624)

Click to expand commit body
This should help with project search lagging I believe

Release Notes:

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

Lukas Wirth created