f1bd531
Handle pending requests
Click to expand commit body
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Agus Zubiaga and Ben Brandt created
f1bd531
Handle pending requests
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Agus Zubiaga and Ben Brandt created
eec26c9
Add initial docs for editor diagnostics (#33325)
Release Notes: - N/A
Kirill Bulatov created
3c0475d
debugger: Reorder step icons to be consistent with other editors (#33330)
Closes #33303 Release Notes: - debugger: Swap step in/out icon positions in debug panel to be consistent with other editors
Anthony Eid created
fc1fc26
debugger: Generate inline values based on debugger.scm file (#33081)
## Context To support inline values a language will have to implement their own provider trait that walks through tree sitter nodes. This is overly complicated, hard to accurately implement for each language, and lacks proper extension support. This PR switches to a singular inline provider that uses a language's `debugger.scm` query field to capture variables and scopes. The inline provider is able to use this information to generate inlays that take scope into account and work with any language that defines a debugger query file. ### Todos - [x] Implement a utility test function to easily test inline values - [x] Generate inline values based on captures - [x] Reimplement Python, Rust, and Go support - [x] Take scope into account when iterating through variable captures - [x] Add tests for Go inline values - [x] Remove old inline provider code and trait implementations Release Notes: - debugger: Generate inline values based on a language debugger.scm file
Anthony Eid created
800b925
Improve Atom keymap (#33329)
Closes: https://github.com/zed-industries/zed/issues/33256 Move some Editor keymap entries into `Editor && mode == full` Release Notes: - N/A
Peter Tripp created
95cf153
Simulate helix line wrapping (#32763)
In helix the `f`, `F`, `t`, `T`, left and right motions wrap lines. I
added that by default.
Release Notes:
- vim: The `use_multiline_find` setting is replaced by binding to the
correct action in the keymap:
```
"f": ["vim::PushFindForward", { "before": false, "multiline": true }],
"t": ["vim::PushFindForward", { "before": true, "multiline": true }],
"shift-f": ["vim::PushFindBackward", { "after": false, "multiline": true
}],
"shift-t": ["vim::PushFindBackward", { "after": true, "multiline": true
}],
```
- helix: `f`/`t`/`shift-f`/`shift-t`/`h`/`l`/`left`/`right` are now
multiline by default (like helix)
fantacell created
7be57ba
agent: Fix issue with Anthropic thinking models (#33317)
cc @osyvokon We were seeing a bunch of errors in our backend when people were using Claude models with thinking enabled. In the logs we would see > an error occurred while interacting with the Anthropic API: invalid_request_error: messages.x.content.0.type: Expected `thinking` or `redacted_thinking`, but found `text`. When `thinking` is enabled, a final `assistant` message must start with a thinking block (preceeding the lastmost set of `tool_use` and `tool_result` blocks). We recommend you include thinking blocks from previous turns. To avoid this requirement, disable `thinking`. Please consult our documentation at https://docs.anthropic.com/en/docs/build-with-claude/extended-thinking However, this issue did not occur frequently and was not easily reproducible. Turns out it was triggered by us not correctly handling [Redacted Thinking Blocks](https://docs.anthropic.com/en/docs/build-with-claude/extended-thinking#thinking-redaction). I could constantly reproduce this issue by including this magic string: `ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB ` in the request, which forces `claude-3-7-sonnet` to emit redacted thinking blocks (confusingly the magic string does not seem to be working for `claude-sonnet-4`). As soon as we hit a tool call Anthropic would return an error. Thanks to @osyvokon for pointing me in the right direction 😄! Release Notes: - agent: Fixed an issue where Anthropic models would sometimes return an error when thinking was enabled
Bennet Bo Fenner created
39dc4b9
Fix being unable to input a whitespace character in collab channels filter (#33318)
Before, `space` was always causing a channel join. Now it's less fluent, one has to press `ESC` to get the focus out of the filter editor and then `space` starts joining the channel. Release Notes: - Fixed being unable to input a whitespace character in collab channels filter
Kirill Bulatov created
deb2564
gpui: Add keybind metadata API (#33316)
Closes #ISSUE Adds a very simple API to track metadata about keybindings in GPUI, namely the source of the binding. The motivation for this is displaying the source of keybindings in the [keymap UI](https://github.com/zed-industries/zed/pull/32436). The API is designed to be as simple and flexible as possible, storing only a `Option<u32>` on the bindings themselves to keep the struct small. It is intended to be used as an index or key into a table/map created and managed by the consumer of the API to map from indices to arbitrary meta-data. I.e. the consumer is responsible for both generating these indices and giving them meaning. The current usage in Zed is stateless, just a mapping between constants and User, Default, Base, and Vim keymap sources, however, this can be extended in the future to also track _which_ base keymap is being used. Release Notes: - N/A *or* Added/Fixed/Improved ...
Ben Kunkle created
13f1344
collab: Require billing address in all Stripe checkouts (#32980)
Summary I've successfully implemented the required billing address collection feature for Stripe Checkout sessions. Here's what was done: ### 1. **Added New Data Structures** (`stripe_client.rs`): - Added `StripeBillingAddressCollection` enum with `Auto` and `Required` variants - Added `billing_address_collection` field to `StripeCreateCheckoutSessionParams` ### 2. **Updated Stripe Client Implementation** (`real_stripe_client.rs`): - Added conversion from `StripeBillingAddressCollection` to Stripe's `CheckoutSessionBillingAddressCollection` - Updated the `TryFrom` implementation to map the billing address collection field when creating checkout sessions - Added the necessary import ### 3. **Updated Billing Service** (`stripe_billing.rs`): - Set `billing_address_collection` to `Required` in both `checkout_with_zed_pro()` and `checkout_with_zed_pro_trial()` methods - Added the necessary import ### 4. **Updated Test Infrastructure** (`fake_stripe_client.rs`): - Added `billing_address_collection` field to `StripeCreateCheckoutSessionCall` - Updated the `create_checkout_session` implementation to capture the new field - Added the necessary import ### 5. **Updated Tests** (`stripe_billing_tests.rs`): - Added assertions to verify that `billing_address_collection` is set to `Required` in all three test cases: - `test_checkout_with_zed_pro` - `test_checkout_with_zed_pro_trial` (regular trial) - `test_checkout_with_zed_pro_trial` (extended trial) - Added the necessary import The implementation follows the pattern established in the codebase and ensures that whenever a Stripe Checkout session is created for Zed Pro subscriptions (both regular and trial), the billing address will be required from customers. This aligns with the Stripe documentation you provided, which shows that setting `billing_address_collection=required` will ensure the billing address is always collected during checkout. Release Notes: - N/A Co-authored-by: Marshall Bowers <git@maxdeviant.com>
morgankrey and Marshall Bowers created
94735ae
Add support for Vercel as a language model provider (#33292)
Vercel v0 is an OpenAI-compatible model, so this is mostly a dupe of the OpenAI provider files with some adaptations for v0, including going ahead and using the custom endpoint for the API URL field. Release Notes: - Added support for Vercel as a language model provider.
Danilo Leal created
549eb4d
wip: request / response in send loop
Co-authored-by: Antonio Scandurra <me@as-cii.com> Co-authored-by: Agus Zubiaga <agus@zed.dev>
Ben Brandt , Antonio Scandurra , and Agus Zubiaga created
0d70bcb
agent: Allow to force uninstall extension if it provides more than the MCP server (#33279)
Danilo Leal created
c1e53b7
wip: test
Co-authored-by: Antonio Scandurra <me@as-cii.com>
Ben Brandt and Antonio Scandurra created
ec376e0
Sketch out new Agent traits
Co-authored-by: Antonio Scandurra <me@as-cii.com>
Ben Brandt and Antonio Scandurra created
360d73c
Implement save functionality for diff view (#33298)
Add `can_save` and `save` methods to `DiffView`, enabling users to save changes made within the diff view. Release Notes: - Allow saving changes in the `zed --diff` view
Ben Brandt created
668d5ee
Add horizontal scroll to REPL outputs (#33247)
Release Notes: - Made the horizontal outputs scrollable in REPL
Stanislav Alekseev created
4cd4d28
Move UI code from assistant_context_editor -> agent_ui (#33289)
This breaks a transitive dependency of `agent` on UI crates. I've also found and eliminated some dead code in assistant_context_editor. Release Notes: - N/A
Max Brunsfeld created
786e724
Fetch and wait for channels when opening channel notes via URL (#33291)
Release Notes: * Collaboration: Now fetches and waits for channels when opening channel notes via URL.
Michael Sloan created
24c94d4
gpui: Simplify `Action` macros + support doc comments in `actions!` (#33263)
Instead of a menagerie of macros for implementing `Action`, now there are just two: * `actions!(editor, [MoveLeft, MoveRight])` * `#[derive(..., Action)]` with `#[action(namespace = editor)]` In both contexts, `///` doc comments can be provided and will be used in `JsonSchema`. In both contexts, parameters can provided in `#[action(...)]`: - `namespace = some_namespace` sets the namespace. In Zed this is required. - `name = "ActionName"` overrides the action's name. This must not contain "::". - `no_json` causes the `build` method to always error and `action_json_schema` to return `None` and allows actions not implement `serde::Serialize` and `schemars::JsonSchema`. - `no_register` skips registering the action. This is useful for implementing the `Action` trait while not supporting invocation by name or JSON deserialization. - `deprecated_aliases = ["editor::SomeAction"]` specifies deprecated old names for the action. These action names should *not* correspond to any actions that are registered. These old names can then still be used to refer to invoke this action. In Zed, the keymap JSON schema will accept these old names and provide warnings. - `deprecated = "Message about why this action is deprecation"` specifies a deprecation message. In Zed, the keymap JSON schema will cause this to be displayed as a warning. This is a new feature. Also makes the following changes since this seems like a good time to make breaking changes: * In `zed.rs` tests adds a test with an explicit list of namespaces. The rationale for this is that there is otherwise no checking of `namespace = ...` attributes. * `Action::debug_name` renamed to `name_for_type`, since its only difference with `name` was that it * `Action::name` now returns `&'static str` instead of `&str` to match the return of `name_for_type`. This makes the action trait more limited, but the code was already assuming that `name_for_type` is the same as `name`, and it requires `&'static`. So really this just makes the trait harder to misuse. * Various action reflection methods now use `&'static str` instead of `SharedString`. Release Notes: - N/A
Michael Sloan created
21f985a
Stop showing diagnostics in the diff-related editors (#33285)
<img width="1728" alt="image" src="https://github.com/user-attachments/assets/a63925a7-8e13-4d48-bd31-33f434209ea6" /> Diagnostics UI elements (underlines, popovers, hovers) are quite noisy by themselves and get even more so with the git background colors. Release Notes: - Stopped showing diagnostics in the diff-related editors
Kirill Bulatov created
2283ec5
Extract an agent_ui crate from agent (#33284)
This PR moves the UI-dependent logic in the `agent` crate into its own crate, `agent_ui`. The remaining `agent` crate no longer depends on `editor`, `picker`, `ui`, `workspace`, etc. This has compile time benefits, but the main motivation is to isolate our core agentic logic, so that we can make agents more pluggable/configurable. Release Notes: - N/A
Max Brunsfeld created
371b735
Add icon for Cairo files (#33268)
Discussion: https://github.com/zed-industries/zed/discussions/33270 Release Notes: - Add file icon for the Cairo programming language. --------- Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
okhai and Danilo Leal created
95f10fd
Add ability to clone item when using `workspace::MoveItemToPane` (#32895)
This PR adds an optional `clone: bool` argument to `workspace::MoveItemToPane` and `workspace::MoveItemToPaneInDirection` which causes the item to be cloned into the destination pane rather than moved. It provides similar functionality to `workbench.action.splitEditorToRightGroup` in vscode. This PR supercedes #25030. Closes #24889 Release Notes: - Add optional `clone: bool` (default: `false`) to `workspace::MoveItemToPane` and `workspace::MoveItemToPaneInDirection` which causes the item to be cloned into the destination pane rather than moved.
Carl Sverre created
324cbec
agent: Improve MCP with no config editor empty state (#33282)
Removed an additional label from the modal empty state as I figured we don't need it, given we already have a version of the description in place for when the extension itself doesn't return any. So, ultimately, having both the label and the description was redundant. Release Notes: - N/A
Danilo Leal created
32df925
notification: Add built-in dismiss button in the Status Toast component (#33278)
There may be cases where we're needing to pass a button just so it is dismissible, so I figured this out help! It also helps when you want to have two buttons, one to perform an action and another to dismiss and cancel. Release Notes: - N/A
Danilo Leal created
36eebb7
Fix race condition between auto-indent and on-type-formatting (#32005)
This PR addresses to fix (#31308) a race condition where auto-indent (in buffer.cs) and on-type-formatting (in lsp_store.rs) concurrently calculate indentation using the same buffer snapshot. Previous Solution (Abandoned): https://github.com/zed-industries/zed/pull/31340 Final Solution: Delay applying on-type-formatting until auto-indent is complete. Issue: If AutoindentMode finishes first, formatting works correctly. If "Formatting on typing" starts before AutoindentMode completes, it results in double indentation. Closes #31308 Release Notes: - Fixed a race condition resulting in incorrect buffer contents when combining auto-indent and on-type-formatting
Maxim created
d34d4f2
debugger: Kill debug sessions on app quit (#33273)
Before this PR force quitting Zed would leave hanging debug adapter processes and not allow debug adapters to clean up their sessions properly. This PR fixes this problem by sending a disconnect/terminate to all debug adapters and force shutting down their processes after they respond. Co-authored-by: Cole Miller \<cole@zed.dev\> Release Notes: - debugger: Shutdown and clean up debug processes when force quitting Zed --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com> Co-authored-by: Remco Smits <djsmits12@gmail.com>
Anthony Eid , Conrad Irwin , and Remco Smits created
c610ebf
Thread Anthropic errors into LanguageModelKnownError (#33261)
This PR is in preparation for doing automatic retries for certain errors, e.g. Overloaded. It doesn't change behavior yet (aside from some granularity of error messages shown to the user), but rather mostly changes some error handling to be exhaustive enum matches instead of `anyhow` downcasts, and leaves some comments for where the behavior change will be in a future PR. Release Notes: - N/A
Richard Feldman created
aabfea4
debugger: Document workaround for debugging Swift (#33269)
Release Notes: - N/A
Cole Miller created
51059b6
agent: Rename the delete menu item in the MCP section (#33265)
From "Delete" to "Uninstall" for clarity. Release Notes: - N/A
Danilo Leal created
6b0325b
debugger: Document some troubleshooting tools (#33047)
Release Notes: - N/A
Cole Miller created
c9bd409
debugger: Support passing custom arguments to debug adapters (#33251)
Custom arguments replace any arguments that we normally pass to the DAP. For interpreted languages, they are passed to the interpreter after the DAP path or module. They can be combined with a custom binary, or you can omit `dap.binary` and just customize the arguments to the DAPs we download. This doesn't take care of updating the extension API to support custom arguments. Release Notes: - debugger: Implemented support for passing custom arguments to a debug adapter binary using the `dap.args` setting. - debugger: Fixed not being able to use the `dap` setting in `.zed/settings.json`.
Cole Miller created
a067c16
windows: Use drop target helper (#33203)
It now utilises the [`IDropTargetHelper`](https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nn-shobjidl_core-idroptargethelper) in drag and drop events to render the proper item drop cursor icon which includes the thumbnail when available and action text. Also swaps the drop effect from `DROPEFFECT_LINK` to `DROPEFFECT_COPY` to match other Windows application behaviour. Example of drop icon  Release Notes: - N/A --------- Co-authored-by: 张小白 <364772080@qq.com>
Matin Aniss and 张小白 created
1a6c1b2
windows: Fix window close animation (#33228)
Implements a workaround which removes the `WS_EX_LAYERED` style from the window right before closing it which seems to fix the window close animation not playing. Release Notes: - N/A
Matin Aniss created
8718019
file finder: Ensure filter options keybinding is displayed (#33244)
Follow up to https://github.com/zed-industries/zed/pull/31777. I could've sworn the filter options keybinding was being displayed in the icon button tooltip, but just realized it actually wasn't. So, this PR fixes that! Release Notes: - N/A
Danilo Leal created
a32505f
agent: Fix token limit callout to show burn mode only for zed provider (#33096)
The token limit reached callout was shown for all the providers and it included the burn mode toggle and description. I have made that conditional to only show for zed provider. Before this changes <img width="413" alt="image" src="https://github.com/user-attachments/assets/b7e177fc-d2e6-4942-8934-39ac8c844649" /> After this change: <img width="404" alt="image" src="https://github.com/user-attachments/assets/0e091b99-c8e3-4960-8b4d-47170883d224" /> Release Notes: - agent: Fix token limit callout to show burn mode only for zed provider --------- Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Umesh Yadav and Danilo Leal created
980917b
agent: Preserve chat box text on 'New From Summary' (#33220)
CC: @danilo-leal Do you have thoughts on this? I found myself typing chat messages after a long thread and then deciding I would be better served by restarting from a summary -- and then "poof" the contents of my chat box was lost. Release Notes: - agent: "New From Summary" now preserves any unsent content in the chat box.
Peter Tripp created
bd8471b
agent: Add soft-wrap to long terminal command JSON (#33188)
Closes: https://github.com/zed-industries/zed/issues/33179 | Before | After | | - | - | | <img width="341" alt="Screenshot 2025-06-21 at 23 06 01" src="https://github.com/user-attachments/assets/963a3663-b24f-4946-8b48-2c1222cdef2e" /> | <img width="424" alt="Screenshot 2025-06-21 at 23 08 13" src="https://github.com/user-attachments/assets/51051221-fda2-48af-ae42-a04989bb4913" /> | Release Notes: - N/A
Peter Tripp created
16f1da1
agent: Fix long previous user message double scroll (#33056)
Previously, if editing a long previous user message in the thread, you'd have a double scroll situation because the editor used in that case had its max number of lines capped. To solve that, I made the `max_lines` in the editor `AutoHeight` mode optional, allowing me to not pass any arbitrary number to the previous user message editor, and ultimately, solving the double scroll problem by not having any scroll at all. Release Notes: - agent: Fixed double scroll that happened when editing a long previous user message. @ConradIrwin adding you as a reviewer as I'm touching editor code here... want to be careful. :)
Danilo Leal created
272fc67
windows: Dialog QoL improvements (#33241)
Just like in the previous PR #33230, we need to properly set up modal windows to make them work as expected. Before this PR, when you opened an "Open File" or "Save File" dialog, clicking the main window would steal focus from the modal, even though the main window wasn’t actually interactive. With this PR, clicking the main window while a modal is open does nothing — as it should — until the modal is closed. #### Before https://github.com/user-attachments/assets/9c6bdff0-1c46-49c1-a5ff-751c52c7d613 #### After https://github.com/user-attachments/assets/8776bd28-85ff-4f32-8390-bcf5b4eec1fe Release Notes: - N/A
张小白 created
e68b95c
agent: Ensure tool names are unique (#33237)
Closes #31903 Release Notes: - agent: Fix an issue where an error would occur when MCP servers specified tools with the same name --------- Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Bennet Bo Fenner and Ben Brandt created
28f56ad
windows: Avoid setting the mouse cursor while the window is disabled (#33230)
Don’t set the mouse cursor when the window is disabled, it causes issues with modal dialogs. Release Notes: - N/A
张小白 created
7f44e4b
Fix logic for updating `insert_range` on completion resolution (#32523)
I don't have a concrete misbehavior from it, but this update of `insert_range` doesn't make sense for two reasons: * If the resolved completion doesn't have a new `text_edit` it would clear out the `insert_range`. * It doesn't update the completion if it has already been resolved, except this update of `insert_range` happened before that. Guessing it was written this way because this field needed to only be mutated within the `CompletionSource::Lsp` case and this was a convenient match below. Release Notes: - N/A Co-authored-by: Smit <smit@zed.dev>
Michael Sloan and Smit created
e5ad2c2
Add `crates/assistant_tools/src/edit_agent/evals/fixtures` to file_scan_exclusions (#33224)
Follow up to #32211 Release Notes: - N/A
Bennet Bo Fenner created
67ac80b
linux: Fix KeePassXC integration via org.freedesktop.Secrets (#33026)
Closes #29956 Unlike GNOME Keyring, KeePassXC locks individual secrets in addition to the entire database when configured to ask for confirmation for access requests by DBus clients. As such, before the secret is read it should be unlocked by the client. Tested against both KeePassXC and GNOME Keyring, and with this patch Zed successfully logs in and fetches the API keys from the Secret Service. Release Notes: - Fixed KeePassXC integration via org.freedesktop.Secrets
Artem Zhurikhin created
ac30a8b
Improve FreeBSD support (#33162)
This PR contains a set of changes for improving FreeBSD support (#15309, #29550) and is a kind of follow up to the PR #20480 which added an initial support for FreeBSD. A summary of changes is as follows: - Add some more freebsd conditionals which seem missing in the previous PR. - Implement `anonymous_fd()` and `current_path()` functions for FreeBSD. - Improve detection of FreeBSD in telemetry and GPU detection. - Temporarily disable LiveKit/WebRTC support to make build succeed. - Remove support for flatpak since it is Linux-only packaging format. Adding `RUSTFLAGS="-C link-dead-code"` does not seem necessary anymore. It builds fine without the flag. Known issues: - Integrated terminal is painfully laggy and virtually unusable in my environment. This might be specific to my setup. - I cannot input Japanese using IME. When I type characters, they appear on the screen. But when I hit return key, they disappears. Seems the same issue as #15409. My environment is MATE desktop on X11 on FreeBSD 14.2 on Intel Core i5-7260U integrated graphics. P.S. For those who might be interested, a work-in-progress FreeBSD port and binary packages are available at https://github.com/tagattie/FreeBSD-Zed Release Notes: - N/A --------- Co-authored-by: Peter Tripp <peter@zed.dev>
Hiroki Tagato and Peter Tripp created
6b4c607
bedrock: Support Claude 3.7 in APAC (#33068)
In ap-northeast-1 we have access to 3.7 and 4.0 Release Notes: - N/A --------- Co-authored-by: Peter Tripp <peter@zed.dev>
Willem and Peter Tripp created
595f61f
bedrock: Use Claude 3.0 Haiku where Haiku 3.5 is not available (#33214)
Closes: https://github.com/zed-industries/zed/issues/33183 @kuzaxak Can you confirm this works for you? Release Notes: - bedrock: Use Anthropic Haiku 3.0 in AWS regions where Haiku 3.5 is unavailable
Peter Tripp created
1047d8a
bedrock: Add Sonnet 4 to cross-region model list (eu/apac) (#33192)
Closes #31946 Sonnet 4 is [now available](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html) via Bedrock in EU aws regions. Release Notes: - bedrock: Add cross-region usage of Sonnet 4 in EU/APAC AWS regions
Vladimir Kuznichenkov created