Commit Graph
31406 Commits
Author SHA1 Message Date
34ed9bf310 search: Stream project search results sooner (#45245)
- **project search: Stream result buffers sooner in remote scenarios**
- **Fix remote server build**

Closes #ISSUE

Release Notes:

- Improved performance of project search in remote projects.

---------

Co-authored-by: Smit <smit@zed.dev>
Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
Co-authored-by: Conrad <conrad@zed.dev>
2026-01-09 20:22:29 +01:00
Xin Zhao c15ee80b28 languages: Fix Python venv auto-activation for PowerShell 7 (#46465)
Summary
This PR fixes an issue where Python virtual environments (`venv`, `uv`,
etc.) were not automatically activated when opening a terminal using
PowerShell 7.

Details
`ShellKind` distinguishes between the legacy Windows PowerShell
(`ShellKind::PowerShell`) and the newer PowerShell 7
(`ShellKind::Pwsh`). Previously, the logic in
`resolve_venv_activation_scripts` only checked for
`ShellKind::PowerShell`, causing `activate.ps1` resolution to fail for
`Pwsh` users.
This change adds `ShellKind::Pwsh` to the resolution list, mapping it to
`activate.ps1` just like the legacy PowerShell.

Release Notes:

- Fixed Python virtual environments not automatically activating in
PowerShell 7
2026-01-09 18:48:37 +00:00
Hansanddino 8cd3bd90aa vim: Add use_match_quotes setting for % motion, default is true (#42615)
Add a `match_quotes` parameter to the `vim::Matching` action that
controls whether the `%` motion should treat quote characters (', ", `)
as matching pairs.

In Neovim, `%` only matches bracket pairs (([{}])), not quotes. Zed's
existing behavior includes quote matching, which some users prefer. To
preserve backwards compatibility while allowing users to opt into
Neovim's behavior, this PR:

1. Adds an optional `match_quotes` boolean parameter to the
   `vim::Matching` action
2. Updates the default vim keymap to use ["vim::Matching", {
   "match_quotes": true }], preserving Zed's current behavior
3. Users who prefer Neovim's behavior can rebind `%` in their keymap:

```
{
    "context": "VimControl && !menu",
    "bindings": {
        "%": ["vim::Matching", { "match_quotes": false }]
    }
}
```

When `match_quotes` is `false`, the `%` motion will skip over quote
characters and only match brackets/parentheses, matching Neovim's
default behavior.

Release Notes:

- vim: Added match_quotes parameter to the vim::Matching action to control
whether % matches quote characters

---------

Co-authored-by: dino <dinojoaocosta@gmail.com>
2026-01-09 18:04:44 +00:00
Ben Brandt 83fd6fe96b agent: Split up Agent and Text Thread History (#46457)
Scopes the history to the individual panes and paves the way for history
per external agent.

Release Notes:

- N/A
2026-01-09 17:13:00 +00:00
Ben Kunkle 4d597e1eea Fix incorrect usages of Zeta2FeatureFlag (#46462)
Closes #ISSUE

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-01-09 11:42:00 -05:00
Richard Feldman 98fa4ee9a7 Fix visual test font regression (#46461)
The visual test infrastructure changes in #46324 accidentally switched
from `settings::init(cx)` to `SettingsStore::test(cx)`, which uses
Courier font instead of the real Zed fonts (IBM Plex Sans / Lilex).

This restores the correct font loading:
1. Load embedded fonts with `Assets.load_fonts(cx)`
2. Use `settings::init(cx)` to get the real default settings with proper
fonts

Release Notes:

- N/A
2026-01-09 16:22:06 +00:00
Oleksiy SyvokonandAgus Zubiaga 7d1484b3b2 ep: Fix editable region for teacher models (#46459)
Editable region was different for Zeta2 and Teacher, leading to "Edits
outside of editable region" errors.

Release Notes:

- N/A

Co-authored-by: Agus Zubiaga <agus@zed.dev>
2026-01-09 16:01:19 +00:00
Lukas Wirth 31c50db224 remote: Pass -q on ssh remotes when running one shot commands (#46458)
This pollutes tasks and similar with a `connection closed` message
otherwise.

Release Notes:

- Fixed terminal tool for agents ending with `connection closed` on
remote hosts polluting context
2026-01-09 15:58:29 +00:00
Anthony Eid e65b23b148 git: Fix a bug where BranchDiff shows incorrect diffs (#46433)
This happens when a user's default branch has different remote and local
versions on their system. Because we would get a diff using just a
branch name without including it's remote name as well

This is a better default because it's far less confusing from a user's
perspective to debug what's going on.

Release Notes:

- git: Fix BranchDiff showing incorrect diffs when default local branch
is out of sync with the remote default branch
2026-01-09 10:36:16 -05:00
Piotr Osiewiczanddino 577fe1c804 lsp: Do not reuse disk-based diagnostics (#46437)
Fixes #41220

Co-authored-by: dino <dinojoaocosta@gmail.com>

Closes #41220

Release Notes:

- Rust: Fixed diagnostics being stale when working across path
dependencies

---------

Co-authored-by: dino <dinojoaocosta@gmail.com>
2026-01-09 14:52:07 +00:00
Danilo Leal bc8028af6f agent_ui: Add per-file and total number of lines added and removed (#46454)
This PR adds the total and per-file number of lines added and removed
per thread, using the same logic to compute these as in the commit view.
Here's how they show up in the UI:

<img width="500" height="514" alt="Screenshot 2026-01-09 at 11  27@2x"
src="https://github.com/user-attachments/assets/e3a4a14f-a4ee-4e95-a77b-86d14914e9d6"
/>

Release Notes:

- Agent: Added the total and per-file number of lines added and removed
in a thread.
2026-01-09 11:45:53 -03:00
Oleksiy Syvokon 2d13fa976a Add ep --failed=skip to exclude errored examples from output (#46453)
Release Notes:

- N/A
2026-01-09 14:45:08 +00:00
Piotr Osiewicz 2e2b16dc8f remote: Add build-remote-server-binary for use in benchmarks (#46451)
Benchmarks that depend on remote server would not rebuild the remote
server binary outside of dev builds. Let dependants of remote opt into
building the binary even in release builds.

Release Notes:

- N/A
2026-01-09 15:36:40 +01:00
Marshall Bowers 4340b89021 open_ai: Move responses module to its own file (#46450)
This PR moves the `responses` module to its own module in the `open_ai`
crate.

Release Notes:

- N/A
2026-01-09 14:29:08 +00:00
Martin Pool 92425c664c Fix test_extract_zip_sets_default_permissions umask dependency (#46369)
I saw that this test is failing at head, with what turns out to be a
dependency on the test environment umask.

This removes the over-strict assertions about permissions from extracted
zips when permissions aren't preserved. I tested locally that it passes
with 022, 002, 077.

Also, some of the comments and variable names seemed to be out of date
for this test, in which the file is not executable, so I changed/removed
them.

cc @MrSubidubi 

follows on from #45515


Before:

```
mbp@amorfati ~/s/zed> umask 002
mbp@amorfati ~/s/zed> cargo nextest run -p util archive::tests::test_extract_zip_sets_default_permissions
    Finished `test` profile [unoptimized + debuginfo] target(s) in 0.21s
────────────
 Nextest run ID de9e0712-0db1-4e4e-8c9f-421bb68ed23c with nextest profile: default
    Starting 1 test across 1 binary (71 tests skipped)
        FAIL [   0.003s] util archive::tests::test_extract_zip_sets_default_permissions
  stdout ───

    running 1 test
    test archive::tests::test_extract_zip_sets_default_permissions ... FAILED

    failures:

    failures:
        archive::tests::test_extract_zip_sets_default_permissions

    test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 71 filtered out; finished in 0.00s

  stderr ───

    thread 'archive::tests::test_extract_zip_sets_default_permissions' (755934) panicked at crates/util/src/archive.rs:290:13:
    assertion `left == right` failed: Expected default set of permissions for unzipped file with no permissions set.
      left: 436
     right: 420
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```


Closes #ISSUE

Release Notes:

- N/A
2026-01-09 14:52:48 +01:00
Piotr Osiewicz baa3f3cf4b Remove leftover file (#46445)
Release Notes:

- N/A
2026-01-09 13:08:05 +00:00
Finn Evers 6c5cc22cc7 languages: Do not highlight JSX/TSX components too broadly (#46442)
Closes #46340

Release Notes:

- Fixed an issue where HTML tags where highlighted as JSX components.
2026-01-09 13:59:54 +01:00
Lukas Wirth f729b850d3 Add recent_projects remote test (#46436)
Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-01-09 12:45:10 +00:00
Danilo Leal 2170594c8b Prevent diagnostic hover popover to scroll horizontally (#46438)
Fixing a regression I introduced in
https://github.com/zed-industries/zed/pull/45625. Diagnostic hover
popovers should only scroll vertically, not horizontally, as the content
should wrap.

Release Notes:

- N/A
2026-01-09 12:28:49 +00:00
Marshall Bowers bffcd9287e collab: Remove /contributors endpoints (#46418)
This PR removes the `GET /contributors` and `POST /contributors`
endpoints.

The former was not in use anywhere, and the latter has been moved to
Cloud.

Part of CLO-33.

Release Notes:

- N/A
2026-01-08 23:46:23 -05:00
Richard Feldman 9b33e49c44 Restrict icon paths to subdirectories of agent extensions (#44183)
Right now agent extensions can specify icon paths that point anywhere.
This changes it so that they can only specify icon paths that are
subdirectories of the extension's root dir.

Release Notes:

- Restrict agent server extension icon paths to subdirectories of the
extension's root directory
2026-01-09 04:21:08 +00:00
abdellah hariti 5275265dc9 Vim search */# without moving cursor initially (#46244)
The default behavior for Vim search with `*` and `#` in normal mode is
to initiate a search and immediately jump to the next or previous match
respectively.

This behavior can be annoying, so Vim has many plugins to address this
specifically:

- [vim-asterisk](https://github.com/haya14busa/vim-asterisk)
-
[vim-SearchHighlighting](https://github.com/inkarkat/vim-SearchHighlighting)
- [vim-tranquille](https://github.com/RRethy/vim-tranquille)

This PR tries to emulate this behavior natively keeping up with Zed's
sane defaults and deviating from vanilla Vim when it makes sense.


Release Notes:

- Vim: `*` and `#` search doesn't jump immediately to next / previous
search.
2026-01-09 04:13:51 +00:00
Richard Feldman 8bcf19acb3 Add guidance for terminal tool about being a pty (#46417)
Release Notes:

- N/A
2026-01-09 04:13:36 +00:00
Richard Feldman ca8dd6cc00 Visual test infrastructure improvements (#46324)
This PR improves the visual test infrastructure:

- Adds controllable foreground executor for deterministic task
scheduling
- Adds tooltip hover testing capability
- Improves error handling in visual test runner
- Includes planning documentation for the approach

Release Notes:

- N/A
2026-01-09 03:56:14 +00:00
da44f896ca Subagents PR 1: Feature flag + tool skeleton (#46186)
This PR adds the foundation for the subagents feature:

- Add `SubagentsFeatureFlag` with staff-disabled default
- Create `SubagentTool` struct with input schema for
task/summary/context-low prompts
- Register `SubagentTool` conditionally when feature flag is enabled
- Tool returns stub message 'not yet implemented' for now

Release Notes:

- N/A

---------

Co-authored-by: Amp <amp@ampcode.com>
Co-authored-by: Mikayla Maki <mikayla@zed.dev>
Co-authored-by: Yara <yara@zed.dev>
2026-01-08 22:53:02 -05:00
Richard FeldmanClaude Opus 4.5Amp
89aac9733f Add tool permission evaluation logic (#46155)
This builds on https://github.com/zed-industries/zed/pull/46112 (which
should be merged first) and adds the permission evaluation logic and
integrates it with the terminal tool as part of the tool permissions
feature. This is a separate PR for [stacked
diffs](https://newsletter.pragmaticengineer.com/p/stacked-diffs) to make
review easier.

## Changes

- **Add `tool_permissions.rs`** with `decide_permission()` function that
implements:
  - `deny > confirm > allow` precedence hierarchy (security-critical)
  - Case-sensitive and case-insensitive regex matching
  - Integration with existing `always_allow_tool_actions` setting
  - Comprehensive unit tests (15 tests)

- **Integrate with terminal tool**:
  - Commands matching deny rules are blocked immediately with an error
  - Commands matching allow rules proceed without confirmation dialog
  - Commands requiring confirmation show the dialog as before
  - Added integration tests for deny and allow rule scenarios

Co-Authored-By: Claude Opus 4.5

Release Notes:

- N/A

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-01-08 22:49:15 -05:00
Richard Feldman c47dd73349 Allow Escape to interrupt agent thread from conversation focus (#46410)
When focus is on the conversation part of the agent panel (not the
message editor), pressing Escape now interrupts the running thread.
Previously, Escape only worked when the message editor had focus.

Release Notes:

- Pressing Esc when the agent panel is focused now interrupts the
running thread even if the text input box is not specifically focused.
2026-01-08 22:39:06 -05:00
Max Brunsfeld 29d2c12f3e Revert "Make tasks inherit their callers priority" (#46413)
Reverts zed-industries/zed#46179

⚠️ Don't merge this until we confirm that it fixes the performance
regression when saving buffers while scrolling ⚠️
2026-01-08 22:04:18 -05:00
Marshall Bowers c014f1d620 collab: Remove GET /contributor endpoint (#46415)
This PR removes the `GET /contributor` endpoint from Collab, as it has
been moved to Cloud.

Release Notes:

- N/A
2026-01-09 02:39:19 +00:00
Richard Feldman bfc7a50592 Add breakpoint hover visual tests with VisualTestPlatform (#46404)
Implements visual tests for breakpoint hover states in the editor gutter
with three states:
1. **No hover** - just line numbers
2. **Hover with indicator** - blue circle appears next to the line
3. **Hover with tooltip** - shows 'Set breakpoint' with F9 keybinding

- Added `VisualTestPlatform` that combines real Mac rendering with
controllable `TestDispatcher` for deterministic task scheduling and time
control
- Added `VisualTestAppContext::with_asset_source()` to enable SVG icon
rendering in visual tests (uses real Assets instead of empty source)
- Added F9 keybinding for ToggleBreakpoint so tooltip shows the
keybinding
- Removed debug `eprintln!` statements from editor, element, svg, and
window

The `VisualTestPlatform` enables `advance_clock()` which is essential
for testing time-based behaviors like tooltip delays. Without
deterministic time control, tests for hover states and tooltips would be
flaky.

Release Notes:

- N/A
2026-01-08 21:04:50 -05:00
Danilo Leal 5065b5d8e0 git_ui: Add some fixes and improvements to the worktree picker (#46407)
This PR adds some clean up to the worktree picker: making sure that
worktree names render just one line, even when they might have multiple
lines (that was making each line item break for me), removing
superfluous icons, and making the footer controls more consistent with
the branch picker, where the buttons change to "Create..." if you're in
a state where the only match is the one to create a new worktree.


https://github.com/user-attachments/assets/e63aa8c9-b5a0-443d-a2ab-7759daed10d1

Release Notes:

- Git: Fixed some UI bugs in the worktree picker as well as improved the
UX for creating worktrees based off of the current or default branch.
2026-01-08 21:40:41 -03:00
Mikayla Maki 6e7b6edf64 agent: Add turn statistics to agent panel (#46390)
I really enjoyed this feature in Claude Code. Helps me get a sense of
how effortful something is.

Release Notes:

- Added a "show_turn_stats" setting, default to false, that shows the
timer and the number of tokens down.
2026-01-09 00:33:38 +00:00
Martin Pool 25d53e827f Make RealFs::metadata not error on recursive/looped symlinks (#45458) 2026-01-09 00:14:52 +00:00
Max BrunsfeldandBen Kunkle 4f61230bf6 ep: Cache Anthropic client (#46406)
This makes running `predict` with the teacher model much faster, when
there are many examples.

Release Notes:

- N/A

---------

Co-authored-by: Ben Kunkle <ben@zed.dev>
2026-01-09 00:04:40 +00:00
Danilo Leal b84c19a428 gpui: Fix bug on on_hover callbacks (#46371)
Tackling this as I noticed a bug in the agent panel where the button to
delete a thread, which appeared only on hover, stopped showing up. PRs
#43324 and #45437 fixed stuff in applying hover styles through
`.hover()` but broke the `.on_hover()` callback. Problem was that both
methods were sharing the same `element_state.hover_state` but running at
different phases. The solution here was to add a new independent state
field for the hover listener (`hover_listener_state`) while the hover
style method keeps using `hover_state`.

Release Notes:

- Agent: Fixed a bug where the button to delete a thread stopped showing
up.
2026-01-08 19:47:22 -03:00
Oleksandr KholiavkoandAnthony Eid 6c2a0c21e6 Remove const generics from data table (runtime column count support) (#46341)
This PR removes the const generics limitation from the data table
component, enabling tables with a dynamic number of columns determined
at runtime.

**Context:**  
This is the next infrastructure step 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 continue to be decomposed
into smaller, reviewable pieces.

**Details:**  
- Introduces a `TableRow` newtype to enforce column count invariants at
runtime, replacing the previous const generic approach. It's api surface
is larger than is currently used, as it's planned to be used in CSV
feature itself.
- Refactors the data table and all usages (including the keymap editor)
to work with runtime column counts.
- This change is foundational for supporting CSV preview and other
features that require flexible, dynamic tables.
- Performance impact has not been formally measured, but there is no
noticeable slowdown in practice.

---

Release Notes:
- N/A (internal infrastructure change, no user impact)

---------

Co-authored-by: Anthony Eid <anthony@zed.dev>
2026-01-08 17:32:38 -05:00
Richard FeldmanandAmp 53f0370546 Add granular tool permissions settings (#46112)
Adds granular per-tool permission settings for the Zed agent with
regex-based rules.

Release Notes:

- N/A

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-01-08 14:32:18 -08:00
0f5db2e0f7 Edit prediction: teacher prompt improvements (#46392)
Release Notes:

- N/A

---------

Co-authored-by: Oleksiy Syvokon <oleksiy.syvokon@gmail.com>
Co-authored-by: Agus Zubiaga <agus@zed.dev>
Co-authored-by: Ben Kunkle <ben@zed.dev>
2026-01-08 22:12:32 +00:00
Danilo Leal c12805f3f4 agent_ui: Improve the Bedrock configuration UI (#46397)
Just some housekeeping UI clean up on the configuration instructions for
Bedrock.

Release Notes:

- N/A
2026-01-08 21:37:22 +00:00
Agus ZubiagaandBen Kunkle 3ad93884dd ep: Enable workspace test-support (#46395)
Some code got added to `workspace` that prevents us from running tests
for the `edit_prediction(cli)` crates specifically without the
`test-support` feature flag.

Release Notes:

- N/A

Co-authored-by: Ben Kunkle <ben@zed.dev>
2026-01-08 18:30:07 -03:00
Danilo Leal a2d7bbe049 agent: Fix profiles tooltip border (#46396)
One _character_ change to fix the dividing border in the agent panel's
profile tooltip. 😬

Release Notes:

- N/A
2026-01-08 21:19:40 +00:00
Richard Feldman c8b56b53b6 Use real Zed fonts in visual tests (#46394)
This PR fixes visual tests to use the actual Zed fonts (IBM Plex Sans /
Lilex) instead of Courier.

Release Notes:

- N/A
2026-01-08 16:18:22 -05:00
Zachiah Sawyer 7ceeb06c24 Fix multiline regex (#46298)
Closes #45776

It didn't enable multiline mode before `¯\_(ツ)_/¯`. If there is a reason
this fix won't work please let me know but it seems like this one was
just an easy fix.

Release Notes:
- Improved multiline regex behavior
2026-01-08 22:52:14 +02:00
Mikayla MakiandYara add8c706b1 telemetry: Add live telemetry log viewer (#46391)
Release Notes:

- N/A

---------

Co-authored-by: Yara <yara@zed.dev>
2026-01-08 20:33:54 +00:00
Kirill Bulatov af203a13d9 Pull server diagnostics without backtrace printing (#46383)
Follow-up of https://github.com/zed-industries/zed/pull/45365

* Stops printing backtraces for server diagnostics pulls on error

<img width="1728" height="1084" alt="backtrace"
src="https://github.com/user-attachments/assets/b2e75e73-611a-428b-8056-f0757e51adf2"
/>

* Reduce one `.detach` codepath into `.await`

Release Notes:

- N/A
2026-01-08 19:07:18 +00:00
Dylan 3df82717e6 Add '#' to word_characters in JSON/CSS config (#45400) 2026-01-08 21:04:21 +02:00
Conrad Irwin 1d938322d9 Make URL parsing less strict for agent generated URLs (#46330)
Before this we failed to parse some file:/// links the agent would
generate causing it to open in the system default app and not zed.

Release Notes:

- N/A
2026-01-08 17:47:41 +00:00
Marshall Bowers d1240446ad component_preview: Fix license symlink (#46379)
This PR fixes the symlink for the license in the `component_preview`
crate, as it was referencing itself after
https://github.com/zed-industries/zed/pull/45382.

Release Notes:

- N/A
2026-01-08 17:12:54 +00:00
Kirill Bulatov 46945885a9 Do not react on already observed buffer edits' versions (#46308)
If I apply

```diff
diff --git a/crates/action_log/src/action_log.rs b/crates/action_log/src/action_log.rs
index 404fb3616d..ece063c34f 100644
--- a/crates/action_log/src/action_log.rs
+++ b/crates/action_log/src/action_log.rs
@@ -223,6 +223,7 @@ impl ActionLog {
             futures::select_biased! {
                 buffer_update = buffer_updates.next() => {
                     if let Some((author, buffer_snapshot)) = buffer_update {
+                        dbg!(&author);
                         Self::track_edits(&this, &buffer, author, buffer_snapshot, cx).await?;
                     } else {
                         break;
```

on top of `main`, `User` and `Agent` will always interleave.

This happens because `action_log` does updates on `Entity<Buffer>` which
is a current editor's buffer, tracked, and updated by agent output (acp
or regular threads) — those updates come back as `BufferEvent::Edited`
event after each agent's edit and forces unnecessary computations.

Instead, update tracked buffer's version after each agent update report
to only react on one, `Agent`-authored, edit events.

Release Notes:

- N/A
2026-01-08 17:09:24 +00:00
Max Brunsfeld d89ad6afd1 Fix EP CLI output flicker (#46313)
Release Notes:

- N/A
2026-01-08 17:08:24 +00:00