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>
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
#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
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.
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.
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
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
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
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
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
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