Commit log

5509e01 Return language model events when using Google model via zed.dev (#27831)

Click to expand commit body
Release Notes:

- N/A

Bennet Bo Fenner created

8be5ed2 workspace: Fix SSH remote restore on second open + Fix panel not opening automatically on new SSH remote (#27830)

Click to expand commit body
Closes #26902

- We used to serialize SSH remote only when opened via recent entries,
and not on first time. This broke restore, when opening same folder for
second time from recent entries. Once opened for second time, restoring
used to. work correctly. This PR fixes this by serializing when opened
for first time.

- We didn't handle window replace post worktree creation in first time
flow, this resulted in project panel not opening automatically like it
does with recent entries, or local projects. This PR fixes it by
following same flow as recent entries.

Release Notes:

- Fixed SSH remote not restoring when opening for second time.
- Fixed project panel not opening when opening new SSH remote folder.

Smit Barmase created

5343f1c Undo a refactor of `buffer_path_log_err` (#27828)

Click to expand commit body
Accidentally included this in #27822

Release Notes:

- N/A

Michael Sloan created

8075c24 Debugger: Fix breakpoint serialization (#27825)

Click to expand commit body
This PR fixes two bugs that cause unexpected behavior with breakpoints.

The first bug made it impossible to delete the last breakpoint in a file
in the workspace's database. This caused deleted breakpoints to remain
in the database and added to new projects.

The second bug was an edge case in the breakpoint context menu where
disabling/enabling a breakpoint would sometimes set a new breakpoint on
top of the old breakpoint.


Release Notes:

- N/A

Anthony Eid created

d0276e6 Remove assistant `ContextSnapshot` (#27822)

Click to expand commit body
Motivation for this is to simplify the context types and make it cleaner
to add image context.

Release Notes:

- N/A

---------

Co-authored-by: Nathan Sobo <nathan@zed.dev>

Michael Sloan and Nathan Sobo created

c729842 assistant2: Exclude deleted files from stale list (#27821)

Click to expand commit body
Release Notes:

- N/A

Agus Zubiaga created

715e23a assistant2: Do not mention diagnostics until done (#27820)

Click to expand commit body
Release Notes:

- N/A

Agus Zubiaga created

63f0fda Fix code actions tooltip overlapping with action context menu (#27809)

Click to expand commit body
Closes #27728

This stops code actions tooltip from being added when there's a visible
Editor::context_menu

Release Notes:

- Fix code actions tooltip opening on top of code actions menu

Anthony Eid created

7984f0f vim: Update `:set` (#27805)

Click to expand commit body
Update VimSet commands to better match the other commands by displaying
the leading `:`:

|Before|After|
|--|--|

|![image](https://github.com/user-attachments/assets/1bc21a06-e71f-4e40-90a7-ffdd903fd7b5)|![image](https://github.com/user-attachments/assets/df59279f-d454-4701-8330-2529506850cd)|


Release Notes:

- N/A

5brian created

37ebb47 Don't use `dbg!` in test input (#27811)

Click to expand commit body
It confuses me when I grep for dbg! :facepalm:

Release Notes:

- N/A

Conrad Irwin created

8546dc1 Allow viewing past commits in Zed (#27636)

Click to expand commit body
This PR adds functionality for loading the diff for an arbitrary git
commit, and displaying it in a tab. To retrieve the diff for the commit,
I'm using a single `git cat-file --batch` invocation to efficiently load
both the old and new versions of each file that was changed in the
commit.

Todo

* Features
* [x] Open the commit view when clicking the most recent commit message
in the commit panel
  * [x] Open the commit view when clicking a SHA in a git blame column
  * [x] Open the commit view when clicking a SHA in a commit tooltip
  * [x] Make it work over RPC
  * [x] Allow buffer search in commit view
* [x] Command palette action to open the commit for the current blame
line
* Styling
* [x] Add a header that shows the author, timestamp, and the full commit
message
  * [x] Remove stage/unstage buttons in commit view
  * [x] Truncate the commit message in the tab
* Bugs
  * [x] Dedup commit tabs within a pane
  * [x] Add a tooltip to the tab

Release Notes:

- Added the ability to show past commits in Zed. You can view the most
recent commit by clicking its message in the commit panel. And when
viewing a git blame, you can show any commit by clicking its sha.

Max Brunsfeld created

3391201 assistant2: Adjust icons for some tools (#27814)

Click to expand commit body
Picking more specific icons for a few tools.

Release Notes:

- N/A

Danilo Leal created

dce824f assistant2: Refine empty states design (#27812)

Click to expand commit body
| No LLM provider | Fresh Start | No ToS |
|--------|--------|--------|
| ![CleanShot 2025-03-31 at 7  04
17@2x](https://github.com/user-attachments/assets/aab5987c-1530-401d-acc6-65e4f2fc13b8)
| ![CleanShot 2025-03-31 at 7  04
39@2x](https://github.com/user-attachments/assets/b2c7a2e0-5178-4bcb-a917-da7bf8e6246c)
| ![CleanShot 2025-03-31 at 7  05
10@2x](https://github.com/user-attachments/assets/4a656e82-0e1d-4d11-8d34-8eeeadd4814c)
|

Release Notes:

- N/A

Danilo Leal created

a1bef28 keymap: Allow upper-case keys in keybinds (#27813)

Click to expand commit body
Reverts the error behavior introduced in #27558. Upper-case keys in
keybindings no longer generate errors, instead they are transformed into
`shift-{KEY}`
e.g. `ctrl-N` becomes `ctrl-shift-n`

The behavior introduced in #27558 where "special" keys such as function
keys, `control`, `shift`, etc. Are parsed case-insensitively is
preserved.

Release Notes:
- Improved how upper-case characters are handled in keybinds. "special"
keys such as the function keys, `control`, `shift`, etc. are now parsed
case-insensitively, so for example `F8`, `CTRL`, `SHIFT` are now
acceptable alternatives to `f8`, `ctrl`, and `shift` when declaring
keybindings. Additionally, upper-case (ascii) characters will now be
converted explicitly to `shift` + the lowercase version of the
character, to match the Vim behavior.
NOTE: Release notes above should replace the release notes from #27558

Ben Kunkle created

8a212be assistant2: Extract method for adding a new profile to the settings (#27810)

Click to expand commit body
This PR extracts a method for adding a new profile to the settings to
reduce the amount of code required inline.

Release Notes:

- N/A

Marshall Bowers created

9bbb1e5 nix: Remove special handling for livekit (#27801)

Click to expand commit body
Now that #27126 has landed, we can drop this from the nix shell which
has the side benefit that nix users don't actually need xcode installed
to develop zed anymore.

Release Notes:

- N/A

Julia Ryan created

50ad71a Bump cargo-bundle and cargo-about version in nix (#27803)

Click to expand commit body
We updated our cargo-bundle fork, and this adds to our override to make
sure we have the latest version.

cargo-about also released a new version upstream which was picked up in
nixpkgs, so I've `nix flake update`'d and changed that version as well.
Thanks to @niklaskorz for [pinging
me](https://github.com/NixOS/nixpkgs/pull/392319#issuecomment-2746122094)
about this. You should be able to drop the patch next time you update.

Release Notes:

- N/A

Julia Ryan created

76c46c5 assistant2: Correctly display context files outside project worktrees (#27806)

Click to expand commit body
We were displaying empty pills for files that weren't inside one of the
project worktrees

Release Notes:

- N/A

Agus Zubiaga created

8f0bacd vim: Hide mouse cursor on type (#27804)

Click to expand commit body
Closes #27639 

Release Notes:

- Fixed the mouse cursor not hiding while typing in Vim mode.

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

Smit Barmase and Conrad Irwin created

0514832 vim: Add :ls, :buffers (#27797)

Click to expand commit body
https://neovim.io/doc/user/windows.html#%3Abuffers

Not exactly the same, but i think the zed equivalent would be the tab
switcher

Release Notes:

- vim: Added `:ls` and `:buffers`

5brian created

27cafe5 vim: Add :options, :map (#27798)

Click to expand commit body
Add:
- [:options](https://neovim.io/doc/user/options.html#%3Aoptions) to open
default settings
- :map to open default vim keymap

These aren't exactly the same as vim but i think it's a good equivalent

For map:
I can't find the docs for :map with no arguments, since the map docs
only shows the command bindings, but it opens the key mapping in vim.

https://neovim.io/doc/user/vimindex.html

![image](https://github.com/user-attachments/assets/83aeebc4-e2e9-4818-890d-d307d5cee9b1)

Release Notes:

- vim: Added `:options` and `:map`

5brian created

ddc102c assistant_settings: Disable "Suggest Edits" in the `assistant2` feature flag (#27802)

Click to expand commit body
This PR disables the "Suggest Edits" feature when in the `assistant2`
feature flag.

This functionality has been superseded by the new Agent Panel.

We can remove the feature outright once the Agent Panel is generally
available.

Release Notes:

- N/A

Marshall Bowers created

d517a21 Debugger: Add conditional and hit conditional breakpoint functionality (#27760)

Click to expand commit body
This PR adds conditional and hit condition breakpoint functionality 

cc @osiewicz 

Co-authored-by: Remco Smits: <djsmits12@gmail.com>

Release Notes:

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

---------

Co-authored-by: Remco Smits <djsmits12@gmail.com>

Anthony Eid and Remco Smits created

dc64ec9 chore: Bump Rust edition to 2024 (#27800)

Click to expand commit body
Follow-up to https://github.com/zed-industries/zed/pull/27791

Release Notes:

- N/A

Piotr Osiewicz created

d50905e assistant2: Add testing environment variables (#27789)

Click to expand commit body
To make it easier to design UIs for some of these scenarios. This PR
adds specifically two variables:
- `ZED_SIMULATE_NO_THREAD_HISTORY`
- `ZED_SIMULATE_NO_LLM_PROVIDER`

Release Notes:

- N/A

---------

Co-authored-by: Agus Zubiaga <hi@aguz.me>

Danilo Leal and Agus Zubiaga created

0729d24 chore: Prepare for Rust edition bump to 2024 (without autofix) (#27791)

Click to expand commit body
Successor to #27779 - in this PR I've applied changes manually, without
futzing with if let lifetimes at all.

Release Notes:

- N/A

Piotr Osiewicz created

d51aa2f assistant find-replace: Fall back to replace_with_flexible_indent (#27795)

Click to expand commit body
Release Notes:

- N/A

Agus Zubiaga created

d40b49c Remove edit action markers from `edit_prompt.md` (#27785)

Click to expand commit body
https://github.com/zed-industries/zed/pull/27778 removed most
occurrences, but there were still some more in `edit_prompt.md`

Release Notes:

- N/A

Agus Zubiaga created

edf712d toolchains: Add support for relative paths (#27777)

Click to expand commit body
Closes #ISSUE

Release Notes:

- N/A

Piotr Osiewicz created

627ae7a Remove blade as the default for GPUI (#27794)

Click to expand commit body
Release Notes:

- N/A

Mikayla Maki created

17aecfd vim: Fix :ex, :exit (#27755)

Click to expand commit body
`:exit` should be `:exi[t]` instead of `:ex[it]`, `:ex` has different
command

- https://neovim.io/doc/user/editing.html#%3Aex
- https://neovim.io/doc/user/editing.html#%3Aexit

Changes:
- Add `:ex` same as `:edit`
- Change `:ex[it]` to `:exi[t]`

Release Notes:

- N/A

5brian created

01a2c8e Set tool schema format for zed.dev language model (#27788)

Click to expand commit body
Release Notes:

- N/A

Bennet Bo Fenner created

fc269df vim: Handle exclusive-linewise edgecase correctly (#27786)

Click to expand commit body
Before this change we didn't explicitly handle vim's exclusive-linewise
edgecase
(https://neovim.io/doc/user/motion.html#exclusive).

Instead we had hard-coded workarounds in a few places to make our tests
pass.
The most pernicious of these workarounds was that we represented a
visual line
selection as including the trailing newline (or leading newline for
files that
end with no newline), which other code had to undo to get back to what
the user
indended.

Closes #21440
Updates #6900

Release Notes:

- vim: Fixed `d]}` to not delete the closing brace
- vim: Fixed `d}` from the start of the line to not delete the paragraph
separator
- vim: Fixed `d}` from the middle of the line to not delete the final
newline

Conrad Irwin created

e1e8c17 Fix remote clients unable to query custom, lsp_ext, commands (#27775)

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

A preparation for rust-analyzer's LSP tasks fetching, ensures all remote
clients are able to query custom, lsp_ext, commands.

Release Notes:

- Fixed remote clients unable to query custom, lsp_ext, commands

Kirill Bulatov created

c8a9a74 Add tool calling support for Gemini models (#27772)

Click to expand commit body
Release Notes:

- N/A

Bennet Bo Fenner created

f6d58f7 ui: Render keybinds for disabled actions with disabled color (#27693)

Click to expand commit body
This PR ensures that keybinds for disabled actions in context menus are
also colored according th their disabled state.

### Default

| Current `main` | This PR | 
| --- | --- | 
| <img width="212" alt="main_default"
src="https://github.com/user-attachments/assets/c9f24f4b-dff1-4930-9a3c-07ce1fad516a"
/> | <img width="212" alt="pr_default"
src="https://github.com/user-attachments/assets/fd3db1b8-3a46-4b17-81e7-de66b35b4a79"
/> |

### Vim-Mode

| Current `main` | This PR | 
| --- | --- | 
| <img width="255" alt="main_vim"
src="https://github.com/user-attachments/assets/2845efd3-0109-4e00-af92-203a328d6282"
/> | <img width="255" alt="pr_vim"
src="https://github.com/user-attachments/assets/af073173-30c0-4a60-942f-0f124089c723"
/>|


Release Notes:

- Keybinds in contexts menus will now also be dimmed if the
corresponding action is currently disabled.

Finn Evers created

e6c64eb assistant2: Fail find-replace tool if both strings are equal (#27783)

Click to expand commit body
Models seem to do this ever so often and get very confused. Failing here
helps them recover.

Release Notes:

- N/A

Co-authored-by: Richard Feldman <richard@zed.dev>

Agus Zubiaga and Richard Feldman created

12c58d0 proto: Bump version to v0.2.2 (#27732)

Click to expand commit body
Release Notes:

- N/A

Ben Kunkle created

75689c1 assistant2: System prompt response guidance (#27782)

Click to expand commit body
Adds some guidance for the assistant on how to respond to tool results
and other interactions

Release Notes:

- N/A

Co-authored-by: Richard Feldman <richard@zed.dev>

Agus Zubiaga and Richard Feldman created

ca6be24 assistant2: Change system prompt to discourage doom loops (#27781)

Click to expand commit body
Ask assistant to limit diagnostic fix attempts to 3 max

Release Notes:

- N/A

Co-authored-by: Richard Feldman <richard@zed.dev>

Agus Zubiaga and Richard Feldman created

9b44bac Remove edit action markers literals from source (#27778)

Click to expand commit body
Edit action markers look like git conflicts and can trip up tooling used
to resolve git conflicts. This PR creates them programmatically so that
they don't appear in source code.

Release Notes:

- N/A

Agus Zubiaga created

9b40770 Add Code Symbols tool (#27733)

Click to expand commit body
Lets you get all the code symbols in the project (like the Code Symbols
panel) or in a particular file (like the Outline panel), optionally
paginated and filtering results by regex. The tool gives the files,
lines, and numbers of all of these, which means they can be used in
conjunction with the read file tool to read subsets of large files
without having to open the entire large file and poke around in it.

<img width="621" alt="Screenshot 2025-03-29 at 12 00 21 PM"
src="https://github.com/user-attachments/assets/d78259d7-2746-44c0-ac18-2e21f2505c0a"
/>

Release Notes:

- N/A

Richard Feldman created

5b2adfb Add symbol-info tool to default tools (#27766)

Click to expand commit body
Follow-up to https://github.com/zed-industries/zed/pull/27733

Release Notes:

- N/A

Richard Feldman created

078b241 Add symbol info tool (#27742)

Click to expand commit body
Does various readonly LSP operations: get definition, get declaration,
get implementation, get type definition, and find all references.

<img width="635" alt="Screenshot 2025-03-30 at 1 24 11 AM"
src="https://github.com/user-attachments/assets/87eae2b0-9791-4e7f-b91f-79dfc2b746cc"
/>

Release Notes:

- N/A

Richard Feldman created

e42406f python: Fix incorrect highlighting of function parameters (#26815)

Click to expand commit body
This PR addresses the highlighting of function parameters in Python.

#21454 added various improvements to Python highlighting. However, some
of the capture groups are missing corresponding colors in themes, which
was also [noted on the
PR](https://github.com/zed-industries/zed/pull/21454#pullrequestreview-2537510964).

Currently, this is especially bad for function parameters, which are not
only missing corresponding colors, but are also captured incorrectly as
`arguments` instead of `parameters`. Additionally, as not one theme
defines `function.arguments` (I cheked this with the [extension
surveyor](https://github.com/zed-industries/extension-surveyor), we
instead always fall back to `function` here. Thus, parameters are always
highlighted the same as functions, resulting in incorrect and inproper
highlighting.

This PR resolves this issue by instead capturing parameters as
`variable.parameter`, which has not perfect, but much better coverage
among existing themes.

| `main` | <img width="670" alt="main"
src="https://github.com/user-attachments/assets/6942b494-fe0f-4537-8503-8de4e2c5a30e"
/> |
| --- | --- |
| This PR | <img width="670" alt="PR"
src="https://github.com/user-attachments/assets/f0d1d22a-c5f4-46b8-a22b-f18e0e55fa47"
/> |

--- 

Following [this
comment](https://github.com/zed-industries/zed/blob/7d9dbbe5feafb0135e05d29f950d5465203690c8/extensions/test-extension/languages/gleam/highlights.scm#L77-L78)
and [the note on the other
PR](https://github.com/zed-industries/zed/pull/21454#discussion_r1907012758),
I also updated the last two matchs in the file to instead use `any-of`
in the second commit (GitHub falsely shows `id` being removed despite it
still being present). Should that not be wanted, I can revert this
change.

Release Notes:

- Fixed improper highlighting of function parameters in Python.

Finn Evers created

4ee20dd assistant2: Adjust edit files design (#27762)

Click to expand commit body
This PR includes design tweaks to elements involved on the "edit files"
flow: the bar that appears above the message editor, buttons on the
multibuffer hunks, adding keybindings to the "Review Changes" button,
etc.

<img
src="https://github.com/user-attachments/assets/4bff883a-c5c4-443e-8bf5-d98f535c83ce"
width="750" />

Release Notes:

- N/A

Danilo Leal created

74dd32d assistant2: Fix overflowing notification title (#27763)

Click to expand commit body
<img
src="https://github.com/user-attachments/assets/5a22caba-2535-4f45-96a1-6ee9a552266f"
width="500"/>

Release Notes:

- N/A

Danilo Leal created

342acdd Show notifications on primary screen by default (#27665)

Click to expand commit body
By default, agent notifications now display only on your primary screen.
You can optionally configure them to display on all screens (or not to
display at all).

Release Notes:

- N/A

Richard Feldman created

9f8776d Fix stale git statuses (#27735)

Click to expand commit body
Display of git statuses in the git panel, project panel, and tabs
regressed in #27391, causing us to frequently see stale statuses. This
turns out to be because we were not emitting the
`WorktreeUpdatedGitRepositories` event in cases where we should be,
which in turn is because of bumping the `LocalRepositoryEntry`'s
`status_scan_id` too early, so that a later comparison of two
`status_scan_id` values wasn't detecting a change that we're expecting
it to detect.

Release Notes:

- N/A (problematic behavior didn't make it into stable or preview)

Cole Miller created

548a8d7 proto: Create indents.scm (#27730)

Click to expand commit body
Closes #27676

Release Notes:

- N/A

Ben Kunkle created