b04cdcc
Bump to 0.233.5 for @eholk
zed-zippy[bot] created
b04cdcc
Bump to 0.233.5 for @eholk
zed-zippy[bot] created
86fce66
Cherry picks for v0.233.x preview release (#54439)
Cherry picks for the next v0.233.x preview release, focused on agent
panel and sidebar fixes and improvements. Built incrementally so CI can
validate as we go.
### Cherry-picked PRs
Listed in the order they were applied (chronological merge order on
`main`). `[x]` = applied on this branch.
- [x] #54055 β sidebar: Move to new workspace non-Wayland
- [x] #54417 β agent_ui: Sort thread import agents by display name
- [x] #54427 β agent_ui: Handle pagination of session/list correctly
when importing
- [x] #54402 β agent_ui: Remove history view
- [x] #54411 β agent_ui: Preserve session resume state after load errors
- [x] #54430 β Remove `AgentV2FeatureFlag`
- [x] #54360 β sidebar: Adjust display of workspaces in header's
ellipsis menu
- [x] #54224 β workspace: Fix recent-projects cleanup wiping active
workspaces
- [x] #54438 β Tweak wording around multi-folder project actions
- [x] #54450 β Close the empty project before adding a project to a
window
### Conflict resolution notes
- **#54402** β `crates/agent_ui/src/agent_panel.rs`: four hunks. The
incoming patch is against a
post-[#47154](https://github.com/zed-industries/zed/pull/47154) (gpui
`Corner` β `Anchor` rename) tree, which is not on `v0.233.x`. Kept
`Corner` in the `gpui::{...}` import, dropped the now-unused
`DismissEvent` import, removed the `render_recent_entries_menu` function
body and both `.when(show_history_menu && !agent_v2_enabled, ...)` call
sites in the toolbar β so the end state matches what #54402 produces on
`main` modulo the `Corner`/`Anchor` spelling.
- **#54411** β Applied cleanly after #54402 (in the original failed
attempt, a test-helper hunk in `conversation_view.rs` collided with
history-view test code that #54402 removes; ordering #54402 first made
this a no-op).
- **#54430** β Applied cleanly after #54402 (same reason: depends on the
`has_history_for_selected_agent` / `agent_v2_enabled` locals being
gone).
- **#54224** β Applied cleanly, but the new
`recent_projects_picker_workspace` test helper in
`crates/workspace/src/persistence.rs` initializes a `bookmarks:
Default::default()` field on `SerializedWorkspace`. That field comes
from the Bookmarks MVP
([#51404](https://github.com/zed-industries/zed/pull/51404) /
[#54174](https://github.com/zed-industries/zed/pull/54174)) which is not
on `v0.233.x`, so we dropped that one line to match the struct shape on
this branch.
Release Notes:
- Fixed unsaved scratch buffers being lost across restarts and an
occasional error when opening a recent project.
([#54224](https://github.com/zed-industries/zed/pull/54224))
---------
Co-authored-by: Cameron Mcloughlin <cameron.studdstreet@gmail.com>
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Co-authored-by: Bennet Bo Fenner <bennet@zed.dev>
Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com>
Co-authored-by: allison <28279548+transitoryangel@users.noreply.github.com>
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Eric Holk , Cameron Mcloughlin , Ben Brandt , Bennet Bo Fenner , Bennet Bo Fenner , Danilo Leal , allison , and Max Brunsfeld created
1766ea6
git: Revert skipping of events for the `.git` directory itself (#54443) (cherry-pick to preview) (#54445)
Cherry-pick of #54443 to preview ---- This reverts #54329 and the part of #52499 that was an earlier attempt at the same thing, which caused us to incorrectly miss git state updates on Windows. cc @Veykril it seems like we need to find a different way to fix the problem of `.git` scanning cycles. 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 causing stale git state on Windows. Co-authored-by: Cole Miller <cole@zed.dev>
zed-zippy[bot] and Cole Miller created
6b3a794
Fix vim mode in thread sidebar (#54381) (cherry-pick to preview) (#54437)
Cherry-pick of #54381 to preview ---- Release Notes: - vim: Removed normal mode from the agent sidebar search --------- Co-authored-by: cameron <cameron.studdstreet@gmail.com> Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com> Co-authored-by: cameron <cameron.studdstreet@gmail.com>
zed-zippy[bot] , Conrad Irwin , and cameron created
7b384c5
sidebar: Fix threads disappearing when stored main paths go stale (#54382) (cherry-pick to preview) (#54434)
Cherry-pick of #54382 to preview ---- Fixes a user-reported bug where a thread could be missing from the sidebar even though it was still present in the metadata store and still visible in Thread History. The thread reappears in the sidebar only after the user sends a message. ### Scenario A single multi-root workspace whose roots are `[/cloud, /worktrees/zed/wt_a/zed]`, where: - `/cloud` is a standalone git repo (main == folder). - `/worktrees/zed/wt_a/zed` is a linked worktree of a separate `/zed` repo. The project group normalizes to `main_worktree_paths = [/cloud, /zed]`. A thread created in this workspace is written with `main=[/cloud, /zed], folder=[/cloud, /worktrees/zed/wt_a/zed]` and the sidebar finds it via `entries_for_main_worktree_path`. If the thread's stored `main_worktree_paths` ever drifts from the group key β e.g. a stale row loaded from the store on startup, a legacy write, or a row persisted with `main == folder` β all three existing lookups in `Sidebar::rebuild_contents` miss: 1. `entries_for_main_worktree_path([/cloud, /zed])` β the thread's stored main doesn't equal the group key. 2. `entries_for_path([/cloud, /zed])` β the thread's folder paths don't equal the group key either. 3. The linked-worktree fallback iterates the group workspaces' `linked_worktrees()` snapshots. Those yield *sibling* linked worktrees of the repo, not the workspace's own roots, so `/worktrees/zed/wt_a/zed` doesn't match. The row falls out of the sidebar entirely even though the metadata is intact and the thread's folder paths exactly equal the open workspace's roots. The store heals the stored row on the next `RootThreadUpdated` event, which is why sending a message makes the row reappear β but until then the sidebar misrepresents the state. ### Fix Add a fourth lookup to `Sidebar::rebuild_contents`: for each open workspace in the group, query the store by the workspace's own root paths. Any thread whose `folder_paths` matches an open workspace's roots belongs under that group, regardless of what its `main_worktree_paths` say. This covers the gap between stale-row load and store self-heal, matches the principle that the sidebar should reflect state that exists in a reasonable way, and is symmetric with the existing lookups (same store API, one more iterator). ### Commits 1. `sidebar: Add failing repro for thread disappearing from sidebar` β adds `test_sidebar_keeps_multi_root_thread_with_stale_main_paths` which reproduces the bug. Sets up the multi-root + linked-worktree layout, persists a thread in the stale shape, and asserts the row is still visible in the sidebar. 2. `sidebar: Show threads whose folder paths match an open workspace` β the fourth-lookup fix. 31 lines in `crates/sidebar/src/sidebar.rs`, no deletions. ### Verification - `cargo test -p sidebar`: 103 passed, 0 failed (the new test was failing before commit 2 and is passing after). - `./script/clippy -p sidebar`: clean. ### Follow-ups The three existing lookups in `rebuild_contents` are each covering a different historical shape the store can be in. A real cleanup β do a one-shot migration on reload that fills in `main_worktree_paths` for any row missing it, then retire the two legacy-shape lookups β is worth doing as a separate PR, but out of scope here. Release Notes: - Fixed an issue where agent threads could go missing from the sidebar. Co-authored-by: Eric Holk <eric@zed.dev>
zed-zippy[bot] and Eric Holk created
9f7e6ae
title_bar: Fix worktree label showing `main` when opening a worktree directly (#54406) (cherry-pick to preview) (#54423)
Cherry-pick of #54406 to preview ---- This PR fixes an issue where we'd show incorrect worktree labels when opening a linked worktree directly. The linked worktree name would be displayed in the project button but the dedicated worktree button would be displaying "main", which is incorrect. Now that we have a dedicated worktree button in the title bar, we can make the project button always show the root repository name, effectively matching the threads sidebar. Release Notes: - Fixed the title bar worktree button showing "main" when opening a linked git worktree directly. Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com>
zed-zippy[bot] and Danilo Leal created
f352617
compliance: Temporarily fix the wrong compliance reports (#54401) (cherry-pick to preview) (#54405)
This will be fully replaced by https://github.com/zed-industries/zed/pull/54342 - however, this will not help for the next week on the stable branch, since we have plenty of non-signed commits on that branch currently. Thus, adding this temporary check here to fix this and which is a cherry-pickable change. This **will** be fully replaced by the linked PR, however, I cannot cherry pick that since we would otherwise need to force-push the branches to remove the bad commits. Release Notes: - N/A
Finn Evers created
309888f
agent_panel: Retain draft prompt when creating new draft thread (#54387) (cherry-pick to preview) (#54400)
Cherry-pick of #54387 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) - [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: Bennet Bo Fenner <bennet@zed.dev>
zed-zippy[bot] and Bennet Bo Fenner created
5866671
Fix agent default model not picking up after authentication resolve (#54397) (cherry-pick to preview) (#54399)
Cherry-pick of #54397 to preview ---- Regression in https://github.com/zed-industries/zed/pull/54125 Release Notes: - agent: Fixed an issue where the default Zed model would not get selected after sign-in completed --------- Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de> Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com> Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com> Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de> Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
zed-zippy[bot] , Smit Barmase , Bennet Bo Fenner , and Ben Brandt created
40c8a69
Bump to 0.233.4 for @eholk
zed-zippy[bot] created
2107d41
Move the worktree picker to the title bar + make it always visible (#54183) (cherry-pick to preview) (#54378)
Cherry-pick of #54183 to `v0.233.x`. This PR makes Zed only have one worktree picker, as opposed to a flavor of it in the title bar and another in the agent panel. It then moves it to the title bar, making it always present, so that its trigger is separate from the branch picker (which now contains only two views: branches and stashes). For the worktree picker, I'm mostly favoring the behavior we've introduced in the agent-panel-flavored version. It also updates the title bar settings migration to use the JSON `migrate_settings` helper instead of a shallow Tree-sitter rewrite, so old `show_branch_icon = true` values are promoted to `show_branch_status_icon = true` across root, platform, release-channel, and profile settings scopes. ### Conflicts resolved - `crates/migrator/src/migrations.rs` and `crates/migrator/src/migrator.rs` β kept both the existing `m_2026_04_15` (HTTP context servers) migration already on `v0.233.x` and the new `m_2026_04_17` (branch icon) migration from this cherry-pick, in order. - `crates/agent_ui/src/agent_panel.rs` β dropped the now-removed `CreateWorktree`, `SwitchWorktree`, `NewWorktreeBranchTarget`, and `ToggleWorktreeSelector` imports while preserving `ShowThreadMetadata` / `ShowAllSidebarThreadMetadata` that landed via the omnibus cherry-pick (#54368). Removed the top-level `anyhow!` import (only used inside `#[cfg(test)]`, which has its own import); kept `chrono` since it's still used by the metadata UI. Release Notes: - Improved migration of the title bar branch status icon setting. Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com> Co-authored-by: Nathan Sobo <nathan@zed.dev> Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com> Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Eric Holk , Danilo Leal , Nathan Sobo , Zed Zippy , and Ben Brandt created
3f8ffd2
sidebar: Improve hover in history view thread items (#54370) (cherry-pick to preview) (#54377)
Cherry-pick of #54370 to preview ---- This PR improves the hover state in thread items within the history view by making them more stable. There were other thread events calling a refresh, which would clear the hover state even though I'd still be hovering the item, making the buttons that only appear on hover feel unstable and disappear. Release Notes: - Agent: Improve hover state stability on thread items within the sidebar's history view. Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com>
zed-zippy[bot] and Danilo Leal created
8eeff17
Cherry picks for v0.233.x preview release (#54368)
Cherry picks for the next v0.233.x preview release, focused on sidebar
and agent panel fixes and improvements. Built incrementally so CI can
validate as we go.
### Cherry-picked PRs
Listed in the order they were applied (chronological merge order on
`main`). `[x]` = applied on this branch; `[ ]` = todo; `[-]` = skipped.
- [x] #53956 β sidebar: Remove View More batched thread expansion
- [x] #53998 β Make flexible dock widths more closely match full-height
pane splits
- [x] #54006 β agent: Inline worktree info fetching to remove expects in
agent_panel
- [x] #53854 β Simplify parallel agents onboarding
- [x] #54025 β sidebar: Add some UI adjustments
- [-] #53982 β sidebar: Refactor thread time storage (skipped β paired
with revert #54078, net zero)
- [-] #54078 β Revert "sidebar: Refactor thread time storage (#53982)"
(skipped β paired with #53982, net zero)
- [x] #54090 β agent_ui: Do not show token limit callout for external
agents
- [x] #54126 β agent_ui: Adjust thread item component and fix thread
switcher
- [x] #54075 β Rename Archive view to Thread History
- [x] #54125 β agent: Auto-select user model when there's no default
- [x] #54128 β sidebar: Fix cmd-click in the header not taking to the
last workspace
- [x] #54178 β agent_ui: Fix UI issues with activity bar
- [x] #54187 β agent_ui: Only surface the regenerate title item for the
Zed agent
- [x] #54205 β agent: Clean up old remove worktree manage folder code
- [x] #54207 β Add list of open workspaces to the project group menu in
the sidebar
- [x] #54198 β Fix remote projects not appearing in the sidebar after
adding them to the window
- [x] #54206 β Feature flag overrides
- [-] #53100 β workspace: Skip read-only paths when choosing default
save location (skipped for this release)
- [-] #54183 β Move the worktree picker to the title bar + make it
always visible (skipped β very large refactor, deferred to a future
release)
- [x] #54314 β agent_ui: Add `show thread metadata` action
- [x] #54317 β sidebar: Open project header ellipsis menu on right-click
- [x] #54316 β agent_ui: Add setting for turning off content max-width
- [x] #54256 β Add support for Netpbm image previews
- [x] #54320 β sidebar: Consistently set `interacted_at`
- [x] #54318 β agent: Respect favorite model settings and sync UI
changes back to settings
- [x] #54348 β Always use `ArchiveSelectedThread` action for archiving
threads
- [x] #54353 β agent: When opening a remote thread check that the linked
worktree path exists
- [x] #54365 β Avoid constantly scrolling thread history to top as agent
generates
### Conflict resolution notes
- **#53956** β On `v0.233.x`, `sidebar_tests.rs` still contained
`test_search_finds_threads_hidden_behind_view_more`, which exercised
behavior #53956 removes. Deleted the test along with the rest of the
View More functionality; no changes to the substance of the
cherry-picked patch.
- **#53998** β Supersedes standalone cherry-pick PR #54366 (which can be
closed).
- **#53982 / #54078** β Skipped both. They form a refactor-and-revert
pair on `main` with net zero change. Since `v0.233.x` already has #54173
("sidebar: Fix sidebar thread times") applied on top of the pre-#53982
state, pulling both in would be churn with no end-state difference.
- **#54025** β `crates/ui/src/components/ai/thread_item.rs`: accepted
incoming side for the `worktree_tooltip_title` removal and converted the
patch's `match (wt.kind, wt.branch_name)` structure back to `v0.233.x`'s
`match wt.kind` structure (the #54067 tuple match isn't on this branch).
Dropped the `linked_worktree_count` local after it became unused.
- **#54207** β `crates/sidebar/src/sidebar.rs`: accepted incoming side
for the project group menu restructure. This removes the
`show_multi_project_entries` gate around the "Remove Project" entry that
#54025 added β matching `main`'s state at #54207's parent.
- **#54314** β `crates/agent_ui/src/agent_panel.rs`: merged both sides
of two import conflicts, adding `ShowAllSidebarThreadMetadata` and
`ShowThreadMetadata` alongside the
`CreateWorktree`/`NewWorktreeBranchTarget`/`SwitchWorktree`/`ToggleWorktreeSelector`
imports that remain on `v0.233.x` (#54183 isn't here). Also merged the
`anyhow` and `chrono` `use` lines.
- **#54183** β Skipped. It's a 3,379/4,702-line refactor that moves the
worktree picker from the agent panel to the title bar. Too risky for a
preview release; should be handled as a dedicated PR if/when we want it
on `v0.233.x`.
Release Notes:
- Fixed a bug where flexible docks resized incorrectly in certain cases.
([#53998](https://github.com/zed-industries/zed/pull/53998))
- Fixed an issue where resizing a flexible-width panel in the left dock
would also resize fixed-width panels.
([#53998](https://github.com/zed-industries/zed/pull/53998))
- Agent: Fixed worktree and branch labels not showing up in the thread
switcher. ([#54126](https://github.com/zed-industries/zed/pull/54126))
- Agent: Fixed the thread switcher not selecting on hover.
([#54126](https://github.com/zed-industries/zed/pull/54126))
- Renamed the threads Archive view to Thread History and updated its
icon to a clock.
([#54075](https://github.com/zed-industries/zed/pull/54075))
- Agent: Automatically select a model when there's no selected model or
configured default.
([#54125](https://github.com/zed-industries/zed/pull/54125))
- Agent: Fixed a bug where cmd-clicking on the project header wouldn't
actually take you to the last active workspace.
([#54128](https://github.com/zed-industries/zed/pull/54128))
- Agent: Added a new `limit_content_width` setting in the agent panel
that allows turning off the content max-width limit.
([#54316](https://github.com/zed-industries/zed/pull/54316))
- Added support for PNM image previews (`.pbm`, `.ppm`, `.pgm`).
([#54256](https://github.com/zed-industries/zed/pull/54256))
- Agent favorite models now remember and restore per-model thinking,
effort level, and fast mode preferences.
([#54318](https://github.com/zed-industries/zed/pull/54318))
---------
Co-authored-by: Nathan Sobo <nathan@zed.dev>
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Co-authored-by: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com>
Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com>
Co-authored-by: Bennet Bo Fenner <bennet@zed.dev>
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Co-authored-by: Mikayla Maki <mikayla@zed.dev>
Co-authored-by: Cameron Mcloughlin <cameron.studdstreet@gmail.com>
Co-authored-by: VinΓcius Dutra <dutravinisousa2@usp.br>
Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
Eric Holk , Nathan Sobo , Max Brunsfeld , Anthony Eid , Danilo Leal , Bennet Bo Fenner , Danilo Leal , Mikayla Maki , Cameron Mcloughlin , VinΓcius Dutra , and Smit Barmase created
271c5af
Remove flaky`test_dev_container_modal_not_dismissed_on_background_click` (#54062) (cherry-pick to preview) (#54350)
Cherry-pick of #54062 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) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - N/A Co-authored-by: Cole Miller <cole@zed.dev>
zed-zippy[bot] and Cole Miller created
3ae5229
Bump to 0.233.3 for @eholk
zed-zippy[bot] created
981bca8
worktree: Fix crash on rescan of an unregistered linked worktree commondir (#54215) (cherry-pick to preview) (#54344)
Cherry-pick of #54215 to preview
----
## Summary
Fixes a crash I hit running Zed Preview against a checkout with many
linked git worktrees. The panic was:
```
thread '<unnamed>' panicked at crates/worktree/src/worktree.rs:5334:25:
update_git_repositories: .git path outside worktree root is not a gitfile: "/Users/eric/repo/zed/.git"
```
The `debug_assert!` in `update_git_repositories` was added in #53443 to
catch the case where a `.git` path outside the worktree root is not a
gitfile. The comment there explained that a `.git` outside the root
should always be a gitfile (as in a linked worktree or submodule), so
the assertion was meant to flag "should never happen" paths.
But there's a second legitimate case: after a linked worktree's
repository has been unregistered from `git_repositories` (for example
because its gitfile was removed, or because the filesystem watcher for
the common git dir lost sync and rescan-driven cleanup dropped the
entry), a subsequent rescan event on the main repo's `.git` directory
arrives at the linked worktree's scanner with the common git dir as the
`dot_git_dir`. That path:
- is outside the linked worktree's root (so it doesn't strip-prefix
cleanly), and
- is a real directory (not a gitfile), because it's the main repo's
`.git`.
So the assertion fires, but `continue` is already the right thing to do
β there's simply nothing left for this scanner to do with a path that
isn't its repository anymore.
On macOS, the trigger in practice is the FSEvents API setting
`MustScanSubDirs` / `UserDropped` / `KernelDropped` on an event (which
`notify` surfaces as `need_rescan()`), which our `FsWatcher` converts
into a `PathEvent { path: <watched path>, kind: Rescan }`. Because every
linked worktree registers a watcher on the same shared common git dir,
one kernel drop fans out into many rescan callbacks, and any one of them
hitting a worktree whose repo was just unregistered triggers the panic.
## Changes
- `crates/worktree/src/worktree.rs` β drop the `debug_assert!`, broaden
the comment to cover both cases.
- `crates/worktree/tests/integration/main.rs` β add a failing regression
test that drives the exact sequence (repo unregistered, then a Rescan
event on the common git dir) and asserts it doesn't panic.
The two commits are split so the test commit reproduces the panic on its
own, and the fix commit on top makes it pass.
Release Notes:
- N/A
Co-authored-by: Eric Holk <eric@zed.dev>
zed-zippy[bot] and Eric Holk created
2e8c63a
worktree: Fix `.git` modified events not being correctly filtered out (#54329) (cherry-pick to preview) (#54333)
Cherry-pick of #54329 to preview ---- Release Notes: - N/A or Added/Fixed/Improved ... Co-authored by: Cole Miller <cole@zed.dev> Co-authored-by: Lukas Wirth <lukas@zed.dev>
zed-zippy[bot] and Lukas Wirth created
308fb73
Fix tsgo LSP (#54258)
Cherry-pick of https://github.com/zed-industries/zed/pull/54201 into Preview Bumps the `lsp-types` rev which contains patch for breaking change introduced by upstream `typescript-go` repo Self-Review Checklist: - [x] I've reviewed my own diff for quality, security, and reliability - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - Fixed tsgo LSP
Kirill Bulatov created
4eed327
Bump to 0.233.2 for @eholk
Zed Zippy created
edc4f40
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>
Eric Holk , Richard Feldman , Anthony Eid , Max Brunsfeld , Smit Barmase , Cameron Mcloughlin , and Ben Brandt created
0e90169
Fix RefCell panic in cloud model token counting (#54188) (cherry-pick to preview) (#54191)
Cherry-pick of #54188 to preview
----
Fixes #54140
When `RulesLibrary::count_tokens` calls
`CloudLanguageModel::count_tokens` for Google cloud models, it does so
inside a `cx.update` closure, which holds a mutable borrow on the global
`AppCell`. The Google provider branch then called
`token_provider.auth_context(&cx.to_async())`, which created a new
`AsyncApp` handle and tried to take a shared borrow on the same
`RefCell` β causing a "RefCell already mutably borrowed" panic.
This only affects Google models because they are the only provider that
counts tokens server-side via an HTTP request (requiring
authentication). The other providers (Anthropic, OpenAI, xAI) count
tokens locally using tiktoken, so they never call `auth_context` during
`count_tokens`.
The fix makes `CloudLlmTokenProvider::auth_context` generic over `impl
AppContext` instead of requiring `&AsyncApp`. This allows the
`count_tokens` call site to pass `&App` directly (which reads entities
without re-borrowing the `RefCell`), while all other call sites that
already pass `&AsyncApp` (e.g. `stream_completion`, `refresh_models`)
continue to work unchanged.
Release Notes:
- Fixed a crash ("RefCell already mutably borrowed") that could occur
when counting tokens with Google cloud language models.
Co-authored-by: Richard Feldman <richard@zed.dev>
zed-zippy[bot] and Richard Feldman created
41d1519
Add Claude Opus 4.7 BYOK (#54077) (cherry-pick to preview) (#54190)
Cherry-pick of #54077 to preview ---- <img width="767" height="428" alt="Screenshot 2026-04-16 at 11 29 13β―AM" src="https://github.com/user-attachments/assets/e8b450fa-aefc-4dec-a286-b211bd492011" /> Add Claude Opus 4.7 (`claude-opus-4-7`) to the anthropic, bedrock, and opencode provider crates. Key specs: - 1M token context window - 128k max output tokens - Adaptive thinking support - AWS Bedrock cross-region inference (global, US, EU, AU) Release Notes: - Added Claude Opus 4.7 as an available language model Co-authored-by: Richard Feldman <richard@zed.dev>
zed-zippy[bot] and Richard Feldman created
d849414
Fix double borrow panic when ACP process dies (#54135) (cherry-pick to preview) (#54138)
Cherry-pick of #54135 to preview ---- Release Notes: - Fixed a crash that would occur when an ACP server process exited unexpectedly. Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
zed-zippy[bot] and Max Brunsfeld created
731ae35
When thread title generation fails, display error and (#54130) (cherry-pick to preview) (#54134)
Cherry-pick of #54130 to preview ---- Release Notes: - Fixed an issue where thread titles remained in the generating state if the generation failed. Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
zed-zippy[bot] and Max Brunsfeld created
9792017
Bump to 0.233.1 for @eholk
Zed Zippy created
27366a9
Preserve focused tool calls in agent panel when scrolling them out of view (#54115) (cherry-pick to preview) (#54116)
Cherry-pick of #54115 to preview ---- Release Notes: - Fixed a bug where the agent panel would sometimes close if you scrolled up or down while it was zoomed. Co-authored-by: Lukas <lukas@zed.dev> Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com> Co-authored-by: Lukas <lukas@zed.dev>
zed-zippy[bot] , Max Brunsfeld , and Lukas created
a7ace43
Parallel agent cherry pick omnibus PR (#54111)
We're doing another preview release today to get our latest parallel agents features out there. This PR is a rollup of all the changes we need to cherry pick. - [x] 7a26e4887d617c2375fe048d791e1ebd909e6fde from https://github.com/zed-industries/zed/pull/54081 - [x] https://github.com/zed-industries/zed/pull/54066 - [x] https://github.com/zed-industries/zed/pull/53992 - [x] https://github.com/zed-industries/zed/pull/54079 - [x] https://github.com/zed-industries/zed/pull/54057 - [x] https://github.com/zed-industries/zed/pull/54056 - [x] https://github.com/zed-industries/zed/pull/54052 - [x] https://github.com/zed-industries/zed/pull/53999 - [x] https://github.com/zed-industries/zed/pull/54009 - [x] https://github.com/zed-industries/zed/pull/53539 (already cherry picked as 25e02cb0b0e8512dde355a9cf140cedbf1e1e530) - [x] https://github.com/zed-industries/zed/pull/54070 - [x] https://github.com/zed-industries/zed/pull/54053 - fix `run_tests.yml`: 67e92b518a940ac577f55e991602c510ec5ac549 - [x] https://github.com/zed-industries/zed/pull/53979 - [x] https://github.com/zed-industries/zed/pull/53884 - [x] https://github.com/zed-industries/zed/pull/54067 - [x] https://github.com/zed-industries/zed/pull/54014 (already on branch) - [x] https://github.com/zed-industries/zed/pull/54030 (already on branch) - [x] https://github.com/zed-industries/zed/pull/54094 Release Notes: - N/A --------- Co-authored-by: Lukas Wirth <me@lukaswirth.dev> Co-authored-by: Bennet Bo Fenner <bennet@zed.dev> Co-authored-by: Nathan Sobo <nathan@zed.dev> Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com> Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de> Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com> Co-authored-by: Neel <neel@zed.dev> Co-authored-by: Richard Feldman <richard@zed.dev>
Eric Holk , Lukas Wirth , Bennet Bo Fenner , Nathan Sobo , Ben Brandt , Bennet Bo Fenner , Danilo Leal , Neel , and Richard Feldman created
cb2e16d
copilot_chat: Set Copilot output config only when effort exists (#54103) (cherry-pick to preview) (#54106)
Cherry-pick of #54103 to preview ---- It seems their verification got stricter, at least stricter than Anthropics. Only set the output config if we have an effort. 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 #54036 Release Notes: - copilot_chat: Fix invalid reasoning effort for some models. Co-authored-by: John Tur <john-tur@outlook.com> Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com> Co-authored-by: John Tur <john-tur@outlook.com>
zed-zippy[bot] , Ben Brandt , and John Tur created
5eca965
Cherry-pick: agent: Add ability to import threads from other channels (#54021)
Cherry-pick of #54002 to the v0.233.x preview branch. Conflict resolution notes: - Removed `WHERE session_id IS NOT NULL` from `LIST_QUERY` since the draft threads cleanup PR (#54014) is not on this branch yet. - Updated tests to use foreign channels so they pass on all of Dev, Nightly, Preview, and Stable. See https://github.com/zed-industries/zed/pull/54022 for cherry picking back to main. Release Notes: - N/A Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Eric Holk and Danilo Leal created
b8b7aad
Update v0.233.x Preview Release Channel (#53988)
Update the release channel from `dev` to `preview` for the v0.233.x branch.
Joseph T. Lyons created
3f2baed
docs: Add Dexter language server to Elixir documentation (#53793)
### Docs update. - adding 'what is Dexter' one-liner - adding config examples 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 β Elixir LS update - [PR](https://github.com/zed-extensions/elixir/pull/115) merged Release Notes: - N/A --------- Co-authored-by: AltCode <altcode@vivaldi.net>
Nick C and AltCode created
47059dc
settings: Remove `settings` field from HTTP `context_servers` (#48003)
HTTP context servers donβt support the settings field, so remove it during migration to avoid confusion. Other context server types are unaffected. Closes #44786. https://github.com/user-attachments/assets/4cabf405-c9e7-4d6e-a43d-f642fc4771e0 Release Notes: - Removed deprecated key from HTTP `context_servers` --------- Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de> Co-authored-by: Bennet Bo Fenner <bennet@zed.dev>
Kunall Banerjee , Bennet Bo Fenner , and Bennet Bo Fenner created
bfc34a6
sidebar: Refine archive view (#53975)
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 --------- Co-authored-by: Gaauwe Rombouts <mail@grombouts.nl> Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Bennet Bo Fenner , Gaauwe Rombouts , and Danilo Leal created
e69b112
agent: Add telemetry for parallel agents (#52919)
Track new telemetry: 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 --------- Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Katie Geer and Bennet Bo Fenner created
ab93615
sidebar: Fix removed projects not immediately disappearing from the UI (#53974)
Release Notes: - N/A
Danilo Leal created
2ea5644
Simplify draft threads (#53940)
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: Max Brunsfeld <maxbrunsfeld@gmail.com>
Mikayla Maki and Max Brunsfeld created
e676365
agent_ui: Fix focus moving to buffer on worktree creation (#53972)
Follow-up to https://github.com/zed-industries/zed/pull/53941 Release Notes: - N/A
Danilo Leal created
f81a5ec
workspace: Native open dialog multi-select (#53963)
Cameron Mcloughlin created
963329c
sidebar: Propagate workspace trust when creating new worktrees (#53833)
Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
Cameron Mcloughlin and Zed Zippy created
ac02b1b
remote: Set current_dir for cargo zigbuild cross-compilation (#53951)
## Summary - The cross-compile path for building `remote_server` via `cargo zigbuild` was missing `.current_dir()`, causing it to inherit the process cwd - This fails with "cannot specify features for packages outside of workspace" when Zed is launched from outside its source tree - The native build path at the same location already sets `.current_dir()` correctly β this aligns the cross-compile path Closes #53950 ## Test plan - [x] Build Zed from source - [x] Launch from `/tmp`: `cd /tmp && /path/to/zed some-project --dev-container` - [x] Verify dev container cross-compilation succeeds Release Notes: - Fixed dev container cross-compilation failing when Zed is launched from outside its source directory --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Toni Alatalo and Claude Opus 4.6 created
b928e59
Select and scroll to the best search match in settings (#53916)
When adding code lens to the long list of search items, I've failed to find it when searching, as we always select first item in the matches list, which is not necessarily the best one. Left is before, right is after: https://github.com/user-attachments/assets/9033dfd8-abde-4a45-a214-ae859105d6ad Release Notes: - Improved settings search ergonomics
Kirill Bulatov created
44305e6
compliance: Remove irrelevant case (#53936)
We will not be proceeding with this, thus removing it here to have less variants. Release Notes: - N/A
Finn Evers created
dec1a2a
gemini: Fix tool schema issues when type field is array (#53834)
Closes #53919 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: - gemini: Fixed an issue with MCP servers specifying tools with specific schemas
Bennet Bo Fenner created
bc84d80
settings_ui: Gate CLI open behavior setting on feature flag (#53964)
The `cli_default_open_behavior` setting controls how `zed <path>` opens directories, but the underlying behavior is gated behind the `AgentV2FeatureFlag` in `open_listener.rs`. Without the flag enabled, the setting has no effect β Zed always falls back to `NewWindow` behavior. This change gates the settings UI entry behind the same feature flag so it only appears when the feature is actually active. **Changes:** - Converted `general_settings_section()` from a fixed-size array to a `Vec` so the CLI setting can be conditionally appended - Added `feature_flags` as a dependency to `settings_ui` Release Notes: - N/A
Eric Holk created
1cd3249
editor: Fix stale session path for renamed files (#52539)
## Context When a file is renamed via the project panel while open in an editor, Zed would restore the old (no longer existing) path on reload . On rename, `language::Buffer` emits `BufferEvent::FileHandleChanged`, which propagates to `multi_buffer::Event::FileHandleChanged` β `EditorEvent::TitleChanged`. However, `should_serialize()` only matched `Saved | DirtyChanged | BufferEdited`, so no re-serialization was triggered and the `editors` DB table retained the stale `abs_path`. The fix adds a dedicated `EditorEvent::FileHandleChanged` variant, emits it alongside `TitleChanged` when the buffer's file handle changes, and adds it to `should_serialize()`. Since `Editor::serialize()` already reads the current path from the buffer at call time, this naturally writes the new path to the DB. Closes #51629 ## How to Review Three files edited: - `editor.rs`: splits `FileHandleChanged` into its own arm and emits the new event variant - `items.rs`: adds `FileHandleChanged` to `should_serialize` - `items.rs` (test): `test_file_handle_changed_on_rename` does a full rename via `Project::rename_entry` and asserts the event fires and the buffer path updates ## 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 Release Notes: - Fixed renamed files being reopened with their old path after a restart **Important remark :** This pull request is a follow-up on the review of @SomeoneToIgnore on this pull request, https://github.com/zed-industries/zed/pull/51717, which was inadvertently closed because I mistakenly deleted my previous fork of the zed repo, sorry for any inconvenience caused by this Manual test video below : [Screencast from 2026-03-16 23-28-46.webm](https://github.com/user-attachments/assets/ff2e3259-ae26-4655-83b8-f693e84306d2)
saberoueslati created
e613b2c
tab_switcher: Keep tab switcher open when closing last tab in active pane (#53279)
## Context Closes #53252 When using `ToggleAll` to open the tab switcher and then closing the last tab in the currently active pane via `CloseSelectedItem`, the tab switcher would unexpectedly dismiss. Closing tabs from an inactive pane worked correctly. **Root cause:** `force_remove_pane` in `Workspace` unconditionally calls `window.focus(fallback_pane)` when the active pane is removed. This focus change causes the tab switcher picker's editor to receive a `Blurred` event, which triggers `Picker::cancel` β `delegate.dismissed` β `DismissEvent`, dismissing the modal. **Fix:** When a modal is active, skip the `window.focus` call and instead call `set_active_pane` directly. This keeps the active pane pointer up to date without stealing focus from the modal. Video of manual test after fix : [Screencast from 2026-04-07 00-24-56.webm](https://github.com/user-attachments/assets/eeb74313-1713-48db-8421-db740ef7a7b2) ## How to Review - `crates/workspace/src/workspace.rs` : In `force_remove_pane`, when the removed pane was the active pane, the fallback pane now only receives focus if no modal is currently open. Otherwise, `set_active_pane` is called directly, which updates `active_pane`, `last_active_center_pane`, and the status bar without touching window focus. - `crates/tab_switcher/src/tab_switcher_tests.rs` : New test `test_toggle_all_stays_open_after_closing_last_tab_in_active_pane` reproduces the issue: two panes each with one file, the active pane's tab is closed via `CloseSelectedItem`, and the test asserts the tab switcher remains open with the other file still listed. ## 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 - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes - Fixed tab switcher dismissing when closing the last tab in the active pane
saberoueslati created
d3d8f15
ep: Send edit prediction mode in prediction request (#53812)
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 ...
Ben Kunkle created
1a6c2ae
Prefer Ollama configured model context length over model architecture context length (#53543)
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 Fixes calculation of Ollama model context length. Now prefers num_ctx model configuration over model architecture context length the same way Ollama does. Closes #42340 Release Notes: - Fix calculation of Ollama model context length
MarekMalevic created
a30bc61
Delete worktree directory before git metadata cleanup during archive (#53959)
When archiving a thread's linked worktree, `git worktree remove` can fail to delete the working directory while still removing the admin metadata in `.git/worktrees/<name>`. This leaves an orphaned folder on disk that no longer appears in `git worktree list`. ## Fix Delete the directory ourselves first with `std::fs::remove_dir_all`, then call `git worktree remove --force` to clean up only the admin entry. Git already handles the case where the working tree is already gone (since [git/git@ee6763a](https://github.com/git/git/commit/ee6763af0a3b97225803c6c908a29de40336cf38)). Also fixes `FakeGitRepository::remove_worktree` to handle a missing working tree directory (matching real git behavior) by scanning `.git/worktrees/` entries when the `.git` pointer file can't be read. Release Notes: - Fixed archiving an agent thread sometimes leaving the worktree folder on disk even though the git worktree was removed.
Richard Feldman created
848c3da
docs: Fix stale MCP extension links (#53946)
This fixes #53740. A few MCP docs links were still pointing at old extension slugs, so they led to dead pages. This updates those links to the current canonical slugs. Release Notes: - N/A
Hamza Paracha created