cc335b7
zed 0.231.2
Mikayla Maki created
cc335b7
zed 0.231.2
Mikayla Maki created
76f7a95
Stable cherry-pick: Change name of web search tool (#53573) (#53578)
Release Notes: - N/A
Mikayla Maki created
e71b6aa
v0.231.x stable
dino created
2876bc0
Cherry pick git graph refresh fix (#53373)
This cherry picks some git graph bug fixes from PRs #53094 and #53218 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: Xin Zhao <zx0@mail.ustc.edu.cn>
Anthony Eid and Xin Zhao created
d90ac15
git_graph: Show propagated errors from git binary command (#53320) (cherry-pick to preview) (#53371)
Cherry-pick of #53320 to preview ---- Based on commit fba49809b39b0f9e58d68e3956f5c24fd47121d7 that I worked with Dino on in PR: #50288 Co-authored-by Dino \<Dino@zed.dev\> 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: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com>
zed-zippy[bot] and Anthony Eid created
6bdd36b
git_graph: Remove horizontal scrolling from canvas (#53082) (cherry-pick to preview) (#53370)
Cherry-pick of #53082 to preview ---- I also added a keybinding to focus the search bar. 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: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com>
zed-zippy[bot] and Anthony Eid created
e2a3e12
Fix shell escaping in getting current env (#53335) (cherry-pick to preview) (#53355)
Cherry-pick of #53335 to preview ---- Credit to Dario Weißer for bringing this to our attention. 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 Closes #ISSUE Release Notes: - Fixed a bug where a cleverly crafted directory name could lead to remote code execution Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
zed-zippy[bot] and Conrad Irwin created
c8a9156
Bump to 0.231.1 for @maxbrunsfeld
Zed Zippy created
ab7cd4f
git_graph: Make the graph canvas resizable (#52953) (cherry-pick to preview) (#53001)
Cherry-pick of #52953 to preview ---- ### Summary This PR integrates the git graph canvas with the `Table` component’s `RedistributableColumnsState`, making the graph column resizable while preserving the table’s existing resize behavior. In particular, column resizing continues to use the same cascading redistribution behavior as the table. This is also the last PR needed to remove the feature flag on the git graph! ### Table API changes I pulled the redistributable column logic out of `Table` into reusable UI helpers so layouts outside of `Table` can participate in the same column resizing behavior. This adds a shared `RedistributableColumnsState` API, along with helpers for binding drag/drop behavior, rendering resize handles, and constructing header resize metadata. I also added `ColumnWidthConfig::explicit` and `TableRenderContext::for_column_widths` so callers can render table like headers and content with externally managed column widths. The reason for this change is that the git graph now renders a custom split layout: a graph canvas on the left and table content on the right. By reusing the same column state and resize machinery, the graph column can resize together with the table columns while preserving the existing table behavior, including cascading column redistribution and double click reset to default sizing. I also adjusted the resize handle interaction styling so the divider stays in its hovered/highlighted state while a drag is active, which makes the drag target feel more stable and visually consistent during resizing. ### Preview https://github.com/user-attachments/assets/347eed71-0cc1-4db4-9dee-a86ee5ab6f91 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 or Added/Fixed/Improved ... Co-authored-by: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com>
zed-zippy[bot] and Anthony Eid created
756893f
git_graph: Remove feature flag (#52972) (cherry-pick to preview) (#53002)
Cherry-pick of #52972 to preview ---- After #52953 gets merged the git graph will be ready for it's preview release, so we can finally remove the feature flag! AKA this PR releases the git graph 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 Closes #ISSUE Release Notes: - Add Git Graph. Can be accessed through the button on the bottom of the git panel or the `git graph: Open` action Co-authored-by: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com>
zed-zippy[bot] and Anthony Eid created
8180242
Backport panel flexible width settings UI (#53018)
Release Notes: - Added controls for whether the Terminal and Agent panels use flexible or fixed width in the settings view.
Max Brunsfeld created
af601e9
git_graph: Fix loading graph hang (#52875) (cherry-pick to preview) (#52999)
Cherry-pick of #52875 to preview ---- This hang was caused by emitting the Git Graph Count Updated event for every commit being added to the graph instead of every batch of commits. This would cause gpui to have a massive amount of events to handle on the foreground thread, even if most of them had very little work involved. For example, Zed graph has over 80k commits, that means we were emitting 80k plus events instead of 80. - [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: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com>
zed-zippy[bot] and Anthony Eid created
10085e5
git_graph: Minimize curve size (#52865) (cherry-pick to preview) (#52998)
Cherry-pick of #52865 to preview ---- 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 Closes #ISSUE Release Notes: - N/A or Added/Fixed/Improved ... Co-authored-by: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com>
zed-zippy[bot] and Anthony Eid created
48515ac
Don't save buffers by default when running tasks (#52976) (cherry-pick to preview) (#52990)
Cherry-pick of #52976 to preview ---- Self-Review Checklist: - [x] 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 Closes #52926 Follow-up to #48861 cc @SomeoneToIgnore Release Notes: - Edited buffers are no longer saved by default before running a task, but you can still configure this using the "save" field in `tasks.json`. --------- Co-authored-by: Kirill Bulatov <mail4score@gmail.com> Co-authored-by: Justin Su <injustsu@gmail.com> Co-authored-by: Kirill Bulatov <mail4score@gmail.com>
zed-zippy[bot] , Justin Su , and Kirill Bulatov created
f144538
Dev containers native implementation (#52338)
## Context
Closes #11473
In-house Zed implementation of devcontainers. Replaces the dependency on
the [reference implementation](https://github.com/devcontainers/cli) via
Node.
This enables additional features with this implementation:
1. Zed extensions can be specified in the `customizations` block, via
this syntax in `devcontainer.json:
```
...
"customizations": {
"zed": {
"extensions": ["vue", "ruby"],
},
},
```
2.
[forwardPorts](https://containers.dev/implementors/json_reference/#general-properties)
are supported for multiple ports proxied to the host
## How to Review
<!-- Help reviewers focus their attention:
- For small PRs: note what to focus on (e.g., "error handling in
foo.rs")
- For large PRs (>400 LOC): provide a guided tour — numbered list of
files/commits to read in order. (The `large-pr` label is applied
automatically.)
- See the review process guidelines for comment conventions -->
## 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:
- Improved devcontainer implementation by moving initialization and
creation in-house
KyleBarton created
f22d169
v0.231.x preview
Joseph T. Lyons created
4a0c02b
editor: Prevent blame popover from appearing when cursor is on different pane (#52603)
The blame popover shouldn't appear when the cursor hovers over the annotation but on a different pane. Before: https://github.com/user-attachments/assets/dbf6f7b5-e27f-495b-8d6f-fa75a4feee18 After: https://github.com/user-attachments/assets/d5e186df-4ebf-4b4c-bb5f-4d9e7b0f62c7 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: - Fixed a bug that caused git blame annotations to be hoverable from a different pane.
Tim Vermeulen created
dcef83e
editor: Clear previous select mode when clicking on a sticky header (#52636)
Clicking on a sticky header causes
`selections.select_ranges([anchor..anchor])` to be called, but this does
not clear the editor's `selections.select_mode()`, resulting in possible
incorrect selections if this is followed up by a shift-click. This PR
fixes that with
```diff
- selections.select_ranges([anchor..anchor]);
+ selections.clear_disjoint();
+ selections.set_pending_anchor_range(anchor..anchor, SelectMode::Character);
```
which is essentially what `editor.select(SelectPhase::Begin { ... },
...)` (i.e. a regular single click in the editor) does as well.
Before:
https://github.com/user-attachments/assets/bcf2647e-a22a-4866-8975-d29e135df148
After:
https://github.com/user-attachments/assets/fb82db51-fef1-4b7c-9954-6e076ae0b176
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 bug that caused clicking on a sticky header to not always
properly clear the previous selection.
Tim Vermeulen created
06dbce4
agent_ui: Improve adding selection as context (#52860)
This PR improves adding selection as context particularly for terminals, making them not depend on open buffers. It also now works adding selection from a terminal that's no in the panel but as a tab. Also, I'm removing a behavior introduced in https://github.com/zed-industries/zed/pull/48045 that turned out to be confusing, where the selection keybinding would add as context the content of the current line I'm focused on. I think we shouldn't do this given that a lot of times, particularly when adding a selection from a terminal, I'd also end up adding content from a buffer just because my cursor was previously in there, even without anything selected on it. Saw myself multiple times deleting the unwanted buffer context crease in this case. If the keybinding is about _selection_, we should only trigger it when there's something selected.ing not do anything if there isn't any selection. Release Notes: - Agent: Improved adding selection as context particularly for terminals, making them not depend on open buffers.
Danilo Leal created
f5993d8
agent_ui: Add more refinements to the thinking block display (#52874)
Follow-up to https://github.com/zed-industries/zed/pull/52608 This PR adds a new iteration to the thinking block display design after some internal round of feedback. It turns out, we had some people appreciating the auto-collapse when thinking is done; thinking content isn't too useful afterwards and it is just more content _to to he model_, not the user. I also liked the one old but it definitely has the issue of being a jarring layout shift when it wraps up. So that's why I'm keeping what I introduced in the PR linked above as a setting, so that anyone who feels strongly about the default (auto-expand, and auto-collapse) can change that. Release Notes: - N/A
Danilo Leal created
66f9e32
sidebar: Archive threads without a project association automatically (#52897)
Bennet Bo Fenner created
224ce68
migrator: Remove text thread settings migration (#52889)
Since this was just removing unused keys, but behavior isn't broken if they are there. So we can just leave them as-is 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: Bennet Bo Fenner <bennetbo@gmx.de> Co-authored-by: MrSubidubi <dev@bahn.sh>
Ben Brandt , Bennet Bo Fenner , and MrSubidubi created
02e8914
agent_ui: Use selected agent for new threads (#52888)
Persist the last used agent globally as a fallback for new workspaces, keep per-workspace selections independent. This should mean "new thread" should grab whatever agent you are currently looking at, and won't leak across projects. 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: - agent: Prefer the currently used agent per-project when creating a new thread. Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de> Co-authored-by: MrSubidubi <dev@bahn.sh>
Ben Brandt , Bennet Bo Fenner , and MrSubidubi created
c544611
markdown: Refactor code block copy button visibility to use enum (#52817)
Release Notes: - N/A --------- Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com> Co-authored-by: Finn Evers <finn.evers@outlook.de> Co-authored-by: MrSubidubi <finn@zed.dev>
Xiaobo Liu , Finn Evers , and MrSubidubi created
23edf06
sidebar: Support loading threads that have no project association (#52842)
Changed the migration codepath, so that threads with no project are also migrated to the archive. Release Notes: - N/A --------- Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Bennet Bo Fenner and Danilo Leal created
ac20488
eslint: Fix ESLint server startup failure on stale cached server install (#52883)
Closes https://github.com/zed-industries/zed/issues/19709#issuecomment-3494789304 Closes https://github.com/zed-industries/zed/issues/24194#issuecomment-2835787560 This PR fixes case where if eslint cached install is partial or stale, Zed can try to launch a missing `eslintServer.js` and the server crashes with `MODULE_NOT_FOUND`. ``` Error: Cannot find module '/Users/.../languages/eslint/vscode-eslint-2.4.4/vscode-eslint/server/out/eslintServer.js' ``` 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: - Fixed ESLint server startup failures caused by reusing an incomplete or stale cached server install.
Smit Barmase created
a9dd7e9
Fix workspace-absolute paths in markdown images (#52708)
## Context Previously, markdown images failed to load workspace-absolute paths. This updates the image resolver to identify the active workspace root directory. Paths which are workspace absolute are correctly resolved and rendered. The added test covers a successful resolution. This PR re-implements the fix that was originally proposed in my previous PR, #52178. ## Fix https://github.com/user-attachments/assets/d69644ea-06cc-4638-b4ee-ec9f3abbb1ed ## How to Review Small PR - focus on two changes in the file `crates/markdown_preview/src/markdown_preview_view.rs`: - `fn render_markdown_element()` (lines ~583-590): added the logic to determine the workspace_directory - `fn resolve_preview_image()` (lines ~714-726): added workspace_directory variable, and a verification to create the full path when a path is workspace-absolute One test was added, covering a successful resolution (`resolves_workspace_absolute_preview_images`). This test was implemented in the file `crates/markdown_preview/src/markdown_preview_view.rs`. ## Self-Review Checklist: - [x] I've reviewed my own diff for quality, security, and reliability - [ ] 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 #46924 Release Notes: - Added workspace-absolute path detection in markdown files
danielaalves01 created
a3964a5
Rework column/table width API in data table (#51060)
data_table: Replace column width builder API with `ColumnWidthConfig`
enum
This PR consolidates the data table width configuration API from three
separate builder methods (`.column_widths()`, `.resizable_columns()`,
`.width()`) into a single `.width_config(ColumnWidthConfig)` call. This
makes invalid state combinations unrepresentable and clarifies the two
distinct width management modes.
**What changed:**
- Introduces `ColumnWidthConfig` enum with two variants:
- `Static`: Fixed column widths, no resize handles
- `Redistributable`: Drag-to-resize columns that redistribute space
within a fixed table width
- Introduces `TableResizeBehavior` enum (`None`, `Resizable`,
`MinSize(f32)`) for per-column resize policy
- Renames `TableColumnWidths` → `RedistributableColumnsState` to better
reflect its purpose
- Extracts all width management logic into a new `width_management.rs`
module
- Updates all callers: `csv_preview`, `git_graph`, `keymap_editor`,
`edit_prediction_context_view`
```rust
pub enum ColumnWidthConfig {
/// Static column widths (no resize handles).
Static {
widths: StaticColumnWidths,
/// Controls widths of the whole table.
table_width: Option<DefiniteLength>,
},
/// Redistributable columns — dragging redistributes the fixed available space
/// among columns without changing the overall table width.
Redistributable {
entity: Entity<RedistributableColumnsState>,
table_width: Option<DefiniteLength>,
},
}
```
**Why:**
The old API allowed callers to combine methods incorrectly. The new
enum-based design enforces correct usage at compile time and provides a
clearer path for adding independently resizable columns in PR #3.
**Context:**
This is part 2 of a 3-PR series improving data table column width
handling:
1. [#51059](https://github.com/zed-industries/zed/pull/51059) - Extract
modules into separate files (mechanical change)
2. **This PR**: Introduce width config enum for redistributable column
widths (API rework)
3. Implement independently resizable column widths (new feature)
The series builds on previously merged infrastructure:
- [#46341](https://github.com/zed-industries/zed/pull/46341) - Data
table dynamic column support
- [#46190](https://github.com/zed-industries/zed/pull/46190) - Variable
row height mode for data tables
Primary beneficiary: CSV preview feature
([#48207](https://github.com/zed-industries/zed/pull/48207))
### Anthony's note
This PR also fixes the table dividers being a couple pixels off, and the
csv preview from having double line rendering for a single column in
some cases.
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
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
Release Notes:
- N/A
---------
Co-authored-by: Anthony Eid <anthony@zed.dev>
Oleksandr Kholiavko and Anthony Eid created
0b275ea
Change behavior of search with vim mode enabled (#51073)
When vim mode is enabled, previously if Cmd-F (or platform equivalent) was pressed, enter will go to the editor's first match, and then hitting enter again goes to the next line rather than next match. This PR changes it to make enter go to the next match, which matches the convention in most other programs. The behavior when search is initiated with / is left unchanged. This is a reopen of #35157, rebased and fixed. Closes #7692 Release Notes: - In vim mode, when search is triggered by the non-vim mode shortcut (cmd-f by default) enter will now behave as it does outside of vim mode. --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Vivek Jain and Conrad Irwin created
878aba8
markdown: Show copy button on hover to prevent overlapping code block… (#52837)
Self-Review Checklist: - [x] I've reviewed my own diff for quality, security, and reliability - [ ] 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 #52064 Release Notes: - Fixed copy button overlapping code block content in the Agent panel (#52064) ## Demo Before: <img width="496" height="139" alt="image" src="https://github.com/user-attachments/assets/6c49ad7f-ae36-4a6b-be72-783ff6e98537" /> <img width="411" height="182" alt="image" src="https://github.com/user-attachments/assets/a4b89407-2ae0-4629-875b-706592e81b34" /> After: https://github.com/user-attachments/assets/a139db06-3909-4a22-881a-836262ed3c36
João Soares created
971775e
gpui: Implement audible system bell (#47531)
Relates to #5303 and https://github.com/zed-industries/zed/issues/40826#issuecomment-3684556858 although I haven't found anywhere an actual request for `gpui` itself to support a system alert sound. ### What Basically, this PR adds a function that triggers an OS-dependent alert sound, commonly used by terminal applications for `\a` / `BEL`, and GUI applications to indicate an action failed in some small way (e.g. no search results found, unable to move cursor, button disabled). Also updated the `input` example, which now plays the bell if the user presses <kbd>backspace</kbd> with nothing behind the cursor to delete, or <kbd>delete</kbd> with nothing in front of the cursor. Test with `cargo run --example input --features gpui_platform/font-kit`. ### Why If this is merged, I plan to take a second step: - Add a new Zed setting (probably something like `terminal.audible_bell`) - If enabled, `printf '\a'`, `tput bel` etc. would call this new API to play an audible sound This isn't the super-shiny dream of #5303 but it would allow users to more easily configure tasks to notify when done. Plus, any TUI/CLI apps that expect this functionality will work. Also, I think many terminal users expect something like this (WezTerm, iTerm, etc. almost all support this). ### Notes ~I was only able to test on macOS and Windows, so if there are any Linux users who could verify this works for X11 / Wayland that would be a huge help! If not I can try~ Confirmed Wayland + X11 both working when I ran the example on a NixOS desktop Release Notes: - N/A
Ian Chamberlain created
4087d9f
Remove Claude upsell (#52831)
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: - Removed the (broken) Claude ACP upsell dialogue
Conrad Irwin created
3b6252c
Bump tree-sitter for fix to wasm loading of grammars w/ reserved words (#52856)
This PR bumps Tree-sitter for this crash fix https://github.com/tree-sitter/tree-sitter/pull/5475 Release Notes: - Fixed a crash that could occasionally occur when parsing files using certain language extensions
Max Brunsfeld created
22c1238
ui: Improve the `end_hover` method API in the `ListItem` component (#52862)
This PR changes the API for the `ListItem`'s `end_hover` slot so that whatever is in there is always part of the flex stack, as opposed to an absolutely-positioned element. Additionally, I'm also improving the API for swapping content between the default state and the hovered state (e.g., list items where by default we render X, but when you hover, we show something else). Lastly, I'm adding buttons to some Git picker items that were only previously available through modal footer buttons. Release Notes: - N/A
Danilo Leal created
6837c8a
git_graph: Fix empty search case (#52845)
This fixes a bug where search would match all commits if there was an empty query instead of setting the query to None 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 Closes #ISSUE Release Notes: - N/A or Added/Fixed/Improved ... --------- Co-authored-by: Remco Smits <djsmits12@gmail.com>
Anthony Eid and Remco Smits created
20b1406
Fix markdown table rendering in the agent panel (#52864)
This PR reverts part of https://github.com/zed-industries/zed/pull/50839, as it was causing bad clipping in the agent panel 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
Mikayla Maki created
a12601f
workspace: Break workspace tests into their own file (#52854)
Splits the tests out of `multi_workspace.rs` into a dedicated `multi_workspace_tests.rs` file for better organization. Release Notes: - N/A Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Eric Holk and Max Brunsfeld created
ca7de0f
sidebar: Add design adjustments to the thread import feature (#52858)
- Adds a new icon for thread import - Iterate on the design to access the import modal: it's now through a button in the sidebar's footer, which only appears when the archive view is toggled - Fixed an issue where clicking on checkboxes within the import modal's list items wouldn't do anything Release Notes: - N/A
Danilo Leal created
922b1b5
worktree: Make expanded symlinks be indexed by default (#51382)
Closes #41887 This is a stable subset of other efforts to make symlink flows more intuitive like #46344 Release Notes: - Fixed expanded symlinks not being searchable
Andre Roelofs created
03c5d37
worktree: Close single-file worktrees when file is deleted (#49366)
When a single-file worktree's root file no longer exists, the background scanner would previously enter an infinite retry loop attempting to canonicalize the path. This caused continuous error logging and resource waste. This fix detects when a single-file worktree root cannot be canonicalized (after attempting the file handle fallback) and emits a new Deleted event, allowing the worktree to be properly closed. This is most commonly encountered with temporary files, logs, and similar files that are opened in Zed and then deleted externally, but persist in the workspace database across sessions. Closes #34864 ## Test **Logs** from manual testing: ``` 2026-02-17T16:16:11+01:00 INFO [worktree] inserting parent git repo for this worktree: "tmp.md" 2026-02-17T16:16:17+01:00 ERROR [worktree] root path could not be canonicalized: canonicalizing "/Users/***/tmp/tmp.md": No such file or directory (os error 2) 2026-02-17T16:16:17+01:00 INFO [worktree] single-file worktree root "/Users/***/tmp/tmp.md" no longer exists, marking as deleted 2026-02-17T16:16:17+01:00 INFO [worktree] worktree root /Users/***/tmp/tmp.md no longer exists, closing worktree ``` Release Notes: - Fixed an issue where Zed would enter an infinite retry loop when the backing file for a single-file worktree was deleted
Daniel Strobusch created
88d1275
command_palette: Fix keymap editor not matching actions with underscored namespaces (#50415)
Closes https://github.com/zed-industries/zed/issues/50223 ## Summary When clicking **Change Keybinding** from the command palette on an action whose namespace contains underscores (e.g. `terminal_panel::Toggle`, `project_panel::ToggleFocus`), the keymap editor showed **"No matches found for the provided query"**. Actions without underscores (e.g. `zed::OpenLog`) worked fine. I opened this issue for this https://github.com/zed-industries/zed/issues/50223, but took the liberty of sending a PR. **Root cause:** `normalize_action_query` preserved underscores in the query, but the search candidates are built with `humanize_action_name` which converts underscores to spaces. The fuzzy matcher looked for `_` in a candidate like `"terminal panel: toggle"` where it doesn't exist, so matching always failed. **Fix:** `normalize_action_query` now converts underscores to spaces before the deduplication checks, consistent with `humanize_action_name`. This also correctly collapses consecutive underscores with adjacent spaces. All three call sites of `normalize_action_query` (command palette search, keymap editor filter, action completion provider) match against humanized candidates, so the fix improves consistency across all of them. ## Before (Left) / After (Right) <img width="2560" height="1053" alt="Screenshot 2026-02-28 at 17 56 05" src="https://github.com/user-attachments/assets/195530b6-57af-4270-9370-03744cb55e81" /> <img width="2557" height="1062" alt="Screenshot 2026-02-28 at 17 55 38" src="https://github.com/user-attachments/assets/1e8637cd-86c9-496e-bc2b-f9f2d0ac23dc" /> Release Notes: - Fixed keymap editor showing no results when opening "Change Keybinding" from the command palette for actions with underscores in their namespace (e.g. `terminal_panel::Toggle`, `project_panel::ToggleFocus`)
David Alecrim created
3a6faf2
editor: Deduplicate sticky header rows (#52844)
Fixes a bug that caused duplicate sticky header rows to appear if multiple outline items start on the same row. Sort of addresses #52722, although arguably the real issue there is that duplicate outline items are being created in the first place. Before: https://github.com/user-attachments/assets/7941cbe8-9b62-470c-b475-f08f2f20fac6 After: https://github.com/user-attachments/assets/c4e291ea-6414-483f-8ff7-3d89d10000b6 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 a bug that caused duplicate sticky header rows to appear if multiple outline items start on the same row.
Tim Vermeulen created
89732f1
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>
Anthony Eid and Eric Holk created
bf79e32
Scroll to bottom when reloading ACP agent threads (#52843)
When reopening an ACP agent thread (e.g. after restarting Zed) that has no saved scroll position, the conversation now starts scrolled to the bottom so the user sees the latest messages instead of starting at the top. Uses `set_follow_tail(true)` rather than a one-shot `scroll_to_end()` so the scroll position is re-anchored on every layout pass — ensuring it lands at the true bottom even when list items haven't been measured yet. The follow-tail mode automatically disengages as soon as the user scrolls up. Release Notes: - Fixed agent threads starting scrolled to the top when reopened after restarting Zed.
Eric Holk created
7455021
git_graph: Allow having multiple git graphs open for different repositories (#50401)
Before this PR you could only have the git graph open for the active repository, this PR changes that. So you can have 1 git graph open per repository, allowing you to open multiple different graph at the same time. **Example**: https://github.com/user-attachments/assets/9775108f-826a-476f-95de-46abcc1777a6 **Example Persistence** https://github.com/user-attachments/assets/dbcf6692-7a67-46d9-a7ae-43a7c9a35818 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) cc @Anthony-Eid I removed the switch repo test since it's no longer a thing. Release Notes: - N/A --------- Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Remco Smits and Anthony Eid created
56104fb
edit_prediction: Fix special token check matching `=======` inside comments (#52510)
Closes #52489 The special token check in `prompt_input_contains_special_tokens` used `String::contains()` to look for `=======\n` in the buffer. This meant any line containing `=======` (like `// =======` section separators) would cause edit predictions to bail out entirely. Fixed by only matching when the token appears at the start of a line, since the git merge markers are always placed at line boundaries in the prompt. Added tests for both the helper function and a regression test for the reported issue. --------- Co-authored-by: Oleksiy Syvokon <oleksiy.syvokon@gmail.com>
Shiven Garia and Oleksiy Syvokon created
3ed687d
sidebar: Fix double borrow on startup (#52834)
```
thread 'main' (35618165) panicked at crates/gpui/src/app/entity_map.rs:164:32:
cannot read workspace::multi_workspace::MultiWorkspace while it is already being updated
stack backtrace:
0: __rustc::rust_begin_unwind
at /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/std/src/panicking.rs:689:5
1: core::panicking::panic_fmt
at /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/core/src/panicking.rs:80:14
2: gpui::app::entity_map::double_lease_panic::<workspace::multi_workspace::MultiWorkspace>
at ./crates/gpui/src/app/entity_map.rs:208:5
3: <gpui::app::entity_map::EntityMap>::read::<workspace::multi_workspace::MultiWorkspace>::{closure#1}
at ./crates/gpui/src/app/entity_map.rs:164:32
4: <core::option::Option<&workspace::multi_workspace::MultiWorkspace>>::unwrap_or_else::<<gpui::app::entity_map::EntityMap>::read<workspace::multi_workspace::MultiWorkspace>::{closure#1}>
at /Users/bebo/.rustup/toolchains/1.94.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/option.rs:1067:21
5: <gpui::app::entity_map::EntityMap>::read::<workspace::multi_workspace::MultiWorkspace>
at ./crates/gpui/src/app/entity_map.rs:164:14
6: <gpui::app::entity_map::Entity<workspace::multi_workspace::MultiWorkspace>>::read
at ./crates/gpui/src/app/entity_map.rs:465:21
7: <sidebar::Sidebar>::show_archive::{closure#0}
at ./crates/sidebar/src/sidebar.rs:3462:15
8: <core::option::Option<gpui::app::entity_map::Entity<workspace::multi_workspace::MultiWorkspace>>>::and_then::<gpui::app::entity_map::Entity<workspace::Workspace>, <sidebar::Sidebar>::show_archive::{closure#0}>
at /Users/bebo/.rustup/toolchains/1.94.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/option.rs:1546:24
9: <sidebar::Sidebar>::show_archive
at ./crates/sidebar/src/sidebar.rs:3461:69
10: <sidebar::Sidebar as workspace::multi_workspace::Sidebar>::restore_serialized_state
at ./crates/sidebar/src/sidebar.rs:3606:22
11: <gpui::app::entity_map::Entity<sidebar::Sidebar> as workspace::multi_workspace::SidebarHandle>::restore_serialized_state::{closure#0}
at ./crates/workspace/src/multi_workspace.rs:216:18
12: <gpui::app::App as gpui::AppContext>::update_entity::<sidebar::Sidebar, (), <gpui::app::entity_map::Entity<sidebar::Sidebar> as workspace::multi_workspace::SidebarHandle>::restore_serialized_state::{closure#0}>::{closure#0}
at ./crates/gpui/src/app.rs:2397:26
13: <gpui::app::App>::update::<(), <gpui::app::App as gpui::AppContext>::update_entity<sidebar::Sidebar, (), <gpui::app::entity_map::Entity<sidebar::Sidebar> as workspace::multi_workspace::SidebarHandle>::restore_serialized_state::{closure#0}>::{closure#0}>
at ./crates/gpui/src/app.rs:886:22
14: <gpui::app::App as gpui::AppContext>::update_entity::<sidebar::Sidebar, (), <gpui::app::entity_map::Entity<sidebar::Sidebar> as workspace::multi_workspace::SidebarHandle>::restore_serialized_state::{closure#0}>
at ./crates/gpui/src/app.rs:2395:14
15: <gpui::app::entity_map::Entity<sidebar::Sidebar>>::update::<(), gpui::app::App, <gpui::app::entity_map::Entity<sidebar::Sidebar> as workspace::multi_workspace::SidebarHandle>::restore_serialized_state::{closure#0}>
at ./crates/gpui/src/app/entity_map.rs:481:12
16: <gpui::app::entity_map::Entity<sidebar::Sidebar> as workspace::multi_workspace::SidebarHandle>::restore_serialized_state
at ./crates/workspace/src/multi_workspace.rs:215:14
17: workspace::restore_multiworkspace::{closure#0}::{closure#7}
at ./crates/workspace/src/workspace.rs:8712:29
18: <gpui::window::WindowHandle<workspace::multi_workspace::MultiWorkspace>>::update::<gpui::app::async_context::AsyncApp, (), workspace::restore_multiworkspace::{closure#0}::{closure#7}>::{closure#0}::{closure#1}
at ./crates/gpui/src/window.rs:5318:43
19: <gpui::app::App as gpui::AppContext>::update_entity::<workspace::multi_workspace::MultiWorkspace, (), <gpui::window::WindowHandle<workspace::multi_workspace::MultiWorkspace>>::update<gpui::app::async_context::AsyncApp, (), workspace::restore_multiworkspace::{closure#0}::{closure#7}>::{closure#0}::{closure#1}>::{closure#0}
at ./crates/gpui/src/app.rs:2397:26
20: <gpui::app::App>::update::<(), <gpui::app::App as gpui::AppContext>::update_entity<workspace::multi_workspace::MultiWorkspace, (), <gpui::window::WindowHandle<workspace::multi_workspace::MultiWorkspace>>::update<gpui::app::async_context::AsyncApp, (), workspace::restore_multiworkspace::{closure#0}::{closure#7}>::{closure#0}::{closure#1}>::{closure#0}>
at ./crates/gpui/src/app.rs:886:22
21: <gpui::app::App as gpui::AppContext>::update_entity::<workspace::multi_workspace::MultiWorkspace, (), <gpui::window::WindowHandle<workspace::multi_workspace::MultiWorkspace>>::update<gpui::app::async_context::AsyncApp, (), workspace::restore_multiworkspace::{closure#0}::{closure#7}>::{closure#0}::{closure#1}>
at ./crates/gpui/src/app.rs:2395:14
22: <gpui::app::entity_map::Entity<workspace::multi_workspace::MultiWorkspace>>::update::<(), gpui::app::App, <gpui::window::WindowHandle<workspace::multi_workspace::MultiWorkspace>>::update<gpui::app::async_context::AsyncApp, (), workspace::restore_multiworkspace::{closure#0}::{closure#7}>::{closure#0}::{closure#1}>
at ./crates/gpui/src/app/entity_map.rs:481:12
23: <gpui::window::WindowHandle<workspace::multi_workspace::MultiWorkspace>>::update::<gpui::app::async_context::AsyncApp, (), workspace::restore_multiworkspace::{closure#0}::{closure#7}>::{closure#0}
at ./crates/gpui/src/window.rs:5318:21
24: <gpui::app::App>::update_window_id::<core::result::Result<(), anyhow::Error>, <gpui::window::WindowHandle<workspace::multi_workspace::MultiWorkspace>>::update<gpui::app::async_context::AsyncApp, (), workspace::restore_multiworkspace::{closure#0}::{closure#7}>::{closure#0}>::{closure#0}
at ./crates/gpui/src/app.rs:1561:26
25: <gpui::app::App>::update::<core::option::Option<core::result::Result<(), anyhow::Error>>, <gpui::app::App>::update_window_id<core::result::Result<(), anyhow::Error>, <gpui::window::WindowHandle<workspace::multi_workspace::MultiWorkspace>>::update<gpui::app::async_context::AsyncApp, (), workspace::restore_multiworkspace::{closure#0}::{closure#7}>::{closure#0}>::{closure#0}>
at ./crates/gpui/src/app.rs:886:22
26: <gpui::app::App>::update_window_id::<core::result::Result<(), anyhow::Error>, <gpui::window::WindowHandle<workspace::multi_workspace::MultiWorkspace>>::update<gpui::app::async_context::AsyncApp, (), workspace::restore_multiworkspace::{closure#0}::{closure#7}>::{closure#0}>
at ./crates/gpui/src/app.rs:1555:14
27: <gpui::app::App as gpui::AppContext>::update_window::<core::result::Result<(), anyhow::Error>, <gpui::window::WindowHandle<workspace::multi_workspace::MultiWorkspace>>::update<gpui::app::async_context::AsyncApp, (), workspace::restore_multiworkspace::{closure#0}::{closure#7}>::{closure#0}>
at ./crates/gpui/src/app.rs:2425:14
28: <gpui::app::async_context::AsyncApp as gpui::AppContext>::update_window::<core::result::Result<(), anyhow::Error>, <gpui::window::WindowHandle<workspace::multi_workspace::MultiWorkspace>>::update<gpui::app::async_context::AsyncApp, (), workspace::restore_multiworkspace::{closure#0}::{closure#7}>::{closure#0}>
at ./crates/gpui/src/app/async_context.rs:94:14
29: <gpui::window::WindowHandle<workspace::multi_workspace::MultiWorkspace>>::update::<gpui::app::async_context::AsyncApp, (), workspace::restore_multiworkspace::{closure#0}::{closure#7}>
at ./crates/gpui/src/window.rs:5313:12
30: workspace::restore_multiworkspace::{closure#0}
at ./crates/workspace/src/workspace.rs:8710:14
31: zed::restore_or_create_workspace::{closure#0}
at ./crates/zed/src/main.rs:1358:82
32: zed::main::{closure#10}::{closure#16}::{closure#0}::<i32>
at ./crates/zed/src/main.rs:877:84
33: <gpui::app::App>::spawn::<zed::main::{closure#10}::{closure#16}, ()>::{closure#0}
at ./crates/gpui/src/app.rs:1633:44
34: <core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future<Output = ()>>> as core::future::future::Future>::poll
at /Users/bebo/.rustup/toolchains/1.94.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/future/future.rs:133:9
35: <core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future<Output = ()>>> as core::future::future::Future>::poll
at /Users/bebo/.rustup/toolchains/1.94.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/future/future.rs:133:9
36: <scheduler::executor::spawn_local_with_source_location::Checked<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future<Output = ()>>>> as core::future::future::Future>::poll
at ./crates/scheduler/src/executor.rs:361:64
37: <async_task::raw::RawTask<scheduler::executor::spawn_local_with_source_location::Checked<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future<Output = ()>>>>, (), <scheduler::executor::ForegroundExecutor>::spawn<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future<Output = ()>>>>::{closure#0}, scheduler::RunnableMeta>>::run
at /Users/bebo/.cargo/git/checkouts/async-task-e468f817236eac43/b4486cd/src/raw.rs:296:17
38: <async_task::runnable::Runnable<scheduler::RunnableMeta>>::run
at /Users/bebo/.cargo/git/checkouts/async-task-e468f817236eac43/b4486cd/src/runnable.rs:788:18
39: gpui_macos::dispatcher::trampoline
at ./crates/gpui_macos/src/dispatcher.rs:197:14
40: <unknown>
41: <unknown>
42: <unknown>
43: <unknown>
44: <unknown>
45: <unknown>
46: <unknown>
47: <unknown>
48: <unknown>
49: <unknown>
50: <unknown>
51: <unknown>
52: <unknown>
53: <() as objc::message::MessageArguments>::invoke::<()>
at /Users/bebo/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/objc-0.2.7/src/message/mod.rs:128:17
54: objc::message::platform::send_unverified::<objc::runtime::Object, (), ()>
at /Users/bebo/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/objc-0.2.7/src/message/apple/mod.rs:27:9
55: objc::message::send_message::<objc::runtime::Object, (), ()>
at /Users/bebo/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/objc-0.2.7/src/message/mod.rs:178:5
56: <*mut objc::runtime::Object as cocoa::appkit::NSApplication>::run
at /Users/bebo/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cocoa-0.26.0/src/appkit.rs:628:9
57: <gpui_macos::platform::MacPlatform as gpui::platform::Platform>::run
at ./crates/gpui_macos/src/platform.rs:488:17
58: <gpui::app::Application>::run::<zed::main::{closure#10}>
at ./crates/gpui/src/app.rs:187:18
59: zed::main
at ./crates/zed/src/main.rs:456:9
60: <fn() as core::ops::function::FnOnce<()>>::call_once
at /Users/bebo/.rustup/toolchains/1.94.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace
```
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
Bennet Bo Fenner created
924ac5c
gpui_wgpu: Guard against device feature mismatch (#52820)
This should prevent the "wgpu-hal invariant was violated (usage error): Requested feature is not available on this device" panic, although I'm not 100% sure (there's a possibility that a device reports the feature but fails to use it). At the very least, we get more logging I've tested this fix by patching code to emulate a situation where device features change after the creation, but that may be not representative of the real world failure. Addresses ZED-5G1 Release Notes: - N/A
Oleksiy Syvokon created
7cf26f4
Fix submodules being incorrectly classified as linked worktrees (#52507)
For submodules, `common_dir_abs_path` equals `repository_dir_abs_path` (since submodules don't have a `commondir` file). The previous code passed this path to `original_repo_path_from_common_dir` unconditionally, which returned the `.git/modules/<name>` path as the `original_repo_abs_path` — causing `linked_worktree_path()` to return a false positive for submodules. Now we detect linked worktrees by checking whether `common_dir` differs from `repository_dir` (only true for actual linked worktrees that have a `commondir` file). For normal repos and submodules, `original_repo_abs_path` is simply `work_directory_abs_path`. Also fixes the misleading doc comment on `common_dir_abs_path` in `LocalRepositoryEntry` and adds test assertions for `original_repo_abs_path` and `linked_worktree_path()` on both worktrees and submodules. Closes AI-102 Release Notes: - Fixed git submodules being incorrectly classified as linked worktrees, which could cause issues with worktree-related operations.
Richard Feldman created
7123238
Remove slash-commands-example extension (#52835)
Follow-up to https://github.com/zed-industries/zed/pull/52757 Release Notes: - N/A
Finn Evers created