e115584
docs: Copyedit debugger.md and clarify settings location (#36996)
Click to expand commit body
Release Notes: - N/A
Dan Dascalescu created
e115584
docs: Copyedit debugger.md and clarify settings location (#36996)
Release Notes: - N/A
Dan Dascalescu created
fe0ab30
Fix auto size rendering of SVG images in Markdown (#36663)
Release Notes: - Fixed auto size rendering of SVG images in Markdown. ## Before <img width="836" height="844" alt="image" src="https://github.com/user-attachments/assets/0782e17e-620f-4c29-a5bc-a2ffe877d220" /> <img width="691" height="678" alt="image" src="https://github.com/user-attachments/assets/dbe2dd5f-fd5b-48f9-bd09-0ee35e116aec" /> ## After <img width="873" height="1015" alt="image" src="https://github.com/user-attachments/assets/59cbb69f-6a81-43cb-989f-3bcea873d81e" /> <img width="647" height="598" alt="image" src="https://github.com/user-attachments/assets/11b67d8e-2b6c-4245-ad13-d4616fdabf22" /> For GPUI example ``` cargo run -p gpui --example image ``` <img width="1212" height="740" alt="SCR-20250821-ojoy" src="https://github.com/user-attachments/assets/62bb2847-c533-4c4d-b5f7-c9764796262a" />
Jason Lee created
253765a
zeta: Improve efficiency and clarity of license detection patterns (#37242)
See discussion on #36564 Adds a simple ad-hoc substring matching pattern language which allows skipping a bounded number of chars between matched substrings. Before this change compiling the regex was taking ~120ms on a fast machine and ~8mb of memory. This new version is way faster and uses minimal memory. Checked the behavior of this vs by running it against 10k licenses that happened to be in my home dir. There were only 4 differences of behavior with the regex implementation, and these were false negatives for the regex implementation that are true positives with the new one. Of the ~10k licenses in my home dir, ~1k do not match one of these licenses, usually because it's GPL/MPL/etc. Release Notes: - N/A
Michael Sloan created
ad746f2
zeta: Add zlib to license detection + ignore symbol differences (#37238)
See discussion on #36564. Makes the license regexes a less fragile by not matching on symbols, while also excluding cases where a long file ends with a valid license. Also adds Zlib license, a commented out test to check all license-like files discovered in the homedir, and more testcases. Not too happy with the efficiency here, on my quite good computer it takes ~120ms to compile the regex and allocates ~8mb for it. This is just not a great use of regexes, I think something using eager substring matching would be much more efficient - hoping to followup with that. Release Notes: - Edit Prediction: Added Zlib license to open-source licenses eligible for data collection.
Michael Sloan created
de576bd
agent: Fix agent panel header not updating when opening a history entry (#37189)
Closes #37171 Release Notes: - agent: Fixed a bug that caused the agent information in the panel header to be incorrect when opening a thread from history.
Cole Miller created
af26b62
settings: Improve parse errors (#37234)
Closes #ISSUE Adds a dependency on `serde_path_to_error` to the workspace allowing us to include the path to the setting that failed to parse on settings parse failure. Release Notes: - N/A *or* Added/Fixed/Improved ...
Ben Kunkle created
0a32aa8
language_models: Fix GitHub Copilot thread summary by removing unnecessary noop tool logic (#37152)
Closes #37025
This PR fixes GitHub Copilot thread summary failures by removing the
unnecessary `noop` tool insertion logic. The code was originally added
as a workaround in https://github.com/zed-industries/zed/pull/30007 for
supposed GitHub Copilot API issues when tools were used previously in a
conversation but no tools are provided in the current request. However,
testing revealed that this scenario works fine without the workaround,
and the `noop` tool insertion was actually causing "Invalid schema for
function 'noop'" errors that prevented thread summarization from
working. Removing this logic eliminates the errors and allows thread
summarization to function correctly with GitHub Copilot models.
The best way to see if removing that part of code works is just
triggering thread summarisation.
Error Log:
```
2025-08-27T13:47:50-04:00 ERROR [workspace::notifications] "Failed to connect to API: 400 Bad Request {"error":{"message":"Invalid schema for function 'noop': In context=(), object schema missing properties.","code":"invalid_function_parameters"}}\n"
```
Release Notes:
- Fixed GitHub Copilot thread summary failures by removing unnecessary
noop tool insertion logic.
Umesh Yadav created
b473f4a
Fix SQL error in recent projects query (#37220)
Follow-up to https://github.com/zed-industries/zed/pull/37035
In the WSL PR, `ssh_connection_id` was renamed to
`remote_connection_id`. However, that was not accounted for within the
`recent_workspaces_query`. This caused a query fail:
```
2025-08-30T14:45:44+02:00 ERROR [recent_projects] Prepare call failed for query:
SELECT
workspace_id,
paths,
paths_order,
ssh_connection_id
FROM
workspaces
WHERE
paths IS NOT NULL
OR ssh_connection_id IS NOT NULL
ORDER BY
timestamp DESC
Caused by:
Sqlite call failed with code 1 and message: Some("no such column: ssh_connection_id")
```
and resulted in no recent workspaces being shown within the recent
projects picker.
This change updates the column name to the new name and thus fixes the
error.
Release Notes:
- N/A
Finn Evers created
7d0a303
Add xAI to supported language model providers (#37206)
After setting a `grok` model via the agent panel, the settings complains that it doesn't recognize the language model provider: <img width="1005" height="188" alt="SCR-20250829-tqqd" src="https://github.com/user-attachments/assets/a25fc7e0-60f0-44fd-96d2-b1cb316d06b6" /> Also, sorted the list, in the follow-up commit. Release Notes: - N/A
Joseph T. Lyons created
f78f3e7
Add initial support for WSL (#37035)
Closes #36188 ## Todo * [x] CLI * [x] terminals * [x] tasks ## For future PRs * debugging * UI for opening WSL projects * fixing workspace state restoration Release Notes: - Windows alpha: Zed now supports editing folders in WSL. --------- Co-authored-by: Junkui Zhang <364772080@qq.com>
Max Brunsfeld and Junkui Zhang created
1c2e2a0
agent: Re-add workaround for language model behavior with empty tool result (#37196)
This is just copying over the same workaround here: https://github.com/zed-industries/zed/blob/a790e514af4d6957aa1a14cc8190b2ff24a0484c/crates/agent/src/thread.rs#L1455-L1459 Into the agent2 code. Release Notes: - agent: Fixed an issue where some tool calls in the Zed agent could return an error like "`tool_use` ids were found without `tool_result` blocks immediately after"
Cole Miller created
a70cf3f
bedrock: Inference Config updates (#35808)
Fixes #36866 - Updated internal naming for Claude 4 models to be consistent. - Corrected max output tokens for Anthropic Bedrock models to match docs Shoutout to @tlehn for noticing the bug, and finding the resolution. Release Notes: - bedrock: Fixed inference config errors causing Opus 4 Thinking and Opus 4.1 Thinking to fail (thanks [@tlehn](https://github.com/tlehn) and [@5herlocked](https://github.com/5herlocked]) - bedrock: Fixed an issue which prevented Rules / System prompts not functioning with Bedrock models (thanks [@tlehn](https://github.com/tlehn) and [@5herlocked](https://github.com/5herlocked])
Shardul Vaidya created
bdedb18
docs: Fix msys2 (#37199)
I accidentally pushed https://github.com/zed-industries/zed/commit/db508bbbe2fe41507b2930d19effbecd25ea84c4 to main instead of to a branch. That broke tests. Release Notes: - N/A
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