Commit Graph
39151 Commits
Author SHA1 Message Date
Lukas Wirth 9bfb900caa remote_server: Cleanup old server binaries on wsl (#47839)
Closes https://github.com/zed-industries/zed/issues/44736

Release Notes:

- Fixed remote server binaries accumulating on wsl over time
2026-01-28 13:30:43 +01:00
Lukas Wirth 9622179798 agent_servers: Inherit codex api key environment vars for remote (#47850)
Closes https://github.com/zed-industries/zed/issues/46786

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-01-28 12:29:44 +00:00
Smit Barmase 1c7fa87d18 markdown: Improve double-click word selection using CharClassifier (#47844)
Previously, double-click word selection in markdown used simple
space-based boundaries, so `foo.bar()` would be selected as a single
word.

Now we use `CharClassifier` which properly handles word boundaries:

- **Regular markdown text**: Punctuation (`.`, `(`, `)`, etc.) now acts
as word boundaries. Double-clicking on `foo.bar()` selects just `foo` or
`bar`.
- **Code blocks**: Uses the language's word characters. For example, in
JavaScript, `$foo` and `#bar` are selected as whole words since `$` and
`#` are configured as word characters.

Release Notes:

- Improved double-click word selection in Agent Panel to respect
punctuation and language-specific word characters.
2026-01-28 16:30:24 +05:30
ozacod 92495328d1 languages: Add first-line C++ language detection for extensionless libcpp headers (#47443)
Several libcpp headers lack file extensions. Added a first line pattern
for recognition.


https://github.com/llvm/llvm-project/blob/main/libcxx/include/random)](https://github.com/llvm/llvm-project/blob/main/libcxx/include/random

Before:
<img width="1229" height="512" alt="before"
src="https://github.com/user-attachments/assets/fe62f904-73c9-494e-adf5-e5f259fab611"
/>

After:
<img width="1229" height="512" alt="after"
src="https://github.com/user-attachments/assets/a68b4242-61b7-4dba-a12e-9424be4b06dc"
/>

Release Notes:

- Added first-line C++ language detection for extensionless libcpp
headers.
2026-01-28 10:33:28 +00:00
Shuhei Kadowaki 2dd4897925 lsp: Exclude dynamic settings from LanguageServerSeed identity (#47376)
`LanguageServerSeed` is used as a key to identify language servers.
Previously, it included the entire `LspSettings`, which meant that
changing `lsp.<server>.settings` (dynamic configuration) would cause the
server to restart unnecessarily.

Dynamic settings can be updated via LSP's
`workspace/didChangeConfiguration` notification without requiring a
server restart. Only `binary` and `initialization_options` should be
part of the server identity, as changes to these genuinely require
restarting the server.

This is a follow-up fix to #35270 which introduced `LanguageServerSeed`
but inadvertently included dynamic settings in the server identity
(although I remember that this dynamic settings reflection stopped
working pretty recently, so there might be other commits besides #35270
that changed the behavior of `LanguageServerSeed`)

Closes #ISSUE

Release Notes:

- Fixed language servers unnecessarily restarting when changing
`lsp.<server>.settings` configuration. Dynamic settings are now properly
updated via `workspace/didChangeConfiguration` without requiring a
server restart.
2026-01-28 11:26:30 +01:00
ozacod e2f54a1272 languages: Add highlighting for document comments in C/C++ (#47556)
Before:
<img width="557" height="668" alt="before"
src="https://github.com/user-attachments/assets/5accf661-94cd-4933-8771-98f813199c39"
/>

After:
<img width="581" height="668" alt="after"
src="https://github.com/user-attachments/assets/251101ca-6e12-4dc3-b4dd-41b2438f9bd7"
/>

Release Notes:

- Added highlighting for document comments in C/C++
2026-01-28 11:25:49 +01:00
Alfredo Menezes 3a1f4776d4 docs: Add missing syntax highlighting captures (#47791)
## Summary

Adds three syntax highlighting captures that are used across multiple
language definitions but were missing from the documentation table in
`docs/src/extensions/languages.md`.

## Added Captures

| Capture | Used In |
|---------|---------|
| `@constant.builtin` | C, Go, C++, YAML, TSX |
| `@type.builtin` | C++, Python, Rust, JavaScript, TSX |
| `@variable.parameter` | TypeScript, JavaScript, Python, Rust, TSX,
Diff |

## Context

While working on a [PR to add named argument highlighting to the PHP
extension](https://github.com/zed-extensions/php/pull/95), I initially
used `@label` because the documentation didn't list
`@variable.parameter`. A reviewer pointed out that `@variable.parameter`
is actually supported and preferred - the docs were just outdated.

This PR fixes that documentation gap.

Release Notes:

- N/A
2026-01-28 10:08:52 +00:00
Lena 3339c2d982 Fix the duplicate bot (move timeout, perms) (#47840)
Debugging on `main` is so much fun :/

Release Notes:

- N/A
2026-01-28 09:34:10 +00:00
Danilo Leal 0e1802a596 acp: Add agent server extension deprecation banner (#47817)
This PR adds a banner to communicate the deprecation of agent server
extensions in favor of the ACP registry:

<img width="600" height="1986" alt="Screenshot 2026-01-27 at 8  37@2x"
src="https://github.com/user-attachments/assets/8c1b658f-d170-4009-a93b-336b785f4be9"
/>

Release Notes:

- N/A
2026-01-28 10:28:43 +01:00
Conrad Irwin ade8749537 Fix typing emoji (#47835)
- **Revert "ui: Dismiss context menus when window loses focus
(#46866)"**
- **Revert "Preserve and restore focus across window activation cycles
(#47044)"**

Closes #ISSUE

Release Notes:

- (preview only) Fixed typing emoji using the macOS system palette
(cmd-ctrl-space)
2026-01-28 07:04:22 +00:00
Andres Suarez 80f1cc032e project_panel: Add bold_folder_labels setting (#47631)
This setting brings Zed in parity with Sublime's `bold_folder_labels`.

The settings does just that, it makes directory labels bold. This
setting is
particularly useful for those who turn icons off, but do need a visual
queue (besides the chevron) to quickly tell apart files and folders.

Note: This PR depends on
https://github.com/zed-industries/zed/pull/47629.
Otherwise, the setting will appear to have no uneffect (unless you're
using a custom UI font). ZedSans has "bold" today, but that's too thick
for the project panel.

<img width="2282" height="1545" alt="zed-project-panel"
src="https://github.com/user-attachments/assets/63ccacc0-c00a-48b2-8e70-923aa6717956"
/>

Release Notes:

- Added `project_panel.bold_folder_labels` to show folder names with
bold text in the project panel (defaults to `false`).
2026-01-28 09:54:03 +05:30
Danilo Leal e752ec1a92 Add item for opening Markdown/SVG files in preview tab in right-click menu (#47821)
Following user feedback, this should help making the Markdown Preview
more discoverable.

| Buffer Right-click | Tab Right-click |
|--------|--------|
| <img width="2474" height="1824" alt="Screenshot 2026-01-27 at 10 
16@2x"
src="https://github.com/user-attachments/assets/251149e9-89c6-4d11-aed0-872669939cfb"
/> | <img width="2464" height="1808" alt="Screenshot 2026-01-27 at 10 
16 2@2x"
src="https://github.com/user-attachments/assets/359a221b-2141-45b1-98a9-d9c77b601c0b"
/> |

Release Notes:

- Workspace: Added a menu item in the buffer and tab right-click menu
for opening Markdown and SVG files in the preview tab.
2026-01-28 00:19:13 -03:00
John Tur 17d34db366 Fix issues with Windows SSH support (#47822)
- Remove the newlines in the unzip command string, which made it not
work.
- Fix spawning the terminal and tasks. Unfortunately, the Windows
OpenSSH server has limitations that require rather ugly workarounds.

Release Notes:

- N/A
2026-01-28 02:37:26 +00:00
versecafe 06b5ec4664 ep: Diagnostics as retrieval_chunks for sweep ep (#47441)
Release Notes:

- N/A
2026-01-27 19:46:10 -05:00
Ben Kunkle cedfc7e98c zeta2: Split out last edit in history (#47812)
Closes #ISSUE

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-01-27 19:45:05 -05:00
Ben KunkleandZed Zippy 9079f97066 ep_cli: Ignore common subsequences for more intuitive reversal metric values (#47818)
Closes #ISSUE

Release Notes:

- N/A *or* Added/Fixed/Improved ...

---------

Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
2026-01-27 19:39:20 -05:00
Piotr Osiewicz 64df7f2675 ci: Enable namespace caching for clippy on Mac (#47819)
Release Notes:

- N/A
2026-01-28 00:24:03 +00:00
KyleBarton b9c56658ff Disable opening dev container from within a remote project (#47816)
Closes #46320

Release Notes:

- Improves error messaging to guide user away from opening a dev
container from within a remote project
2026-01-27 23:35:55 +00:00
Ben KunkleandMax 344ee9fa83 zeta2: Improve format prompt budgeting (#47808)
Closes #ISSUE

Release Notes:

- N/A *or* Added/Fixed/Improved ...

---------

Co-authored-by: Max <max@zed.dev>
2026-01-27 17:36:27 -05:00
Kirill Bulatov 4ea2c0923f Use suggested name for "use_system_path_prompts": false dialogue when creating new files (#47802)
<img width="1419" height="266" alt="image"
src="https://github.com/user-attachments/assets/059ee9e2-e102-4fc6-acba-d66ae0292203"
/>


Release Notes:

- N/A
2026-01-27 20:54:20 +00:00
Anthony Eid 87d41c1d97 Revert "fs: Replace MacWatcher with notify::FsEventWatcher" (#47799)
Reverts zed-industries/zed#47322. I'm going to remerge this tomorrow
after releases so we get a full week in nightly to catch any bugs
2026-01-27 20:27:53 +00:00
Marco Mihai CondracheandAnthony Eid b1f9ca96ec fs: Replace MacWatcher with notify::FsEventWatcher (#47322)
Closes #47064 
Closes #20806

The previous implementation used Zed's custom fsevent crate, which
spawned a dedicated thread for each watched path. On large projects,
this could result in 100+ threads just for filesystem watching.

This PR removes the `fsevent` crate and switches to using `notify's`
FsEventWatcher directly. The notify implementation maintains a single
FSEvents stream that watches all paths on one thread. When paths are
added or removed, the stream is stopped, the path list is updated, and
the stream is restarted.

Ref: https://github.com/notify-rs/notify/blob/main/notify/src/fsevent.rs

As a result, Zed now uses one thread for filesystem watching regardless
of how many paths are watched.

Release Notes:

- On macOS, Zed now uses significantly fewer resources when watching
filesystem changes

---------

Signed-off-by: Marco Mihai Condrache <52580954+marcocondrache@users.noreply.github.com>
Co-authored-by: Anthony Eid <anthony@zed.dev>
2026-01-27 19:12:41 +00:00
Danilo Leal 4ffe748461 agent_ui: Fix inline assistant line height (#47772)
This makes the inline assistant editor use the line height value
configured in the settings, and fixes cut-off button creases:

| Before | After |
|--------|--------|
| <img width="656" height="276" alt="Screenshot 2026-01-27 at 11  55@2x"
src="https://github.com/user-attachments/assets/fbb19e54-6663-4f7e-b706-b012fbfa2c99"
/> | <img width="656" height="274" alt="Screenshot 2026-01-27 at 11 
54@2x"
src="https://github.com/user-attachments/assets/4577b752-3e18-45c7-9657-02919047f8ba"
/> |

Release Notes:

- Agent: Fixed cut-off mention creases in the inline assistant.
2026-01-27 15:37:43 -03:00
Danilo Leal 37b8f66df5 agent_ui: Add a menu for inserting context (#47768)
This PR swaps the @ icon button in the message editor for a + one, which
opens a dropdown that displays context options you can add to the agent.
Aside from removing one step if you're wanting to add context first with
the mouse (in comparison to just inserting @ in the message editor),
this menu will also house skills you've created, whenever we get to
support to that. It also works to surface images and selections in a bit
more visible way as context options. So, effectivelly, this is a bit of
foundation work for further features to come. Here's what it looks like:

<img width="500" height="586" alt="Screenshot 2026-01-27 at 11  38@2x"
src="https://github.com/user-attachments/assets/551686ba-4629-4317-9177-1e942512a23c"
/>

Note that all the options you see in the menu should also be available
through simply typing @ in the message editor.

Release Notes:

- Agent: Added a menu for inserting context more easily with the mouse
in the agent panel.
2026-01-27 15:37:32 -03:00
Danilo Leal 40468ed651 gpui: Add min_size and max_size style methods (#47775)
The same way you can use `size` when width and height have the same
value, it should also be possible to write `min_size` and `max_size`.
This PR adds these two methods, which are also supported in Tailwind
(but not documented in v4, surprisingly!).

Release Notes:

- N/A
2026-01-27 15:37:22 -03:00
Danilo Leal 681fee2c1f agent_ui: Improve image preview on mention hover (#47781)
This PR improves the hover tooltip container for displaying a preview of
the mentioned image in the agent panel.

<img width="600" height="414" alt="Screenshot 2026-01-27 at 1  03 2@2x"
src="https://github.com/user-attachments/assets/f5a6f160-6abf-4c3c-8375-4613f4948360"
/>

Release Notes:

- N/A
2026-01-27 15:37:11 -03:00
Danilo Leal 69d408b4b0 acp: Improve the ACP registry UI (#47788)
This PR adds some UI improvements to the ACP registry UI, already
including the URL for the soon-to-be-released blog post. I'm also
renaming the action to open the page from `zed: agent registry` to `zed:
acp registry`.

Release Notes:

- N/A
2026-01-27 15:37:01 -03:00
Jeff BrennanandJoseph T. Lyons 797ad8cf44 Fix language injections sticking after language comment removed (#46134)
Closes #46104

Release Notes: 

- Fixed language injections sticking after language comment removed

---

This is working well for the Python SQL comments

![comment_sync_demo](https://github.com/user-attachments/assets/ba5160ce-4867-4b49-9f44-141ddc2730a1)

```python
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()

# sql
cmd = "SELECT col1, col2 FROM tbl"

df = spark.sql(  # sql
    """
    WITH cte AS (
        SELECT col1, col2, COUNT(*) AS n
        FROM tbl
        GROUP BY ALL
    )
    SELECT * FROM cte
    """
)
```


And go comments

![comment_sync_demo_go_updated](https://github.com/user-attachments/assets/73e81a94-e8fc-4dc3-82f8-09e966d35bc9)


```go
package main

func test() {
    var _ = /* sql */ `SELECT id, name FROM products`
    var _ = /* sql */ "SELECT id, name FROM products"

    var _ = /* sql */ `SELECT id, name FROM products`

    var _ = /* sql*/ "SELECT id, name FROM products"
}
```

Note: `f04b252dd9` was a simpler implementation that worked for
non-inline comments in Python, but produced the following Go behavior

![comment_sync_demo_go](https://github.com/user-attachments/assets/40336705-9799-4b0a-b457-4974d172e1c8)

---------

Co-authored-by: Joseph T. Lyons <JosephTLyons@gmail.com>
2026-01-27 17:38:10 +00:00
Marshall Bowers a9fdd07e8d cloud_api_types: Rework Plan type (#47784)
This PR reworks the `Plan` type, now that we don't need to be concerned
about the legacy plan versions.

We've also made the deserialization layer more robust, which should make
it easier to add new plan variants in the future without needing to go
through this same song and dance.

Release Notes:

- N/A
2026-01-27 12:15:05 -05:00
Ben Kunkle 07e675db7b zeta2: Remove experimental_edit_prediction_context_retrieval setting (#47783)
Closes #ISSUE

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-01-27 12:10:08 -05:00
Ran Benitaanddino 41ce23f896 vim: Add gdefault setting to set /g as a default substitution flag (#47664)
Add support for Vim's `gdefault` option which makes the `:substitute`
command replace all matches in a line by default, instead of just the
first match. When enabled, the `/g` flag inverts this behavior.

- Add `vim.gdefault` setting
- Add `:set gdefault`, `:set nogdefault` (and short forms `:set gd`, `:set nogd`)
- Fix handling of multiple `/g` flags so that each one inverts the one before

Closes #36209

Release Notes:

- vim: Add `vim.gdefault` setting to make `/g` (replace all matches in a line) the default for substitutions, along with `:set gdefault` and `:set nogdefault` commands (short forms: `gd`, `nogd`)

---------

Co-authored-by: dino <dinojoaocosta@gmail.com>
2026-01-27 17:04:10 +00:00
Anthony Eid e77c528c1c Update notify dependency version to include the flag watch root fix (#47782)
This is in preparation of merging
https://github.com/zed-industries/zed/pull/47322, because our MacWatcher
implementation was able to watch root directories, and I wanted to
maintain that behavior to decrease the chance of any bugs occurring from
a merge

Note: Release candidate 9 for Notify was created two days ago which
means that a new version is coming out soon. We should update to v9 once
it's released to include bug fixes from upstream.

Release Notes:

- N/A
2026-01-27 16:38:21 +00:00
Ben Kunkle cc1d3af65e Use faster brotli compression for sweep requests (#47776)
Closes #ISSUE

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-01-27 11:07:02 -05:00
Lena 26381fe6ef More permissions to GitHub duplicates bot (#47780)
The claude code action insists on needing `id-token: write` despite us
using `github_token`, so maybe I misread the 
[FAQ](https://github.com/anthropics/claude-code-action/blob/main/docs/faq.md#why-am-i-getting-oidc-authentication-errors)
earlier. Pinning the sha of the currently-used version of the action for
safety's sake.

Release Notes:

- N/A
2026-01-27 16:02:46 +00:00
Marshall Bowers 4723dbe696 cloud_llm_client: Move Plan type into cloud_api_types (#47778)
This PR moves the `Plan` type out of `cloud_llm_client` and into
`cloud_api_types`.

Release Notes:

- N/A
2026-01-27 15:58:05 +00:00
Conrad Irwin 73bb119126 Use semibold (#47725)
New on the left, old on the right:

<img width="1612" height="1047" alt="Screenshot 2026-01-26 at 20 31 04"
src="https://github.com/user-attachments/assets/3e0d01b6-05e9-4c9c-8c15-6c525ce9fa9f"
/>
<img width="1604" height="915" alt="Screenshot 2026-01-26 at 20 30 49"
src="https://github.com/user-attachments/assets/77d0f9e0-778b-45df-a8e1-ade63ee9e798"
/>


Release Notes:

- Bold UI text will now render using Plex SemiBold instead of Bold.
2026-01-27 08:50:52 -07:00
Lena 8a89042289 Fix getting token in a GitHub bot (#47777)
Release Notes:

- N/A
2026-01-27 15:41:13 +00:00
Marshall Bowers 39b34f8f33 cloud_llm_client: Remove unused code (#47774)
This PR removes some unused code around the plan types from the
`cloud_llm_client`.

Release Notes:

- N/A
2026-01-27 15:24:58 +00:00
Lena f324c3ef23 Add a test version of 'find duplicates' bot (#47773)
Release Notes:

- N/A
2026-01-27 15:18:50 +00:00
DreamandMarshall Bowers 01409a2687 extensions_ui: Fix duplicated button element IDs preventing uninstall (#47745)
Closes #47656

Release Notes:

- Fixed extension uninstall button not working when an upgrade is
available.

---------

Co-authored-by: Marshall Bowers <git@maxdeviant.com>
2026-01-27 09:44:05 -05:00
Oleksiy Syvokon a07b08f63c Show QA metrics in the ep eval report (#47766)
Release Notes:

- N/A
2026-01-27 16:37:04 +02:00
Kirill Bulatov be314db159 Tidy up signature help delays (#47762)
Follow-up of https://github.com/zed-industries/zed/pull/46745

Release Notes:

- N/A
2026-01-27 15:53:15 +02:00
lex00anddino 9ecafe1960 vim: Ensure paragraph motions use empty and not blank lines (#47734)
The `}` and `{` paragraph motions now correctly treat only truly empty
lines (zero characters) as paragraph boundaries, matching vim's
documented behavior. Whitespace-only lines are no longer treated as
boundaries.

Changed `start_of_paragraph()` and `end_of_paragraph()` in
`editor/src/movement.rs` to check `line_len() == 0` instead of
`is_line_blank()`.

Note: This change does NOT affect the `ap`/`ip` text objects. Per vim's
`:help ap`, those DO treat whitespace-only lines as boundaries, which is
the existing (correct) behavior in `vim/src/object.rs`.

Closes #36171

Release Notes:

- Fixed vim mode paragraph motions (`}` and `{`) to correctly ignore
whitespace-only lines

---------

Co-authored-by: dino <dinojoaocosta@gmail.com>
2026-01-27 13:33:53 +00:00
Oleksiy SyvokonandZed Zippy 757ee0571e ep: Use rejected_output for DPO training + OpenAI support (#47697)
Release Notes:

- N/A

---------

Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
2026-01-27 13:02:40 +00:00
Finn Evers 4866861f07 xtask: Remove transitive GPUI dependency (#47748)
Release Notes:

- N/A
2026-01-27 14:00:45 +01:00
Lukas Wirth 8fb71083fe askpass: Fix ssh auth not updating entered password on windows (#47755)
Release Notes:

- Fixed mistyping the ssh password in the askpass prompt on windows
locking you out of retyping the correct one
2026-01-27 12:53:14 +01:00
Lukas Wirth aa6afca524 terminal_view: Fix new flaky terminal tests (#47753)
Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-01-27 11:38:17 +00:00
Ben Brandt 7e8ced2cd1 Remove cron schedule for unit evals (#47743)
Release Notes:

- N/A
2026-01-27 09:38:11 +00:00
Finn Evers e4dff26857 extension_ci: Use different target for nextest (#47738)
Release Notes:

- N/A
2026-01-27 09:11:32 +00:00
Joseph T. Lyons 969fb8fe03 Fix native agent thread history notify refresh (#47733)
Release Notes:

- N/A
2026-01-27 09:14:37 +01:00