Cherry picks for v0.233.x preview release#54368
Merged
Conversation
Remove the `DEFAULT_THREADS_SHOWN` limit and the View More / Collapse row from the sidebar thread list. When a project group is expanded, all of its threads are now shown. Fold/unfold of project group headers is preserved. - Remove `ListEntry::ViewMore` variant and `render_view_more` - Remove `DEFAULT_THREADS_SHOWN`, `group_extra_batches`, `set_group_visible_thread_count`, `expand/collapse_thread_group` - Remove `visible_thread_count` from `ProjectGroupState`, `SerializedProjectGroupState`, `ProjectGroup`, and persistence - Remove `ShowMoreThreads` / `ShowFewerThreads` actions and vim keybindings cc @danilo-leal Release Notes: - N/A (cherry picked from commit 3b2c12a)
…53998) This fixes a but that @ConradIrwin noticed where the flexible docks widths are weirdly dependent on the width of the active pane. Release Notes: - Fixed a bug where flexible docks resized incorrectly in certain cases. - Fixed an issue where resizing a flexible-width panel in the left dock would also resize fixed-width panels. (cherry picked from commit 86725ae)
…#54006) The `worktree_receivers` and `worktree_directory_setting` were pre computed as `Option`s before the async block, then unwrapped with `expect` inside the match arm that always had them set. Move the fetching directly into the `WorktreeCreationArgs::New` arm so the values are never optional, replacing the panicking expects with error propagation via `?`. The expects were guaranteed to never panic because the `Some` codepath used the same branching logic of the unwrap codepath later on. This change is just for future maintainability though. Self-Review Checklist: - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content 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 or Added/Fixed/Improved ... (cherry picked from commit bf25cb1)
- Adds a status toast to the announcement banner for surfacing the layout revert option - Removes the agent panel banner A good chunk of the diff here was because I touched up the status toast component API a little bit. Release Notes: - N/A (cherry picked from commit 74de476)
- Don't ever swap to the ellipsis menu with the close icon button; we now always have it - Promote the "focus the last workspace" feature through the ellipsis menu - Add a unified tooltip for the thread item to show relevant thread metadata - Use a different icon for accessing the now "all threads" view - Simplifies how we display archived threads - Bonus: Don't display the "open in new window" button in currently active worktrees (in dedicated picker) - Bonus: Use the "main worktree" label for whenever we're mentioning the original worktree Release Notes: - N/A (cherry picked from commit d066ff0)
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 (cherry picked from commit e585523)
This PR adds some adjustments to the thread item component so metadata labels (project, worktree, and branch names) properly show up and truncate in different places, as well as fixes the thread switcher by making hover auto-select the item, making it more consistent with the regular tab switcher. We still have to figure out how to make the modal dismiss on click, though; that's pending. Ended up also cleaning up the thread item's tooltip a bit, and tweaking the preview examples we have for it. Release Notes: - Agent: Fixed worktree and branch labels not showing up in the thread switcher. - Agent: Fixed the thread switcher not selecting on hover. (cherry picked from commit edb0211)
This renames the Archive view to Thread History in all user-facing surfaces. The concept of archiving a thread (the verb/state) remains unchanged — only the view that lists all threads is renamed, since it shows both active and archived entries. ## Changes - Rename `ViewAllThreads` action → `ToggleThreadHistory` - Context-sensitive tooltip: "Show Thread History" / "Hide Thread History" - Update action doc comment to reference "history" instead of "archive view" - Telemetry event: `Thread History Viewed` - `SerializedSidebarView::Archive` → `History` (with `#[serde(alias = "Archive")]` for backward compat) - Add a Lucide-based clock icon adapted to 16×16 / 1.2px stroke - Switch the history toggle button to use the new clock icon - Update all three platform keymaps cc @danilo-leal Release Notes: - Renamed the threads Archive view to Thread History and updated its icon to a clock. --------- Co-authored-by: Danilo Leal <daniloleal09@gmail.com> (cherry picked from commit 3dfbfc8)
Reimplements #36722 while fixing the race that required the revert in #36932. When no default model is configured, this picks an environment fallback by authenticating all providers. It always prefers the Zed cloud provider when it's authenticated, and waits for its models to load before picking another provider as the fallback, so we don't flicker from Zed models to Anthropic while sign-in is in flight. The fallback is recomputed whenever provider state changes (via `ProviderStateChanged`/`AddedProvider`/`RemovedProvider` events), so the selection becomes correct as soon as cloud models arrive. ### What changed vs. the original PR - `language_models::init` now owns `authenticate_all_providers` (previously done in `LanguageModelPickerDelegate` and `agent`'s `LanguageModels`). - After all authentications settle, and on any subsequent provider state change, `update_environment_fallback_model` recomputes the fallback. - The fallback logic prefers Zed cloud: if the cloud provider is authenticated, only use it (waiting for its models to load). Otherwise, fall through to the first authenticated provider with a default or recommended model. - `LanguageModelRegistry::default_model()` falls back to `environment_fallback_model` when no explicit default is set. - Existing `Thread`s that are empty are updated to the new default when `DefaultModelChanged` fires, so a blank thread started before sign-in switches to Zed models once the user signs in. Release Notes: - agent: Automatically select a model when there's no selected model or configured default (cherry picked from commit e92a40a)
…#54128) Fixes a bug where we weren't properly recording the last active workspace to power the cmd-click interaction in the sidebar's header. This PR introduces a field in the sidebar struct for that, allowing to store that value and to come back to it when clicking on the header, which is the single caller of the function introduced here. Release Notes: - Agent: Fixed a bug where cmd-clicking on the project header wouldn't actually take you to the last active workspace. (cherry picked from commit 9fbe317)
- Ensures the activity bar properly reacts to the shrinking of the agent panel's width - Removes horizontal scroll from plan entries and instead add a tooltip to display the full content when not fully visible Release Notes: - N/A (cherry picked from commit 2c00c97)
This is a follow up to: #54202 `thread_worktree_archive.rs` had its own walk-up-and-remove-empty-parents pass that ran after archiving a Zed managed git worktree. It duplicated logic that #54202 moved into `Repository::remove_worktree` (which also adds remote support for this) This PR deletes the dead code path and its associated tests. Self-Review Checklist: - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Closes #ISSUE Release Notes: - N/A (cherry picked from commit 513ffaf)
…54207) This adds a list of open workspaces to the project group dropdown menu, to make sure it's possible to understand what workspaces are open, might be running language servers, etc. It also allows you to close a specific workspace. Single folder project: <img width="229" height="170" alt="Screenshot 2026-04-17 at 4 13 39 PM" src="https://github.com/user-attachments/assets/86fca86a-73f1-4295-97b0-e97951102139" /> Multi folder project: <img width="381" height="193" alt="Screenshot 2026-04-17 at 2 26 14 PM" src="https://github.com/user-attachments/assets/b3c0c299-adf9-45d1-a314-feee8a993ea8" /> Release Notes: - N/A (cherry picked from commit 34ae8bd)
This PR revamps our feature flag system, to enable richer iteration. Feature flags can now: - Support enum values, for richer configuration - Be manually set via the settings file - Be manually set via the settings UI This PR also adds a feature flag to demonstrate this behavior, a `agent-thread-worktree-label`, which controls which how the worktree tag UI displays. 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 (cherry picked from commit ec9be5c)
(cherry picked from commit c95b41c)
This is just a refinement given it's pretty common for menus under ellipsis icon buttons to also open as a context-menu through the mouse's right-button click. This should make it slightly more convenient to interact with this menu. Release Notes: - N/A (cherry picked from commit 4fbac78)
Follow up to #52730. This PR adds a boolean setting `limit_content_width` in the Agent Panel settings that allows turning off the content max-width entirely, which was added for better readability. We had a handful of requests for it, so it feels fair. <img width="500" alt="Screenshot 2026-04-20 at 8 57@2x" src="https://github.com/user-attachments/assets/d2540b35-3fa8-4424-895d-dc499ac4839c" /> Release Notes: - Agent: Added a new `limit_content_width` setting in the agent panel that allows turning off the content max-width limit. (cherry picked from commit 10cf73f)
This PR adds support for rendering **Netpbm** image formats (`.pbm`, `.ppm`, `.pgm`) within Zed's built-in image viewer. These formats are particularly useful for projects that want minimal external dependencies, a common scenario in academic environments and low-level graphics programming. Since the underlying `image` crate and `GPUI` already provide support for these codecs, this change explicitly exposes the `Pnm` variant within `gpui::ImageFormat` by mapping it to `image::ImageFormat::Pnm`. ## Screenshots/Examples Below is an example of `.pbm`, `.ppm`, and `.pgm` files being rendered correctly in the image preview (images taken from https://filesamples.com): <img width="1917" height="1012" alt="pnm_example" src="https://github.com/user-attachments/assets/0056133f-908c-4c91-ba9d-53aef0657b05" /> Release Notes: - Added support for PNM image previews (`.pbm`, `.ppm`, `.pgm`). (cherry picked from commit 4d78f26)
There were a few places where you could trigger generation without causing the `interacted_at` field to be set. Also renames `message_sent_or_queued` to `interacted`, to be consistent with the field on `ThreadMetadata` Release Notes: - N/A or Added/Fixed/Improved ... (cherry picked from commit 9ba6a32)
…ttings (#54318) Closes #54313 **Before:** - Favoriting a model only stored `provider`, `model`, and hardcoded `enable_thinking` to `false`. - Selecting a favorited model would not restore your preferred `enable_thinking`, `effort`, or `speed` settings. This means that if you'd like to use, say, GPT 5.4 your favorite model on `xhigh` effort every single time, switching to it would set effort to `medium` (the default for the model) instead. **After:** - Favoriting a model captures your current `enable_thinking`, `effort`, and `speed` when it matches the currently-selected model. Otherwise, it falls back to the model's own defaults, i.e. thinking-capable models are no longer favorited with `enable_thinking` forced to `false`. - Selecting a favorited model applies its stored thinking / effort / speed. - Toggling thinking, changing effort, or toggling fast mode on a favorited model updates the favorite entry in settings (along with the existing `default_model` setting), so the preference doesn't drift. Release Notes: - Agent favorite models now remember and restore per-model thinking, effort level, and fast mode preferences. (cherry picked from commit 68da244)
This changes the action for archiving threads in the main sidebar view from `RemoveSelectedThread` to `ArchiveSelectedThread`. It has the same key binding as before: `shift-backspace`. I also added `ctrl-backspace` as a binding for deleting archived threads in the history view. Release Notes: - N/A (cherry picked from commit 4919ca4)
…th exists (#54353) If the path doesn't exist we fallback to the main worktree path. This handles the edge case where a git linked worktree is deleted on a remote machine, and a user tries to open a thread based on that. We fallback to the main git worktree in this case, if that doesn't exist the project will open in an error state (empty workspace) like we already do 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 (cherry picked from commit 4b48819)
…54365) Fixes two problems: * We were not preserving scroll position in the thread history view when the thread metadata store updated * We were updating thread metadata on every single chunk streamed by the agent, even though the content of the thread does not affect its metadata. Release Notes: - N/A (cherry picked from commit aa5293d)
maxbrunsfeld
approved these changes
Apr 21, 2026
eholk
added a commit
that referenced
this pull request
Apr 21, 2026
…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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.show thread metadataaction #54314 — agent_ui: Addshow thread metadataactioninteracted_at#54320 — sidebar: Consistently setinteracted_atArchiveSelectedThreadaction for archiving threadsConflict resolution notes
v0.233.x,sidebar_tests.rsstill containedtest_search_finds_threads_hidden_behind_view_more, which exercised behavior sidebar: Remove View More batched thread expansion #53956 removes. Deleted the test along with the rest of the View More functionality; no changes to the substance of the cherry-picked patch.mainwith net zero change. Sincev0.233.xalready has sidebar: Fix sidebar thread times #54173 ("sidebar: Fix sidebar thread times") applied on top of the pre-sidebar: Refactor thread time storage #53982 state, pulling both in would be churn with no end-state difference.crates/ui/src/components/ai/thread_item.rs: accepted incoming side for theworktree_tooltip_titleremoval and converted the patch'smatch (wt.kind, wt.branch_name)structure back tov0.233.x'smatch wt.kindstructure (the Hide branch name for main worktree threads in sidebar #54067 tuple match isn't on this branch). Dropped thelinked_worktree_countlocal after it became unused.crates/sidebar/src/sidebar.rs: accepted incoming side for the project group menu restructure. This removes theshow_multi_project_entriesgate around the "Remove Project" entry that sidebar: Add some UI adjustments #54025 added — matchingmain's state at Add list of open workspaces to the project group menu in the sidebar #54207's parent.show thread metadataaction #54314 —crates/agent_ui/src/agent_panel.rs: merged both sides of two import conflicts, addingShowAllSidebarThreadMetadataandShowThreadMetadataalongside theCreateWorktree/NewWorktreeBranchTarget/SwitchWorktree/ToggleWorktreeSelectorimports that remain onv0.233.x(Move the worktree picker to the title bar + make it always visible #54183 isn't here). Also merged theanyhowandchronouselines.v0.233.x.Release Notes:
limit_content_widthsetting in the agent panel that allows turning off the content max-width limit. (#54316).pbm,.ppm,.pgm). (#54256)