These commits are when the Protocol Buffers files have changed: (only the last 100 relevant commits are shown)
| Commit: | 4592157 | |
|---|---|---|
| Author: | dino | |
Merge branch 'main' into 5039-remote-trash-restore
| Commit: | c31b2b0 | |
|---|---|---|
| Author: | drbh | |
| Committer: | GitHub | |
Git partially staged changes (#46541) This PR explores the addition of a new feature and UI to improve visibility into partially staged commits. Currently, the Git panel shows tracked and untracked changes, but it does not clearly distinguish between staged and unstaged changes. As a result, it’s difficult to quickly see which changes are not staged in the current UI. Both staged and unstaged changes are combined into the `Uncommitted Changes` multibuffer. This developer experience differs from other editors, most notably VS Code; which presents separate Staged Changes and Changes lists. ### Staged and unstaged diffs in multibuffers This PR introduces an alternative UI for unstaged changes that aligns with the overall Zed experience. Instead of showing changes on a per-file basis, staged and unstaged diffs are each displayed in their own multibuffers, similar to how `Uncommitted Changes` currently works. For example the following screenshot shows the current `Uncommitted Changes` on the left, the `Staged Changes` in the middle and the `Unstaged Changes` buffer on the right for comparison <img width="1408" height="859" src="https://github.com/user-attachments/assets/aa709f7a-041d-4cb1-95d6-84c0f5fff688" /> ### Indicators/interactions The new multibuffers can be opened in two ways: 1. Via a new `U` chip, which appears when a file has unstaged changes 2. Via new menu options (See screenshots below for both interaction paths.) <table> <tr> <td style="text-align: center; vertical-align: top;"> <p>via the chip</p> <img height="400" src="https://github.com/user-attachments/assets/3ef69f02-b787-499c-959a-25f50b3728e8" alt="Via the chip" /> </td> <td style="text-align: center; vertical-align: top;"> <p>via the menu</p> <img height="400" src="https://github.com/user-attachments/assets/f5be8b6d-ccdc-4420-bd29-75570b558016" alt="Via the menu" /> </td> </tr> </table> ### Design goals - minimally intrusive UI changes (small new badge and menu items) - adhere by Zed'ism (use multibuffer where possible) - avoid disabling any current interactions (Uncommitted Changes ui is unchanged) - avoid introducing an app level view mode (no new settings needed) ### Experience goals - make it easy to see what changes are not staged - make it easy to see that a file has unstaged changes (avoid developers accidently leaving out changes in a commit; a personal issue that I have when using Zed) - elegantly handle large file's unstaged changes (follows the same collapse and expanding seen in `Uncommitted Changes`) ### How to try - Clone the repo and run `cargo run` - Make a change to a file and stage it - Make another change to the file (the `U` indicator will appear) - Click the `U` to see the unstaged view ### Open questions/rough edges - [ ] determine if this user experience is useful for others - [ ] ensure all interactions work as expected (response to all update cases) In general I'm really interested in hearing the community's feedback about this interface, more than happy to make any changes or explore a different solution! ### Related issue: - https://github.com/zed-industries/zed/pull/36646 - https://github.com/zed-industries/zed/issues/26560 Release Notes: - Support partially staged commit multibuffers via a staged and unstaged changes view. --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Cole Miller <cole@zed.dev>
The documentation is generated from this commit.
| Commit: | ea87b05 | |
|---|---|---|
| Author: | Anant Goel | |
| Committer: | GitHub | |
Fix worktree grouping for bare checkouts (#59968) Summary - Track whether a worktree root is itself a linked Git worktree. - Use that metadata when computing project group keys so bare checkout worktrees group under the repository identity path. - Propagate the metadata through remote worktree protocols and add local/remote regression coverage. Background Bare checkout layouts can place linked worktrees under the repository identity directory, e.g. `/monty/.bare` with worktrees like `/monty/feature-a`. We were treating those linked worktree paths as separate project identities, which caused the sidebar to move agent threads under the active worktree instead of the shared repository group. We also exclude adding this to collab intentionally, we can open a different PR for that if we need to. Closes #59910 Closes AI-431 Test Plan - `cargo fmt --package project --package worktree --package remote_server --package workspace --package collab --package proto` - `git --no-pager diff --check` - `cargo test -p project test_project_group_key -- --nocapture` - `cargo test -p remote_server test_remote_root_repo_common_dir -- --nocapture` - `cargo test -p worktree remote_worktree -- --nocapture` - `cargo test -p workspace test_remote_project_root_dir_changes_update_groups -- --nocapture` - `cargo check -p collab` 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: - Fixed agent thread/sidebar grouping for Git worktrees backed by bare checkouts. --------- Co-authored-by: Anthony Eid <anthony@zed.dev>
| Commit: | 8414881 | |
|---|---|---|
| Author: | Anant Goel | |
| Committer: | Anant Goel | |
Fix worktree grouping for bare checkouts
| Commit: | 0a7c84b | |
|---|---|---|
| Author: | Marshall Bowers | |
| Committer: | GitHub | |
collab: Add `username` to `User` (#60097) This PR adds the `username` field to `User` and `proto::User`. Closes CLO-949. Release Notes: - N/A
| Commit: | 0deb6c0 | |
|---|---|---|
| Author: | Kirill Bulatov | |
| Committer: | GitHub | |
Fix code lens not being resolved in remote workflows (#59999) Follow-up to https://github.com/zed-industries/zed/pull/54100 Closes https://github.com/zed-industries/zed/issues/59122 Original PR overlooked that the resolve was not handled from the remote hosts at all... Also, fixes the re-fetch of code lens not taking new language servers into account: before, it exit early whilst now it actually re-fetches the lens for the new servers. Before: <img width="1728" height="1084" alt="before" src="https://github.com/user-attachments/assets/9ee8205b-084b-4409-9abc-18c4ddb9c4e9" /> After: <img width="1728" height="1084" alt="after" src="https://github.com/user-attachments/assets/16ad76dc-25e1-4257-80dc-b5aeabc9a4ef" /> Release Notes: - Fixed code lens not being resolved in remote workflows
| Commit: | 18c83b6 | |
|---|---|---|
| Author: | Kirill Bulatov | |
| Committer: | Kirill Bulatov | |
Draft global tools trust # Conflicts: # crates/workspace/src/workspace.rs # crates/zed/src/main.rs
| Commit: | 7ee0a9f | |
|---|---|---|
| Author: | Kirill Bulatov | |
| Committer: | Kirill Bulatov | |
Support resolving code actions on remote hosts # Conflicts: # crates/proto/proto/zed.proto
| Commit: | 1fd93cb | |
|---|---|---|
| Author: | Marshall Bowers | |
| Committer: | GitHub | |
Unship shared threads (#59981) This PR unships shared threads. The feature is not used much and is getting in the way, at this point. These are only ever made available to staff. The corresponding database schema migration has been created in the Cloud repo and applied to the production database. Release Notes: - N/A
| Commit: | ceaebdf | |
|---|---|---|
| Author: | Anant Goel | |
Fix worktree grouping for bare checkouts
| Commit: | 731a2c2 | |
|---|---|---|
| Author: | dino | |
fix(worktree): honor deprecated use_trash on delete requests Since we're going to be deprecating `DeleteProjectEntry::use_trash`, it would still be possible collab peers in an older version to request trashing a file using that flag, rather than using the newer `TrashProjectEntry` message. Since `handle_delete_entry` had stopped reading the flag, a newer host would permanently delete a file the user meant to send to the trash. This commit reverts that change to ensure that the host will continue correctly handling the `use_trash` flag until we do completely remove it.
| Commit: | 5bf72d9 | |
|---|---|---|
| Author: | dino | |
chore: tackle some todo Downgrade the following `TODO!` to `TODO` messages in order to avoid blocking CI/CD, as these seem worthy of a different Pull Request rather than trying to push these changes together with adding undo/redo support for remote: * `project_panel::ProjectPanel::remove` – Comment was left stating that this should probably be split into two different methods, now that deleting and trashing and relatively different operations, as trashing can be undone, so we can likely even get rid of the confirmation dialog. * `ProjectEntryResponse` – The `entry` is optional because it's not used by all dependents of this message. Since we're introducing separate response message for trashing and restoring (`TrashProjectEntryResponse` and `RestoreProjectEntryResponse`), we could likely also revisit this and introduce separate response for requests that rely on `ProjectEntryResponse` * Comments in `remote_server::headless_project` and `worktree::Worktree::create_entry as those have already been tackled. Still left one small `TODO!` comment that I'll be tackling in the next commit.
| Commit: | 9f622ae | |
|---|---|---|
| Author: | dino | |
Merge branch 'main' into 5039-remote-trash-restore
| Commit: | cf76418 | |
|---|---|---|
| Author: | Piotr Osiewicz | |
| Committer: | GitHub | |
collab: Revert livekit changes (#59733) - **Revert "livekit: Preserve tokens on channel rejoin (#59388)"** - **Revert "call: Log LiveKit connection info refresh outcomes in retry loop (#59205)"** - **Revert "audio: Fix phantom presence in channels (#59195)"** - **proto: Reserve RejoinRoomResponse field 4 after revert** We've observed a spike of phantom collaborator issues after this fixes. This sucks and I'm quite unhappy about it. # Objective - Describe the objective or issue this PR addresses. - If you're fixing a specific issue, use "Fixes #X" for each issue as [described in the GitHub docs](https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword). ## Solution - Describe the solution used to achieve the objective above. ## Testing - Did you test these changes? If so, how? - Are there any parts that need more testing? - How can other people (reviewers) test your changes? Is there anything specific they need to know? - If relevant, what platforms did you test these changes on, and are there any important ones you can't test? ## Self-Review Checklist: - [ ] I've reviewed my own diff for quality, security, and reliability - [ ] Unsafe blocks (if any) have justifying comments - [ ] The content adheres to Zed's UI standards ([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) and [icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md) guidelines) - [ ] Tests cover the new/changed behavior - [ ] Performance impact has been considered and is acceptable ## Showcase > This section is optional. If this PR does not include a visual change or does not add a new user-facing feature, you can delete this section. - Help others understand the result of this PR by showcasing your awesome work! - If this PR includes a visual change, consider adding a screenshot, GIF, or video - A before/after comparison is very useful for changes to existing features! While a showcase should aim to be brief and digestible, you can use a toggleable section to save space on longer showcases: <details> <summary>Click to view showcase</summary> My super cool demos here </details> --- Release Notes: - N/A --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
| Commit: | 479bce0 | |
|---|---|---|
| Author: | Lukas Wirth | |
| Committer: | GitHub | |
Implement telemetry for the remote server (#59692) # Objective Telemetry events generated **on a remote server** were silently dropped, and all remote telemetry that *was* reported got attributed to the local client's OS. ## Solution This PR makes server-originated events flow to the telemetry pipeline and attributes them to the actual remote host (connection type, OS, version, architecture), plus adds a transport-agnostic connection event. ## Additional Notes This removes the "SSH Project Opened" event and replaces it with a "Remote Connection Established" one that has more structured info and is also more useful in where it gets invoked. The server unconditionally sends back telemetry to the client, the client is then responsible for filtering on whether telemetry is enabled by the user or not as the server does not have knowledge of those settings itself. Release Notes: - N/A
| Commit: | 8c71243 | |
|---|---|---|
| Author: | dino | |
Merge branch 'main' into 5039-remote-trash-restore
| Commit: | f751073 | |
|---|---|---|
| Author: | Lukas Wirth | |
| Committer: | Lukas Wirth | |
Implement telemtry for the remote server
| Commit: | 1ffe3ca | |
|---|---|---|
| Author: | Kirill Bulatov | |
Support resolving code actions on remote hosts
| Commit: | 2962291 | |
|---|---|---|
| Author: | Richard Feldman | |
| Committer: | GitHub | |
Prevent archival of manually-created worktrees (#58275) This fixes archive cleanup for agent threads so Zed only removes worktrees it explicitly created, rather than treating every linked worktree under the configured managed directory as safe to delete. When Zed creates a worktree, it now records it in the local database along with the creation time of the worktree's git metadata directory (`.git/worktrees/<name>/`). Archive planning requires that record, and right before deleting anything, Zed re-stats the directory and compares creation times: if the worktree was removed and recreated outside Zed (or the time can't be read at all), deletion is skipped and the stale record is dropped. Every failure mode fails safe by leaving the directory untouched. For remote (SSH) projects, the stat runs on the remote host via a new `GitWorktreeCreatedAt` request. Worktrees created by a different Zed install (another release channel, or another machine connecting to the same host) have no record in the local database and are therefore never auto-archived, which is the intended conservative behavior. Closes https://github.com/zed-industries/zed/issues/57155 Closes AI-352 Release Notes: - Fixed archiving an agent thread incorrectly deleting manually-created git worktrees.
| Commit: | e5b6041 | |
|---|---|---|
| Author: | Piotr Osiewicz | |
| Committer: | GitHub | |
audio: Fix phantom presence in channels (#59195) # Objective You know that feeling? You join the channel, crack a banger joke to break the ice - yet, nobody laughs. Worse yet, you're swarmed with Slack messages like "Piotr, we can't hear you". After a while you realize that maybe it's for the best as the joke was not as good as you've initially thought, but still: it's possible to get into a state where other participants see you as muted. You don't hear anybody. Bummer. That's what happened when we were hoping to pair with @dinocosta today. I could not hear him. However, he had some logs to share which indicated that while collab thought he's in the room with me, live-kit was rejecting his token as it was revoked. What clanker helped us figure out is that there's a race-y code path where if you disconnect from a given room abruptly, collab can put you in a limbo. <details><summary>Clanker's idea of what's going on</summary> <p> Found the whole story. Here's what those logs mean and where the bug surface is. What's happening The error at room.rs:1809 is the detach_and_log_err on the task spawned by spawn_room_connection (crates/call/src/call_impl/room.rs:1754-1810). So this is the initial livekit::Room::connect call failing — the LiveKit SDK internally retried 3 times (that's the retrying... (1/3) lines), got 401 invalid token: revoked every time, gave up, and the error propagated out of the ? at line 1762 and was logged-and-dropped. The "revoked" comes from the collab server: leave_room_for_session (crates/collab/src/rpc.rs:4091-4095) calls live_kit.remove_participant(livekit_room, session.user_id().to_string()), and LiveKit Cloud treats a removed participant's token as revoked. Crucially, the LiveKit identity is just the user id, not the connection id, while the DB-side leave_room(connection_id) is per-connection. leave_room_for_session fires from three places: 1. Explicit leave (rpc.rs:1666) 2. connection_lost, after RECONNECT_TIMEOUT expires (rpc.rs:1342) 3. Stale-connection cleanup when re-joining a channel (rpc.rs:3401) So there's a race: an old connection's delayed cleanup (path 2) can fire after the same user has rejoined the room on a new connection and been issued a fresh token — and remove_participant(room, user_id) kicks/revokes the user's current LiveKit participant, because the identity is shared across connections. Quick restart of Zed, two instances, or a reconnect that straddles the server's RECONNECT_TIMEOUT all set this up. Client-side consequences (this connects to your first question) When that initial connect fails: - this.live_kit stays None and this.diagnostics is never created — lines 1780-1791 only run on success. So in this failure mode CallDiagnostics doesn't exist at all; the "stats never overridden" path I described earlier isn't even reached. - There is no retry and no token refresh. The failure is detach_and_log_err'd and that's the end of it. The user stays in the room at the collab level (status is still Online, they appear in the channel), but with no audio and no way to recover short of leaving and rejoining. - Even a collab-level reconnect doesn't help: RejoinRoomResponse (crates/proto/proto/call.proto:58) carries no live_kit_connection_info, and rejoin() never calls spawn_room_connection — the LiveKit connection is established exactly once, in Room::new, with the token from the original join response. So the user-visible symptom is: you're "in" the call, everyone sees you, but you can't hear or be heard, and there's no error surfaced in the UI — just this log line. If you want to fix it, the two angles are server-side (make leave_room_for_session skip the LiveKit removal when the user still has a live connection in that room, or scope LiveKit identities per-connection) and client-side (treat a failed spawn_room_connection as fatal-but-recoverable: surface it, and have rejoin request fresh connection info instead of silently carrying on). Happy to dig into either if you want. </p> </details> So tl;dr: our token was swapped out underneath us. One way to "fix" it was to just go into another channel, but that was a bummer. We have a good and reliable repro for it though: `kill -9 $ZED_PID` followed by an attempt to rejoin the same channel within 30s would consistently put us in that state. Put another way: you panic and thus do not send a clean "leave room" message to LK. if you rejoin the channel within 30s (after restarting), LK will invalidate the very token you're attempting to use (as it cleans up old tokens). It may also happen without crashing, but that's the most reliable way to repro the issue. Long story short your LK token gets tainted and you can't share the audio anyhow. ## Solution The fix is both client and server-side. On client's side, we now retry the reconnection with a back-off and we grab a fresh token off of reconnect attempts. On server's side, we share the current token on room reconnect attempts. We've also tweaked the call diagnostics to not use `unwrap_or_default` so much: it was hard for us to tell that we're in a totally bogus state and we've only reached that conclusion based on source code analysis. We now show some generic "ok you're in a borked state pls report a bug" message instead. ## Testing We added tests that present the flacky scenario. We've also tried to setup an infra to test the new behaviour, but sadly, local LK instance seems to revoke tokens more leniently than the prod.. OTOH, we are quite confident that once new collab is deployed, we'll be able to mince the new tokens and life is going to be good. Even when running against the current prod instance we could see that our code changed the behaviour for the better, as now we'll actually try to use a new token if one is provided by collab. For that to happen we need to redeploy though. ## 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 adheres to Zed's UI standards ([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) and [icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md) guidelines) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - Fixed a race condition that caused collab users to not receive/send any audio to their peers. --------- Co-authored-by: dino <dinojoaocosta@gmail.com> Co-authored-by: Dino <dino@zed.dev> Co-authored-by: zed-zippy[bot] <234243425+zed-zippy[bot]@users.noreply.github.com>
| Commit: | 8a432f8 | |
|---|---|---|
| Author: | Bennet Bo Fenner | |
| Committer: | GitHub | |
acp: Indicate when agent is downloading (#57710) Release Notes: - agent: Indicate when ACP servers are downloading --------- Co-authored-by: zed-zippy[bot] <234243425+zed-zippy[bot]@users.noreply.github.com>
| Commit: | 9cc78ac | |
|---|---|---|
| Author: | Xin Zhao | |
| Committer: | GitHub | |
lsp: Register available LSP adapters locally when in remote development (#54915) 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 #49178 The context for this change is covered in #49178. Some language server adapters are lazily registered; in remote development or collab sessions, the local client fails to register these adapters, may causing certain LSP features to function incorrectly. This PR is intended to address that. Release Notes: - N/A
| Commit: | 0b43719 | |
|---|---|---|
| Author: | chenmi | |
| Committer: | GitHub | |
Remove stale SSH LSP log entries after server restarts (#55299) 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 #55287 This fixes the SSH remote case where restarting a language server left a stale entry in the LSP Logs panel. The root cause was that the remote client learned about the replacement language server, but never received an explicit removal update for the previous server id. As a result, the old status and log-store entry remained visible even though only the new server continued producing logs. Tested with: - `cargo test -p collab --test collab_tests remote_editing_collaboration_tests::test_ssh_restarting_language_server_replaces_remote_status -- --exact` Release Notes: - Fixed stale duplicate entries in the LSP Logs panel after restarting an SSH remote language server. Co-authored-by: Lukas Wirth <lukas@zed.dev>
| Commit: | 7135cb7 | |
|---|---|---|
| Author: | Marshall Bowers | |
Unship shared threads
| Commit: | 9989fcf | |
|---|---|---|
| Author: | Kirill Bulatov | |
| Committer: | Kirill Bulatov | |
Simplify global tool trust
| Commit: | baa1f89 | |
|---|---|---|
| Author: | Kirill Bulatov | |
| Committer: | Kirill Bulatov | |
Draft global tools trust # Conflicts: # crates/project/src/lsp_store.rs
| Commit: | 3e77442 | |
|---|---|---|
| Author: | Kirill Bulatov | |
| Committer: | GitHub | |
Support LSP document links (#56011) Closes https://github.com/zed-industries/zed/issues/33587 https://github.com/user-attachments/assets/bbaea8a9-402e-485b-800e-2f4486142956 Release Notes: - Supported LSP document links (enabled by default, use `"lsp_document_links": false` to turn it off)
| Commit: | 786eb24 | |
|---|---|---|
| Author: | Mikhail Pertsev | |
| Committer: | GitHub | |
git: Recover branch refs when metadata lookup fails (#57285) cc @cole-miller 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: - Fixed branch enumeration when a broken Git ref prevents commit metadata from being read. --------- Co-authored-by: Cole Miller <cole@zed.dev>
| Commit: | bacdfee | |
|---|---|---|
| Author: | zed-zippy[bot] | |
| Committer: | GitHub | |
ep: Don't open unnecessary files during context collection (#57318) (cherry-pick to stable) (#57445) Cherry-pick of #57318 to stable ---- 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 Closes #ISSUE Release Notes: - N/A or Added/Fixed/Improved ... Co-authored-by: Ben Kunkle <ben@zed.dev>
| Commit: | 71240f1 | |
|---|---|---|
| Author: | zed-zippy[bot] | |
| Committer: | GitHub | |
ep: Don't open unnecessary files during context collection (#57318) (cherry-pick to preview) (#57444) Cherry-pick of #57318 to preview ---- 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 Closes #ISSUE Release Notes: - N/A or Added/Fixed/Improved ... Co-authored-by: Ben Kunkle <ben@zed.dev>
| Commit: | 63c16fc | |
|---|---|---|
| Author: | Anthony Eid | |
Wip add a separate emitter on project for lsp store events
| Commit: | b3ce9a4 | |
|---|---|---|
| Author: | Ben Kunkle | |
| Committer: | GitHub | |
ep: Don't open unnecessary files during context collection (#57318) 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 Closes #ISSUE Release Notes: - N/A or Added/Fixed/Improved ...
| Commit: | 0de588c | |
|---|---|---|
| Author: | Smit Barmase | |
| Committer: | GitHub | |
git_ui: Add force delete for unmerged branches (#55927) Git's `-d` flag deletes a branch only if it's fully merged into its upstream or HEAD - this is what we were using before, which caused the "not fully merged" error. The `-D` flag force deletes a branch even with unmerged changes (equivalent to `--delete --force`). ### Before Deleting an unmerged branch failed with a "not fully merged" error toast. ### After - Deleting an unmerged branch prompts for confirmation to force delete - Delete button tooltip shows "Hold alt to force delete" hint - Holding **alt** turns the delete icon red and tooltip changes to "Force Delete Branch" - Force delete keybinding: `cmd-alt-shift-backspace` Release Notes: - Added confirmation prompt when deleting unmerged git branches, with option to force delete. - Added alt+click on delete button to force delete a branch immediately.
| Commit: | 4e08263 | |
|---|---|---|
| Author: | Anthony Eid | |
| Committer: | GitHub | |
git_graph: Add remote support (#55788) Follow up: https://github.com/zed-industries/zed/pull/55167, https://github.com/zed-industries/zed/pull/54468 This is the final PR for adding remote support on the git graph. It uses the client stream request support added in #55167 to add support for the initial graph data request. I also fixed a bug where `GitGraph::FullyLoaded` repository event was never emitted. 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 Closes ##53040 Co-authored-by: Remco Smits \<djsmits12@gmail.com\> Release Notes: - git_graph: Add remote support --------- Co-authored-by: Ben Kunkle <ben@zed.dev>
| Commit: | 8af115d | |
|---|---|---|
| Author: | zed-zippy[bot] | |
| Committer: | GitHub | |
Improve bare repo support (#55153) (cherry-pick to preview) (#55680) Cherry-pick of #55153 to preview ---- Fixes https://github.com/zed-industries/zed/issues/54830 This fixes a bugs where * when there's no main worktree, we treated the first linked worktree as main * the titlebar and sidebar showed two different things when opening a linked wortree directly When there's no main worktree, our "project group key" will be the bare repo path. For displaying this to the user, we try to present something meaningful: * If the bare repo is `foo.git`, we'll say "foo" * If the bare repo is "bar/.bare", we'll "bar" Release Notes: - Fixed bugs in Zed's sidebar and titlebar when editing in git worktrees created from bare repositories. Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
| Commit: | 149cd4e | |
|---|---|---|
| Author: | Anthony Eid | |
| Committer: | GitHub | |
git_graph: Add remote support for search operations (#55167) ### 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>
| Commit: | 648f792 | |
|---|---|---|
| Author: | boaz-h | |
| Committer: | GitHub | |
Fix creating branch with base in remote (#55387) To support branch create with base branch, added extra optional field in GitCreateBranch proto. 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 #43985 Release Notes: - git: Fixed remote branch creation based on default branch
| Commit: | caccc65 | |
|---|---|---|
| Author: | Max Brunsfeld | |
| Committer: | GitHub | |
Improve bare repo support (#55153) Fixes https://github.com/zed-industries/zed/issues/54830 This fixes a bugs where * when there's no main worktree, we treated the first linked worktree as main * the titlebar and sidebar showed two different things when opening a linked wortree directly When there's no main worktree, our "project group key" will be the bare repo path. For displaying this to the user, we try to present something meaningful: * If the bare repo is `foo.git`, we'll say "foo" * If the bare repo is "bar/.bare", we'll "bar" Release Notes: - Fixed bugs in Zed's sidebar and titlebar when editing in git worktrees created from bare repositories.
| Commit: | 0194fe0 | |
|---|---|---|
| Author: | Anthony Eid | |
| Committer: | GitHub | |
git: Replace file history view with git graph (#50288) ## Summary This PR replaces the git file history view with the git graph view that doesn't render the graph canvas. This has several advantages 1. Benefits from the graphs performance and lazy loading 2. Gets the graph's search for free 3. Resizable columns 4. The commit information panel 5. Is persistent 6. Cleans up a lot of code The one con of this change is the graph doesn't have support remote/collab support yet, but that is a WIP and should be merged within a week. Also, the git graph now propagates errors to the UI, which is the last thing on the graph's stable launch todo list! Before you mark this PR as ready for review, make sure that you have: - [x] Added a solid test coverage and/or screenshots from doing manual testing - [x] Done a self-review taking into account security and performance aspects - [x] Aligned any UI changes with the [UI checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) Release Notes: - N/A *or* Added/Fixed/Improved ... --------- Co-authored-by: dino <dinojoaocosta@gmail.com> Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com> Co-authored-by: Joseph T. Lyons <JosephTLyons@gmail.com>
| Commit: | a10a5f3 | |
|---|---|---|
| Author: | Anthony Eid | |
| Committer: | GitHub | |
cherry-pick: #54575 to preview (#54577) 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: - git: Fix remote branch picker
| Commit: | 8589211 | |
|---|---|---|
| Author: | Anthony Eid | |
| Committer: | GitHub | |
cherry-pick: #54575 to stable (#54576) 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: - git: Fix remote branch picker
| Commit: | 58c4dda | |
|---|---|---|
| Author: | Anthony Eid | |
| Committer: | GitHub | |
git: Fix remote branch picker not showing branches (#54575) This sends `branch_list` in live `UpdateRepository` messages so downstream repository snapshots stay in sync and the remote branch picker can populate correctly. Collab DB replay for join/reconnect will follow in a separate change. This fixes a bug where the branch picker wouldn't show any branches in remote environments 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 #54530 Release Notes: - git: Fix remote branch picker not showing any branches
| Commit: | 72d004c | |
|---|---|---|
| Author: | Anthony Eid | |
| Committer: | GitHub | |
git_graph: Add remote support for commit data handler (#54468) ### Motivation To support remote Git graph usage, we need remote support for the Git APIs that the graph depends on. This PR adds remote support for `CommitDataHandler` (the `git cat-file --batch` process manager), allowing remote Git graph consumers to fetch visible commit data without polling. #### Summary The Git graph separates the UI and data layers so the UI can continue rendering while commit data is fetched in the background. This change extends that model to remote repositories by allowing `GitStore::fetch_commit_data(sha: Oid, await_result: bool, cx: &mut Context) -> &CommitDataState` to await remote commit loading. For simplicity, the `Starting` variant was removed from `CommitDataState`. `CommitDataState::Loading(Option<...>)` now stores `Some(...)` when `await_result == true` is passed to `fetch_commit_data`. This allows the data layer to await commit loading without polling, and only when explicitly requested. I also removed the `Graph` prefix from `CommitData`-related types because this API is general-purpose and not limited to the graph. Longer term, I hope to replace `Repository::show` with the commit data functionality, since it already provides built-in caching. #### Bug Fixes - Fix stale `Loading(...)` entries that survive enqueue failure or handler shutdown. - Fix commit data handler bookkeeping so `pending_requests`, `completion_senders`, and `CommitDataState` remain consistent. - Fix remote commit-data loading so the data layer can await results instead of polling. #### Testing - Add property tests for commit data fetching. - Add a collab integration test that verifies batched remote commit-data fetching. #### Follow Up In a follow-up, I want to replace the `Repository::show` backend with the commit data handler and remove `CommitDetails` from the codebase as a cleanup and maintenance pass. The commit data handler already provides caching and is a better long-term path for commit metadata access. I may also want to allow the `CommitData` type to propagate errors to callers. For the Git graph, the remaining work is remote search and initial data fetching. 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 --------- Co-authored-by: Remco Smits <djsmits12@gmail.com>
| Commit: | edc4f40 | |
|---|---|---|
| Author: | Eric Holk | |
| Committer: | GitHub | |
Cherry picks for v0.233.x preview release (#54208) Cherry picks for today's preview release, bringing the v0.233.x branch up to date with fixes for archive threads on remotes and sidebar thread time ordering. ### Cherry-picked PRs Requested for this release: - #54074 — agent: Fix `find_or_create` repository to support remote - #54173 — sidebar: Fix sidebar thread times Pulled in as dependencies so the requested PRs apply cleanly (preferring to carry over additional changes rather than modify the cherry-picked patches): - #53991 — Only archive worktrees that Zed created - #54001 — agent: Support remote archive thread git operations - #54014 — Avoid showing draft threads in the sidebar or storing them in the database - #54088 — Use Fs abstraction for worktree directory removal ### Conflict resolution notes - **#54014** — The previous omnibus cherry-pick (#54111) pulled in later refactors that extracted `LIST_QUERY` to a `const` without including #54014's `WHERE session_id IS NOT NULL` filter or its draft-cleanup migration. I applied the filter to the existing `const LIST_QUERY` and kept the branch's `run_thread_metadata_migrations` helper in the affected test, rather than reverting to #54014's inline forms. - **#54173** — On v0.233.x, `sidebar_tests.rs` still contains `test_search_finds_threads_hidden_behind_view_more` (removed from main by #53956, which isn't on this branch). That test calls `save_thread_metadata`, so #54173's signature change — adding an `interacted_at: Option<DateTime<Utc>>` parameter — required a mechanical `None,` argument added to this one additional call site beyond what the cherry-pick touched. No changes were made to the substance of any cherry-picked patch. Release Notes: - N/A --------- Co-authored-by: Richard Feldman <richard@zed.dev> Co-authored-by: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com> Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com> Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com> Co-authored-by: Cameron Mcloughlin <cameron.studdstreet@gmail.com> Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
| Commit: | 34a7355 | |
|---|---|---|
| Author: | dino | |
fix: ensure that the entry is already available after remote restore The `RestoreProjectEntryResponse` was simply returning the `entry_id`, instead of the whole entry information. On the `RemoteWorktree::restore_worktree` side, the `entry_id` was being used to obtain the entry, so as to then insert the proto entry, using `RemoteWorktree::insert_entry`. Unfortunately, this could lead to panics, for example: 1. Create a new file 2. Undo, which will trash file 3. Redo, which will restore the file As far as I can tell, this was happening because the `RemoteWorktree` wasn't yet updated on our end, so there wasn't actually an entry being returned for `RemoteWorktree::entry_for_id`. As such, this commit updates the `entry_id` field, and type, in `RestoreProjectEntryResponse` to the actual `Entry` data, just like in `ProjectEntryResponse`.
| Commit: | 06f1fa9 | |
|---|---|---|
| Author: | dino | |
feat: support restoring on remote worktree
| Commit: | 3ef3633 | |
|---|---|---|
| Author: | dino | |
feat: support trashing in remote * Ensure that trashing a file or directory is now properly supported in remote, ensuring that it does return a `TrashId` that can be then used to keep track of the change in the Undo Manager. * Separate `delete_entry` and `trash_entry` at both the project and worktree level, to make it easier to reason about and ensure we don't need to mess with `Option<TrashId>`, deleting will never return a `TrashId`. Worth noting that undoing a trash operation in remote is not yet supported as `RemoteWorktre::restore_entry` is not yet available. Co-authored-by: Yara <git@yara.blue>
| Commit: | d60b556 | |
|---|---|---|
| Author: | Anthony Eid | |
| Committer: | GitHub | |
agent: Support remote archive thread git operations (#54001) ### Summary This PR implements remote support for git store operations that the sidebar's archive thread checkpoint/restore featured relied on. This was the second to last blocker for remote usage of this feature. I also made a shared backend between `update_ref` and `delete_ref` called `edit_ref` because they run the same git command and this allowed for some code unification. #### Remote Git Operations - `Repository::update_ref` - `Repository::delete_ref` - `Repository::repair_worktrees` - `Repository::create_archive_checkpoint` - `Repository::restore_archive_checkpoint` #### Follow up `agent_ui::thread_worktree_archive::find_or_create_repository` needs to be made aware of the remote machine that the repository it's searching for is on. Once that is completed, we can get the correct repo when archiving a remote thread and the flow should work without any problems. 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
| Commit: | f65eac3 | |
|---|---|---|
| Author: | dino | |
checkpoint: more remote work
| Commit: | 6beecae | |
|---|---|---|
| Author: | Danilo Leal | |
| Committer: | GitHub | |
agent_ui: Improve the new thread worktree UX (#53941) Closes https://github.com/zed-industries/zed/issues/53262 - Remove the ability to pick a branch from the agent panel; delegate this to the title bar picker - Make the worktree creation earger, just as you selected whether you want to create it from main or current branch - Remove flicker when creating a new worktree and switching to a previously existing one - Improve some UI stuff: how we display that a worktree is creating/loading, the branch and worktree icons, etc. - Fixed a bug where worktrees in a detached HEAD state wouldn't show up in the worktree pickers A big part of the diff of this PR is the removal of everything involved with the `StartThreadIn` enum/the set up involved in only creating the worktree by the time of the first prompt send. Release Notes: - Agent: Improved and simplified the UX of creating threads in Git worktrees. - Git: Fixed a bug where worktrees in a detached HEAD state wouldn't show up in the worktree picker. --------- Co-authored-by: Nathan Sobo <nathan@zed.dev>
| Commit: | 4802302 | |
|---|---|---|
| Author: | Richard Feldman | |
| Committer: | GitHub | |
Cherry-pick fixes for v0.232.x preview patch (#53658) Cherry-picked PRs (in order applied): 1. https://github.com/zed-industries/zed/pull/53386 2. https://github.com/zed-industries/zed/pull/53400 3. https://github.com/zed-industries/zed/pull/53396 4. https://github.com/zed-industries/zed/pull/53428 5. https://github.com/zed-industries/zed/pull/53356 6. https://github.com/zed-industries/zed/pull/53215 7. https://github.com/zed-industries/zed/pull/53429 8. https://github.com/zed-industries/zed/pull/53458 9. https://github.com/zed-industries/zed/pull/53436 10. https://github.com/zed-industries/zed/pull/53451 11. https://github.com/zed-industries/zed/pull/53454 12. https://github.com/zed-industries/zed/pull/53419 13. https://github.com/zed-industries/zed/pull/53287 14. https://github.com/zed-industries/zed/pull/53521 15. https://github.com/zed-industries/zed/pull/53463 16. https://github.com/zed-industries/zed/pull/52848 17. https://github.com/zed-industries/zed/pull/53544 18. https://github.com/zed-industries/zed/pull/53556 19. https://github.com/zed-industries/zed/pull/53566 20. https://github.com/zed-industries/zed/pull/53579 21. https://github.com/zed-industries/zed/pull/53575 22. https://github.com/zed-industries/zed/pull/53550 23. https://github.com/zed-industries/zed/pull/53585 24. https://github.com/zed-industries/zed/pull/53510 25. https://github.com/zed-industries/zed/pull/53599 26. https://github.com/zed-industries/zed/pull/53099 27. #53662 28. #53660 29. #53657 30. #53654 Release Notes: - N/A --------- Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com> Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com> Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de> Co-authored-by: Bennet Bo Fenner <bennet@zed.dev> Co-authored-by: Nathan Sobo <nathan@zed.dev> Co-authored-by: Anthony Eid <anthony@zed.dev> Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com> Co-authored-by: Eric Holk <eric@zed.dev> Co-authored-by: Anthony Eid <hello@anthonyeid.me> Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com> Co-authored-by: Cameron Mcloughlin <cameron.studdstreet@gmail.com> Co-authored-by: Cole Miller <cole@zed.dev> Co-authored-by: Mikayla Maki <mikayla@zed.dev> Co-authored-by: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com> Co-authored-by: Katie Geer <katie@zed.dev> Co-authored-by: ojpro <contact@ojpro.me>
| Commit: | 1f2cf7e | |
|---|---|---|
| Author: | dino | |
chore: initial attempt
| Commit: | d812adc | |
|---|---|---|
| Author: | Eric Holk | |
| Committer: | GitHub | |
sidebar: Better handling for threads in remote workspaces (#53451) This PR greatly improves our handling of remote threads in the sidebar. One primary issue was that many parts of the sidebar were only looking at a thread's path list and not its remote connection information. The fix here is to use `ProjectGroupKey` more consistently throughout the sidebar which also includes remote connection information. The second major change is to extend the MultiWorkspace with the ability to initiate the creation of remote workspaces when needed. This involved refactoring a lot of our remote workspace creation paths to share a single code path for better consistency. Release Notes: - (Preview only) Fixed remote project threads appearing as a separate local project in the sidebar --------- Co-authored-by: Anthony Eid <anthony@zed.dev> Co-authored-by: Anthony Eid <hello@anthonyeid.me> Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
| Commit: | c99129d | |
|---|---|---|
| Author: | Anthony Eid | |
Get remote use case working
| Commit: | ccb9e60 | |
|---|---|---|
| Author: | Anthony Eid | |
| Committer: | GitHub | |
agent_panel: Add new thread git worktree/branch pickers (#52979) This PR allows users to create a new thread based off a git worktree that already exists or has a custom name. User's can also choose what branch they want the newly generated worktree to be based off of. The UI still needs some polish, but I'm merging this early to get the team using this before our preview launch. I'll be active today and tomorrow before launch to fix any nits we have with the UI. Functionality of this feature works! And I have a basic test to prevent regressions 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 or Added/Fixed/Improved ... --------- Co-authored-by: cameron <cameron.studdstreet@gmail.com>
| Commit: | fb2bff8 | |
|---|---|---|
| Author: | Richard Feldman | |
| Committer: | GitHub | |
Add allow_empty commits, detached worktree creation, and new git operations (#53213) Extend the git API with several new capabilities needed for worktree archival and restoration: - Add `allow_empty` flag to `CommitOptions` for creating WIP marker commits - Change `create_worktree` to accept `Option<String>` branch, enabling detached worktree creation when `None` is passed - Add `head_sha()` to read the current HEAD commit hash - Add `update_ref()` and `delete_ref()` for managing git references - Add `stage_all_including_untracked()` to stage everything before a WIP commit - Implement all new operations in `FakeGitRepository` with functional commit history tracking, reset support, and ref management - Update existing call sites for the new `CommitOptions` field and `create_worktree` signature Part 1 of 3 in the persist-worktree stack. These are nonbreaking API additions with no behavioral changes to existing code. Release Notes: - N/A --------- Co-authored-by: Anthony Eid <anthony@zed.dev>
| Commit: | 4852966 | |
|---|---|---|
| Author: | Anthony Eid | |
Fix proto migration
| Commit: | f9a0239 | |
|---|---|---|
| Author: | Anthony Eid | |
Add remote support for repository::head_sha
| Commit: | a357250 | |
|---|---|---|
| Author: | Anthony Eid | |
Unify the create worktree functions Now creating a worktree from a detached head also has remote support
| Commit: | 25ff899 | |
|---|---|---|
| Author: | Richard Feldman | |
Add allow_empty commits, detached worktree creation, and new git operations Extend the git API with several new capabilities needed for worktree archival and restoration: - Add allow_empty flag to CommitOptions for creating WIP marker commits - Change create_worktree to accept Option<String> branch, enabling detached worktree creation when None is passed - Add head_sha() to read the current HEAD commit hash - Add update_ref() and delete_ref() for managing git references - Add stage_all_including_untracked() to stage everything before a WIP commit - Implement all new operations in FakeGitRepository with functional commit history tracking, reset support, and ref management - Update existing call sites for the new CommitOptions field and create_worktree signature
| Commit: | 55d728e | |
|---|---|---|
| Author: | Richard Feldman | |
Implement worktree archive persistence and restore Add the ability to archive and restore git worktrees when threads are archived, preserving both staged and unstaged state across the cycle. Key changes: - Store both staged and unstaged commit SHAs in archived worktree DB records instead of a single hash, eliminating fragile HEAD~N arithmetic for rollback and restore operations - Await rollback DB operations and surface errors instead of fire-and-forget with .detach() - Handle multiple worktrees in restore with targeted path replacement in complete_worktree_restore, preserving unrelated paths in multi-root threads - Guard cleanup_empty_workspaces against dropped workspace entities - Add cancel button for the restore spinner (visible on hover) - Show toast to user on worktree restore failure - Deserialize persisted project_group_keys when restoring windows - Add deterministic tests for two-SHA round-trip, single/multiple path replacement, and multi-worktree archive scenarios
| Commit: | 20f7308 | |
|---|---|---|
| Author: | Max Brunsfeld | |
| Committer: | GitHub | |
Maintain root repo common dir path as a field on Worktree (#53023) This enables us to always different git worktrees of the same repo together. Depends on https://github.com/zed-industries/cloud/pull/2220 Release Notes: - N/A --------- Co-authored-by: Eric Holk <eric@zed.dev>
| Commit: | e8e9f45 | |
|---|---|---|
| Author: | Richard Feldman | |
Merge remote-tracking branch 'origin/main' into AI-112/delete-worktree-on-archive-v2
| Commit: | a553595 | |
|---|---|---|
| Author: | Richard Feldman | |
Merge remote-tracking branch 'origin/main' into AI-112/git-worktree-operations
| Commit: | fbdeb93 | |
|---|---|---|
| Author: | Oliver Azevedo Barnes | |
| Committer: | GitHub | |
devcontainer: Implement remote support for git checkpoint operations (#48896) Closes #47907 Implements the four git checkpoint operations (`create`, `restore`, `compare`, `diff`) that had been stubbed out for remote repositories, and related test infrastructure. Testing steps: 1. Open a project with a `.devcontainer` configuration and connect to the Dev Container 2. Open an Agent thread and ask the agent to make a code change 3. After the agent completes, verify the "Restore from checkpoint" button appears (previously missing in Dev Container sessions) 4. Click "Restore from checkpoint" and confirm the file reverts to its prior state Release Notes: - Added support for git checkpoint operations in remote/Dev Container sessions, restoring the "Restore from checkpoint" button in Agent threads. --------- Co-authored-by: KyleBarton <kjb@initialcapacity.io>
| Commit: | cfb09c2 | |
|---|---|---|
| Author: | Richard Feldman | |
| Committer: | Richard Feldman | |
Add allow_empty to CommitOptions, detached worktree support, and new git operations - Add allow_empty field to CommitOptions and proto CommitOptions - Change create_worktree trait method to accept Option<String> branch name (None means detached HEAD via --detach) - Add update_ref, delete_ref, and stage_all_including_untracked to the GitRepository trait with implementations for RealGitRepository
| Commit: | 3ff9d44 | |
|---|---|---|
| Author: | Richard Feldman | |
Merge remote-tracking branch 'origin/main' into AI-112/delete-worktree-on-archive
| Commit: | 2a15bf6 | |
|---|---|---|
| Author: | Cole Miller | |
| Committer: | GitHub | |
Require multibuffer excerpts to be ordered and nonoverlapping (#52364) TODO: - [x] merge main - [x] nonshrinking `set_excerpts_for_path` - [x] Test-drive potential problem areas in the app - [x] prepare cloud side - [x] test collaboration - [ ] docstrings - [ ] ??? ## Context ### Background Currently, a multibuffer consists of an arbitrary list of anchor-delimited excerpts from individual buffers. Excerpt ranges for a fixed buffer are permitted to overlap, and can appear in any order in the multibuffer, possibly separated by excerpts from other buffers. However, in practice all code that constructs multibuffers does so using the APIs defined in the `path_key` submodule of the `multi_buffer` crate (`set_excerpts_for_path` etc.) If you only use these APIs, the resulting multibuffer will maintain the following invariants: - All excerpts for the same buffer appear contiguously in the multibuffer - Excerpts for the same buffer cannot overlap - Excerpts for the same buffer appear in order - The placement of the excerpts for a specific buffer in the multibuffer are determined by the `PathKey` passed to `set_excerpts_for_path`. There is exactly one `PathKey` per buffer in the multibuffer ### Purpose of this PR This PR changes the multibuffer so that the invariants maintained by the `path_key` APIs *always* hold. It's no longer possible to construct a multibuffer with overlapping excerpts, etc. The APIs that permitted this, like `insert_excerpts_with_ids_after`, have been removed in favor of the `path_key` suite. The main upshot of this is that given a `text::Anchor` and a multibuffer, it's possible to efficiently figure out the unique excerpt that includes that anchor, if any: ``` impl MultiBufferSnapshot { fn buffer_anchor_to_anchor(&self, anchor: text::Anchor) -> Option<multi_buffer::Anchor>; } ``` And in the other direction, given a `multi_buffer::Anchor`, we can look at its `text::Anchor` to locate the excerpt that contains it. That means we don't need an `ExcerptId` to create or resolve `multi_buffer::Anchor`, and in fact we can delete `ExcerptId` entirely, so that excerpts no longer have any identity outside their `Range<text::Anchor>`. There are a large number of changes to `editor` and other downstream crates as a result of removing `ExcerptId` and multibuffer APIs that assumed it. ### Other changes There are some other improvements that are not immediate consequences of that big change, but helped make it smoother. Notably: - The `buffer_id` field of `text::Anchor` is no longer optional. `text::Anchor::{MIN, MAX}` have been removed in favor of `min_for_buffer`, etc. - `multi_buffer::Anchor` is now a three-variant enum (inlined slightly): ``` enum Anchor { Min, Excerpt { text_anchor: text::Anchor, path_key_index: PathKeyIndex, diff_base_anchor: Option<text::Anchor>, }, Max, } ``` That means it's no longer possible to unconditionally access the `text_anchor` field, which is good because most of the places that were doing that were buggy for min/max! Instead, we have a new API that correctly resolves min/max to the start of the first excerpt or the end of the last excerpt: ``` impl MultiBufferSnapshot { fn anchor_to_buffer_anchor(&self, anchor: multi_buffer::Anchor) -> Option<text::Anchor>; } ``` - `MultiBufferExcerpt` has been removed in favor of a new `map_excerpt_ranges` API directly on `MultiBufferSnapshot`. ## Self-Review Checklist <!-- Check before requesting review: --> - [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 --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com> Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com> Co-authored-by: Jakub Konka <kubkon@jakubkonka.com> Co-authored-by: Conrad <conrad@zed.dev>
| Commit: | 2f93e73 | |
|---|---|---|
| Author: | Richard Feldman | |
Merge remote-tracking branch 'origin/main' into AI-112/delete-worktree-on-archive # Conflicts: # crates/fs/src/fake_git_repo.rs
| Commit: | dc46160 | |
|---|---|---|
| Author: | Richard Feldman | |
Add allow_empty to proto CommitOptions
| Commit: | 89732f1 | |
|---|---|---|
| Author: | Anthony Eid | |
| Committer: | GitHub | |
git: Forbid main git worktree deletion from worktree picker (#52841) This operation would always fail in the UI because the git binary already disallowed it. This PR just makes the UI more inline with what's actually valid 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: - git: Forbid main git worktree deletion from git worktree picker --------- Co-authored-by: Eric Holk <eric@zed.dev>
| Commit: | 76c6004 | |
|---|---|---|
| Author: | Ben Brandt | |
| Committer: | GitHub | |
Remove text thread and slash command crates (#52757) 🫡 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: - Removed legacy Text Threads feature to help streamline the new agentic workflows in Zed. Thanks to all of you who were enthusiastic Text Thread users over the years ❤️! --------- Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
| Commit: | 809e701 | |
|---|---|---|
| Author: | Ben Brandt | |
| Committer: | GitHub | |
acp: Notify when we receive new versions from the registry (#52818) Wires up the missing version notifications for registry + extension agents. The UI part of this is already setup, we were just never triggering it. 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 --------- Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
| Commit: | ed2c08f | |
|---|---|---|
| Author: | ᴀᴍᴛᴏᴀᴇʀ | |
| Committer: | GitHub | |
git_ui: Fix branch picker deleting remote instead of remote branch (#48338) Closes #48256 It appears that the current git remotes support was implemented in #42819, following the design described in https://github.com/zed-industries/zed/pull/42486#issuecomment-3524092306. That design does not include an interaction for deleting remotes, but the delete remote branch action was mistakenly implemented as deleting the remote itself. After this PR, there should be no code paths that use `remove_remote` anymore. I've kept it for now though, as it may be useful when we introduce the corresponding interaction in the future. Release Notes: - Fixed a bug where deleting a remote branch from the branch picker would incorrectly remove the entire remote configuration
| Commit: | 949944a | |
|---|---|---|
| Author: | Atchyut Preetham Pulavarthi | |
| Committer: | GitHub | |
editor: Fix jumbled auto-imports when completing with multiple cursors (#50320) When accepting an autocomplete suggestion with multiple active cursors using `CMD+D`, Zed applies the primary completion edit to all cursors. However, the overlap check for LSP `additionalTextEdits` only verifies the replace range of the newest cursor. If user has a cursor inside an existing import statement at the top of the file and another cursor further down, Zed fails to detect the overlap at the top of the file. When the user auto-completes the import statement ends up jumbled. This fix updates the completion logic to calculate the commit ranges for all active cursors and passes them to the LSP store. The overlap check now iterates over all commit ranges to ensure auto-imports are correctly discarded if they intersect with any of the user's multi-cursor edits. Closes https://github.com/zed-industries/zed/issues/50314 ### Before https://github.com/user-attachments/assets/8d0f71ec-37ab-4714-a318-897d9ee5e56b ### After https://github.com/user-attachments/assets/4c978167-3065-48c0-bc3c-547a2dd22ac3 Before you mark this PR as ready for review, make sure that you have: - [x] Added a solid test coverage and/or screenshots from doing manual testing - [x] Done a self-review taking into account security and performance aspects - [x] Aligned any UI changes with the [UI checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) Release Notes: - Fixed an issue where accepting an autocomplete suggestion with multiple cursors could result in duplicated or jumbled text in import statements.
| Commit: | 17adc40 | |
|---|---|---|
| Author: | Mikayla Maki | |
| Committer: | GitHub | |
Implement sidebar rendering of the configured worktrees (#51342) Implements worktree support for the agent panel sidebar Before you mark this PR as ready for review, make sure that you have: - [x] Added a solid test coverage and/or screenshots from doing manual testing - [x] Done a self-review taking into account security and performance aspects - [x] Aligned any UI changes with the [UI checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) Release Notes: - N/A
| Commit: | e4b3c0f | |
|---|---|---|
| Author: | Bennet Bo Fenner | |
| Committer: | GitHub | |
agent: Re-use ACP connections per project (#51209) Release Notes: - N/A --------- Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
| Commit: | d18e4a7 | |
|---|---|---|
| Author: | Anthony Eid | |
| Committer: | GitHub | |
git: Add SSH support for removing and renaming git worktrees (#50759) This should be the last step in implementing full git worktree support in the `GitStore`. We still need to add UI for that allows a user to rename a git worktree and, by extension git branches if we use the git picker to do so. Also, I added a helper function called `disallow_guest_request::<T>` to the `Collab::rpc` that is used to specify a proto request isn't allowed to be sent by a guest. This enabled me to add a regression test that checks that a guest isn't allowed to delete a git worktree, without the test hanging forever because it's waiting for the proto server to respond. Since SSH connections send the proto message directly from client to remote host, this won't affect those requests. Before you mark this PR as ready for review, make sure that you have: - [x] Added solid test coverage and/or screenshots from doing manual testing - [x] Done a self-review taking into account security and performance aspects - [ ] Aligned any UI changes with the [UI checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) Release Notes: - git: Add SSH support for removing git worktrees
| Commit: | 5c91ebf | |
|---|---|---|
| Author: | Anthony Eid | |
| Committer: | GitHub | |
git: Move diff num stat calculation to repository snapshot layer (#50645) Follow up on: https://github.com/zed-industries/zed/pull/49519 This PR reworks how Zed calculates diff num stats by moving the calculation to the `RepositorySnapshot` layer, instead of the `GitPanel`. This has a couple of benefits: 1. Snapshot recalculations are already set up to recompute on file system changes and only update the affected files. This means that diff stats don't need to manage their own subscription or states anymore like they did in the original PR. 2. We're able to further separate the data layer from the UI. Before, the git panel owned all the subscriptions and tasks that refreshed the diff stat, now the repository does, which is more inline with the code base. 3. Integration tests are cleaner because `FakeRepository` can handle all the data and calculations of diff stat and make it accessible to more tests in the codebase. Because a lot of tests wouldn't initialize the git panel when they used the git repository. 4. This made implementing remote/collab support for this feature streamline. Remote clients wouldn't get the same buffer events as local clients, so they wouldn't know that the diff stat state has been updated and invalidate their data. 5. File system changes that happened outside of Zed now trigger the diff stat refresh because we're using the `RepositorySnapshot`. I added some integration tests as well to make sure collab support is working this time. Finally, adding the initial diff calculation to `compute_snapshot` didn't affect performance for me when checking against chromium's diff with HEAD~1000. So this should be a safe change to make. I decided to add diff stats on the status entry struct because it made updating changed paths and the collab database much simpler than having two separate SumTrees. Also whenever the UI got a file's status it would check its diff stat as well, so this change makes that code more streamlined as well. Before you mark this PR as ready for review, make sure that you have: - [x] Added a solid test coverage and/or screenshots from doing manual testing. - [x] Done a self-review taking into account security and performance aspects. Release Notes: - N/A
| Commit: | 7c9a9d4 | |
|---|---|---|
| Author: | Richard Feldman | |
| Committer: | GitHub | |
Add "Start Thread in New Worktree" (#49141) Add the thread target selector in the agent panel behind the `agent-git-worktrees` flag: <img width="590" height="121" alt="Screenshot 2026-03-02 at 11 50 47 PM" src="https://github.com/user-attachments/assets/17ee3303-7e01-4e40-bb84-1e7e748a3196" /> - Add a "Start Thread In..." dropdown to the agent panel toolbar, gated behind `AgentV2FeatureFlag` - Options: "Local Project" (default) and "New Worktree" - The "New Worktree" option is disabled when there's no git repository or in collab mode Closes AI-34 Release Notes: - N/A --------- Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com> Co-authored-by: Oleksiy Syvokon <oleksiy@zed.dev> Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com> Co-authored-by: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com> Co-authored-by: Remco Smits <djsmits12@gmail.com> Co-authored-by: morgankrey <morgan@zed.dev> Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com> Co-authored-by: Ben Kunkle <ben@zed.dev> Co-authored-by: Finn Evers <finn@zed.dev> Co-authored-by: Bennet Bo Fenner <bennet@zed.dev> Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com> Co-authored-by: MostlyK <135974627+MostlyKIGuess@users.noreply.github.com> Co-authored-by: cameron <cameron.studdstreet@gmail.com> Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com> Co-authored-by: John Tur <john-tur@outlook.com> Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com> Co-authored-by: Wuji Chen <chenwuji2000@gmail.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com> Co-authored-by: Cole Miller <cole@zed.dev> Co-authored-by: Kasper Nyhus <kanyhus@gmail.com> Co-authored-by: dino <dinojoaocosta@gmail.com> Co-authored-by: Anthony Eid <hello@anthonyeid.me> Co-authored-by: Josh Robson Chase <josh@robsonchase.com> Co-authored-by: ozacod <47009516+ozacod@users.noreply.github.com> Co-authored-by: ozacod <ozacod@users.noreply.github.com> Co-authored-by: Xiaobo Liu <cppcoffee@gmail.com> Co-authored-by: Lena <241371603+zelenenka@users.noreply.github.com> Co-authored-by: 0x2CA <2478557459@qq.com> Co-authored-by: Joseph T. Lyons <JosephTLyons@gmail.com> Co-authored-by: Albab Hasan <155961300+Albab-Hasan@users.noreply.github.com> Co-authored-by: KyleBarton <kjb@initialcapacity.io> Co-authored-by: Kunall Banerjee <hey@kimchiii.space> Co-authored-by: Lukas Wirth <lukas@zed.dev> Co-authored-by: Tom Houlé <13155277+tomhoule@users.noreply.github.com> Co-authored-by: Nikhil Pandey <nikhil@nikhil.com.np> Co-authored-by: Mikayla Maki <mikayla@zed.dev> Co-authored-by: dancer <144584931+dancer@users.noreply.github.com> Co-authored-by: Kirill Bulatov <kirill@zed.dev> Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
| Commit: | 56a88a8 | |
|---|---|---|
| Author: | Anthony Eid | |
| Committer: | GitHub | |
Format proto files (#50413) This fixes a problem where editing a proto file would make the proto LSP show a ton of warnings and avoids the giant diff that formatting a .proto file would cause. I also added a lint check when our clippy script is ran locally Release Notes: - N/A *or* Added/Fixed/Improved ... --------- Co-authored-by: MrSubidubi <finn@zed.dev>
| Commit: | bbbe723 | |
|---|---|---|
| Author: | Bob Mannino | |
| Committer: | GitHub | |
git: Add diff stats in git_panel (#49519) This PR adds the small UI change of `git diff --numstat` to the git panel so you can see the number of additions/deletions per file. There is an option in the settings UI for this under `git_panel`.`diff_stats`. This option is set to `false` by default. <!-- initial version <img width="1648" height="977" alt="Screenshot 2026-02-18 at 18 42 47" src="https://github.com/user-attachments/assets/b8b7f07c-9c73-4d06-9734-8f1cf30ce296" /> --> <img width="1648" height="977" alt="Screenshot 2026-02-18 at 21 25 02" src="https://github.com/user-attachments/assets/73257854-6168-4d12-84f8-27c9e0abe89f" /> Release Notes: - Added git diff stats to git panel entries --------- Co-authored-by: Danilo Leal <daniloleal09@gmail.com> Co-authored-by: Anthony Eid <anthony@zed.dev>
| Commit: | ae9bb6a | |
|---|---|---|
| Author: | MostlyK | |
| Committer: | GitHub | |
repl: Add WSL and SSH remote kernel support (#47891) Closes #15196, #46918 - fix: notebook_ui, use buffer so that notebooks open in remote/WSL settings. - fix: add musl in nix for cross-compilation, without this remote server doesn't build inside NixOS Release Notes: - Implement WSL and SSH remote kernels (crates/repl/src/kernels/*) and wire up spawn/kill kernel proto messages and client requests.
| Commit: | 69081e6 | |
|---|---|---|
| Author: | Richard Feldman | |
Merge remote-tracking branch 'origin/main' into AI-32/proto-gitstore-plumbing # Conflicts: # crates/proto/proto/zed.proto
| Commit: | 1ad5ec6 | |
|---|---|---|
| Author: | John Tur | |
| Committer: | GitHub | |
Support profiling remote server in the miniprofiler (#49582) Release Notes: - The `zed: open performance profiler` action can now display profiling data from the remote server.
| Commit: | b6f8391 | |
|---|---|---|
| Author: | Richard Feldman | |
Merge remote-tracking branch 'origin/main' into AI-32/proto-gitstore-plumbing
| Commit: | 423a8c4 | |
|---|---|---|
| Author: | Danilo Leal | |
| Committer: | GitHub | |
git_ui: Add "Review Branch" with agent feature (#49513) This PR adds a button in the `git: branch diff` view that allows to quickly and easily send the entire diff to your last used agent for a review. What this does is automatically submits a (pre-written and generic) prompt to the last agents you were using in the agent panel with the whole content of your diff. <img width="750" height="1964" alt="Screenshot 2026-02-18 at 3 35@2x" src="https://github.com/user-attachments/assets/493d8cf4-4815-4b01-91a0-6a39ad6219fe" /> Release Notes: - Added a "Review Branch" button in the `git: branch diff` view so that the whole diff can be quickly sent for review to an agent. --------- Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
| Commit: | 6cb3a84 | |
|---|---|---|
| Author: | Richard Feldman | |
Add proto messages + GitStore handlers for worktree remove/rename Add GitRemoveWorktree and GitRenameWorktree proto messages (envelope fields 423, 424) with request handlers in GitStore for both local and remote execution. Register RPC handlers in collab. Tests: test_repository_remove_worktree_local, test_repository_rename_worktree_local, test_repository_remove_worktree_remote_roundtrip, test_repository_rename_worktree_remote_roundtrip.
| Commit: | 56504fd | |
|---|---|---|
| Author: | Kirill Bulatov | |
| Committer: | GitHub | |
Support LSP document symbols in breadcrumbs and outline UI (#48780)
| Commit: | 30ec2ca | |
|---|---|---|
| Author: | Kirill Bulatov | |
| Committer: | GitHub | |
Support custom fold text for LSP folds (#48624) Follow-up of https://github.com/zed-industries/zed/pull/48611 Release Notes: - N/A
| Commit: | 6c253a7 | |
|---|---|---|
| Author: | Kirill Bulatov | |
| Committer: | GitHub | |
Add `textDocument/foldingRange` LSP support (#48611) Closes https://github.com/zed-industries/zed/issues/28091 Off in language settings by default: ` "lsp_folding_ranges": "off",`, when enabled, disables tree-sitter indent-based folding and enables fetching of LSP ones instead. Falls back to tree-sitter if LSP-based one brings no results. Release Notes: - Added `textDocument/foldingRange` LSP support, use ` "lsp_folding_ranges": "on",` language settings to fetch and prefer the LSP folds
| Commit: | 4563b5a | |
|---|---|---|
| Author: | Shuhei Kadowaki | |
| Committer: | GitHub | |
lsp: Add `container_name` to `lsp::Symbol` (#46822) Some language servers include local symbols (e.g., local variables, parameters) in workspace symbol results. Without the `containerName` information, these symbols lack context information, making it difficult to distinguish them from top-level definitions and hindering efficient symbol lookup. This change exposes the `container_name` field from LSP [`SymbolInformation`](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#symbolInformation) to the extension API, allowing language server extensions to access `symbol.container_name` in `label_for_symbol` and provide meaningful context when rendering symbol labels. Note: The `container_name `field is added to all extension API versions because they seem to share the same underlying Rust types via wasmtime bindgen. The field is optional, so existing extensions would remain compatible as far as I understand. Closes #ISSUE Release Notes: - Added `container_name` field to `lsp::Symbol`, accessible via the extension API's `label_for_symbol` function --------- Co-authored-by: MrSubidubi <finn@zed.dev>
| Commit: | 5d2feaa | |
|---|---|---|
| Author: | Lukas Wirth | |
| Committer: | GitHub | |
editor: Implement semantic highlighting (#46356) Part of #7450 Big thanks to @macmv for pushing this forwards so much! Rebased version of https://github.com/zed-industries/zed/pull/39539 as working on an in-org branch simplifies a lot of things for us) Release Notes: - Added LSP semantic tokens highlighting support --------- Co-authored-by: Neil Macneale V <neil.macneale.v@gmail.com> Co-authored-by: Kirill Bulatov <kirill@zed.dev> Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
| Commit: | 92ad7c3 | |
|---|---|---|
| Author: | Leo | |
| Committer: | GitHub | |
project_panel: Add right-click download option for folders/files stored in remote development server (#47344) Closes #24431 , closes #42501 https://github.com/user-attachments/assets/13ace1d7-7699-4f2b-aa97-86235008adb3 Release Notes: - Added right click download option for folders/files stored in remote development server
| Commit: | 949972b | |
|---|---|---|
| Author: | Lukas Wirth | |
| Committer: | GitHub | |
project: Always allocate WorktreeIDs on the remote client (#47936) Closes https://github.com/zed-industries/zed/issues/40342 Release Notes: - N/A *or* Added/Fixed/Improved ...
| Commit: | 89e9ab9 | |
|---|---|---|
| Author: | Lukas Wirth | |
| Committer: | GitHub | |
project: Implement range formatting for remoting (#47194) Closes https://github.com/zed-industries/zed/issues/42859 Release Notes: - Added support for language range formatting in remoting setups
| Commit: | dcfe81f | |
|---|---|---|
| Author: | Smit Barmase | |
| Committer: | GitHub | |
Support external `.editorconfig` (#46332) Closes #41832 Extends https://github.com/zed-industries/zed/pull/19455 When an internal `.editorconfig` is detected in the worktree, we traverse parent directories up to the filesystem root looking for additional `.editorconfig` files. All discovered external configs are loaded and cached (shared when multiple worktrees reference the same parent directories). When computing settings for a file, external configs are applied first (from furthest to closest), then internal configs. For local projects, file watchers are set up for each external config so changes are applied immediately. When a project is shared via collab, external configs are sent to guests through the existing `UpdateWorktreeSettings` proto message (with a new `outside_worktree` field). SSH remoting works similarly. Limitations: We don't currently take creation of new external editor config files into account since they are loaded once on worktree add. Release Notes: - Added support for `.editorconfig` files outside the project directory. Zed now traverses parent directories to find and apply EditorConfig settings. Use `root = true` in any `.editorconfig` to stop inheriting settings from parent directories.
| Commit: | cd41a21 | |
|---|---|---|
| Author: | John Tur | |
| Committer: | GitHub | |
Allow running MCP servers on the remote server when using remote development (#46756) Closes https://github.com/zed-industries/zed/issues/34402 Release Notes: - MCP servers can now be run on the remote server when using remote development. This can be enabled by setting the `"remote": true` property in the settings entry for the MCP server. --------- Co-authored-by: localcc <kate@zed.dev> Co-authored-by: Lukas Wirth <me@lukaswirth.dev>
| Commit: | 4e368d4 | |
|---|---|---|
| Author: | Lukas Wirth | |
| Committer: | GitHub | |
remote: Add remote timeout debugging commands (#46695) Release Notes: - N/A *or* Added/Fixed/Improved ...
| Commit: | b212cfb | |
|---|---|---|
| Author: | Piotr Osiewicz | |
| Committer: | GitHub | |
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>