ea5f3e6
Fix PATH lookup to handle Windows case sensitivity (#40711)
Click to expand commit body
Closes #40448
On Windows, PATH might be "Path" instead of "PATH"
Release Notes:
- N/A *or* Added/Fixed/Improved ...
ming_jiang
created
db404fc
git: Add diff view for stash entries (#38280)
Click to expand commit body
Continues the work from #35927 to add a git diff view for stash entries.
[Screencast From 2025-09-17
19-46-01.webm](https://github.com/user-attachments/assets/ded33782-adef-4696-8e34-3665911c09c7)
Stash entries are [represented as
commits](https://git-scm.com/docs/git-stash#_discussion) except they
have up to 3 parents:
```
.----W (this is the stash entry)
/ /|
-----H----I |
\|
U
```
Where `H` is the `HEAD` commit, `I` is a commit that records the state
of the index, and `U` is another commit that records untracked files
(when using `git stash -u`).
Given this, I modified the existing commit view struct to allow loading
stash and commits entries with git sha identifier so that we can get a
similar git diff view for both of them.
The stash diff is generated by comparing the stash commit with its
parent (`<commit>^` or `H` in the diagram) which generates the same diff
as doing `git stash show -p <stash entry>`. This *can* be
counter-intuitive since a user may expect the comparison to be made
between the stash commit and the current commit (`HEAD`), but given that
the default behavior in git cli is to compare with the stash parent, I
went for that approach.
Hoping to get some feedback from a Zed team member to see if they agree
with this approach.
Release Notes:
- Add git diff view for stash entries
- Add toolbar on git diff view for stash entries
- Prompt before executing a destructive stash action on diff view
- Fix commit view for merge commits (see #38289)
Alvaro Parker
created
eda7a49
zeta2: Max retrieved definitions option (#40515)
Click to expand commit body
Release Notes:
- N/A
Agus Zubiaga
created
8bef480
workspace: Add NewFileSplit action with direction (#39726)
Click to expand commit body
Add new `workspace::NewFileSplit` action which expects a
`SplitDirection` argument, allowing users to programmatically control
the direction of the split in keymaps, for example:
```json
{
"context": "Editor",
"bindings": {
"ctrl-s ctrl-h": ["workspace::NewFileSplit", "left"],
"ctrl-s ctrl-j": ["workspace::NewFileSplit", "down"],
"ctrl-s ctrl-k": ["workspace::NewFileSplit", "up"],
"ctrl-s ctrl-l": ["workspace::NewFileSplit", "right"]
}
}
```
Release Notes:
- Added `workspace::NewFileSplit` action, which can be used to
programmatically split the editor in the provided direction.
Co-authored-by: Rian Drake <rian.drake@rocketwerkz.com>
Co-authored-by: dino <dinojoaocosta@gmail.com>
Rian Drake
,
Rian Drake
, and
dino
created
67b9d48
project: Make `textDocument/signatureHelp` implementation lsp compliant (#40707)
Click to expand commit body
The parameter label offsets are utf16 offsets, not utf8. Additionally we
now validate the language server output.
Closes https://github.com/zed-industries/zed/issues/40578
Companion bug on rust-analyzer side
https://github.com/rust-lang/rust-analyzer/pull/20876
Release Notes:
- Fixed `textDocument/signatureHelp` implementation not being LSP
compliant
Lukas Wirth
created
30f3152
settings_ui: Use window controls on Linux (#40706)
Click to expand commit body
Closes #40657
Release Notes:
- Added window controls to the settings window on Linux.
Smit Barmase
created
7c4fb5a
search: New old search implementation (#39956)
Click to expand commit body
This is an in-progress work on changing how task scheduler affects
performance of project search. Instead of relying on tasks being
executed at a discretion of the task scheduler, we want to experiment
with having a set of "agents" that prioritize driving in-progress
project search matches to completion over pushing the whole thing to
completion. This should hopefully significantly improve throughput &
latency of project search.
Release Notes:
- Improved project search performance
---------
Co-authored-by: Smit Barmase <smit@zed.dev>
Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
Piotr Osiewicz
,
Smit Barmase
, and
Smit Barmase
created
08ecaa3
Add comment language injection for supported languages (#39884)
Click to expand commit body
Release Notes:
- Added comment language injections for builtin languages. This enables
highlighting of `TODO`s and similar notes with the comment extension
installed.
Signed-off-by: Donnie Adams <donnie@thedadams.com>
Donnie Adams
created
96415e2
languages: Separate control flow keywords for JS/TS/TSX (#39801)
Click to expand commit body
Related to #9461, inspired by #39683
`await` and `yield` both seem somewhat debatable on whether they should
be considered the be control flow keywords.
For now I went with:
- `await`: no – The control flow effect of `await` is at a level does
not seem relevant for syntax highlighting.
- `yield`: yes – `yield` directly affects the output of a generator, and
is also included for consistency with Rust (#39683).
Happy to change these either direction.
<img width="1151" height="730" alt="SCR-20251008-izus"
src="https://github.com/user-attachments/assets/533ea670-863a-4c5c-aaa5-4a9bfa0bf0dd"
/>
---
Release Notes:
- Improved granularity of keyword highlighting for JS/TS/TSX: Themes can
now specify `keyword.control` for control flow keywords like `if`,
`else`, `return`, etc.
Alex Zeier
created
9a3c794
docs: Add section about MCP servers with external agents (#40658)
Click to expand commit body
Adding this content after seeing people ask about how to make MCP
servers installed from Zed be picked up by external agents. At the
moment, this varies depending on the agent, and felt relevant to be
documented.
Release Notes:
- N/A
Danilo Leal
created
cc21089
Fix default window size on small displays (#40398)
bdb7c64
clock: Bump the min collaborator ID (#40694)
Click to expand commit body
This allows us to play with IDs < 8 without having to do another
redeploy
Release Notes:
- N/A *or* Added/Fixed/Improved ...
Lukas Wirth
created
b827d8c
ai onboarding: Add dismiss button to the sign in banner (#40660)
Click to expand commit body
Release Notes:
- N/A
Danilo Leal
created
9a72453
Highlight control flow in Rust/C/C++ (#39683)
Click to expand commit body
part of https://github.com/zed-industries/zed/issues/9461
Release Notes:
- Added the ability to seperately highlight control flow keywords for
Rust, C and C++ for users and theme authors via the `keyword.control`
syntax property
<img width="805" height="475" alt="スクリーンショット 2025-10-07 22 21 59"
src="https://github.com/user-attachments/assets/40ed03ea-a129-44ce-b6d8-284656b9f3ba"
/>
Hayashi Mikihiro
created
43a9368
clock: Cleanup `ReplicaId`, `Lamport` and `Global` (#40600)
Click to expand commit body
- Notable change is the use of a newtype for `ReplicaId`
- Fixes `WorktreeStore::create_remote_worktree` creating a remote
worktree with the local replica id, though this is not currently used
- Fixes observing the `Agent` (that is following the agent) causing
global clocks to allocate 65535 elements
- Shrinks the size of `Global` a bit. In a local or non-collab remote
session it won't ever allocate still.
Release Notes:
- N/A *or* Added/Fixed/Improved ...
Added more granular symbols for ts and js in outline panel. This is a
bit closer to what vscode offers.
<details><summary>Screenshots of current vs new</summary>
<p>
New:
<img width="1723" height="1221" alt="image"
src="https://github.com/user-attachments/assets/796d3b59-fffa-4a66-9986-f7c75e618103"
/>
Current:
<img width="1714" height="1347" alt="image"
src="https://github.com/user-attachments/assets/f7cff463-de2a-4d86-b1a6-e19f4fd8dc6e"
/>
Current vscode (cursor):
<img width="1710" height="1177" alt="image"
src="https://github.com/user-attachments/assets/31902d52-becf-4d3f-960d-7e054e00e32d"
/>
</p>
</details>
I have never touched scheme before, and pair-programmed this with ai, so
please let me know if there's any glaring issues with the
implementation. I just miss the outline panel in vscode very much, and
would love to see this land.
Happy to help with tsx/jsx as well if this is the direction you guys
were thinking of taking the outline impl.
Doesn't fully close https://github.com/zed-industries/zed/issues/20964
as there is no support for chained class method callbacks or
`Class.prototype.method = ...` as mentioned in
https://github.com/zed-industries/zed/issues/21243, but this is a step
forward.
Release Notes:
- Improved typescript and javascript symbol outline panel
Daniel Wargh
created
36210e7
Make the Yarn SDK path relative to the worktree (#40062)
Click to expand commit body
Let's say you run this:
```
cd ~/proj-a
zed ~/proj-b
```
The `zed` process will execute with `current_dir() = ~/proj-a`, but a
`worktree_root_path() = ~/proj-b`. The old detection was then checking
if the Yarn SDK was installed in `proj-a` to decide whether to set the
tsdk value or not. This was incorrect, as we should instead check for
the SDK presence inside `proj-b`.
Release Notes:
- Fixed the Yarn SDK detection when the Zed pwd is different from the
opened folder.
Maël Nison
created
e3297cd
Add "Setting up Xdebug" section in PHP docs (#40470)
Click to expand commit body
The page about PHP in the docs doesn’t explain how to use Xdebug. I had
a lof of trouble setting it up the first time, then recently had another
headache trying to get it to work again, because the value for `adapter`
had changed from `PHP` to `Xdebug`.
It’s likely that my example config isn’t perfect or has redundant stuff
or whatever, feel free to amend it.
I also took the liberty to set the Phpactor and Intelephense headings to
level 3 because I felt like they were part of "Choosing a language
server."
Release Notes:
- N/A
Sylvain Brunerie
created
92ff29f
Add Vue language server v3 support (#40651)
Click to expand commit body
Closes https://github.com/zed-extensions/vue/issues/48
Migration guide:
https://github.com/vuejs/language-tools/discussions/5456
PR to remove tdsk: https://github.com/zed-extensions/vue/pull/61
Release Notes:
- Added support for Vue language server version 3. Know more
[here](https://github.com/vuejs/language-tools/releases/tag/v3.0.0).
---------
Co-authored-by: MrSubidubi <dev@bahn.sh>
Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
Smit Barmase
,
MrSubidubi
, and
Piotr Osiewicz
created
59b87d5
git_ui: When no changes, disable stage/unstage toolbar buttons (#39909)
Click to expand commit body
# Why
While working on recent PR I have spotted that "Stage" and "Unstage"
buttons in "Uncommited Changes" toolbar are always active, even when
there is no changes made locally.
<img width="1628" height="656" alt="Screenshot 2025-10-10 at 00 49 06"
src="https://github.com/user-attachments/assets/6bdb9ded-17c8-4f84-8649-b297162c1992"
/>
# How
Re-use already existing button states for managing the disabled state of
"Uncommited Changes" toolbar buttons when changeset is empty.
Release Notes:
- Added disabled state for "Uncommited Changes" toolbar buttons when
there are no changes present
# Preview
<img width="1728" height="772" alt="Screenshot 2025-10-10 at 08 40 14"
src="https://github.com/user-attachments/assets/ff41d852-974e-4ce1-9163-ecd30e17d5d8"
/>
Bartosz Kaszubowski
created
fd4682c
Remove Windows beta issue template (#40650)
Click to expand commit body
Release Notes:
- N/A
Joseph T. Lyons
created
f2b966b
remote: Use SFTP over SCP for uploading files and directories (#40510)
Click to expand commit body
Closes #37322
Uses SFTP if available, otherwise falls back to SCP for uploading files
and directories to remote. This fixes an issue on older macOS versions
where outdated SCP can throw an ambiguous target error.
Release Notes:
- Fixed an issue where extensions wouldn’t work when SSHing into a
remote from older macOS versions.
Smit Barmase
created
4507110
settings: Remove unused `stream_edits` setting in `agent` (#40640)
Click to expand commit body
This setting is unused (we always stream edits)
Release Notes:
- N/A
Bennet Fenner
created
1b43a63
fs: Fix `RealFs::open_handle` implementation for directories on windows (#40639)
Click to expand commit body
Release Notes:
- Fixed worktree names not updating when renaming the root folder on
windows
Lukas Wirth
created
8f3f723
gpui: Add exit in tab title update loop (#40628)
Click to expand commit body
Release Notes:
- N/A
---------
Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
Xiaobo Liu
created
5f13ce6
docs: Update section about installing extensions locally (#40636)
Click to expand commit body
Release Notes:
- N/A
Finn Evers
created
5738781
terminal_ui: Terminal failed to spawn UI (#40246)
Cameron Mcloughlin
,
Piotr piotr@zed.dev
,
Lukas lukas@zed.dev
,
Lukas Wirth
,
Gaauwe Rombouts
, and
Danilo Leal
created
197d244
image_viewer: Use buffer font in breadcrumbs (#40601)
Click to expand commit body
# Why
Spotted that image path in editor breadcrumb uses regular (UI) font in
comparison to paths of any other code-related files.
<img width="842" height="214" alt="Screenshot 2025-10-18 at 19 32 55"
src="https://github.com/user-attachments/assets/07823fd2-778a-4341-a647-3ab50192c8fa"
/>
# How
Use buffer font for image path in Image Viewer breadcrumbs.
Release Notes:
- Aligned appearance of path displayed by Image Viewer breadcrumbs with
other panes.
# Preview
### Before
<img width="842" height="214" alt="Screenshot 2025-10-18 at 19 26 17"
src="https://github.com/user-attachments/assets/921df27f-c104-457e-908c-e4beaea3a27e"
/>
### After
<img width="842" height="214" alt="Screenshot 2025-10-18 at 19 24 17"
src="https://github.com/user-attachments/assets/112ce5f3-1a2b-40e4-bf4f-e258f3518812"
/>
Release Notes:
- `.rules`, `.cursorrules`, `.windsurfrules`, and `.clinerules` are now
syntax highlighted as Markdown files.
Joseph T. Lyons
created
3aee143
python: Only enable basedpyright and ruff by default (#40604)
Click to expand commit body
Though we ship with `basedpyright`, `ruff` and a few other laps for
python, we run them all at once.
Release Notes:
- Only enable `basedpyright` and `ruff` by default when opening Python
files. If you prefer one of the other.
Joseph T. Lyons
created
02b15f0
Add Windows path into custom theme docs (#40599)
8d48f9c
gpui: Simplify tab group lookup logic in SystemWindowTabController (#40466)
Click to expand commit body
Refactor the find_tab_group method to use the question mark operator for
cleaner error handling, replacing the explicit if-else pattern with a
more concise chained approach.
Release Notes:
- N/A
Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
Xiaobo Liu
created
4199445
Fix `extension` keymap context for single file worktree (#40425)
Click to expand commit body
Closes #40353
Release Notes:
- Fixed `extension` in keymap context being empty for single file
worktree
Co-authored-by: Cole Miller <cole@zed.dev>
Andrew Farkas
and
Cole Miller
created
89be263
project_panel: Fix double-click on blank area to create a new file (#40503)
Click to expand commit body
Regressed in https://github.com/zed-industries/zed/pull/38008
Release Notes:
- Fixed an issue where double-clicking empty space in the project panel
wouldn’t create a new file.
Smit Barmase
created
3566446
docs: Add `deno.jsonc` to JSON LSP settings (#40563)
3d6722b
Fix Right Alt key not working in keybindings on Windows (#40536)
Click to expand commit body
### Problem
On Windows, the right Alt key was not working in keybindings (e.g.,
`Ctrl+Right Alt+B`), while the left Alt key worked correctly. This was
due to overly aggressive AltGr detection that treated any `right Alt +
left Ctrl` combination as AltGr, even on US keyboards where AltGr
doesn't exist.
### Root Cause
Windows internally represents AltGr (Alt Graph) as `right Alt + left
Ctrl` pressed simultaneously. The previous implementation always
excluded this combination from being treated as regular modifier keys to
support international keyboards. However, this broke keybindings using
right Alt on US/UK keyboards where users expect right Alt to behave
identically to left Alt.
### Solution
Implemented keyboard layout-aware AltGr detection:
1. Added `uses_altgr()` method to `WindowsKeyboardLayout` that checks if
the current keyboard layout is known to use AltGr (German, French,
Spanish, Polish, etc.)
2. Modified `current_modifiers()` to only apply AltGr special handling
when the keyboard layout actually uses it
3. Added explicit checking for both `VK_LMENU` and `VK_RMENU` instead of
relying solely on the generic `VK_MENU`
### Behavior
- **US/UK keyboards**: Right Alt now works identically to left Alt in
keybindings. `Ctrl+Right Alt+B` triggers the same action as `Ctrl+Left
Alt+B`
- **International keyboards** (German, French, Spanish, etc.): AltGr
continues to work correctly for typing special characters and doesn't
trigger keybindings
- **All keyboards**: Both Alt keys are detected symmetrically, matching
the behavior of left/right Windows keys
### Testing
Manually tested on Windows with US keyboard layout:
- `Ctrl+Left Alt+B` triggers keybinding
- `Ctrl+Right Alt+B` triggers keybinding
- Both Alt keys work independently in keybindings
Release Notes:
- Fixed Right Alt key not working in keybindings on Windows
joel
created
47c6ae7
settings_ui: Fix stepper buttons to Inactive Opacity to 0.1 increment adjustments (#40477)
Click to expand commit body
Closes #40279
Release Notes:
- Fix stepper buttons (+/-) to the Inactive Opacity setting for 0.1
increment adjustments on settings UI
---------
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Delvin
and
Danilo Leal
created
9984614
settings_ui: Fix misplaced comma in autoclose setting description (#40519)
Click to expand commit body
Release Notes:
- Fixed misplaced comma in the autoclose description from:
"when you type (, Zed will ...)"
to
"when you type, (Zed will ...)"
---------
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
David
and
Danilo Leal
created
287314f
markdown_preview: Improve the link decoration logic (#39905)
Click to expand commit body
Closes #39838
Refs:
*
https://github.com/zed-industries/zed/pull/39149#issuecomment-3383015060
# How
After digging a bit more to find out why raw links are not colored in
Markdown renderer I have found a simpler approach to applying color
decoration, which also fixed the lack of colors on raw links mentioned
in issue and comment above.
Release Notes:
- Improved decoration logic for links in Markdown
# Preview
<img width="1712" height="820" alt="Screenshot 2025-10-09 at 23 39 09"
src="https://github.com/user-attachments/assets/3864cb6c-3fc6-4110-8067-6158cd4b58f5"
/>
Bartosz Kaszubowski
created
63e719f
Disallow rename/copy/delete on unshared files (#40540)
1e69e5d
Set the minimum log level to `info` for the remote server (#40543)
Click to expand commit body
`env_logger` defaults to only showing error-level logs, but we show
info-level logs and above for the main Zed process, so I think it makes
sense for the remote server to behave the same way.
Release Notes:
- N/A
Cole Miller
created
30c4434
Ignore flaky ignored_dirs_events test (#40546)
Click to expand commit body
Release Notes:
- N/A
Max Brunsfeld
created
d7e193c
Show telemetry for adding all items (#40541)
4dd463f
Fix repo path to project path conversion in git panel (#40535)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/40422
Closes https://github.com/zed-industries/zed/issues/40379
Closes https://github.com/zed-industries/zed/issues/40307
Release Notes:
- Fixed an issue where the project diff view did not work for multi-repo
projects on Windows when using WSL or SSH remoting