Commit log

6143da9 editor: Fix regression in git label colors due to status color changes (#27272)

Click to expand commit body
This PR fixes the new awkward-looking git status labels due to the
change in version control colors. We want to enable styling version
control colors distinctly from other statuses, but these colors aren't
great for labels as they are meant to be quite high contrast.

We may need to split version control colors into a primary color and a
text color if we want to improve theming this overall.

| Before | After |
|--------|-------|
| ![CleanShot 2025-03-21 at 14 12
22@2x](https://github.com/user-attachments/assets/fadb93b1-06b6-44cc-bf16-7e1279166ed0)
| ![CleanShot 2025-03-21 at 14 12
49@2x](https://github.com/user-attachments/assets/262ffc23-60b9-4cee-8a2b-9e864130912f)
|

Release Notes:

- Fixes a regression in git status colors in the project panel

Nate Butler created

7ced1b7 Fix strikethrough and underline in Linux (#27267)

Click to expand commit body
Follow up to #26827 and #24721, which introduced a bug in Linux.

|before|now|
|---|---|

|![image](https://github.com/user-attachments/assets/6471502d-bf92-4808-ad42-9e0c66569d4f)|!![image](https://github.com/user-attachments/assets/ae45510a-8bc9-4f89-90a0-7496842fecb6)|


Release Notes:

- N/A

Co-authored-by: Jason Lee <huacnlee@gmail.com>

João Marcos and Jason Lee created

0e9e2d7 Delete unused checkpoints (#27260)

Click to expand commit body
Release Notes:

- N/A

Antonio Scandurra created

a52e2f9 Show claude-3-7-sonnet-thinking model for all users (#27256)

Click to expand commit body
Release Notes:

- N/A

Bennet Bo Fenner created

a551a61 Bump up default timeout (#27250)

Click to expand commit body
Release Notes:

- Extended timeout used when connecting to remote instances

Conrad Irwin created

c394a3a Adjust multibuffer header fold button size (#27253)

Click to expand commit body
This PR adjust the size of the fold button on the multibuffer header.
Had to make the `height` method public on the Button Like to pull that
off without other major changes.

| Before | After |
|--------|--------|
| ![CleanShot 2025-03-21 at 12  11
40@2x](https://github.com/user-attachments/assets/003b2965-b1cc-43ad-8528-2bd11cf0f9cc)
| ![CleanShot 2025-03-21 at 12  11
28@2x](https://github.com/user-attachments/assets/d4927b72-3f41-4c4b-9813-49e676170419)
|

Release Notes:

- N/A

Danilo Leal created

1cca2e3 keymap: Remove backspace/delete as shortcuts for `git::RestoreFile` (#27257)

Click to expand commit body
- See also: https://github.com/zed-industries/zed/pull/27004

Release Notes:

- N/A

Peter Tripp created

0de5c2e assistant2: Order agent profiles in the order they are defined in settings (#27255)

Click to expand commit body
This PR updates the ordering of the agent profiles in the tool selector
to respect the order they are defined in in the settings instead of
sorting them alphabetically.

This gives the user more control, and allows them to order the profiles
as they desire.

Release Notes:

- N/A

Marshall Bowers created

6397872 Persist editor folds between restarts (#27252)

Click to expand commit body
Part of https://github.com/zed-industries/zed/issues/11626


https://github.com/user-attachments/assets/276cca5f-dd87-4496-b1b8-40b211f65aa7

Folds restoration between editor reopens will follow later

Release Notes:

- Started to persist editor folds between restarts

Kirill Bulatov created

93bd32b Fix toggling breakpoints not working when text anchor isn't at start (#27249)

Click to expand commit body
This fixes a bug where breakpoint's were unable to be toggled if the
text::Anchor representing the breakpoint position was not at the
beginning of a line.

Release Notes:

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

Anthony Eid created

f119550 assistant2: Define built-in agent profiles in the default settings (#27251)

Click to expand commit body
This PR moves the definitions of the built-in agent profiles into the
default `settings.json`.

It also changes the behavior of how this setting is treated when merging
settings such that the set of profiles will be merged. This is so users
don't clobber the built-in profiles when adding profiles of their own.

Release Notes:

- N/A

Marshall Bowers created

4e93e38 assistant2: Sort tools in the tool selector by ID (#27247)

Click to expand commit body
This PR makes it so the tools in the tool selector are sorted by ID so
that they have a deterministic order.

Release Notes:

- N/A

Marshall Bowers created

05aa888 project: Track manifest locations per unique manifest locator (#27194)

Click to expand commit body
This pull request paves way for exposing manifest tracking to
extensions.
- Project tree was renamed to manifest tree to better reflect it's
intent (and avoid confusion).
- Language server adapters now provide a name of their *manifest
locator*. If multiple language servers refer to the same locator, the
locating code will run just once for a given path.

Release Notes:

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

---------

Co-authored-by: Anthony <anthony@zed.dev>

Piotr Osiewicz and Anthony created

6bced3a assistant2: Ensure scripting tool gets disabled when switching profiles (#27244)

Click to expand commit body
This PR fixes an issue where the scripting tool wasn't being disabled
when switching to a profile that did not have it enabled.

Release Notes:

- N/A

Marshall Bowers created

e14ebcf Show "Restore Checkpoint" only when there were changes (#27243)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Agus Zubiaga <hi@aguz.me>
Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>

Antonio Scandurra , Agus Zubiaga , Bennet Bo Fenner , and Danilo Leal created

9d965bc Change default Markdown `soft_wrap` to "bounded" (#27205)

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

Previously with defaults meant that Markdown would softwrap even if you
had available window space (soft_wrap occurred at default
`preferred_line_length` of 80).

Release Notes:

- Changed Markdown default to soft_wrap at window width instead of
preferred_line_length

Peter Tripp created

5798681 lsp: Fix workspace folders being cleared when new set is the same as the old one (#27242)

Click to expand commit body
Release Notes:

- N/A

Piotr Osiewicz created

a709d4c assistant: Add support for `claude-3-7-sonnet-thinking` (#27085)

Click to expand commit body
Closes #25671

Release Notes:

- Added support for `claude-3-7-sonnet-thinking` in the assistant panel

---------

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

Bennet Bo Fenner , Danilo Leal , Antonio Scandurra , and Agus Zubiaga created

2ffce4f Add non-blob columns to SQLite (#27236)

Kirill Bulatov created

33fc1f4 languages: Fix JS/TS imports not showing correct suggestions after using period (#27235)

Click to expand commit body
Closes #21728

This PR improves autocomplete for imports for all kinds of javascript
and typescript files.

Adds `.` as `completion_query_characters` which will make it act like
word for auto completion context. This allows capturing compete
`format.` as query.

Before:
<img width="500" alt="image"
src="https://github.com/user-attachments/assets/849fb342-db73-48e7-a9d8-93f0e5a14b58"
/>

After:
<img width="500" alt="image"
src="https://github.com/user-attachments/assets/e3ac3272-3217-4bcd-857f-4a83afc5980e"
/>

Release Notes:

- Improved autocomplete suggestions for JavaScript and TypeScript
imports.

Smit Barmase created

7ade7d8 lsp-config: Allow setting a server's environment variables (#27213)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/14334, allowing
users to set environment variables for a language server binary like:

```json
"lsp": {
  "rust-analyzer": {
    "binary": {
      "path": "/Users/dbarsky/.cargo/bin/rust-analyzer",
      "env": {
        "RA_PROFILE": "*>100"
      }
    },
  }
}
```

The newly introduced environment variables are merged with the shell
environment. Perhaps more controversially, I've _also_ removed the
trimming/`stderr:`-prefixing of language server logs. This because
rust-analyzer has some nice, tree-shaped profiling built-in, and it
prevents us from printing profiles like this:

<details>
<img width="1147" alt="Screenshot 2025-03-20 at 12 09 14 PM"
src="https://github.com/user-attachments/assets/b7066651-6394-492b-b745-906c66d3c7b2"
/>
</details>

Release Notes:

- Added the ability to set a language server's environment variables.
- Removed the `stderr`-prefix of a language server's stderr logs.

David Barsky created

8f86cd7 assistant2: Add design refinements (#27160)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Co-authored-by: Antonio Scandurra <me@as-cii.com>
Co-authored-by: Agus Zubiaga <hi@aguz.me>

Danilo Leal , Bennet Bo Fenner , Antonio Scandurra , and Agus Zubiaga created

962709f docs: Change `render` function's return type (#27229)

迷渡 created

cf7d639 Migrate most callers of git-related worktree APIs to use the GitStore (#27225)

Click to expand commit body
This is a pure refactoring PR that goes through all the git-related APIs
exposed by the worktree crate and minimizes their use outside that
crate, migrating callers of those APIs to read from the GitStore
instead. This is to prepare for evacuating git repository state from
worktrees and making the GitStore the new source of truth.

Other drive-by changes:

- `project::git` is now `project::git_store`, for consistency with the
other project stores
- the project panel's test module has been split into its own file

Release Notes:

- N/A

---------

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

Cole Miller and Max Brunsfeld created

9134630 extensions: Add copy author info button in context menu (#27221)

Click to expand commit body
Closes #26108

Add "Copy Author Info" button to extension context menu.

Release Notes:

- Added option to copy extension author's name and email from extension
context menu.

Smit Barmase created

bc1c0a2 Separate repository state synchronization from worktree synchronization (#27140)

Click to expand commit body
This PR updates our DB schemas and wire protocol to separate the
synchronization of git statuses and other repository state from the
synchronization of worktrees. This paves the way for moving the code
that executes git status updates out of the `worktree` crate and onto
the new `GitStore`. That end goal is motivated by two (related) points:

- Disentangling git status updates from the worktree's
`BackgroundScanner` will allow us to implement a simpler concurrency
story for those updates, hopefully fixing some known but elusive bugs
(upstream state not updating after push; statuses getting out of sync in
remote projects).
- By moving git repository state to the project-scoped `GitStore`, we
can get rid of the duplication that currently happens when two worktrees
are associated with the same git repository.

Co-authored-by: Max <max@zed.dev>

Release Notes:

- N/A

---------

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

Cole Miller , Max , and Max Brunsfeld created

700af63 assistant2: Watch settings for changes to profiles (#27219)

Click to expand commit body
This PR makes it so we watch the settings and update when the profiles
change.

Release Notes:

- N/A

Marshall Bowers created

4b5df21 assistant2: Allow creating agent profiles via settings (#27216)

Click to expand commit body
This PR adds support for creating new agent profiles via the settings:

```json
{
  "assistant": {
    "profiles": {
      "lua": {
        "name": "Lua",
        "tools": {
          "lua-interpreter": true
        }
      },
      "lua-thinking": {
        "name": "Lua + Thinking",
        "tools": {
          "lua-interpreter": true,
          "thinking": true
        }
      }
    }
  }
}
```

Release Notes:

- N/A

Marshall Bowers created

48b1a43 docs: Fix rendering of keybind in `languages.md` (#27217)

Click to expand commit body
This fixes a broken keybind in the language extension docs: [Language
metadata](https://zed.dev/docs/extensions/languages#language-metadata) >
`line_comments`.

Release Notes:

- N/A

Finn Evers created

9609e04 Add a way to copy with the selections trimmed (#27206)

Click to expand commit body
No default binding currently, `cmd/ctr-shift-c` seem somewhat natural
but those are occupied by the collab panel.


https://github.com/user-attachments/assets/702cc52a-a4b7-4f2c-bb7f-12ca0c66faeb


Release Notes:

- Added a way to copy with the selections trimmed

---------

Co-authored-by: Cole Miller <m@cole-miller.net>

Kirill Bulatov and Cole Miller created

a74f2bb Reuse values from last debug panel inert state if they exist (#27211)

Click to expand commit body
This should allow the team to iterate faster when using the debug panel
to set up a session

Release Notes:

- N/A

Anthony Eid created

ac45279 debugger: Fix shutdown issues (#27071)

Click to expand commit body
This PR fixes a few issues around shutting down a debug adapter.

The first issue I discovered was when I shut down all sessions via
`shutdown all adapters` command. We would still fetch the threads
request again, because we receive a thread event that indicated that it
exited. But this will always time out because the debug adapter is
already shutdown at this point, so by updating the check so we don't
allow fetching a request when the session is terminated fixes the issue.

The second issue fixes a bug where we would always shut down the parent
session, when a child session is terminated. This was reintroduced by
the big refactor. This is not something we want, because you could
receive multiple StartDebugging reverse requests, so if one child is
shutting down that does not mean the other ones should have been
shutting down as well.
Issue was original fixed in
https://github.com/RemcoSmitsDev/zed/pull/80#issuecomment-2573943661.


## TODO:
- [x] Add tests

Release Notes:

- N/A

Remco Smits created

7b80cd8 Show more possible matches in code context completion (#27199)

Click to expand commit body
Closes #24794

We now don't filter matches provided by the fuzzy matcher, as it already
performs most of the filtering for us. Instead, the custom logic we
previously used for filtering is now used to partition, where before
discarded matches will be appended at end of list.

Before - Filtering out matches with higher fuzzy score
<img width="400" alt="image"
src="https://github.com/user-attachments/assets/7f9d66a2-0921-499c-af8a-f1e530da50b1"
/>

After - Changing filter to partition instead, and appending remaining
items at the end
<img width="400" alt="image"
src="https://github.com/user-attachments/assets/45848f70-ed51-4935-976c-6c16c5b5777b"
/>


Release Notes:

- Improved LSP auto complete to show more possible matches.

---------

Co-authored-by: Peter Tripp <petertripp@gmail.com>

Smit Barmase and Peter Tripp created

7931b1d Pre-fill body of email with system specs (#27210)

Click to expand commit body
I think we still want to be able to easily capture system spec info from
users. They can decide if they want to include it or not.

Release Notes:

- N/A

Joseph T. Lyons created

27ebedf gpui: Make `App::get_name` return an `Option` (#27209)

Click to expand commit body
This PR makes `App::get_name` return an `Option` instead of panicking if
the name is not set.

We'll let the caller be responsible for dealing with the absence of a
name.

Release Notes:

- N/A

Marshall Bowers created

f9f5126 assistant2: Uniquely identify context server entries in configuration view (#27207)

Click to expand commit body
This PR gives each context server entry in the configuration view a
unique element ID.

This fixes some issues where the disclosures and switches weren't
working properly due to element ID collisions.

Release Notes:

- N/A

Marshall Bowers created

6408ae8 assistant2: Return no-edits response to architect model (#27200)

Click to expand commit body
Sometimes the editor model returns no search/replace blocks. This
usually happens when the architect model calls the edit tool before
reading any files. When this happens, we'll now return the raw response
from the editor model to the architect model so it can recover
accordingly.

Release Notes:

- N/A

Agus Zubiaga created

c60a703 context_server: Interpret context server command paths relative to the extension's work dir (#27201)

Click to expand commit body
This PR fixes an issues where the commands returned from context server
extensions were being used as-is instead of interpreting them relative
to the extension's work dir.

Release Notes:

- Fixed an issue with context server paths not being interpreted
relative to the extension's work dir.

---------

Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Co-authored-by: Thomas Mickley-Doyle <tmickleydoyle@gmail.com>

Marshall Bowers , Max Brunsfeld , and Thomas Mickley-Doyle created

7feb50f Add UI feedback for checkpoint restoration (#27203)

Click to expand commit body
Release Notes:

- N/A

Co-authored-by: Agus Zubiaga <hi@aguz.me>
Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>

Antonio Scandurra , Agus Zubiaga , and Bennet Bo Fenner created

f365b80 Avoid polluting branch list and restore parent commit when using checkpoints (#27191)

Click to expand commit body
Release Notes:

- N/A

Antonio Scandurra created

d0641a3 Rework feedback modal (#27186)

Click to expand commit body
After our last community sync, we came to the conclusion that feedback
being sent outside of email is difficult to reply to. Our decision was
to use the old, tried and true email system, so that we can better
respond to people asking questions.

<img width="392" alt="SCR-20250320-igub"
src="https://github.com/user-attachments/assets/f1d01771-30eb-4b6f-b031-c68ddaac5700"
/>

Release Notes:

- N/A

---------

Co-authored-by: Danilo Leal <daniloleal09@gmail.com>

Joseph T. Lyons and Danilo Leal created

2e8c0ff assistant edit tool: Report when file is empty or doesn't exist (#27190)

Click to expand commit body
Instead of just reporting a search match failure, we'll now indicate
whether the file is empty or exists to help the model recover better
from bad edits.


Release Notes:

- N/A

Agus Zubiaga created

4421bdd assistant: Dismiss model picker upon selection (#27162)

Click to expand commit body
This PR makes the model picker close when you click on a new item.

Release Notes:

- N/A

Danilo Leal created

aa2fe9c Add additional git-blame-ignore-revs (#27189)

Click to expand commit body
Release Notes:

- N/A

Peter Tripp created

e3578fc Display what the tool is doing (#27120)

Click to expand commit body
<img width="639" alt="Screenshot 2025-03-19 at 4 56 47 PM"
src="https://github.com/user-attachments/assets/b997f04d-4aff-4070-87b1-ffdb61019bd1"
/>

Release Notes:

- N/A

---------

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

Richard Feldman and Agus Zubiaga created

aae81fd Notify about broken task file contents (#27185)

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


https://github.com/user-attachments/assets/df019f68-a76b-4953-967a-a35ed21206ab

Release Notes:

- Added notifications when invalid tasks.json/debug.json is saved

Kirill Bulatov created

de99feb debugger: Ensure both debug and regular global tasks are correctly merged (#27184)

Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/13433
Closes https://github.com/zed-industries/zed/issues/27124
Closes https://github.com/zed-industries/zed/issues/27066

After this change, both old global task source, `tasks.json` and new,
`debug.json` started to call for the same task update method:


https://github.com/zed-industries/zed/blob/14920ab910c6d0208d23ce6b6e2ed644e6f20f2e/crates/project/src/task_inventory.rs#L414

erasing previous declarations.

The PR puts this data under different paths instead and adjusts the code
around it.

Release Notes:

- Fixed custom tasks not shown

Kirill Bulatov created

5bef32f When determining Python task context, do not consider worktree-less files as an error (#27183)

Click to expand commit body
Makes Python plugin to output


![image](https://github.com/user-attachments/assets/4960bc48-21b7-4392-82b9-18bfd1dd9cd0)

for standalone Python files now, instead of nothing as now.

Before the change, no task context was created for the standalone file
due to `VariableName::RelativeFile` lookup considered as an error.
Now, Zed continues and constructs whatever possible context instead.

That `pytest` task seems odd, as the logic fixed here needs a relative
path (hence, a worktree) to consider unit tests.
We do not have variables at the moment the associated tasks are queried
for:


https://github.com/zed-industries/zed/blob/14920ab910c6d0208d23ce6b6e2ed644e6f20f2e/crates/languages/src/python.rs#L359-L363


https://github.com/zed-industries/zed/blob/14920ab910c6d0208d23ce6b6e2ed644e6f20f2e/crates/languages/src/python.rs#L417-L446

so we cannot filter this the same way the PR does.
Maybe, we can use a `VariableName::RelativeFile` instead of
`VariableName::File` there?

Release Notes:

- Show tasks from Python plugin for standalone files

Kirill Bulatov created

23e8519 Add `completion_query_characters` in language (#27175)

Click to expand commit body
Closes #18581

Now characters for completing query and word characters, which are
responsible for selecting words by double clicking or navigating, are
different. This fixes a bunch of things:

For settings.json, this improves completions to treat the whole string
as a completion query, instead of just the last word. We now added
"space" as a completion query character without it being a word
character.

For keymap.json, this improves selecting part of an action as the ":"
character is only a completion character and not a word character. So,
completions would still trigger on ":" and query capture will treat ":"
as a word, but for actions like selections and navigation, ":" will be
treated as punctuation.

Before:
Unnecessary related suggestions as query is only the last word which is
"d".
<img width="300" alt="image"
src="https://github.com/user-attachments/assets/8199a715-7521-49dd-948b-e6aaed04c488"
/>

Double clicking `ToggleFold` selects the whole action:
<img width="300" alt="image"
src="https://github.com/user-attachments/assets/c7f91a6b-06d5-45b6-9d59-61a1b2deda71"
/>

After:
Now query is "one d" and it shows only matched ones.
<img width="300" alt="image"
src="https://github.com/user-attachments/assets/1455dfbc-9906-42e8-b8aa-b3f551194ca2"
/>

Double clicking `ToggleFold` only selects part of the action, which is
more refined behavior.
<img width="300" alt="image"
src="https://github.com/user-attachments/assets/34b1c3c2-184f-402f-9dc8-73030a8c370f"
/>

Release Notes:

- Improved autocomplete suggestions in `settings.json`, now whole string
is queried instead of just last word of string, which filters out lot of
false positives.
- Improved selection of action in `keymap.json`, where now you can
double click to only select certain part of action, instead of selecting
whole action.

---------

Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Co-authored-by: Ben Kunkle <ben@zed.dev>

Smit Barmase , Max Brunsfeld , and Ben Kunkle created

1180b6f Initial support for AI assistant rules files (#27168)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Danilo <danilo@zed.dev>
Co-authored-by: Nathan <nathan@zed.dev>
Co-authored-by: Thomas <thomas@zed.dev>

Michael Sloan , Danilo , Nathan , and Thomas created