Commit Graph
39175 Commits
Author SHA1 Message Date
Ben Kunkle bea759e70d Improve LSP button error message (#46377)
Greatly increases max width of the message we show, but truncates the
message to only ever show the first line

| LSP | OLD | NEW |
|-|-|-|
| JSON | <img width="720" height="199" alt="image"
src="https://github.com/user-attachments/assets/77c2299a-0fd7-4210-9e50-b99c60b07f54"
/> | <img width="1219" height="205" alt="Screenshot 2026-01-08 at 11 13
07 AM"
src="https://github.com/user-attachments/assets/dfdb53a6-56e4-483a-8abc-25d99f0a5ae6"
/> |
| PS1 | <img width="743" height="205" alt="image"
src="https://github.com/user-attachments/assets/378d5d41-a005-4205-b3fc-956e227321c5"
/> | <img width="1219" height="205" alt="Screenshot 2026-01-08 at 11 19
13 AM"
src="https://github.com/user-attachments/assets/b8d05fb1-20f8-4983-be94-cb5735d84faf"
/> |


Release Notes:

- N/A
2026-01-08 11:27:00 -05:00
Danilo Leal 4d0d5068cb agent: Make reject/accept keybindings consistent with restore/stage (#46373)
This primarily frees up, for example, `cmd-n` to create a new untitled
file if you're in the agent diff tab.

Release Notes:

- N/A
2026-01-08 12:48:06 -03:00
Dino 75a53eddfb Enable test-support features for some dev dependencies (#46370)
The `vim` crate's tests depend on `git_ui`, which transitively depends
on `recent_projects` with `test-support` enabled. This causes
`recent_projects` to include RemoteConnectionOptions::Mock` variant
handling. However, `git_ui` was not enabling its `test-support` feature,
causing compilation failures when the Mock variant was expected but not
available.

This commit enables the `test-support` feature for both `git_ui` and
`title_bar` dev-dependencies in the `vim` crate, ensuring the Mock
variant is consistently available during testing.

Release Notes:

- N/A
2026-01-08 15:22:03 +00:00
Richard Feldman 464e75bd9e Capture terminal output when thread is interrupted (#46306)
<img width="707" height="778" alt="Screenshot 2026-01-07 at 8 34 00 PM"
src="https://github.com/user-attachments/assets/59842820-079b-4d47-9bdd-f77300f8a60e"
/>

When the user presses Esc or the Stop button to interrupt a thread,
terminal tools now capture their output and include it in the tool
result. This allows the model to see what was happening in the terminal
when the user interrupted, so it can answer questions about the output.

## Changes

- `Thread::cancel()` now returns a `Task` that waits for tools to
respond to cancellation before flushing pending messages
- Terminal tool uses `select!` to detect cancellation signal and
immediately kills the terminal and captures output
- `run_turn_internal` uses `select!` to break out of event loop on
cancel
- Added test for terminal tool cancellation output capture

This is a follow-up to #46218 which added similar functionality for the
"Stop" button on individual terminal tool cards.

Release Notes:

- Interrupting the agent now captures terminal output so the model can
see what was running when you stopped it
2026-01-08 09:40:56 -05:00
Michael Benfield e34c8f9e65 Inline assistant tools: no more feature flag (#46107)
Release Notes:

- The inline assistant now has the ability to display messages and will
be less likely to insert non-code text.
2026-01-08 06:24:40 -08:00
Oleksiy Syvokon e66473ddbe Add ep split subcommand for dataset splitting (#46364)
Adds a new `ep split` command that splits JSONL datasets into multiple
output files with stratification by `repository_url` when present.

Example usage:

  ep split input.jsonl train.jsonl=80% valid.jsonl=rest

Release Notes:

- N/A
2026-01-08 13:31:26 +00:00
Danilo Leal dbe05a51ad lsp_button: Fix long LSP version label (#46359)
If the LSP version label ends up being super long, we now truncate it
and add a tooltip so you can see the whole thing. This avoids the
submenu width from being extremely big:

<img width="500" height="310" alt="Screenshot 2026-01-08 at 9  10@2x"
src="https://github.com/user-attachments/assets/4729b3f8-000d-4bb5-8908-dc243a2d6e7b"
/>

Release Notes:

- Fixed a visual bug where long LSP version labels would increase the
LSP submenu width too much.
2026-01-08 12:18:51 +00:00
Lukas Wirth b964784d3d remote: Introduce a proper mock remote connection (#46337)
Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-01-08 12:13:57 +00:00
Oleksiy Syvokon fb5df4d615 ep: Allow matching patches against files without trailing newlines (#46357)
A proper fix would be to add `\No trailing newline` marker and handle
it. For now, we do a simpler workaround

Release Notes:

- N/A
2026-01-08 11:54:26 +00:00
Iago Bermúdez 344ef28ef2 docs: Update "Custom Keybindings for Extension-Based Agents section" to include a troubleshooting note for defining an agent name (#46144)
## Description
When trying to setup the OpenCode external agent the other day, I was
having trouble setting the keybinding using the docs. The issue was that
it said to use the same name as the one written in the UI. While this
works when the external agent is defined using the `settings.json` file,
it didn't work when setting up the keybinding after installing the
extension through the extension marketplace.

Since the solution I found was to define the agent name as 'opencode'
instead of 'OpenCode' (which is the name that shows up in the UI) I
thought it would be appropiate to indicate that sometimes you might need
to set it up using a different name.

Release Notes:

- N/A
2026-01-08 08:46:18 -03:00
Kirill Bulatov e94f8a70c1 Fail early if clangd is downloaded on aarch Linux (#46346)
Part of https://github.com/zed-industries/zed/issues/46182

One caveat of this fix is that already downloaded clangd versions will
error with the old, "cannot start binary" error.
The new ones will be getting

<img width="1728" height="1084" alt="image"
src="https://github.com/user-attachments/assets/d2fdafed-6e60-4bc6-9eb2-b785fff65f3a"
/>

though.

Release Notes:

- N/A
2026-01-08 11:05:15 +00:00
Oleksiy Syvokon 8e015b7b0b ep: Handle errored requests in Anthropic batches (#46351)
Also, save all requests in a single sqlite transaction -- much faster.

Release Notes:

- N/A
2026-01-08 10:59:03 +00:00
Smit Barmase e0debd1364 settings_ui: Fix settings search missing results when BM25 finds partial matches (#46349)
Closes #44038

BM25 results were fully replacing fuzzy results, which caused some items
to disappear from search. For example, "Show Menus" wouldn’t show up
when searching for "menu". This happened due to limitations in the
Porter stemmer used by the library. Fuzzy search matched correctly, but
its results were getting overwritten. We now merge both result sets
instead.

Release Notes:

- Fixed an issue where settings search missed some results, like "Show
Menus" when searching for "menu".
2026-01-08 16:13:14 +05:30
Alex Miller 97cb473e23 workspace: Unpreview active tab when closing other tabs (#46294)
Un-preview the active tab when closing other tabs. 

In my mind the intent when clicking `Close Others` is to keep the
current tab around, so it should no longer be treated as a preview.
This also matches the VSCode behavior.


Release Notes:

- Make preview tab permanent after closing all other tabs
2026-01-08 10:42:01 +00:00
rari404 03b0a3ee25 terminal: Skip SHLVL when loading login shell environment (#46273)
Fixes #33958

## Problem

PR #44835 attempted to fix SHLVL starting at 2 by removing it from the
`env` HashMap passed to alacritty. However, that HashMap is only an
**overlay** — alacritty uses the parent process environment as a base
and applies the overlay on top. Since alacritty never calls
`env_remove("SHLVL")`, the terminal shell still inherits `SHLVL` from
Zed's process environment.

## Root Cause

The real issue is in `load_login_shell_environment()`:

1. `shell_env::capture()` spawns a login shell to capture environment
variables
2. That login shell increments `SHLVL` (from 0→1 or n→n+1)
3. The captured env (including the incremented `SHLVL`) is written to
Zed's **process environment** via `env::set_var`
4. When you open a terminal, the shell inherits Zed's `SHLVL` and
increments it again → starts at 2
5. On reload, `shell_env::capture()` runs again with the
already-elevated `SHLVL`, incrementing it further → +2 per reload

## Fix

Skip `SHLVL` when setting Zed's process environment in
`load_login_shell_environment()`. This prevents the login-shell capture
from polluting Zed's env, so terminals start fresh with the correct
`SHLVL`.
2026-01-08 10:02:25 +00:00
Xiaobo Liu 4d1e0f5112 windows: Improve error message for credential write failures (#46221)
Release Notes:

- Improved Display the actual Windows error message when writing
credentials to Credential Manager fails, instead of the generic "Failed
to write API key to keychain" message. This helps users diagnose issues
like permission problems.

Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
2026-01-08 10:01:42 +00:00
Cole Miller b2918432c4 editor: Don't paint hunk controls when the text area is too narrow to contain them (#46331)
Release Notes:

- N/A
2026-01-08 06:01:18 +00:00
Cole Miller 6384f77452 git: Don't show binary files in past commit view (#46312)
Also improves the commit view to use the same status-based buffer header
visual overrides as the project diff as a driveby.

Fixes https://github.com/zed-industries/zed/issues/45735

Release Notes:

- git: Binary files are no longer shown in garbled form when viewing an
old commit.
2026-01-07 22:07:41 -05:00
drbh d6ba0fcff3 Update pulldown-cmark to v0.13.0 to fix crash (#46267)
Hi Zed team thank you for the awesome editor!

I recently stumbled upon a markdown sequence that seems to cause a crash

```md
-	[	] -
\
-
```

*easier to read escape characters below

```rust
let crash_input = "-\t[\t] -\r\\\n-"
println!("{}", crash_input)
```

## how to reproduce

1. copy the markdown above
2. save the file
3. `[shift]` + `[cmd]` + `p` to open the command palette
4. select `markdown: open preview`
5. crash

I've confirmed that the issue is a bug in pulldown-cmark version 12, and
has been resolved in version
[v0.13.0](https://github.com/pulldown-cmark/pulldown-cmark/releases/tag/v0.13.0)
and specifically fixed in
https://github.com/pulldown-cmark/pulldown-cmark/pull/1017

this PR simply bumps the pulldown-cmark version in zed which resolves
the crash on my local machine.


## recording 



https://github.com/user-attachments/assets/dc77132f-0d43-40f3-9841-0bf34fe714fb


Release Notes:

- Fixes crash due to markdown parsing via bumping pulldown-cmark
2026-01-08 02:15:34 +01:00
Agus Zubiaga 8d5c13c071 ep cli: Resume from output file (#46293) 2026-01-07 21:50:46 -03:00
Agus ZubiagaandMax Brunsfeld 0d17a174fc Create project entries for entry ancestors when scanning is disabled (#46300)
Release Notes:

- N/A

---------

Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
2026-01-07 16:04:27 -08:00
Cole Miller 1dee2277a7 git: Fix base text in branch diff and text diff view not being highlighted (#46302)
Release Notes:

- Fixed deleted portions of hunks in the branch diff and text diff views
not being syntax-highlighted.
2026-01-08 00:03:33 +00:00
Oleksandr Kholiavko f6f1c64a40 Add variable row height mode to table UI element (#46190)
## Add variable row height mode to data table infrastructure

This PR introduces support for variable row heights in the data table
component, laying the groundwork for more flexible tabular data
rendering in Zed.

**Context:**  
This is the first in a series of infrastructure-focused PRs split out
from the [original CSV preview draft
PR](https://github.com/zed-industries/zed/pull/44344). The draft PR
remains open as a reference and will be incrementally decomposed into
smaller, reviewable pieces like this one.

**Details:**  
- Adds a variable row height mode to the data table, enabling future
features that require rows of differing heights (such as CSV preview
and, eventually, database table views).
- No user-facing changes; this is an internal refactor to support
upcoming functionality.

**Thanks:**  
Big thanks to @Anthony-Eid for pairing sessions and guidance on how to
best structure and land these changes incrementally.

---

Release Notes:

- N/A (internal infrastructure change, no user impact)
2026-01-07 22:04:38 +00:00
Gaauwe Rombouts 419a214c79 docs: Add Tailwind CSS mode instructions (#46292)
Now that https://github.com/zed-industries/zed/pull/45352 is in preview,
this updates the docs at https://zed.dev/docs/languages/tailwindcss with
instructions similar to
https://github.com/tailwindlabs/tailwindcss-intellisense?tab=readme-ov-file#filesassociations

Release Notes:

- N/A
2026-01-07 22:36:41 +01:00
Ben Kunkle f367b7cdd2 settings_ui: Organize page data (#46275)
Closes #ISSUE

Organizes the giant list of settings UI items in `page_data.rs` a bit so
that sections are split out in sub functions that (for the most part)
return constant size arrays. Page items is also converted to a
`Box<[...]>` instead of a Vec.

The goal here is to have working breadcrumbs when in the settings UI
file (e.g. `fn general_page() > fn general_section()`), and to escape
the `vec![]` macro so that `rust-analyzer` works more consistently.

This should help both humans and LLMs know where they are in the file
and use the outline to navigate it instead of having to read the whole
thing to have an idea of what is going on.

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-01-07 16:14:00 -05:00
Ben Kunkle e61f31ee4a mercury: Fix spurious newline removal (#46289)
Closes #ISSUE

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-01-07 21:10:07 +00:00
Mikayla MakiandClaude Opus 4.5 8d8107cff7 gpui: Actually remove the Result from AsyncApp (#45809)
Depends on: https://github.com/zed-industries/zed/pull/45768

Refactor plan:
https://gist.github.com/mikayla-maki/6c4bf263fd80050715ba01f45478796e
Overall plan:
https://gist.github.com/mikayla-maki/7bb5078e4385a2e683e1e1eb40d17d38

This is the big one.

Release Notes:

- N/A

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 12:48:24 -08:00
Cole Miller 5349c35b1c git: Fix project diff sorting not matching the git panel when tree view is in use (#46283)
The tree view effectively always sorts by status, not by path.

Release Notes:

- Fixed incorrect ordering of paths in the project diff when using the
git panel's tree view.
2026-01-07 20:03:27 +00:00
John Tur 1b74b6e71b Use transparent clear color for opaque windows on Linux (#46281)
https://github.com/zed-industries/zed/pull/45423 changed the Blade
renderer to use a white clear color for "opaque" windows. This interacts
poorly with our client-side decorations, causing the shadows around the
window to be drawn over a white background.

Release Notes:

- N/A
2026-01-07 19:39:57 +00:00
Michael Benfield 72bec6324d Remove BACKWARDS from buffer search settings
This is only applicable to vim search.
2026-01-07 10:58:59 -08:00
Oleksiy SyvokonandAgus Zubiaga e3904addbc ep: Add file deletion support in unified diff parsing (#46279)
- Replace `is_new_file: bool` with `FileStatus` enum
(Created/Modified/Deleted) in udiff.rs to properly track file status
through diff operations
- Handle deleted files in `apply_diff` by calling
`project.delete_file()`
- Fix diff serialization in reorder_patch.rs to output `+++ /dev/null`
for file deletions and parse both `--- /dev/null` and `+++ /dev/null`
correctly
- Add bounds check for edit ranges exceeding buffer length

Also includes edit_prediction_cli improvements:
- Track `context_range` and `editable_range` in ExampleBuffer for more
precise prompt formatting
- Export MAX_CONTEXT_TOKENS and MAX_REWRITE_TOKENS from zeta2
- Wait for buffer parsing before computing ranges
- Respect NO_COLOR env var and enable info-level logging


Release Notes:

- N/A

Co-authored-by: Agus Zubiaga <agus@zed.dev>
2026-01-07 18:54:22 +00:00
Agus Zubiaga e9c4dff857 ep cli: More substatus granularity (#46266)
Helps narrow down steps that are taking too long

Release Notes:

- N/A
2026-01-07 15:49:18 -03:00
Lena 284c9f7ba3 Polish the Closed Bugs GH workflow (#46271)
Remove the attempts to have these issues land in the same 'inbox' (the
existing project board for triage). Since they're closed, the automated
workflow of the project board will move them to the 'Closed'
column/status even with the API call specifically moving them to
'Incoming' instead. It is what it is, we'll have a separate project
board for this.

Also:
- don't look at comments on PRs
- don't freak out if the issue has no type
- add a permissions block as a defensive measure (in case someone adds
secrets.GITHUB_TOKEN later)
- add a timeout to avoid hanging out for six hours or whatever the
default is
- add some logging.

Release Notes:

- N/A
2026-01-07 18:28:01 +01:00
Oleksiy Syvokon f902ef8902 ep: Fix code block extraction to require closing fence at line start (#46270)
`extract_last_codeblock` was using `find()` to locate closing fences,
which would match backticks anywhere in the text. This caused incorrect
parsing when the content contained inline backticks or nested code
blocks, resulting in wrong diffs.

Fix by requiring the closing fence to be preceded by a newline.
Release Notes:

- N/A
2026-01-07 16:52:04 +00:00
Richard Feldman aaa7f705f2 Let agent see output of killed terminal tools (#46218)
Previously, if you stopped the terminal prematurely, the agent would
assume the terminal process had timed out. Now it knows what happened
and can see the output:

<img width="718" height="885" alt="Screenshot 2026-01-07 at 12 40 23 AM"
src="https://github.com/user-attachments/assets/a5ea14b2-249c-4ada-9f20-d6b608f829e5"
/>


Release Notes:
- Stopping the terminal tool now allows the agent to see its output up
to that point.
2026-01-07 10:58:18 -05:00
10379d759c Make tasks inherit their callers priority (#46179)
Additionally this extracts more functionality into the RunnableVariant which is renamed to GpuiRunnable. 

Release Notes:

- N/A

---------

Co-authored-by: Lukas Wirth <lukas@zed.dev>
Co-authored-by: Cole Miller <cole@zed.dev>
2026-01-07 15:52:10 +00:00
Joseph T. Lyons 6843dd2554 Bump Zed to v0.220 (#46265)
Release Notes:

- N/A
2026-01-07 15:49:57 +00:00
Kirill Bulatov 0042229e10 Do not try to open PDF, zip and other binaries (#46262)
Follow-up to https://github.com/zed-industries/zed/pull/44819

Stop doing this in more cases:

<img width="1728" height="2168" alt="image"
src="https://github.com/user-attachments/assets/a82f7217-3b7a-4ca9-bb12-c3098b3e9913"
/>

Release Notes:

- Do not try to open PDF, zip and other binaries as text
2026-01-07 15:27:55 +00:00
Agus Zubiaga 4949c900c0 ep cli: Make the udiff parsing more resilient (#46264)
We will now properly handle `\ No newline at the end of file` after
context lines and repeated occurrences. Also, when line numbers are
present in hunk headers, we will use them to disambiguate the location
when the context is not unique enough.

Release Notes:

- N/A
2026-01-07 15:14:17 +00:00
Ben Kunkle 7ac02d7713 Add action tracking to enable token healing for Sweep (#46212)
Closes #ISSUE

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-01-07 09:58:24 -05:00
Joseph T. Lyons 44ed580aa0 Add fallback message when preview changelog is empty (#46260)
Avoid publishing preview releasing that say nothing in the release
notes:

<img width="947" height="258" alt="SCR-20260107-ioxx"
src="https://github.com/user-attachments/assets/97204551-8f55-43fb-8c9c-35491a4f1378"
/>

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-01-07 14:24:02 +00:00
Oleksiy Syvokon 5d88054ada ep: Fix revision resolution for tilde expressions (#46258)
When a revision like `abcd~1` wasn't found locally, the function would
fetch and then return `FETCH_HEAD`, which points to the tip of the
fetched branch rather than the requested revision expression.

Now it re-resolves the original revision after fetching, correctly
handling tilde expressions and other git revision syntax.

Release Notes:

- N/A
2026-01-07 14:18:54 +00:00
Oleksiy Syvokon 3b31ca513b ep: Fix incorrect example count in failure summary (#46257)
The 'X of Y examples failed' message was counting completed steps/tasks
instead of actual examples. For example, with 2 examples each going
through Load and Context steps, it would report '1 of 3' instead of '1
of 2'.

Release Notes:

- N/A
2026-01-07 14:09:33 +00:00
Kirill Bulatov 68e3b93002 Skip worktree trust queries for remote collab project clients (#46256)
Release Notes:

- Skip worktree trust queries for remote collab project clients
2026-01-07 14:06:17 +00:00
Agus Zubiaga 7333fd4dfd ep cli: Clean leftover git locks (#46255)
Sometimes git locks are left over from crashed runs. We now assume
there's only one process of the CLI running and clean them up. If we
want to run multiple processes at the same time, we should consider our
own file-based lock, but it seems fine for an internal tool.

Release Notes:

- N/A
2026-01-07 14:01:57 +00:00
Agus Zubiaga d066181d70 ep cli: Handle opening buffers from files created by the edit history (#46254)
Since we don't persist new files to disk, they don't have entries, so we
have to look them up in memory first.

Release Notes:

- N/A
2026-01-07 13:52:42 +00:00
Lena 963c2afb48 Override project status in Closed Bugs workflow (#46253)
Since the project board to which the closed bugs with new comments are
added might have an automated workflow for moving closed issues to the
"Done" status, we need to override the status to ensure the bugs are
actually surfaced to the team and not buried in "Done".

Release Notes:

- N/A
2026-01-07 13:34:56 +00:00
Lena e8f03d70fd Fix the action version in Closed Bugs GH workflow (#46251)
fix-up for https://github.com/zed-industries/zed/pull/46249 because
testing github workflows is fun and opus 4.5 thinks it's amusing.

Release Notes:

- N/A
2026-01-07 12:56:33 +00:00
Lena fa41a030b8 Add GH workflow to surface comments on closed bugs (#46249)
Sometimes bugs come back or are not fixed all the way. We want to
preserve the context of the issue we've closed prematurely so instead of
always making people open a new github issue in this case we want to be
able to notice if someone* comments on a closed bug and decide what to
do about it.

Before:

Bug is closed → A user can again/still reproduce it on a new version and
leaves a comment → Maybe someone sees the notification about it, maybe
not; maybe they see it but forget to act on it right away and it's lost.

After:

Bug is closed → A user can again/still reproduce it on a new version and
leaves a comment → The issue is added to a project board where it's
visible until someone makes a call about it (maybe the comment was “oh
my glob i'm so happy this was fixed” and no action is needed, or maybe
the issue must be reopened as a regression).

*Someone in this case means (1) not a bot, (2) not a member of staff.

Release Notes:

- N/A
2026-01-07 13:40:14 +01:00
Dino 0a19cab460 ui_input: Only render number field border on focus (#46165)
The `NumberField.render` method was always rendering a `border_1` for
the number input, even when not focused. Even though it was using
`cx.theme().colors().border_transparent`, some themes don't have this
value set to a fully transparent color so it ends up looking a little
bit weird.

As such, this commit updates the way the border is rendered, to ensure
it's actually only rendered, i.e., the `border_1` method is only called,
when the field is actually focused.

Release Notes:

- Improved rendering of border on number field's input to ensure it's
only rendered when the field is focused
2026-01-07 10:52:51 +00:00