Cherry-picked Restore git panel header (#26354)
Let's play around with it. This should not be added to tomorrow's
preview.
Release Notes:
- Git Beta: Added a panel header with an open diff and stage/unstage all
buttons.
Co-authored-by: Mikayla Maki <mikayla@zed.dev>
Cherry-picked git_ui: Branch picker improvements (#26287)
- Truncate branch names based on the width of the picker
- Use a footer for "Create branch" instead of a picker entry
Still to do:
- [x] Select the footer button when no matches and run the create logic
on `enter`
- [x] Make it possible to quickly select the footer button from the
keyboard when there are matches
Release Notes:
- Git Beta: Removed limitation that made it impossible to create a
branch from the branch picker when it too closely resembled an existing
branch name
Co-authored-by: Cole Miller <cole@zed.dev>
gcp-cherry-pick-bot[bot]
and
Cole Miller
created
4144a2e
git: Disable commit message generation when commit not possible (#26329)
Click to expand commit body
## Issue:
- `Generate Commit Message` will generate a random message if there are
no changes.
<img width="614" alt="image"
src="https://github.com/user-attachments/assets/c16cadac-01af-47c0-a2db-a5bbf62f84bb"
/>
## After Fixed:
- `Generate Commit Message` will be disabled if commit is not possible
<img width="610" alt="image"
src="https://github.com/user-attachments/assets/5ea9ca70-6fa3-4144-ab4e-be7a986d5496"
/>
## Release Notes:
- Fixed: Disable commit message generation when commit is not possible
Richard Hao
created
1eff87c
Follow-up fixes for recent multi buffer optimizations (#26345)
Click to expand commit body
I realized that the optimization broke multi buffer syncing after buffer
reparses.
Release Notes:
- N/A
You may need to zoom in hard to see this 😅 but the main addition of this
PR is just ensuring there's also horizontal border instead of just on
the bottom. Also added some box-shadow here to make it pop out of the
diff a bit more.
| Before | After |
|--------|--------|
| 
| 
|
Release Notes:
- N/A
Danilo Leal
created
ea2df99
Fix performance bottlenecks when multi buffers have huge numbers of buffers (#26308)
Click to expand commit body
This is motivated by trying to make the Project Diff view usable with
huge Git change sets.
Release Notes:
- Improved performance of rendering multibuffers with very large numbers
of buffers
Release Notes:
- Git Beta: added `git:Add` as an alias for the existing `git::Diff`
- Git Beta: Fixed a bug where the 'generate commit message' keybinding
wasn't working.
- Git Beta: Made the empty project diff state a little more helpful with
a button to push, and a button to close the item.
This gives us _very_ rudimentary support for `git switch` and `git
checkout` now, by making them aliases for our existing `git::branch`
call.
Release Notes:
- Git Beta: Added `git::Switch` and `git::CheckoutBranch` as aliases for
the existing `git::Branch`
Mikayla Maki
created
4c455ca
Improve when the commit suggestions would show (#26313)
Click to expand commit body
Release Notes:
- Git Beta: Fixed a few bugs where the suggested commit text wouldn't
show in certain cases, or would update slowly.
Mikayla Maki
created
270e47c
git: Fix errors not showing in the toast notification (#26303)
Click to expand commit body
Release Notes:
- Resolved an issue where error messages from Git were not being
displayed in toast notifications.
<img width="1702" alt="Screenshot 2025-03-08 at 1 11 30 AM"
src="https://github.com/user-attachments/assets/a46517db-4e64-4c5e-a64e-96e820ca9aec"
/>
Kiran_Peraka
created
c075dd5
Change the default staging and unstaging state display (#26299)
Click to expand commit body
This adds a setting for the "border" hunk display mode, as discussed,
and makes it the default.
Here's how it looks in light mode:
<img width="1512" alt="Screenshot 2025-03-07 at 11 39 25 AM"
src="https://github.com/user-attachments/assets/a934faa3-ec69-47e1-ad46-535e48b98e9f"
/>
And dark mode:
<img width="1511" alt="Screenshot 2025-03-07 at 11 39 56 AM"
src="https://github.com/user-attachments/assets/43c9afd1-22bb-4bd8-96ce-82702a6cbc80"
/>
Release Notes:
- Git Beta: Adjusted the default hunk styling for staged and unstaged
changes
Co-authored-by: Conrad <conrad@zed.dev>
Co-authored-by: Nate <nate@zed.dev>
Mikayla Maki
,
Conrad
, and
Nate
created
3129e3d
Remove worktree and project notifies (#26244)
Click to expand commit body
This reduces the number of multibuffer syncs from 100,000 to 20,000.
Before this change each editor individually observed the project, so
literally any project change was amplified by the number of editors you
had open.
Now editors listen to their buffers instead of the project, and other
users of `cx.observe` on the project have been updated to use specific
events to reduce churn.
Follow up to #26237
Release Notes:
- Improved performance of Zed in large repos with lots of file system
events.
---------
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
(cherry picked from commit 80fb88520f0c52b806ac963dca6a39bead1f49aa)
This reduces the number of multibuffer syncs when starting the editor
with 80
files open in the Zed repo from 10,000,000 to 100,000 by avoiding
O(n**2)
dirtyness checks.
Release Notes:
- Fixed a beachball when restarting in a large repo with a large number
open files
Conrad Irwin
created
53ff7ca
worktree: Add some info-level logging about added and removed repository entries (cherry-pick #26291) (#26292)
Click to expand commit body
Cherry-picked worktree: Add some info-level logging about added and
removed repository entries (#26291)
Trying to track down a user's reported issue with parent repositories
not getting picked up.
Release Notes:
- N/A
Co-authored-by: Cole Miller <cole@zed.dev>
e29fb61
git_ui: Try to prompt the model out of including the diff output (#26281)
Click to expand commit body
This PR updates the prompt for generating commit messages to tell the
model not to include the raw diff output in the message.
Release Notes:
- N/A
Marshall Bowers
created
9db97b8
Fix inline diagnostics in the project diff (#26275)
Click to expand commit body
https://github.com/zed-industries/zed/blob/205f9a9f0391da47a87cac45a41f67d2a23f5a95/crates/editor/src/element.rs#L1643
Due to the snippet above, Zed is supposed to have `row` larger or equal
to `start_row` here:
https://github.com/zed-industries/zed/blob/205f9a9f0391da47a87cac45a41f67d2a23f5a95/crates/editor/src/element.rs#L1694
yet the panic were reported when clicking in the project diff.
That project diff has a lot of highlighting happening already, so the PR
disables inline diagnostics within a git diff view.
Release Notes:
- N/A
Kirill Bulatov
created
871bca5
git: Fix git panel not using default width (#26220)
Click to expand commit body
Closes #26062
Removing the width here causes zed to use the default value (inside
default settings) after restart like other panels.
Release Notes:
- Fixed issue where git panel wasn't using default width after restart
Co-authored-by: Mikayla Maki <mikayla@zed.dev>
loczek
and
Mikayla Maki
created
6dde040
Add staged variants of the hunk_style controls (#26259)
Click to expand commit body
This PR adds a few more hunk style settings that flips the emphasis.
Normally, the concept at Zed has been that the project diff should
emphasize what's going into the commit. However, this leads to a problem
where the default state of all diff hunks are in the non-emphasized
state, making them hard to see and interact with. Especially on light
themes. This PR is an experiment in flipping the emphasis states. Now
the project diff is more like a queue of work, with the next "job" (hunk
to be evaluated) emphasized, and the "completed" (staged) hunks
deemphasized. This fixes the default state issue but is a big jump from
how we've been thinking about it. So here we can try it out and see how
it feels :)
Release Notes:
- Git Beta: Added hunk style settings to emphasize the unstaged state,
rather than the staged state.
https://github.com/user-attachments/assets/b16e32e6-46c6-41dc-ab68-1824d288c8c2
This PR adds the first part of our planned extended notification system:
StatusToasts.
It also makes various updates to ComponentPreview and adds a `Styled`
extension in `ui::style::animation` to make it easier to animate styled
elements.
_**Note**: We will be very, very selective with what elements are
allowed to be animated in Zed. Assume PRs adding animation to elements
will all need to be manually signed off on by a designer._
## Status Toast

These are designed to be used for notifying about things that don't
require an action to be taken or don't need to be triaged. They are
designed to be ignorable, and dismiss themselves automatically after a
set time.
They can optionally include a single action.
Example: When the user enables Vim Mode, that action might let them undo
enabling it.

Status Toasts should _not_ be used when an action is required, or for
any binary choice.
If the user must provide some input, this isn't the right component!
### Out of scope
- Toasts should fade over a short time (like AnimationDuration::Fast or
Instant) when dismissed
- We should visually show when the toast will dismiss. We'll need to
pipe the `duration_remaining` from the toast layer -> ActiveToast to do
this.
- Dismiss any active toast if another notification kind is created, like
a Notification or Alert.
Release Notes:
- N/A
---------
Co-authored-by: Cole Miller <m@cole-miller.net>
Nate Butler
and
Cole Miller
created
75f7def
Add event to track LLM-generated commit messages (#26245)
Click to expand commit body
Release Notes:
- N/A
Joseph T. Lyons
created
9195cd5
git_ui: Add support for generating commit messages with an LLM (#26227)
Click to expand commit body
This PR finishes up the support for generating commit messages using an
LLM.
We're shelling out to `git diff` to get the diff text, as it seemed more
efficient than attempting to reconstruct the diff ourselves from our
internal Git state.
https://github.com/user-attachments/assets/9bcf30a7-7a08-4f49-a753-72a5d954bddd
Release Notes:
- Git Beta: Added support for generating commit messages using a
language model.
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Marshall Bowers
and
Conrad Irwin
created
f0be142
git_ui: Scaffold out support for generating commit messages with an LLM (#26161)
Click to expand commit body
This PR adds the rough structure needed to support generating commit
messages using an LLM.
This functionality is not yet surfaced to the user.
This is the current state, if you tweak the source to show the button:
https://github.com/user-attachments/assets/66d1fbc4-09f3-4277-84f4-e9c9ebab274c
Release Notes:
- N/A
Marshall Bowers
created
0dec6fb
Cherry-pick: Worktree paths in git panel, take 2 (#26047) (#26252)
Click to expand commit body
Release Notes:
- Git Beta: updated the git panel to use worktree-relative paths and
support opening files outside the active repository's worktree
Cole Miller
created
4f8a094
Fix early return when reaching end excerpt in `lift_buffer_metadata` (#26253)
Click to expand commit body
Release Notes:
- Fixed a bug causing slowness when viewing multi buffers with lots of
excerpts
Max Brunsfeld
created
43c8106
Disable restore hunk control for created files (cherry-pick #25841) (#26251)
Click to expand commit body
Cherry-picked Disable restore hunk control for created files (#25841)
Release Notes:
- Git Beta: disable hunk restore action and button for created files
Co-authored-by: Cole Miller <cole@zed.dev>
gcp-cherry-pick-bot[bot]
and
Cole Miller
created
b7b700e
language_models: Remove `.unwrap`s in Bedrock provider (cherry-pick #26238) (#26241)
Click to expand commit body
Cherry-picked language_models: Remove `.unwrap`s in Bedrock provider
(#26238)
This PR removes a number of `.unwrap`s in the Bedrock provider.
We must not `.unwrap` in situations where it is not provably safe to do
so, which it was not in any of these cases.
Release Notes:
- Fixed some potential panics in the AWS Bedrock model provider.
Co-authored-by: Marshall Bowers <git@maxdeviant.com>
gcp-cherry-pick-bot[bot]
and
Marshall Bowers
created
661e36f
Clear pending staged/unstaged diff hunks hunks when writing to the git index fails (#26173)
Click to expand commit body
Release Notes:
- Git Beta: Fixed a bug where discarding a hunk in the project diff view
performed two concurrent saves of the buffer.
- Git Beta: Fixed an issue where diff hunks appeared in the wrong state
after failing to write to the git index.
Adds a prompt when clicking the uncommit button when the current commit
is already present on a remote branch:

Release Notes:
- N/A
---------
Co-authored-by: Conrad <conrad@zed.dev>
Split Windows GHA CI job into `windows_clippy` and `windows_tests`
(`cargo test` and `cargo build`). `windows_clippy` will continue to run
on every PR commit, but `windows_tests` will only be run on main. Tag a
PR `windows` if you would like to run windows tests.
Added a call to the Azure metadata service to detect the Azure hardware
used by the GitHub hosted Windows runners. This is temporary and I'll
remove once I've gathered some data (adds 5-15secs to Windows CI times)
Release Notes:
- N/A
---------
Co-authored-by: Mikayla Maki <mikayla@zed.dev>
…m_item()
Closes #ISSUE
Release Notes:
- git: Fixed repository selector being too narrow
Conrad Irwin
created
090c38d
Fix git branches in non-active repository (#26148)
Click to expand commit body
Release Notes:
- Git Beta: Fixed a bug where the branch selector would only show for
the first repository opened.
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Co-authored-by: Richard Feldman <oss@rtfeldman.com>
Mikayla Maki
,
Conrad Irwin
, and
Richard Feldman
created
Cherry-picked Fix panic in commit editor selections syncing (#26186)
Closes #26183
Release Notes:
- Git Beta: Fixed a panic when selecting text in one of the commit
message editors
Co-authored-by: Cole Miller <cole@zed.dev>
gcp-cherry-pick-bot[bot]
and
Cole Miller
created
da895a6
git: Add CHERRY_PICK_HEAD to the list of merge heads (cherry-pick #26145) (#26168)
Click to expand commit body
Cherry-picked git: Add CHERRY_PICK_HEAD to the list of merge heads
(#26145)
Attempt to fix an issue where conflicts from a cherry-pick don't get
cleared out of the git panel after being resolved.
Release Notes:
- Git Beta: Fixed resolution of conflicts from cherry-picks not being
reflected in the git panel
Co-authored-by: Cole Miller <cole@zed.dev>
gcp-cherry-pick-bot[bot]
and
Cole Miller
created
2309721
Fix panic when expanding a deletion hunk with blame open (cherry-pick #26130) (#26142)
Click to expand commit body
Cherry-picked Fix panic when expanding a deletion hunk with blame open
(#26130)
Closes #26118
Release Notes:
- Fixed a panic when expanding diff hunks while git blame is open
Co-authored-by: Cole Miller <cole@zed.dev>
This PR fixes the language model selector.
I tried to piece together the state prior to #25697 (the state it was in
at 11838cf89e0b96531f90f22432b3df6859587871) while retaining unrelated
changes that happened since then.
Release Notes:
- Fixed an issue where language models would not be authenticated until
after the model selector was opened (Preview only).