b0a7def
Fix track file renames in git panel (#42352)
Click to expand commit body
Closes #30549
Release Notes:
- Fixed: Git renames now properly show as renamed files in the git panel
instead of appearing as deleted + untracked files
<img width="351" height="132" alt="Screenshot 2025-11-10 at 17 39 44"
src="https://github.com/user-attachments/assets/80e9c286-1abd-4498-a7d5-bd21633e6597"
/>
<img width="500" height="95" alt="Screenshot 2025-11-10 at 17 39 55"
src="https://github.com/user-attachments/assets/e4c59796-df3a-4d12-96f4-e6706b13a32f"
/>
ozzy
created
57e3bcf
Revise R documentation - about Air in particular (#42755)
Click to expand commit body
Returning the favor from @rgbkrk in
https://github.com/posit-dev/air/pull/445
I noticed the R docs around Air are a bit incorrect / out of date. I'll
make a few more comments inline. Feel free to take over for any other
edits.
Release Notes:
- Improved R language support documentation
Davis Vaughan
created
b2f5611
zeta2: Support qwen3-minimal prompt format (#42902)
Click to expand commit body
This prompt is for a fine-tuned model. It has the following changes,
compared to `minimal`:
- No instructions at all, except for one sentence at the beginning of
the prompt.
- Output is a simplified unified diff -- hunk headers have no line
counts (e.g., `@@ -20 +20 @@`)
- Qwen's FIM tokens are used where possible (`<|file_sep|>`,
`<|fim_prefix|>`, `<|fim_suffix|>`, etc.)
To evaluate this model:
```
ZED_ZETA2_MODEL=zeta2-exp [usual zeta-cli eval params ...] --prompt-format minimal-qwen
```
This will point to the most recent Baseten deployment of zeta2-exp
(which may change in the future, so the prompt-format may get out of
sync).
Release Notes:
- N/A
Oleksiy Syvokon
created
fd1494c
Fix remote server completions not being queried from all LSP servers (#42723)
Click to expand commit body
Closes #41294
Release Notes:
- Fixed remote LSPs not being queried
localcc
created
faa1136
agent_ui: Don't create a new terminal when hitting the new thread binding from the terminal (#42898)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/32701
Release Notes:
- agent: Fixed a bug where hitting the `NewThread` keybinding when
focused inside a terminal within the agent panel would create a new
terminal tab instead of a new thread.
Danilo Leal
created
6bf5e92
Revert "Keep selection in `SwitchToHelixNormalMode` (#41583)" (#42892)
Click to expand commit body
Closes #ISSUE
Release Notes:
- Fixes vim "go to definition" making a selection
Follow up to https://github.com/zed-industries/zed/pull/42556
Release Notes:
- N/A *or* Added/Fixed/Improved ...
Lukas Wirth
created
671500d
agent_ui: Fix images copied from win explorer not being pastable (#42858)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/41505
A bit adhoc but it gets the job done for now
Release Notes:
- Fixed images copied from windows explorer not being pastable in the
agent panel
Lukas Wirth
created
0519c64
Deduplicate inlays when getting those from multiple language servers (#42899)
Click to expand commit body
Part of https://github.com/zed-industries/zed/issues/42671
Release Notes:
- Deduplicate inlay hints from different language servers
Closes #34069
<img width="532" height="880" alt="Screenshot 2025-11-17 at 11 14 19 AM"
src="https://github.com/user-attachments/assets/abc50c32-d54d-4310-a6e6-83008db7ed81"
/>
<img width="525" height="863" alt="Screenshot 2025-11-17 at 12 22 50 PM"
src="https://github.com/user-attachments/assets/15a69792-c2c7-4727-add9-c1f9baa5e665"
/>
Release Notes:
- Agent file edits now error if the file has changed since last read
(allowing the agent to read changes and avoid overwriting changes made
outside Zed)
Richard Feldman
created
4b050b6
Support Agent Servers on remoting (#42683)
Click to expand commit body
<img width="348" height="359" alt="Screenshot 2025-11-13 at 6 53 39 PM"
src="https://github.com/user-attachments/assets/6fe75796-8ceb-4f98-9d35-005c90417fd4"
/>
Also added support for per-target env vars to Agent Server Extensions
Closes https://github.com/zed-industries/zed/issues/42291
Release Notes:
- Per-target env vars are now supported on Agent Server Extensions
- Agent Server Extensions are now available when doing SSH remoting
---------
Co-authored-by: Lukas Wirth <me@lukaswirth.dev>
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Richard Feldman
,
Lukas Wirth
, and
Mikayla Maki
created
bb46bc1
settings_ui: Add "Edit in settings.json" button to subpage header (#42886)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/42094
This will make it consistent with the regular/main page. Also ended up
fixing a bug along the way where this button wouldn't work for subpage
items.
Release Notes:
- settings ui: Fixed a bug where the "Edit in settings.json" wouldn't
work for subpages like all the Language pages.
Danilo Leal
created
b274f80
zeta2: Print average length of prompts and outputs (#42885)
Click to expand commit body
Release Notes:
- N/A
Oleksiy Syvokon
created
d77ab99
keymap_editor: Make "toggle exact match mode" the default for binding search (#42883)
Click to expand commit body
I think having the "exact mode" turned on by default is usually what
users will expect when searching for a specific keybinding. When it's
turned off, it's very odd to search for a super common binding like
"command-enter" and get no results. That happens because without that
mode, we're trying to match for subsequent matches, which I'm betting
it's an edge case. Hopefully, this change will make the keymap editor
feel more like it works well.
I'm also adding the toggle icon button inside the keystroke input for
consistency with the project search input.
Making this change very inspired by [Sam Rose's
feedback](https://bsky.app/profile/samwho.dev/post/3m5juszqyd22w).
Release Notes:
- keymap editor: Made the "toggle exact match mode" the default
keystroke search mode so that whatever you search for matches exactly to
results.
Danilo Leal
created
97792f7
Prefer loading `extension.toml` before `extension.json` (#42884)
Click to expand commit body
Closes #42406
The issue for the fish-extension is that a `extension.json` is still
present next to a `extension.toml`, although the former is deprecated.
We should prefer the `extension.toml` if it is present and only fall
back to the `extension.json` if needed. This PR tackles this.
Release Notes:
- N/A
Closes #ISSUE
Remove unused method `HttpClient::type_name`. Looking at the PR from a
year ago when it was added, it was never actually used for anything and
seems like a prototyping artifact.
Other misc changes for the `http_client` crate include:
- Use `derive_more::Deref` for `HttpClientWithUrl` (already used for
`HttpClientWithProxy`)
- Move `http_client::proxy()` higher up in the trait definition. (It was
in between methods that have default implementations)
Release Notes:
- N/A *or* Added/Fixed/Improved ...
tidely
created
4092e81
keymap_editor: Adjust some items of the UI (#42876)
Click to expand commit body
- Only showing the "Create" menu item in the right-click context menu
for actions that _do not_ contain a binding already assigned to them
- Only show the "Clear Input" icon button in the keystroke modal when
the input is focused/in recording mode
- Add a subtle hover style to the table rows just to make it easier to
navigate
Release Notes:
- N/A
Danilo Leal
created
e0b6477
Properly sanitize out inlay hints from remote hosts (#42878)
Click to expand commit body
Part of https://github.com/zed-industries/zed/issues/42671
Release Notes:
- Fixed remote hosts causing duplicate hints to be displayed
Kirill Bulatov
created
f1bebd7
zeta2: Add skip-prediction flag to eval CLI (#42872)
Click to expand commit body
Release Notes:
- N/A
Piotr Osiewicz
created
a66a539
Reduce macro burden for rust-analyzer (#42871)
Click to expand commit body
This enables optimizations for our own proc-macros as well as some heavy
hitters. Additionally this gates the `derive_inspector_reflection` to be
skipped for rust-analyzer as it currently slows down rust-analyzer way
too much
Release Notes:
- N/A *or* Added/Fixed/Improved ...
Closes #4533 (partly at least)
Release Notes:
- Added `project_panel.sort_mode` option to control explorer file sort
(directories first, mixed, files first)
## Summary
Adds three sorting modes for the project panel to give users more
control over how files and directories are displayed:
- **`directories_first`** (default): Current behaviour - directories
grouped before files
- **`mixed`**: Files and directories sorted together alphabetically
- **`files_first`**: filed grouped before directories
## Motivation
Users coming from different editors and file managers have different
expectations for file sorting. Some prefer directories grouped at the
top (traditional), while others prefer the macOS Finder-style mixed
sorting where "Apple1/", "apple2.tsx" and "Apple3/" appear
alphabetically mixed together.
### Screenshots
New sort options in settings:
<img width="515" height="160" alt="image"
src="https://github.com/user-attachments/assets/8f4e6668-6989-4881-a9bd-ed1f4f0beb40"
/>
Directories first | Mixed | Files first
-------------|-----|-----
<img width="328" height="888" alt="image"
src="https://github.com/user-attachments/assets/308e5c7a-6e6a-46ba-813d-6e268222925c"
/> | <img width="327" height="891" alt="image"
src="https://github.com/user-attachments/assets/8274d8ca-b60f-456e-be36-e35a3259483c"
/> | <img width="328" height="890" alt="image"
src="https://github.com/user-attachments/assets/3c3b1332-cf08-4eaf-9bed-527c00b41529"
/>
### Agent usage
Copilot-cli/claude-code/codex-cli helped out a lot. I'm not from a rust
background, but really wanted this solved, and it gave me a chance to
play with some of the coding agents I'm not permitted to use for work
stuff
---------
Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
Lucas Parry
and
Smit Barmase
created
175162a
project_panel: Fix preview tabs disabling focusing files after just one click in project panel (#42836)
Click to expand commit body
Closes #41484
With preview tabs disabled, when you click once on a file in the project
panel, rather than focusing on that file, zed will incorrectly focus on
the text editor panel. This means if you click on a file to focus it,
then follow up with a keybind like backspace to delete that file, it
doesn't delete that file because the backspace goes through to the text
editor instead.
Incorrect behaviour seen here:
https://github.com/user-attachments/assets/8c2dea90-bd90-4507-8ba6-344be348f151
Release Notes:
- Fixed improper UI focus behaviour in the project panel when preview
tabs are disabled
Serophots
created
cdcc068
vim: Fix temporary mode exit on end of line (#42742)
Click to expand commit body
When using the end of line motion ($) while in temporary mode, the
cursor would be placed in insert mode just before the last character
instead of after, just like in NeoVim.
This happens because `EndOfLine` kind of assumes that we're in `Normal`
mode and simply places the cursor in the last character instead of the
newline character.
This commit moves the cursor one position to the right when exiting
temporary mode and the motion used was `Motion::EndOfLine`
- Update `vim::normal::Vim.exit_temporary_normal` to now accept a
`Option<&Motion>` argument, in case callers want this new logic to
potentially be applied
Closes #42278
Release Notes:
- Fixed temporary mode exit when using `$` to move to the end of the
line
Dino
created
86484aa
languages: Clean up invalid init calls after recent API changes (#42866)
Click to expand commit body
Related to https://github.com/zed-industries/zed/pull/41670
Release Notes:
- Cleaned up invalid init calls after recent API changes in
https://github.com/zed-industries/zed/pull/42238
Mayank Verma
created
d32934a
languages: Fix indentation for if/else statements in C/C++ without braces (#41670)
Click to expand commit body
Closes #41179
Release Notes:
- Fixed indentation for if/else statements in C/C++ without braces
We weren't reporting predictions that were generated but never made it
out of the provider, such as predictions that failed to interpolate, and
those that are cancelled because another request completes before it.
Release Notes:
- N/A
---------
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Co-authored-by: Ben Kunkle <ben@zed.dev>
Agus Zubiaga
,
Max Brunsfeld
, and
Ben Kunkle
created
1683052
editor: Fix MoveToEnclosingBracket and unmatched forward/backward Vim motions in Markdown code blocks (#42813)
Click to expand commit body
We now correctly use bracket ranges from the deepest syntax layer when
finding enclosing brackets.
Release Notes:
- Fixed an issue where `MoveToEnclosingBracket` didn’t work correctly
inside Markdown code blocks.
- Fixed an issue where unmatched forward/backward Vim motions didn’t
work correctly inside Markdown code blocks.
---------
Co-authored-by: MuskanPaliwal <muskan10112002@gmail.com>
Use
[`command`](https://www.gnu.org/software/bash/manual/bash.html#index-command)
instead of `which` to check if `wild` is installed.
Using `which` will result in an error being printed to stdout:
```bash
./script/install-wild
which: invalid option -- 's'
/usr/local/bin/wild
Warning: existing wild 0.6.0 found at /usr/local/bin/wild. Skipping installation.
```
Release Notes:
- N/A
Alvaro Parker
created
1277f32
docs: Improve custom keybinding for external agent example (#42776)
Click to expand commit body
Follow up to https://github.com/zed-industries/zed/pull/42772 adding
some comments to improve clarity.
Release Notes:
- N/A
Danilo Leal
created
b3097cf
docs: Add section about keybinding for external agent threads (#42772)
Click to expand commit body
Release Notes:
- N/A
Danilo Leal
created
305206f
Make drag and double click enabled on the whole title bar on macOS (#41839)
Click to expand commit body
Closes #4947
Taken inspiration from @tasuren implementation, plus the addition for
the double click enabled on the whole title bar too to
maximizes/restores the window.
I was not able to test the application on Linux, no need to test on
Windows since the feature is enabled by the OS.
Release Notes:
- Fixed title bar not fully draggable on macOS
- Fixed not being able to maximizes/restores the window with double
click on the whole title bar on macOS
Closes https://github.com/zed-industries/zed/issues/40867
Since the recent changes in
[https://github.com/zed-industries/zed/pull/38881](https://github.com/zed-industries/zed/pull/38881),
the filename editor is sometimes not focused after duplicating a file or
creating a new one, and similarly, autoscroll sometimes didn’t work. It
turns out that multiple calls to `update_visible_entries_task` cancel
the existing task, which might contain information about whether we need
to focus the filename editor and autoscroll after the task ends. To fix
this, we now carry that information forward to the next task that
overwrites it, so that when the latest task ends, we can use that
information to do the right thing.
Release Notes:
- Fixed an issue in the Project Panel where duplicating or creating an
entry sometimes didn’t focus the rename editing field.
Smit Barmase
created
8772727
zeta2: Improve zeta old text matching (#42580)
Click to expand commit body
This PR improves Zeta2's matching of `old_text`/`new_text` pairs, using
similar code to what we use in the edit agent. For right now, we've
duplicated the code, as opposed to trying to generalize it.
Release Notes:
- N/A
---------
Co-authored-by: Max <max@zed.dev>
Co-authored-by: Michael <michael@zed.dev>
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Co-authored-by: Agus <agus@zed.dev>
Ben Kunkle
,
Max
,
Michael
,
Max Brunsfeld
, and
Agus
created
aaa116d
languages: Fix command used for Go subtests (#42734)
Click to expand commit body
The command used to run go subtests was breaking if the test contained
square brackets, for example:
```
go test . -v -run ^TestInventoryCheckout$/^\[test\]_test_checkout$
```
After a bit of testing it appears that the best way to actually resolve
this in a way supported by `go test` is to wrap this command in quotes.
As such, this commit updates the command to, considering the example
above:
```
go test . -v -run '^TestInventoryCheckout$/^\[test\]_test_checkout$'
```
We also tested escape the square brackets, using `\\\[` instead of `\[`,
but that would lead to a more complex change, so we opted for the
simpler solution of wrapping the command in quotes.
Closes #42347
Release Notes:
- Fixed command used to run Go subtests to ensure that escaped
characters don't lead to a failure in finding tests to run
Dino
created
c1096d8
agent_ui: Render error descriptions as markdown in thread view callouts (#42732)
Click to expand commit body
This PR makes the description in the callout that display general errors
in the agent panel be rendered as markdown. This allow us to pass URLs
to these error strings that will be clickable, improving the overall
interaction with them. Here's an example:
<img width="500" height="396" alt="Screenshot 2025-11-14 at 11 43@2x"
src="https://github.com/user-attachments/assets/f4fc629a-6314-4da1-8c19-b60e1a09653b"
/>
Release Notes:
- agent: Improved the interaction with errors by allowing links to be
clickable.
Danilo Leal
created
092071a
git_ui: Allow opening a file with the diff hunks expanded (#40616)
Click to expand commit body
So i just discovered `editor::ExpandAllDiffHunks`
I have been really missing the ability to look at changes NOT in a multi
buffer so i was very pleased to finally figure out that this is already
possible in Zed.
i have seen alot of discussion/issues requesting this feature so i think
it is safe to say i'm not the only one that is not aware it exists.
i think the wording in the docs could better communicate what this
feature actually is, however, i think an even better way to show users
that this feature exists would be to just put it in front of them.
In the `GitPanel`:
- `menu::Confirm` opens the project diff
- `menu::SecondaryConfirm` opens the selected file in a new editor.
I think it would be REALLY nice if opening a file with
`SecondaryConfirm` opened the file with the diff hunks already expanded
and scrolled the editor to the first hunk.
ideally i see this being toggle-able in settings something like
`GitPanel - Open File with Diffs Expanded` or something. so the user
could turn this off if they preferred.
I tried creating a new keybinding using the new `actions::Sequence`
it was something like:
```json
{
"context": "GitPanel && ChangesList",
"bindings": {
"cmd-enter" : [ "actions::Sequence", ["menu:SecondaryConfirm", "editor::ToggleFocus", "editor::ExpandAllDiffHunks", "editor::GoToHunk"]]
}
}
```
but the action sequence does not work. i think because opening the file
is an async task.
i have a first attempt here, of just trying to get the diff hunks to
expand after opening the file.
i tried to copy and paste the logic/structure as best i could from the
confirm method in file_finder.rs:1432
it compiles, but it does not work, and i do not have enough experience
in rust or in this project to figure out anything further.
if anyone was interested in working on this with me i would enjoy
learning more and i think this would be a nice way to showcase this
tool!
Josh Piasecki
created
723f9b1
zeta2: Add minimal prompt for fine-tuned models (#42691)
Click to expand commit body
1. Add `--prompt-format=minimal` that matches single-sentence
instructions used in fine-tuned models (specifically, in `1028-*` and
`1029-*` models)
2. Use separate configs for agentic context search model and edit
prediction model. This is useful when running a fine-tuned EP model, but
we still want to run vanilla model for context retrieval.
3. `zeta2-exp` is a symlink to the same-named Baseten deployment. This
model can be redeployed and updated without having to update the
deployment id.
4. Print scores as a compact table
Release Notes:
- N/A
---------
Co-authored-by: Piotr Osiewicz <piotr@zed.dev>
3de3a36
editor: Add `diffs_expanded` to key context when diff hunks are expanded (#40617)
Click to expand commit body
including a new identifier on the Editor key context will allow for some
more flexibility when creating keybindings.
for example i would like to be able to set the following:
```json
{
"context": "Editor",
"bindings": {
"pageup": ["editor::MovePageUp", { "center_cursor": true }],
"pagedown": ["editor::MovePageDown", { "center_cursor": true }],
}
},
{
"context": "Editor && diffs_expanded",
"bindings": {
"pageup": "editor::GoToPrevHunk",
"pagedown": "editor::GoToHunk",
}
},
```
<img width="1392" height="1167" alt="Screenshot 2025-10-18 at 23 51 46"
src="https://github.com/user-attachments/assets/cf4e262e-97e7-4dd9-bbda-cd272770f1ac"
/>
very open to suggestions for the name. that's the best i could come up
with.
the action *IS* called `editor::ExpandAllDiffHunks` so this seems
fitting.
the identifier is included if *any* diff hunk is visible, even if some
of them have been closed using `editor::ToggleSelectedDiffHunk`
Release Notes:
- The Editor key context now includes 'diffs_expanded' when diff changes
are visible
Josh Piasecki
created
28a0b82
git_panel: Fix FocusChanges does nothing with no entries (#42553)
Click to expand commit body
Closes #31155
Release Notes:
- Ensure `git_panel::FocusChanges` bypasses the panel’s `Focusable`
logic and directly focuses the `ChangesList` handle so the command works
even when the repository has no entries.
- Keep the `Focusable` behavior from the commit 45b126a (which routes
empty panels to the commit editor) by handling this special-case action
rather than regressing the default focus experience.
Xipeng Jin
created
e2c95a8
git: Continue parsing other branches when refs have missing fields (#42523)
Click to expand commit body
Closes #34684
Release Notes:
- (Let's Git Together) Fixed Git panel not showing any branches when
repository contains refs with missing fields
Mayank Verma
created
3da4d3a
settings_ui: Make open project settings action open settings UI (#42669)
Click to expand commit body
This PR makes the `OpenProjectSettings` action open the settings UI in
project settings mode for the first visible worktree, instead of opening
the file. It also adds a `OpenProjectSettingsFile` action that maintains
the old behavior.
Finally, this PR partially fixes a bug where the settings UI won't load
project settings when the settings window is loaded before opening a
project/workspace. This happens because the global `app_state` isn't
correct in the `Subscription` that refreshes the available setting files
to open. The bug is still present in some cases, but it's out of scope
for this PR.
Release Notes:
- settings ui: Project Settings action now opens settings UI instead of
a file