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
515282d
zeta: Add detection of BSD licenses + efficiency improvements + more lenient whitespace handling (#37194)
Click to expand commit body
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)
Click to expand commit body
## 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)
Click to expand commit body
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)
Click to expand commit body
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)
Click to expand commit body
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)
Click to expand commit body
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)
Click to expand commit body
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
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)
Click to expand commit body
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)
Click to expand commit body
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)
Click to expand commit body
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)
Click to expand commit body
Release Notes:
- N/A
Danilo Leal
created
01266d1
Do not send any LSP logs by default to collab clients (#37163)
Click to expand commit body
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)
Click to expand commit body
Release Notes:
- N/A
Lukas Wirth
created
d13ba01
Require authorization for MCP tools (#37155)
Click to expand commit body
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)
Click to expand commit body
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)
Click to expand commit body
Release Notes:
- acp: New releases of external agents are now installed in the
background.
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
c3ccdc0
Add a setting to control the number of context lines in excerpts (#37138)
Click to expand commit body
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)
Click to expand commit body
Closes #ISSUE
Release Notes:
- N/A
Conrad Irwin
created
cfd56a7
zeta: Show update required notification on appropriate window(s) (#37130)
Click to expand commit body
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)
Click to expand commit body
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.
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)
Click to expand commit body
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)
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)
Click to expand commit body
@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)
Click to expand commit body
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)
Click to expand commit body
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)
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)
Click to expand commit body
Release Notes:
- N/A
Joseph T. Lyons
created
27777d4
Have ACP respect always_allow_tool_actions (#37104)
Click to expand commit body
Release Notes:
- ACP agents now respect the always_allow_tool_actions setting
Richard Feldman
created
4469b14
collab_ui: Show channel list while reconnecting (#37107)
Click to expand commit body
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
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
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
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)
Click to expand commit body
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)
Click to expand commit body
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)
Click to expand commit body
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)
Click to expand commit body
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)
Click to expand commit body
Use the notes component to better highlight that in the docs UI.
Release Notes:
- N/A
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)
Click to expand commit body
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)
Click to expand commit body
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)
Click to expand commit body
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
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)
Click to expand commit body
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