Commit log

a2fbe82 If file is too big, provide the outline and suggest a follow-up tool (#28158)

Click to expand commit body
<img width="622" alt="Screenshot 2025-04-05 at 5 48 14 PM"
src="https://github.com/user-attachments/assets/24b9c7d4-d3e2-4929-bca8-79db5b4e5748"
/>

Release Notes:

- The `read_files` tool now reads only the symbol outline files above a
certain size, to conserve context window space. Then it suggests that
the agent call `read_files` again with the relevant line ranges it saw
in the outline.

Richard Feldman created

57d8c99 copilot: Create Copilot directory if it does not exist (#28157)

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

Issue:

- Copilot is failing to launch because the copilot directory is missing

<img width="497" alt="image"
src="https://github.com/user-attachments/assets/af35eb66-7e91-4dc6-a862-d1575da33b5b"
/>


<img width="943" alt="image"
src="https://github.com/user-attachments/assets/0b195c8c-52eb-42b9-bf36-40086398cc3f"
/>


Release Notes:

- copilot: Fixed an issue where GitHub Copilot would not install
properly if the directory was not present.

---------

Co-authored-by: Marshall Bowers <git@maxdeviant.com>

Richard Hao and Marshall Bowers created

4182737 Revert "Add a next_mode to vim::Paste instead of hard-coding Normal mode (#27897) (#28162)

Click to expand commit body
This PR reverts #27897, as it is causing a number of Helix-related tests
to fail:

```
     Summary [  84.324s] 1796 tests run: 1793 passed, 3 failed, 0 skipped
        FAIL [   0.434s] vim helix::test::test_delete
        FAIL [   0.562s] vim helix::test::test_delete_character_end_of_buffer
        FAIL [   0.537s] vim helix::test::test_delete_character_end_of_line
```

This reverts commit 9949512b64ab2f472fc3426d853bc9bd0f6d94e2.

Release Notes:

- Community: Reverted https://github.com/zed-industries/zed/pull/27897.

Marshall Bowers created

9949512 Add a next_mode to vim::Paste instead of hard-coding Normal mode (#27897)

Click to expand commit body
This adds a `next_mode` parameter to the `vim::Paste` action. My main
use-case for this is for helix users, who will want to switch into
`HelixNormal` mode instead of `Normal` mode.

I'm not sure if this is the best approach -- another possibility would
be to have a global vim-vs-helix configuration, and then have every
invocation of "normal" mode choose vim or helix based on that global
configuration. But the approach in this PR is much less invasive.

Release Notes:

- vim: switch to the configured default mode after paste instead of
hard-coding Normal mode

jneem created

b9051e6 extension: Bump `wasi-sdk` to version 25 (#27906)

Click to expand commit body
This bumps `wasi-sdk` to version 25 and adds target architecture
conditionals.

Closes #18492

Release Notes:

- Fixed compiling dev extensions with Tree-sitter grammars on Linux
aarch64.

Kamil Jakubus created

adbebb2 assistant: Fix `assistant: open prompt library` not opening the prompt library (#28156)

Click to expand commit body
This PR fixes the `assistant: open prompt library` action in the command
palette not opening the prompt library when the Assistant Panel did not
have focus.

Fixes https://github.com/zed-industries/zed/issues/28058.

Release Notes:

- assistant: Fixed `assistant: open prompt library` not opening the
prompt library when the Assistant Panel was not focused.

Marshall Bowers created

caf0d6c agent: Fix opening configuration view from the model selector (#28154)

Click to expand commit body
This PR fixes an issue where opening the configuration view from the
model selector in the Agent (or inline assist) was not working properly.

Fixes https://github.com/zed-industries/zed/issues/28078.

Release Notes:

- Agent Beta: Fixed an issue where selecting "Configure" in the model
selector would not bring up the configuration view.

Marshall Bowers created

525755c bedrock: Add support for tool use, cross-region inference, and Claude 3.7 Thinking (#28137)

Click to expand commit body
Closes #27223
Merges: #27996, #26734, #27949 

Release Notes:

- AWS Bedrock: Added advanced authentication strategies with:
  - Short lived credentials with Session Tokens 
  - AWS Named Profile
  - EC2 Identity, Pod Identity, Web Identity
- AWS Bedrock: Added Claude 3.7 Thinking support.
- AWS Bedrock: Adding Cross Region Inference for all combinations of
regions and model availability.
- Agent Beta: Added support for AWS Bedrock.

---------

Co-authored-by: Marshall Bowers <git@maxdeviant.com>

Shardul Vaidya and Marshall Bowers created

ea0f514 title_bar: Ensure git onboarding banner dismissal is properly respected (#28147)

Click to expand commit body
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.

Finn Evers created

b78ac54 agent: Fix tool use output rendering (#28146)

Click to expand commit body
Tool use output wouldn't get rendered in some states.

Release Notes:

- N/A

Agus Zubiaga created

2462b94 agent: Add missing notify in `ThreadHistory::delete_thread` (#28144)

Click to expand commit body
This would cause the history view not to get refreshed immediately when
a thread was deleted

Release Notes:

- agent: Fixed a bug where the history view wouldn't refresh after
deleting a thread

Agus Zubiaga created

ec7d286 agent: Fix thread summary generation (#28143)

Click to expand commit body
#28102 introduced a bug where thread summaries wouldn't get generated
because they would get set to the default title instead of `None`.

Not adding a release note because the bug didn't make it to Preview.

Release Notes:

- N/A

Agus Zubiaga created

c1259c1 Revert "Use scap library to implement screensharing on X11 (#27807)" (#28141)

Click to expand commit body
This reverts commit c2afc2271b1dd420f482217cb0fa9dafcd17aab6.

Build on ARM if failing, likely because `c_char` is `u8` on arm and `i8`
on x86:

```
error[E0308]: mismatched types
   --> /home/runner/.cargo/git/checkouts/scap-40ad33e1dd47aaea/5715067/src/targets/linux/mod.rs:75:74
    |
75  |     let result = unsafe { XmbTextPropertyToTextList(display, &mut xname, &mut list, &mut count) };
    |                           -------------------------                      ^^^^^^^^^ expected `*mut *mut *mut u8`, found `&mut *mut *mut i8`
    |                           |
    |                           arguments to this function are incorrect
    |
    = note:    expected raw pointer `*mut *mut *mut u8`
            found mutable reference `&mut *mut *mut i8`
note: function defined here
   --> /home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/x11-2.21.0/src/xlib.rs:552:10
    |
552 |   pub fn XmbTextPropertyToTextList (_4: *mut Display, _3: *const XTextProperty, _2: *mut *mut *mut c_char, _1: *mut c_int) -> c_int,
    |          ^^^^^^^^^^^^^^^^^^^^^^^^^
```

Release Notes:

- N/A

Michael Sloan created

6ddad64 Add actions for calls (#28048)

Click to expand commit body
Add the following actions for use while calling: `Mute`, `Deafen`,
`ShareProject`, `ScreenShare`, `LeaveCall`

We were also interested in adding push-to-talk functionality for mute,
but that will go in a followup PR

Release Notes:

- Call actions (mute/screenshare/etc.) can now be bound to keys and run from the command palette.

---------

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

Julia Ryan , Ben Kunkle , and Ben Kunkle created

69d7ea7 buffer: Fix broken auto indent when pasting code starting with new line (#28134)

Click to expand commit body
Closes #26907

Currently, in case of new line to find delta, it is comparing old first
line indent with new second line indent. This results into incorrect
indentation. This PR fixes this delta calculation by passing correct
second line indent in that particular case.

- [X] Add Test

Before:


https://github.com/user-attachments/assets/065deba0-be19-4643-a784-d248a8e7c891

After:


https://github.com/user-attachments/assets/a0037043-4bd8-460f-b8ba-b7da7bdbe1ea

Release Notes:

- Fixed issue where pasting code starting with new line resulted
incorrect auto indent.

Smit Barmase created

d0e82b0 Introduce "Near" block type (#28032)

Click to expand commit body
A "Near" block acts similarly to a "Below" block, but can (if it's
height is <= one line height) be shown on the end of the preceding line
instead of adding an entire blank line to the editor.

You can test it out by pasting this into `go_to_diagnostic_impl` and
then press `F8`
```
        let buffer = self.buffer.read(cx).snapshot(cx);
        let selection = self.selections.newest_anchor();

        self.display_map.update(cx, |display_map, cx| {
            display_map.insert_blocks(
                [BlockProperties {
                    placement: BlockPlacement::Near(selection.start),
                    height: Some(1),
                    style: BlockStyle::Flex,
                    render: Arc::new(|_| {
                        div()
                            .w(px(100.))
                            .h(px(16.))
                            .bg(gpui::hsla(0., 0., 1., 0.5))
                            .into_any_element()
                    }),
                    priority: 0,
                }],
                cx,
            )
        });
        return;
```

Release Notes:

- N/A

---------

Co-authored-by: Antonio Scandurra <me@as-cii.com>

Conrad Irwin and Antonio Scandurra created

10821aa file_finder: Fix filename matching to require contiguous characters (#28093)

Click to expand commit body
Improves https://github.com/zed-industries/zed/pull/27937 to only
prioritize file name if it's contiguous character match.

Release Notes:

- N/A

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

Smit Barmase and Conrad Irwin created

03aadb4 telemetry_events: Rename `AssistantEvent` to `AssistantEventData` (#28133)

Click to expand commit body
This PR renames the `AssistantEvent` type to `AssistantEventData`, as it
no longer represents the event itself, just the data needed to construct
it.

Pulling out of https://github.com/zed-industries/zed/pull/25179.

Release Notes:

- N/A

Marshall Bowers created

8ab252c Split protobufs into separate files (#28130)

Click to expand commit body
The one big protobuf file was getting a bit difficult to navigate. I
split it into separate topic-specific files that import each other.

Release Notes:

- N/A

Max Brunsfeld created

e74af03 Restore direct use of the input text for Markdown `Text` (#27620)

Click to expand commit body
PR #24388 changed the markdown parsing to copy parsed text in order to
handle markdown escaping, removing the optimization to instead reuse
text from the input.

Another issue with that change was that handling of finding links within
`Text` intermixed use of `text` and `parsed`, relying on the offsets
matching up (which I believe was true in practice).

The solution is to distinguish pulldown_cmark `Text` nodes that share
bytes with the input and those that do not.

Release Notes:

- N/A

Michael Sloan created

4bcd37a agent: Fix panic when opening Agent diff from the workspace (#28132)

Click to expand commit body
This PR fixes a panic that could occur when opening the Agent diff from
the workspace (with the agent panel closed).

Release Notes:

- agent: Fixed a panic when running the `agent: open agent diff` command
with the Agent Panel closed.

Marshall Bowers created

e3d212a debugger_ui: Don't `.unwrap` debug panel access (#28131)

Click to expand commit body
This PR removes replaces the `.unwrap`s when accessing the debug panel
with `if let Some`s.

These `.unwrap`s are not locally verifiable, and thus are not safe.

Release Notes:

- N/A

Marshall Bowers created

8b077f0 gpui: Avoid dereferencing null pointer in `MacWindow::update_ime_position` (#28110)

Click to expand commit body
Seems to be very similar to
https://github.com/zed-industries/zed/pull/28059

Edit: Updated the reproduction-steps as I missed something.

The method without a check currently causes my debug-builds to crash on
the regular if I:
- Run a debug build and open it fullscreen in a dedicated space on my
Mac.
- Work on any of the built-in languages (e.g. remove some content from
any `highlights.scm`)
- Reopen the workspace with the debug-build.
- Crash.

~~We might actually be able to revert the changes made in
https://github.com/zed-industries/zed/pull/21510 and just add the
null-check. Then again, I am not at all sure whether that would work.­~~
See comment below.

Release Notes:

- N/A

Finn Evers created

288da0f agent: Use Markdown to render tool input and output content (#28127)

Click to expand commit body
Release Notes:

- agent: Tool call's input and output content are now rendered with
Markdown, which allows them to be selected and copied.

---------

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

Danilo Leal and Agus Zubiaga created

b8d05bb agent: Hide the scrollbar if there's no mouse movement (#28129)

Click to expand commit body
Release Notes:

- agent: The scrollbar now automatically hides if there's no mouse
movement on the thread list.

---------

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

Danilo Leal , Agus Zubiaga , and Agus Zubiaga created

02e4267 Add tool calling support for GitHub Copilot Chat (#28035)

Click to expand commit body
This PR adds tool calling support for GitHub Copilot Chat models.

Currently only supports the Claude family of models.

Release Notes:

- agent: Added tool calling support for Claude models in GitHub Copilot
Chat.

---------

Co-authored-by: Marshall Bowers <git@maxdeviant.com>

Bennet Bo Fenner and Marshall Bowers created

c2afc22 Use scap library to implement screensharing on X11 (#27807)

Click to expand commit body
While `scap` does have support for Wayland and Windows, but haven't seen
screensharing work properly there yet. So for now just adding support
for X11 screensharing.

WIP branches for enabling wayland and windows support:

* https://github.com/zed-industries/zed/tree/wayland-screenshare
* https://github.com/zed-industries/zed/tree/windows-screenshare


Release Notes:

- Added support for screensharing on X11 (Linux)

---------

Co-authored-by: Conrad <conrad@zed.dev>
Co-authored-by: Mikayla <mikayla@zed.dev>
Co-authored-by: Junkui Zhang <364772080@qq.com>

Michael Sloan , Conrad , Mikayla , and Junkui Zhang created

7bc62de Use consistent ordering for popup menus (#27765)

Click to expand commit body
Before this change, the editor completion menu and gutter menus reversed their order so that the initial selection is near the user's focus.  This change instead displays these menus in a consistent top-to-bottom order because the following benefits outweigh that benefit:

* Matches behavior of some other editors (Neovim and VSCode).
* Looks better for lexicographic lists.
* Keeps the meaning of keyboard interaction consistent, if the user is anticipating the order of the menu's contents.

Could consider making this configurable in the future if desired.

Closes #25066.

Release Notes:

- N/A

Aaron Feickert created

f3adf41 agent: Fix deleting threads in history via keyboard (#28113)

Click to expand commit body
Using `shift-backspace` now because we need `backspace` for search

Release Notes:
- agent: Fix deleting threads in history via keyboard

Agus Zubiaga created

6162d99 Properly query remote ssh server for language servers by name (#28124)

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

Release Notes:

- N/A

Kirill Bulatov created

156dd32 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

2747915 jsx-tag-auto-close: Remove potential source of bugs and panics (#28119)

Click to expand commit body
Switch to using anchors for storing edited ranges rather than offsets as
they have to be used with multiple buffer snapshots

Release Notes:

- N/A

Ben Kunkle created

75b9a3b agent: Disable redundant tools (might delete later) (#28114)

Click to expand commit body
Release Notes:

- agent: Disable tools that are redundant in the presence of the bash
tool

Agus Zubiaga created

9bd3dbc collab: Include more information on some LLM usage log lines (#28116)

Click to expand commit body
This PR updates the `user rate limit` and `user usage` log lines to
include some more information that will be useful for graphing in Axiom.

Release Notes:

- N/A

Marshall Bowers created

435fff9 Flesh out helix bindings (#28103)

Click to expand commit body
This brings in a bunch of helix bindings (many of them from
infogulch/zed-helix-keymap) and implements helix-style delete.

Release Notes:

- vim: Expanded default helix-style keybindings in HelixNormal mode

jneem created

558d61b collab: Adjust rate-limiting measures for Claude 3.7 Sonnet (#28111)

Click to expand commit body
This PR updates the usage measures used for rate limiting when using
Claude 3.7 Sonnet.

Instead of using the combined `tokens_per_minute` measure we now rate
limit individually on `input_tokens_per_minute` (which exclude cache
reads) and `output_tokens_per_minute`.

Release Notes:

- N/A

Marshall Bowers created

02a8ece agent: Fix invalid tool names in batch tool description (#28109)

Click to expand commit body
The description of the Batch Tool was still referring using `-` as a
seperator for tool names

Release Notes:

- N/A

Bennet Bo Fenner created

1a899fd collab: Capture upstream input/output rate limits from Anthropic (#28106)

Click to expand commit body
This PR makes it so we capture the upstream rate limit information from
Anthropic for input and output tokens.

Release Notes:

- N/A

Marshall Bowers created

183f57f collab: Include max input/output tokens per minute on "Language Model Rate Limited" event (#28108)

Click to expand commit body
This PR adds the max input/output tokens per minute on the "Language
Model Rate Limited" event.

Missed this in https://github.com/zed-industries/zed/pull/28097.

Release Notes:

- N/A

Marshall Bowers created

cc9cc12 agent: Remove `edit_files` tool (#28041)

Click to expand commit body
Release Notes:

- agent: Remove `edit_files` tool  in favor of `find_replace`

Agus Zubiaga created

1bc5618 agent: Allow renaming threads (#28102)

Click to expand commit body
Release Notes:

- agent: Add support for renaming threads

---------

Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Co-authored-by: Richard Feldman <oss@rtfeldman.com>

Agus Zubiaga , Danilo Leal , Bennet Bo Fenner , and Richard Feldman created

ef8fe52 Try adding beta token-efficient tool use for 3.7 Sonnet (#28100)

Click to expand commit body
Release Notes:

- Enabled [token-efficient tool use
(beta)](https://docs.anthropic.com/en/docs/build-with-claude/tool-use/token-efficient-tool-use)
for Claude 3.7 Sonnet models

Richard Feldman created

9821963 Fix `script/zed-local` on non-Windows platforms (#28098)

Click to expand commit body
This PR fixes the `script/zed-local` script, which was no longer working
properly after https://github.com/zed-industries/zed/pull/23117.

Release Notes:

- N/A

Marshall Bowers created

cfe5620 docs: Adjust assistant configuration docs table of contents (#28099)

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

The "Feature-specific models" was under the LM Studio section, which was
incorrect.

Release Notes:

- N/A

Danilo Leal created

5fe86f7 collab: Track input and output tokens per minute separately (#28097)

Click to expand commit body
This PR adds tracking for input and output tokens per minute separately
from the current aggregate tokens per minute.

We are not yet rate-limiting based on these measures.

Release Notes:

- N/A

Marshall Bowers created

c94b587 squawk: Specify PostgreSQL version in config (#28094)

Click to expand commit body
This PR adds the PostgreSQL version to the squawk config, see
https://squawkhq.com/docs/cli#specifying-postgres-version for reference.

The specified version matches the PostgreSQL version in the compose-file


https://github.com/zed-industries/zed/blob/43cb925a599ead7ddbeee26efd1f5af1d1dea97a/compose.yml#L3

and prevents false positives like
https://github.com/zed-industries/zed/pull/28090#issuecomment-2778871346
from happening (tested it locally with that commit).

Release Notes:

- N/A

Finn Evers created

43cb925 ai: Separate model settings for each feature (#28088)

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

Allows users to select a specific model for each AI-powered feature:
- Agent panel
- Inline assistant
- Thread summarization
- Commit message generation

If unspecified for a given feature, it will use the `default_model`
setting.

Release Notes:

- Added support for configuring a specific model for each AI-powered
feature

---------

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

Agus Zubiaga , Danilo Leal , and Bennet Bo Fenner created

cf0d1e4 collab: Add granular tokens per minute columns to `models` table (#28090)

Click to expand commit body
This PR adds new granular tokens per minute columns to the `models`
table in preparation for more fine-grained rate limits.

The following columns have been added:

- `max_input_tokens_per_minute`
- `max_output_tokens_per_minute`

These mirror the "Maximum input tokens per minute (ITPM)" and "Maximum
output tokens per minute (OTPM)" [rate limits from
Anthropic](https://docs.anthropic.com/en/api/rate-limits#rate-limits).

Release Notes:

- N/A

Marshall Bowers created

2f5a4f7 tasks: Add spawn option by tag (#25650)

Click to expand commit body
Closes #19497
Fixed conflicts from https://github.com/zed-industries/zed/pull/19498
Added tags to tasks selector

Release Notes:

- Added ability to spawn tasks by tag with key bindings
- Added tags to tasks selector


https://github.com/user-attachments/assets/0eefea21-ec4e-407c-9d4f-2a0a4a0f74df

---------

Co-authored-by: Kirill Bulatov <mail4score@gmail.com>

Artem Evsikov and Kirill Bulatov created

80441f6 gpui: Use NSOperatingSystemVersion provided by cocoa (#28055)

Click to expand commit body
Use the `NSOperatingSystemVersion` struct provided by the cocoa crate
instead of our own. Additionally we can directly use
`isOperatingSystemAtLeastVersion` instead of manually implementing
version comparison logic.

The `isOperatingSystemAtLeastVersion` instance method has been available
since MacOS 10.10, which released a decade ago.

Documentation for `isOperatingSystemAtLeastVersion `:
https://developer.apple.com/documentation/foundation/nsprocessinfo/1414876-isoperatingsystematleastversion

Release Notes:

- N/A

tidely created