Commit log

b04cdcc Bump to 0.233.5 for @eholk

zed-zippy[bot] created

86fce66 Cherry picks for v0.233.x preview release (#54439)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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)

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

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

2ea5644 Simplify draft threads (#53940)

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:

- 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)

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

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

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

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

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

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

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

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

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

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

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

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)

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

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