Commit log

ac209f1 zed 0.177.7

Joseph T. Lyons created

44a43c7 Address out-of-bounds panic in inline completion button (cherry-pick #26394) (#26440)

Click to expand commit body
Cherry-picked Address out-of-bounds panic in inline completion button
(#26394)

Closes #26350

Release Notes:

- Git Beta: Fixed a panic that could occur when using the project diff

Co-authored-by: Cole Miller <cole@zed.dev>

gcp-cherry-pick-bot[bot] and Cole Miller created

74c1ec5 Show a disabled stage all button for no entries (cherry-pick #26436) (#26437)

Click to expand commit body
Cherry-picked Show a disabled stage all button for no entries (#26436)

Closes #ISSUE

Release Notes:

- N/A

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

gcp-cherry-pick-bot[bot] and Conrad Irwin created

61187a9 Fix enter binding in git panel's commit editor on Linux (cherry-pick #26427) (#26438)

Click to expand commit body
Cherry-picked Fix enter binding in git panel's commit editor on Linux
(#26427)

Closes #26110 

Release Notes:

- Git Beta: fixed being unable to enter newline in the git panel's
commit editor on Linux

Co-authored-by: Cole Miller <cole@zed.dev>

gcp-cherry-pick-bot[bot] and Cole Miller created

2da767d Go back to "create branch" in the list (#26433)

Click to expand commit body
Closes #ISSUE

Release Notes:

- N/A

Conrad Irwin created

58bb9f3 Git commit modal branch list (cherry-pick #26417) (#26435)

Click to expand commit body
Cherry-picked Git commit modal branch list (#26417)

Closes #26273

Release Notes:

- git: Fixes opening the branch selector in the commit modal with
cmd-option-b
- git: Truncates the branch selector in the commit modal

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

gcp-cherry-pick-bot[bot] and Conrad Irwin created

8c3585d git_ui: Show more information in the branch picker (cherry-pick #25359) (#26432)

Click to expand commit body
Cherry-picked git_ui: Show more information in the branch picker
(#25359)

Final product:

![CleanShot 2025-02-26 at 9  08

17@2x](https://github.com/user-attachments/assets/e5db1932-b2c6-4b32-ab67-ef0a0d19f022)

Release Notes:

- Added more information about Git branches to the branch picker.

---------

Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Co-authored-by: Marshall Bowers <git@maxdeviant.com>
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>

Co-authored-by: Angelk90 <20476002+Angelk90@users.noreply.github.com>
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Co-authored-by: Marshall Bowers <git@maxdeviant.com>
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>

gcp-cherry-pick-bot[bot] , Angelk90 , Danilo Leal , Marshall Bowers , and Conrad Irwin created

1365247 Use current upstream for permalink to line (cherry-pick #26398) (#26429)

Click to expand commit body
Cherry-picked Use current upstream for permalink to line (#26398)

Release Notes:

- git: Copy permalink to line now uses the upstream of the current
branch instead of "origin"

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

gcp-cherry-pick-bot[bot] and Conrad Irwin created

f4028ef Unwind deprecated permalinks code (cherry-pick #26395) (#26426)

Click to expand commit body
Cherry-picked Unwind deprecated permalinks code (#26395)

Release Notes:

- N/A

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

gcp-cherry-pick-bot[bot] and Conrad Irwin created

7fa916a Fix race conditions in updating buffer diffs on git changes (#26409)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Cole Miller <m@cole-miller.net>

Max Brunsfeld and Cole Miller created

198ecff Fix panic opening branch picker in commit modal (cherry-pick #26407) (#26413)

Click to expand commit body
Cherry-picked Fix panic opening branch picker in commit modal (#26407)

Closes #ISSUE

Release Notes:

- N/A

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

gcp-cherry-pick-bot[bot] and Conrad Irwin created

a4b9b5d Git commit modal command (cherry-pick #26405) (#26411)

Click to expand commit body
Cherry-picked Git commit modal command (#26405)

Fix KeyBinding::for_action() to use the active focus handle instead of
what was
rendered last.

This makes the UI consistently chose the cmd-escape binding for close
(because escape in the editor is editor::Cancel?),
so force it to be "escape"

Release Notes:

- git: Fixed escape tooltip in commit modal

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

gcp-cherry-pick-bot[bot] and Conrad Irwin created

633df53 Add a missing notify when updating the project diff (cherry-pick #26396) (#26400)

Click to expand commit body
Cherry-picked Add a missing notify when updating the project diff
(#26396)

Closes #ISSUE

Release Notes:

- Git Beta: Fixed a bug that caused the project diff not to update in
response to git-related events

Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>

Co-authored-by: Cole Miller <cole@zed.dev>
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>

gcp-cherry-pick-bot[bot] , Cole Miller , and Max Brunsfeld created

790fb9e git_ui: Design Polish (#26361)

Click to expand commit body
Polish PR

- [ ] Horizontal scrollbar for git panel
- [ ] Allow shift clicking a checkbox in any section to stage the whole
section
- [ ] Clean up design of no changes/pending push state in panel
- [x] Ensure checkbox placeholder dot is centered in the checkbox
- [x] Improve spacing between elements in git panel entries
- [x] Update git branch icon to match branch selector text when disabled
- [x] Truncate last commit message less aggressively in panel
- [x] Clean up new panel header design
- [x] Remove `_background` version control keys (backgrounds are derived
from the foreground colors)

Before:

![CleanShot 2025-03-10 at 11 54
32@2x](https://github.com/user-attachments/assets/46b18f66-bb5c-435e-a0da-6cc931bd8a15)

After:

![CleanShot 2025-03-10 at 11 55
24@2x](https://github.com/user-attachments/assets/fcf688c7-b949-41a2-a7b8-1a198eb7fa4a)

Before:

![CleanShot 2025-03-10 at 12 02
14@2x](https://github.com/user-attachments/assets/1990f4b3-c2f0-4e02-89ad-211aaebb3821)

After:

![CleanShot 2025-03-10 at 12 02
53@2x](https://github.com/user-attachments/assets/9b1caf65-c48f-44c9-924b-484892fb543f)

Release Notes:

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

---------

Co-authored-by: Cole Miller <cole@zed.dev>
Co-authored-by: Cole Miller <m@cole-miller.net>
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>

Nate Butler , Cole Miller , Cole Miller , and Max Brunsfeld created

17c0113 Remove GitUiFeatureFlag and enable panel unconditionally (cherry-pick #26386) (#26392)

Click to expand commit body
Cherry-picked Remove GitUiFeatureFlag and enable panel unconditionally
(#26386)

Release Notes:

- git: Enable for everyone

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

gcp-cherry-pick-bot[bot] and Conrad Irwin created

cb8d667 Scroll project diff into view always (cherry-pick #26379) (#26387)

Click to expand commit body
Cherry-picked Scroll project diff into view always (#26379)

Closes #ISSUE

Release Notes:

- N/A

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

gcp-cherry-pick-bot[bot] and Conrad Irwin created

6d79434 Git keyboard shortcuts (#26374)

Click to expand commit body
Closes #26040

Release Notes:

- git: Add keyboard shortcuts (when the panel is open) for fetch `ctrl-g
ctrl-g`, pull `ctrl-g down`, push `ctrl-g up`, force-push `ctrl-g
shift-up`, open diff `ctrl-g d`

Conrad Irwin created

d474438 Restore git panel header (cherry-pick #26354) (#26380)

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

gcp-cherry-pick-bot[bot] and Mikayla Maki created

c21ab40 git: Pass project environment to git binary invocations (cherry-pick #26301) (#26373)

Click to expand commit body
Cherry-picked git: Pass project environment to git binary invocations
(#26301)

Closes #26213 

Release Notes:

- Git Beta: pass down environment variables from project to git
operations

Co-authored-by: Cole Miller <cole@zed.dev>

gcp-cherry-pick-bot[bot] and Cole Miller created

4b24ef3 zed 0.177.6

Joseph T. Lyons created

1d7ffff Remove redundant checks in `do_stage_or_unstage_and_next` (#26364)

Click to expand commit body
Release Notes:

- N/A

João Marcos created

44c93b0 git_ui: Branch picker improvements (cherry-pick #26287) (#26371)

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

Max Brunsfeld created

2599713 git: Refine diff hunk controls visuals (#26317)

Click to expand commit body
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 |
|--------|--------|
| ![CleanShot 2025-03-08 at 12  37
40@2x](https://github.com/user-attachments/assets/98e0329e-646f-4455-89fa-3f6ec1211361)
| ![CleanShot 2025-03-08 at 12  36
40@2x](https://github.com/user-attachments/assets/7f667e65-5b72-4156-b0ec-2b162eb76f2f)
|

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

Max Brunsfeld created

6c574fa Git UI papercuts (#26316)

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

Mikayla Maki created

783e239 Add git branch switching aliases (#26315)

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

Conrad Irwin and Max Brunsfeld created

dfbfcdf Track dirtyness per item (#26237)

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

gcp-cherry-pick-bot[bot] and Cole Miller created

0a391ab zed 0.177.5

Joseph T. Lyons created

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.

Mikayla Maki created

d6190db Restore co-author hiding (#26257)

Click to expand commit body
Release Notes:

- N/A

Mikayla Maki created

7365cac Improve the generate commit message design (#26233)

Click to expand commit body
[WIP]

Release Notes:

- N/A

---------

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

Marshall Bowers , Mikayla Maki , and Danilo Leal created

84f8b86 Fix paths on Windows in new test (#26255)

Click to expand commit body
Closes #ISSUE

Release Notes:

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

Cole Miller created

e53389f Disable restore hunk control for created files (#25841)

Click to expand commit body
Release Notes:

- Git Beta: disable hunk restore action and button for created files

Cole Miller created

12fb23b Add StatusToast & the ToastLayer (#26232)

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

![CleanShot 2025-03-06 at 14 15
52@2x](https://github.com/user-attachments/assets/b65d4661-f8d1-4e98-b9be-2c05cba1409f)

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.

![CleanShot 2025-03-06 at 14 18
34@2x](https://github.com/user-attachments/assets/eb6cb20e-c968-4f03-88a5-ecb6a8809150)

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