4507f60
languages: Fix python activation scripts not being quoted (#37159)
Click to expand commit body
Release Notes: - N/A
Lukas Wirth 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
78c2f16
Add macOS window tabs (#33334)
Closes https://github.com/zed-industries/zed/issues/14722
Closes https://github.com/zed-industries/zed/issues/4948
Closes https://github.com/zed-industries/zed/issues/7136
Follow up of https://github.com/zed-industries/zed/pull/20557 and
https://github.com/zed-industries/zed/pull/32238.
Based on the discussions in the previous PRs and the pairing session
with @ConradIrwin I've decided to rewrite it from scratch, to properly
incorporate all the requirements. The feature is opt-in, the settings is
set to false by default. Once enabled via the Zed settings, it will
behave according to the user’s system preference, without requiring a
restart — the next window opened will adopt the new behavior (similar to
Ghostty).
I’m not entirely sure if the changes to the Window class are the best
approach. I’ve tried to keep things flexible enough that other
applications built with GPUI won’t be affected (while giving them the
option to still use it), but I’d appreciate input on whether this
direction makes sense long-term.
https://github.com/user-attachments/assets/9573e094-4394-41ad-930c-5375a8204cbf
### Features
* System-aware tabbing behavior
* Respects the three system modes: Always, Never, and Fullscreen
(default on macOS)
* Changing the Zed setting does not require a restart — the next window
reflects the change
* Full theme support
* Integrates with light and dark themes
* [One
Dark](https://github.com/user-attachments/assets/d1f55ff7-2339-4b09-9faf-d3d610ba7ca2)
* [One
Light](https://github.com/user-attachments/assets/7776e30c-2686-493e-9598-cdcd7e476ecf)
* Supports opaque/blurred/transparent themes as best as possible
* [One Dark -
blurred](https://github.com/user-attachments/assets/c4521311-66cb-4cee-9e37-15146f6869aa)
* Dynamic layout adjustments
* Only reserves tab bar space when tabs are actually visible
* [With
tabs](https://github.com/user-attachments/assets/3b6db943-58c5-4f55-bdf4-33d23ca7d820)
* [Without
tabs](https://github.com/user-attachments/assets/2d175959-5efc-4e4f-a15c-0108925c582e)
* VS Code compatibility
* Supports the `window.nativeTabs` setting in the VS Code settings
importer
* Command palette integration
* Adds commands for managing tabs to the command palette
* These can be assigned to keyboard shortcuts as well, but didn't add
defaults as to not reserve precious default key combinations
Happy to pair again if things can be improved codewise, or if
explanations are necessary for certain choices!
Release Notes:
* Added support for native macOS window tabbing. When you set
`"use_system_window_tabs": true`, Zed will merge windows in the same was
as macOS: by default this happens only when full screened, but you can
adjust your macOS settings to have this happen on all windows.
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Gaauwe Rombouts and Conrad Irwin created
0a9f407
search: Add support for case-sensitivity pattern items (#34762)
This Pull Request introduces support for pattern items in the buffer search. It does so by splitting the `query` methods into two new methods: - `BufferSearchBar.raw_query` – returns the text from the search query editor - `BufferSearchBar.query` - returns the search query with pattern items removed Whenever the search query is updated, processing of the `EditorEvent::Edited` event ends up calling the `BufferSearchBar.apply_pattern_items` method, which parses the pattern items from the raw query, and updates the buffer search bar's search options accordingly. This `apply_pattern_items` function avoids updating the `BufferSearchBar.default_options` field in order to be able to reset the search options when a pattern items is removed. Lastly, new pattern items can easily be added by updating the `PATTERN_ITEMS` array. ### Screen Capture https://github.com/user-attachments/assets/ebd83c38-e480-4c24-9b8c-6edde69cf392 --- Closes #32390 Release Notes: - Added support for the `\c` and `\C` query pattern items to control case-sensitivity in buffer search --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Dino and Conrad Irwin created
4e1a901
helix: Improve "x" behavior (#35611)
Closes #32020 Release Notes: - Helix: Improve `x` behaviour. Will respect modifiers (`5 x`). Pressing `x` on a empty line, will select current+next line, because helix considers current line to be already selected without the need of pressing `x`.
Romans Malinovskis created
8af212e
Fix watching of Git repo in presence of scanner restarts (#37052)
The scanner is restarted after loading initial settings, and there was an optimization to not re-discover and re-watch git repositories if they already exist in the snapshot. #35865 added cleanup of watches that occurred when the scanner restarts, and so in some cases repos were no longer watched. Release Notes: - Linux: Fixed a case where Git repositories might not be watched for changes, causing branch switching to not update the UI. Co-authored-by: Julia <julia@zed.dev>
Michael Sloan and Julia created
b233df8
Revert "Remote LSP logs (#36709)" (#37051)
This reverts commit e2bf8e5d9c9b1b14cad1c9c618bb724c04182a2c. See https://github.com/zed-industries/zed/pull/37050#issuecomment-3230017137 for the context: musl builds started to fail and the amount of `cfg!`s to fix this is too large. Instead, the lsp_log.rs has to be split and repurposed better for the remote headless server. Release Notes: - N/A
Kirill Bulatov created
9a97f94
rust: Improve highlighting within macros (#37049)
This makes sure we do not apply the highlights for snake case identifiers as well as paths for attributes too broadly to all types of macros, which should make macros much more readable overall whilst keeping the highlighting for the attribute items. | Before | After | | --- | --- | | <img width="1414" height="958" alt="Bildschirmfoto 2025-08-28 um 00 37 58" src="https://github.com/user-attachments/assets/1254b9a2-d07a-4be4-9b4f-555a7c640302" /> | <img width="1414" height="958" alt="Bildschirmfoto 2025-08-28 um 00 37 38" src="https://github.com/user-attachments/assets/5f6dd66c-5469-4f27-9f1d-0a6e6e8d8085" /> | Release Notes: - rust: Improved highlighting within macros.
Finn Evers created
48299b5
search: Preserve `SearchOptions` across dismisses (#36954)
Closes #36931 and #21956 Preserves `SearchOptions` across dismisses of the buffer search bar. This behavior is consistent with VSCode, which seems reasonable. The `configured_options` field is then no longer being used. The configuration is still read during initialization of the `BufferSearchBar`, but not after. Something to consider is that there are other elements in the search bar which are not kept across dismisses such as replace status. However these are visually separated in the UI, leading me to believe this is a okay change to make. Release Notes: - Preserve search options between buffer search dismisses
tidely created
4e4bfd6
editor: Add "Wrap Selections in Tag" action (#36948)
This PR adds the ability for a user to select one or more blocks of text and wrap each selection in an HTML tag — which works by placing multiple cursors inside the open and close tags so the appropriate element name can be typed in to all places simultaneously. This is similar to the emmet "Wrap with Abbreviation" functionality discussed in #15588 but is a simpler version that does not rely on Emmet's language server. Here's a preview of the feature in action: https://github.com/user-attachments/assets/1931e717-136c-4766-a585-e4ba939d9adf Some notes and questions: - The current implementation is a hardcoded with regards to supported languages. I'd love some direction on how much of this information to push into the relevant language structs. - I can see this feature as something that languages added by an extension would want to enable support for — is this something you'd want? - The syntax is hardcoded to support HTML/XML/JSX-like languages. I don't suppose this is a problem but figured I'd point it out anyway. - I called it "Wrap in tag" but open to whatever naming you feel is appropriate. - The implementation doesn't use `manipulate_lines` — I wasn't sure how make use of that without extra overhead / bookkeeping — does this seem fine? - I could also investigate adding wrap in abbreviation support by communicating with the Emmet language server but I think I'll need some direction on how to handle Emmet's custom LSP message. I could do this either in addition to or instead of this feature — though imo this feature is a nice "shortcut" regardless. Release Notes: - Added a new "Wrap Selections in Tag" action that lets you wrap one or more selections in tags based on language. Works in HTML, JSX, and similar languages, and places cursors inside both opening and closing tags so you can type the tag name once and apply it everywhere. --------- Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
Jordan Pittman and Smit Barmase created
5444fbd
python: Look for local venvs in all directories between root of the worktree and current pyproject.toml (#37037)
cc @michael-ud - if you can build Zed, I'd appreciate it if you could give this a go with your project. Otherwise I can provide a link to download of current nightly via an e-mail for you to try out (if you want). This change will land in Preview (if merged) on next Wednesday and then it'll be in Stable a week after that. Related to: #20402 Release Notes: - python: Zed now searches for virtual environments in intermediate directories between a root of the worktree and the location of pyproject.toml applicable to the currently focused file.
Piotr Osiewicz created
58f896e
Update Wednesday release process docs (#37033)
Release Notes: - N/A
Joseph T. Lyons created
d43cf2c
Link out to release channel FAQ in Docs (#37029)
This PR links users to the FAQ on the release channels, which has more in-depth coverage of the process. Release Notes: - N/A
Joseph T. Lyons created
e2bf8e5
Remote LSP logs (#36709)
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: Kirill Bulatov <kirill@zed.dev> Co-authored-by: Lukas Wirth <lukas@zed.dev>
Ben Kunkle , Kirill Bulatov , and Lukas Wirth created
c158eb2
docs: Note that Gemini CLI is not supported over SSH (#37023)
Release Notes: - N/A
Cole Miller created
71f9003
Add ';' and '*' to word_chars to improve softwrap (#37024)
Follow-up to: https://github.com/zed-industries/zed/pull/37019 See also: https://github.com/zed-industries/zed/issues/37010 Before/After: <img width="418" height="402" alt="Screenshot 2025-08-27 at 13 54 52" src="https://github.com/user-attachments/assets/1b2e02dd-c216-4372-b23e-5a3a619d2b77" /> Release Notes: - N/A
Peter Tripp created