Commit Graph
34451 Commits
Author SHA1 Message Date
Piotr OsiewiczandJakub Konka d73e1c9ea9 build: Bump Rust version to 1.93 (#47358)
Release Notes:

- N/A

---------

Co-authored-by: Jakub Konka <kubkon@jakubkonka.com>
2026-01-23 13:22:41 +01:00
Ben Brandt f9bbdde231 acp: Promote registry as default way of installing new agents (#47464)
Release Notes:

- acp: Add the ability to install new Agents via the ACP Registry
2026-01-23 13:03:32 +01:00
Lukas Wirth 98c97a55f7 agent_ui: Prioritize file completions that are closer to recently viewed files (#47466)
Release Notes:

- Improved @ file completions in agent panel to be more accurate
2026-01-23 11:45:02 +00:00
Ben Brandt b7faad574b acp: Support unstable session/resume request (#47387)
This is behind the beta flag. But some agents don't support a full load
flow, but rather just a resume from the current state of the session.
They don't emit notifications for past thread messages, which isn't
ideal, but the user can at least resume their work without completely
losing it.

We use it as a fallback if the agent doesn't support loading only, and
signal to the user that they won't be able to see previous messages.

Release Notes:

- N/A
2026-01-23 11:38:38 +00:00
Danilo Leal 708e68c5dd agent_ui: Enable the message queue feature for external agents (#47379)
Closes https://github.com/zed-industries/zed/issues/47330

This PR moves the queue logic out of the native Thread into the shared
UI layer (thread view) to enable it for external agents. There's a key
difference in behavior, though, between native and external agents:
queued messages in the former will be sent in the next turn boundary,
given we can easily tell this, whereas for the latter, queued messages
will be sent by the end of the generation. We'd need an ACP-level change
to provide exactly the same UX between both types of agents, and I
figured that's better to have _some_ version of the feature for external
agents as opposed to not having it all due to this difference.

Release Notes:

- Agent: Made the message queue feature available for external agents as
well.
2026-01-23 08:36:55 -03:00
MatthewandGaff cd6ac39996 remote: Fix when .ssh config is missing (#47310)
Closes #47309

Rewroked the file parsing loop so that if one file is missing it doesn't
cause the loop to exit prematurely.

Release Notes:
* Fixed issue where user .ssh/config file would not parse if global ssh
config file was not present.

---------

Co-authored-by: Gaff <226665+Gaff@users.noreply.github.com>
2026-01-23 11:31:37 +00:00
Ling Hengqian 6bdcef581a Relax the checks on xdg_wm_base to ensure compatibility with Weston 9 (#47185)
Closes #47128

Release Notes:

- Relax the checks on `xdg_wm_base` to ensure compatibility with Weston
9.
2026-01-23 11:40:51 +01:00
Lena 016180fd39 Increase operations/run for stalebot (#47459)
It's been running out of operations before it could do everything it's
supposed to do.

Release Notes:

- N/A
2026-01-23 09:49:50 +00:00
Anthony Eid 6cce07757a git: Fix graph view slow initial loading times (#47453)
The git graph view was missing a `cx.notify` when it loaded commits from
the data layer, causing the graph to seem unresponsive until a render
was triggered by something else.

Release Notes:

- N/A
2026-01-23 08:18:04 +00:00
a3174dab48 Add vim/emacs modeline support (#44210)
Many editors such as vim and emacs support "modelines", a comment at the
beginning of the file that allows the file type to be explicitly
specified along with per-file specific settings

- The amount of configurations, style and settings mapping cannot be
handled in one go, so this opens up a lot of potential improvements.
- I left out the possiblity to have "zed" specific modelines for now,
but this could be potentially interesting.
- Mapping the mode or filetype to zed language names isn't obvious
either. We may want to make it configurable.

This is my first contribution to zed, be kind. I struggled a bit to find
the right place to add those settings. I use a similar approach as done
with editorconfig (merge_with_editorconfig). There might be better ways.

Closes #4762

Release Notes:

- Add basic emacs/vim modeline support.

Supersedes #41899, changes:
- limit reading to the first and last 1kb
- add documentation
- more variables handled
- add Arc around ModelineSettings to avoid extra cloning
- changed the way mode -> language mapping is done, thanks to
`modeline_aliases` language config
- drop vim ex: support
- made "Local Variables:" handling a separate commit, so we can drop it
easily
- various code style improvements

---------

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
2026-01-23 07:55:39 +00:00
Cameron Mcloughlin a1f4329dee agent: Multiline review comments (#47448)
Multiline review comments. Also changes a few existing review comment
types to use anchors instead of absolute offsets

Release Notes:

- N/A
2026-01-23 06:25:42 +00:00
c51f7b8a66 git: Add graph support (#44434)
Closes #26866

### Summary
Adds a git graph to Zed, accessible via the `git_graph::Open` action if
a project has an active repository. There's still more to do, but this
is a solid foundation to expand upon. The code structure is in line with
Zed's codebase and shouldn't require architectural changes to add
missing features.

The git graph can be opened via the command palette (`git graph: open`)
or by binding a key to `git_graph::Open`. It's available when the
project has an active git repository.

### Architecture

Similar to the Debugger, the git graph is split between a data layer and
a view/UI layer. When the view layer is rendering, it queries the data
layer for its active state. This setup allows the data layer to lazily
request graph data (only when needed for rendering), abstracts collab
from the view layer, allows most of the data loading to happen on a
background thread, and makes caching easy to implement.

#### Graph Loading

The graph data is loaded in two phases:
1. `Repository::graph_data()` streams commit structure (SHA, parents,
refs) in chunks of 1000 via `git log`
2. `CommitDataReader` lazily fetches full commit details (author,
timestamp, subject) on-demand using a persistent `git cat-file --batch`
process

This two-phase approach makes the initial loading of the graph as fast
as possible, because `git log` takes significantly longer when all the
needed graph data is queried through it. Zed then lazily loads commits
in the user's viewport through `cat-file --batch`. This makes scrolling
to any place in the graph extremely snappy and benefits the
collaborative architecture by only fetching data needed to render the
graph. It also allows Zed to share commit data between different graph
visualizations (e.g., date order vs. topological order).

#### Performance

Tested on both the Zed and LLVM repositories with good performance in
both cases. The two-phase loading approach and lazy fetching keep the UI
responsive even with large commit histories.

#### Testing 

I added property testing that builds randomized commit graphs and
verifies that the graph is constructed correctly. This also works as an
integration test and will be expanded in the future to test collab graph
visualization, graph filtering, commit actions, etc.

### New Crate
- `git_graph` (GPL-licensed) — contains UI and graph computation logic

### Not Yet Implemented
- Remote repository support (collab)
- Filtering by branch
- Commit actions (checkout, cherry-pick, etc.)
- Search
- Open commit view for selected commit
- Resizable columns 
- Column filtering

#### Reference
<img width="1624" height="976" alt="Screenshot 2025-01-22 at 8 15 39 PM"
src="https://github.com/user-attachments/assets/0f10924a-3964-462f-b320-42d84d02f7bf"
/>

Special thanks to [Alberto Slavica](https://github.com/pyundev) for
submitting #44405, which was a good base to work off of.

Release Notes:

- git: Add initial version of git graph

---------

Co-authored-by: pyundev <pyundev@users.noreply.github.com>
Co-authored-by: Cole Miller <cole@zed.dev>
Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
2026-01-22 20:53:23 -05:00
Muhammad Salar Khan fa3e8bf7e3 Make auto-signature help respect popover delay (#46745)
Closes #46191

Release Notes:

- Make the auto signature popover — `"auto_signature_help": true` —
respect `hover_popover_delay`.
2026-01-23 00:25:52 +00:00
Cole Miller a289fcf354 git: Fix panic when committing from side-by-side view (#47425)
When committing, it was possible for the left-hand side multibuffer to
get the updated base text (via the `buffer_changed_since_sync`
mechanism) without updating its diff snapshot for that buffer (via the
diff subscription), causing a mismatch between that multibuffer's diff
state and its buffer state. The fix is to ensure for inverted diffs that
we always update pull an updated diff snapshot as part of
`sync_from_buffer_changes`.

This also removes some code that we added in #44838 to sync the
left-hand side multibuffer when edits on the right-hand side invalided
diff hunks. Instead, the left-hand side will just sync the next time the
diff recalculates when this happens, and will always consider hunks from
the last diff calculation as valid--so there will be a short window
where the diff transforms and `diff_hunks_in_range` don't match between
the two sides. That's okay because we don't rely on this in the display
map--the code that translates positions between the two sides accesses
the diff's `InternalDiffHunk`s directly rather than going through a
multibuffer API.

Release Notes:

- N/A
2026-01-22 16:17:23 -05:00
Cole Miller 540bffcf62 git: Fix double-lease panic when syncing selections in side-by-side diff (#47430)
Release Notes:

- N/A
2026-01-22 21:10:16 +00:00
Smit BarmaseandLukas 37f8442d28 terminal: Fix test_terminal_eof test failing on fish shell (#47410)
It turns out Alacritty sends `AlacTermEvent::ColorRequest` when using
the fish shell. That path relies on `cx.theme`, so this change is needed
for it to pass.

Co-authored-by: Lukas <lukas@zed.dev>

Release Notes:

- N/A
2026-01-22 23:57:46 +05:30
Smit Barmase 206dd41579 Update .mailmap (#47413)
This PR updates the .mailmap file to merge some more commit authors.

Release Notes:

- N/A
2026-01-22 23:57:26 +05:30
Marshall BowersandNeel c3870d18f3 agent: Add thinking toggle for Zed provider (#47407)
This PR adds a thinking toggle for controlling whether to use thinking
for a model in the Zed provider:

<img width="645" height="142" alt="Screenshot 2026-01-22 at 12 34 01 PM"
src="https://github.com/user-attachments/assets/9aa543fe-e708-4840-8b38-1a6fbcb78388"
/>

Previously we would create separate "Thinking" variants of the models
that supported thinking in the model selector.

This only applies to Anthropic models in the Zed provider, currently.

This is gated behind the `cloud-thinking-toggle` feature flag.

Release Notes:

- N/A

---------

Co-authored-by: Neel <neel@zed.dev>
2026-01-22 18:08:32 +00:00
Smit BarmaseandLukas Wirth 028de6dafc terminal: Give child processes time to exit on their own (#47408)
Closes #44003

Supersedes https://github.com/zed-industries/zed/pull/45777

Co-authored-by: Lukas <lukas@zed.dev>

Release Notes:

- Fixed an issue where the terminal would sometimes fail to write shell
history.

---------

Co-authored-by: Lukas Wirth <me@lukaswirth.dev>
2026-01-22 23:19:34 +05:30
Oleksiy Syvokon abac902e12 ep: Option to save evaluation report in JSON (#47409)
Release Notes:

- N/A
2026-01-22 17:46:21 +00:00
Katie GeerandMichael Benfield 380621a1e8 Add "Agent Panel Error Shown" telemetry with ACP error details (#46848)
Adds a new "Agent Panel Error Shown" telemetry event that fires when
users see errors in the agent panel. For errors from external ACP agents
(like Claude Code), we capture additional details.

Previously, we had no visibility into what errors users were
encountering in the agent panel. This made it difficult to diagnose
issues, especially with external agents.

The new telemetry event includes:
- `agent` — The agent telemetry ID
- `session_id` — The session ID
- `kind` — Error category (payment_required, authentication_required,
refusal, other, etc.)
- `acp_error_code` — The ACP error code when available (e.g.,
"InternalError")
- `acp_error_message` — The ACP error message when available

Release Notes:

- N/A

---------

Co-authored-by: Michael Benfield <mbenfield@zed.dev>
2026-01-22 09:43:48 -08:00
Oleksiy Syvokon a9ddc41f62 ep: Don't fail on lines with inference errors (#47406)
Release Notes:

- N/A
2026-01-22 17:32:03 +00:00
KyleBarton 0674d812b9 Parse output from older version of the devcontainer CLI by looking for a JSON object in plaintext (#47403)
Closes #46852

The devcontainer CLI which ships with VS Code can be added to the user's
`PATH` with the VS Code command `Dev Containers: Install devcontainer
CLI`. This version of the CLI is older than what Zed was developed with,
and as a result, it doesn't separate its json-formatted output and its
plaintext metadata into distinct output streams. This broke parsing in
the CLI adapter in Zed. This fix accounts for that, and if parsing
fails, attempts to find a relevant JSON object in plaintext and tries to
parse that.

Tested with VSCode's version of the devcontainer CLI (`0.80.1`) as well
as the up-to-date version (`0.81.1`)

Release Notes:

- Improved parsing of devcontainer CLI output when using earlier
versions
2026-01-22 09:14:53 -08:00
Pedro Paulo MagnoandKirill Bulatov b220d4d50e workspace: Persist dock state for empty workspaces (#45966)
Closes #4568

Release Notes:

- Fixed project-less workspaces not persisting their dock state

Co-authored-by: Kirill Bulatov <kirill@zed.dev>
2026-01-22 16:35:59 +00:00
Maj Soklič df15d93222 Support Insider variants of Code and VSCodium for settings.json import (#47247)
Release Notes: 

- Import VS Code Insiders and VSCodium Insiders user settings
(`settings.json`).

Note:
- If multiple VS Code-family installs have a `settings.json`, Zed
selects the last matching path in its search order (so Insiders is
preferred over stable when both exist).
2026-01-22 18:22:47 +02:00
Xiaobo Liu 01531d2a56 terminal: Clear hovered link when no target found (#47134)
Release Notes:

- Fixed clear hovered link when no target found

Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
2026-01-22 16:22:33 +00:00
Kirill Bulatov 433e8149b1 Revert "Make apostrophes not brackets in markdown (#46414)" (#47396)
This reverts commit d1b18fbaed.


https://github.com/zed-industries/zed/commit/8cd3bd90aaf6aff809d3962e9ca67d1548d50dc9
was landed interim which has a test that's broken now.

Something-something build queue.

Closes #ISSUE

Release Notes:

- N/A
2026-01-22 16:21:25 +00:00
Oleksiy Syvokon 72d0a321c3 ep: Add line-level exact match metric (#47383)
Release Notes:

- N/A
2026-01-22 16:18:32 +00:00
Zachiah Sawyer d1b18fbaed Make apostrophes not brackets in markdown (#46414)
Closes #45912

Release Notes:

- Made apostrophes not brackets in markdown
2026-01-22 17:48:28 +02:00
Ben Kunkle c02357e396 zeta2: Cut oldest events to maintain prompt size budget (#47394)
Closes #ISSUE

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-01-22 10:42:10 -05:00
Jens KourosandKirill Bulatov 90dc94b66e Enable configurable dismissal of language server notifications that do not require user interaction (#46708)
Closes #38769

Release Notes:

- Dismiss server notifications automatically with
`"global_lsp_settings": { "notifications": { "dismiss_timeout_ms": 5000
} }` settings defaults.

---------

Co-authored-by: Kirill Bulatov <kirill@zed.dev>
2026-01-22 15:12:21 +00:00
MostlyK cb13a19d8a repl: Add initial notebook execution + KernelSession abstraction (#43553)
Coming from discussion on #25936 and
https://github.com/zed-industries/zed/pull/19756 .
This PR introduces the KernelSession abstraction and adds basic notebook
cell execution inside NotebookEditor.

The following provides a base starter for the development on Notebooks.

What this PR includes today:

Release Notes:

- KernelSession trait extracted. Both REPL and NotebookEditor now share
the same routing mechanism.
- NotebookEditor can launch kernels, execute code cells, and display
outputs.
- Basic cell operations: run current cell, run all, move up/down, add
code/markdown blocks. Keybindings follow Jupyter defaults.


Next Steps:

- [x] Editing support for markdown and code blocks.
- Buffer integration instead of temporary cell text.
- [x] Proper focus behavior when executing or adding cells.
- Kernel control UI.

A little far fetched steps:

- Vim Support
- Cell Handling Improvement and other convenient features and design
from other editors
- Ability to have better parsing for AI Support. 


I have attached a video of showcasing some of the features:


https://github.com/user-attachments/assets/37e6f3e5-2022-45f0-a73d-2dd01ebc2932
2026-01-22 09:00:29 -06:00
Danilo Leal edf7dc3155 settings_ui: Fix font weight number field rendering (#47384)
Closes https://github.com/zed-industries/zed/issues/47353

Release Notes:

- Settings Editor: Fixed a bug with the number field rendering of the
font weight setting.
2026-01-22 10:44:31 -03:00
Danilo Leal 9aa8d1a7dd agent: Don't show inline assistant feedback buttons if setting is disabled (#47382)
Closes https://github.com/zed-industries/zed/issues/47347

Release Notes:

- Agent: Fixed a bug where the inline assistant feedback buttons where
being displayed despite the setting "Enable Feedback" was turned off.
2026-01-22 10:15:53 -03:00
Michael Barth f2f900bbd5 lsp: Skip serializing of params if unit type (#46027)
Closes #45994 

Per the JSON-RPC specification, `params` "MUST be provided as a
Structured value" or the member "MAY be omitted." See specification
here: https://www.jsonrpc.org/specification#request_object

The code was passing in unit `()` for params which serde_json was
serializing to `null` which is not valid.

This pulls request adds an `is_unit` function and annotates the `params`
fields in the `Request` and `Notification` structs with the following:
 ```rs
#[serde(default, skip_serializing_if = "is_unit")]
```

so that the field will be omitted if the type is unit. This does also introduce a `'static` bound to these structs.

> [!WARNING]
> While this seems to me like a simple change, I am not super familiar with Rust, please look at this PR with extra scrutiny. The last thing I want to do is break everyone's LSP integration.


Release Notes:
- LSP integrations: send language server shutdown requests with correct parameters
2026-01-22 15:06:02 +02:00
Ben Brandt c0baaadc05 agent: Clearer distinction that we are in Text Thread history (#47295)
Some users were a bit confused that the history between zed agent + text
threads is split up now. Making it a bit clearer for the users still
using text threads which history they are currently looking at.

Release Notes:

- N/A
2026-01-22 12:43:42 +00:00
Oleksiy Syvokon f5a2cf3124 ep: Don't log steps that took <500ms (#47371)
Release Notes:

- N/A
2026-01-22 12:17:55 +00:00
Lukas Wirth 3af858f3c7 Bump alacritty-terminal (#47372)
Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-01-22 12:09:01 +00:00
Rocky Shi a4d893c421 rust: Highlight enum variants as types (#45546)
Closes [#ISSUE](https://github.com/zed-industries/zed/issues/14489)

Release Notes:

- Fix Rust enum variants with no lower-case highlighted as constants

Screenshot:

<img width="401" height="280" alt="image"
src="https://github.com/user-attachments/assets/cd67a576-3c41-452d-9c6b-b3c259cee556"
/>
2026-01-22 12:52:14 +01:00
Haojian Wu 36cacc92fe Add missing #elifdef, #elifndef directives to C/C++ highlights (#45672)
Release Notes:

- Add missing #elifdef, #elifndef directives to C/C++ highlights.
2026-01-22 12:51:31 +01:00
Ben Brandt d3872a0891 acp: Add beta label to ACP registry (#47369)
Release Notes:

- N/A
2026-01-22 11:44:44 +00:00
Ben Brandt 94fa6982bf acp_thread: Rename resume to retry (#47370)
Changing the name to better capture what this message does and also
avoid confusion with the actual session/resume method in ACP

Release Notes:

- N/A
2026-01-22 11:39:46 +00:00
Oleksiy Syvokon 1d1bc1821b Add ep import-batch to download finsihed Anthropic batches (#47364)
Release Notes:

- N/A
2026-01-22 11:34:51 +00:00
Lukas WirthandMax Malkin cad1c3eef9 project_panel: Show Reveal in File Manager on wsl (#47288)
Assimilates https://github.com/zed-industries/zed/pull/46856 and adds
support for reveal file manager in the project panel on wsl. Closes
https://github.com/zed-industries/zed/pull/46856

Release Notes:

- Fixed "Reveal in File Manager" not working for WSL remote connections
on Windows.
- Show "Reveal in File Manager" in the project panel context menu on WSL

---------

Co-authored-by: Max Malkin <maxim_malkin@outlook.com>
2026-01-22 11:24:23 +00:00
Ben Brandt 929c5f6a74 acp: Optimize registry refresh (#47367)
Before we were checking it even if you weren't using registry agents.
Now happens less frfrequently, and only when you are actually using
registry agents.

Release Notes:

- N/A
2026-01-22 11:19:32 +00:00
Lukas Wirth aa7c61219b workspace: Add close project menu item (#47365)
cc https://github.com/zed-industries/zed/discussions/42163

Release Notes:

- Added a menu item to close the current project, going back to a clean
window state
2026-01-22 12:15:24 +01:00
Ben Brandt 000f33c116 acp: Support the session_info_update notification (#47363)
Release Notes:

- N/A
2026-01-22 11:06:13 +00:00
Lukas Wirth e4b3422b0e agent_ui: Defer spawning agents until the agent panel has been opened (#47355)
Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-01-22 10:18:13 +00:00
Piotr Osiewicz 44c68b0e1f fs: Use public-api-only tests (#47149)
This reduces time needed to build tests for fs from 1.2s to 0.6s.
Release Notes:

- N/A
2026-01-22 10:22:29 +01:00
Piotr Osiewicz 00d72f2897 worktree: Use public-api-only tests (#47152)
- **settings: Do not leak type serialization into downstream crates**
- **worktree: Separate integration tests into separate target**

Release Notes:

- N/A
2026-01-22 10:22:04 +01:00