Commit log

b6fd06d project_panel: Make scroll to bottom to use the last visible entry (#25160)

Click to expand commit body
Closes #25159

Release Notes:

- Fixed project panel implementation of the `menu::SelectLast` action

PJ Tatlow created

ddec72e Better key-rendering for linux/windows (#25139)

Click to expand commit body
Release Notes:

- linux: Render keystrokes more consistently

Before (note the added extra vertical padding, the + instead of the -,
and the misalignment between the text and the icons)

<img width="354" alt="Screenshot 2025-02-18 at 23 17 57"
src="https://github.com/user-attachments/assets/924cf08f-8204-4503-8052-abaa7686e644"
/>

After (note the lack of those things):

<img width="322" alt="Screenshot 2025-02-18 at 23 15 48"
src="https://github.com/user-attachments/assets/5b20a6f2-757b-44d2-a888-f495523b688d"
/>


I still think we might want to go "vim-mode" always, because the capital
letters are pretty noisy, but that does mean the letters don't match
what's on the keyboard (though they *do* match the keyboard config
files)

<img width="312" alt="Screenshot 2025-02-18 at 23 16 59"
src="https://github.com/user-attachments/assets/cf6f150c-20bc-4492-adb9-fb5c5bdce351"
/>

Conrad Irwin created

119bd89 Remove language::markdown (#25136)

Click to expand commit body
The language::markdown crate had been superceded by markdown::Mardown.

After #25117, the only two remaining use-cases were rendering git commit
messages (which are arguably not really markdown) and the signature help
(which is definitely not markdown).

Updated the former to use the new markdown component, and the latter to
do syntax highlighting manually.

Release Notes:

- Allow selecting the commit message in git commits

Conrad Irwin created

686978d editor: Minimum scroll thumb size (#25162)

Click to expand commit body
Closes #22610

This PR fixes the invisible scroll thumb or very tiny scroll thumb when
viewing long or wide files.

The difference between `track_bounds` (imagine scrollbar total height)
and `thumb_size` is the remaining area, which maps to the total height
of the page for scrolling to work as expected. This is already accounted
for. That means we can adjust the thumb size as needed, and the
remaining height/width will be mapped correctly.

So, we can simply use define a minimum size for the thumb and handle
cases where the track bounds are smaller than the defined minimum size.
In such cases, the scrollbar will take up the full height/width of the
track bounds. This is handled mainly to avoid panics in extreme edge
cases. Practically, at such small heights/widths, users are unlikely to
attempt scrolling.

Before:


https://github.com/user-attachments/assets/cf2edf03-8b9a-4678-b3c6-9dcbd01e5db8

After:


https://github.com/user-attachments/assets/e9496a44-3e7d-4be7-b892-2762cccd9959

Release Notes:

- Fixed issue where scroll thumb was invisible or too small when viewing
long or wide files.

smit created

486e106 license detection: Include the UPL license (#25152)

Click to expand commit body
For projects such as https://github.com/roc-lang/roc that uses this
license.

Release Notes:

- N/A

Danilo Leal created

086f002 git_ui: Git panel polish (#25164)

Click to expand commit body
- Hides header when no active repo/no repo
- Entire commit editor now has i-beam cursor on hover
- Adds an icon to the project diff tab

Release Notes:

- N/A

Nate Butler created

c0c48d3 Revert "file_finder: Remove common segments of long paths in search results (#25049)" (#25163)

Click to expand commit body
This reverts commit 9ef0501853825db41e702c03ab398bf531a8bc1f due to a
panic.

```
{
  "thread": "main",
  "payload": "9 is not a valid char boundary in path \"crates/…/LiveKitBridge/\"",
  "location_data": {
    "file": "crates/file_finder/src/file_finder.rs",
    "line": 646
  }
}
```

Release Notes:

- N/A

Cole Miller created

f8770fe edit prediction: Refine subtle mode flag styles (#25157)

Click to expand commit body
There's still a tiny, 1px shadow being cast in the flag pole that I
didn't figure out yet how to fix it.


https://github.com/user-attachments/assets/714da320-5995-4bd2-a0dc-6c027b4d91eb

Release Notes:

- N/A

Danilo Leal created

044be72 popover_menu: Add docs to the `trigger_with_tooltip` method (#25158)

Click to expand commit body
Felt like this was relevant particularly as we're living with both
`trigger` and `trigger_with_tooltip`. At some point, I believe there
should be only one (`trigger_with_tooltip`) and that should be then
renamed to just `trigger` back again! We're supporting both for now just
for ease of migration/avoiding big changes.

Release Notes:

- N/A

Danilo Leal created

8b98b5c project: Fix doc comments for `NodeBinarySettings` (#25154)

Click to expand commit body
This PR fixes the doc comments on the `NodeBinarySettings` struct.

Release Notes:

- N/A

Marshall Bowers created

d034687 Bump Zed to v0.176 (#25153)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

d4b2e88 language: Fix incorrectly-formatted doc comment (#25151)

Click to expand commit body
This PR fixes an incorrectly-formatted doc comment in the
`BufferSnapshot` impl.

Release Notes:

- N/A

Marshall Bowers created

fb19db0 editor: Do not highlight selected text + Clear highlight preemptively when new selection is detected (#25149)

Click to expand commit body
When selecting text, it highlights all matching occurences along with
selected text itself. This causes highlight overlap, which looks bit
odd. This PR fixes it.

Bonus:

Context: We have an edge case (which we already cover) where we don’t
want to clear `SelectedTextHighlight` every time the selection changes.
This happens when you are dragging the selection across some word, if
you clear it directly on selection change, due to debounce wait, the
highlight take some time to appear, which causes flickering for the
user. We solve this by not clearing it directly but only clearing it
when a new selection is found. This avoids the flicker.

However, we also need to clear the selection even before the debounce
wait if we detect early on that the selection is different from previous
ones. Otherwise, the user will have to wait until the debounce time to
see it cleared on the screen.

The code for this is a little repetitive because we check the buffer
state both before and after the debounce. But this is necessary.

---
Before:

Notice overlapping corners and selected text is bit darker in this case.

![image](https://github.com/user-attachments/assets/ec371079-b513-4216-9f6e-73d1aff99250)

After:

![image](https://github.com/user-attachments/assets/0fb9cd58-5d4b-49e8-91cb-78999c3a54a8)

Release Notes:

- N/A

smit created

094430e Properly normalize completion labels with multi-byte characters (#25150)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/25142

Release Notes:

- Fixed panics on completion with multi-byte characters input

Kirill Bulatov created

d4414ef Fix link to the PHP extension (#25144)

Click to expand commit body
Fix broken links to [PHP
extensions](https://github.com/zed-extensions/php) from [the
documentation](https://zed.dev/docs/languages/php).

Release Notes:

- N/A

USAMI Kenta created

2274e88 Highlight regex in the project search input (#25147)

Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/25005

Project search also has regex search option, highlight it the same way
too.

Release Notes:

- N/A

Kirill Bulatov created

4841786 terminal: Handle shift+click selection (#25143)

Click to expand commit body
Closes #16951

Handle the case where you click on the terminal while pressing Shift. 

Instead of setting a new selection head, we simply update the selection
to that point. This allows you to repeatedly extend the selection to new
points by pressing Shift while preserving the original selection head.

Preview:

Selection works in direct terminal, but doesn't on Vim like program,
which is expected.


https://github.com/user-attachments/assets/e46987d8-a9a3-495d-8dd9-98d461317a8d


Release Notes:

- Added ability to extend selection with Shift + click in the terminal.

smit created

1fa105e docs: Fix selection highlight default value (#25134)

Click to expand commit body
Changed default debounce value in docs to match default settings.

Release Notes:

- N/A

smit created

043c4ed editor: Fix highlight selection panic (#25141)

Click to expand commit body
Use the latest selection state for highlighting instead of the state
before debounce.

Release Notes:

- N/A

smit created

e57b9e5 Ignore selections persistence for multi buffer editors (#25140)

Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/25083

Release Notes:

- N/A

Kirill Bulatov created

13da468 Fix for #25039 (#25138)

Click to expand commit body
Release Notes:

- vim: Fix crash in `ci{`

Conrad Irwin created

1678e3c Fix clicking on file links in editor (#25117)

Click to expand commit body
Closes #18641
Contributes: #13194

Release Notes:

- Open LSP documentation file links in Zed not the system opener
- Render completion documentation markdown consistently with
documentation markdown

Conrad Irwin created

ebbc6a9 Highlight `super` and `this` as keywords in JS/TS/TSX (#25135)

Click to expand commit body
Closes #24951

We were highlighting both as `@variable.special` however, they are
_techinically_ keywords and other editors (VSCode/WebStorm) seem to
highlight them as keywords as well.

Release Notes:

- N/A

Ben Kunkle created

bb600ac Set base highlight for identifiers in go to variable highlight color (#25128)

Click to expand commit body
Closes #24947 

Release Notes:

- N/A

Ben Kunkle created

372aaec language_model_selector: Authenticate all providers up front (#25123)

Click to expand commit body
This PR fixes an issue where configured language model providers would
not show up unless the configuration view was opened.

The problem was that we were filtering unauthenticated language model
providers out of the language model selector, but would only
authenticate the active provider when the selector loaded.
Authenticating the rest of the providers was deferred until the
configuration view was opened for the first time.

Closes https://github.com/zed-industries/zed/issues/21821.

Release Notes:

- Fixed an issue where configured languages models were not showing up
in the language model selector until the configuration view was opened
for the first time.

Marshall Bowers created

7a6b652 language_model: Return `AuthenticateError`s from `LanguageModelProvider::authenticate` (#25126)

Click to expand commit body
This PR updates the `LanguageModelProvider::authenticate` method to
return an `AuthenticateError` instead of an `anyhow::Error`.

This allows us to model the "credentials not found" state explicitly as
`AuthenticateError::CredentialsNotFound`, which enables the caller to
check for this state and act accordingly.

Planning to use this in #25123 to silence errors about missing
credentials when authenticating providers in the background.

Release Notes:

- N/A

Marshall Bowers created

2627a5f assistant: Improve the language model selector (#25125)

Click to expand commit body
This PR includes change such as:

- Ensures the popover width is fixed/not dancing around
- Ensures the popover is not obscuring the trigger in the buffer and
terminal inline assistant scenarios
- Removes ellipsis from the trigger button label
- Ensures the scrollbar doesn't hide the check icon

| Terminal | Prompt Editor | Buffer |
|--------|--------|--------|
| ![Screenshot 2025-02-18 at 8 43
46 PM](https://github.com/user-attachments/assets/9cdfbaf1-f27e-4f48-877e-9cf61767ecee)
| ![Screenshot 2025-02-18 at 8 43
49 PM](https://github.com/user-attachments/assets/7abf9be2-bd2a-43d7-9a5d-d665e7e9fda3)
| ![Screenshot 2025-02-18 at 8 43
52 PM](https://github.com/user-attachments/assets/017bbdb3-185a-4bf6-9005-018ecafef9dd)
|

Release Notes:

- N/A

Danilo Leal created

a6006af language_model_selector: Fix variable name (#25121)

Click to expand commit body
This PR fixes an inaccurate variable name that I noticed in the language
model selector.

Release Notes:

- N/A

Marshall Bowers created

92f128e Do not fail hard on selection persistence if the editor is removed (#25120)

Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/25083

Follows practices from editors' scroll position persisting:
https://github.com/zed-industries/zed/blob/5a05b7461e476d7ddc59418868ebdab6687b8d2f/crates/editor/src/persistence.rs#L200
and do not fail hard if the editor with the ID given does not exist.
Also add the problematic IDs into the error context to see them in the
error logs.

Release Notes:

- N/A

Kirill Bulatov created

98ea659 assistant2: Fix thread history only working in one Zed window (#25119)

Click to expand commit body
This PR fixes an issue where the thread history would only work in one
Zed window at a time.

The backing LMDB database can only be opened once per Zed instance.
However, the `ThreadStore` has one instance per Zed window.

To fix this, we need to create the `heed` environment once and store it
as a global, and then reference the same environment across all of the
`ThreadStore`s.

Release Notes:

- N/A

Marshall Bowers created

d0816ef edit predictions: Fix fold not expanding after jump (#25116)

Click to expand commit body
Closes #24938.

Release Notes:

- Edit predictions: Fix fold not expanding after jump

João Marcos created

6885b28 assistant2: Deploy inline assistant in PromptEditor (#25094)

Click to expand commit body
Release Notes:

- N/A

Co-authored-by: Danilo Leal <daniloleal09@gmail.com>

Agus Zubiaga and Danilo Leal created

48f87a8 Don't open file finder menu on command (#25097)

Click to expand commit body
Closes #24740

Release Notes:

- Don't open the split menu in the file finder when command is pressed

Conrad Irwin created

bff1548 assistant2: Add file icons for mentioned creases (#25111)

Click to expand commit body
This PR makes the mentioned file creases/buttons use `FileIcons`.

<img width="700" alt="Screenshot 2025-01-21 at 11 20 49 AM"
src="https://github.com/user-attachments/assets/876da534-c11a-4d13-af82-a5948863f954"
/>

Release Notes:

- N/A

Co-authored-by: Anthony Eid <hello@anthonyeid.me>

Danilo Leal and Anthony Eid created

60a4435 Terminal mouse improvements (#25104)

Click to expand commit body
Closes #24911
Closes #17983
Closes #7073

Release Notes:

- Terminal: Fix cmd-click on links/files when terminal is not focused
- Terminal: Remove hover treatment after Zed hides/re-opens

---------

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

Conrad Irwin and Mikayla Maki created

b1872e3 `cx.background_executor().spawn(...)` -> `cx.background_spawn(...)` (#25103)

Click to expand commit body
Done automatically with

> ast-grep -p '$A.background_executor().spawn($B)' -r
'$A.background_spawn($B)' --update-all --globs "\!crates/gpui"

Followed by:

* `cargo fmt`
* Unexpected need to remove some trailing whitespace.
* Manually adding imports of `gpui::{AppContext as _}` which provides
`background_spawn`
* Added `AppContext as _` to existing use of `AppContext`

Release Notes:

- N/A

Michael Sloan created

f606b06 workspace: Prevent user from undoing persistent session deserialization (#25106)

Click to expand commit body
Closes #21846

Release Notes:

- Fixed a bug that made it possible to undo changes in dirty
deserialized buffer (with `restore_unsaved_buffers: true`)

Piotr Osiewicz created

e5d8bd2 Issue response: pull team members from staff team (#25102)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

529c652 Revert gutter stripes as indicator of hunk staged status (#25089)

Click to expand commit body
We've decided to go in a different direction on indicating the staged
status of hunks, so go back for now to a world where we don't display
staged and unstaged hunks differently outside the (still gated) project
diff editor.

cc @iamnbutler 

This reverts commit 8c202b3b09083e0b5430fce3631734de6112bbc0.

Release Notes:

- N/A

Cole Miller created

737b177 Switch to columnar selection by pressing `alt-shift` while mouse is down (#25096)

Click to expand commit body
We begin a columnar selection when we drag the mouse while holding
`alt-shift`. This PR makes it possible to start the selection and then
turn it into columnar by pressing `alt-shift`.

Fixes #5372 

Release Notes:

- Support switching to columnar selection by pressing `alt-shift` while
mouse is down

Agus Zubiaga created

c10ac31 theme: Don't log errors for missing themes until extensions have loaded (#25098)

Click to expand commit body
This PR makes it so we don't log errors for missing themes or icon
themes until after the extensions have been loaded.

Currently, if you are using a theme that is defined in an extension it
is common to see one or more "theme not found" errors in the logs. This
is the result of us having to initialize the theme before the extensions
have actually finished loading.

This means that a theme that _may_ exist once extensions load is
considered non-existent before they have loaded.

To that end, we now wait until the extensions have loaded before we
start logging errors if we can't find the theme or icon theme.

Closes https://github.com/zed-industries/zed/issues/24539.

Release Notes:

- Reduced the number of "theme not found" and "icon theme not found"
errors in the logs for themes provided by extensions.

Marshall Bowers created

1e255e4 assistant2: Show token count in the Prompt Editor view (#25091)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Agus Zubiaga <hi@aguz.me>

Danilo Leal and Agus Zubiaga created

8a7565e Add small improvement to the theme picker footer (#25088)

Click to expand commit body
- Always start a button's label with an imperative verb
- Use the `ArrowUpRight` icon when the button opens an external link

<img width="700" alt="Screenshot 2025-01-21 at 11 20 49 AM"
src="https://github.com/user-attachments/assets/383d9bad-2756-4e85-acad-4ed956f541cb"
/>

Release Notes:

- N/A

Danilo Leal created

8e7cad7 theme: Return structured errors when a theme is not found (#25090)

Click to expand commit body
This PR updates the `ThemeRegistry` to return structured errors from the
`get` and `get_icon_theme` methods (which are used to retrieve themes
and icon themes, respectively).

We want to be able to carry the name of the theme that was not found as
state on the error, which is why we use a `Result` and not an `Option`.
However, we also want to be able to accurately identify when the error
case is "not found" so we can take appropriate action, based on the
circumstances.

By using a custom error type instead of an `anyhow::Error`, we get both.

There isn't any functional change in this PR. This just sets us up for
future improvements in this error.

Release Notes:

- N/A

Marshall Bowers created

76f501a git: Don't load shallow HEAD text of symlinks (#25058)

Click to expand commit body
For symlinks, return `None` from `load_committed_text` as we do from
`load_index_text` ever since #10037.

Release Notes:

- Fixed diff hunks appearing in unchanged symlinked files

Cole Miller created

9ef0501 file_finder: Remove common segments of long paths in search results (#25049)

Click to expand commit body
This PR makes progress on #7711 by identifying any common prefix of the
paths in the file finder's search results, and replacing the "interior"
of that prefix---every path segment but the first and last---with `...`,
when a heuristic indicates that the longest path would otherwise
overflow the modal.

The elision is not applied to any segment that contains a match for the
search query.

There may be more work to do on #7711 in the case of long result paths
that do not share a significant common prefix.

Release Notes:

- Improved display of long paths in the file finder modal

Co-authored-by: Max <max@zed.dev>

Cole Miller and Max created

80458ff Persist selections for editors (#25083)

Click to expand commit body
Part of https://github.com/zed-industries/zed/issues/7371
Closes https://github.com/zed-industries/zed/issues/12853

Release Notes:

- Started to persist latest selections for editors, to restore those on
restart

Kirill Bulatov created

b340378 terminal: Change context menu item label (#25085)

Click to expand commit body
Super subtle, but when I initially saw just "Close", I got weirded out
asking myself "why there's a menu item to close the context menu?", to
only then realize that it didn't close the menu, but the terminal _tab_.
Might be obvious, because that's how buffer tabs are labled, but I don't
know, it feels like the redundancy here is overall positive.

Release Notes:

- N/A

Danilo Leal created

295e486 edit prediction: Update disabled globs link in the onboarding modal (#25084)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

00bb9a4 Fix LSP rename in Go (#25073)

Click to expand commit body
Some language servers report version 0 even if the buffer hasn't been
opened yet. We detect this case and treat it as if the version was
`None`.

Closes #23706

Release Notes:

- Fixed a bug that prevented renames for some languages.

Antonio Scandurra created