db508bb
docs: Remove MSYS2 instructions
Peter Tripp created
db508bb
docs: Remove MSYS2 instructions
Peter Tripp created
515282d
zeta: Add detection of BSD licenses + efficiency improvements + more lenient whitespace handling (#37194)
Closes #36564 Release Notes: - Edit Prediction: Added various BSD licenses to open-source licenses eligible for data collection.
Michael Sloan created
f2c3f3b
settings ui: Start work on creating the initial structure (#36904)
## Goal This PR creates the initial settings ui structure with the primary goal of making a settings UI that is - Comprehensive: All settings are available through the UI - Correct: Easy to understand the underlying JSON file from the UI - Intuitive - Easy to implement per setting so that UI is not a hindrance to future settings changes ### Structure The overall structure is settings layer -> data layer -> ui layer. The settings layer is the pre-existing settings definitions, that implement the `Settings` trait. The data layer is constructed from settings primarily through the `SettingsUi` trait, and it's associated derive macro. The data layer tracks the grouping of the settings, the json path of the settings, and a data representation of how to render the controls for the setting in the UI, that is either a marker value for the component to use (avoiding a dependency on the `ui` crate) or a custom render function. Abstracting the data layer from the ui layer allows crates depending on `settings` to implement their own UI without having to add additional UI dependencies, thus avoiding circular dependencies. In cases where custom UI is desired, and a creating a custom render function in the same crate is infeasible due to circular dependencies, the current solution is to implement a marker for the component in the `settings` crate, and then handle the rendering of that component in `settings_ui`. ### Foundation This PR creates a macro and a trait both called `SettingsUi`. The `SettingsUi` trait is added as a new trait bound on the `Settings` trait, this allows the type system to guarantee that all settings implement UI functionality. The macro is used to derived the trait for most types, and can be modified through attributes for unique cases as well. A derive-macro is used to generate the settings UI trait impl, allowing it the UI generation to be generated from the static information in our code base (`default.json`, Struct/Enum names, field names, `serde` attributes, etc). This allows the UI to be auto-generated for the most part, and ensures consistency across the UI. #### Immediate Follow ups - Add a new `SettingsPath` trait that will be a trait bound on `SettingsUi` and `Settings` - This trait will replace the `Settings::key` value to enable `SettingsUi` to infer the json path of it's derived type - Figure out how to render `Option<T> where T: SettingsUi` correctly - Handle `serde` attributes in the `SettingsUi` proc macro to correctly get json path from a type's field and identity Release Notes: - N/A --------- Co-authored-by: Ben Kunkle <ben@zed.dev>
Anthony Eid and Ben Kunkle created
e9252a7
editor: Context menu aside scrolling (#35985)
Add support for scrolling the contents rendered aside an `editor::code_context_menus::CodeContextMenu` by introducing the `scroll_aside` method. For now this method is only implemented for the `CodeContextMenu::Completions` variant, which will scroll the aside contents for an `editor::code_context_menus::CompletionsMenu` element, as a `ScrollHandle` is added to the aside content that is rendered. In order to be possible to trigger this via keybindings, a new editor action is introduced, `ContextMenuScrollAside`, which accepts a number of lines or pages to scroll the content by. Lastly, the default keymaps for both MacOS and Linux, as well as for Zed's vim mode, are updated to ensure that the following keybindings are supported when a completion menu is open and the completion item's documentation is rendered aside: - `ctrl-e` - `ctrl-y` - `ctrl-d` - `ctrl-u` ### Recording https://github.com/user-attachments/assets/02043763-87ea-46f5-9768-00e907127b69 --- Closes #13194 Release Notes: - Added support for scrolling the documentation panel shown alongside the completion menu in the editor with `cltr-d`, `ctrl-u`, `ctrl-e` and `ctrl-y` --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com> Co-authored-by: MrSubidubi <finn@zed.dev>
Dino , Conrad Irwin , and MrSubidubi created
fcc3d10
supermaven: Improve completion caching and position validation (#37047)
Closes #36981 - Add completion text and position caching to reduce redundant API calls - Only trigger new completion requests on text changes, not cursor movement - Validate cursor position to ensure completions show at correct location - Improve end-of-line range calculation for more accurate deletions - Extract reset_completion_cache helper for cleaner code organization - Update completion diff algorithm documentation for clarity Edit: Sorry this is the 2nd PR, I forgot that the forks history was messy; I cherrypicked and cleaned it properly with this PR Release Notes: - supermaven: Improved caching of predictions - supermaven: Fixed an issue where changing cursor position would incorrectly trigger new completions
Raphael Lüthy created
a790e51
Fix ACP permission request with new tool calls (#37182)
Release Notes: - Gemini integration: Fixed a bug with permission requests when `always_allow_tool_calls` is enabled
Agus Zubiaga created
92f739d
acp: Improve error reporting and log more information when failing to launch gemini (#37178)
In the case where we fail to create an ACP connection to Gemini, only report the "unsupported version" error if the version for the found binary is at least our minimum version. That means we'll surface the real error in this situation. This also fixes incorrect sorting of downloaded Gemini versions--as @kpe pointed out we were effectively using the version string as a key. Now we'll correctly use the parsed semver::Version instead. Release Notes: - N/A
Cole Miller created
3d4f917
Make project symbols picker entry consistent with outline picker (#37176)
Closes https://github.com/zed-industries/zed/issues/36383 The project symbols modal didn't use the buffer font and highlighted matches through modifying the font weight, which is inconsistent with the outline picker, which presents code in list items in a similar way, as well as project _and_ buffer search highlighting design. Release Notes: - N/A
Danilo Leal created
a138817
editor: APCA contrast (#37165)
Closes #35787 Closes #17890 Closes #28789 Closes #36495 How it works: For highlights (and selections) within the visible rows of the editor, we split them row by row. This is efficient since the number of visible rows is constant. For each row, all highlights and selections, which may overlap, are flattened using a line sweep. This produces non-overlapping consecutive segments for each row, each with a blended background color. Next, for each row, we split text runs into smaller runs to adjust its color using APCA contrast. Since both text runs and segment are non-overlapping and consecutive, we can use two-pointer on them to do this. For example, a text run for the variable red might be split into two runs if a highlight partially covers it. As a result, one part may appear as red, while the other appears as a lighter red, depending on the background behind it. Result: <img width="1458" height="949" alt="image" src="https://github.com/user-attachments/assets/4814c93d-12e7-4b4d-8542-d912acccfb8e" /> <img width="1459" height="952" alt="image" src="https://github.com/user-attachments/assets/9e497b6c-3e66-43e8-8e5b-f634dd5ee8d3" /> <img width="1457" height="621" alt="image" src="https://github.com/user-attachments/assets/8dfa6ce5-f46b-45b9-8008-66169d5aecd4" /> Release Notes: - Improved text contrast when selected or highlighted in the editor.
Smit Barmase created
11fb57a
acp: Use the custom claude installation to perform login (#37169)
Release Notes: - N/A --------- Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de> Co-authored-by: Agus Zubiaga <agus@zed.dev> Co-authored-by: Nathan Sobo <nathan@zed.dev> Co-authored-by: Cole Miller <cole@zed.dev> Co-authored-by: morgankrey <morgan@zed.dev>
Antonio Scandurra , Bennet Bo Fenner , Agus Zubiaga , Nathan Sobo , Cole Miller , and morgankrey created
5001c03
Properly process files that cannot be open for a reason (#37170)
Follow-up of https://github.com/zed-industries/zed/pull/36764
* Fix `anyhow!({e})` conversion lossing Collab error codes context when
opening a buffer remotely
* Use this context to only allow opening files that had not specific
Collab error code
Release Notes:
- N/A
Kirill Bulatov created
20d32d1
Update lsp-types to properly handle brackets (#37166)
Closes #21062 See also this pull request: https://github.com/zed-industries/lsp-types/pull/6. Release Notes: - Fixed incorrect URL encoding of file paths with `[` `]` in them
Wouter Kayser created
ff035e8
agent: Add CC item in the settings view (#37164)
Release Notes: - N/A
Danilo Leal created
01266d1
Do not send any LSP logs by default to collab clients (#37163)
Follow-up https://github.com/zed-industries/zed/pull/37083 Noisy RPC LSP logs were functioning this way already, but to keep Collab loaded even less, do not send any kind of logs to the client if the client has a corresponding log tab not opened. This change is pretty raw and does not fully cover scenarious with multiple clients: if one client has a log tab open and another opens tab with another kind of log, the 2nd kind of logs will be streamed only. Also, it should be possible to forward the host logs to the client on enabling — that is not done to keep the change smaller. Release Notes: - N/A
Kirill Bulatov created
4507f60
languages: Fix python activation scripts not being quoted (#37159)
Release Notes: - N/A
Lukas Wirth created
d13ba01
Require authorization for MCP tools (#37155)
Release Notes: - Fixed a regression that caused MCP tools to run without requesting authorization first.
Antonio Scandurra created
7403a4b
Add basic PyEnv and pixi support for python environments (#37156)
cc https://github.com/zed-industries/zed/issues/29807 Release Notes: - Fixed terminals and tasks not respecting python pyenv and pixi environments
Lukas Wirth created
52da72d
acp: Install new versions of agent binaries in the background (#37141)
Release Notes: - acp: New releases of external agents are now installed in the background. Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Cole Miller and Conrad Irwin created
384ffb8
Fix method documentation (#37140)
Release Notes: - N/A
Mikayla Maki created
c3ccdc0
Add a setting to control the number of context lines in excerpts (#37138)
Fixes https://github.com/zed-industries/zed/discussions/28739 Release Notes: - Added a setting, `excerpt_context_lines`, for setting the number of context lines shown in a multibuffer
Mikayla Maki created
e5cea54
acp: Load agent panel even if serialized config is bogus (#37134)
Closes #ISSUE Release Notes: - N/A
Conrad Irwin created
cfd56a7
zeta: Show update required notification on appropriate window(s) (#37130)
To show these notifications, Zeta was being initialized with the initial workspace it's used on - which may not even still exist! This removes a confusing/misleading workspace field from Zeta. Release Notes: - N/A
Michael Sloan created
960d9ce
Disable Expert language server by default for Elixir (#37126)
This PR updates the language server configuration for Elixir and HEEx to not start the [Expert](https://github.com/elixir-lang/expert) language server by default. While Expert is the official Elixir language server, it is still early, so we don't want to make it the default just yet. Release Notes: - Updated the default Elixir and HEEx language server settings to not start the Expert language server.
Marshall Bowers created
52d119b
docs: Add Expert to Elixir docs (#37127)
This PR adds documentation for [Expert](https://github.com/elixir-lang/expert) to the Elixir docs. Also updated the examples for the other language servers to be representative of all the supported language servers. Release Notes: - N/A
Marshall Bowers created
8c18f05
Always enable acp accept/reject buttons for now (#37121)
We have a bug in our ACP implementation where sometimes the Accept/Reject buttons are disabled (and stay disabled even after the thread has finished). I haven't found a complete fix for this yet, so in the meantime I'm putting out the fire by making it so those buttons are always enabled. That way you're never blocked, and the only consequence of the bug is that sometimes they should be disabled but are enabled instead. Release Notes: - N/A
Richard Feldman created
930189e
acp: Support automatic installation of Claude Code (#37120)
Release Notes: - N/A
Cole Miller created
08c23c9
acp: Bump to 0.1.1 (#37119)
No big changes, just tracking the latest version after the official release Release Notes: - N/A
Ben Brandt created
88e8f7a
Activate preview for initially selected item (#37112)
@JosephTLyons pointed out that it's a bit weird that we only show a preview for items selected after the initial one, so this does it for that too. It makes tab switching feel even faster! Release Notes: - N/A Co-authored-by: David Kleingeld <davidsk@zed.dev>
Julia Ryan and David Kleingeld created
f2e62c9
docs: Fix broken link in `agent-panel.md` (#37113)
This fixes a small typo I stumbled upon, which caused a 404 within the docs. Release Notes: - N/A
Finn Evers created
8697b91
acp: Automatically install gemini under Zed's data dir (#37054)
Closes: https://github.com/zed-industries/zed/issues/37089
Instead of looking for the gemini command on `$PATH`, by default we'll
install our own copy on demand under our data dir, as we already do for
language servers and debug adapters. This also means we can handle
keeping the binary up to date instead of prompting the user to upgrade.
Notes:
- The download is only triggered if you open a new Gemini thread
- Custom commands from `agent_servers.gemini` in settings are respected
as before
- A new `agent_servers.gemini.ignore_system_version` setting is added,
similar to the existing settings for language servers. It's `true` by
default, and setting it to `false` disables the automatic download and
makes Zed search `$PATH` as before.
- If `agent_servers.gemini.ignore_system_version` is `false` and no
binary is found on `$PATH`, we'll fall back to automatic installation.
If it's `false` and a binary is found, but the version is older than
v0.2.1, we'll show an error.
Release Notes:
- acp: By default, Zed will now download and use a private copy of the
Gemini CLI binary, instead of searching your `$PATH`. To make Zed search
your `$PATH` for Gemini CLI before attempting to download it, use the
following setting:
```
{
"agent_servers": {
"gemini": {
"ignore_system_version": false
}
}
}
```
Cole Miller created
47aaaa8
Make `SanitizedPath` wrap `Path` instead of `Arc<Path>` to avoid allocation (#37106)
Release Notes: - N/A
Michael Sloan created
69933d5
Add support for Claude Code auth (#37103)
Co-authored-by: Antonio Scandurra <me@as-cii.com> Closes #ISSUE Release Notes: - N/A Co-authored-by: Antonio Scandurra <me@as-cii.com>
Conrad Irwin and Antonio Scandurra created
909d721
Update patch and nightly release docs (#37109)
Release Notes: - N/A
Joseph T. Lyons created
27777d4
Have ACP respect always_allow_tool_actions (#37104)
Release Notes: - ACP agents now respect the always_allow_tool_actions setting
Richard Feldman created
4469b14
collab_ui: Show channel list while reconnecting (#37107)
This PR makes it so the channel list will still be shown while reconnecting to Collab instead of showing the signed-out state. In order to model the transitional states that occur while reconnecting, we needed to introduce a new `Status::Reauthenticated` state that we go through when signing in as part of a reconnect. This is because we cannot tell from `Status::Authenticated` alone if we're authenticating for the first time or reauthenticating. Release Notes: - N/A
Marshall Bowers created
29fc324
html: Bump to v0.2.2 (#37102)
This PR bumps the HTML extension to v0.2.2. Changes: - https://github.com/zed-industries/zed/pull/28184 - https://github.com/zed-industries/zed/pull/36948 - https://github.com/zed-industries/zed/pull/37098 Release Notes: - N/A
Finn Evers created
4ef9294
html: Add outline (#37098)
We were missing an outline definition for HTML flies, hence this PR adds one for that <img width="255" height="726" alt="image" src="https://github.com/user-attachments/assets/ae59cb8d-6c69-4019-966a-d5baf744329d" /> Release Notes: - N/A
Finn Evers created
4b06098
go: Fix highlighting of fields (#37026)
Closes #36420 ## Synopsis The issue in #36420 is caused by #7276, which bound the appropriate tree-sitter queries to the `@variable.member` color. However, I have found neither this color's declaration nor its other usages in the codebase (neither on the latest `main` nor on 79c1003b344ee513cf97ee8313c38c7c3f02c916). Other languages use for such situations the `@property` color. ## Solution Just change the used `@variable.member` color to the `@property` one. Seems fully inline with the changes illustrated in #7276. ## Screenshots <img width="856" height="465" alt="Screenshot 2025-08-28 at 13 18 38" src="https://github.com/user-attachments/assets/9d1f3542-8749-421f-864f-959c1242cc64" /> <img width="837" height="462" alt="Screenshot 2025-08-28 at 13 20 08" src="https://github.com/user-attachments/assets/36a80c22-9de9-46b1-87e3-7fdeaa62978f" /> ## Changelog Release Notes: - go: Fixed highlighting of fields.
Kai Ren created
2cb697e
copilot: Use updated Copilot Chat model schema (#33007)
Use the latest Copilot Chat model schema, matching what is used in VSCode, to get more data about available models than was previously accessible. Replace hardcoded default model (gpt-4.1) with the default model included in JSON. Other data like premium request multipliers could be used in the future if Zed implements a way for models to display additional details about themselves, such as with tooltips on hover. Release Notes: - N/A --------- Co-authored-by: Peter Tripp <peter@zed.dev>
Liam and Peter Tripp created
c8e9912
language_models: Fix tool calling for `x-ai/grok-code-fast-1` model via OpenRouter (#37094)
Closes #37022 Closes #36994 This update ensures all Grok models use the JsonSchemaSubset format for tool schemas. A previous fix for this issue was too specific, only targeting grok-4 models. This caused other variants, like grok-code-fast-1, to be missed. We've now broadened the logic to correctly apply the setting to the entire Grok model family. Release Notes: - Fix tool calling for `x-ai/grok-code-fast-1` model via OpenRouter.
Umesh Yadav created
835e5ba
Inject venv environment via the toolchain (#36576)
Instead of manually constructing the venv we now ask the python toolchain for the relevant information, unifying the approach of vent inspection Fixes https://github.com/zed-industries/zed/issues/27350 Release Notes: - Improved the detection of python virtual environments for terminals and tasks in remote projects.
Lukas Wirth created
24ee98b
agent2: Fix model deduplication to use provider ID and model ID (#37088)
Closes #37043 Previously claude sonnet 4 was missing from copilot as it was colliding with zed's claude-sonnet-4 model id. Now we do deduplication based upon model and provider id both. | Before | After | |--------|--------| | <img width="784" height="950" alt="CleanShot 2025-08-28 at 18 31 28@2x" src="https://github.com/user-attachments/assets/d49d5a17-7271-417d-bb5e-bc380071e810" /> | <img width="720" height="876" alt="CleanShot 2025-08-28 at 18 31 42@2x" src="https://github.com/user-attachments/assets/a5100c05-994e-4e19-ab20-34c0258b977c" /> | Release Notes: - Fixed an issue where models with the same ID from different providers (such as Claude Sonnet 4 from both Zed and Copilot) were incorrectly deduplicated in the model selector—now all variants are shown.
Umesh Yadav created
213ee32
docs: Make unsupported features more prominent in external agents (#37090)
Use the notes component to better highlight that in the docs UI. Release Notes: - N/A
Danilo Leal created
f127ba8
Remote LSP logs (#37083)
Take 2: https://github.com/zed-industries/zed/pull/36709 but without the very bad `cfg`-based approach for storing the RPC logs. -------------- Enables LSP log tracing in both remote collab and remote ssh environments. Server logs and server RPC traces can now be viewed remotely, and the LSP button is now shown in such projects too. Closes https://github.com/zed-industries/zed/issues/28557 Co-Authored-By: Kirill <kirill@zed.dev> Co-Authored-By: Lukas <lukas@zed.dev> Release Notes: - Enabled LSP log tracing in both remote collab and remote ssh environments --------- Co-authored-by: Ben Kunkle <ben@zed.dev> Co-authored-by: Lukas Wirth <lukas@zed.dev>
Kirill Bulatov , Ben Kunkle , and Lukas Wirth created
39d86ee
Trim API key when submitting requests to LLM providers (#37082)
This prevents the common footgun of copy/pasting an API key starting/ending with extra newlines, which would lead to a "bad request" error. Closes #37038 Release Notes: - agent: Support pasting language model API keys that contain newlines.
Antonio Scandurra created
4981c33
acp: Don't cancel editing when scrolling message out of view (#37020)
Release Notes: - agent: Fixed a bug that canceled editing when scrolling the user message out of view. Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Antonio Scandurra and Bennet Bo Fenner created
54609d4
Fix boolean settings in "Agent Settings" documentation page (#37068)
This fixes some errors in the examples in the "Agent Settings" page at https://zed.dev/docs/ai/agent-settings#agent-settings, where strings "true" and "false" are used in place of the proper boolean JSON values: strings don't work for all those settings, and are marked as errors when editing settings.json, while booleans do work. Release Notes: - N/A
Lorenzo Stella created
ff03dda
Refactor `KeybindingKeystroke` (#37065)
This pull request refactors the `KeybindingKeystroke` struct and related code to improve platform abstraction. The changes centralize platform-specific logic within `KeybindingKeystroke` and update its usage throughout the codebase, making the API more consistent and less error-prone. Release Notes: - N/A
张小白 created
73b38c8
debugger: Add ability to only show stack frame entries from visible work trees (#37061)
This PR adds a toggleable filter to the stack frame list that filters out entries that don't exist within a user's project (visible work trees). This works by keeping a vector of entry indices that exist within a user's project and updates the list state based on these entries when filtering the list. I went with this approach so the stack frame list wouldn't have to rebuild itself whenever the filter is toggled and it could persist its state across toggles (uncollapsing a collapse list). It was also easier to keep track of selected entries on toggle using the vector as well. ### Preview https://github.com/user-attachments/assets/d86c7485-c885-4bbb-bebb-2f6385674925 Release Notes: - debugger: Add option to only show stack frames from user's project in stack frame list
Anthony Eid created
38e5c8f
keymap_editor: Fix incorrect keystroke being reported (#36998)
This PR fixes two bugs and also changes one behavior in the **Keymap Editor**. As shown in the video, when I press `ctrl-shift-2` in the Keymap Editor, the first keystroke is displayed as `ctrl-shift-@`, which is incorrect. On macOS and Linux, it should be `ctrl-@`. https://github.com/user-attachments/assets/69cfcfa0-b422-45d6-8e69-80f8608180fd Also, after pressing `ctrl-shift-2` and then releasing `2` and `ctrl`, a `shift` keystroke was incorrectly added. https://github.com/user-attachments/assets/892124fd-847d-4fde-9b20-a27ba49ac934 Now, when you enter a sequence like `+ctrl+alt-alt+f` in the Keymap Editor, it will output `ctrl-f` instead of `ctrl-alt-f`, matching VS Code’s behavior. Release Notes: - Fixed incorrect keystroke reporting in the Keymap Editor.
张小白 created