Commit Graph
34148 Commits
Author SHA1 Message Date
Martin Pool 3f2c7c6d30 Use let chain to avoid clippy::unnecessary_unwrap (#46409)
No bug, just shows up running the tests on `clippy 0.1.92 (ded5c06cf2
2025-12-08)`

Release Notes:

- N/A
2026-01-11 10:20:08 +02:00
John Tur af6385a293 Fix Windows IME composition string being displayed incorrectly (#46545)
Previously, a new composition string was processed before a new
composition result. Thus, in the case that a keystroke creates a new
composition result and composition string, the processing of the new
result would overwrite the new string, even though they should both be
displayed. Processing them in the reverse order fixes this issue.
 
Fixes #42201

Additionally: while fixing this issue, I discovered that the Japanese
IME sometimes moves the cursor far away from the inserted text. WPF
works around this issue by only respecting the IME's requested cursor
position if it's adjacent to uncommitted text. So, we copy this
workaround.

Release Notes:

- N/A
2026-01-11 05:10:51 +00:00
Richard Feldman ecc3928040 Fix cancellation regression: make edit_file_tool handle cancellation (#46527)
PR #46306 changed cancellation to wait for tools to complete before
returning. This was correct behavior - it allows tools like terminal to
capture their output on cancellation. The real issue was that many tools
didn't check for cancellation, so they would continue running until they
finished.

## The Problem

When the user pressed Escape to cancel during a tool operation, tools
would continue running because they never checked for the cancellation
signal. The thread correctly waited for tools to complete (so terminal
could capture output), but tools like edit_file, grep, fetch, etc. would
just keep going.

## The Fix

Add cancellation handling to all tools using the same pattern as
`terminal_tool`: use `select!` to race between the tool's main work and
`event_stream.cancelled_by_user()`. When cancelled, tools break out of
their loops or return early.

## All Tools Now Cancellation-Aware

| Tool | Change |
|------|--------|
| `edit_file_tool` | Checks cancellation in edit event processing loop |
| `terminal_tool` | Already handled cancellation |
| `grep_tool` | Checks cancellation in search result iteration loop |
| `fetch_tool` | Checks cancellation during HTTP fetch |
| `web_search_tool` | Checks cancellation during web search |
| `find_path_tool` | Checks cancellation during path search |
| `read_file_tool` | Checks cancellation during buffer open |
| `copy_path_tool` | Checks cancellation during file copy |
| `move_path_tool` | Checks cancellation during file move/rename |
| `delete_path_tool` | Checks cancellation during delete operation |
| `create_directory_tool` | Checks cancellation during directory
creation |
| `save_file_tool` | Checks cancellation during buffer open and save |
| `restore_file_from_disk_tool` | Checks cancellation during buffer open
and reload |
| `open_tool` | Checks cancellation during authorization |
| `diagnostics_tool` | Checks cancellation during buffer open |
| `ContextServerTool` (MCP) | Checks cancellation during external server
calls |

**Synchronous tools (no async work, return immediately):**
- `list_directory_tool` - Reads worktree snapshot synchronously
- `now_tool` - Returns current time immediately
- `thinking_tool` - Returns immediately

## MCP Tools Automatically Handled

MCP tools (user-defined tools via context servers) are now automatically
cancellation-aware without any user action. The `ContextServerTool`
wrapper races the external server request against
`event_stream.cancelled_by_user()`.

## Testing

- Added `CancellationAwareTool` test helper that mirrors the
cancellation pattern
- Updated `test_cancellation_aware_tool_responds_to_cancellation` to
properly await the cancel task and verify the tool detected cancellation

Release Notes:

- Fixed a regression where pressing Escape wouldn't immediately cancel
in-progress tool operations
2026-01-11 00:30:25 +00:00
Marshall Bowers c6a38f2cfb open_ai: Use proper type for Responses API input (#46526)
This PR makes it so we use a proper type for the Responses API `input`
rather than a `serde_json::Value`.

It should have never used `serde_json::Value` to begin with.

Release Notes:

- N/A
2026-01-10 17:40:20 +00:00
73d935330e Integrate scheduler crate into GPUI (#44810)
## Motivation

This PR unifies the async execution infrastructure between GPUI and
other components that depend on the `scheduler` crate (such as our cloud
codebase). By having a scheduler that lives independently of GPUI, we
can enable deterministic testing across the entire stack - testing GPUI
applications alongside cloud services with a single, unified scheduler.

## Summary

This PR completes the integration of the `scheduler` crate into GPUI,
unifying async execution and enabling deterministic testing of GPUI
combined with other components that depend on the scheduler crate.

## Key Changes

### Scheduler Integration (Phases 1-5, previously completed)
- `TestDispatcher` now delegates to `TestScheduler` for timing, clock,
RNG, and task scheduling
- `PlatformScheduler` implements the `Scheduler` trait for production
use
- GPUI executors wrap scheduler executors, selecting `TestScheduler` or
`PlatformScheduler` based on environment
- Unified blocking logic via `Scheduler::block()`

### Dead Code Cleanup
- Deleted orphaned `crates/gpui/src/platform/platform_scheduler.rs`
(older incompatible version)

## Intentional Removals

### `spawn_labeled` and `deprioritize` removed
The `TaskLabel` system (`spawn_labeled`, `deprioritize`) was removed
during this integration. It was only used in a few places for test
ordering control.

cc @maxbrunsfeld @as-cii - The new priority-weighted scheduling in
`TestScheduler` provides similar functionality through
`Priority::High/Medium/Low`. If `deprioritize` is important for specific
test scenarios, we could add it back to the scheduler crate. Let me know
if this is blocking anything.

### `start_waiting` / `finish_waiting` debug methods removed
Replaced by `TracingWaker` in `TestScheduler` - run tests with
`PENDING_TRACES=1` to see backtraces of pending futures when parking is
forbidden.

### Realtime Priority removed
The realtime priority feature was unused in the codebase. I'd prefer to
reintroduce it when we have an actual use case, as the implementation
(bounded channel with capacity 1) could potentially block the main
thread. Having a real use case will help us validate the design.

## Testing
- All GPUI tests pass
- All scheduler tests pass
- Clippy clean

## Architecture

```
┌─────────────────────────────────────────────────────────────┐
│                          GPUI                                │
│  ┌──────────────────────┐    ┌────────────────────────────┐ │
│  │ gpui::Background-    │    │ gpui::ForegroundExecutor   │ │
│  │ Executor             │    │  - wraps scheduler::       │ │
│  │  - scheduler: Arc<   │    │    ForegroundExecutor      │ │
│  │    dyn Scheduler>    │    └────────────┬───────────────┘ │
│  └──────────┬───────────┘                 │                  │
│             │                             │                  │
│             └──────────┬──────────────────┘                  │
│                        ▼                                     │
│            ┌───────────────────────┐                         │
│            │  Arc<dyn Scheduler>   │                         │
│            └───────────┬───────────┘                         │
│         ┌──────────────┴──────────────┐                      │
│         ▼                             ▼                      │
│  ┌──────────────────┐      ┌────────────────────┐           │
│  │ PlatformScheduler│      │   TestScheduler    │           │
│  │   (production)   │      │ (deterministic)    │           │
│  └──────────────────┘      └────────────────────┘           │
└─────────────────────────────────────────────────────────────┘
```

Release Notes:

- N/A

---------

Co-authored-by: Antonio Scandurra <me@as-cii.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Yara <git@yara.blue>
Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
2026-01-10 15:41:49 +01:00
Danilo Leal 17dbe8d6d4 Add right-click menu action to copy path in the breadcrumb button (#46483)
This PR adds a right-click action to the breadcrumb button to copy the
path, when there is some (i.e., untitled buffers and others won't have
this feature).


https://github.com/user-attachments/assets/94ece12c-3071-4a07-a04d-8d89e10fd59e

Release Notes:

- Added the ability to right-click the breadcrumb button when it's a
file path and copy the path.
2026-01-10 09:38:15 -03:00
Brandt WearyandHector e04d044271 Fix fold persistence corruption from external file changes (#46011)
## Summary

Fixes #33633 - folds corrupting after external file modifications.

The existing fold persistence stored raw byte offsets, which become
stale when files are modified externally (git operations, other editors,
sync tools). This caused folds to capture wrong content on restore -
users reported "wrong lines getting folded" with systematic offsets.

**Solution: Content fingerprinting**
- Store 32-byte content samples at fold boundaries
- On restore, validate fingerprints match; if not, search buffer for new
positions
- Handles edge cases: short folds (< 32 bytes), duplicate content,
boundary positioning

**Bonus fix: Ungraceful exit survival**
- Entity IDs change between sessions, but workspace cleanup's CASCADE
DELETE was wiping folds before new editors could save
- Now migrates folds to new entity_id immediately after restore

## Test plan

- [x] Unit test for fingerprint storage/retrieval
(`test_save_and_get_editor_folds_with_fingerprints`)
- [x] Manual test: fold sections, add content at file start externally,
reopen → folds restore at correct positions
- [x] Manual test: fold sections, Ctrl+C, reopen → folds survive
- [x] Existing fold tests pass (`cargo test -p editor`)

## Release Notes

- N/A

---------

Co-authored-by: Hector <hector@cyberneticwilderness.com>
2026-01-10 08:36:33 +00:00
Mikayla Maki 93e3a39077 Simplify networking tests even more (#46489)
Release Notes:

- N/A
2026-01-10 00:30:33 +00:00
Marshall Bowers f5c924c583 Revert "lsp: Do not reuse disk-based diagnostics (#46437)" (#46487)
This reverts commit dd43891521.

This commit was causing issue with diagnostics:
https://zed-industries.slack.com/archives/C07NUKHLVUZ/p1767999287421729

Release Notes:

- Reverted #46437
2026-01-09 23:21:48 +00:00
Ben Brandt dffed22f45 acp: Add keybindings for session config option categories (#46484)
Adds the normal mode/model keybindings for the first config option of a
given category

Release Notes:

- N/A
2026-01-09 23:04:31 +00:00
Marshall Bowers 451bf25d1c language_models: Add support for using OpenAI Responses API through Zed provider (#46482)
This PR adds support for using the OpenAI Responses API through the Zed
provider.

This is gated behind the `open-ai-responses-api` feature flag.

Part of CLO-34.

Release Notes:

- N/A
2026-01-09 22:10:11 +00:00
Ben Brandt 613183b9f2 acp: Update agent-client-protocol Rust SDK to v0.9.3 (#46481)
Release Notes:

- N/A
2026-01-09 22:08:45 +00:00
Max Brunsfeld 0afe91ff24 Prepopulate empty patch in example capture (#46480)
This makes it a smoother workflow to capture an edit prediction example
from Zed and then write what you'd expect the patch to be.

Release Notes:

- N/A
2026-01-09 13:58:07 -08:00
Conrad Irwin bf87d0e6d1 Fix vim mouse selections (#45177)
Closes #27720

Release Notes:

- vim: Fixed selection drifting slowly to the right when selecting
chaotically with the mouse.
2026-01-09 20:34:45 +00:00
b212cfbc2e 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 442c236402 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 1062e2c5a9 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 a94157714a 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 ddf70bc321 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 0d082a3945 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 e6467fc47a 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 5deb4aa085 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 5f92b31a8a 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 dd43891521 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 7142e6a781 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 f42d714d33 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 b55046319d 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 30f776e47f 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 306a38aae8 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 e1b4f670ba Remove leftover file (#46445)
Release Notes:

- N/A
2026-01-09 13:08:05 +00:00
Finn Evers 206f54e3d7 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
Lena a76b17132b Autolabel first-time pull requests (#46443)
Release Notes:

- N/A
2026-01-09 13:58:18 +01:00
Lukas Wirth aaebee488f Add recent_projects remote test (#46436)
Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-01-09 12:45:10 +00:00
Danilo Leal a481bdd3dc 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
Lena e90913c3cb Ensure we can triage non-templated issues (#46362)
Sometimes github issues are created without following the template, and
if they don't receive the `state:needs triage` label from a template,
it's easy for us to miss them. Well, not anymore, thanks to this new
github workflow.
As an extra measure, the label is also added on reopened issues. All of
this only applies only to actions carried out by people outside of the
staff team.

Release Notes:

- N/A
2026-01-09 09:45:51 +01:00
Marshall Bowers 2dfb13c4e5 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 feb04ff2bd 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 1fb2922be3 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 295f9d6ff9 Add guidance for terminal tool about being a pty (#46417)
Release Notes:

- N/A
2026-01-09 04:13:36 +00:00
Richard Feldman 558a741d75 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
acbb32d19f 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
274b1f3ac9 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 b4d69db524 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 c17b48782b 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 32af786a70 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 0e97c18fd6 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 144ff825e2 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 06bd9005ab 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 fbd759bfc8 Make RealFs::metadata not error on recursive/looped symlinks (#45458) 2026-01-09 00:14:52 +00:00
Max BrunsfeldandBen Kunkle ad369ca2b7 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