Commit log

701fa3a Skip git worktree removal when archiving threads on main worktrees

Click to expand commit body
build_root_plan now returns None for non-linked (main) worktrees,
so archiving a thread that lives on a main worktree no longer
attempts `git worktree remove` (which git rightfully refuses).

The thread is simply marked archived in the metadata store and can
be unarchived later without any git operations.

Since build_root_plan now guarantees a linked worktree,
RootPlan::worktree_repo is changed from Option<Entity<Repository>>
to Entity<Repository>, removing the fallback path and the
now-unnecessary is_some() guard in archive_worktree_roots.

Richard Feldman created

bd50418 Fix dockerfile image and alias parsing (#53538)

Click to expand commit body
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 #52928

Release Notes:

- Fixed handling of multi-stage and stage-specified dockerfiles in dev
container manifests
- Fixed the way we find the base image in a dev container when build
args need expansion

KyleBarton created

78c2e0d Scope worktree creation spinner to the thread that initiated it (#53544)

Click to expand commit body
The "Creating Worktree…" spinner, error banner, and disabled selector
state were stored as panel-wide state. This meant switching to a
different thread while a worktree was being created would still show the
spinner on the new thread.

Release Notes:

- N/A

Richard Feldman created

5d32b56 Disambiguate project names (#52848)

Click to expand commit body
Disambiguate project names in the sidebar (and project picker) so that
we don't show e.g. `zed, zed` but rather `foo/zed, bar/zed` if the last
path component is the same but they are different absolute paths.

Release Notes:

- N/A

Richard Feldman created

58e59b1 Allow canceling unarchive (#53463)

Click to expand commit body
Now you can cancel the Unarchive operation if it's taking too long.

(No release notes because this unarchive behavior isn't even on Preview
yet.)

Release Notes:

- N/A

Richard Feldman created

b3bcfc6 Remove `Fix with Assistant` (#53521)

Click to expand commit body
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:

- The "Fix with Assistant" code action for diagnostics has been removed.
The inline assistant remains available and can be deployed with the
`assistant: inline assist` action.

Cole Miller created

e7ba171 Clean up orphaned files on git worktree creation failure (#53287)

Click to expand commit body
Update `await_and_rollback_on_failure` in `agent_panel.rs` to
comprehensively clean up both git metadata and filesystem artifacts when
worktree creation fails.

Release Notes:

- Clean up files and git metadata when worktree creation fails during
new agent thread setup.

Richard Feldman created

e25885b project_panel: Add redo and restore support (#53311)

Click to expand commit body
- Introduce `project_panel::Redo` action
- Update all platform keymaps in order to map
`redo`/`ctrl-shift-z`/`cmd-shift-z` to the `project_panel::Redo` action

### Restore Entry Support

- Update both `Project::delete_entry` and `Worktree::delete_entry` to
return the resulting `fs::TrashedEntry`
- Introduce both `Project::restore_entry` and `Worktree::restore_entry`
to allow restoring an entry in a worktree, given the `fs::TrashedEntry`
- Worth pointing out that support for restoring is not yet implemented
for remote worktrees, as that will be dealt with in a separate pull
request
  
### Undo Manager

- Split `ProjectPanelOperation` into two different enums, `Change` and
`Operation`
- While thinking through this, we noticed that simply recording the
operation that user was performing was not enough, specifically in the
case where undoing would restore the file, as in that specific case, we
needed the `trash::TrashedEntry` in order to be able to restore, so we
actually needed the result of executing the operation.
- Having that in mind, we decided to separate the operation (intent)
from the change (result), and record the change instead. With the change
being recorded, we can easily building the operation that needs to be
executed in order to invert that change.
- For example, if an user creates a new file, we record the
`ProjectPath` where the file was created, so that undoing can be a
matter of trashing that file. When undoing, we keep track of the
`trash::TrashedEntry` resulting from trashing the originally created
file, such that, redoing is a matter of restoring the
`trash::TrashedEntry`.
- Refer to the documentation in the `project_panel::undo` module for a
better breakdown on how this is implemented/handled.

- Introduce a task queue for dealing with recording changes, as well as
undo and redo requests in a sequential manner
- This meant moving some of the details in `UndoManager` to a
`project_panel::undo::Inner` implementation, and `UndoManager` now
serves as a simple wrapper/client around the inner implementation,
simply communicating with it to record changes and handle undo/redo
requests
- Callers that depend on the `UndoManager` now simply record which
changes they wish to track, which are then sent to the undo manager's
inner implementation
- Same for the undo and redo requests, those are simply sent to the undo
manager's inner implementation, which then deals with picking the
correct change from the history and executing its inverse operation
- Introduce support for tracking restore changes and operations
- `project_panel::undo::Change::Restored` – Keeps track that the
file/directory associated with the `ProjectPath` was a result of
restoring a trashed entry, for which we now that reverting is simply a
matter of trashing the path again
- `project_panel::undo::Operation::Restore` – Keeps track of both the
worktree id and the `TrashedEntry`, from which we can build the original
`ProjectPath` where the trashed entry needs to be restored
- Move project panel's undo tests to a separate module
`project_panel::tests::undo` to avoid growing the
`project::project_panel_tests` module into a monolithic test module
- Some of the functions in `project::project_panel_tests` were made
`pub(crate)` in order for us to be able to call those from
`project_panel::tests::undo`
  
### FS Changes

- Refactored the `Fs::trash_file` and `Fs::trash_dir` methods into a
single `Fs::trash` method
- This can now be done because `RealFs::trash_dir` and
`RealFs::trash_file` were simply calling `trash::delete_with_info`, so
we can simplify the trait
- Tests have also been simplified to reflect this new change, so we no
longer need a separate test for trashing a file and trashing a directory
- Update `Fs::trash` and `Fs::restore` to be async
- On the `RealFs` implementation we're now spawning a thread to perform
the trash/restore operation

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

Relates to #5039

Release Notes:

- N/A

---------

Co-authored-by: Yara <git@yara.blue>
Co-authored-by: Miguel Raz Guzmán Macedo <miguel@zed.dev>
Co-authored-by: Marshall Bowers <git@maxdeviant.com>

Dino , Yara , Miguel Raz Guzmán Macedo , and Marshall Bowers created

fd285c8 fs: Add support for restoring trashed files (#52014)

Click to expand commit body
Introduce a new `fs::Fs::restore` method which, given a
`fs::TrashedEntry` should attempt to restore the file or directory back
to its original path.

Dino created

b6562e8 fs: Return trashed file location (#52012)

Click to expand commit body
Update both `Fs::trash_dir` and `Fs::trash_file` to now return the
location of the trashed directory or file, as well as adding the
`trash-rs` create dependency and updating the `RealFs` implementation
for these methods to simply leverage `trash::delete_with_info`.

* Add `fs::Fs::TrashedEntry` struct, which allows us to track the
  original file path and the new path in the OS' trash
* Update the `fs::Fs::trash_dir` and `fs::Fs::trash_file` signatures to
  now return `Result<TrashedEntry>` instead of `Result<()>`
* The `options` argument was removed because it was never used by
  implementations other than the default one, and with this change to
  the signature type, we no longer have a default implementation, so the
  `options` argument would no longer make sense
* Update `fs::RealFs::trash_dir` and `fs::RealFs::trash_file`
  implementations to simply delegate to `trash-rs` and convert the
  result to a `TrashedEntry`
* Add `fs::FakeFs::trash` so we can simulate the OS' trash during tests
  that touch the filesystem
* Add `fs::FakeFs::trash_file` implementation to leverage
  `fs::FakeFs::trash`
* Add `fs::FakeFs::trash_dir` implementation to leverage
  `fs::FakeFs::trash`

Dino created

6184b24 Fix project symbol picker UTF-8 highlight panic (#53485)

Click to expand commit body
This panic was caused because we incorrectly assumed that each character
was one byte when converting character indices to highlight range byte
indices.

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 #53479

Release Notes:

- Fix a panic that could occur in the project symbol search picker

---------

Co-authored-by: Lukas Wirth <lukas@zed.dev>

Anthony Eid and Lukas Wirth created

d80ed54 sidebar: More vim actions (#53419)

Click to expand commit body
Release Notes:

- N/A or Added/Fixed/Improved ...

Cameron Mcloughlin created

b150663 markdown_preview: Support anchor link for headings (#53184)

Click to expand commit body
## What does this PR did

- Generate [GitHub-flavored heading
slugs](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#section-links)
for markdown headings
- Handle `[label](#heading)` same-document anchor links that scroll the
preview and editor to the target heading
- Handle `[label](./file.md#heading)` cross-file anchor links that open
the file, scroll the preview, and move the editor cursor to the heading


https://github.com/user-attachments/assets/ecc468bf-bed0-4543-a988-703025a61bf8

## What to test

- [ ] Create a markdown file with `[Go to section](#section-name)`
links, verify clicking scrolls preview and editor
- [ ] Create two markdown files with cross-file links like `[See
other](./other.md#heading)`, verify file opens and preview scrolls to
heading
- [ ] Verify duplicate headings produce correct slugs (`heading`,
`heading-1`)
- [ ] Verify external URLs (`https://...`) are unaffected

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
- [ ] Performance impact has been considered and is acceptable

Closes #18699

Release Notes:

- Added support for anchor links for headings in Markdown Preview.

---------

Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>

Dong and Smit Barmase created

55c02b4 agent_ui: Disable thread feedback based on organization configuration (#53454)

Click to expand commit body
This PR updates the agent thread UI to disable the thread feedback
controls based on the organization's configuration.

Closes CLO-629.

Release Notes:

- N/A

Marshall Bowers created

db3ea01 client: Store organization configuration (#53450)

Click to expand commit body
This PR updates the `UserStore` to store the configuration for each
organization.

We'll be reading from this in subsequent PRs.

Closes CLO-628.

Release Notes:

- N/A

Marshall Bowers created

c998b4a diagnostics: Fall back to `multibuffer_context_lines` when syntactic expansion produces a single-line range (#53526)

Click to expand commit body
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

Cole Miller created

399d3d2 docs: Update mentions to "assistant panel" (#53514)

Click to expand commit body
We don't use this terminology anymore; now it's "agent panel".

Release Notes:

- N/A

Danilo Leal created

37fd7f7 sidebar: Add setting to control side in the settings UI (#53516)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

1391918 Remove storybook and story crates (#53511)

Click to expand commit body
Remove the standalone storybook binary and the story crate, as component
previews are now handled by the component_preview crate.

Also removes the stories features from the ui and title_bar crates.

Release Notes:

- N/A or Added/Fixed/Improved ...

Lukas Wirth created

72eb842 gpui: Throttle framerate to 30 for unfocused windows (#52970)

Click to expand commit body
This should reduce energy consumption when having agents running in
background windows, as the spinner that is being animated won't refresh
at the display framerate anymore.

Release Notes:

- N/A or Added/Fixed/Improved ...

Lukas Wirth created

50856c9 ep: Make .prompt.expected_output optional (#53505)

Click to expand commit body
Release Notes:

- N/A

Oleksiy Syvokon created

4fd2baf editor: Add Ctrl+scroll wheel zoom for buffer font size (#53452)

Click to expand commit body
Closes https://github.com/zed-industries/zed/pull/53452

Release Notes:

- Add event handling on editor to increase/decrease font-size when using
the scroll-wheel and holding the secondary modifier (Ctrl on
Linux/Windows, and Cmd on macOS)

Screen Capture:


https://github.com/user-attachments/assets/bf298be4-e2c9-470c-afef-b7e79c2d3ae6

---------

Co-authored-by: Dmitry Soluyanov <dimitri.soluyanov@yandex.ru>

Sean Hagstrom and Dmitry Soluyanov created

7e1b636 git_ui: Strip ANSI escape codes from git command output (#53444)

Click to expand commit body
When git commands (push, pull, hooks...) produce output containing ANSI
escape sequences for colors or formatting, Zed was displaying them as
raw escape codes in the output buffer, making the output hard to read.
This simply escapes ANSI from the git output

### Before and After

  <table>
    <tr>
      <th align="center">Before</th>
<th align="center">After</th>
    </tr>
    <tr>
  <td>
<img width="882" height="862" alt="Screenshot 2026-04-08 at 21 13 07"
src="https://github.com/user-attachments/assets/58731e80-d864-47ca-8983-d0e86e924843"
/>
</td>
      <td>
<img width="882" height="862" alt="Screenshot 2026-04-08 at 21 15 14"
src="https://github.com/user-attachments/assets/7649200a-2d82-4442-88da-e231304911a8"
/>
</td>
    </tr>         
  </table>        

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

Related to #43817. This PR only addresses the escaping of the ANSI
codes; colors and other stuff are not handled

Release Notes:

- Fixed ANSI escape codes being displayed as raw text in git command
output

Luca Zani created

d812adc sidebar: Better handling for threads in remote workspaces (#53451)

Click to expand commit body
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>

Eric Holk , Anthony Eid , Anthony Eid , and Max Brunsfeld created

f2a66a8 compliance: Use tag instead of branch name by default (#53422)

Click to expand commit body
Applies the changes from
https://github.com/zed-industries/zed/pull/53409 to the main branch

Release Notes:

- N/A

Finn Evers created

ff0aa17 compliance: Fix file report upload (#53425)

Click to expand commit body
Applies https://github.com/zed-industries/zed/pull/53424 to the main
branch

Release Notes:

- N/A

Finn Evers created

5be9dc1 Fix duplicate window when opening from CLI on macOS (#48146)

Click to expand commit body
Closes #47140
Closes #44691

When launching Zed from the CLI (`zed .`), macOS delivers the path as a
`kAEGetURL` Apple Event via Launch Services. Zed relied on the
`application:openURLs:` delegate method to receive this, but its timing
relative to `applicationDidFinishLaunching:` is not guaranteed by macOS.
In release builds, the app reaches `didFinishLaunching` before the URL
is delivered, causing it to be missed and a duplicate window to be
opened. This does not reproduce in debug builds due to slower
initialization, which is why the issue was hard to reproduce from
source.

This replaces `application:openURLs:` with a custom `kAEGetURL` Apple
Event handler registered in `applicationWillFinishLaunching:`. Apple
Events are guaranteed to be delivered synchronously between
`willFinishLaunching` and `didFinishLaunching`, ensuring the URL is
always available before startup logic runs.

 Release Notes:

- Fixed duplicate window creation when opening files/directories from
the CLI on macOS.

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>

koh-sh and Conrad Irwin created

fe26ab6 Remove unused delete_history_entry method (#53436)

Click to expand commit body
Remove the unused `ConversationView::delete_history_entry` method and
its now-unused `ThreadMetadataStore` import. The method had zero callers
— the same functionality is covered by
`ThreadHistoryView::remove_thread` and
`ThreadsArchiveView::delete_thread`.

Release Notes:

- N/A

Richard Feldman created

7544515 Use detached commits when archiving worktrees (#53458)

Click to expand commit body
Don't move the branch when making WIP commits during archiving; instead
make detached commits via `write-tree` + `commit-tree`.

(No release notes because this isn't stable yet.)

Release Notes:

- N/A

---------

Co-authored-by: Anthony Eid <anthony@zed.dev>

Richard Feldman and Anthony Eid created

177843c sidebar: Improve new thread button behavior/design (#53429)

Click to expand commit body
This PR removes the labeled "new thread" button when the project group
is empty, making it so, effectively, we only show it when you're in an
empty/draft thread in the active workspace. The "Untitled Thread" label
has also been renamed back to "New Thread". Then, we fixed an issue
where clicking on the new thread icon button would default to creating a
new thread in the main worktree as opposed to the one currently active;
this fix makes the button's behavior match with `cmd-n` from the agent
panel. Lastly, we fixed the "new thread" labeled button not opening the
agent panel when that's closed and organized the data structures a bit
by merging `DraftThread` and `NewThread` all into `DraftThread`.

Release Notes:

- Thread Sidebar: Fixed the new thread icon button not creating a thread
in the current active worktree.
- Thread Sidebar: Fixed click on the new thread button not opening the
agent panel when closed.

---------

Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>

Danilo Leal and Mikayla Maki created

da4ffb5 Add some adjustments to the parallel onboarding elements (#53449)

Click to expand commit body
- Hopefully, making the "Try Now" button within the announcement toast
effectively get the layout switched to agent
- Don't dismiss the announcement toast when clicking on "Learn More"
- Add a Learn More button in the agent panel, too
- Hide the "Collab with Agents" card in the launchpad page

Release Notes:

- N/A

Danilo Leal created

7597666 Track additional metrics in settled (#52938)

Click to expand commit body
Stacked on https://github.com/zed-industries/zed/pull/50566.

Begin collecting kept chars rate, as well as the count of tree-sitter
errors in the code before and after applying the prediction.

Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] 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)
- [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 ...

Ben Kunkle created

364ebfc ci: Move building visual tests binary to separate step (#53440)

Click to expand commit body
https://github.com/zed-industries/zed/pull/53408 did not solve the root
issue of the cache issues we were seeing with building the visual tests
binary.

Thus, moving this to a separate step here to test how fast it is and
removing it from the other test runs - it should not be there anyway and
especially not for the tests on release builds.

Release Notes:

- N/A

Finn Evers created

c69a91b ci: Clean workspace members more eagerly (#53427)

Click to expand commit body
This relies on 1.94s --workspace option we've added to cargo

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

Piotr Osiewicz created

2169eba Wire up worktree archival on thread archive and restoration on unarchive (#53215)

Click to expand commit body
Connect the git API and archived worktree data model to the sidebar's
archive/unarchive flow:

- Add `thread_worktree_archive` module: orchestrates the full archive
cycle (WIP commits, DB records, git refs, worktree deletion) and restore
cycle (detached worktree creation, reset to recover staged/unstaged
state, branch restoration)
- Integrate into sidebar: `archive_thread` now persists worktree state
before cleanup; `activate_archived_thread` restores worktrees via git
with targeted path replacement for multi-root threads
- Add pending worktree restore UI state with spinner and cancel button
- Show toast on restore failure instead of silent log
- Switch to surviving workspace when archiving active thread whose
workspace will be deleted
- Deserialize persisted `project_group_keys` on window restore
- Guard `cleanup_empty_workspaces` against dropped entities
- Await rollback DB operations instead of fire-and-forget

Part 3 of 3 in the persist-worktree stack. Stacked on #53214. This wires
up parts 1 and 2.

Release Notes:

- Added worktree state preservation when archiving agent threads,
automatically restoring staged and unstaged changes when the thread is
unarchived

---------

Co-authored-by: Anthony Eid <anthony@zed.dev>

Richard Feldman and Anthony Eid created

c4661cf compliance: Also check for approval pattern in pull request reviews (#53431)

Click to expand commit body
Release Notes:

- N/A

Finn Evers created

fb949ae Gracefully handle when linked worktree .git path is outside worktree root (#53443)

Click to expand commit body
In `update_git_repositories`, a `.git` path outside the worktree root
can occur legitimately when `.git` is a gitfile (as in linked worktrees
and submodules) pointing to a directory in the parent repo. Previously
this triggered a `debug_panic!`, crashing debug builds.

Now we skip the path with a `debug_assert!` that it is indeed a file
(not a directory), so a genuine `.git` directory outside the worktree
root would still be caught in debug builds.

(No release notes because this is extremely hard to encounter until
https://github.com/zed-industries/zed/pull/53215 lands)

Release Notes:

- N/A

Richard Feldman created

525f10a editor: Add action to toggle block comments (#48752)

Click to expand commit body
Closes #4751

## Testing
- Manually tested by comparing the behaviors with vscode.
- Those requirements are added to unit tests.

Release Notes:

- Added action to toggle block comments

---------

Co-authored-by: ozacod <ozacod@users.noreply.github.com>

ozacod and ozacod created

64c69ca ci: Only link to PRs needing review if there are any (#53437)

Click to expand commit body
This further reduces the noise of the compliance checks.

Release Notes:

- N/A

Finn Evers created

4a02367 Persist fast mode across new threads (#53356)

Click to expand commit body
When toggling fast mode, the setting is now written to `settings.json`
under `agent.default_model.speed`, so new threads start with the same
speed. This follows the same pattern as `enable_thinking` and `effort`.

The `speed` field uses the existing `Speed` enum (`"fast"` /
`"standard"`) rather than a boolean, to leave room for future speed
tiers.

Example settings:
```json
{
  "agent": {
    "default_model": {
      "provider": "zed.dev",
      "model": "claude-sonnet-4",
      "speed": "fast"
    }
  }
}
```

cc @benbrandt

Release Notes:

- N/A

---------

Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>

Nathan Sobo and Ben Brandt created

08e43ae Fix repeated prompts in opencode acp (#53216)

Click to expand commit body
### Summary
Fixes duplicated Prompts/context in ACP threads after sending a message,
as reported in #53201.

### Root Cause
The thread already inserts the user prompt optimistically at send time.
If an ACP server also echoes UserMessageChunk updates for the same
prompt, the same content is appended again, which can duplicate rendered
context sections.

### Fix
Ignore echoed UserMessageChunk updates while a turn is actively running,
so user prompt content is not appended twice.

### Validation
- Reproduced with OpenCode ACP flow from the issue.
- Confirmed duplication appears after send (not in the input box).
- Confirmed duplicate Prompts/context no longer appears with the fix.

### Video 

[Screencast from 2026-04-06
08-21-32.webm](https://github.com/user-attachments/assets/33075312-9af7-4dd5-a2a3-5e1169b80243)


### 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 #53201

## Release Notes
- Fixed duplicated Prompts/context in ACP conversations when servers
echo user message chunks after send.

Om Chillure created

d1871d5 sidebar: Surface subagent permission requests (#53428)

Click to expand commit body
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:

- (preview only) sidebar: Fixed issue where tool confirmation indicator
would not show up when subagent asks for permissions

Bennet Bo Fenner created

abc2f5f ci: Continue on error if non-blocking compliance step fails (#53398)

Click to expand commit body
This will make rerunning failing jobs easier, as this here is just a
pager, not anything we need to rerun - there exists a second check that
is blocking and should be rerun, this job however does not need to be.

Release Notes:

- N/A

Finn Evers created

e758d25 ci: Fix artifact naming conflict (#53433)

Click to expand commit body
This fixes the issue we saw in
https://github.com/zed-industries/zed/actions/runs/24147949240

Release Notes:

- N/A

Finn Evers created

dc3d8f1 ci: Remove noisy compliance webhook print (#53432)

Click to expand commit body
This is very noisy and does not provide much, the artifact link to the
report is sufficient for now.

Release Notes:

- N/A

Finn Evers created

d81b73f acp: Better handling of terminal auth on remote connections (#53396)

Click to expand commit body
We were incorrectly wrapping new terminal auth methods in double ssh
calls.

Only affected ACP beta users, but important for testing and stabilizing
the feature.

We moved the ssh wrapping to be only added in the acp process creation
where it was needed.

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>

Ben Brandt and Bennet Bo Fenner created

64b9320 Removal of mold/wild scripts and mentions in docs (#53078)

Click to expand commit body
Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] 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:

- N/A

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

Nitin K. M. and Claude Opus 4.6 created

3f58232 Bump Zed to v0.233 (#53404)

Click to expand commit body
Release Notes:

- N/A

Dino created

a706e93 Update parallel agents onboarding copy (#53423)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

de81d61 Fix empty path being shown as an item in the recent projects picker (#53400)

Click to expand commit body
A couple of restore project group/workspaces functions weren't filtering
out project groups with empty paths, leading to an empty being shown in
the recent projects picker. This is the problem this PR solves:

<img width="400" height="1042" alt="Screenshot 2026-04-08 at 11  06@2x"
src="https://github.com/user-attachments/assets/4d96cc53-5b03-445c-968b-8a8edec559da"
/>

Release Notes:

- N/A

Danilo Leal created