2f093d2
Delete accidentally committed scheduler plan (#46601)
Click to expand commit body
Release Notes: - N/A
Antonio Scandurra created
2f093d2
Delete accidentally committed scheduler plan (#46601)
Release Notes: - N/A
Antonio Scandurra created
38fc4ea
Properly notify all language server worktree trust listeners (#46613)
Closes https://github.com/zed-industries/zed/issues/46590
https://github.com/user-attachments/assets/8464a3b6-9258-4d15-9168-56178bf46437
`use smol::channel::{Receiver, Sender};` do not propagate the value
change to all receivers, hence only one language server received the
"worktree trusted" message.
The fix uses `watch` kind of channels instead, and cleans up its state
more eager to rely on the sender drop as another form of notification.
Release Notes:
- Fixed groups of language servers not starting after worktree trust
approval
Kirill Bulatov created
5ddfcf0
editor: Remove unnecessary cloning of selections (#46598)
Stumbled across this upon a PR review - `unfold_ranges` takes a slice of Ranges and already clones the ranges itself, so we do not need to clone the selections prior to passing these. Release Notes: - N/A
Finn Evers created
819d2f7
project_symbols: Support rust-analyzer path symbol search (#46511)
cc https://github.com/rust-lang/rust-analyzer/pull/21415 Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
a75d3fc
Always show worktree trust, even if other title bar items are hidden with settings (#46606)
Closes https://github.com/zed-industries/zed/discussions/46595 Release Notes: - Fixed "show project items" keeping worktree trust title bar element hidden
Kirill Bulatov created
ad1251b
First-contribution autolabeler: work around a bug (#46603)
The job was skipping first-time contributors because GitHub was returning None as their association. Release Notes: - N/A
Lena created
5c7abad
terminal: Fix IME position when cursor is hidden (#46592)
Closes https://github.com/zed-industries/zed/issues/45553 ## Summary When using applications that hide the terminal cursor (e.g., via ANSI escape sequence `\e[?25l`), the IME candidate window appeared at the bottom-left of the screen, and the composition text was not displayed at all. This affects tools like Claude Code that hide the cursor during operation. The root cause was that cursor position calculation was skipped when the cursor shape was `Hidden`. This fix separates cursor visibility from IME position calculation by always computing cursor bounds for IME positioning. ## Movies ### Zed 0.218.6 https://github.com/user-attachments/assets/a66d569a-178d-4bca-a577-fcc65e9fd2c4 ### With this fix https://github.com/user-attachments/assets/456323d1-6c18-45ea-88e8-fb5375c00f98 Release Notes: - Fixed IME candidate window and composition text position in terminal when cursor is hidden
koh-sh created
feccf38
terminal_view: Remove intermediate vec allocation (#46600)
`grid_view` takes an iterator of `IndexedCell`s, so we don't have to collect this into a vec prior to passing this. Release Notes: - N/A
Finn Evers created
578911d
terminal: Avoid overlapping IME marked text with terminal content (#46227)
Closes #33157 |Before|After| |--|--| |<img width="922" height="158" alt="CleanShot 2026-01-07 at 12 18 21@2x" src="https://github.com/user-attachments/assets/2ba6020f-5159-4ed8-aa2e-374ea3ea4cf5" />|<img width="908" height="200" alt="CleanShot 2026-01-07 at 12 19 02@2x" src="https://github.com/user-attachments/assets/ec946c4e-3220-4944-b34a-1d8d5dcc7ae2" />| Many other terminals seem to do it this way as well. |Ghostty|Windows Terminal| Visual Studio Code| |--|--|--| |<img width="930" height="186" alt="CleanShot 2026-01-07 at 12 23 30@2x" src="https://github.com/user-attachments/assets/837189aa-2f4c-4a48-b060-f3576b8777e0" />|<img width="1414" height="128" alt="c89e03d2d92869d5ec1b8a05ade84df0" src="https://github.com/user-attachments/assets/8b6d69fb-b34d-4ccd-8a3a-9332487cd427" />|<img width="978" height="180" alt="CleanShot 2026-01-07 at 12 27 01@2x" src="https://github.com/user-attachments/assets/dbc0acc7-3c16-499f-ac32-35e3c0cd0d97" />| Release Notes: - Fixed UI overlap between IME marked text and terminal content.
α΄α΄α΄α΄α΄α΄Κ created
d4f6ca4
Update GPUI dependency: ashpd 0.12 -> 0.12.1 (#46564)
Release Notes:
- N/A
TL;DR: There was a closed issue 7 hours ago that changed ashpd version,
it needed another bump.
A dependency of gpui called ashpd has a fix in v0.12.1, GPUI has the
0.12 version. After forking zed and patching the gpui source to be mine
with 0.12.1 it was able to use GPUI as a dependency and compile the
project. The error I was getting and the recomendation to do this PR can
be seen in this [closed issue from
ashpd](https://github.com/bilelmoussaoui/ashpd/issues/325).
After changing the dependecy I hit cargo check:
```bash
Finished `dev` profile [unoptimized + debuginfo] target(s) in 4m 24s
```
And cargo run:
```bash
Compiling zed v0.220.0 (/home/user/git/xaviduds/zed/crates/zed)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 9m 44s
Running `target/debug/zed`
```
Zed compiled and opened:
<img width="1920" height="1042" alt="image"
src="https://github.com/user-attachments/assets/8bc524d1-bc4a-43f8-9da4-b02faecca30c"
/>
Eduardo de Melo Xavier created
a87fed2
Skip worktree trust checks on Zed invisible worktrees (#46563)
Follow-up of https://github.com/zed-industries/zed/pull/46256 Release Notes: - Fixed worktree trust pop-up appearing on a keymap editor invication
Kirill Bulatov created
0ff0390
Improve snippet parse error context (#46277)
Release Notes:
- N/A
Description:
E.g. Instead of saying:
2026-01-07T09:08:42-06:00 ERROR [crates/snippet_provider/src/lib.rs:46]
failed to parse snippet
Caused by:
expected an integer
Now the logs give more valuable information like:
2026-01-07T10:47:39-06:00 ERROR [crates/snippet_provider/src/lib.rs:48]
invalid snippet in /Users/oscarvarto/Library/Application
Support/Zed/extensions/installed/django-snippets/./snippets/python.json
(re_path)
Oscar Vargas Torres created
5ba6258
licenses: Verify validity of the symlink files (#46444)
Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
e0b8969
editor: Fix DeleteToPreviousSubwordStart and DeleteToNextSubwordEnd interaction with newlines (#46235)
Closes #40110
Changes:
- `DeleteToPreviousSubwordStart` now deletes `\n` separately from
preceding subwords and whitespace.
- `DeleteToNextSubwordEnd` now deletes `\n` and any following whitespace
separately from subsequent subwords.
- Added an `ignore_newlines` flag to both actions to optionally retain
the old behavior.
These modifications align the subword commands with their word
counterparts and with other popular editors like VSCode and Sublime.
Related to: https://github.com/zed-industries/zed/pull/16848
Release Notes:
- Improved `DeleteToPreviousSubwordStart` and `DeleteToNextSubwordEnd`
interactions around newlines. You can opt-in into the previous behavior
by adding `{"ignore_newlines": true}` to either action's binds in your
keymap.
---
This is my first contribution to Zed! If anything should be done
differently, please let me know. Happy to learn :)
Ruben Fricke created
43c252c
Fix `gpui` Linux build failure due to ashpd/zbus incompatibility (#46543)
`ashpd` 0.11 is incompatible with recent zbus/zvariant releases, causing
a compilation error in Linux. Bumping to 0.12 fixes it.
See: https://github.com/bilelmoussaoui/ashpd/issues/323
To reproduce:
```toml
[package]
name = "test-gpui"
version = "0.1.0"
edition = "2021"
[dependencies]
gpui = { git = "https://github.com/zed-industries/zed" }
```
```bash
...
Compiling ashpd v0.11.0
error[E0277]: the trait bound `AppID: Basic` is not satisfied
--> /home/neulus/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ashpd-0.11.0/src/documents/mod.rs:391:16
|
391 | self.0.call("Info", &(doc_id.into())).await
| ^^^^ unsatisfied trait bound
|
help: the trait `Basic` is not implemented for `AppID`
--> /home/neulus/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ashpd-0.11.0/src/app_id.rs:10:1
|
10 | pub struct AppID(String);
| ^^^^^^^^^^^^^^^^
= help: the following other types implement trait `Basic`:
&B
BusName<'_>
ErrorName<'_>
InterfaceName<'_>
MemberName<'_>
NonZero<i16>
NonZero<i32>
NonZero<i64>
and 35 others
= note: required for `HashMap<AppID, Vec<Permission>>` to implement `zbus::zvariant::Type`
= note: 1 redundant requirement hidden
= note: required for `(file_path::FilePath, HashMap<AppID, Vec<Permission>>)` to implement `zbus::zvariant::Type`
note: required by a bound in `proxy::Proxy::<'a>::call`
--> /home/neulus/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ashpd-0.11.0/src/proxy.rs:172:40
|
166 | pub(crate) async fn call<R>(
| ---- required by a bound in this associated function
...
172 | R: for<'de> Deserialize<'de> + Type,
| ^^^^ required by this bound in `Proxy::<'a>::call`
error[E0277]: the trait bound `DocumentID: Basic` is not satisfied
--> /home/neulus/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ashpd-0.11.0/src/documents/mod.rs:500:16
|
500 | self.0.call_versioned("GetHostPaths", &(doc_ids,), 5).await
| ^^^^^^^^^^^^^^ unsatisfied trait bound
|
help: the trait `Basic` is not implemented for `DocumentID`
--> /home/neulus/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ashpd-0.11.0/src/app_id.rs:98:1
|
98 | pub struct DocumentID(String);
| ^^^^^^^^^^^^^^^^^^^^^
= help: the following other types implement trait `Basic`:
&B
BusName<'_>
ErrorName<'_>
InterfaceName<'_>
MemberName<'_>
NonZero<i16>
NonZero<i32>
NonZero<i64>
and 35 others
= note: required for `HashMap<DocumentID, file_path::FilePath>` to implement `zbus::zvariant::Type`
note: required by a bound in `proxy::Proxy::<'a>::call_versioned`
--> /home/neulus/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ashpd-0.11.0/src/proxy.rs:195:40
|
188 | pub(crate) async fn call_versioned<R>(
| -------------- required by a bound in this associated function
...
195 | R: for<'de> Deserialize<'de> + Type,
| ^^^^ required by this bound in `Proxy::<'a>::call_versioned`
For more information about this error, try `rustc --explain E0277`.
error: could not compile `ashpd` (lib) due to 2 previous errors
```
Release Notes:
- N/A
Neulus created
3f2c7c6
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
Martin Pool created
af6385a
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
John Tur created
ecc3928
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
Richard Feldman created
c6a38f2
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
Marshall Bowers created
73d9353
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>
Nathan Sobo , Antonio Scandurra , Claude Opus 4.5 , Yara , and Zed Zippy created
17dbe8d
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.
Danilo Leal created
e04d044
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>
Brandt Weary and Hector created
93e3a39
Simplify networking tests even more (#46489)
Release Notes: - N/A
Mikayla Maki created
f5c924c
Revert "lsp: Do not reuse disk-based diagnostics (#46437)" (#46487)
This reverts commit dd43891521484dc25d520e3c1551d9d211a1f2fa. This commit was causing issue with diagnostics: https://zed-industries.slack.com/archives/C07NUKHLVUZ/p1767999287421729 Release Notes: - Reverted #46437
Marshall Bowers created
dffed22
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
Ben Brandt created
451bf25
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
Marshall Bowers created
613183b
acp: Update agent-client-protocol Rust SDK to v0.9.3 (#46481)
Release Notes: - N/A
Ben Brandt created
0afe91f
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
Max Brunsfeld created
bf87d0e
Fix vim mouse selections (#45177)
Closes #27720 Release Notes: - vim: Fixed selection drifting slowly to the right when selecting chaotically with the mouse.
Conrad Irwin created
b212cfb
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>
Piotr Osiewicz , Smit , Zed Zippy , Smit Barmase , and Conrad created
442c236
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
Xin Zhao created
1062e2c
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>
Hans and dino created
a941577
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
Ben Brandt created
ddf70bc
Fix incorrect usages of `Zeta2FeatureFlag` (#46462)
Closes #ISSUE Release Notes: - N/A *or* Added/Fixed/Improved ...
Ben Kunkle created
0d082a3
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
Richard Feldman created
e6467fc
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>
Oleksiy Syvokon and Agus Zubiaga created
5deb4aa
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
Lukas Wirth created
5f92b31
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
Anthony Eid created
dd43891
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>
Piotr Osiewicz and dino created
7142e6a
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.
Danilo Leal created
f42d714
Add `ep --failed=skip` to exclude errored examples from output (#46453)
Release Notes: - N/A
Oleksiy Syvokon created
b550463
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
Piotr Osiewicz created
30f776e
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
Marshall Bowers created
306a38a
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
Martin Pool created
e1b4f67
Remove leftover file (#46445)
Release Notes: - N/A
Piotr Osiewicz created
206f54e
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.
Finn Evers created
a76b171
Autolabel first-time pull requests (#46443)
Release Notes: - N/A
Lena created
aaebee4
Add `recent_projects` remote test (#46436)
Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
a481bdd
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
Danilo Leal created
e90913c
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
Lena created