Commit log

06747f0 zed 0.180.3

Joseph T. Lyons created

7729e3a title_bar: Ensure git onboarding banner dismissal is properly respected (cherry-pick #28147) (#28149)

Click to expand commit body
Cherry-picked title_bar: Ensure git onboarding banner dismissal is
properly respected (#28147)

A user reported this issue [on

Discord](https://discord.com/channels/869392257814519848/873292398204170290/1357879959422636185).

The issue here only arises for users which recently installed Zed or had
previously not dismissed the Git Onboarding component. It was introduced
by https://github.com/zed-industries/zed/pull/27412, which made the
banner component reusable.

For every banner, there is a value stored in the KVP store when it was
first dismissed. For the git onboarding banner, this was
`zed_git_banner_dismissed_at` initially, but this key would have been
changed by the linked PR. A change would have resulted in the banner
being shown again for users who already dismissed the panel, so for the
special case of `Git Onboarding`, a check was added which ensured this
would not happen.

However, this check was only added for reading from the key from the DB
but not on writing the git onboarding dismissal it to the DB. Thus, if a
user who had not previously dismissed the panel opened Zed, we would
check for the old key to be present in the DB. Since that would not be
the case, the banner would be shown. If the user dismissed the panel, it
would be stored in the database with the new key. Thus, on a reopen of
Zed, the banner would again be shown since for the old key there would
still be no value present and users are unable to dismiss the panel.


This PR fixes this behavior by moving the check into the method that
generates the key. With this, users which were unaffected by the bug
will still not see the panel again. Users who would install Zed with
this change present will be able to properly dismiss the panel aswell.
Users which were affected by the bug need to dismiss the banner one more
time. That happens because I did not want to modify the dismissal check
to check for two keys (the original one and the new one), as it would
clutter the logic even more for this special case. If this would be
preferred, feel free to let me know.

Release Notes:

- Fixed an issue where dismissing the git onboarding banner would not be
persisted across sessions.

Co-authored-by: Finn Evers <dev@bahn.sh>

gcp-cherry-pick-bot[bot] and Finn Evers created

0d096cc Fix panic or bad hunks when expanding hunks w/ multiple ranges in 1 hunk (#28117)

Click to expand commit body
Release Notes:

- Fixed a crash that could happen when expanding diff hunks with
multiple cursors in one hunk.

Max Brunsfeld created

3775496 v0.180.x stable

Joseph T. Lyons created

f21d34e Bump to 0.180.2 for @osiewicz

Zed Bot created

b17df00 language server: Fix restarts sometimes not working for buffers open in go-to-definition view (cherry-pick #27655) (#27658)

Click to expand commit body
Cherry-picked language server: Fix restarts sometimes not working for
buffers open in go-to-definition view (#27655)

Closes #ISSUE

Release Notes:

- Fixed language server restarts sometimes not restarting a language
server.

Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>

gcp-cherry-pick-bot[bot] and Piotr Osiewicz created

3605e77 Bump to 0.180.1 for @maxbrunsfeld

Zed Bot created

4535b23 assistant2: Allow customizing tools for default profiles (#27594)

Click to expand commit body
This PR adds support for customizing the tools for the default profiles.

Release Notes:

- N/A

Marshall Bowers created

e1dde36 assistant2: Add ability to configure tools for profiles in the UI (#27562)

Click to expand commit body
This PR adds the ability to configure tools for a profile in the UI:


https://github.com/user-attachments/assets/16642f14-8faa-4a91-bb9e-1d480692f1f2

Note: Doesn't yet work for customizing tools for the default profiles.

Release Notes:

- N/A

Marshall Bowers created

2f6fd47 assistant2: Start on modal for managing profiles (#27546)

Click to expand commit body
This PR starts work on a modal for managing profiles.

Release Notes:

- N/A

Marshall Bowers created

f6b6bff assistant2: Rework enabled tool representation (#27527)

Click to expand commit body
This PR reworks how we store enabled tools in the `ToolWorkingSet`.

We now track them based on which tools are explicitly enabled, rather
than by the tools that have been disabled.

Also fixed an issue where switching profiles wouldn't properly set the
right tools.

Release Notes:

- N/A

Marshall Bowers created

a35b456 assistant2: Add profile selector (#27520)

Click to expand commit body
This PR replaces the tool selector with a new profile selector.

<img width="1394" alt="Screenshot 2025-03-26 at 2 35 42 PM"
src="https://github.com/user-attachments/assets/9631c6e9-9c47-411e-b9fc-5d61ed9ca1fe"
/>

<img width="1394" alt="Screenshot 2025-03-26 at 2 35 50 PM"
src="https://github.com/user-attachments/assets/3abe4e08-d044-4d3f-aa95-f472938452a8"
/>

Release Notes:

- N/A

Marshall Bowers created

62a722e Git: Fix hunks being skipped when staging too quickly (#27552)

Click to expand commit body
Release Notes:

- Git: Fix hunks being skipped when staging too quickly.

---------

Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>

João Marcos and Max Brunsfeld created

a3b0221 Fix crash when staging a hunk that overlaps multiple unstaged hunks (#27545)

Click to expand commit body
Release Notes:

- Git: Fix crash when staging a hunk that overlaps multiple unstaged
hunks.

---------

Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>

João Marcos and Max Brunsfeld created

74c06d4 Revert "editor: Do not use `hide_mouse_while_typing` for single line editor" (#27547)

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

Looks like hiding cursor on single editor is okay and is default
behavior for other apps.

Smit Barmase created

3733ce8 editor: Do not use `hide_mouse_while_typing` for single line editor (#27536)

Click to expand commit body
Release Notes:

- N/A

Smit Barmase created

bb58f18 Hide the mouse when the user is typing in the editor - take 2 (#27519)

Click to expand commit body
Closes #4461

Take 2 on https://github.com/zed-industries/zed/pull/25040. 

Fixes panic caused due to using `setHiddenUntilMouseMoves` return type
to `set` cursor on macOS.

Release Notes:

- Now cursor hides when the user is typing in editor. It will stay
hidden until it is moved again. This behavior is `true` by default, and
can be configured with `hide_mouse_while_typing` in settings.

---------

Co-authored-by: Peter Tripp <peter@zed.dev>
Co-authored-by: Thomas Mickley-Doyle <thomas@zed.dev>
Co-authored-by: Agus <agus@zed.dev>
Co-authored-by: Kirill Bulatov <kirill@zed.dev>
Co-authored-by: Agus Zubiaga <hi@aguz.me>
Co-authored-by: Angelk90 <angelo.k90@hotmail.it>

Smit Barmase , Peter Tripp , Thomas Mickley-Doyle , Agus , Kirill Bulatov , Agus Zubiaga , and Angelk90 created

27e784b Fix drawing of 0-width borders when quad has other borders (cherry-pick #27511) (#27517)

Click to expand commit body
Cherry-picked Fix drawing of 0-width borders when quad has other borders
(#27511)

Closes #27485

Release Notes:

- N/A

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

gcp-cherry-pick-bot[bot] and Michael Sloan created

8d39ba9 v0.180.x preview

Joseph T. Lyons created

1e22fae lsp: Check if language server supports `workspace/symbol` request (#27491)

Click to expand commit body
This ensures that we do not get a bunch of error logs when using the
symbol search:
```
[2025-03-26T13:23:32+01:00 ERROR project] Method not found
[2025-03-26T13:23:32+01:00 ERROR project] Method not found
[2025-03-26T13:23:32+01:00 ERROR project] Method not found
[2025-03-26T13:23:32+01:00 ERROR project] Method not found
[2025-03-26T13:23:32+01:00 ERROR project] Method not found
[2025-03-26T13:23:33+01:00 ERROR project] Method not found
...
```

Release Notes:

- N/A

Bennet Bo Fenner created

1d9c581 assistant2: Use different icons in the notification popover depending on status (#27493)

Click to expand commit body
Using a check green icon for "success, you're changes are applied" and
the info, muted icon for just "there are news".

<img
src="https://github.com/user-attachments/assets/6b7e06bc-ca03-40fd-8962-7e21f5cd85d9"
width="500"/>
<img
src="https://github.com/user-attachments/assets/347ac8ac-792f-4e18-94d5-69bb9d5270e8"
width="500"/>

Release Notes:

- N/A

Danilo Leal created

39af3b4 assistant2: Improve tool card header scrolling affordance (#27492)

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

Added this subtle gradient to the right side of the tool card header so
users know there is more content, suggesting it can be scrolled. Also
took the opportunity to extract out commonly used custom colors in all
of these cards into their own functions to ensure consistency.

Here's the final product:


https://github.com/user-attachments/assets/e44150f9-7751-46c7-8790-149b86cc5e0f

Release Notes:

- N/A

Danilo Leal created

64b3eea assistant2: Fix tool label overflowing on card header (#27489)

Click to expand commit body
### Before

<img
src="https://github.com/user-attachments/assets/f56211d8-d60d-4e6c-9c40-af2523f71431"
width="600" />

### After

Now, you can horizontally scroll when the header holds an overflowing
label.


https://github.com/user-attachments/assets/6cb90de3-1db5-4a30-8f23-22221098a233

Release Notes:

- N/A

Danilo Leal created

72318df lsp: Add support for `textDocument/documentSymbol` (#27488)

Click to expand commit body
This PR adds support for retrieving the outline of a specific
buffer/document from the LSP.
E.g. for this code (`crates/cli/src/cli.rs`):
```rs
use collections::HashMap;
pub use ipc_channel::ipc;
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize)]
pub struct IpcHandshake {
    pub requests: ipc::IpcSender<CliRequest>,
    pub responses: ipc::IpcReceiver<CliResponse>,
}

#[derive(Debug, Serialize, Deserialize)]
pub enum CliRequest {
    Open {
        paths: Vec<String>,
        urls: Vec<String>,
        wait: bool,
        open_new_workspace: Option<bool>,
        env: Option<HashMap<String, String>>,
    },
}

#[derive(Debug, Serialize, Deserialize)]
pub enum CliResponse {
    Ping,
    Stdout { message: String },
    Stderr { message: String },
    Exit { status: i32 },
}

/// When Zed started not as an *.app but as a binary (e.g. local development),
/// there's a possibility to tell it to behave "regularly".
pub const FORCE_CLI_MODE_ENV_VAR_NAME: &str = "ZED_FORCE_CLI_MODE";
```

Rust-analyzer responds with:
```
Symbol: 'IpcHandshake' - Struct - (4:0-8:1) (5:11-5:23)
  Symbol: 'requests' - Field - (6:4-6:44) (6:8-6:16)
  Symbol: 'responses' - Field - (7:4-7:48) (7:8-7:17)
Symbol: 'CliRequest' - Enum - (10:0-19:1) (11:9-11:19)
  Symbol: 'Open' - EnumMember - (12:4-18:5) (12:4-12:8)
    Symbol: 'paths' - Field - (13:8-13:26) (13:8-13:13)
    Symbol: 'urls' - Field - (14:8-14:25) (14:8-14:12)
    Symbol: 'wait' - Field - (15:8-15:18) (15:8-15:12)
    Symbol: 'open_new_workspace' - Field - (16:8-16:40) (16:8-16:26)
    Symbol: 'env' - Field - (17:8-17:44) (17:8-17:11)
Symbol: 'CliResponse' - Enum - (21:0-27:1) (22:9-22:20)
  Symbol: 'Ping' - EnumMember - (23:4-23:8) (23:4-23:8)
  Symbol: 'Stdout' - EnumMember - (24:4-24:30) (24:4-24:10)
    Symbol: 'message' - Field - (24:13-24:28) (24:13-24:20)
  Symbol: 'Stderr' - EnumMember - (25:4-25:30) (25:4-25:10)
    Symbol: 'message' - Field - (25:13-25:28) (25:13-25:20)
  Symbol: 'Exit' - EnumMember - (26:4-26:24) (26:4-26:8)
    Symbol: 'status' - Field - (26:11-26:22) (26:11-26:17)
Symbol: 'FORCE_CLI_MODE_ENV_VAR_NAME' - Constant - (29:0-31:67) (31:10-31:37)
```

We'll use this to reference specific symbols in assistant2

Release Notes:

- N/A

Bennet Bo Fenner created

d52291b assistant2: Add new icons for create and delete file tool (#27487)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

7462e74 Improve `editor::CopyAndTrim` action's discoverability (#27484)

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

Add it to the editor context menu and Zed's app menu near the `Copy`
action.

Release Notes:

- N/A

Kirill Bulatov created

de67d93 git: Fix staging file hunks on Windows (#26661)

Click to expand commit body
Closes #26458 

I had checked, and also reference the implementation in vscode.

Release Notes:

- N/A

---------

Co-authored-by: 张小白 <364772080@qq.com>

CharlesChen0823 and 张小白 created

a02f7e5 Debugger UI: Update tab content and remove red tint from terminated session (#27475)

Click to expand commit body
The new tab content makes it obvious when a session is shutdown so the
red tint is no longer needed.

Release Notes:

- N/A

Anthony Eid created

d70ac64 Allow enabling/disabling breakpoints (#27280)

Click to expand commit body
This PR adds the ability to enable/disable breakpoints. It also fixes a
bug where toggling a log breakpoint from the breakpoint context menu
would add a standard breakpoint on top of the log breakpoint instead of
deleting it.

todo: 
- [x] Add `BreakpointState` field Breakpoint that manages if a
breakpoint is active or not
- [x] Don't send disabled breakpoints to DAP servers - in progress
- [x] Half the opacity of disabled breakpoints - in progress
- [x] Add `BreakpointState` to database
- [x] Editor test for enabling/disabling breakpoints
- [ ] Integration Test to make sure we don't send disabled breakpoints
to DAP servers
- [x] Database test to make sure we properly serialize/deserialize
BreakpointState

Release Notes:

- N/A

---------

Co-authored-by: Piotr <piotr@zed.dev>
Co-authored-by: Conrad <conrad@zed.dev>
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>

Anthony Eid , Piotr , Conrad , and Mikayla Maki created

df583d7 Fix `corner_radii` clamping for `Img` when actual size is smaller than the container (#27473)

Click to expand commit body
Noticed this when working on #27472

Release Notes:

- N/A

Michael Sloan created

e091c5f Fix `paint_quad` behavior change which clamped corner rounding (#27472)

Click to expand commit body
Turns out that git deletion indicator relied on using larger-than-bounds
corner rounding - see
https://github.com/zed-industries/zed/pull/27460#issuecomment-2753174153

Release Notes:

- N/A

Michael Sloan created

931a6d6 Notify when tool is finished (#27459)

Click to expand commit body
Now if a tool call finishes (or is blocked on confirmation) and the Zed
window is not active, you get a notification popup. You can turn it off
with a setting.

<img width="420" alt="Screenshot 2025-03-25 at 5 19 25 PM"
src="https://github.com/user-attachments/assets/bdf7b6b8-4428-4b46-8b09-e0be140f8a51"
/>
<img width="420 alt="Screenshot 2025-03-25 at 5 18 13 PM"
src="https://github.com/user-attachments/assets/1325e7b8-cd5a-44b9-a82d-5db928ad3cfc"
/>

Release Notes:

- N/A

---------

Co-authored-by: Agus Zubiaga <hi@aguz.me>
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>

Richard Feldman , Agus Zubiaga , and Danilo Leal created

a605b66 editor: Do not insert scrollbar hitboxes when scrollbars are disabled (#27467)

Click to expand commit body
This PR fixes an issue where a clickable scrollbar track was inserted in
the editor even when scrollbars were explicitly disabled via the user's
settings. If the user has

```json
"scrollbar": {
    "show": "never"
}
```
in their settings, invisible and interactable scrollbar tracks will be
inserted in the editor if scrollbars would be required, as seen below:


https://github.com/user-attachments/assets/b0d915a9-7a7e-4518-84d8-96d9b15aab12

The bug occurs because we only set the scrollbar contents to be
invisible, which however does not affect the insertion of hitboxes for
the scrollbars.

This PR fixes this behaviour by preventing any scrollbar layouting from
happening when scrollbars are explicitly disabled via the settings:


https://github.com/user-attachments/assets/a3f5725b-aead-4fec-9fd8-e574cf269d45

All existing panels which have configurable scrollbars behave the same
way, see
https://github.com/zed-industries/zed/blob/fb2586a5533aff4e5a4b508e7b397d81dc6b9deb/crates/outline_panel/src/outline_panel.rs#L4362-L4373

for example. Following this check, neither a thumb nor a track is
inserted in any case when scrollbars are never to be shown.

Release Notes:

- Fixed invisible scrollbar tracks being inserted into the editor when
scrollbars are explicitly disabled via settings.

Finn Evers created

7376c6f Add support for Gemini 2.5 Pro Experimental model (#27468)

Click to expand commit body
Release Notes:

- Added support for Gemini 2.5 Pro Experimental model to Zed AI.

Co-authored-by: Wilhelm Klopp <wil.klopp@gmail.com>

Michael Sloan and Wilhelm Klopp created

ee08776 markdown_preview: Fix code block highlight and indentation (#27463)

Click to expand commit body
Closes #23218

Before:
<img width="1463" alt="before"
src="https://github.com/user-attachments/assets/4f77a4e0-61b8-4516-91a4-366f73e24760"
/>

After:
<img width="1463" alt="after"
src="https://github.com/user-attachments/assets/61e2c69d-fa6b-4c52-b1eb-ad7a61e274e0"
/>


Release Notes:

- Fixed issue where code block highlight and indentation in markdown
preview was rendered incorrectly.

Smit Barmase created

30f7e89 Add a way to control go to definition fallback (#27426)

Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/9243 and
https://github.com/zed-industries/zed/pull/16512

Release Notes:

- Added a way to control go to definition fallback

Kirill Bulatov created

8c8f50d Pull logic for clamping corner rounding radii out of `Corners::to_pixels` (#27460)

Click to expand commit body
This seems more correct as corners are not necessarily only for rounding
radii.

Also applies clamping after scaling in `paint_quad`, deduplicating that
logic. This also provides a more precise result by doing the clamping
after scaling, avoiding floating point rounding issues (probably a
non-issue).

Release Notes:

- N/A

Michael Sloan created

76192ea worktree: Don't open files >= 6GB in size (#27458)

Click to expand commit body
Temporary Workaround For: #27283

This PR can (and should!) be reverted once the underlying inefficiencies
are resolved

Release Notes:

- Files that are 6GB or larger will now not open. This is a temporary
workaround for inefficient handling of large files resulting in
extremely high memory usage, often resulting in system freezing,
requiring a restart of Zed or the entire system.

Ben Kunkle created

fb2586a assistant2: Add some padding top to the checkpoint element (#27456)

Click to expand commit body
Most minimal PR ever.

Release Notes:

- N/A

Danilo Leal created

28e0bb5 ci: Run nix nightly on any mac runners (#27457)

Click to expand commit body
Nix nightly builds can now run on all macOS runners.

Follow-up to: https://github.com/zed-industries/zed/pull/27014

Release Notes:

- N/A

Peter Tripp created

a65ea27 editor: Refactor scrollbar-related code (#24134)

Click to expand commit body
This PR is primarily an implementation of @osiewicz
[comment](https://github.com/zed-industries/zed/pull/19495#pullrequestreview-2488877957)
in an effort to increase maintainability after the horizontal editor
scrollbar was added in #19495 . I also want to build on these changes in
future PRs to adress some other small bugs.

This primarily does the following:
1. Uses `along` wherever possible
2. Fixes the amount of mouse event listeners attached to the editor when
scrollbars are displayed to 2 instead of 2-4 in case both scrollbars are
displayed.

This can be done since only one scrollbar can be dragged by the cursor
at any given time, so the event listeners now account for that. The
state reflecting the scrollbar dragging state was also updated
accordingly.

It does not change any functionality besides the aforementioned event
listener code as well as some minor bugs which where present after
#19495 , namely:
- One missing `cx.stop_propagation()` (see
[here](https://github.com/zed-industries/zed/blob/a8741dc3107a205ba5a28aa8c3e18747ceed2ba3/crates/editor/src/element.rs#L4684)
and
[here](https://github.com/zed-industries/zed/blob/a8741dc3107a205ba5a28aa8c3e18747ceed2ba3/crates/editor/src/element.rs#L4838)
respectively).
- The horizontal scrollbar thumb having a small border on the left side,
which seems to be unintended for the horizontal scrollbar whilst
intended for the vertical one. Since this is a minimal change, I figured
it could be already included in this PR.

This PR admittetly grew quite large over time, however, much of the diff
is just renames to account for the code now working for both axes as
well as moved code. The logic remains (or should at least be)
unaffected. If I should split this into two PRs or remove some of the
changes, please let me know.

Release Notes:

- N/A

Finn Evers created

1574a3a python: Add task for running modules (#26462)

Click to expand commit body
Closes #26460

I am new to contributing to Zed (and pretty new to Rust in general). I'm
not too familiar with code style, guidelines etc. so please feel free to
suggest changes/improvements.

This PR adds a run icon to Python files that have a "main" function:
```python
if __name__ == "__main__":
    ...
```

In addition to the gutter icon, there is now also an extra task in the
command palette "run module".

Release Notes:

- Added detection for runnable Python modules
- Added Python-specific task to run a Python file as a module from
inside the project's scope

---------

Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>

Alex van de Griendt and Piotr Osiewicz created

152432f title bar: Adjust the onboarding banner component API (#27455)

Click to expand commit body
This PR encapsulates the layout building of the Onboarding Banner
component inside of it, allowing to, at the call site, just pass an
icon, title, and subtitle. The `subtitle` parameter, by default, uses
the `Introducing:` label, which I think will be the one we'll use most
of the time for this specific component.

Release Notes:

- N/A

Danilo Leal created

5953c61 assistant2: Allow profiles to manage context server tools (#27452)

Click to expand commit body
This PR updates the agent profiles with support for managing context
server tools.

Release Notes:

- N/A

Marshall Bowers created

aab02a4 Fix color swatch shrinking in the LSP completion menu (#27450)

Click to expand commit body
### Before

Note how in the second time I try to add a color property, the color
swatch is shrunk.


https://github.com/user-attachments/assets/677a37b2-8ae4-408d-8dea-d9cc4bc2e119

### After


https://github.com/user-attachments/assets/aa902573-1f44-48e1-a396-e22ad5703155

Release Notes:

- Fixed color swatches shrinking upon re-adding a color-related
property.

Danilo Leal created

9fc570c Remove `Pixels: Mul<Pixels, Output = Pixels>` impl, add ScaledPixels ops (#27451)

Click to expand commit body
It doesn't make sense to have `Pixels: Mul<Pixels, Output = Pixels>` as
the output should be `Pixels^2` (area), so these impls are removed. All
code where these impls were used are improved by instead multiplying by
`f32` or `usize`.

Also adds math op impls that are present for `Pixels` but absent for
`ScaledPixels`. Adds missing `Mul<Pixels> for usize` to both.

Release Notes:

- N/A

Michael Sloan created

581d673 Remove `ui` dependency from `assistant_tool` and `context_server` (#27449)

Click to expand commit body
This PR removes the dependency on the `ui` crate from the
`assistant_tool` and `context_server` crates.

These crates were only depending on it for `IconName`, which can now be
depended on from `icons` directly.

Release Notes:

- N/A

Marshall Bowers created

4a30b96 language_model: Remove dependency on `ui` (#27448)

Click to expand commit body
This PR removes the dependency on the `ui` crate from the
`language_model` crate.

We were only depending on it to import `IconName`—which now lives in
`icons`—and some re-exported GPUI items.

Release Notes:

- N/A

Marshall Bowers created

503bf60 Add `icons` crate (#27447)

Click to expand commit body
This PR adds a new `icons` crate and moves the `IconName` into it.

We have a number of crates that are taking a dependency on `ui` just so
they can talk about icons, which is not ideal.

Release Notes:

- N/A

Marshall Bowers created

46e86f0 assistant tools: Add `Tool::icon` method instead of matching on name (#27444)

Click to expand commit body
Release Notes:

- N/A

Agus Zubiaga created